Skip to content

Commit 95dd598

Browse files
committed
Made testing with Python 2.2 possible.
1 parent 530f2d7 commit 95dd598

12 files changed

Lines changed: 243 additions & 96 deletions

DBUtils/Docs/UsersGuide.html

Lines changed: 46 additions & 38 deletions
Large diffs are not rendered by default.

DBUtils/Docs/UsersGuide.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,15 @@ integrate the DBUtils documentation into the Webware documentation::
9999
python install.py
100100

101101

102+
Requirements
103+
============
104+
105+
DBUtils runs with Python_ version 2.2 and above. The modules in the classic
106+
PyGreSQL variant need PyGreSQL_ version 3.4 or above, while the modules in
107+
the universal DB-API 2 variant run with any Python `DB-API 2`_ compliant
108+
database interface module.
109+
110+
102111
Functionality
103112
=============
104113

DBUtils/PersistentDB.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,8 +228,8 @@ def __del__():
228228
threading_enumerate = enumerate
229229
__getattribute__ = object.__getattribute__
230230
def __del__(self):
231-
key = __getattribute__(self, '_local__key')
232231
try:
232+
key = __getattribute__(self, '_local__key')
233233
threads = list(threading_enumerate())
234234
except Exception:
235235
return

DBUtils/PersistentPg.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,8 @@ def __del__():
201201
threading_enumerate = enumerate
202202
__getattribute__ = object.__getattribute__
203203
def __del__(self):
204-
key = __getattribute__(self, '_local__key')
205204
try:
205+
key = __getattribute__(self, '_local__key')
206206
threads = list(threading_enumerate())
207207
except Exception:
208208
return

DBUtils/Testing/TestPersistentDB.py

Lines changed: 56 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,14 @@ def runQueries(i):
6868
this_db = persist.connection()
6969
while 1:
7070
try:
71-
q = queryQueue[i].get(1, 1)
71+
try:
72+
q = queryQueue[i].get(1, 1)
73+
except TypeError:
74+
q = queryQueue[i].get(1)
7275
except Empty:
7376
q = None
74-
if not q: break
77+
if not q:
78+
break
7579
db = persist.connection()
7680
if db != this_db:
7781
r = 'error - not persistent'
@@ -87,7 +91,10 @@ def runQueries(i):
8791
r = cursor.fetchone()
8892
cursor.close()
8993
r = '%d(%d): %s' % (i, db._usage, r)
90-
resultQueue[i].put(r, 1, 0.1)
94+
try:
95+
resultQueue[i].put(r, 1, 0.1)
96+
except TypeError:
97+
resultQueue[i].put(r, 1)
9198
db.close()
9299
from threading import Thread
93100
threads = []
@@ -96,35 +103,68 @@ def runQueries(i):
96103
threads.append(thread)
97104
thread.start()
98105
for i in range(numThreads):
99-
queryQueue[i].put('ping', 1, 0.1)
106+
try:
107+
queryQueue[i].put('ping', 1, 0.1)
108+
except TypeError:
109+
queryQueue[i].put('ping', 1)
100110
for i in range(numThreads):
101-
r = resultQueue[i].get(1, 0.1)
111+
try:
112+
r = resultQueue[i].get(1, 0.1)
113+
except TypeError:
114+
r = resultQueue[i].get(1)
102115
self.assertEqual(r, '%d(0): ok - thread alive' % i)
103116
self.assert_(threads[i].isAlive())
104117
for i in range(numThreads):
105118
for j in range(i + 1):
106-
queryQueue[i].put('select test%d' % j, 1, 0.1)
107-
r = resultQueue[i].get(1, 0.1)
119+
try:
120+
queryQueue[i].put('select test%d' % j, 1, 0.1)
121+
r = resultQueue[i].get(1, 0.1)
122+
except TypeError:
123+
queryQueue[i].put('select test%d' % j, 1)
124+
r = resultQueue[i].get(1)
108125
self.assertEqual(r, '%d(%d): test%d' % (i, j + 1, j))
109-
queryQueue[1].put('select test4', 1, 0.1)
110-
r = resultQueue[1].get(1, 0.1)
126+
try:
127+
queryQueue[1].put('select test4', 1, 0.1)
128+
except TypeError:
129+
queryQueue[1].put('select test4', 1)
130+
try:
131+
r = resultQueue[1].get(1, 0.1)
132+
except TypeError:
133+
r = resultQueue[1].get(1)
111134
self.assertEqual(r, '1(3): test4')
112-
queryQueue[1].put('close', 1, 0.1)
113-
r = resultQueue[1].get(1, 0.1)
135+
try:
136+
queryQueue[1].put('close', 1, 0.1)
137+
r = resultQueue[1].get(1, 0.1)
138+
except TypeError:
139+
queryQueue[1].put('close', 1)
140+
r = resultQueue[1].get(1)
114141
self.assertEqual(r, '1(0): ok - connection closed')
115142
for j in range(2):
116-
queryQueue[1].put('select test%d' % j, 1, 0.1)
117-
r = resultQueue[1].get(1, 0.1)
143+
try:
144+
queryQueue[1].put('select test%d' % j, 1, 0.1)
145+
r = resultQueue[1].get(1, 0.1)
146+
except TypeError:
147+
queryQueue[1].put('select test%d' % j, 1)
148+
r = resultQueue[1].get(1)
118149
self.assertEqual(r, '1(%d): test%d' % (j + 1, j))
119150
for i in range(numThreads):
120151
self.assert_(threads[i].isAlive())
121-
queryQueue[i].put('ping', 1, 0.1)
152+
try:
153+
queryQueue[i].put('ping', 1, 0.1)
154+
except TypeError:
155+
queryQueue[i].put('ping', 1)
122156
for i in range(numThreads):
123-
r = resultQueue[i].get(1, 0.1)
157+
try:
158+
r = resultQueue[i].get(1, 0.1)
159+
except TypeError:
160+
r = resultQueue[i].get(1)
124161
self.assertEqual(r, '%d(%d): ok - thread alive' % (i, i + 1))
125162
self.assert_(threads[i].isAlive())
126163
for i in range(numThreads):
127-
queryQueue[i].put(None, 1, 1)
164+
try:
165+
queryQueue[i].put(None, 1, 1)
166+
except TypeError:
167+
queryQueue[i].put(None, 1)
128168

