def test_is_leader_metric_false(self, aggregator):
        instance = INSTANCES['main']
        c = Vault(Vault.CHECK_NAME, {}, [instance])

        config = c.get_config(instance)

        # Keep a reference for use during mock
        requests_get = requests.get

        def mock_requests_get(url, *args, **kwargs):
            if url == config['api_url'] + '/sys/leader':
                return MockResponse(
                    {'ha_enabled': False, 'is_self': False, 'leader_address': 'bar', 'leader_cluster_address': ''}
                )
            return requests_get(url, *args, **kwargs)

        with mock.patch('requests.get', side_effect=mock_requests_get, autospec=True):
            c.check(instance)

        aggregator.assert_metric('vault.is_leader', 0)
Ejemplo n.º 2
0
    def test_sys_leader_non_standard_status_codes(self, aggregator):
        instance = INSTANCES['main']
        c = Vault(Vault.CHECK_NAME, {}, [instance])

        config = c.get_config(instance)

        # Keep a reference for use during mock
        requests_get = requests.get

        def mock_requests_get(url, *args, **kwargs):
            if url == config['api_url'] + '/sys/leader':
                return MockResponse({'errors': ["Vault is sealed"]},
                                    status_code=503)
            return requests_get(url, *args, **kwargs)

        with mock.patch('requests.get',
                        side_effect=mock_requests_get,
                        autospec=True):
            c.check(instance)
        aggregator.assert_metric('vault.is_leader', count=0)
    def test_service_check_connect_ok_all_tags(self, aggregator):
        instance = INSTANCES['main']
        c = Vault(Vault.CHECK_NAME, {}, [instance])

        config = c.get_config(instance)

        # Keep a reference for use during mock
        requests_get = requests.get

        def mock_requests_get(url, *args, **kwargs):
            if url == config['api_url'] + '/sys/leader':
                return MockResponse(
                    {'ha_enabled': False, 'is_self': True, 'leader_address': '', 'leader_cluster_address': ''}
                )
            elif url == config['api_url'] + '/sys/health':
                return MockResponse(
                    {
                        'cluster_id': '9e25ccdb-09ea-8bd8-0521-34cf3ef7a4cc',
                        'cluster_name': 'vault-cluster-f5f44063',
                        'initialized': True,
                        'replication_dr_mode': 'disabled',
                        'replication_performance_mode': 'disabled',
                        'sealed': False,
                        'server_time_utc': 1529357080,
                        'standby': False,
                        'version': '0.10.2',
                    }
                )
            return requests_get(url, *args, **kwargs)

        with mock.patch('requests.get', side_effect=mock_requests_get, autospec=True):
            c.check(instance)

        expected_tags = [
            'instance:foobar',
            'is_leader:true',
            'cluster_name:vault-cluster-f5f44063',
            'vault_version:0.10.2',
        ]
        aggregator.assert_service_check(Vault.SERVICE_CHECK_CONNECT, status=Vault.OK, tags=expected_tags, count=1)
Ejemplo n.º 4
0
    def test_ha_is_perf_standby(self, aggregator):
        instance = INSTANCES['main']
        c = Vault(Vault.CHECK_NAME, {}, [instance])

        config = c.get_config(instance)

        # Keep a reference for use during mock
        requests_get = requests.get

        def mock_requests_get(url, *args, **kwargs):
            if url == config['api_url'] + '/sys/health':
                status_code = 200 if kwargs.get(
                    'params', {}).get('perfstandbyok') else 473
                return MockResponse(
                    {
                        'cluster_id': '9e25ccdb-09ea-8bd8-0521-34cf3ef7a4cc',
                        'cluster_name': 'vault-cluster-f5f44063',
                        'initialized': False,
                        'replication_dr_mode': 'disabled',
                        'replication_performance_mode': 'disabled',
                        'sealed': False,
                        'server_time_utc': 1529357080,
                        'standby': False,
                        'performance_standby': True,
                        'version': '0.10.2',
                    },
                    status_code,
                )
            return requests_get(url, *args, **kwargs)

        with mock.patch('requests.get',
                        side_effect=mock_requests_get,
                        autospec=True):
            c.check(instance)
        aggregator.assert_metric('vault.is_leader', 0)
        aggregator.assert_all_metrics_covered()
Ejemplo n.º 5
0
    def test_bad_config(self, aggregator):
        instance = INSTANCES['invalid']
        c = Vault(Vault.CHECK_NAME, {}, [instance])
        c.check(instance)

        aggregator.assert_service_check(Vault.SERVICE_CHECK_CONNECT, count=0)
    def test_service_check_connect_ok(self, aggregator):
        instance = INSTANCES['main']
        c = Vault(Vault.CHECK_NAME, {}, [instance])
        c.check(instance)

        aggregator.assert_service_check(Vault.SERVICE_CHECK_CONNECT, status=Vault.OK, count=1)
    def test_service_check_initialized_ok(self, aggregator):
        instance = INSTANCES['main']
        c = Vault(Vault.CHECK_NAME, {}, [instance])
        c.check(instance)

        aggregator.assert_service_check(Vault.SERVICE_CHECK_INITIALIZED, status=Vault.OK, count=1)
    def test_service_check_unsealed_ok(self, aggregator):
        instance = INSTANCES['main']
        c = Vault(Vault.CHECK_NAME, {}, [instance])
        c.check(instance)

        aggregator.assert_service_check(Vault.SERVICE_CHECK_UNSEALED, status=Vault.OK, count=1)