def CreateDatabase(self): # pylint: disable=unreachable user = _GetEnvironOrSkip("MYSQL_TEST_USER") host = _GetEnvironOrSkip("MYSQL_TEST_HOST") port = _GetEnvironOrSkip("MYSQL_TEST_PORT") passwd = _GetEnvironOrSkip("MYSQL_TEST_PASS") dbname = "".join( random.choice(string.ascii_uppercase + string.digits) for _ in range(10)) connection = MySQLdb.Connect(host=host, port=port, user=user, passwd=passwd) cursor = connection.cursor() cursor.execute("CREATE DATABASE " + dbname) logging.info("Created test database: %s", dbname) conn = mysql.MysqlDB(host=host, port=port, user=user, passwd=passwd, db=dbname) def Fin(): cursor.execute("DROP DATABASE " + dbname) cursor.close() connection.close() conn.Close() return conn, Fin
def _CreateDatabase(cls): user = _GetEnvironOrSkip("MYSQL_TEST_USER") host = _GetEnvironOrSkip("MYSQL_TEST_HOST") port = _GetEnvironOrSkip("MYSQL_TEST_PORT") password = _GetEnvironOrSkip("MYSQL_TEST_PASS") # Use dash character in database name to break queries that do not quote it. database = "test-{}".format(str(uuid.uuid4())[-10]) conn = mysql.MysqlDB(host=host, port=int(port), user=user, password=password, database=database) logging.info("Created test database: %s", database) def _Drop(conn): with contextlib.closing(conn.cursor()) as cursor: cursor.execute("DROP DATABASE `{}`".format(database)) def Fin(): conn._RunInTransaction(_Drop) conn.Close() return conn, Fin
def CreateDatabase(self): user = _GetEnvironOrSkip("MYSQL_TEST_USER") host = _GetEnvironOrSkip("MYSQL_TEST_HOST") port = _GetEnvironOrSkip("MYSQL_TEST_PORT") password = _GetEnvironOrSkip("MYSQL_TEST_PASS") database = "".join( random.choice(string.ascii_uppercase + string.digits) for _ in range(10)) conn = mysql.MysqlDB(host=host, port=port, user=user, password=password, database=database) logging.info("Created test database: %s", database) def _Drop(cursor): cursor.execute("DROP DATABASE {}".format(database)) def Fin(): conn._RunInTransaction(_Drop) conn.Close() return conn, Fin
def testMaxAllowedPacketSettingIsOverriddenWhenTooLow(self): def SetMaxAllowedPacket(conn): with contextlib.closing(conn.cursor()) as cursor: mysql._SetGlobalVariable("max_allowed_packet", 20 << 10, cursor) def GetMaxAllowedPacket(conn): with contextlib.closing(conn.cursor()) as cursor: return mysql._ReadVariable("max_allowed_packet", cursor) self.db.delegate._RunInTransaction(SetMaxAllowedPacket) # Initialize a new connection. This should fix the "max_allowed_packet" # setting. db = mysql.MysqlDB( host=self._testdb.hostname(), port=self._testdb.port(), user=self._testdb.username(), password=self._testdb.password(), database=self._testdb.dbname()) db.Close() self.assertEqual( self.db.delegate._RunInTransaction(GetMaxAllowedPacket), str(mysql.MAX_PACKET_SIZE))
def testMeaningfulErrorWhenNotEnoughPermissionsToOverrideGlobalVariable( self): def SetMaxAllowedPacket(conn): with contextlib.closing(conn.cursor()) as cursor: mysql._SetGlobalVariable("max_allowed_packet", 20 << 10, cursor) self.db.delegate._RunInTransaction(SetMaxAllowedPacket) # MaxAllowedPacketSettingTooLowError will be raised since # _SetGlobalVariable call will fail (via the mock). This way # we mimick the situation when _SetGlobalVariable fails due to # the lack of permissions. with mock.patch.object(mysql, "_SetGlobalVariable", side_effect=MySQLdb.OperationalError( "SUPER privileges required")): with self.assertRaises(mysql.MaxAllowedPacketSettingTooLowError): mysql.MysqlDB(host=self._testdb.hostname(), port=self._testdb.port(), user=self._testdb.username(), password=self._testdb.password(), database=self._testdb.dbname())