129169
def test4_PersistentDBMaxUsage(self):
130170
persist = PersistentDB(dbapi, 20)

DBUtils/Testing/TestPersistentPg.py

Lines changed: 54 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,14 @@ def runQueries(i):
6161
this_db = persist.connection().db
6262
while 1:
6363
try:
64-
q = queryQueue[i].get(1, 1)
64+
try:
65+
q = queryQueue[i].get(1, 1)
66+
except TypeError:
67+
q = queryQueue[i].get(1)
6568
except Empty:
6669
q = None
67-
if not q: break
70+
if not q:
71+
break
6872
db = persist.connection()
6973
if db.db != this_db:
7074
r = 'error - not persistent'
@@ -77,7 +81,10 @@ def runQueries(i):
7781
else:
7882
r = db.query(q)
7983
r = '%d(%d): %s' % (i, db._usage, r)
80-
resultQueue[i].put(r, 1, 0.1)
84+
try:
85+
resultQueue[i].put(r, 1, 0.1)
86+
except TypeError:
87+
resultQueue[i].put(r, 1)
8188
db.close()
8289
from threading import Thread
8390
threads = []
@@ -86,35 +93,66 @@ def runQueries(i):
8693
threads.append(thread)
8794
thread.start()
8895
for i in range(numThreads):
89-
queryQueue[i].put('ping', 1, 0.1)
96+
try:
97+
queryQueue[i].put('ping', 1, 0.1)
98+
except TypeError:
99+
queryQueue[i].put('ping', 1)
90100
for i in range(numThreads):
91-
r = resultQueue[i].get(1, 0.1)
101+
try:
102+
r = resultQueue[i].get(1, 0.1)
103+
except TypeError:
104+
r = resultQueue[i].get(1)
92105
self.assertEqual(r, '%d(0): ok - thread alive' % i)
93106
self.assert_(threads[i].isAlive())
94107
for i in range(numThreads):
95108
for j in range(i + 1):
96-
queryQueue[i].put('select test%d' % j, 1, 0.1)
97-
r = resultQueue[i].get(1, 0.1)
109+
try:
110+
queryQueue[i].put('select test%d' % j, 1, 0.1)
111+
r = resultQueue[i].get(1, 0.1)
112+
except TypeError:
113+
queryQueue[i].put('select test%d' % j, 1)
114+
r = resultQueue[i].get(1)
98115
self.assertEqual(r, '%d(%d): test%d' % (i, j + 1, j))
99-
queryQueue[1].put('select test4', 1, 0.1)
100-
r = resultQueue[1].get(1, 0.1)
116+
try:
117+
queryQueue[1].put('select test4', 1, 0.1)
118+
r = resultQueue[1].get(1, 0.1)
119+
except TypeError:
120+
queryQueue[1].put('select test4', 1)
121+
r = resultQueue[1].get(1)
101122
self.assertEqual(r, '1(3): test4')
102-
queryQueue[1].put('close', 1, 0.1)
103-
r = resultQueue[1].get(1, 0.1)
123+
try:
124+
queryQueue[1].put('close', 1, 0.1)
125+
r = resultQueue[1].get(1, 0.1)
126+
except TypeError:
127+
queryQueue[1].put('close', 1)
128+
r = resultQueue[1].get(1)
104129
self.assertEqual(r, '1(3): ok - connection closed')
105130
for j in range(2):
106-
queryQueue[1].put('select test%d' % j, 1, 0.1)
107-
r = resultQueue[1].get(1, 0.1)
131+
try:
132+
queryQueue[1].put('select test%d' % j, 1, 0.1)
133+
r = resultQueue[1].get(1, 0.1)
134+
except TypeError:
135+
queryQueue[1].put('select test%d' % j, 1)
136+
r = resultQueue[1].get(1)
108137
self.assertEqual(r, '1(%d): test%d' % (j + 1, j))
109138
for i in range(numThreads):
110139
self.assert_(threads[i].isAlive())
111-
queryQueue[i].put('ping', 1, 0.1)
140+
try:
141+
queryQueue[i].put('ping', 1, 0.1)
142+
except TypeError:
143+
queryQueue[i].put('ping', 1)
112144
for i in range(numThreads):
113-
r = resultQueue[i].get(1, 0.1)
145+
try:
146+
r = resultQueue[i].get(1, 0.1)
147+
except TypeError:
148+
r = resultQueue[i].get(1)
114149
self.assertEqual(r, '%d(%d): ok - thread alive' % (i, i + 1))
115150
self.assert_(threads[i].isAlive())
116151
for i in range(numThreads):
117-
queryQueue[i].put(None, 1, 1)
152+
try:
153+
queryQueue[i].put(None, 1, 1)
154+
except TypeError:
155+
queryQueue[i].put(None, 1)
118156

