Skip to content

Commit 01073bc

Browse files
davidtaikochaMylesBorins
authored andcommitted
test: add internal/socket_list tests
PR-URL: #12109 Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent 7cc68e2 commit 01073bc

2 files changed

Lines changed: 181 additions & 0 deletions

File tree

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
// Flags: --expose-internals
2+
'use strict';
3+
4+
constcommon=require('../common');
5+
constassert=require('assert');
6+
constEventEmitter=require('events');
7+
constSocketListReceive=require('internal/socket_list').SocketListReceive;
8+
9+
constkey='test-key';
10+
11+
// Verify that the message won't be sent when slave is not connected.
12+
{
13+
constslave=Object.assign(newEventEmitter(),{
14+
connected: false,
15+
send: common.mustNotCall()
16+
});
17+
18+
constlist=newSocketListReceive(slave,key);
19+
list.slave.emit('internalMessage',{ key,cmd: 'NODE_SOCKET_NOTIFY_CLOSE'});
20+
}
21+
22+
// Verify that a "NODE_SOCKET_ALL_CLOSED" message will be sent.
23+
{
24+
constslave=Object.assign(newEventEmitter(),{
25+
connected: true,
26+
send: common.mustCall((msg)=>{
27+
assert.strictEqual(msg.cmd,'NODE_SOCKET_ALL_CLOSED');
28+
assert.strictEqual(msg.key,key);
29+
})
30+
});
31+
32+
constlist=newSocketListReceive(slave,key);
33+
list.slave.emit('internalMessage',{ key,cmd: 'NODE_SOCKET_NOTIFY_CLOSE'});
34+
}
35+
36+
// Verify that a "NODE_SOCKET_COUNT" message will be sent.
37+
{
38+
constslave=Object.assign(newEventEmitter(),{
39+
connected: true,
40+
send: common.mustCall((msg)=>{
41+
assert.strictEqual(msg.cmd,'NODE_SOCKET_COUNT');
42+
assert.strictEqual(msg.key,key);
43+
assert.strictEqual(msg.count,0);
44+
})
45+
});
46+
47+
constlist=newSocketListReceive(slave,key);
48+
list.slave.emit('internalMessage',{ key,cmd: 'NODE_SOCKET_GET_COUNT'});
49+
}
50+
51+
// Verify that the connections count is added and an "empty" event
52+
// will be emitted when all sockets in obj were closed.
53+
{
54+
constslave=newEventEmitter();
55+
constobj={socket: newEventEmitter()};
56+
57+
constlist=newSocketListReceive(slave,key);
58+
assert.strictEqual(list.connections,0);
59+
60+
list.add(obj);
61+
assert.strictEqual(list.connections,1);
62+
63+
list.on('empty',common.mustCall((self)=>assert.strictEqual(self,list)));
64+
65+
obj.socket.emit('close');
66+
assert.strictEqual(list.connections,0);
67+
}
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
// Flags: --expose-internals
2+
'use strict';
3+
4+
constcommon=require('../common');
5+
constassert=require('assert');
6+
constEventEmitter=require('events');
7+
constSocketListSend=require('internal/socket_list').SocketListSend;
8+
9+
constkey='test-key';
10+
11+
// Verify that an error will be received in callback when slave is not
12+
// connected.
13+
{
14+
constslave=Object.assign(newEventEmitter(),{connected: false});
15+
assert.strictEqual(slave.listenerCount('internalMessage'),0);
16+
17+
constlist=newSocketListSend(slave,'test');
18+
19+
list._request('msg','cmd',common.mustCall((err)=>{
20+
assert.strictEqual(err.message,'Slave closed before reply');
21+
assert.strictEqual(slave.listenerCount('internalMessage'),0);
22+
}));
23+
}
24+
25+
// Verify that the given message will be received in callback.
26+
{
27+
constslave=Object.assign(newEventEmitter(),{
28+
connected: true,
29+
send: function(msg){
30+
process.nextTick(()=>
31+
this.emit('internalMessage',{ key,cmd: 'cmd'})
32+
);
33+
}
34+
});
35+
36+
constlist=newSocketListSend(slave,key);
37+
38+
list._request('msg','cmd',common.mustCall((err,msg)=>{
39+
assert.strictEqual(err,null);
40+
assert.strictEqual(msg.cmd,'cmd');
41+
assert.strictEqual(msg.key,key);
42+
assert.strictEqual(slave.listenerCount('internalMessage'),0);
43+
assert.strictEqual(slave.listenerCount('disconnect'),0);
44+
}));
45+
}
46+
47+
// Verify that an error will be received in callback when slave was
48+
// disconnected.
49+
{
50+
constslave=Object.assign(newEventEmitter(),{
51+
connected: true,
52+
send: function(msg){process.nextTick(()=>this.emit('disconnect'));}
53+
});
54+
55+
constlist=newSocketListSend(slave,key);
56+
57+
list._request('msg','cmd',common.mustCall((err)=>{
58+
assert.strictEqual(err.message,'Slave closed before reply');
59+
assert.strictEqual(slave.listenerCount('internalMessage'),0);
60+
}));
61+
}
62+
63+
// Verify that a "NODE_SOCKET_ALL_CLOSED" message will be received
64+
// in callback.
65+
{
66+
constslave=Object.assign(newEventEmitter(),{
67+
connected: true,
68+
send: function(msg){
69+
assert.strictEqual(msg.cmd,'NODE_SOCKET_NOTIFY_CLOSE');
70+
assert.strictEqual(msg.key,key);
71+
process.nextTick(()=>
72+
this.emit('internalMessage',{ key,cmd: 'NODE_SOCKET_ALL_CLOSED'})
73+
);
74+
}
75+
});
76+
77+
constlist=newSocketListSend(slave,key);
78+
79+
list.close(common.mustCall((err,msg)=>{
80+
assert.strictEqual(err,null);
81+
assert.strictEqual(msg.cmd,'NODE_SOCKET_ALL_CLOSED');
82+
assert.strictEqual(msg.key,key);
83+
assert.strictEqual(slave.listenerCount('internalMessage'),0);
84+
assert.strictEqual(slave.listenerCount('disconnect'),0);
85+
}));
86+
}
87+
88+
// Verify that the count of connections will be received in callback.
89+
{
90+
constcount=1;
91+
constslave=Object.assign(newEventEmitter(),{
92+
connected: true,
93+
send: function(msg){
94+
assert.strictEqual(msg.cmd,'NODE_SOCKET_GET_COUNT');
95+
assert.strictEqual(msg.key,key);
96+
process.nextTick(()=>
97+
this.emit('internalMessage',{
98+
key,
99+
count,
100+
cmd: 'NODE_SOCKET_COUNT'
101+
})
102+
);
103+
}
104+
});
105+
106+
constlist=newSocketListSend(slave,key);
107+
108+
list.getConnections(common.mustCall((err,msg)=>{
109+
assert.strictEqual(err,null);
110+
assert.strictEqual(msg,count);
111+
assert.strictEqual(slave.listenerCount('internalMessage'),0);
112+
assert.strictEqual(slave.listenerCount('disconnect'),0);
113+
}));
114+
}

0 commit comments

Comments
 (0)