@@ -1366,6 +1366,79 @@ test('Should prefer affinity (dual stack - 6)', async t => {
13661366 t . equal ( lookupCounter , 1 )
13671367} )
13681368
1369+ test ( 'Should use resolved ports' , async t => {
1370+ t = tspl ( t , { plan : 5 } )
1371+
1372+ let lookupCounter = 0
1373+ const server1 = createServer ( )
1374+ const server2 = createServer ( )
1375+ const requestOptions = {
1376+ method : 'GET' ,
1377+ path : '/' ,
1378+ headers : {
1379+ 'content-type' : 'application/json'
1380+ }
1381+ }
1382+
1383+ server1 . on ( 'request' , ( req , res ) => {
1384+ res . writeHead ( 200 , { 'content-type' : 'text/plain' } )
1385+ res . end ( 'hello world!' )
1386+ } )
1387+
1388+ server1 . listen ( 0 )
1389+
1390+ server2 . on ( 'request' , ( req , res ) => {
1391+ res . writeHead ( 200 , { 'content-type' : 'text/plain' } )
1392+ res . end ( 'hello world! (x2)' )
1393+ } )
1394+ server2 . listen ( 0 )
1395+
1396+ await Promise . all ( [ once ( server1 , 'listening' ) , once ( server2 , 'listening' ) ] )
1397+
1398+ const client = new Agent ( ) . compose ( [
1399+ dispatch => {
1400+ return ( opts , handler ) => {
1401+ return dispatch ( opts , handler )
1402+ }
1403+ } ,
1404+ dns ( {
1405+ lookup ( origin , opts , cb ) {
1406+ lookupCounter ++
1407+ cb ( null , [
1408+ { address : '127.0.0.1' , family : 4 , port : server1 . address ( ) . port } ,
1409+ { address : '127.0.0.1' , family : 4 , port : server2 . address ( ) . port }
1410+ ] )
1411+ }
1412+ } )
1413+ ] )
1414+
1415+ after ( async ( ) => {
1416+ await client . close ( )
1417+ server1 . close ( )
1418+ server2 . close ( )
1419+
1420+ await Promise . all ( [ once ( server1 , 'close' ) , once ( server2 , 'close' ) ] )
1421+ } )
1422+
1423+ const response = await client . request ( {
1424+ ...requestOptions ,
1425+ origin : 'http://localhost'
1426+ } )
1427+
1428+ t . equal ( response . statusCode , 200 )
1429+ t . equal ( await response . body . text ( ) , 'hello world!' )
1430+
1431+ const response2 = await client . request ( {
1432+ ...requestOptions ,
1433+ origin : 'http://localhost'
1434+ } )
1435+
1436+ t . equal ( response2 . statusCode , 200 )
1437+ t . equal ( await response2 . body . text ( ) , 'hello world! (x2)' )
1438+
1439+ t . equal ( lookupCounter , 1 )
1440+ } )
1441+
13691442test ( 'Should handle max cached items' , async t => {
13701443 t = tspl ( t , { plan : 9 } )
13711444
0 commit comments