@@ -1270,6 +1270,7 @@ async def test_tcp_connector_dns_cache_not_expired(loop, dns_response) -> None:
1270
1270
with mock .patch ("aiohttp.connector.DefaultResolver" ) as m_resolver :
1271
1271
conn = aiohttp .TCPConnector (loop = loop , use_dns_cache = True , ttl_dns_cache = 10 )
1272
1272
m_resolver ().resolve .return_value = dns_response ()
1273
+ m_resolver ().close = mock .AsyncMock ()
1273
1274
await conn ._resolve_host ("localhost" , 8080 )
1274
1275
await conn ._resolve_host ("localhost" , 8080 )
1275
1276
m_resolver ().resolve .assert_called_once_with ("localhost" , 8080 , family = 0 )
@@ -1281,6 +1282,7 @@ async def test_tcp_connector_dns_cache_forever(loop, dns_response) -> None:
1281
1282
with mock .patch ("aiohttp.connector.DefaultResolver" ) as m_resolver :
1282
1283
conn = aiohttp .TCPConnector (loop = loop , use_dns_cache = True , ttl_dns_cache = 10 )
1283
1284
m_resolver ().resolve .return_value = dns_response ()
1285
+ m_resolver ().close = mock .AsyncMock ()
1284
1286
await conn ._resolve_host ("localhost" , 8080 )
1285
1287
await conn ._resolve_host ("localhost" , 8080 )
1286
1288
m_resolver ().resolve .assert_called_once_with ("localhost" , 8080 , family = 0 )
@@ -1292,6 +1294,7 @@ async def test_tcp_connector_use_dns_cache_disabled(loop, dns_response) -> None:
1292
1294
with mock .patch ("aiohttp.connector.DefaultResolver" ) as m_resolver :
1293
1295
conn = aiohttp .TCPConnector (loop = loop , use_dns_cache = False )
1294
1296
m_resolver ().resolve .side_effect = [dns_response (), dns_response ()]
1297
+ m_resolver ().close = mock .AsyncMock ()
1295
1298
await conn ._resolve_host ("localhost" , 8080 )
1296
1299
await conn ._resolve_host ("localhost" , 8080 )
1297
1300
m_resolver ().resolve .assert_has_calls (
@@ -1308,6 +1311,7 @@ async def test_tcp_connector_dns_throttle_requests(loop, dns_response) -> None:
1308
1311
with mock .patch ("aiohttp.connector.DefaultResolver" ) as m_resolver :
1309
1312
conn = aiohttp .TCPConnector (loop = loop , use_dns_cache = True , ttl_dns_cache = 10 )
1310
1313
m_resolver ().resolve .return_value = dns_response ()
1314
+ m_resolver ().close = mock .AsyncMock ()
1311
1315
loop .create_task (conn ._resolve_host ("localhost" , 8080 ))
1312
1316
loop .create_task (conn ._resolve_host ("localhost" , 8080 ))
1313
1317
await asyncio .sleep (0 )
@@ -1322,6 +1326,7 @@ async def test_tcp_connector_dns_throttle_requests_exception_spread(loop) -> Non
1322
1326
conn = aiohttp .TCPConnector (loop = loop , use_dns_cache = True , ttl_dns_cache = 10 )
1323
1327
e = Exception ()
1324
1328
m_resolver ().resolve .side_effect = e
1329
+ m_resolver ().close = mock .AsyncMock ()
1325
1330
r1 = loop .create_task (conn ._resolve_host ("localhost" , 8080 ))
1326
1331
r2 = loop .create_task (conn ._resolve_host ("localhost" , 8080 ))
1327
1332
await asyncio .sleep (0 )
@@ -1337,10 +1342,10 @@ async def test_tcp_connector_dns_throttle_requests_exception_spread(loop) -> Non
1337
1342
async def test_tcp_connector_dns_throttle_requests_cancelled_when_close (
1338
1343
loop , dns_response
1339
1344
):
1340
-
1341
1345
with mock .patch ("aiohttp.connector.DefaultResolver" ) as m_resolver :
1342
1346
conn = aiohttp .TCPConnector (loop = loop , use_dns_cache = True , ttl_dns_cache = 10 )
1343
1347
m_resolver ().resolve .return_value = dns_response ()
1348
+ m_resolver ().close = mock .AsyncMock ()
1344
1349
loop .create_task (conn ._resolve_host ("localhost" , 8080 ))
1345
1350
f = loop .create_task (conn ._resolve_host ("localhost" , 8080 ))
1346
1351
@@ -1367,7 +1372,6 @@ async def coro():
1367
1372
async def test_tcp_connector_cancel_dns_error_captured (
1368
1373
loop , dns_response_error
1369
1374
) -> None :
1370
-
1371
1375
exception_handler_called = False
1372
1376
1373
1377
def exception_handler (loop , context ):
@@ -1384,6 +1388,7 @@ def exception_handler(loop, context):
1384
1388
use_dns_cache = False ,
1385
1389
)
1386
1390
m_resolver ().resolve .return_value = dns_response_error ()
1391
+ m_resolver ().close = mock .AsyncMock ()
1387
1392
f = loop .create_task (conn ._create_direct_connection (req , [], ClientTimeout (0 )))
1388
1393
1389
1394
await asyncio .sleep (0 )
@@ -1419,6 +1424,7 @@ async def test_tcp_connector_dns_tracing(loop, dns_response) -> None:
1419
1424
conn = aiohttp .TCPConnector (loop = loop , use_dns_cache = True , ttl_dns_cache = 10 )
1420
1425
1421
1426
m_resolver ().resolve .return_value = dns_response ()
1427
+ m_resolver ().close = mock .AsyncMock ()
1422
1428
1423
1429
await conn ._resolve_host ("localhost" , 8080 , traces = traces )
1424
1430
on_dns_resolvehost_start .assert_called_once_with (
@@ -1460,6 +1466,7 @@ async def test_tcp_connector_dns_tracing_cache_disabled(loop, dns_response) -> N
1460
1466
conn = aiohttp .TCPConnector (loop = loop , use_dns_cache = False )
1461
1467
1462
1468
m_resolver ().resolve .side_effect = [dns_response (), dns_response ()]
1469
+ m_resolver ().close = mock .AsyncMock ()
1463
1470
1464
1471
await conn ._resolve_host ("localhost" , 8080 , traces = traces )
1465
1472
@@ -1514,6 +1521,7 @@ async def test_tcp_connector_dns_tracing_throttle_requests(loop, dns_response) -
1514
1521
with mock .patch ("aiohttp.connector.DefaultResolver" ) as m_resolver :
1515
1522
conn = aiohttp .TCPConnector (loop = loop , use_dns_cache = True , ttl_dns_cache = 10 )
1516
1523
m_resolver ().resolve .return_value = dns_response ()
1524
+ m_resolver ().close = mock .AsyncMock ()
1517
1525
loop .create_task (conn ._resolve_host ("localhost" , 8080 , traces = traces ))
1518
1526
loop .create_task (conn ._resolve_host ("localhost" , 8080 , traces = traces ))
1519
1527
await asyncio .sleep (0 )
@@ -1528,6 +1536,14 @@ async def test_tcp_connector_dns_tracing_throttle_requests(loop, dns_response) -
1528
1536
await conn .close ()
1529
1537
1530
1538
1539
+ async def test_tcp_connector_close_resolver () -> None :
1540
+ m_resolver = mock .AsyncMock ()
1541
+ with mock .patch ("aiohttp.connector.DefaultResolver" , return_value = m_resolver ):
1542
+ conn = aiohttp .TCPConnector (use_dns_cache = True , ttl_dns_cache = 10 )
1543
+ await conn .close ()
1544
+ m_resolver .close .assert_awaited_once ()
1545
+
1546
+
1531
1547
async def test_dns_error (loop ) -> None :
1532
1548
connector = aiohttp .TCPConnector (loop = loop )
1533
1549
connector ._resolve_host = mock .AsyncMock (
@@ -2896,7 +2912,6 @@ async def f():
2896
2912
2897
2913
2898
2914
async def test_connect_with_limit_cancelled (loop ) -> None :
2899
-
2900
2915
proto = create_mocked_conn ()
2901
2916
proto .is_connected .return_value = True
2902
2917
@@ -3691,6 +3706,7 @@ async def resolve_response() -> List[ResolveResult]:
3691
3706
3692
3707
with mock .patch ("aiohttp.connector.DefaultResolver" ) as m_resolver :
3693
3708
m_resolver ().resolve .return_value = resolve_response ()
3709
+ m_resolver ().close = mock .AsyncMock ()
3694
3710
3695
3711
connector = TCPConnector ()
3696
3712
traces = [DummyTracer ()]
0 commit comments