def test_rev_eng_indices(self): catalog, schema, table = self._set_catalog_schema_table('AdventureWorks', 'HumanResources', 'EmployeeAddress') res = DbMssqlRE.reverseEngineerUserDatatypes(self.connection, catalog) self.assertEqual(res, 0) res = DbMssqlRE.reverseEngineerTableColumns(self.connection, table) self.assertEqual(res, 0) res = DbMssqlRE.reverseEngineerTableIndices(self.connection, table) self.assertEqual(res, 0) detected_index = 0 for index in table.indices: if index.name == 'PK_EmployeeAddress_EmployeeID_AddressID': detected_index += 1 elif index.name == 'AK_EmployeeAddress_rowguid': detected_index += 1 self.assertEqual(index.unique, 1) self.assertEqual(index.isPrimary, 0) self.assertEqual(index.clustered, 0) self.assertEqual(index.indexType, 'UNIQUE') self.assertEqual(set(icol.referencedColumn.name for icol in index.columns), set(['rowguid'])) self.assertEqual(detected_index, 1) # Check fail on table with empty columns: table1 = grt.classes.db_mssql_Table() table1.name = 'Vendor' table1.owner = schema res = DbMssqlRE.reverseEngineerTableIndices(self.connection, table1) self.assertEqual(res, 1) indices = [ index.name for index in table1.indices ] self.assertEqual(indices, [])
def test_migrate_indices(self): # Prepare source objects: source_catalog, source_schema, source_table = self._set_catalog_schema_table('AdventureWorks', 'HumanResources', 'EmployeeAddress') res = DbMssqlRE.reverseEngineerUserDatatypes(self.connection, source_catalog) self.assertEqual(res, 0) res = DbMssqlRE.reverseEngineerTableColumns(self.connection, source_table) self.assertEqual(res, 0) res = DbMssqlRE.reverseEngineerTableIndices(self.connection, source_table) self.assertEqual(res, 0) # Do migration: target_catalog = grt.classes.db_mysql_Catalog() res = DbMssqlMigration.migrateCatalog(source_catalog, target_catalog) self.assertEqual(res, 0) target_table = grt.classes.db_mysql_Table() res = DbMssqlMigration.migrateTableToMySQL(source_table, target_table) self.assertEqual(res, 0) res = DbMssqlMigration.migrateTableColumnsToMySQL(source_table, target_table) self.assertEqual(res, 0) res = DbMssqlMigration.migrateTableIndicesToMySQL(source_table, target_table) self.assertEqual(res, 0) # Additional tests: detected_index = 0 for index in target_table.indices: if index.name == 'PK_EmployeeAddress_EmployeeID_AddressID': detected_index += 1 elif index.name == 'AK_EmployeeAddress_rowguid': detected_index += 1 self.assertEqual(index.unique, 1) self.assertEqual(index.isPrimary, 0) self.assertEqual(index.indexType, 'UNIQUE') self.assertEqual(set(icol.referencedColumn.name for icol in index.columns), set(['rowguid'])) self.assertEqual(detected_index, 1)
def test_migrate_indices(self): # Prepare source objects: source_catalog, source_schema, source_table = self._set_catalog_schema_table( 'AdventureWorks', 'HumanResources', 'EmployeeAddress') res = DbMssqlRE.reverseEngineerUserDatatypes(self.connection, source_catalog) self.assertEqual(res, 0) res = DbMssqlRE.reverseEngineerTableColumns(self.connection, source_table) self.assertEqual(res, 0) res = DbMssqlRE.reverseEngineerTableIndices(self.connection, source_table) self.assertEqual(res, 0) # Do migration: target_catalog = grt.classes.db_mysql_Catalog() res = DbMssqlMigration.migrateCatalog(source_catalog, target_catalog) self.assertEqual(res, 0) target_table = grt.classes.db_mysql_Table() res = DbMssqlMigration.migrateTableToMySQL(source_table, target_table) self.assertEqual(res, 0) res = DbMssqlMigration.migrateTableColumnsToMySQL( source_table, target_table) self.assertEqual(res, 0) res = DbMssqlMigration.migrateTableIndicesToMySQL( source_table, target_table) self.assertEqual(res, 0) # Additional tests: detected_index = 0 for index in target_table.indices: if index.name == 'PK_EmployeeAddress_EmployeeID_AddressID': detected_index += 1 elif index.name == 'AK_EmployeeAddress_rowguid': detected_index += 1 self.assertEqual(index.unique, 1) self.assertEqual(index.isPrimary, 0) self.assertEqual(index.indexType, 'UNIQUE') self.assertEqual( set(icol.referencedColumn.name for icol in index.columns), set(['rowguid'])) self.assertEqual(detected_index, 1)