@@ -1301,6 +1301,7 @@ async def test_tcp_connector_dns_cache_not_expired(
1301
1301
with mock .patch ("aiohttp.connector.DefaultResolver" ) as m_resolver :
1302
1302
conn = aiohttp .TCPConnector (use_dns_cache = True , ttl_dns_cache = 10 )
1303
1303
m_resolver ().resolve .return_value = dns_response ()
1304
+ m_resolver ().close = mock .AsyncMock ()
1304
1305
await conn ._resolve_host ("localhost" , 8080 )
1305
1306
await conn ._resolve_host ("localhost" , 8080 )
1306
1307
m_resolver ().resolve .assert_called_once_with ("localhost" , 8080 , family = 0 )
@@ -1314,6 +1315,7 @@ async def test_tcp_connector_dns_cache_forever(
1314
1315
with mock .patch ("aiohttp.connector.DefaultResolver" ) as m_resolver :
1315
1316
conn = aiohttp .TCPConnector (use_dns_cache = True , ttl_dns_cache = 10 )
1316
1317
m_resolver ().resolve .return_value = dns_response ()
1318
+ m_resolver ().close = mock .AsyncMock ()
1317
1319
await conn ._resolve_host ("localhost" , 8080 )
1318
1320
await conn ._resolve_host ("localhost" , 8080 )
1319
1321
m_resolver ().resolve .assert_called_once_with ("localhost" , 8080 , family = 0 )
@@ -1327,6 +1329,7 @@ async def test_tcp_connector_use_dns_cache_disabled(
1327
1329
with mock .patch ("aiohttp.connector.DefaultResolver" ) as m_resolver :
1328
1330
conn = aiohttp .TCPConnector (use_dns_cache = False )
1329
1331
m_resolver ().resolve .side_effect = [dns_response (), dns_response ()]
1332
+ m_resolver ().close = mock .AsyncMock ()
1330
1333
await conn ._resolve_host ("localhost" , 8080 )
1331
1334
await conn ._resolve_host ("localhost" , 8080 )
1332
1335
m_resolver ().resolve .assert_has_calls (
@@ -1345,6 +1348,7 @@ async def test_tcp_connector_dns_throttle_requests(
1345
1348
with mock .patch ("aiohttp.connector.DefaultResolver" ) as m_resolver :
1346
1349
conn = aiohttp .TCPConnector (use_dns_cache = True , ttl_dns_cache = 10 )
1347
1350
m_resolver ().resolve .return_value = dns_response ()
1351
+ m_resolver ().close = mock .AsyncMock ()
1348
1352
t = loop .create_task (conn ._resolve_host ("localhost" , 8080 ))
1349
1353
t2 = loop .create_task (conn ._resolve_host ("localhost" , 8080 ))
1350
1354
await asyncio .sleep (0 )
@@ -1365,6 +1369,7 @@ async def test_tcp_connector_dns_throttle_requests_exception_spread(
1365
1369
conn = aiohttp .TCPConnector (use_dns_cache = True , ttl_dns_cache = 10 )
1366
1370
e = Exception ()
1367
1371
m_resolver ().resolve .side_effect = e
1372
+ m_resolver ().close = mock .AsyncMock ()
1368
1373
r1 = loop .create_task (conn ._resolve_host ("localhost" , 8080 ))
1369
1374
r2 = loop .create_task (conn ._resolve_host ("localhost" , 8080 ))
1370
1375
await asyncio .sleep (0 )
@@ -1383,6 +1388,7 @@ async def test_tcp_connector_dns_throttle_requests_cancelled_when_close(
1383
1388
with mock .patch ("aiohttp.connector.DefaultResolver" ) as m_resolver :
1384
1389
conn = aiohttp .TCPConnector (use_dns_cache = True , ttl_dns_cache = 10 )
1385
1390
m_resolver ().resolve .return_value = dns_response ()
1391
+ m_resolver ().close = mock .AsyncMock ()
1386
1392
t = loop .create_task (conn ._resolve_host ("localhost" , 8080 ))
1387
1393
f = loop .create_task (conn ._resolve_host ("localhost" , 8080 ))
1388
1394
@@ -1429,6 +1435,7 @@ def exception_handler(loop: asyncio.AbstractEventLoop, context: object) -> None:
1429
1435
use_dns_cache = False ,
1430
1436
)
1431
1437
m_resolver ().resolve .return_value = dns_response_error ()
1438
+ m_resolver ().close = mock .AsyncMock ()
1432
1439
f = loop .create_task (conn ._create_direct_connection (req , [], ClientTimeout (0 )))
1433
1440
1434
1441
await asyncio .sleep (0 )
@@ -1466,6 +1473,7 @@ async def test_tcp_connector_dns_tracing(
1466
1473
conn = aiohttp .TCPConnector (use_dns_cache = True , ttl_dns_cache = 10 )
1467
1474
1468
1475
m_resolver ().resolve .return_value = dns_response ()
1476
+ m_resolver ().close = mock .AsyncMock ()
1469
1477
1470
1478
await conn ._resolve_host ("localhost" , 8080 , traces = traces )
1471
1479
on_dns_resolvehost_start .assert_called_once_with (
@@ -1509,6 +1517,7 @@ async def test_tcp_connector_dns_tracing_cache_disabled(
1509
1517
conn = aiohttp .TCPConnector (use_dns_cache = False )
1510
1518
1511
1519
m_resolver ().resolve .side_effect = [dns_response (), dns_response ()]
1520
+ m_resolver ().close = mock .AsyncMock ()
1512
1521
1513
1522
await conn ._resolve_host ("localhost" , 8080 , traces = traces )
1514
1523
@@ -1565,6 +1574,7 @@ async def test_tcp_connector_dns_tracing_throttle_requests(
1565
1574
with mock .patch ("aiohttp.connector.DefaultResolver" ) as m_resolver :
1566
1575
conn = aiohttp .TCPConnector (use_dns_cache = True , ttl_dns_cache = 10 )
1567
1576
m_resolver ().resolve .return_value = dns_response ()
1577
+ m_resolver ().close = mock .AsyncMock ()
1568
1578
t = loop .create_task (conn ._resolve_host ("localhost" , 8080 , traces = traces ))
1569
1579
t1 = loop .create_task (conn ._resolve_host ("localhost" , 8080 , traces = traces ))
1570
1580
await asyncio .sleep (0 )
@@ -1583,6 +1593,14 @@ async def test_tcp_connector_dns_tracing_throttle_requests(
1583
1593
await conn .close ()
1584
1594
1585
1595
1596
+ async def test_tcp_connector_close_resolver () -> None :
1597
+ m_resolver = mock .AsyncMock ()
1598
+ with mock .patch ("aiohttp.connector.DefaultResolver" , return_value = m_resolver ):
1599
+ conn = aiohttp .TCPConnector (use_dns_cache = True , ttl_dns_cache = 10 )
1600
+ await conn .close ()
1601
+ m_resolver .close .assert_awaited_once ()
1602
+
1603
+
1586
1604
async def test_dns_error (loop : asyncio .AbstractEventLoop ) -> None :
1587
1605
connector = aiohttp .TCPConnector ()
1588
1606
with mock .patch .object (
@@ -3834,6 +3852,7 @@ async def resolve_response() -> List[ResolveResult]:
3834
3852
3835
3853
with mock .patch ("aiohttp.connector.DefaultResolver" ) as m_resolver :
3836
3854
m_resolver ().resolve .return_value = resolve_response ()
3855
+ m_resolver ().close = mock .AsyncMock ()
3837
3856
3838
3857
connector = TCPConnector ()
3839
3858
traces = [DummyTracer ()]
0 commit comments