@@ -4,7 +4,6 @@ const { tspl } = require('@matteo.collina/tspl')
44const { test, after } = require ( 'node:test' )
55const { once } = require ( 'node:events' )
66const { Client } = require ( '..' )
7- const timers = require ( '../lib/util/timers' )
87const { kConnect } = require ( '../lib/core/symbols' )
98const { createServer } = require ( 'node:net' )
109const http = require ( 'node:http' )
@@ -21,10 +20,8 @@ test('keep-alive header', async (t) => {
2120 socket . write ( '\r\n\r\n' )
2221 } )
2322 after ( ( ) => server . close ( ) )
23+ await once ( server . listen ( 0 ) , 'listening' )
2424
25- server . listen ( 0 )
26-
27- await once ( server , 'listening' )
2825 const client = new Client ( `http://localhost:${ server . address ( ) . port } ` )
2926 after ( ( ) => client . close ( ) )
3027
@@ -52,10 +49,6 @@ test('keep-alive header 0', async (t) => {
5249 const clock = FakeTimers . install ( )
5350 after ( ( ) => clock . uninstall ( ) )
5451
55- const orgTimers = { ...timers }
56- Object . assign ( timers , { setTimeout, clearTimeout } )
57- after ( ( ) => { Object . assign ( timers , orgTimers ) } )
58-
5952 const server = createServer ( ( socket ) => {
6053 socket . write ( 'HTTP/1.1 200 OK\r\n' )
6154 socket . write ( 'Content-Length: 0\r\n' )
@@ -64,10 +57,8 @@ test('keep-alive header 0', async (t) => {
6457 socket . write ( '\r\n\r\n' )
6558 } )
6659 after ( ( ) => server . close ( ) )
60+ await once ( server . listen ( 0 ) , 'listening' )
6761
68- server . listen ( 0 )
69-
70- await once ( server , 'listening' )
7162 const client = new Client ( `http://localhost:${ server . address ( ) . port } ` , {
7263 keepAliveTimeoutThreshold : 500
7364 } )
@@ -99,10 +90,8 @@ test('keep-alive header 1', async (t) => {
9990 socket . write ( '\r\n\r\n' )
10091 } )
10192 after ( ( ) => server . close ( ) )
93+ await once ( server . listen ( 0 ) , 'listening' )
10294
103- server . listen ( 0 )
104-
105- await once ( server , 'listening' )
10695 const client = new Client ( `http://localhost:${ server . address ( ) . port } ` )
10796 after ( ( ) => client . close ( ) )
10897
@@ -135,10 +124,8 @@ test('keep-alive header no postfix', async (t) => {
135124 socket . write ( '\r\n\r\n' )
136125 } )
137126 after ( ( ) => server . close ( ) )
127+ await once ( server . listen ( 0 ) , 'listening' )
138128
139- server . listen ( 0 )
140-
141- await once ( server , 'listening' )
142129 const client = new Client ( `http://localhost:${ server . address ( ) . port } ` )
143130 after ( ( ) => client . close ( ) )
144131
@@ -163,6 +150,11 @@ test('keep-alive header no postfix', async (t) => {
163150test ( 'keep-alive not timeout' , async ( t ) => {
164151 t = tspl ( t , { plan : 2 } )
165152
153+ const clock = FakeTimers . install ( {
154+ apis : [ 'setTimeout' ]
155+ } )
156+ after ( ( ) => clock . uninstall ( ) )
157+
166158 const server = createServer ( ( socket ) => {
167159 socket . write ( 'HTTP/1.1 200 OK\r\n' )
168160 socket . write ( 'Content-Length: 0\r\n' )
@@ -172,9 +164,8 @@ test('keep-alive not timeout', async (t) => {
172164 } )
173165 after ( ( ) => server . close ( ) )
174166
175- server . listen ( 0 )
167+ await once ( server . listen ( 0 ) , 'listening' )
176168
177- await once ( server , 'listening' )
178169 const client = new Client ( `http://localhost:${ server . address ( ) . port } ` , {
179170 keepAliveTimeout : 1e3
180171 } )
@@ -186,21 +177,26 @@ test('keep-alive not timeout', async (t) => {
186177 } , ( err , { body } ) => {
187178 t . ifError ( err )
188179 body . on ( 'end' , ( ) => {
189- const timeout = setTimeout ( ( ) => {
190- t . fail ( )
191- } , 3e3 )
180+ const timeout = setTimeout ( t . fail , 3e3 )
192181 client . on ( 'disconnect' , ( ) => {
193182 t . ok ( true , 'pass' )
194183 clearTimeout ( timeout )
195184 } )
185+ clock . tick ( 1000 )
196186 } ) . resume ( )
197187 } )
188+
198189 await t . completed
199190} )
200191
201192test ( 'keep-alive threshold' , async ( t ) => {
202193 t = tspl ( t , { plan : 2 } )
203194
195+ const clock = FakeTimers . install ( {
196+ apis : [ 'setTimeout' ]
197+ } )
198+ after ( ( ) => clock . uninstall ( ) )
199+
204200 const server = createServer ( ( socket ) => {
205201 socket . write ( 'HTTP/1.1 200 OK\r\n' )
206202 socket . write ( 'Content-Length: 0\r\n' )
@@ -209,10 +205,8 @@ test('keep-alive threshold', async (t) => {
209205 socket . write ( '\r\n\r\n' )
210206 } )
211207 after ( ( ) => server . close ( ) )
208+ await once ( server . listen ( 0 ) , 'listening' )
212209
213- server . listen ( 0 )
214-
215- await once ( server , 'listening' )
216210 const client = new Client ( `http://localhost:${ server . address ( ) . port } ` , {
217211 keepAliveTimeout : 30e3 ,
218212 keepAliveTimeoutThreshold : 29e3
@@ -232,6 +226,7 @@ test('keep-alive threshold', async (t) => {
232226 t . ok ( true , 'pass' )
233227 clearTimeout ( timeout )
234228 } )
229+ clock . tick ( 1000 )
235230 } ) . resume ( )
236231 } )
237232 await t . completed
@@ -240,6 +235,11 @@ test('keep-alive threshold', async (t) => {
240235test ( 'keep-alive max keepalive' , async ( t ) => {
241236 t = tspl ( t , { plan : 2 } )
242237
238+ const clock = FakeTimers . install ( {
239+ apis : [ 'setTimeout' ]
240+ } )
241+ after ( ( ) => clock . uninstall ( ) )
242+
243243 const server = createServer ( ( socket ) => {
244244 socket . write ( 'HTTP/1.1 200 OK\r\n' )
245245 socket . write ( 'Content-Length: 0\r\n' )
@@ -248,10 +248,8 @@ test('keep-alive max keepalive', async (t) => {
248248 socket . write ( '\r\n\r\n' )
249249 } )
250250 after ( ( ) => server . close ( ) )
251+ await once ( server . listen ( 0 ) , 'listening' )
251252
252- server . listen ( 0 )
253-
254- await once ( server , 'listening' )
255253 const client = new Client ( `http://localhost:${ server . address ( ) . port } ` , {
256254 keepAliveTimeout : 30e3 ,
257255 keepAliveMaxTimeout : 1e3
@@ -271,6 +269,7 @@ test('keep-alive max keepalive', async (t) => {
271269 t . ok ( true , 'pass' )
272270 clearTimeout ( timeout )
273271 } )
272+ clock . tick ( 1000 )
274273 } ) . resume ( )
275274 } )
276275 await t . completed
@@ -291,10 +290,8 @@ test('connection close', async (t) => {
291290 socket . write ( '\r\n\r\n' )
292291 } )
293292 after ( ( ) => server . close ( ) )
293+ await once ( server . listen ( 0 ) , 'listening' )
294294
295- server . listen ( 0 )
296-
297- await once ( server , 'listening' )
298295 const client = new Client ( `http://localhost:${ server . address ( ) . port } ` , {
299296 pipelining : 2
300297 } )
@@ -349,10 +346,8 @@ test('Disable keep alive', async (t) => {
349346 res . end ( )
350347 } )
351348 after ( ( ) => server . close ( ) )
349+ await once ( server . listen ( 0 ) , 'listening' )
352350
353- server . listen ( 0 )
354-
355- await once ( server , 'listening' )
356351 const client = new Client ( `http://localhost:${ server . address ( ) . port } ` , { pipelining : 0 } )
357352 after ( ( ) => client . close ( ) )
358353
0 commit comments