Exemple #1
0
def test_new_istio(aggregator, new_mesh_mixture_fixture):
    check = Istio('istio', {}, {}, [NEW_MOCK_INSTANCE])
    check.check(NEW_MOCK_INSTANCE)

    for metric in MESH_METRICS + NEW_MIXER_METRICS + GALLEY_METRICS + PILOT_METRICS:
        aggregator.assert_metric(metric)

    aggregator.assert_all_metrics_covered()
Exemple #2
0
def test_pilot_only_istio(aggregator, new_pilot_fixture):
    check = Istio(common.CHECK_NAME, {}, [common.NEW_MOCK_PILOT_ONLY_INSTANCE])
    check.check(common.NEW_MOCK_PILOT_ONLY_INSTANCE)

    for metric in common.PILOT_METRICS:
        aggregator.assert_metric(metric)

    aggregator.assert_all_metrics_covered()
Exemple #3
0
def test_pilot_only_istio(aggregator, new_pilot_fixture):
    check = Istio('istio', {}, {}, [NEW_MOCK_PILOT_ONLY_INSTANCE])
    check.check(NEW_MOCK_PILOT_ONLY_INSTANCE)

    for metric in PILOT_METRICS:
        aggregator.assert_metric(metric)

    aggregator.assert_all_metrics_covered()
Exemple #4
0
def test_galley_only_istio(aggregator, new_galley_fixture):
    check = Istio('istio', {}, {}, [NEW_MOCK_GALLEY_ONLY_INSTANCE])
    check.check(NEW_MOCK_GALLEY_ONLY_INSTANCE)

    for metric in GALLEY_METRICS:
        aggregator.assert_metric(metric)

    aggregator.assert_all_metrics_covered()
Exemple #5
0
def test_new_istio(aggregator, new_mesh_mixture_fixture):
    check = Istio(common.CHECK_NAME, {}, [common.NEW_MOCK_INSTANCE])
    check.check(common.NEW_MOCK_INSTANCE)

    for metric in (common.MESH_METRICS + common.NEW_MIXER_METRICS +
                   common.GALLEY_METRICS + common.PILOT_METRICS +
                   common.CITADEL_METRICS):
        aggregator.assert_metric(metric)

    aggregator.assert_all_metrics_covered()
Exemple #6
0
def test_galley_only_istio(aggregator, new_galley_fixture):
    check = Istio(common.CHECK_NAME, {}, [common.NEW_MOCK_GALLEY_ONLY_INSTANCE])
    check.check(common.NEW_MOCK_GALLEY_ONLY_INSTANCE)

    for metric in common.GALLEY_METRICS:
        aggregator.assert_metric(metric)

    _assert_tags_excluded(aggregator, [])

    aggregator.assert_all_metrics_covered()
def test_legacy_pilot_only(aggregator, new_pilot_fixture):
    check = Istio(common.CHECK_NAME, {}, [common.NEW_MOCK_PILOT_ONLY_INSTANCE])
    check.check(common.NEW_MOCK_PILOT_ONLY_INSTANCE)

    for metric in common.PILOT_METRICS:
        _assert_metric(aggregator, metric)

    _assert_tags_excluded(aggregator, [])

    aggregator.assert_all_metrics_covered()
def test_istiod(aggregator, istiod_mixture_fixture):
    """
    Test the istiod deployment endpoint for v1.5+ check
    """
    check = Istio('istio', {}, [common.MOCK_ISTIOD_INSTANCE])
    check.check(common.MOCK_ISTIOD_INSTANCE)

    for metric in common.ISTIOD_METRICS:
        aggregator.assert_metric(metric)

    aggregator.assert_all_metrics_covered()
Exemple #9
0
def test_istio(aggregator, mesh_mixture_fixture):
    """
    Test the full check
    """
    check = Istio('istio', {}, {}, [MOCK_INSTANCE])
    check.check(MOCK_INSTANCE)

    for metric in MESH_METRICS + MIXER_METRICS:
        aggregator.assert_metric(metric)

    aggregator.assert_all_metrics_covered()
Exemple #10
0
def test_istio(aggregator, mesh_mixture_fixture):
    """
    Test the full check
    """
    check = Istio(common.CHECK_NAME, {}, [common.MOCK_INSTANCE])
    check.check(common.MOCK_INSTANCE)

    for metric in common.MESH_METRICS + common.MIXER_METRICS:
        aggregator.assert_metric(metric)

    aggregator.assert_all_metrics_covered()
