Example #1
0
    def test_unknown(self):
        instance = INSTANCES['main']
        c = Envoy(self.CHECK_NAME, None, {}, [instance])

        with mock.patch('requests.get',
                        return_value=response('unknown_metrics')):
            c.check(instance)

        assert sum(c.unknown_metrics.values()) == 5
    def test_success_fixture_whitelist_blacklist(self, aggregator):
        instance = INSTANCES['whitelist_blacklist']
        c = Envoy(self.CHECK_NAME, None, {}, [instance])

        with mock.patch('requests.get', return_value=response('multiple_services')):
            c.check(instance)

        for metric in aggregator.metric_names:
            assert metric.startswith("envoy.cluster.") and not metric.startswith("envoy.cluster.out")
Example #3
0
def test_success_fixture_inclued_and_excluded_metrics(aggregator):
    instance = INSTANCES['included_excluded_metrics']
    c = Envoy(CHECK_NAME, {}, [instance])

    with mock.patch('requests.get', return_value=response('multiple_services')):
        c.check(instance)

    for metric in aggregator.metric_names:
        assert metric.startswith("envoy.cluster.") and not metric.startswith("envoy.cluster.out.")
Example #4
0
def test_service_check(aggregator):
    instance = INSTANCES['main']
    c = Envoy(CHECK_NAME, {}, [instance])

    with mock.patch('requests.get',
                    return_value=response('multiple_services')):
        c.check(instance)

    assert aggregator.service_checks(
        Envoy.SERVICE_CHECK_NAME)[0].status == Envoy.OK
Example #5
0
def test_success_fixture_blacklist(aggregator):
    instance = INSTANCES['blacklist']
    c = Envoy(CHECK_NAME, {}, [instance])

    with mock.patch('requests.get',
                    return_value=response('multiple_services')):
        c.check(instance)

    for metric in aggregator.metric_names:
        assert not metric.startswith('envoy.cluster.')
Example #6
0
def test_success(aggregator):
    instance = INSTANCES['main']
    c = Envoy(CHECK_NAME, {}, [instance])
    c.check(instance)

    metrics_collected = 0
    for metric in METRICS:
        metrics_collected += len(aggregator.metrics(METRIC_PREFIX + metric))

    assert metrics_collected >= 250
Example #7
0
def test_fixture(benchmark):
    instance = INSTANCES['main']
    c = Envoy('envoy', None, {}, [instance])

    with mock.patch('requests.get',
                    return_value=response('multiple_services')):
        # Run once to get logging of unknown metrics out of the way.
        c.check(instance)

        benchmark(c.check, instance)
Example #8
0
def test_fixture(benchmark, fixture_path, mock_http_response):
    instance = INSTANCES['main']
    c = Envoy('envoy', {}, [instance])

    mock_http_response(file_path=fixture_path('multiple_services'))

    # Run once to get logging of unknown metrics out of the way.
    c.check(instance)

    benchmark(c.check, instance)
Example #9
0
    def test_success_fixture_whitelist_blacklist(self, aggregator):
        instance = INSTANCES['whitelist_blacklist']
        c = Envoy(self.CHECK_NAME, None, {}, [instance])

        with mock.patch('requests.get',
                        return_value=response('multiple_services')):
            c.check(instance)

        for metric in aggregator.metric_names:
            metric_stubs = aggregator.metrics(metric)
            for metric_stub in metric_stubs:
                for tag in metric_stub.tags:
                    assert tag.split(':', 1)[1].startswith(('in', 'out'))
Example #10
0
    def test_success_fixture(self, aggregator):
        instance = INSTANCES['main']
        c = Envoy(self.CHECK_NAME, {}, [instance])

        with mock.patch('requests.get', return_value=response('multiple_services')):
            c.check(instance)

        metrics_collected = 0
        for metric in METRICS.keys():
            metrics_collected += len(aggregator.metrics(METRIC_PREFIX + metric))

        num_metrics = len(response('multiple_services').content.decode().splitlines())
        num_metrics -= sum(c.unknown_metrics.values()) + sum(c.unknown_tags.values())
        assert 4186 <= metrics_collected == num_metrics
Example #11
0
def test_config(test_case, extra_config, expected_http_kwargs):
    instance = deepcopy(INSTANCES['main'])
    instance.update(extra_config)
    check = Envoy(CHECK_NAME, {}, instances=[instance])

    with mock.patch('datadog_checks.base.utils.http.requests') as r:
        r.get.return_value = mock.MagicMock(status_code=200)

        check.check(instance)

        http_wargs = dict(
            auth=mock.ANY, cert=mock.ANY, headers=mock.ANY, proxies=mock.ANY, timeout=mock.ANY, verify=mock.ANY
        )
        http_wargs.update(expected_http_kwargs)
        r.get.assert_called_with('http://{}:8001/stats'.format(HOST), **http_wargs)
Example #12
0
    def test_success(self, aggregator):
        instance = self.INSTANCES['main']
        c = Envoy(self.CHECK_NAME, None, {}, [instance])

        with mock.patch('requests.get',
                        return_value=response('multiple_services')):
            c.check(instance)

        metrics_collected = 0
        for metric in METRICS.keys():
            metrics_collected += len(aggregator.metrics(METRIC_PREFIX +
                                                        metric))

        # The 244 is how many metrics are collected from our
        # particular example fixture in the first release.
        assert metrics_collected >= 244
Example #13
0
def test_metadata_integration(aggregator, datadog_agent):
    instance = INSTANCES['main']
    c = Envoy(CHECK_NAME, {}, [instance])
    c.check_id = 'test:123'
    c.check(instance)

    major, minor, patch = ENVOY_VERSION.split('.')
    version_metadata = {
        'version.scheme': 'semver',
        'version.major': major,
        'version.minor': minor,
        'version.patch': patch,
        'version.raw': ENVOY_VERSION,
    }

    datadog_agent.assert_metadata('test:123', version_metadata)
    datadog_agent.assert_metadata_count(len(version_metadata))
Example #14
0
def test_success(aggregator):
    instance = INSTANCES['main']
    c = Envoy(CHECK_NAME, {}, [instance])
    c.check(instance)

    metrics_collected = 0
    for metric in METRICS:
        collected_metrics = aggregator.metrics(METRIC_PREFIX + metric)
        if collected_metrics:
            expected_tags = [t for t in METRICS[metric]['tags'] if t]
            for tag_set in expected_tags:
                assert all(
                    all(any(tag in mt for mt in m.tags) for tag in tag_set) for m in collected_metrics if m.tags
                ), ('tags ' + str(expected_tags) + ' not found in ' + metric)
        metrics_collected += len(collected_metrics)

    assert metrics_collected >= 445