コード例 #1
0
    def test_disconnect_request_sent_if_and_only_if_master_is_responsive(
            self, is_master_responsive):
        slave_creation_url = 'http://{}/v1/slave'.format(self._FAKE_MASTER_URL)
        master_connectivity_url = 'http://{}/v1'.format(self._FAKE_MASTER_URL)
        slave_info_url = 'http://{}/v1/slave/1'.format(self._FAKE_MASTER_URL)
        if not is_master_responsive:
            self.mock_network.get.side_effect = requests.ConnectionError  # an offline master raises ConnectionError

        slave = self._create_cluster_slave()
        slave.connect_to_master(self._FAKE_MASTER_URL)
        slave._disconnect_from_master()

        # expect a connect call and a connectivity call, and if the master is responsive also expect a disconnect call
        expected_network_calls = [
            call.post(slave_creation_url, data=ANY),
            call.get(master_connectivity_url),
        ]
        if is_master_responsive:
            expected_network_calls.append(
                call.put_with_digest(slave_info_url,
                                     request_params=ANY,
                                     secret=ANY,
                                     error_on_failure=ANY))

        self.mock_network.assert_has_calls(expected_network_calls,
                                           any_order=True)
        self.assertEqual(len(self.mock_network.method_calls),
                         len(expected_network_calls),
                         'All requests should be accounted for in the test.')
コード例 #2
0
    def test_disconnect_request_sent_if_and_only_if_master_is_responsive(self, is_master_responsive):
        slave_creation_url = 'http://{}/v1/slave'.format(self._FAKE_MASTER_URL)
        master_connectivity_url = 'http://{}/v1'.format(self._FAKE_MASTER_URL)
        slave_info_url = 'http://{}/v1/slave/1'.format(self._FAKE_MASTER_URL)
        if not is_master_responsive:
            self.mock_network.get.side_effect = requests.ConnectionError  # an offline master raises ConnectionError

        slave = self._create_cluster_slave()
        slave.connect_to_master(self._FAKE_MASTER_URL)
        slave._disconnect_from_master()

        # expect a connect call and a connectivity call, and if the master is responsive also expect a disconnect call
        expected_network_calls = [
            call.post(slave_creation_url, data=ANY),
            call.get(master_connectivity_url),
        ]
        if is_master_responsive:
            expected_network_calls.append(call.put_with_digest(slave_info_url, request_params=ANY,
                                                               secret=ANY, error_on_failure=ANY))

        self.mock_network.assert_has_calls(expected_network_calls, any_order=True)
        self.assertEqual(len(self.mock_network.method_calls), len(expected_network_calls),
                         'All requests should be accounted for in the test.')