119157
def test3_PersistentPgMaxUsage(self):
120158
persist = PersistentPg(20)

DBUtils/Testing/TestPooledDB.py

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -914,19 +914,32 @@ def test16_ThreeThreadsTwoConnections(self):
914914
from Queue import Queue, Empty
915915
queue = Queue(3)
916916
def connection():
917-
queue.put(pool.connection(), 1, 0.1)
917+
try:
918+
queue.put(pool.connection(), 1, 0.1)
919+
except Exception:
920+
queue.put(pool.connection(), 1)
918921
from threading import Thread
919922
for i in range(3):
920923
Thread(target=connection).start()
921-
db1 = queue.get(1, 0.1)
922-
db2 = queue.get(1, 0.1)
924+
try:
925+
db1 = queue.get(1, 0.1)
926+
db2 = queue.get(1, 0.1)
927+
except TypeError:
928+
db1 = queue.get(1)
929+
db2 = queue.get(1)
923930
self.assertNotEqual(db1, db2)
924931
db1_con = db1._con
925932
db2_con = db2._con
926933
self.assertNotEqual(db1_con, db2_con)
927-
self.assertRaises(Empty, queue.get, 1, 0.1)
934+
try:
935+
self.assertRaises(Empty, queue.get, 1, 0.1)
936+
except TypeError:
937+
self.assertRaises(Empty, queue.get, 0)
928938
del db1
929-
db1 = queue.get(1, 0.1)
939+
try:
940+
db1 = queue.get(1, 0.1)
941+
except TypeError:
942+
db1 = queue.get(1)
930943
self.assertNotEqual(db1, db2)
931944
self.assertNotEqual(db1._con, db2._con)
932945
self.assertEqual(db1._con, db1_con)
@@ -938,9 +951,15 @@ def connection():
938951
db2_con = db2._con
939952
self.assertNotEqual(db1_con, db2_con)
940953
Thread(target=connection).start()
941-
self.assertRaises(Empty, queue.get, 1, 0.1)
954+
try:
955+
self.assertRaises(Empty, queue.get, 1, 0.1)
956+
except TypeError:
957+
self.assertRaises(Empty, queue.get, 0)
942958
del db1
943-
db1 = queue.get(1, 0.1)
959+
try:
960+
db1 = queue.get(1, 0.1)
961+
except TypeError:
962+
db1 = queue.get(1)
944963
self.assertNotEqual(db1, db2)
945964
self.assertNotEqual(db1._con, db2._con)
946965
self.assertEqual(db1._con, db1_con)

