@@ -5,21 +5,87 @@ const net = require('net');
5
5
const dc = require ( 'diagnostics_channel' ) ;
6
6
7
7
const isNetSocket = ( socket ) => socket instanceof net . Socket ;
8
+ const isNetServer = ( server ) => server instanceof net . Server ;
8
9
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 ) ;
12
12
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
+ }
16
18
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
+ } ) ) ;
21
26
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
+ ) ;
25
57
} ) ;
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