@@ -1388,6 +1388,142 @@ test('Should prefer affinity (dual stack - 6)', async t => {
13881388 t . equal ( lookupCounter , 1 )
13891389} )
13901390
1391+ test ( 'Should use resolved ports (4)' , async t => {
1392+ t = tspl ( t , { plan : 5 } )
1393+
1394+ let lookupCounter = 0
1395+ const server1 = createServer ( )
1396+ const server2 = createServer ( )
1397+ const requestOptions = {
1398+ method : 'GET' ,
1399+ path : '/' ,
1400+ headers : {
1401+ 'content-type' : 'application/json'
1402+ }
1403+ }
1404+
1405+ server1 . on ( 'request' , ( req , res ) => {
1406+ res . writeHead ( 200 , { 'content-type' : 'text/plain' } )
1407+ res . end ( 'hello world!' )
1408+ } )
1409+
1410+ server1 . listen ( 0 )
1411+
1412+ server2 . on ( 'request' , ( req , res ) => {
1413+ res . writeHead ( 200 , { 'content-type' : 'text/plain' } )
1414+ res . end ( 'hello world! (x2)' )
1415+ } )
1416+ server2 . listen ( 0 )
1417+
1418+ await Promise . all ( [ once ( server1 , 'listening' ) , once ( server2 , 'listening' ) ] )
1419+
1420+ const client = new Agent ( ) . compose ( [
1421+ dns ( {
1422+ lookup ( origin , opts , cb ) {
1423+ lookupCounter ++
1424+ cb ( null , [
1425+ { address : '127.0.0.1' , family : 4 , port : server1 . address ( ) . port } ,
1426+ { address : '127.0.0.1' , family : 4 , port : server2 . address ( ) . port }
1427+ ] )
1428+ }
1429+ } )
1430+ ] )
1431+
1432+ after ( async ( ) => {
1433+ await client . close ( )
1434+ server1 . close ( )
1435+ server2 . close ( )
1436+
1437+ await Promise . all ( [ once ( server1 , 'close' ) , once ( server2 , 'close' ) ] )
1438+ } )
1439+
1440+ const response = await client . request ( {
1441+ ...requestOptions ,
1442+ origin : 'http://localhost'
1443+ } )
1444+
1445+ t . equal ( response . statusCode , 200 )
1446+ t . equal ( await response . body . text ( ) , 'hello world!' )
1447+
1448+ const response2 = await client . request ( {
1449+ ...requestOptions ,
1450+ origin : 'http://localhost'
1451+ } )
1452+
1453+ t . equal ( response2 . statusCode , 200 )
1454+ t . equal ( await response2 . body . text ( ) , 'hello world! (x2)' )
1455+
1456+ t . equal ( lookupCounter , 1 )
1457+ } )
1458+
1459+ test ( 'Should use resolved ports (6)' , async t => {
1460+ t = tspl ( t , { plan : 5 } )
1461+
1462+ let lookupCounter = 0
1463+ const server1 = createServer ( )
1464+ const server2 = createServer ( )
1465+ const requestOptions = {
1466+ method : 'GET' ,
1467+ path : '/' ,
1468+ headers : {
1469+ 'content-type' : 'application/json'
1470+ }
1471+ }
1472+
1473+ server1 . on ( 'request' , ( req , res ) => {
1474+ res . writeHead ( 200 , { 'content-type' : 'text/plain' } )
1475+ res . end ( 'hello world!' )
1476+ } )
1477+
1478+ server1 . listen ( 0 , '::1' )
1479+
1480+ server2 . on ( 'request' , ( req , res ) => {
1481+ res . writeHead ( 200 , { 'content-type' : 'text/plain' } )
1482+ res . end ( 'hello world! (x2)' )
1483+ } )
1484+ server2 . listen ( 0 , '::1' )
1485+
1486+ await Promise . all ( [ once ( server1 , 'listening' ) , once ( server2 , 'listening' ) ] )
1487+
1488+ const client = new Agent ( ) . compose ( [
1489+ dns ( {
1490+ lookup ( origin , opts , cb ) {
1491+ lookupCounter ++
1492+ cb ( null , [
1493+ { address : '::1' , family : 6 , port : server1 . address ( ) . port } ,
1494+ { address : '::1' , family : 6 , port : server2 . address ( ) . port }
1495+ ] )
1496+ }
1497+ } )
1498+ ] )
1499+
1500+ after ( async ( ) => {
1501+ await client . close ( )
1502+ server1 . close ( )
1503+ server2 . close ( )
1504+
1505+ await Promise . all ( [ once ( server1 , 'close' ) , once ( server2 , 'close' ) ] )
1506+ } )
1507+
1508+ const response = await client . request ( {
1509+ ...requestOptions ,
1510+ origin : 'http://localhost'
1511+ } )
1512+
1513+ t . equal ( response . statusCode , 200 )
1514+ t . equal ( await response . body . text ( ) , 'hello world!' )
1515+
1516+ const response2 = await client . request ( {
1517+ ...requestOptions ,
1518+ origin : 'http://localhost'
1519+ } )
1520+
1521+ t . equal ( response2 . statusCode , 200 )
1522+ t . equal ( await response2 . body . text ( ) , 'hello world! (x2)' )
1523+
1524+ t . equal ( lookupCounter , 1 )
1525+ } )
1526+
13911527test ( 'Should handle max cached items' , async t => {
13921528 t = tspl ( t , { plan : 9 } )
13931529
0 commit comments