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)
Ejemplo n.º 3
0
    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)