def test_it_provides_logs_for_failed_version_integrity_check_and_performs_rollback( mock_error_handler, mock_delete, mock_load, mock_verify_integrity, rollback_mock, message_stub, ): parquet_file = MagicMock() parquet_file.num_row_groups = 1 mock_load.return_value = parquet_file mock_verify_integrity.side_effect = IntegrityCheckFailedError( "Some error", MagicMock(), "bucket", "path/basic.parquet", "new_version") mock_delete.return_value = pa.BufferOutputStream(), {"DeletedRows": 1} execute("https://queue/url", message_stub(), "receipt_handle") mock_verify_integrity.assert_called() mock_error_handler.assert_called_with( ANY, ANY, "Object version integrity check failed: Some error") rollback_mock.assert_called_with(ANY, "bucket", "path/basic.parquet", "new_version", on_error=ANY)
def test_it_provides_logs_for_failed_rollback_generic_error( mock_error_handler, mock_delete, mock_verify_integrity, message_stub): mock_s3 = MagicMock() mock_s3.delete_object.side_effect = Exception("error!!") mock_verify_integrity.side_effect = IntegrityCheckFailedError( "Some error", mock_s3, "bucket", "test/basic.parquet", "new_version") mock_delete.return_value = pa.BufferOutputStream(), {"DeletedRows": 1} execute("https://queue/url", message_stub(), "receipt_handle") mock_verify_integrity.assert_called() assert mock_error_handler.call_args_list == [ call(ANY, ANY, "Object version integrity check failed: Some error"), call( ANY, ANY, "Unknown error: error!!. Version rollback caused by version integrity conflict failed", "ObjectRollbackFailed", False, ), ]
def test_it_provides_logs_for_failed_rollback_client_error( mock_error_handler, mock_delete, mock_load, mock_verify_integrity, message_stub): parquet_file = MagicMock() parquet_file.num_row_groups = 1 mock_load.return_value = parquet_file mock_s3 = MagicMock() mock_s3.delete_object.side_effect = ClientError({}, "DeleteObject") mock_verify_integrity.side_effect = IntegrityCheckFailedError( "Some error", mock_s3, 'bucket', 'test/basic.parquet', 'new_version') mock_delete.return_value = pa.BufferOutputStream(), {"DeletedRows": 1} execute("https://queue/url", message_stub(), "receipt_handle") mock_verify_integrity.assert_called() assert mock_error_handler.call_args_list == [ call(ANY, ANY, "Object version integrity check failed: Some error"), call( ANY, ANY, "ClientError: An error occurred (Unknown) when calling the DeleteObject operation: Unknown. " "Version rollback caused by version integrity conflict failed", "ObjectRollbackFailed", False) ]