Beispiel #1
0
    def test_should_load_backend_statuses_from_varnish_4_1(self):

        varnish_api_mock = Mock()
        varnish_api_mock.fetch.return_value = (None, BACKEND_LIST_RAW_RESPONSE_V4_1)

        varnish_api_provider_mock = Mock()
        varnish_api_provider_mock.get_connected_varnish_api.return_value = iter([varnish_api_mock])

        with patch('vaas.monitor.health.VarnishApiProvider', return_value=varnish_api_provider_mock):
            assert_equals(EXPECTED_BACKEND_TO_STATUS_MAP, BackendStatusManager().load_from_varnish())
Beispiel #2
0
 def test_should_store_backend_statuses(self):
     backend_to_status_map = {
         '192.168.199.11:80': 'Sick',
         '192.168.199.12:80': 'Healthy'
     }
     BackendStatusManager().store_backend_statuses(backend_to_status_map)
     statuses = BackendStatus.objects.all()
     assert_equals(2, len(statuses))
     self.assert_status('192.168.199.11', 80, 'Sick', statuses[0])
     self.assert_status('192.168.199.12', 80, 'Healthy', statuses[1])
Beispiel #3
0
 def test_should_refresh_backend_statuses(self):
     backend_to_status_map = {
         '192.168.199.11:80': 'Sick',
         '192.168.199.12:80': 'Healthy'
     }
     with patch('vaas.monitor.health.BackendStatusManager.load_from_varnish', return_value=backend_to_status_map):
         BackendStatusManager().refresh_statuses()
         statuses = BackendStatus.objects.all()
         assert_equals(2, len(statuses))
         self.assert_status('192.168.199.11', 80, 'Sick', statuses[0])
         self.assert_status('192.168.199.12', 80, 'Healthy', statuses[1])
Beispiel #4
0
    def _generic_load_backend_statuses_from_varnish(self, backend_list_response, expected_result):
        timeout = 0.1
        varnish_server_mock = Mock()
        varnish_api_mock = Mock()
        varnish_api_mock.fetch.return_value = (None, backend_list_response)

        varnish_api_provider_mock = Mock()
        varnish_api_provider_mock.get_api.return_value = varnish_api_mock

        assert_equals(
            expected_result,
            BackendStatusManager(varnish_api_provider_mock, [varnish_server_mock], timeout).load_from_varnish()
        )
        varnish_api_provider_mock.get_api.assert_called_once_with(varnish_server_mock, timeout)
Beispiel #5
0
    def test_should_merge_backend_statuses_from_multiple_varnishes(self):
        timeout = 0.1
        servers = {
            'first': Mock(fetch=Mock(return_value=(None, BACKEND_LIST_RAW_RESPONSE_V4_1))),
            'second': Mock(fetch=Mock(return_value=(None, BACKEND_LIST_RAW_RESPONSE_V6)))
        }

        varnish_api_provider_mock = Mock()
        varnish_api_provider_mock.get_api = Mock(side_effect=lambda s, _: servers[s])

        assert_equals(
            EXPECTED_MERGED_STATUS_MAP,
            BackendStatusManager(varnish_api_provider_mock, servers.keys(), timeout).load_from_varnish()
        )
Beispiel #6
0
    def test_should_load_backend_statuses_from_varnish(self):

        backend_list_raw_response = 'Backend name                   Refs   Admin      Probe\n'
        backend_list_raw_response += 'default(127.0.0.1,,80)       1      probe      Sick (no probe)\n'
        backend_list_raw_response += 'default(127.0.0.4,,80)       1      probe      Healthy (no probe)\n'

        varnish_api_mock = Mock()
        varnish_api_mock.fetch.return_value = (None, backend_list_raw_response)

        varnish_api_provider_mock = Mock()
        varnish_api_provider_mock.get_varnish_api.return_value = iter(
            [varnish_api_mock])

        expected_backend_to_status_map = {
            '127.0.0.1:80': 'Sick',
            '127.0.0.4:80': 'Healthy'
        }

        with patch('vaas.monitor.health.VarnishApiProvider',
                   return_value=varnish_api_provider_mock):
            assert_equals(expected_backend_to_status_map,
                          BackendStatusManager().load_from_varnish())
Beispiel #7
0
 def handle(self, *args, **options):
     BackendStatusManager().refresh_statuses()