Skip to content

Commit

Permalink
[misc] test reliability improvement
Browse files Browse the repository at this point in the history
* maxscale doesn't support compression
* query "SELECT 1 WHERE 1=2" is supported only after 10.3 server.
* avoiding reuse pool name in test
* pypy: Decimal type is supported
* del cursor with pypy doesn't call tp_dealloc, not closing cursor. test explicitly close cursor when state is not finished.
* test correction when TEST_HOST is set
  • Loading branch information
rusher authored and 9EOR9 committed Jun 16, 2020
1 parent b491915 commit ffa959a
Show file tree
Hide file tree
Showing 7 changed files with 234 additions and 221 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Expand Up @@ -50,7 +50,7 @@ matrix:
include:
- env: DB=mariadb:10.4 PYTHON_VER="3.6.0"
- env: DB=mariadb:10.4 PYTHON_VER="3.8.0"
- env: DB=mariadb:10.4 PYTHON_VER="pypy3.6-7.2.0"
- env: DB=mariadb:10.4 PYTHON_VER="pypy3.6-7.3.1"
- env: DB=mariadb:10.4 BENCH=1
- env: DB=mariadb:10.4 PYTHON_VER="3.6.0" MAXSCALE_VERSION=2.2.9 TEST_PORT=4007 TEST_USER=bob TEXT_DATABASE=test2 SKIP_LEAK=1
- env: DB=mariadb:5.5 PYTHON_VER="3.6.0" TEST_RESET_SESSION=0
Expand Down
4 changes: 2 additions & 2 deletions src/mariadb_codecs.c
Expand Up @@ -787,8 +787,8 @@ mariadb_get_column_info(PyObject *obj, MrdbParamInfo *paraminfo)
} else if (obj == Py_None) {
paraminfo->type= MYSQL_TYPE_NULL;
return 0;
} else if (!strcmp(Py_TYPE(obj)->tp_name, "decimal.Decimal")) {
/* CINPY-49: C-API has no correspondent data type for DECUMAL column type,
} else if (!strcmp(Py_TYPE(obj)->tp_name, "decimal.Decimal") || !strcmp(Py_TYPE(obj)->tp_name, "Decimal")) {
/* CONPY-49: C-API has no correspondent data type for DECIMAL column type,
so we need to convert decimal.Decimal Object to string during callback */
paraminfo->type= MYSQL_TYPE_NEWDECIMAL;
return 0;
Expand Down
2 changes: 2 additions & 0 deletions test/conf_test.py
Expand Up @@ -16,6 +16,8 @@ def conf():
"database": os.environ.get('TEST_DATABASE', 'testp'),
"port": int(os.environ.get('TEST_PORT', '3306')),
}
if os.environ.get('TEST_RESET_SESSION'):
d["pool_reset_connection"] = int(os.environ.get('TEST_RESET_SESSION', '1'))
if os.environ.get('TEST_PASSWORD'):
d["password"] = os.environ.get('TEST_PASSWORD')
return d
15 changes: 9 additions & 6 deletions test/integration/test_connection.py
Expand Up @@ -24,7 +24,7 @@ def test_conpy36(self):
self.skipTest("unix_socket not supported on Windows")
default_conf = conf()
try:
conn= mariadb.connect(user=default_conf["user"], unix_socket="/does_not_exist/x.sock")
conn= mariadb.connect(user=default_conf["user"], unix_socket="/does_not_exist/x.sock", port=default_conf["port"], host=default_conf["host"])
except mariadb.DatabaseError:
pass

Expand Down Expand Up @@ -55,7 +55,7 @@ def test_autocommit(self):

def test_local_infile(self):
default_conf= conf()
new_conn = mariadb.connect(user=default_conf["user"], database=default_conf["database"], local_infile=False)
new_conn = mariadb.connect(user=default_conf["user"], database=default_conf["database"], local_infile=False, port=default_conf["port"], host=default_conf["host"])
cursor=new_conn.cursor()
cursor.execute("CREATE TEMPORARY TABLE t1 (a int)")
try:
Expand All @@ -67,7 +67,7 @@ def test_local_infile(self):

def test_init_command(self):
default_conf= conf()
new_conn = mariadb.connect(user=default_conf["user"], database=default_conf["database"], init_command="SET @a:=1")
new_conn = mariadb.connect(user=default_conf["user"], database=default_conf["database"], init_command="SET @a:=1", port=default_conf["port"], host=default_conf["host"])
cursor=new_conn.cursor()
cursor.execute("SELECT @a")
row=cursor.fetchone()
Expand All @@ -79,11 +79,14 @@ def test_compress(self):
if os.environ.get("TRAVIS"):
self.skipTest("Skip test on TRAVIS")
default_conf= conf()
new_conn = mariadb.connect(user=default_conf["user"], database=default_conf["database"], compress=True)
new_conn = mariadb.connect(user=default_conf["user"], database=default_conf["database"], compress=True, port=default_conf["port"], host=default_conf["host"])
cursor=new_conn.cursor()
cursor.execute("SHOW SESSION STATUS LIKE 'compression'")
row=cursor.fetchone()
self.assertEqual(row[1], "ON")
if os.environ.get("MAXSCALE_VERSION"):
self.assertEqual(row[1], "OFF")
else:
self.assertEqual(row[1], "ON")
del cursor
del new_conn

Expand Down Expand Up @@ -114,7 +117,7 @@ def test_ping(self):

try:
cursor.execute("KILL {id}".format(id=oldid))
except mariadb.ProgrammingError:
except:
pass

conn.auto_reconnect = True
Expand Down
26 changes: 20 additions & 6 deletions test/integration/test_cursor.py
Expand Up @@ -459,7 +459,7 @@ def test_conpy34(self):
except mariadb.DataError:
pass
del cursor


def test_scroll(self):
cursor = self.connection.cursor(buffered=True)
Expand Down Expand Up @@ -918,7 +918,7 @@ def test_conpy61(self):
self.assertEqual(row[0], None)
self.assertEqual(row[1], 2)
self.assertEqual(row[2], None)

del cursor

def test_conpy62(self):
Expand All @@ -935,9 +935,11 @@ def test_conpy67(self):
cur = con.cursor()
cur.execute("SELECT 1")
self.assertEqual(cur.rowcount, -1)
del cur
cur.close()

cur = con.cursor()
cur.execute("SELECT 1 FROM DUAL LIMIT 0")
cur.execute("CREATE TEMPORARY TABLE test_conpy67 (a int)")
cur.execute("SELECT * from test_conpy67")
self.assertEqual(cur.rowcount, -1)
cur.fetchall()
self.assertEqual(cur.rowcount, 0)
Expand All @@ -950,11 +952,23 @@ def test_negative_numbers(self):
cur.execute("insert into t1 values (?,?,?)", (-1, -300, -2147483649))
cur.execute("select a, b, c FROM t1")
row= cur.fetchone()
self.assertEqual(row[0], -1)
self.assertEqual(row[1], -300)
self.assertEqual(row[0], -1)
self.assertEqual(row[1], -300)
self.assertEqual(row[2], -2147483649)
del cur
con.close()

def test_none_val(self):
con= create_connection()
cur = con.cursor()
cur.execute("CREATE TEMPORARY TABLE t1 (a int)")
vals= [(1,),(2,), (4,), (None,), (3,)]
cur.executemany("INSERT INTO t1 VALUES (?)", vals)
cur.execute("select a from t1 order by a")
rows= cur.fetchall()
self.assertEqual(row[3][0], None);
del cur
con.close()

if __name__ == '__main__':
unittest.main()

0 comments on commit ffa959a

Please sign in to comment.