def test_command_line_manually_unhealthy(mock_subprocess, mock_version,
                                         mock_geteuid, aggregator):
    """
    Test the varnishadm output for version >= 4.x with manually set health
    """
    mock_version.return_value = LooseVersion('4.0.0'), 'xml'
    mock_geteuid.return_value = 0

    check = Varnish(common.CHECK_NAME, {}, {})

    config = common.get_config_by_version()
    config['varnishadm'] = common.VARNISHADM_PATH
    config['secretfile'] = common.SECRETFILE_PATH

    check.check(config)
    args, _ = mock_subprocess.call_args
    assert args[0] == [
        common.VARNISHADM_PATH, '-S', common.SECRETFILE_PATH, 'debug.health'
    ]
    aggregator.assert_service_check("varnish.backend_healthy",
                                    status=Varnish.CRITICAL,
                                    tags=['backend:default', 'cluster:webs'],
                                    count=1)

    mock_version.return_value = LooseVersion('4.1.0'), 'xml'
    mock_geteuid.return_value = 1

    check.check(config)
    args, _ = mock_subprocess.call_args
    assert args[0] == [
        'sudo', common.VARNISHADM_PATH, '-T', common.DAEMON_ADDRESS, '-S',
        common.SECRETFILE_PATH, 'backend.list', '-p'
    ]
def test_command_line_post_varnish5(mock_subprocess, mock_version,
                                    mock_geteuid, aggregator):
    """
    Test the Varnishadm output for version >= 5.x
    """
    mock_version.return_value = LooseVersion('5.0.0'), 'json'
    mock_geteuid.return_value = 0

    check = Varnish(common.CHECK_NAME, {}, {})

    config = common.get_config_by_version()
    config['varnishadm'] = common.VARNISHADM_PATH
    config['secretfile'] = common.SECRETFILE_PATH

    check.check(config)
    args, _ = mock_subprocess.call_args
    assert args[0] == [
        common.VARNISHADM_PATH, '-T', common.DAEMON_ADDRESS, '-S',
        common.SECRETFILE_PATH, 'backend.list', '-p'
    ]
    aggregator.assert_service_check("varnish.backend_healthy",
                                    status=Varnish.OK,
                                    tags=['backend:backend2', 'cluster:webs'],
                                    count=1)

    mock_version.return_value = LooseVersion('5.0.0'), 'json'
    mock_geteuid.return_value = 1

    check.check(config)
    args, _ = mock_subprocess.call_args
    assert args[0] == [
        'sudo', common.VARNISHADM_PATH, '-T', common.DAEMON_ADDRESS, '-S',
        common.SECRETFILE_PATH, 'backend.list', '-p'
    ]
def test_check(aggregator):
    check = Varnish(common.CHECK_NAME, {}, {})
    config = common.get_config_by_version()

    check.check(config)
    for mname in common.COMMON_METRICS:
        aggregator.assert_metric(mname, count=1, tags=['cluster:webs', 'varnish_name:default'])
def test_exclusion_filter(aggregator):
    check = Varnish(common.CHECK_NAME, {}, {})
    config = common.get_config_by_version()
    config['metrics_filter'] = ['^SMA.Transient.c_req']

    check.check(config)
    for mname in common.COMMON_METRICS:
        if 'SMA.Transient.c_req' in mname:
            aggregator.assert_metric(mname, count=0, tags=['cluster:webs', 'varnish_name:default'])
        elif 'varnish.uptime' not in mname:
            aggregator.assert_metric(mname, count=1, tags=['cluster:webs', 'varnish_name:default'])
Beispiel #5
0
def test_inclusion_filter(aggregator, spin_up_varnish):
    check = Varnish(common.CHECK_NAME, {}, {})
    config = common.get_config_by_version()
    config['metrics_filter'] = ['SMA.*']

    check.check(config)
    for mname in common.COMMON_METRICS:
        if 'SMA.' in mname:
            aggregator.assert_metric(
                mname, count=1, tags=['cluster:webs', 'varnish_name:default'])
        else:
            aggregator.assert_metric(
                mname, count=0, tags=['cluster:webs', 'varnish_name:default'])
def test_version_metadata(aggregator, instance, datadog_agent):
    check = Varnish(common.CHECK_NAME, {}, [instance])
    check.check_id = 'test:123'
    check.check(instance)

    raw_version = common.VARNISH_VERSION.replace('_', '.')
    major, minor, patch = raw_version.split('.')
    version_metadata = {
        'version.scheme': 'semver',
        'version.major': major,
        'version.minor': minor,
        'version.patch': patch,
        'version.raw': raw_version,
    }

    datadog_agent.assert_metadata('test:123', version_metadata)
Beispiel #7
0
def test_command_line_post_varnish6_5(mock_subprocess, mock_version,
                                      mock_geteuid, aggregator, instance):
    """
    Test the Varnishadm output for version >= 6.5
    """
    mock_version.return_value = LooseVersion('6.5.0'), 'json'
    mock_geteuid.return_value = 0

    instance['varnishadm'] = common.VARNISHADM_PATH
    instance['secretfile'] = common.SECRETFILE_PATH
    check = Varnish(common.CHECK_NAME, {}, [instance])

    check.check(instance)
    args, _ = mock_subprocess.call_args
    assert args[0] == [
        common.VARNISHADM_PATH,
        '-T',
        common.DAEMON_ADDRESS,
        '-S',
        common.SECRETFILE_PATH,
        'backend.list',
        '-p',
    ]
    aggregator.assert_service_check(
        "varnish.backend_healthy",
        status=check.OK,
        tags=['backend:backend2', 'varnish_cluster:webs'],
        count=1)

    mock_version.return_value = LooseVersion('6.5.0'), 'json'
    mock_geteuid.return_value = 1

    check.check(instance)
    args, _ = mock_subprocess.call_args
    assert args[0] == [
        'sudo',
        common.VARNISHADM_PATH,
        '-T',
        common.DAEMON_ADDRESS,
        '-S',
        common.SECRETFILE_PATH,
        'backend.list',
        '-p',
    ]
Beispiel #8
0
def test_command_line(mock_subprocess, mock_version, mock_geteuid, aggregator,
                      instance):
    """
    Test the varnishadm output for Varnish < 4.x
    """
    mock_version.return_value = LooseVersion("3.9.0"), 'xml'
    mock_geteuid.return_value = 0

    instance['varnishadm'] = common.VARNISHADM_PATH
    instance['secretfile'] = common.SECRETFILE_PATH
    check = Varnish(common.CHECK_NAME, {}, [instance])

    check.check(instance)
    args, _ = mock_subprocess.call_args
    assert args[0] == [
        common.VARNISHADM_PATH, '-S', common.SECRETFILE_PATH, 'debug.health'
    ]
    aggregator.assert_service_check(
        "varnish.backend_healthy",
        status=check.OK,
        tags=['backend:default', 'varnish_cluster:webs'],
        count=1)