def test_legacy_mesh(aggregator, mesh_fixture):
    """
    Test the mesh endpoint
    """
    check = Istio(common.CHECK_NAME, {}, [common.MOCK_MESH_INSTANCE])
    check.check(common.MOCK_MESH_INSTANCE)

    for metric in common.MESH_METRICS + common.MESH_METRICS_1_4:
        _assert_metric(aggregator, metric)
    _assert_tags_excluded(aggregator, [])

    aggregator.assert_all_metrics_covered()
Exemple #12
0
def test_istio(aggregator, mesh_mixture_fixture):
    """
    Test the full check
    """
    c = Istio('istio', None, {}, [MOCK_INSTANCE])
    c.check(MOCK_INSTANCE)

    metrics = MESH_METRICS + MIXER_METRICS
    for metric in metrics:
        aggregator.assert_metric(metric)

    assert aggregator.metrics_asserted_pct == 100.0
def test_legacy_mixer(aggregator, mixture_fixture):
    """
    Test the mixer check
    """
    check = Istio(common.CHECK_NAME, {}, [common.MOCK_MIXTURE_INSTANCE])
    check.check(common.MOCK_MIXTURE_INSTANCE)

    for metric in common.MIXER_METRICS:
        _assert_metric(aggregator, metric)
    _assert_tags_excluded(aggregator, [])

    aggregator.assert_all_metrics_covered()
def test_legacy_all_endpoints(aggregator, new_mesh_mixture_fixture):
    # Enabling `send_monotonic_with_gauge` exceeds the default 2000 metric limit
    # Overriding to collect all expected metrics
    check = Istio(common.CHECK_NAME, {}, [common.NEW_MOCK_INSTANCE])
    check.check(common.NEW_MOCK_INSTANCE)

    for metric in (common.MESH_METRICS + common.MESH_METRICS_1_4 +
                   common.NEW_MIXER_METRICS + common.GALLEY_METRICS +
                   common.PILOT_METRICS + common.CITADEL_METRICS):
        _assert_metric(aggregator, metric)

    _assert_tags_excluded(aggregator, [])

    aggregator.assert_all_metrics_covered()
def test_istio_proxy_mesh(aggregator, istio_proxy_mesh_fixture):
    """
    Test proxy mesh check
    """
    check = Istio(common.CHECK_NAME, {},
                  [common.MOCK_ISTIO_PROXY_MESH_INSTANCE])
    check.check(common.MOCK_ISTIO_PROXY_MESH_INSTANCE)

    for metric in common.MESH_METRICS + common.MESH_MERICS_1_5:
        aggregator.assert_metric(metric)

    _assert_tags_excluded(aggregator, [])

    aggregator.assert_all_metrics_covered()
def test_istio_proxy_mesh_exclude(aggregator, istio_proxy_mesh_fixture):
    """
    Test proxy mesh check
    """
    exclude_tags = ['destination_app', 'destination_principal']
    instance = common.MOCK_ISTIO_PROXY_MESH_INSTANCE
    instance['exclude_labels'] = exclude_tags

    check = Istio(common.CHECK_NAME, {}, [instance])
    check.check(instance)

    for metric in common.MESH_METRICS + common.MESH_MERICS_1_5:
        aggregator.assert_metric(metric)

    _assert_tags_excluded(aggregator, exclude_tags)

    aggregator.assert_all_metrics_covered()
def test_version_metadata(datadog_agent, istiod_mixture_fixture):
    check = Istio(common.CHECK_NAME, {}, [common.MOCK_ISTIOD_INSTANCE])
    check.check_id = 'test:123'
    check.check(common.MOCK_ISTIOD_INSTANCE)

    # Use version mocked from istiod 1.5 fixture
    MOCK_VERSION = '1.5.0'

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

    datadog_agent.assert_metadata('test:123', version_metadata)
