@@ -22,6 +22,16 @@ def __ConnectAndDrop(self):
2222 count , = cursor .fetchone ()
2323 self .assertEqual (count , 10 )
2424
25+ def __VerifyAttributes (self , connection , attrName , value , tableName ,
26+ columnName ):
27+ setattr (connection , attrName , value )
28+ cursor = connection .cursor ()
29+ sql = "select %s from %s where %s = :value" % \
30+ (columnName , tableName , columnName )
31+ cursor .execute (sql , value = value )
32+ result , = cursor .fetchone ()
33+ self .assertEqual (result , value , "%s value mismatch" % attrName )
34+
2535 def setUp (self ):
2636 self .username = USERNAME
2737 self .password = PASSWORD
@@ -32,13 +42,49 @@ def verifyArgs(self, connection):
3242 "user name differs" )
3343 self .assertEqual (connection .tnsentry , self .tnsentry ,
3444 "tnsentry differs" )
45+ self .assertEqual (connection .dsn , self .tnsentry , "dsn differs" )
3546
3647 def testAllArgs (self ):
3748 "connection to database with user, password, TNS separate"
3849 connection = cx_Oracle .connect (self .username , self .password ,
3950 self .tnsentry )
4051 self .verifyArgs (connection )
4152
53+ def testAttributes (self ):
54+ "test connection end-to-end tracing attributes"
55+ connection = cx_Oracle .connect (USERNAME , PASSWORD , TNSENTRY )
56+ self .__VerifyAttributes (connection , "action" , "cx_OracleTest_Action" ,
57+ "v$session" , "action" )
58+ self .__VerifyAttributes (connection , "module" , "cx_OracleTest_Module" ,
59+ "v$session" , "module" )
60+ self .__VerifyAttributes (connection , "clientinfo" ,
61+ "cx_OracleTest_CInfo" , "v$session" , "client_info" )
62+ self .__VerifyAttributes (connection , "client_identifier" ,
63+ "cx_OracleTest_CID" , "v$session" , "client_identifier" )
64+ self .__VerifyAttributes (connection , "dbop" ,
65+ "cx_OracleTest_DBOP" , "v$sql_monitor" , "dbop_name" )
66+
67+ def testAutoCommit (self ):
68+ "test use of autocommit"
69+ connection = cx_Oracle .connect (USERNAME , PASSWORD , TNSENTRY )
70+ cursor = connection .cursor ()
71+ otherConnection = cx_Oracle .connect (USERNAME , PASSWORD , TNSENTRY )
72+ otherCursor = otherConnection .cursor ()
73+ cursor .execute ("truncate table TestTempTable" )
74+ cursor .execute ("""
75+ insert into TestTempTable (IntCol, StringCol)
76+ values (1, null)""" )
77+ otherCursor .execute ("select * from TestTempTable" )
78+ rows = otherCursor .fetchall ()
79+ self .assertEqual (rows , [])
80+ connection .autocommit = True
81+ cursor .execute ("""
82+ insert into TestTempTable (IntCol, StringCol)
83+ values (2, null)""" )
84+ otherCursor .execute ("select * from TestTempTable order by IntCol" )
85+ rows = otherCursor .fetchall ()
86+ self .assertEqual (rows , [(1 , None ), (2 , None )])
87+
4288 def testBadConnectString (self ):
4389 "connection to database with bad connect string"
4490 self .assertRaises (cx_Oracle .DatabaseError , cx_Oracle .connect ,
@@ -53,6 +99,16 @@ def testBadPassword(self):
5399 self .assertRaises (cx_Oracle .DatabaseError , cx_Oracle .connect ,
54100 self .username , self .password + u"X" , self .tnsentry )
55101
102+ def testChangePassword (self ):
103+ "test changing password"
104+ newPassword = "NEW_PASSWORD"
105+ connection = cx_Oracle .connect (self .username , self .password ,
106+ self .tnsentry )
107+ connection .changepassword (self .password , newPassword )
108+ cconnection = cx_Oracle .connect (self .username , newPassword ,
109+ self .tnsentry )
110+ connection .changepassword (newPassword , self .password )
111+
56112 def testEncodings (self ):
57113 "connection with only encoding or nencoding specified should work"
58114 connection = cx_Oracle .connect (self .username , self .password ,
0 commit comments