Changeset: 2e89a604eec3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2e89a604eec3
Modified Files:
        testing/sqltest.py
Branch: mtest
Log Message:

dont close connection aftre each execute


diffs (156 lines):

diff --git a/testing/sqltest.py b/testing/sqltest.py
--- a/testing/sqltest.py
+++ b/testing/sqltest.py
@@ -110,34 +110,41 @@ class PyMonetDBConnectionContext(object)
         self.dbh = None
         self.language = language
 
+    def connect(self):
+        if self.dbh is None:
+            if self.language == 'sql':
+                self.dbh = pymonetdb.connect(
+                                         username=self.username,
+                                         password=self.password,
+                                         hostname=self.hostname,
+                                         port=self.port,
+                                         database=self.database,
+                                         autocommit=True)
+            else:
+                self.dbh = malmapi.Connection()
+                self.dbh.connect(
+                                 username=self.username,
+                                 password=self.password,
+                                 hostname=self.hostname,
+                                 port=self.port,
+                                 database=self.database,
+                                 language=self.language)
+        return self.dbh
+
     def __enter__(self):
-        if self.language == 'sql':
-            self.dbh = pymonetdb.connect(
-                                     username=self.username,
-                                     password=self.password,
-                                     hostname=self.hostname,
-                                     port=self.port,
-                                     database=self.database,
-                                     autocommit=True)
-        else:
-            self.dbh = malmapi.Connection()
-            self.dbh.connect(
-                             username=self.username,
-                             password=self.password,
-                             hostname=self.hostname,
-                             port=self.port,
-                             database=self.database,
-                             language=self.language)
+        self.connect()
         return self
 
     def __exit__(self, exc_type, exc_value, traceback):
         self.close()
 
     def cursor(self):
-        if self.language == 'sql':
-            return self.dbh.cursor()
-        else:
-            return MapiCursor(self.dbh)
+        if self.dbh:
+            if self.language == 'sql':
+                return self.dbh.cursor()
+            else:
+                return MapiCursor(self.dbh)
+        return None
 
     def close(self):
         if self.dbh:
@@ -174,6 +181,7 @@ class TestCaseResult(object):
         """ logs errors to test case err file"""
         err_file = self.test_case.err_file
         if len(self.assertion_errors) == 0:
+            print('', file=err_file)
             if self.query:
                 print(self.query, file=err_file)
             elif self.id:
@@ -220,7 +228,7 @@ class TestCaseResult(object):
     def assertSucceeded(self):
         """assert on query succeeded"""
         if self.test_run_error is not None:
-            msg = "expected to succeed but 
didn't\n{}".format(str(self.test_run_error))
+            msg = "expected to succeed but 
didn't\n{}".format(str(self.test_run_error).rstrip('\n'))
             self.fail(msg)
         return self
 
@@ -415,14 +423,14 @@ class PyMonetDBTestResult(TestCaseResult
             if query:
                 self.query = query
                 try:
-                    with self.test_case.conn_ctx as ctx:
-                        crs = ctx.cursor()
-                        crs.execute(query)
-                        self.rowcount = crs.rowcount
-                        self.rows = crs._rows
-                        if crs.description:
-                            self.data = crs.fetchall()
-                            self.description = crs.description
+                    conn = self.test_case.conn_ctx.connect()
+                    crs = conn.cursor()
+                    crs.execute(query)
+                    self.rowcount = crs.rowcount
+                    self.rows = crs._rows
+                    if crs.description:
+                        self.data = crs.fetchall()
+                        self.description = crs.description
                 except pymonetdb.Error as e:
                     self.test_run_error = e
                     self.err_code, self.err_message = 
self._parse_error(e.args[0])
@@ -462,7 +470,6 @@ class SQLDump():
     def __init__(self, test_case, data=None):
         self.test_case = test_case
         self.data = data
-        conn_ctx = test_case.conn_ctx
         self.assertion_errors = [] # holds assertion errors
 
     def assertMatchStableOut(self, fout):
@@ -487,6 +494,7 @@ class SQLTestCase():
         self.test_results = []
         self._conn_ctx = None
         self.in_memory = False
+        self.client = 'pymonetdb'
 
     def __enter__(self):
         return self
@@ -494,10 +502,13 @@ class SQLTestCase():
     def __exit__(self, exc_type, exc_value, traceback):
         self.exit()
 
-    def exit(self):
+    def close(self):
         if self._conn_ctx:
             self._conn_ctx.close()
         self._conn_ctx = None
+
+    def exit(self):
+        self.close()
         for res in self.test_results:
             if len(res.assertion_errors) > 0:
                 raise SystemExit(1)
@@ -513,6 +524,8 @@ class SQLTestCase():
     def connect(self,
             username='monetdb', password='monetdb', port=MAPIPORT,
             hostname='localhost', database=TSTDB, language='sql'):
+        if self._conn_ctx:
+            self.close()
         if database == ':memory:':
             self.in_memory = True
             # TODO add username, password, port when supported from monetdbe
@@ -531,7 +544,8 @@ class SQLTestCase():
     def default_conn_ctx(self):
         if self.in_memory:
             return  monetdbe.connect(':memory:', autocommit=True)
-        return PyMonetDBConnectionContext()
+        ctx = PyMonetDBConnectionContext()
+        return ctx
 
     @property
     def conn_ctx(self):
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to