From 0bb6dd4bbe6cc1f4ebcbd78a83060f435b8aa4b1 Mon Sep 17 00:00:00 2001 From: Pau Freixes Date: Wed, 19 Apr 2017 11:04:29 +0200 Subject: [PATCH 1/3] Allow inject connector from ElasticSearch till Connection --- aioes/transport.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/aioes/transport.py b/aioes/transport.py index 81ae3f5..aa301aa 100644 --- a/aioes/transport.py +++ b/aioes/transport.py @@ -46,8 +46,9 @@ class Transport: def __init__(self, endpoints, *, sniffer_interval=None, sniffer_timeout=0.1, max_retries=3, - loop, verify_ssl=True): + loop, verify_ssl=True, connector=None): self._loop = loop + self._connector = connector self._endpoints = self._convert_endpoints(endpoints) self._pool = ConnectionPool([], loop=loop) self._verify_ssl = verify_ssl @@ -148,7 +149,8 @@ def _reinitialize_endpoints(self): connections.append(Connection( endpoint, loop=self._loop, - verify_ssl=self._verify_ssl)) + verify_ssl=self._verify_ssl, + connector=self._connector)) self._pool.close() random.shuffle(connections) self._pool = ConnectionPool(connections, loop=self._loop) From b5cbb20b054b3ffcac3b8ab4ffcff902daefb122 Mon Sep 17 00:00:00 2001 From: Pau Freixes Date: Wed, 19 Apr 2017 13:18:19 +0200 Subject: [PATCH 2/3] Moved to connection factory patern --- aioes/transport.py | 6 +++--- tests/test_transport.py | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/aioes/transport.py b/aioes/transport.py index aa301aa..660b206 100644 --- a/aioes/transport.py +++ b/aioes/transport.py @@ -46,9 +46,9 @@ class Transport: def __init__(self, endpoints, *, sniffer_interval=None, sniffer_timeout=0.1, max_retries=3, - loop, verify_ssl=True, connector=None): + loop, verify_ssl=True, connector_factory=lambda: None): self._loop = loop - self._connector = connector + self._connector_factory = connector_factory self._endpoints = self._convert_endpoints(endpoints) self._pool = ConnectionPool([], loop=loop) self._verify_ssl = verify_ssl @@ -150,7 +150,7 @@ def _reinitialize_endpoints(self): endpoint, loop=self._loop, verify_ssl=self._verify_ssl, - connector=self._connector)) + connector=self._connector_factory())) self._pool.close() random.shuffle(connections) self._pool = ConnectionPool(connections, loop=self._loop) diff --git a/tests/test_transport.py b/tests/test_transport.py index 020326e..4f17433 100644 --- a/tests/test_transport.py +++ b/tests/test_transport.py @@ -1,3 +1,4 @@ +import aiohttp import asyncio import time import urllib.parse @@ -30,6 +31,27 @@ def test_ctor(make_transport, es_params): assert 1 == len(tr._pool.connections) +@asyncio.coroutine +def test_connector_factory(es_params, loop): + + class TCPConnector(aiohttp.TCPConnector): + used = False + + def __init__(self, *args, **kwargs): + TCPConnector.used = True + super(TCPConnector, self).__init__(*args, **kwargs) + + tr = Transport( + endpoints=[{'host': es_params['host']}], + sniffer_interval=None, + loop=loop, + connector_factory=lambda: TCPConnector() + ) + assert 1 == len(tr._pool.connections) + assert TCPConnector.used + tr.close() + + @asyncio.coroutine def test_simple(make_transport): tr = make_transport() From 54105cbf88260c277445da85264b7919ea75ed70 Mon Sep 17 00:00:00 2001 From: Pau Freixes Date: Wed, 19 Apr 2017 14:22:19 +0200 Subject: [PATCH 3/3] Use the loop test --- tests/test_transport.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_transport.py b/tests/test_transport.py index 4f17433..c2b1df3 100644 --- a/tests/test_transport.py +++ b/tests/test_transport.py @@ -45,7 +45,7 @@ def __init__(self, *args, **kwargs): endpoints=[{'host': es_params['host']}], sniffer_interval=None, loop=loop, - connector_factory=lambda: TCPConnector() + connector_factory=lambda: TCPConnector(loop=loop) ) assert 1 == len(tr._pool.connections) assert TCPConnector.used