Пример #1
0
def test_construct_log_string_for_event():
    step_output_event = DagsterEvent(
        event_type_value="STEP_OUTPUT",
        pipeline_name="my_pipeline",
        step_key="solid2",
        solid_handle=NodeHandle("solid2", None),
        step_kind_value="COMPUTE",
        logging_tags={},
        event_specific_data=StepOutputData(
            step_output_handle=StepOutputHandle("solid2", "result")),
        message=
        'Yielded output "result" of type "Any" for step "solid2". (Type check passed).',
        pid=54348,
    )

    logging_metadata = DagsterLoggingMetadata(
        run_id="f79a8a93-27f1-41b5-b465-b35d0809b26d",
        pipeline_name="my_pipeline")
    dagster_message_props = DagsterMessageProps(
        orig_message=step_output_event.message,
        dagster_event=step_output_event,
    )

    assert (
        construct_log_string(logging_metadata=logging_metadata,
                             message_props=dagster_message_props) ==
        'my_pipeline - f79a8a93-27f1-41b5-b465-b35d0809b26d - 54348 - STEP_OUTPUT - Yielded output "result" of type "Any" for step "solid2". (Type check passed).'
    )
Пример #2
0
def test_construct_log_string_for_log():
    logging_metadata = DagsterLoggingMetadata(
        run_id="f79a8a93-27f1-41b5-b465-b35d0809b26d",
        pipeline_name="my_pipeline")
    dagster_message_props = DagsterMessageProps(orig_message="hear my tale")
    assert (construct_log_string(
        logging_metadata, dagster_message_props
    ) == "my_pipeline - f79a8a93-27f1-41b5-b465-b35d0809b26d - hear my tale")
Пример #3
0
def test_user_code_error_boundary_python_capture(use_handler):
    class TestHandler(logging.Handler):
        def __init__(self):
            self.captured = []
            super().__init__()

        def emit(self, record):
            self.captured.append(record)

    capture_handler = TestHandler()
    user_logger = logging.getLogger("user_logger")
    user_logger.addHandler(capture_handler)

    test_extra = {"foo": 1, "bar": {2: 3, "baz": 4}}

    with user_code_error_boundary(
            DagsterUserCodeExecutionError,
            lambda: "Some Error Message",
            log_manager=DagsterLogManager(
                dagster_handler=DagsterLogHandler(
                    logging_metadata=DagsterLoggingMetadata(
                        run_id="123456",
                        pipeline_name="pipeline",
                        step_key="some_step"),
                    loggers=[user_logger] if not use_handler else [],
                    handlers=[capture_handler] if use_handler else [],
                ),
                managed_loggers=[logging.getLogger("python_log")],
            ),
    ):
        python_log = logging.getLogger("python_log")
        python_log.setLevel(logging.INFO)

        python_log.debug("debug")
        python_log.critical("critical msg", extra=test_extra)

    assert len(capture_handler.captured) == 1
    captured_record = capture_handler.captured[0]

    assert captured_record.name == "python_log" if use_handler else "user_logger"
    assert captured_record.msg == "pipeline - 123456 - some_step - critical msg"
    assert captured_record.levelno == logging.CRITICAL
    assert captured_record.dagster_meta["orig_message"] == "critical msg"

    for k, v in test_extra.items():
        assert getattr(captured_record, k) == v
Пример #4
0
def make_log_string(error, error_source=None):
    step_failure_event = DagsterEvent(
        event_type_value="STEP_FAILURE",
        pipeline_name="my_pipeline",
        step_key="solid2",
        solid_handle=NodeHandle("solid2", None),
        step_kind_value="COMPUTE",
        logging_tags={},
        event_specific_data=StepFailureData(error=error,
                                            user_failure_data=None,
                                            error_source=error_source),
        message='Execution of step "solid2" failed.',
        pid=54348,
    )

    logging_metadata = DagsterLoggingMetadata(
        run_id="f79a8a93-27f1-41b5-b465-b35d0809b26d",
        pipeline_name="my_pipeline")
    dagster_message_props = DagsterMessageProps(
        orig_message=step_failure_event.message,
        dagster_event=step_failure_event,
    )
    return construct_log_string(logging_metadata, dagster_message_props)