def _test_postgresql_opportunistically(self): # Test postgresql database migration walk if not test_migrations._have_postgresql( self.USER, self.PASSWD, self.DATABASE): self.skipTest("postgresql not available") # add this to the global lists to make reset work with it, it's removed # automatically in tearDown so no need to clean it up here. connect_string = test_migrations._get_connect_string( "postgres", self.USER, self.PASSWD, self.DATABASE) engine = sqlalchemy.create_engine(connect_string) (user, password, database, host) = \ test_migrations.get_db_connection_info(urlparse.urlparse( connect_string)) self.engines[database] = engine self.test_databases[database] = connect_string # build a fully populated postgresql database with all the tables self._reset_databases() self._walk_versions(engine, self.snake_walk)
def _test_mysql_opportunistically(self): # Test that table creation on mysql only builds InnoDB tables if not test_migrations._have_mysql( self.USER, self.PASSWD, self.DATABASE): self.skipTest("mysql not available") # add this to the global lists to make reset work with it, it's removed # automatically in tearDown so no need to clean it up here. connect_string = test_migrations._get_connect_string( "mysql", self.USER, self.PASSWD, self.DATABASE) (user, password, database, host) = \ test_migrations.get_db_connection_info(urlparse.urlparse( connect_string)) engine = sqlalchemy.create_engine(connect_string) self.engines[database] = engine self.test_databases[database] = connect_string # build a fully populated mysql database with all the tables self._reset_databases() self._walk_versions(engine, self.snake_walk) connection = engine.connect() # sanity check total = connection.execute("SELECT count(*) " "from information_schema.TABLES " "where TABLE_SCHEMA='%(database)s'" % {'database': database}) self.assertTrue(total.scalar() > 0, "No tables found. Wrong schema?") noninnodb = connection.execute("SELECT count(*) " "from information_schema.TABLES " "where TABLE_SCHEMA='%(database)s' " "and ENGINE!='InnoDB' " "and TABLE_NAME!='migrate_version'" % {'database': database}) count = noninnodb.scalar() self.assertEqual(count, 0, "%d non InnoDB tables created" % count) connection.close()