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")
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.")
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
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.')
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
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)
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)
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'))
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
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)
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
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))
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