Beispiel #1
0
def test_service_check(bad_instance, aggregator):
    check = MesosSlave('mesos_slave', {}, [bad_instance])

    with pytest.raises(Exception):
        check.check(bad_instance)

    aggregator.assert_service_check('mesos_slave.can_connect', count=1, status=AgentCheck.CRITICAL)
Beispiel #2
0
def mock(init_config, instance):
    check = MesosSlave(common.CHECK_NAME, init_config, [instance])

    check._get_stats_metrics = lambda x, y: json.loads(read_fixture('stats.json'))
    check._get_state_metrics = lambda x, y, z='': json.loads(read_fixture('state' + z + '.json'))

    return check
Beispiel #3
0
def mock(init_config, instance):
    check = MesosSlave(common.CHECK_NAME, init_config, [instance])

    check._get_stats = lambda v, x: json.loads(read_fixture('stats.json'))
    check._get_state = lambda v, x: json.loads(read_fixture('state.json'))

    return check
Beispiel #4
0
def check():
    check = MesosSlave(CHECK_NAME, {}, {})
    check._get_stats = lambda v, x, y, z: json.loads(read_fixture('stats.json')
                                                     )
    check._get_state = lambda v, x, y, z: json.loads(read_fixture('state.json')
                                                     )

    return check
Beispiel #5
0
def assert_metrics_covered(aggregator):
    check = MesosSlave(CHECK_NAME, {}, [{}])
    metrics = {}
    for d in (
            check.SLAVE_TASKS_METRICS,
            check.SYSTEM_METRICS,
            check.SLAVE_RESOURCE_METRICS,
            check.SLAVE_EXECUTORS_METRICS,
            check.STATS_METRICS,
    ):
        metrics.update(d)

    expected_tags = [
        "instance:mytag1", "url:{}/metrics/snapshot".format(URL),
        "mesos_node:slave"
    ]

    for _, v in iteritems(metrics):
        aggregator.assert_metric(v[0])
        for tag in expected_tags:
            aggregator.assert_metric_has_tag(v[0], tag)
        aggregator.assert_metric_has_tag_prefix(v[0], "mesos_pid")

    aggregator.assert_all_metrics_covered()
    # We should submit 2 service checks per check run because 2 endpoints were tried
    aggregator.assert_service_check('mesos_slave.can_connect',
                                    status=AgentCheck.OK,
                                    count=4)
def test_can_connect_service_check_stats(instance, aggregator, test_case_name,
                                         request_mock_effects, expected_tags,
                                         expect_exception, expected_status):
    check = MesosSlave('mesos_slave', {}, [instance])
    with mock.patch('datadog_checks.base.utils.http.requests') as r:
        r.get.side_effect = request_mock_effects
        try:
            check._process_stats_info('http://hello.com', instance['tags'])
            assert expect_exception is False
        except CheckException:
            assert expect_exception is True

    aggregator.assert_service_check('mesos_slave.can_connect',
                                    count=1,
                                    status=expected_status,
                                    tags=expected_tags)
def test_integration(instance, aggregator):
    check = MesosSlave('mesos_slave', {}, [instance])
    check.check(instance)
    metrics = {}
    for d in (
        check.SLAVE_TASKS_METRICS,
        check.SYSTEM_METRICS,
        check.SLAVE_RESOURCE_METRICS,
        check.SLAVE_EXECUTORS_METRICS,
        check.STATS_METRICS,
    ):
        metrics.update(d)

    for _, v in iteritems(metrics):
        aggregator.assert_metric(v[0])

    aggregator.assert_all_metrics_covered()

    aggregator.assert_service_check('mesos_slave.can_connect', count=1, status=check.OK)
def test_can_connect_service_check(instance, aggregator, test_case_name,
                                   request_mock_side_effects, expected_status,
                                   expected_tags, expect_exception):
    check = MesosSlave('mesos_slave', {}, [instance])

    with mock.patch('datadog_checks.base.utils.http.requests') as r:
        r.get.side_effect = request_mock_side_effects

        try:
            check._get_state('http://hello.com', ['my:tag'])
            exception_raised = False
        except CheckException:
            exception_raised = True

        assert expect_exception == exception_raised

    aggregator.assert_service_check('mesos_slave.can_connect',
                                    count=1,
                                    status=expected_status,
                                    tags=expected_tags)
Beispiel #9
0
def test_can_connect_service_with_instance_cluster_name(instance, aggregator):
    instance['cluster_name'] = 'test-cluster'
    expected_tags = ['url:http://hello.com/state'
                     ] + cluster_name_tag + additional_tags
    expected_status = AgentCheck.OK
    check = MesosSlave('mesos_slave', {}, [instance])
    with mock.patch('datadog_checks.base.utils.http.requests') as r:
        r.get.side_effect = [mock.MagicMock(status_code=200, content='{}')]
        try:
            check._process_state_info('http://hello.com', instance['tasks'],
                                      5050, instance['tags'])
            assert not False
        except Exception:
            if not False:
                raise

    aggregator.assert_service_check('mesos_slave.can_connect',
                                    count=1,
                                    status=expected_status,
                                    tags=expected_tags)
Beispiel #10
0
def assert_metrics_covered(aggregator):
    check = MesosSlave(CHECK_NAME, {}, [{}])
    metrics = {}
    for d in (
        check.SLAVE_TASKS_METRICS,
        check.SYSTEM_METRICS,
        check.SLAVE_RESOURCE_METRICS,
        check.SLAVE_EXECUTORS_METRICS,
        check.STATS_METRICS,
    ):
        metrics.update(d)

    for _, v in iteritems(metrics):
        aggregator.assert_metric(v[0])

    aggregator.assert_all_metrics_covered()

    aggregator.assert_service_check('mesos_slave.can_connect', status=AgentCheck.OK, count=2)
Beispiel #11
0
def test_check_integration(instance, aggregator):
    check = MesosSlave('mesos_slave', {}, [instance])
    check.check(instance)
    check.check(instance)
    assert_metrics_covered(aggregator)
Beispiel #12
0
def check():
    return MesosSlave(common.CHECK_NAME, {}, {})