Пример #1
0
 def setUp(self):
     with patch.object(EtcdClient, 'machines') as mock_machines:
         mock_machines.__get__ = Mock(return_value=[
             'http://localhost:2379', 'http://localhost:4001'
         ])
         self.client = EtcdClient({
             'srv': 'test',
             'retry_timeout': 3
         }, DnsCachingResolver())
         self.client.http.request = http_request
         self.client.http.request_encode_body = http_request
Пример #2
0
class TestClient(unittest.TestCase):
    @patch('dns.resolver.query', dns_query)
    @patch('socket.getaddrinfo', socket_getaddrinfo)
    @patch('patroni.dcs.etcd.requests_get', requests_get)
    def setUp(self):
        with patch.object(EtcdClient, 'machines') as mock_machines:
            mock_machines.__get__ = Mock(return_value=[
                'http://*****:*****@patch.object(EtcdClient, 'machines')
    def test_api_execute(self, mock_machines):
        mock_machines.__get__ = Mock(
            return_value=['http://*****:*****@patch.object(EtcdClient, 'machines')
    def test__refresh_machines_cache(self, mock_machines):
        mock_machines.__get__ = Mock(side_effect=etcd.EtcdConnectionFailed)
        self.assertIsNone(self.client._refresh_machines_cache())
        self.assertRaises(etcd.EtcdException,
                          self.client._refresh_machines_cache, True)

    def test__load_machines_cache(self):
        self.client._config = {}
        self.assertRaises(Exception, self.client._load_machines_cache)
        self.client._config = {'srv': 'blabla'}
        self.assertRaises(etcd.EtcdException, self.client._load_machines_cache)

    @patch.object(socket.socket, 'connect')
    def test_create_connection_patched(self, mock_connect):
        self.assertRaises(socket.error,
                          urllib3.util.connection.create_connection,
                          ('fail', 2379))
        urllib3.util.connection.create_connection(('[localhost]', 2379))
        mock_connect.side_effect = socket.error
        self.assertRaises(socket.error,
                          urllib3.util.connection.create_connection,
                          ('[localhost]', 2379),
                          timeout=1,
                          source_address=('localhost', 53333),
                          socket_options=[(socket.SOL_SOCKET,
                                           socket.SO_REUSEADDR, 1)])

    def test___del__(self):
        self.client.http.clear = Mock(side_effect=TypeError)
        del self.client