@@ -10,25 +10,29 @@ const tmpdir = require('../common/tmpdir');
1010if ( common . isWindows )
1111 common . skip ( 'no setSimultaneousAccepts on pipe handle' ) ;
1212
13- let connectionCount = 0 ;
14- let listenCount = 0 ;
13+ const totalConns = 10 ;
14+ const totalWorkers = 3 ;
15+ let worker0 ;
1516let worker1 ;
1617let worker2 ;
18+ let connectionCount = 0 ;
19+ let listenCount = 0 ;
1720
1821function request ( path ) {
19- for ( let i = 0 ; i < 10 ; i ++ ) {
22+ for ( let i = 0 ; i < totalConns ; i ++ ) {
2023 net . connect ( path ) ;
2124 }
2225}
2326
2427function handleMessage ( message ) {
2528 assert . match ( message . action , / l i s t e n | c o n n e c t i o n / ) ;
2629 if ( message . action === 'listen' ) {
27- if ( ++ listenCount === 2 ) {
30+ if ( ++ listenCount === totalWorkers ) {
2831 request ( common . PIPE ) ;
2932 }
3033 } else if ( message . action === 'connection' ) {
31- if ( ++ connectionCount === 10 ) {
34+ if ( ++ connectionCount === totalConns ) {
35+ worker0 . send ( { action : 'disconnect' } ) ;
3236 worker1 . send ( { action : 'disconnect' } ) ;
3337 worker2 . send ( { action : 'disconnect' } ) ;
3438 }
@@ -38,8 +42,13 @@ function handleMessage(message) {
3842if ( cluster . isPrimary ) {
3943 cluster . schedulingPolicy = cluster . SCHED_RR ;
4044 tmpdir . refresh ( ) ;
45+ worker0 = cluster . fork ( { maxConnections : 0 , pipePath : common . PIPE } ) ;
4146 worker1 = cluster . fork ( { maxConnections : 1 , pipePath : common . PIPE } ) ;
4247 worker2 = cluster . fork ( { maxConnections : 9 , pipePath : common . PIPE } ) ;
48+ // expected = { action: 'listen' } + maxConnections * { action: 'connection' }
49+ worker0 . on ( 'message' , common . mustCall ( ( message ) => {
50+ handleMessage ( message ) ;
51+ } , 1 ) ) ;
4352 worker1 . on ( 'message' , common . mustCall ( ( message ) => {
4453 handleMessage ( message ) ;
4554 } , 2 ) ) ;
0 commit comments