Exemple #18
0
def test_scraper_creator():
    check = Istio(common.CHECK_NAME, {}, [common.MOCK_INSTANCE])
    istio_mesh_config = check.config_map.get(common.MOCK_INSTANCE['istio_mesh_endpoint'])
    mixer_scraper_dict = check.config_map.get(common.MOCK_INSTANCE['mixer_endpoint'])

    assert istio_mesh_config['namespace'] == MESH_NAMESPACE
    assert mixer_scraper_dict['namespace'] == MIXER_NAMESPACE

    assert istio_mesh_config['metrics_mapper'] == common.MESH_METRICS_MAPPER
    assert mixer_scraper_dict['metrics_mapper'] == common.MESH_MIXER_MAPPER
Exemple #19
0
def test_scraper_creator():
    c = Istio('istio', None, {}, [MOCK_INSTANCE])
    istio_mesh_scraper = c._get_istio_mesh_scraper(MOCK_INSTANCE)
    mixer_scraper = c._get_mixer_scraper(MOCK_INSTANCE)
    istio_mesh_scraper_dict = c._scrapers.get(
        MOCK_INSTANCE['istio_mesh_endpoint'])
    mixer_scraper_dict = c._scrapers.get(MOCK_INSTANCE['mixer_endpoint'])

    assert istio_mesh_scraper == istio_mesh_scraper_dict
    assert mixer_scraper == mixer_scraper_dict

    assert isinstance(istio_mesh_scraper, Scraper)
    assert isinstance(mixer_scraper, Scraper)

    assert istio_mesh_scraper.NAMESPACE == 'istio.mesh'
    assert mixer_scraper.NAMESPACE == 'istio.mixer'

    assert istio_mesh_scraper.metrics_mapper == MESH_METRICS_MAPPER
    assert mixer_scraper.metrics_mapper == MESH_MIXER_MAPPER
def test_version_metadata(datadog_agent, dd_run_check, mock_http_response):
    """
    Test metadata version collection with V2 implementation
    """
    mock_http_response(file_path=get_fixture_path('1.5', 'istiod.txt'))
    check = Istio(common.CHECK_NAME, {}, [common.MOCK_LEGACY_ISTIOD_INSTANCE])
    check.check_id = 'test:123'
    dd_run_check(check)
    # Use version mocked from istiod 1.5 fixture
    MOCK_VERSION = '1.5.0'

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

    datadog_agent.assert_metadata('test:123', version_metadata)
Exemple #21
0
def test_legacy_version_metadata(datadog_agent, dd_run_check):
    check = Istio(common.CHECK_NAME, {}, [common.MOCK_LEGACY_ISTIOD_INSTANCE])
    check.check_id = 'test:123'

    with requests_mock.Mocker() as metric_request:
        metric_request.get('http://localhost:8080/metrics',
                           text=get_response('1.5', 'istiod.txt'))
        dd_run_check(check)

    # Use version mocked from istiod 1.5 fixture
    MOCK_VERSION = '1.5.0'

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

    datadog_agent.assert_metadata('test:123', version_metadata)
def test_istio_agent(aggregator, dd_run_check, mock_http_response):
    """
    Test the istiod deployment endpoint for V2 implementation
    """
    mock_http_response(file_path=get_fixture_path('1.5', 'istio-merged.txt'))
    check = Istio('istio', {}, [common.MOCK_V2_MESH_INSTANCE])
    dd_run_check(check)

    for metric in common.ISTIO_AGENT_METRICS:
        aggregator.assert_metric(metric)

    aggregator.assert_metrics_using_metadata(get_metadata_metrics(),
                                             check_submission_type=True)
def test_proxy_mesh(aggregator, dd_run_check, mock_http_response):
    """
    Test proxy mesh check for V2 implementation
    """
    mock_http_response(file_path=get_fixture_path('1.5', 'istio-proxy.txt'))

    check = Istio(common.CHECK_NAME, {}, [common.MOCK_V2_MESH_INSTANCE])
    dd_run_check(check)
    for metric in common.V2_MESH_METRICS:
        aggregator.assert_metric(metric)

    aggregator.assert_metrics_using_metadata(get_metadata_metrics(),
                                             check_submission_type=True)
    aggregator.assert_all_metrics_covered()
Exemple #24
0
def test_legacy_istiod(aggregator, dd_run_check):
    """
    Test the istiod deployment endpoint for v1.5+ check for OpenMetricsV1 implementation
    """
    check = Istio('istio', {}, [common.MOCK_LEGACY_ISTIOD_INSTANCE])
    with requests_mock.Mocker() as metric_request:
        metric_request.get('http://localhost:8080/metrics',
                           text=get_response('1.5', 'istiod.txt'))
        dd_run_check(check)

    for metric in common.ISTIOD_METRICS:
        aggregator.assert_metric(metric)

    aggregator.assert_all_metrics_covered()
