Esempio n. 1
0
    def __init__(self, hconn: pyodbc.Connection, pconn: pyodbc.Connection,
                 test_database: str, storage_location: str) -> None:
        super().__init__(test_database, storage_location)

        self.hconn = hconn
        self.pconn = pconn
        self.column_mapping = {
            "float": "double",
            "numeric": "double",
            "tinyint": "tinyint",
            "smallint": "smallint",
            "int": "integer",
            "integer": "integer",
            "bigint": "bigint",
            "string": "string",
            "varchar": "string",
            "timestamp": "timestamp"
        }
        self.validation_timeout = 30  # s, max time to try to validate that the temporary table actually has data in it.
        valid_hive_table_names = r"[\w\d\{\}]+|\`.+\`"
        self.regex_hive_insert = utils.regex_hive_insert
        valid_presto_table_names = r"[\w\d\{\}]+|\"[\w\d\s\{\}]+\""
        self.regex_presto_insert = r"INSERT\s+INTO\s+(?P<database>{vtn})\.(?P<table>{vtn})".format(
            vtn=valid_presto_table_names)

        self.TableComparator = TableComparator(self.test_database, hconn,
                                               pconn)
        self.HiveTableExplorer = utils.HiveTableExplorer(hconn)
        self.ErrorHandlerHiveToPresto = error_handling.ErrorHandlerHiveToPresto(
        )
def test_cast_in(statement: str, error_message: str, expected: str) -> None:
    ErrorHandlerHiveToPresto = error_handling.ErrorHandlerHiveToPresto()
    pattern = [
        k for k, v in ErrorHandlerHiveToPresto.known_issues.items()
        if v == ErrorHandlerHiveToPresto._cast_in
    ]
    assert ErrorHandlerHiveToPresto._cast_in(
        statement, re.search(pattern[0], error_message)) == expected
def test_cast_in_ValueError(statement: str, error_message: str) -> None:
    ErrorHandlerHiveToPresto = error_handling.ErrorHandlerHiveToPresto()
    pattern = [
        k for k, v in ErrorHandlerHiveToPresto.known_issues.items()
        if v == ErrorHandlerHiveToPresto._cast_in
    ]
    with pytest.raises(ValueError):
        ErrorHandlerHiveToPresto._cast_in(statement,
                                          re.search(pattern[0], error_message))
def test_unexpected_parameters_NotImplementedError(statement: str,
                                                   error_message: str) -> None:
    ErrorHandlerHiveToPresto = error_handling.ErrorHandlerHiveToPresto()
    pattern = [
        k for k, v in ErrorHandlerHiveToPresto.known_issues.items()
        if v == ErrorHandlerHiveToPresto._unexpected_parameters
    ]
    with pytest.raises(NotImplementedError):
        ErrorHandlerHiveToPresto._unexpected_parameters(
            statement, re.search(pattern[0], error_message))
def test_column_type_mismatch(statement: str, error_message: str,
                              expected: str) -> None:
    ErrorHandlerHiveToPresto = error_handling.ErrorHandlerHiveToPresto()
    pattern = [
        k for k, v in ErrorHandlerHiveToPresto.known_issues.items()
        if v == ErrorHandlerHiveToPresto._column_type_mismatch
    ]
    assert ErrorHandlerHiveToPresto._column_type_mismatch(
        statement,
        re.search(pattern[0], error_message),
        temp_tgt_table_properties={"columns": {}}) == expected
def test_handle_errors_Exception(statement: str, original_sql: str,
                                 error_message: str, expected: str) -> None:
    ErrorHandlerHiveToPresto = error_handling.ErrorHandlerHiveToPresto()
    assert ErrorHandlerHiveToPresto.handle_errors(statement, original_sql,
                                                  error_message) == (expected,
                                                                     "")
def test_handle_errors(statement: str, error_message: str,
                       expected: str) -> None:
    ErrorHandlerHiveToPresto = error_handling.ErrorHandlerHiveToPresto()
    assert ErrorHandlerHiveToPresto.handle_errors(statement, statement,
                                                  error_message) == (expected,
                                                                     expected)
def test_expand_wildcards_ValueError(statement: str,
                                     table_properties: Dict[str, str]) -> None:
    ErrorHandlerHiveToPresto = error_handling.ErrorHandlerHiveToPresto()
    with pytest.raises(ValueError):
        ErrorHandlerHiveToPresto._expand_wildcards(statement, table_properties)
def test_expand_wildcards(statement: str, table_properties: Dict[str, str],
                          expected: str) -> None:
    ErrorHandlerHiveToPresto = error_handling.ErrorHandlerHiveToPresto()
    assert ErrorHandlerHiveToPresto._expand_wildcards(
        statement, table_properties) == expected