Mercurial > p > mysql-python > mysqldb-2
annotate tests/capabilities.py @ 48:f4fd8c20511c MySQLdb
Read a default file in the test setUp. Since Python 2.4, int() will return longs if needed so make all long references int as in Python 3.0 there is no more long due to int/long unification (new ints are old longs).
author | adustman |
---|---|
date | Sun, 22 Feb 2009 20:01:31 +0000 |
parents | d55bfb1a4701 |
children | 4aaed7e1d782 |
rev | line source |
---|---|
18
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
1 #!/usr/bin/env python -O |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
2 """ Script to test database capabilities and the DB-API interface |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
3 for functionality and memory leaks. |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
4 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
5 Adapted from a script by M-A Lemburg. |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
6 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
7 """ |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
8 from time import time |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
9 import array |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
10 import unittest |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
11 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
12 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
13 class DatabaseTest(unittest.TestCase): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
14 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
15 db_module = None |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
16 connect_args = () |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
17 connect_kwargs = dict() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
18 create_table_extra = '' |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
19 rows = 10 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
20 debug = False |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
21 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
22 def setUp(self): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
23 import gc |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
24 db = self.db_module.connect(*self.connect_args, **self.connect_kwargs) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
25 self.connection = db |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
26 self.cursor = db.cursor() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
27 self.BLOBText = ''.join([chr(i) for i in range(256)] * 100); |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
28 self.BLOBUText = u''.join([unichr(i) for i in range(16384)]) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
29 self.BLOBBinary = self.db_module.Binary(''.join([chr(i) for i in range(256)] * 16)) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
30 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
31 leak_test = True |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
32 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
33 def tearDown(self): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
34 if self.leak_test: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
35 import gc |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
36 del self.cursor |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
37 orphans = gc.collect() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
38 self.failIf(orphans, "%d orphaned objects found after deleting cursor" % orphans) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
39 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
40 del self.connection |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
41 orphans = gc.collect() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
42 self.failIf(orphans, "%d orphaned objects found after deleting connection" % orphans) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
43 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
44 def table_exists(self, name): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
45 try: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
46 self.cursor.execute('select * from %s where 1=0' % name) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
47 except: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
48 return False |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
49 else: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
50 return True |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
51 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
52 def quote_identifier(self, ident): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
53 return '"%s"' % ident |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
54 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
55 def new_table_name(self): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
56 i = id(self.cursor) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
57 while True: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
58 name = self.quote_identifier('tb%08x' % i) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
59 if not self.table_exists(name): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
60 return name |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
61 i = i + 1 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
62 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
63 def create_table(self, columndefs): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
64 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
65 """ Create a table using a list of column definitions given in |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
66 columndefs. |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
67 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
68 generator must be a function taking arguments (row_number, |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
69 col_number) returning a suitable data object for insertion |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
70 into the table. |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
71 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
72 """ |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
73 self.table = self.new_table_name() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
74 self.cursor.execute('CREATE TABLE %s (%s) %s' % |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
75 (self.table, |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
76 ',\n'.join(columndefs), |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
77 self.create_table_extra)) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
78 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
79 def check_data_integrity(self, columndefs, generator): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
80 # insert |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
81 self.create_table(columndefs) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
82 insert_statement = ('INSERT INTO %s VALUES (%s)' % |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
83 (self.table, |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
84 ','.join(['%s'] * len(columndefs)))) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
85 data = [ [ generator(i,j) for j in range(len(columndefs)) ] |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
86 for i in range(self.rows) ] |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
87 if self.debug: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
88 print data |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
89 self.cursor.executemany(insert_statement, data) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
90 self.connection.commit() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
91 # verify |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
92 self.cursor.execute('select * from %s' % self.table) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
93 l = self.cursor.fetchall() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
94 if self.debug: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
95 print l |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
96 self.assertEquals(len(l), self.rows) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
97 try: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
98 for i in range(self.rows): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
99 for j in range(len(columndefs)): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
100 self.assertEquals(l[i][j], generator(i,j)) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
101 finally: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
102 if not self.debug: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
103 self.cursor.execute('drop table %s' % (self.table)) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
104 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
105 def test_transactions(self): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
106 columndefs = ( 'col1 INT', 'col2 VARCHAR(255)') |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
107 def generator(row, col): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
108 if col == 0: return row |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
109 else: return ('%i' % (row%10))*255 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
110 self.create_table(columndefs) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
111 insert_statement = ('INSERT INTO %s VALUES (%s)' % |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
112 (self.table, |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
113 ','.join(['%s'] * len(columndefs)))) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
114 data = [ [ generator(i,j) for j in range(len(columndefs)) ] |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
115 for i in range(self.rows) ] |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
116 self.cursor.executemany(insert_statement, data) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
117 # verify |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
118 self.connection.commit() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
119 self.cursor.execute('select * from %s' % self.table) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
120 l = self.cursor.fetchall() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
121 self.assertEquals(len(l), self.rows) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
122 for i in range(self.rows): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
123 for j in range(len(columndefs)): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
124 self.assertEquals(l[i][j], generator(i,j)) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
125 delete_statement = 'delete from %s where col1=%%s' % self.table |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
126 self.cursor.execute(delete_statement, (0,)) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
127 self.cursor.execute('select col1 from %s where col1=%s' % \ |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
128 (self.table, 0)) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
129 l = self.cursor.fetchall() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
130 self.failIf(l, "DELETE didn't work") |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
131 self.connection.rollback() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
132 self.cursor.execute('select col1 from %s where col1=%s' % \ |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
133 (self.table, 0)) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
134 l = self.cursor.fetchall() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
135 self.failUnless(len(l) == 1, "ROLLBACK didn't work") |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
136 self.cursor.execute('drop table %s' % (self.table)) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
137 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
138 def test_truncation(self): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
139 columndefs = ( 'col1 INT', 'col2 VARCHAR(255)') |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
140 def generator(row, col): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
141 if col == 0: return row |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
142 else: return ('%i' % (row%10))*((255-self.rows/2)+row) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
143 self.create_table(columndefs) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
144 insert_statement = ('INSERT INTO %s VALUES (%s)' % |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
145 (self.table, |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
146 ','.join(['%s'] * len(columndefs)))) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
147 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
148 try: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
149 self.cursor.execute(insert_statement, (0, '0'*256)) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
150 except Warning: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
151 if self.debug: print self.cursor.messages |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
152 except self.connection.DataError: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
153 pass |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
154 else: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
155 self.fail("Over-long column did not generate warnings/exception with single insert") |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
156 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
157 self.connection.rollback() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
158 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
159 try: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
160 for i in range(self.rows): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
161 data = [] |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
162 for j in range(len(columndefs)): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
163 data.append(generator(i,j)) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
164 self.cursor.execute(insert_statement,tuple(data)) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
165 except Warning: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
166 if self.debug: print self.cursor.messages |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
167 except self.connection.DataError: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
168 pass |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
169 else: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
170 self.fail("Over-long columns did not generate warnings/exception with execute()") |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
171 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
172 self.connection.rollback() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
173 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
174 try: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
175 data = [ [ generator(i,j) for j in range(len(columndefs)) ] |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
176 for i in range(self.rows) ] |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
177 self.cursor.executemany(insert_statement, data) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
178 except Warning: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
179 if self.debug: print self.cursor.messages |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
180 except self.connection.DataError: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
181 pass |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
182 else: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
183 self.fail("Over-long columns did not generate warnings/exception with executemany()") |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
184 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
185 self.connection.rollback() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
186 self.cursor.execute('drop table %s' % (self.table)) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
187 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
188 def test_CHAR(self): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
189 # Character data |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
190 def generator(row,col): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
191 return ('%i' % ((row+col) % 10)) * 255 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
192 self.check_data_integrity( |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
193 ('col1 char(255)','col2 char(255)'), |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
194 generator) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
195 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
196 def test_INT(self): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
197 # Number data |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
198 def generator(row,col): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
199 return row*row |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
200 self.check_data_integrity( |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
201 ('col1 INT',), |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
202 generator) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
203 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
204 def test_DECIMAL(self): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
205 # DECIMAL |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
206 def generator(row,col): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
207 from decimal import Decimal |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
208 return Decimal("%d.%02d" % (row, col)) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
209 self.check_data_integrity( |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
210 ('col1 DECIMAL(5,2)',), |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
211 generator) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
212 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
213 def test_DATE(self): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
214 ticks = time() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
215 def generator(row,col): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
216 return self.db_module.DateFromTicks(ticks+row*86400-col*1313) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
217 self.check_data_integrity( |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
218 ('col1 DATE',), |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
219 generator) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
220 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
221 def test_TIME(self): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
222 ticks = time() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
223 def generator(row,col): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
224 return self.db_module.TimeFromTicks(ticks+row*86400-col*1313) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
225 self.check_data_integrity( |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
226 ('col1 TIME',), |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
227 generator) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
228 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
229 def test_DATETIME(self): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
230 ticks = time() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
231 def generator(row,col): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
232 return self.db_module.TimestampFromTicks(ticks+row*86400-col*1313) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
233 self.check_data_integrity( |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
234 ('col1 DATETIME',), |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
235 generator) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
236 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
237 def test_TIMESTAMP(self): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
238 ticks = time() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
239 def generator(row,col): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
240 return self.db_module.TimestampFromTicks(ticks+row*86400-col*1313) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
241 self.check_data_integrity( |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
242 ('col1 TIMESTAMP',), |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
243 generator) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
244 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
245 def test_fractional_TIMESTAMP(self): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
246 ticks = time() |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
247 def generator(row,col): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
248 return self.db_module.TimestampFromTicks(ticks+row*86400-col*1313+row*0.7*col/3.0) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
249 self.check_data_integrity( |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
250 ('col1 TIMESTAMP',), |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
251 generator) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
252 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
253 def test_LONG(self): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
254 def generator(row,col): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
255 if col == 0: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
256 return row |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
257 else: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
258 return self.BLOBUText # 'BLOB Text ' * 1024 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
259 self.check_data_integrity( |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
260 ('col1 INT','col2 LONG'), |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
261 generator) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
262 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
263 def test_TEXT(self): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
264 def generator(row,col): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
265 return self.BLOBUText # 'BLOB Text ' * 1024 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
266 self.check_data_integrity( |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
267 ('col2 TEXT',), |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
268 generator) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
269 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
270 def test_LONG_BYTE(self): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
271 def generator(row,col): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
272 if col == 0: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
273 return row |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
274 else: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
275 return self.BLOBBinary # 'BLOB\000Binary ' * 1024 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
276 self.check_data_integrity( |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
277 ('col1 INT','col2 LONG BYTE'), |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
278 generator) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
279 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
280 def test_BLOB(self): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
281 def generator(row,col): |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
282 if col == 0: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
283 return row |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
284 else: |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
285 return self.BLOBBinary # 'BLOB\000Binary ' * 1024 |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
286 self.check_data_integrity( |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
287 ('col1 INT','col2 BLOB'), |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
288 generator) |
d55bfb1a4701
Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff
changeset
|
289 |