Exemple #25
0
def test_legacy_proxy_mesh(aggregator, dd_run_check):
    """
    Test proxy mesh check for OpenMetricsV1 implementation
    """
    check = Istio(common.CHECK_NAME, {}, [common.MOCK_LEGACY_MESH_INSTANCE])

    with requests_mock.Mocker() as metric_request:
        metric_request.get('http://localhost:15090/metrics',
                           text=get_response('1.5', 'istio-proxy.txt'))
        dd_run_check(check)
    for metric in common.LEGACY_MESH_METRICS + common.MESH_MERICS_1_5:
        aggregator.assert_metric(metric)

    _assert_tags_excluded(aggregator, [])

    aggregator.assert_all_metrics_covered()
def test_type_override_proxy_mesh(aggregator, dd_run_check,
                                  mock_http_response):
    """
    Test proxy mesh check for V2 implementation
    """
    mock_http_response(file_path=get_fixture_path('1.5', 'istio-proxy.txt'))

    check = Istio(common.CHECK_NAME, {},
                  [common.MOCK_V2_MESH_OVERRIDE_INSTANCE])
    dd_run_check(check)
    # Type override should match old implementation submission names
    # Does not apply to summary/histogram
    for metric in common.V2_MESH_METRICS + common.V2_MESH_COUNTER_GAUGE:
        aggregator.assert_metric(metric)

    aggregator.assert_metrics_using_metadata(get_metadata_metrics(),
                                             check_submission_type=True)
    aggregator.assert_all_metrics_covered()
def test_proxy_exclude_labels(aggregator, dd_run_check, mock_http_response):
    """
    Test proxy mesh check for V2 implementation
    """
    mock_http_response(file_path=get_fixture_path('1.5', 'istio-proxy.txt'))
    instance = common.MOCK_V2_MESH_INSTANCE
    instance['exclude_labels'] = common.CONFIG_EXCLUDE_LABELS
    check = Istio(common.CHECK_NAME, {}, [instance])
    dd_run_check(check)

    for metric in common.V2_MESH_METRICS:
        aggregator.assert_metric(metric)

    _assert_tags_excluded(aggregator, common.CONFIG_EXCLUDE_LABELS)

    aggregator.assert_metrics_using_metadata(get_metadata_metrics(),
                                             check_submission_type=True)
    aggregator.assert_all_metrics_covered()
Exemple #28
0
def test_process_functions(aggregator, mesh_mixture_fixture):
    """
    Test the process functions, ensure that they process correctly
    """
    c = Istio('istio', None, {}, [MOCK_INSTANCE])
    c._process_istio_mesh(MOCK_INSTANCE)
    c._process_mixer(MOCK_INSTANCE)

    metrics = MESH_METRICS + MIXER_METRICS
    for metric in metrics:
        aggregator.assert_metric(metric)

    assert aggregator.metrics_asserted_pct == 100.0
Exemple #29
0
def test_legacy_proxy_mesh_exclude(aggregator, dd_run_check):
    """
    Test proxy mesh check for OpenMetricsV1 implementation
    """
    exclude_tags = ['destination_app', 'destination_principal']
    instance = common.MOCK_LEGACY_MESH_INSTANCE
    instance['exclude_labels'] = exclude_tags

    check = Istio(common.CHECK_NAME, {}, [instance])

    with requests_mock.Mocker() as metric_request:
        metric_request.get('http://localhost:15090/metrics',
                           text=get_response('1.5', 'istio-proxy.txt'))
        dd_run_check(check)

    for metric in common.LEGACY_MESH_METRICS + common.MESH_MERICS_1_5:
        aggregator.assert_metric(metric)

    _assert_tags_excluded(aggregator, exclude_tags)

    aggregator.assert_all_metrics_covered()
def test_exclude_labels(exclude_labels, expected_exclude_labels):
    instance = copy.deepcopy(common.MOCK_V2_MESH_INSTANCE)
    if exclude_labels is not None:
        instance["exclude_labels"] = exclude_labels
    check = Istio('istio', {}, [instance])
    assert check.instance["exclude_labels"] == expected_exclude_labels