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)
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
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
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
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)
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)
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)
def test_check_integration(instance, aggregator): check = MesosSlave('mesos_slave', {}, [instance]) check.check(instance) check.check(instance) assert_metrics_covered(aggregator)
def check(): return MesosSlave(common.CHECK_NAME, {}, {})