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