class CMySQLConnectionTests(tests.MySQLConnectorTests): def setUp(self): config = tests.get_mysql_config() self.cnx = CMySQLConnection(**config) self.pcnx = MySQLConnection(**config) def test__info_query(self): query = "SELECT 1, 'a', 2, 'b'" exp = (1, 'a', 2, 'b') self.assertEqual(exp, self.cnx.info_query(query)) self.assertRaises(errors.InterfaceError, self.cnx.info_query, "SHOW VARIABLES LIKE '%char%'") def test_client_flags(self): defaults = ClientFlag.default set_flags = self.cnx._cmysql.st_client_flag() for flag in defaults: self.assertTrue(flag_is_set(flag, set_flags)) def test_get_rows(self): self.assertRaises(errors.InternalError, self.cnx.get_rows) query = "SHOW STATUS LIKE 'Aborted_c%'" self.cnx.cmd_query(query) self.assertRaises(AttributeError, self.cnx.get_rows, 0) self.assertRaises(AttributeError, self.cnx.get_rows, -10) self.assertEqual(2, len(self.cnx.get_rows())) self.cnx.free_result() self.cnx.cmd_query(query) self.assertEqual(1, len(self.cnx.get_rows(count=1))) self.assertEqual(1, len(self.cnx.get_rows(count=1))) self.assertEqual([], self.cnx.get_rows(count=1)) self.cnx.free_result() def test_cmd_init_db(self): query = "SELECT DATABASE()" self.cnx.cmd_init_db('mysql') self.assertEqual('mysql', self.cnx.info_query(query)[0]) self.cnx.cmd_init_db('myconnpy') self.assertEqual('myconnpy', self.cnx.info_query(query)[0]) def test_cmd_query(self): query = "SHOW STATUS LIKE 'Aborted_c%'" info = self.cnx.cmd_query(query) exp = { 'eof': {'status_flag': 32, 'warning_count': 0}, 'columns': [ ['Variable_name', 253, None, None, None, None, 0, 1], ('Value', 253, None, None, None, None, 1, 0) ] } if tests.MYSQL_VERSION >= (5, 7, 10): exp['columns'][0][7] = 4097 exp['eof']['status_flag'] = 16385 exp['columns'][0] = tuple(exp['columns'][0]) self.assertEqual(exp, info) rows = self.cnx.get_rows() vars = [ row[0] for row in rows ] self.assertEqual(2, len(rows)) vars.sort() exp = ['Aborted_clients', 'Aborted_connects'] self.assertEqual(exp, vars) exp = ['Value', 'Variable_name'] fields = [fld[0] for fld in info['columns']] fields.sort() self.assertEqual(exp, fields) self.cnx.free_result() info = self.cnx.cmd_query("SET @a = 1") exp = { 'warning_count': 0, 'insert_id': 0, 'affected_rows': 0, 'server_status': 0, 'field_count': 0 } self.assertEqual(exp, info)
class CMySQLConnectionTests(tests.MySQLConnectorTests): def setUp(self): config = tests.get_mysql_config() self.cnx = CMySQLConnection(**config) self.pcnx = MySQLConnection(**config) def test__info_query(self): query = "SELECT 1, 'a', 2, 'b'" exp = (1, 'a', 2, 'b') self.assertEqual(exp, self.cnx.info_query(query)) self.assertRaises(errors.InterfaceError, self.cnx.info_query, "SHOW VARIABLES LIKE '%char%'") def test_client_flags(self): defaults = ClientFlag.default set_flags = self.cnx._cmysql.st_client_flag() for flag in defaults: self.assertTrue(flag_is_set(flag, set_flags)) def test_get_rows(self): self.assertRaises(errors.InternalError, self.cnx.get_rows) query = "SHOW STATUS LIKE 'Aborted_c%'" self.cnx.cmd_query(query) self.assertRaises(AttributeError, self.cnx.get_rows, 0) self.assertRaises(AttributeError, self.cnx.get_rows, -10) self.assertEqual(2, len(self.cnx.get_rows())) self.cnx.free_result() self.cnx.cmd_query(query) self.assertEqual(1, len(self.cnx.get_rows(count=1))) self.assertEqual(1, len(self.cnx.get_rows(count=1))) self.assertEqual([], self.cnx.get_rows(count=1)) self.cnx.free_result() def test_cmd_init_db(self): query = "SELECT DATABASE()" self.cnx.cmd_init_db('mysql') self.assertEqual('mysql', self.cnx.info_query(query)[0]) self.cnx.cmd_init_db('myconnpy') self.assertEqual('myconnpy', self.cnx.info_query(query)[0]) def test_cmd_query(self): query = "SHOW STATUS LIKE 'Aborted_c%'" info = self.cnx.cmd_query(query) exp = { 'eof': { 'status_flag': 32, 'warning_count': 0 }, 'columns': [['Variable_name', 253, None, None, None, None, 0, 1], ('Value', 253, None, None, None, None, 1, 0)] } if tests.MYSQL_VERSION >= (5, 7, 10): exp['columns'][0][7] = 4097 exp['eof']['status_flag'] = 16385 exp['columns'][0] = tuple(exp['columns'][0]) self.assertEqual(exp, info) rows = self.cnx.get_rows() vars = [row[0] for row in rows] self.assertEqual(2, len(rows)) vars.sort() exp = ['Aborted_clients', 'Aborted_connects'] self.assertEqual(exp, vars) exp = ['Value', 'Variable_name'] fields = [fld[0] for fld in info['columns']] fields.sort() self.assertEqual(exp, fields) self.cnx.free_result() info = self.cnx.cmd_query("SET @a = 1") exp = { 'warning_count': 0, 'insert_id': 0, 'affected_rows': 0, 'server_status': 0, 'field_count': 0 } self.assertEqual(exp, info)
class CMySQLConnectionTests(tests.MySQLConnectorTests): def setUp(self): config = tests.get_mysql_config() self.cnx = CMySQLConnection(**config) self.pcnx = MySQLConnection(**config) def test__info_query(self): query = "SELECT 1, 'a', 2, 'b'" exp = (1, 'a', 2, 'b') self.assertEqual(exp, self.cnx.info_query(query)) self.assertRaises(errors.InterfaceError, self.cnx.info_query, "SHOW VARIABLES LIKE '%char%'") def test_client_flags(self): defaults = ClientFlag.default set_flags = self.cnx._cmysql.st_client_flag() for flag in defaults: self.assertTrue(flag_is_set(flag, set_flags)) def test_get_rows(self): self.assertRaises(errors.InternalError, self.cnx.get_rows) query = "SHOW STATUS LIKE 'Aborted_c%'" self.cnx.cmd_query(query) self.assertRaises(AttributeError, self.cnx.get_rows, 0) self.assertRaises(AttributeError, self.cnx.get_rows, -10) self.assertEqual(2, len(self.cnx.get_rows()[0])) self.cnx.free_result() self.cnx.cmd_query(query) self.assertEqual(1, len(self.cnx.get_rows(count=1)[0])) self.assertEqual(1, len(self.cnx.get_rows(count=1)[0])) self.assertEqual([], self.cnx.get_rows(count=1)[0]) self.cnx.free_result() def test_cmd_init_db(self): query = "SELECT DATABASE()" self.cnx.cmd_init_db('mysql') self.assertEqual('mysql', self.cnx.info_query(query)[0]) self.cnx.cmd_init_db('myconnpy') self.assertEqual('myconnpy', self.cnx.info_query(query)[0]) def test_cmd_query(self): query = "SHOW STATUS LIKE 'Aborted_c%'" info = self.cnx.cmd_query(query) exp = { 'eof': { 'status_flag': 32, 'warning_count': 0 }, 'columns': [['Variable_name', 253, None, None, None, None, 0, 1], ('Value', 253, None, None, None, None, 1, 0)] } if tests.MYSQL_VERSION >= (5, 7, 10): exp['columns'][0][7] = 4097 exp['eof']['status_flag'] = 16385 exp['columns'][0] = tuple(exp['columns'][0]) self.assertEqual(exp, info) rows = self.cnx.get_rows()[0] vars = [row[0] for row in rows] self.assertEqual(2, len(rows)) vars.sort() exp = ['Aborted_clients', 'Aborted_connects'] self.assertEqual(exp, vars) exp = ['Value', 'Variable_name'] fields = [fld[0] for fld in info['columns']] fields.sort() self.assertEqual(exp, fields) self.cnx.free_result() info = self.cnx.cmd_query("SET @a = 1") exp = { 'warning_count': 0, 'insert_id': 0, 'affected_rows': 0, 'server_status': 0, 'field_count': 0 } self.assertEqual(exp, info) @unittest.skipIf(tests.MYSQL_VERSION < (5, 7, 3), "MySQL >= 5.7.3 is required for reset command") def test_cmd_reset_connection(self): """Resets session without re-authenticating""" exp_session_id = self.cnx.connection_id self.cnx.cmd_query("SET @ham = 2") self.cnx.cmd_reset_connection() self.cnx.cmd_query("SELECT @ham") self.assertEqual(exp_session_id, self.cnx.connection_id) exp = ('2', ) if PY2 else (b'2', ) self.assertNotEqual(exp, self.cnx.get_rows()[0][0]) def test_connection_id(self): """MySQL connection ID""" self.assertEqual(self.cnx._cmysql.thread_id(), self.cnx.connection_id) self.cnx.close() self.assertIsNone(self.cnx.connection_id) self.cnx.connect()