Пример #1
0
 def load_expression_suite(self, suite_to_load, monitor_class=None):
     if monitor_class:
         monitor_class = load_object(monitor_class)
     else:
         monitor_class = ExpressionsMonitor
     monitor = factory.create_monitor_class_from_dict(
         monitor_dict=suite_to_load, monitor_class=monitor_class)
     suite = MonitorSuite(crawler=self.crawler)
     suite.add_monitor(monitor)
     return suite
def test_not_configured_without_threshold_setting_or_method(make_data):
    class TestBaseStatMonitor(BaseStatMonitor):
        stat_name = "test_statistic"
        assert_type = "=="

    data = make_data()
    runner = data.pop("runner")
    data["stats"][TestBaseStatMonitor.stat_name] = 100
    monitor_suite = MonitorSuite(monitors=[TestBaseStatMonitor])

    with pytest.raises(NotConfigured):
        runner.run(monitor_suite, **data)
def test_fail_if_stat_can_not_be_found(make_data):
    class TestBaseStatMonitor(BaseStatMonitor):
        stat_name = "test_statistic"
        threshold_setting = "THRESHOLD_SETTING"
        assert_type = ">="

    data = make_data({"THRESHOLD_SETTING": 100})
    runner = data.pop("runner")
    data["stats"] = {"other_stats": 1}
    monitor_suite = MonitorSuite(monitors=[TestBaseStatMonitor])

    runner.run(monitor_suite, **data)
    assert runner.result.monitor_results[
        0].status == settings.MONITOR.STATUS.FAILURE
def test_base_stat_monitor_raise_not_configured_if_setting_not_provided(
        make_data):
    class TestBaseStatMonitor(BaseStatMonitor):
        stat_name = "test_statistic"
        threshold_setting = "THRESHOLD_SETTING"
        assert_type = "<"

    data = make_data()
    runner = data.pop("runner")
    data["stats"][TestBaseStatMonitor.stat_name] = 100
    monitor_suite = MonitorSuite(monitors=[TestBaseStatMonitor])

    with pytest.raises(NotConfigured):
        runner.run(monitor_suite, **data)
def test_base_stat_monitor_assertion_types(make_data, assertion_type,
                                           stat_value, threshold,
                                           expected_status):
    class TestBaseStatMonitor(BaseStatMonitor):
        stat_name = "test_statistic"
        threshold_setting = "THRESHOLD_SETTING"
        assert_type = assertion_type

    data = make_data({TestBaseStatMonitor.threshold_setting: threshold})
    runner = data.pop("runner")
    data["stats"][TestBaseStatMonitor.stat_name] = stat_value
    monitor_suite = MonitorSuite(monitors=[TestBaseStatMonitor])

    runner.run(monitor_suite, **data)
    assert runner.result.monitor_results[0].status == expected_status
def test_skipped_if_stat_can_not_be_found_but_monitor_configured_to_be_ignore(
    make_data, ):
    class TestBaseStatMonitor(BaseStatMonitor):
        stat_name = "test_statistic"
        threshold_setting = "THRESHOLD_SETTING"
        assert_type = ">="
        fail_if_stat_missing = False

    data = make_data({"THRESHOLD_SETTING": 100})
    runner = data.pop("runner")
    data["stats"] = {"other_stats": 1}
    monitor_suite = MonitorSuite(monitors=[TestBaseStatMonitor])

    runner.run(monitor_suite, **data)
    assert runner.result.monitor_results[
        0].status == settings.MONITOR.STATUS.SKIPPED
def test_base_stat_monitor_using_get_threshold_method(make_data):
    class TestBaseStatMonitor(BaseStatMonitor):
        stat_name = "test_statistic"
        assert_type = "=="

        def get_threshold(self):
            return 100

    data = make_data()
    runner = data.pop("runner")
    data["stats"][TestBaseStatMonitor.stat_name] = 100
    monitor_suite = MonitorSuite(monitors=[TestBaseStatMonitor])

    runner.run(monitor_suite, **data)
    assert runner.result.monitor_results[
        0].status == settings.MONITOR.STATUS.SUCCESS
def test_failure_message_describe_values_expected(make_data):
    class TestBaseStatMonitor(BaseStatMonitor):
        stat_name = "test_statistic"
        threshold_setting = "THRESHOLD_SETTING"
        assert_type = "=="

    expected_threshold = 100
    obtained_value = 90
    data = make_data(
        {TestBaseStatMonitor.threshold_setting: expected_threshold})

    runner = data.pop("runner")
    data["stats"][TestBaseStatMonitor.stat_name] = obtained_value
    monitor_suite = MonitorSuite(monitors=[TestBaseStatMonitor])

    runner.run(monitor_suite, **data)
    assert (
        runner.result.monitor_results[0].reason ==
        f"Expecting '{TestBaseStatMonitor.stat_name}' to be '{TestBaseStatMonitor.assert_type}' "
        f"to '{expected_threshold}'. Current value: '{obtained_value}'", )
Пример #9
0
def item_count_suite():
    return MonitorSuite(monitors=[ItemCountMonitor])
Пример #10
0
def monitor_suite():
    return MonitorSuite(monitors=[PeriodicExecutionTimeMonitor])
def new_suite():
    return MonitorSuite(monitors=[RetryCountMonitor])
Пример #12
0
def warning_count_suite():
    return MonitorSuite(monitors=[WarningCountMonitor])
def downloader_exception_suite():
    return MonitorSuite(monitors=[DownloaderExceptionMonitor])
def item_validation_suite():
    return MonitorSuite(monitors=[ItemValidationMonitor])
def error_count_suite():
    return MonitorSuite(monitors=[ErrorCountMonitor])
def field_coverage_monitor_suite():
    return MonitorSuite(monitors=[FieldCoverageMonitor])
Пример #17
0
def new_suite(monitors):
    return MonitorSuite(monitors=monitors)
def new_suite():
    return MonitorSuite(monitors=[TotalRequestsMonitor])
Пример #19
0
def new_suite():
    return MonitorSuite(monitors=[FinishReasonMonitor])
def critical_count_suite():
    return MonitorSuite(monitors=[CriticalCountMonitor])
Пример #21
0
def new_suite():
    return MonitorSuite(monitors=[UnwantedHTTPCodesMonitor])