@@ -5,21 +5,87 @@ const net = require('net');
55const dc = require ( 'diagnostics_channel' ) ;
66
77const isNetSocket = ( socket ) => socket instanceof net . Socket ;
8+ const isNetServer = ( server ) => server instanceof net . Server ;
89
9- dc . subscribe ( 'net.client.socket' , common . mustCall ( ( { socket } ) => {
10- assert . strictEqual ( isNetSocket ( socket ) , true ) ;
11- } ) ) ;
10+ function testDiagnosticChannel ( subscribers , test , after ) {
11+ dc . tracingChannel ( 'net.server.listen' ) . subscribe ( subscribers ) ;
1212
13- dc . subscribe ( 'net.server.socket' , common . mustCall ( ( { socket } ) => {
14- assert . strictEqual ( isNetSocket ( socket ) , true ) ;
15- } ) ) ;
13+ test ( common . mustCall ( ( ) => {
14+ dc . tracingChannel ( 'net.server.listen' ) . unsubscribe ( subscribers ) ;
15+ after ?. ( ) ;
16+ } ) ) ;
17+ }
1618
17- const server = net . createServer ( common . mustCall ( ( socket ) => {
18- socket . destroy ( ) ;
19- server . close ( ) ;
20- } ) ) ;
19+ const testSuccessfullListen = common . mustCall ( ( ) => {
20+ let cb ;
21+ const server = net . createServer ( common . mustCall ( ( socket ) => {
22+ socket . destroy ( ) ;
23+ server . close ( ) ;
24+ cb ( ) ;
25+ } ) ) ;
2126
22- server . listen ( ( ) => {
23- const { port } = server . address ( ) ;
24- net . connect ( port ) ;
27+ dc . subscribe ( 'net.client.socket' , common . mustCall ( ( { socket } ) => {
28+ assert . strictEqual ( isNetSocket ( socket ) , true ) ;
29+ } ) ) ;
30+
31+ dc . subscribe ( 'net.server.socket' , common . mustCall ( ( { socket } ) => {
32+ assert . strictEqual ( isNetSocket ( socket ) , true ) ;
33+ } ) ) ;
34+
35+ testDiagnosticChannel (
36+ {
37+ asyncStart : common . mustCall ( ( { server : currentServer , options } ) => {
38+ assert . strictEqual ( isNetServer ( server ) , true ) ;
39+ assert . strictEqual ( currentServer , server ) ;
40+ assert . strictEqual ( options . customOption , true ) ;
41+ } ) ,
42+ asyncEnd : common . mustCall ( ( { server : currentServer } ) => {
43+ assert . strictEqual ( isNetServer ( server ) , true ) ;
44+ assert . strictEqual ( currentServer , server ) ;
45+ } ) ,
46+ error : common . mustNotCall ( )
47+ } ,
48+ common . mustCall ( ( callback ) => {
49+ cb = callback ;
50+ server . listen ( { port : 0 , customOption : true } , ( ) => {
51+ const { port } = server . address ( ) ;
52+ net . connect ( port ) ;
53+ } ) ;
54+ } ) ,
55+ testFailingListen
56+ ) ;
2557} ) ;
58+
59+ const testFailingListen = common . mustCall ( ( ) => {
60+ const originalServer = net . createServer ( common . mustNotCall ( ) ) ;
61+
62+ originalServer . listen ( ( ) => {
63+ const server = net . createServer ( common . mustNotCall ( ) ) ;
64+
65+ testDiagnosticChannel (
66+ {
67+ asyncStart : common . mustCall ( ( { server : currentServer , options } ) => {
68+ assert . strictEqual ( isNetServer ( server ) , true ) ;
69+ assert . strictEqual ( currentServer , server ) ;
70+ assert . strictEqual ( options . customOption , true ) ;
71+ } ) ,
72+ asyncEnd : common . mustNotCall ( ) ,
73+ error : common . mustCall ( ( { server : currentServer } ) => {
74+ assert . strictEqual ( isNetServer ( server ) , true ) ;
75+ assert . strictEqual ( currentServer , server ) ;
76+ } ) ,
77+ } ,
78+ common . mustCall ( ( callback ) => {
79+ server . on ( 'error' , ( ) => { } ) ;
80+ server . listen ( { port : originalServer . address ( ) . port , customOption : true } ) ;
81+ callback ( ) ;
82+ } ) ,
83+ common . mustCall ( ( ) => {
84+ originalServer . close ( ) ;
85+ server . close ( ) ;
86+ } )
87+ ) ;
88+ } ) ;
89+ } ) ;
90+
91+ testSuccessfullListen ( ) ;
0 commit comments