11const assert = require ( 'assert' ) ;
22const http = require ( 'http' ) ;
3- const url = require ( 'url' ) ;
43
5- describe ( 'close([options])' , function ( ) {
6-
7- let server ;
8- beforeEach ( function ( ) {
9- server = this . helpers . createServer ( ) ;
10- return server . onReady ( ) ;
11- } ) ;
12-
13- afterEach ( function ( ) {
14- if ( server ) return server . close ( ) ;
15- } ) ;
4+ describe . only ( 'close([options])' , function ( ) {
165
176 describe ( 'force' , function ( ) {
187
8+ let server ;
199 beforeEach ( function ( ) {
20- const numSockets = 3 ;
21- return Promise . all ( Array . from ( Array ( numSockets ) ) . map ( ( ) => {
22- return new Promise ( ( resolve , reject ) => {
23- const { hostname, port, path } = url . parse ( `http://${ server . options . host } :${ server . options . port } /status` ) ;
24- const req = http . request ( {
25- agent : new http . Agent ( {
26- keepAlive : true ,
27- // Infinity is read as 50 sockets:
28- maxSockets : Infinity
29- } ) ,
30- method : 'GET' ,
31- hostname,
32- port,
33- path,
34- } , ( ) => resolve ( ) ) ;
35- req . once ( 'error' , reject ) ;
36- req . end ( ) ;
37- } ) ;
38- } ) ) ;
10+ server = this . helpers . createServer ( ) ;
11+ return server . onReady ( ) ;
12+ } ) ;
13+
14+ beforeEach ( function ( ) {
15+ server . bindToHook ( 'status' , ( req , res , next ) => {
16+ // Delay here so that the socket is not closed immediately.
17+ setTimeout ( next , 500 ) ;
18+ } ) ;
19+ Array . from ( Array ( 3 ) ) . forEach ( ( ) => {
20+ const req = http . get ( server . getUrl ( '/status' ) , ( ) => { } ) ;
21+ req . on ( 'error' , ( ) => { } ) ;
22+ } ) ;
23+ return new Promise ( ( resolve , reject ) => {
24+ setTimeout ( resolve , 50 ) ;
25+ } ) ;
3926 } ) ;
4027
4128 describe ( 'true' , function ( ) {
@@ -60,16 +47,26 @@ describe('close([options])', function() {
6047
6148 it ( 'does not force-close all sockets' , function ( ) {
6249 return server . close ( { force : false } ) . then ( ( ) => {
50+ let atleastOneSocketNotClosed = false ;
6351 Object . entries ( server . sockets ) . forEach ( ( [ id , socket ] , index ) => {
64- assert . notStrictEqual ( socket , null ) ;
52+ if ( socket ) {
53+ atleastOneSocketNotClosed = true ;
54+ }
6555 } ) ;
56+ assert . ok ( atleastOneSocketNotClosed ) ;
6657 } ) ;
6758 } ) ;
6859 } ) ;
6960 } ) ;
7061
7162 describe ( 'store' , function ( ) {
7263
64+ let server ;
65+ beforeEach ( function ( ) {
66+ server = this . helpers . createServer ( ) ;
67+ return server . onReady ( ) ;
68+ } ) ;
69+
7370 describe ( 'true' , function ( ) {
7471
7572 it ( 'closes the data store' , function ( ) {
@@ -81,10 +78,6 @@ describe('close([options])', function() {
8178
8279 describe ( 'false' , function ( ) {
8380
84- afterEach ( function ( ) {
85- return server . store . close ( ) ;
86- } ) ;
87-
8881 it ( 'does not close the data store' , function ( ) {
8982 return server . close ( { store : false } ) . then ( ( ) => {
9083 assert . notStrictEqual ( server . store , null ) ;
0 commit comments