async def test_request_without_data(loop, auto_close): t = AIOHttpTransport([{}], connection_class=DummyConnection, loop=loop, data='') auto_close(t) ret = await t.perform_request('GET', '/') assert ret == ''
async def test_request_headers(loop, auto_close, es_server, mocker): t = auto_close( AIOHttpTransport( [{ 'host': es_server['host'], 'port': es_server['port'] }], http_auth=es_server['auth'], loop=loop, headers={ 'H1': 'V1', 'H2': 'V2' }, )) for conn in t.connection_pool.connections: mocker.spy(conn.session, 'request') await t.perform_request('GET', '/', headers={'H1': 'VV1', 'H3': 'V3'}) session = (await t.get_connection()).session _, kwargs = session.request.call_args assert kwargs['headers'] == { 'H1': 'VV1', 'H2': 'V2', 'H3': 'V3', 'Content-Type': 'application/json', }
async def test_custom_serializers(auto_close, loop): serializer = object() t = auto_close(AIOHttpTransport([{}], serializers={'test': serializer}, loop=loop)) assert 'test' in t.deserializer.serializers assert t.deserializer.serializers['test'] is serializer
async def test_sniff_hosts_error(auto_close, loop, es_server): t = auto_close( AIOHttpTransport([{ 'host': 'unknown_host', 'port': 9200 }], loop=loop)) with pytest.raises(TransportError): await t.sniff_hosts()
async def test_get_connection_with_sniff_on_start(auto_close, loop, es_server): t = auto_close(AIOHttpTransport([{'host': es_server['host'], 'port': es_server['port']}], http_auth=es_server['auth'], sniff_on_start=True, loop=loop)) conn = await t.get_connection() assert conn is not None assert t.initial_sniff_task is None
async def test_request_error_404_on_head(loop, auto_close): exc = TransportError(404) t = AIOHttpTransport([{}], connection_class=DummyConnection, loop=loop, exception=exc) auto_close(t) ret = await t.perform_request('HEAD', '/') assert not ret
async def test_sniff_hosts_no_hosts(auto_close, loop, es_server): t = auto_close(AIOHttpTransport([{'host': es_server['host'], 'port': es_server['port']}], http_auth=es_server['auth'], loop=loop)) t.host_info_callback = lambda host_info, host: None with pytest.raises(TransportError): await t.sniff_hosts()
async def test_close_with_sniff_on_start(loop, es_server): t = AIOHttpTransport([{'host': es_server['host'], 'port': es_server['port']}], http_auth=es_server['auth'], sniff_on_start=True, loop=loop) assert t.initial_sniff_task is not None await t.close() assert t.initial_sniff_task is None assert t._closed
async def test_sniff_on_start(auto_close, loop, es_server): t = auto_close(AIOHttpTransport([{'host': 'unknown_host', 'port': 9200}, {'host': es_server['host'], 'port': es_server['port']}], http_auth=es_server['auth'], sniff_on_start=True, loop=loop)) assert t.initial_sniff_task is not None await t.initial_sniff_task assert t.initial_sniff_task is None assert len(t.connection_pool.connections) == 1
async def test_request_retry_on_status(loop, auto_close): exc = TransportError(500) t = AIOHttpTransport([{}], connection_class=DummyConnection, loop=loop, exception=exc, retry_on_status=(500,)) auto_close(t) with pytest.raises(TransportError): await t.perform_request('GET', '/') conn = await t.get_connection() assert len(conn.calls) == 3
async def test_request_connection_timeout_with_retry(loop, auto_close): exc = ConnectionTimeout() t = AIOHttpTransport([{}], connection_class=DummyConnection, loop=loop, exception=exc, retry_on_timeout=True) auto_close(t) with pytest.raises(ConnectionTimeout): await t.perform_request('GET', '/') conn = await t.get_connection() assert len(conn.calls) == 3
async def test_request_connection_error(loop, auto_close): exc = ConnectionError() t = AIOHttpTransport([{}], connection_class=DummyConnection, loop=loop, exception=exc) auto_close(t) with pytest.raises(ConnectionError): await t.perform_request('GET', '/') conn = await t.get_connection() assert len(conn.calls) == 3
async def test_get_connection_without_sniffer_timeout(auto_close, loop, es_server): t = auto_close(AIOHttpTransport([{'host': 'unknown_host', 'port': 9200}, {'host': es_server['host'], 'port': es_server['port']}], http_auth=es_server['auth'], sniffer_timeout=1e12, loop=loop)) conn = await t.get_connection() assert conn is not None assert t.initial_sniff_task is None assert len(t.connection_pool.connections) == 2
async def test_mark_dead(auto_close, loop, es_server): t = auto_close(AIOHttpTransport([{'host': 'unknown_host', 'port': 9200}, {'host': es_server['host'], 'port': es_server['port']}], http_auth=es_server['auth'], randomize_hosts=False, loop=loop)) conn = t.connection_pool.connections[0] assert conn is not None assert conn.host == 'http://unknown_host:9200' await t.mark_dead(conn) assert len(t.connection_pool.connections) == 1
async def test_no_sniff_on_start(auto_close, loop): t = auto_close(AIOHttpTransport([{}], sniff_on_start=False, loop=loop)) assert t.initial_sniff_task is None