DBUtils/Testing/TestPooledPg.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -237,19 +237,32 @@ def test6_ThreeThreadsTwoConnections(self):
237237
from Queue import Queue, Empty
238238
queue = Queue(3)
239239
def connection():
240-
queue.put(pool.connection(), 1, 0.1)
240+
try:
241+
queue.put(pool.connection(), 1, 0.1)
242+
except TypeError:
243+
queue.put(pool.connection(), 1)
241244
from threading import Thread
242245
for i in range(3):
243246
Thread(target=connection).start()
244-
db1 = queue.get(1, 0.1)
245-
db2 = queue.get(1, 0.1)
247+
try:
248+
db1 = queue.get(1, 0.1)
249+
db2 = queue.get(1, 0.1)
250+
except TypeError:
251+
db1 = queue.get(1)
252+
db2 = queue.get(1)
246253
db1_con = db1._con
247254
db2_con = db2._con
248255
self.assertNotEqual(db1, db2)
249256
self.assertNotEqual(db1_con, db2_con)
250-
self.assertRaises(Empty, queue.get, 1, 0.1)
257+
try:
258+
self.assertRaises(Empty, queue.get, 1, 0.1)
259+
except TypeError:
260+
self.assertRaises(Empty, queue.get, 0)
251261
del db1
252-
db1 = queue.get(1, 0.1)
262+
try:
263+
db1 = queue.get(1, 0.1)
264+
except TypeError:
265+
db1 = queue.get(1)
253266
self.assertNotEqual(db1, db2)
254267
self.assertNotEqual(db1._con, db2._con)
255268
self.assertEqual(db1._con, db1_con)

DBUtils/Testing/TestSimplePooledDB.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,13 +127,23 @@ def connection():
127127
thread1 = Thread(target=connection).start()
128128
thread2 = Thread(target=connection).start()
129129
thread3 = Thread(target=connection).start()
130-
db1 = queue.get(1, 1)
131-
db2 = queue.get(1, 1)
130+
try:
131+
db1 = queue.get(1, 1)
132+
db2 = queue.get(1, 1)
133+
except TypeError:
134+
db1 = queue.get(1)
135+
db2 = queue.get(1)
132136
self.assertNotEqual(db1, db2)
133137
self.assertNotEqual(db1._con, db2._con)
134-
self.assertRaises(Empty, queue.get, 1, 0.1)
138+
try:
139+
self.assertRaises(Empty, queue.get, 1, 0.1)
140+
except TypeError:
141+
self.assertRaises(Empty, queue.get, 0)
135142
db2.close()
136-
db3 = queue.get(1, 1)
143+
try:
144+
db3 = queue.get(1, 1)
145+
except TypeError:
146+
db3 = queue.get(1)
137147
self.assertNotEqual(db1, db3)
138148
self.assertNotEqual(db1._con, db3._con)
139149

0 commit comments

Comments
 (0)