Пример #1
0
    def test_get_all_table_metadata_from_information_schema(
            self, mock_settings) -> None:
        self.engine.init(self.conf)
        self.engine.execute = MagicMock(
            side_effect=presto_engine_execute_side_effect
        )

        expected = TableMetadata(
                database=MOCK_DATABASE_NAME,
                cluster=MOCK_CLUSTER_NAME,
                schema=MOCK_SCHEMA_NAME,
                name=MOCK_TABLE_NAME,
                columns=[
                    ColumnMetadata(
                        name=MOCK_INFORMATION_SCHEMA_RESULT_1['col_name'],
                        description=MOCK_INFORMATION_SCHEMA_RESULT_1['col_description'],
                        col_type=MOCK_INFORMATION_SCHEMA_RESULT_1['col_type'],
                        sort_order=MOCK_INFORMATION_SCHEMA_RESULT_1['col_sort_order'],
                        is_partition_column=None
                    ),
                    ColumnMetadata(
                        name=MOCK_INFORMATION_SCHEMA_RESULT_2['col_name'],
                        description=MOCK_INFORMATION_SCHEMA_RESULT_2['col_description'],
                        col_type=MOCK_INFORMATION_SCHEMA_RESULT_2['col_type'],
                        sort_order=MOCK_INFORMATION_SCHEMA_RESULT_2['col_sort_order'],
                        is_partition_column=None
                        )],
                is_view=bool(MOCK_INFORMATION_SCHEMA_RESULT_1['is_view']),
        )
        results = self.engine.get_all_table_metadata_from_information_schema(
            cluster=MOCK_CLUSTER_NAME)
        result = next(results)
        self.maxDiff = None
        self.assertEqual(result.__repr__(), expected.__repr__())
    def test_table_metadata_extraction_with_single_result(
            self, mock_settings) -> None:
        extractor = PrestoLoopExtractor()
        conf = self.conf.copy()
        conf.put('is_table_metadata_enabled', True)
        extractor.init(conf)
        extractor.execute = MagicMock(
            side_effect=presto_engine_execute_side_effect)

        results = extractor.extract()
        is_partition_column = True \
            if MOCK_COLUMN_RESULT[2] == 'partition key' \
            else False
        expected = TableMetadata(
            database=extractor._database,
            cluster=None,
            schema=MOCK_SCHEMA_NAME,
            name=MOCK_TABLE_NAME,
            columns=[
                ColumnMetadata(name=MOCK_COLUMN_RESULT[0],
                               description=MOCK_COLUMN_RESULT[3],
                               col_type=MOCK_COLUMN_RESULT[1],
                               sort_order=0,
                               is_partition_column=is_partition_column)
            ])
        self.assertEqual(results.__repr__(), expected.__repr__())