Esempio n. 1
0
def test_asset_events_error_parsing(conn_string):
    event_log_storage = PostgresEventLogStorage.create_clean_storage(
        conn_string)
    _logs = []

    def mock_log(msg):
        _logs.append(msg)

    asset_key = 'asset one'

    @solid
    def materialize_one(_):
        yield Materialization(
            label='one',
            asset_key=asset_key,
        )
        yield Output(1)

    def _solids():
        materialize_one()

    events_one, _ = synthesize_events(_solids)
    for event in events_one:
        event_log_storage.store_event(event)

    with mock.patch(
            'dagster_postgres.event_log.event_log.logging.warning',
            side_effect=mock_log,
    ):
        with mock.patch(
                'dagster_postgres.event_log.event_log.deserialize_json_to_dagster_namedtuple',
                return_value='not_an_event_record',
        ):

            assert asset_key in set(event_log_storage.get_all_asset_keys())
            events = event_log_storage.get_asset_events(asset_key)
            assert len(events) == 0
            assert len(_logs) == 1
            assert re.match(
                'Could not resolve asset event record as EventRecord',
                _logs[0])

        _logs = []  # reset logs

        with mock.patch(
                'dagster_postgres.event_log.event_log.deserialize_json_to_dagster_namedtuple',
                side_effect=seven.JSONDecodeError('error', '', 0),
        ):
            assert asset_key in set(event_log_storage.get_all_asset_keys())
            events = event_log_storage.get_asset_events(asset_key)
            assert len(events) == 0
            assert len(_logs) == 1
            assert re.match('Could not parse asset event record id', _logs[0])
Esempio n. 2
0
    def test_asset_events_error_parsing(self, storage):
        if not isinstance(storage, SqlEventLogStorage):
            pytest.skip("This test is for SQL-backed Event Log behavior")
        _logs = []

        def mock_log(msg):
            _logs.append(msg)

        asset_key = AssetKey("asset_one")

        @solid
        def materialize_one(_):
            yield AssetMaterialization(asset_key=asset_key)
            yield Output(1)

        def _solids():
            materialize_one()

        events_one, _ = _synthesize_events(_solids)
        for event in events_one:
            storage.store_event(event)

        with mock.patch(
                "dagster.core.storage.event_log.sql_event_log.logging.warning",
                side_effect=mock_log,
        ):
            with mock.patch(
                    "dagster.core.storage.event_log.sql_event_log.deserialize_json_to_dagster_namedtuple",
                    return_value="not_an_event_record",
            ):

                assert asset_key in set(storage.all_asset_keys())
                events = storage.get_asset_events(asset_key)
                assert len(events) == 0
                assert len(_logs) == 1
                assert re.match(
                    "Could not resolve asset event record as EventRecord",
                    _logs[0])

            _logs = []  # reset logs

            with mock.patch(
                    "dagster.core.storage.event_log.sql_event_log.deserialize_json_to_dagster_namedtuple",
                    side_effect=seven.JSONDecodeError("error", "", 0),
            ):
                assert asset_key in set(storage.all_asset_keys())
                events = storage.get_asset_events(asset_key)
                assert len(events) == 0
                assert len(_logs) == 1
                assert re.match("Could not parse asset event record id",
                                _logs[0])
Esempio n. 3
0
def test_asset_events_error_parsing(conn_string):
    event_log_storage = PostgresEventLogStorage.create_clean_storage(
        conn_string)
    _logs = []

    def mock_log(msg):
        _logs.append(msg)

    asset_key = AssetKey("asset_one")

    @solid
    def materialize_one(_):
        yield AssetMaterialization(asset_key=asset_key)
        yield Output(1)

    def _solids():
        materialize_one()

    events_one, _ = synthesize_events(_solids)
    for event in events_one:
        event_log_storage.store_event(event)

    with mock.patch(
            "dagster.core.storage.event_log.sql_event_log.logging.warning",
            side_effect=mock_log,
    ):
        with mock.patch(
                "dagster.core.storage.event_log.sql_event_log.deserialize_json_to_dagster_namedtuple",
                return_value="not_an_event_record",
        ):

            assert asset_key in set(event_log_storage.get_all_asset_keys())
            events = event_log_storage.get_asset_events(asset_key)
            assert len(events) == 0
            assert len(_logs) == 1
            assert re.match(
                "Could not resolve asset event record as EventRecord",
                _logs[0])

        _logs = []  # reset logs

        with mock.patch(
                "dagster.core.storage.event_log.sql_event_log.deserialize_json_to_dagster_namedtuple",
                side_effect=seven.JSONDecodeError("error", "", 0),
        ):
            assert asset_key in set(event_log_storage.get_all_asset_keys())
            events = event_log_storage.get_asset_events(asset_key)
            assert len(events) == 0
            assert len(_logs) == 1
            assert re.match("Could not parse asset event record id", _logs[0])
Esempio n. 4
0
    def test_asset_events_error_parsing(self, storage):
        if not isinstance(storage, SqlEventLogStorage):
            pytest.skip("This test is for SQL-backed Event Log behavior")
        _logs = []

        def mock_log(msg):
            _logs.append(msg)

        asset_key = AssetKey("asset_one")

        @solid
        def materialize_one(_):
            yield AssetMaterialization(asset_key=asset_key)
            yield Output(1)

        def _solids():
            materialize_one()

        with instance_for_test() as instance:
            if not storage._instance:  # pylint: disable=protected-access
                storage.register_instance(instance)
            events_one, _ = _synthesize_events(_solids, instance=instance)
            for event in events_one:
                storage.store_event(event)

            with ExitStack() as stack:
                stack.enter_context(
                    mock.patch(
                        "dagster.core.storage.event_log.sql_event_log.logging.warning",
                        side_effect=mock_log,
                    ))
                # for generic sql-based event log storage
                stack.enter_context(
                    mock.patch(
                        "dagster.core.storage.event_log.sql_event_log.deserialize_json_to_dagster_namedtuple",
                        return_value="not_an_event_record",
                    ))
                # for sqlite event log storage, which overrides the record fetching implementation
                stack.enter_context(
                    mock.patch(
                        "dagster.core.storage.event_log.sqlite.sqlite_event_log.deserialize_json_to_dagster_namedtuple",
                        return_value="not_an_event_record",
                    ))

                assert asset_key in set(storage.all_asset_keys())
                events = storage.get_asset_events(asset_key)
                assert len(events) == 0
                assert len(_logs) == 1
                assert re.match(
                    "Could not resolve event record as EventLogEntry",
                    _logs[0])

            with ExitStack() as stack:
                _logs = []  # reset logs
                stack.enter_context(
                    mock.patch(
                        "dagster.core.storage.event_log.sql_event_log.logging.warning",
                        side_effect=mock_log,
                    ))

                # for generic sql-based event log storage
                stack.enter_context(
                    mock.patch(
                        "dagster.core.storage.event_log.sql_event_log.deserialize_json_to_dagster_namedtuple",
                        side_effect=seven.JSONDecodeError("error", "", 0),
                    ))
                # for sqlite event log storage, which overrides the record fetching implementation
                stack.enter_context(
                    mock.patch(
                        "dagster.core.storage.event_log.sqlite.sqlite_event_log.deserialize_json_to_dagster_namedtuple",
                        side_effect=seven.JSONDecodeError("error", "", 0),
                    ))
                assert asset_key in set(storage.all_asset_keys())
                events = storage.get_asset_events(asset_key)
                assert len(events) == 0
                assert len(_logs) == 1
                assert re.match("Could not parse event record id", _logs[0])