def test_metadata(datadog_agent):
    instance = INSTANCES['main']
    check = Envoy(CHECK_NAME, {}, [instance])
    check.check_id = 'test:123'

    with mock.patch('requests.get', side_effect=requests.exceptions.Timeout()):
        check._collect_metadata(instance['stats_url'])
        datadog_agent.assert_metadata_count(0)
    with mock.patch('requests.get',
                    side_effect=requests.exceptions.RequestException):
        check._collect_metadata(instance['stats_url'])
        datadog_agent.assert_metadata_count(0)

    with mock.patch('requests.get',
                    return_value=response('multiple_services')):
        check._collect_metadata(instance['stats_url'])

        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_metadata(datadog_agent):
    instance = INSTANCES['main']
    check = Envoy(CHECK_NAME, {}, [instance])
    check.check_id = 'test:123'
    check.log = mock.MagicMock()

    with mock.patch('requests.get', side_effect=requests.exceptions.Timeout()):
        check._collect_metadata(instance['stats_url'])
        datadog_agent.assert_metadata_count(0)
        check.log.warning.assert_called_with(
            'Envoy endpoint `%s` timed out after %s seconds',
            'http://localhost:8001/server_info', (10.0, 10.0))
    with mock.patch(
            'requests.get',
            side_effect=requests.exceptions.RequestException('Req Exception')):
        check._collect_metadata(instance['stats_url'])
        datadog_agent.assert_metadata_count(0)
        check.log.warning.assert_called_with(
            'Error collecting Envoy version with url=`%s`. Error: %s',
            'http://localhost:8001/server_info',
            'Req Exception',
        )

    with mock.patch('requests.get',
                    return_value=response('multiple_services')):
        check._collect_metadata(instance['stats_url'])

        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))
Beispiel #3
0
def test_metadata(datadog_agent):
    instance = INSTANCES['main']
    check = Envoy(CHECK_NAME, {}, [instance])
    check.check_id = 'test:123'
    check.log = mock.MagicMock()

    with mock.patch('requests.get', side_effect=requests.exceptions.Timeout()):
        check._collect_metadata()
        datadog_agent.assert_metadata_count(0)
        check.log.warning.assert_called_with(
            'Envoy endpoint `%s` timed out after %s seconds',
            'http://localhost:8001/server_info', (10.0, 10.0))

    datadog_agent.reset()
    with mock.patch('requests.get', side_effect=IndexError()):
        check._collect_metadata()
        datadog_agent.assert_metadata_count(0)
        check.log.warning.assert_called_with(
            'Error collecting Envoy version with url=`%s`. Error: %s',
            'http://localhost:8001/server_info', '')

    datadog_agent.reset()
    with mock.patch(
            'requests.get',
            side_effect=requests.exceptions.RequestException('Req Exception')):
        check._collect_metadata()
        datadog_agent.assert_metadata_count(0)
        check.log.warning.assert_called_with(
            'Error collecting Envoy version with url=`%s`. Error: %s',
            'http://localhost:8001/server_info',
            'Req Exception',
        )

    datadog_agent.reset()
    with mock.patch('requests.get', return_value=response('server_info')):
        check._collect_metadata()

        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))

    datadog_agent.reset()
    with mock.patch('requests.get',
                    return_value=response('server_info_before_1_9')):
        check._collect_metadata()

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

        datadog_agent.assert_metadata('test:123', version_metadata)
        datadog_agent.assert_metadata_count(len(version_metadata))

    datadog_agent.reset()
    with mock.patch('requests.get',
                    return_value=response('server_info_invalid')):
        check._collect_metadata()

        datadog_agent.assert_metadata('test:123', {})
        datadog_agent.assert_metadata_count(0)
        check.log.debug.assert_called_with('Version not matched.')