Skip to content

Commit 615856f

Browse files
committed
Connect when the server ready
==3059== Memcheck, a memory error detector ==3059== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al. ==3059== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info ==3059== Command: /root/work_space/iotjs/build/x86_64-linux/debug/bin/iotjs /root/work_space/iotjs/test/run_pass/test_net_8.js ==3059== AssertionError: {"actual":"1","expected":"12","operator":"=="} AssertionError: {"actual":1,"expected":0,"operator":"=="} ==3059== ==3059== HEAP SUMMARY: ==3059== in use at exit: 0 bytes in 0 blocks ==3059== total heap usage: 131 allocs, 131 frees, 314,345 bytes allocated ==3059== According to this, the server on close event triggered multiple times by close function wait all four connection to end
1 parent bf68c25 commit 615856f

File tree

4 files changed

+133
-98
lines changed

4 files changed

+133
-98
lines changed

Diff for: test/run_pass/test_net_3.js

+41-29
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,17 @@ var assert = require('assert');
1919

2020

2121
var port = 22703;
22-
var limit = 200;
22+
var limit = 233;
2323
var server = net.createServer();
2424

25-
server.listen({ port: port });
25+
server.listen({ port: port }, startTesting);
2626

2727
server.on('connection', function(socket) {
2828
var i = 0;
2929
var writing = function() {
3030
var ok;
3131
do {
32-
ok = socket.write("" + (i % 10));
32+
ok = socket.write('' + (i % 10));
3333
if (++i == limit) {
3434
socket.end();
3535
ok = false;
@@ -40,47 +40,59 @@ server.on('connection', function(socket) {
4040
writing();
4141
});
4242

43-
4443
var msg1 = '';
45-
var socket1 = net.createConnection(port);
44+
var msg2 = '';
45+
var msg3 = '';
46+
var msg4 = '';
47+
var endCount = 0;
48+
var connectListenerCheck = false;
4649

47-
socket1.on('data', function(data) {
48-
msg1 += data;
49-
});
50+
function endCallback() {
51+
endCount += 1;
52+
if (endCount === 4) {
53+
server.close();
54+
}
55+
}
5056

57+
function startTesting() {
58+
var socket1 = net.createConnection(port);
5159

52-
var msg2 = '';
53-
var socket2 = net.createConnection({port: port});
60+
socket1.on('data', function(data) {
61+
msg1 += data;
62+
});
63+
socket1.on('end', endCallback);
5464

55-
socket2.on('data', function(data) {
56-
msg2 += data;
57-
});
5865

66+
var socket2 = net.createConnection({port: port});
5967

60-
var msg3 = '';
61-
var socket3 = net.createConnection({port: port, host: '127.0.0.1'});
68+
socket2.on('data', function(data) {
69+
msg2 += data;
70+
});
71+
socket2.on('end', endCallback);
6272

63-
socket3.on('data', function(data) {
64-
msg3 += data;
65-
});
6673

74+
var socket3 = net.createConnection({port: port, host: '127.0.0.1'});
6775

68-
var msg4 = '';
69-
var connectListenerCheck = false;
70-
var socket4 = net.createConnection({port: port}, function() {
71-
connectListenerCheck = true;
72-
});
76+
socket3.on('data', function(data) {
77+
msg3 += data;
78+
});
79+
socket3.on('end', endCallback);
7380

74-
socket4.on('data', function(data) {
75-
msg4 += data;
76-
});
7781

78-
socket4.on('end', function() {
79-
server.close();
80-
});
82+
var socket4 = net.createConnection({port: port}, function() {
83+
connectListenerCheck = true;
84+
});
85+
86+
socket4.on('data', function(data) {
87+
msg4 += data;
88+
});
8189

90+
socket4.on('end', endCallback);
91+
}
8292

8393
process.on('exit', function(code) {
94+
assert.equal(code, 0);
95+
assert.equal(endCount, 4);
8496
assert.equal(msg1.length, limit);
8597
assert.equal(msg2.length, limit);
8698
assert.equal(msg3.length, limit);

Diff for: test/run_pass/test_net_8.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ server.on('connection', function(socket) {
3232
socket.end(data);
3333
});
3434
socket.on('close', function() {
35-
server.close();
3635
});
3736
});
3837

@@ -46,6 +45,7 @@ sock2.connect(port, 'localhost');
4645

4746
sock1.on('data', function(data) {
4847
msg += data;
48+
sendSock2Data();
4949
});
5050

5151
sock1.on('end', function() {
@@ -58,15 +58,16 @@ sock2.on('data', function(data) {
5858

5959
sock2.on('end', function() {
6060
sock2.end();
61+
server.close();
6162
});
6263

6364
timers.setTimeout(function() {
6465
sock1.write('1');
6566
}, 1000);
6667

67-
timers.setTimeout(function() {
68+
function sendSock2Data() {
6869
sock2.write('2');
69-
}, 2000);
70+
}
7071

7172
process.on('exit', function(code) {
7273
assert.equal(code, 0);

Diff for: test/run_pass/test_tls_3.js

+43-32
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,15 @@ var server_message = '';
2424
var server_closed = false;
2525
var server_handshake_done = false;
2626
var handshake_done = false;
27+
var endCount = 0;
2728

2829
var port = 8080;
2930

3031
var server_options = {
3132
key: fs.readFileSync(process.cwd() + '/resources/my_key.key').toString(),
3233
cert: fs.readFileSync(process.cwd() + '/resources/my_crt.crt'),
3334
rejectUnauthorized: false,
34-
isServer: true
35+
isServer: true,
3536
};
3637

3738
var server = tls.createServer(server_options, function(socket) {
@@ -41,7 +42,7 @@ var server = tls.createServer(server_options, function(socket) {
4142
client_message = data.toString();
4243
});
4344

44-
}).listen(port, function() {});
45+
}).listen(port, startTesting);
4546

4647
server.on('secureConnection', function() {
4748
server_handshake_done = true;
@@ -51,47 +52,57 @@ server.on('close', function() {
5152
server_closed = true;
5253
});
5354

54-
var socket1 = tls.connect(port);
55+
function endCallback() {
56+
endCount += 1;
57+
if (endCount === 3) {
58+
server.close();
59+
}
60+
}
5561

56-
socket1.on('secureConnect', function() {
57-
handshake_done = true;
58-
});
62+
function startTesting() {
63+
var socket1 = tls.connect(port);
5964

60-
socket1.on('data', function(data) {
61-
server_message = data.toString();
62-
socket1.write('Client hello');
63-
socket1.end();
64-
});
65+
socket1.on('secureConnect', function() {
66+
handshake_done = true;
67+
});
6568

66-
var socket2 = tls.connect(port, 'localhost');
69+
socket1.on('data', function(data) {
70+
server_message = data.toString();
71+
socket1.write('Client hello');
72+
socket1.end();
73+
});
74+
socket1.on('end', endCallback);
6775

68-
socket2.on('secureConnect', function() {
69-
handshake_done = true;
70-
});
76+
var socket2 = tls.connect(port, 'localhost');
7177

72-
socket2.on('data', function(data) {
73-
server_message = data.toString();
74-
socket2.write('Client hello');
75-
socket2.end();
76-
});
78+
socket2.on('secureConnect', function() {
79+
handshake_done = true;
80+
});
7781

78-
var socket3 = tls.connect(port, function() {});
82+
socket2.on('data', function(data) {
83+
server_message = data.toString();
84+
socket2.write('Client hello');
85+
socket2.end();
86+
});
87+
socket2.on('end', endCallback);
7988

80-
socket3.on('secureConnect', function() {
81-
handshake_done = true;
82-
});
89+
var socket3 = tls.connect(port, function() {});
8390

84-
socket3.on('data', function(data) {
85-
server_message = data.toString();
86-
socket3.write('Client hello');
87-
socket3.end();
88-
});
91+
socket3.on('secureConnect', function() {
92+
handshake_done = true;
93+
});
8994

90-
socket3.on('end', function() {
91-
server.close();
92-
});
95+
socket3.on('data', function(data) {
96+
server_message = data.toString();
97+
socket3.write('Client hello');
98+
socket3.end();
99+
});
100+
101+
socket3.on('end', endCallback);
102+
}
93103

94104
process.on('exit', function() {
105+
assert.equal(endCount, 3);
95106
assert.equal(handshake_done, true);
96107
assert.equal(server_handshake_done, true);
97108
assert.equal(client_message === expected_client_msg, true);

Diff for: test/run_pass/test_tls_4.js

+45-34
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,15 @@ var server_message = '';
2424
var server_closed = false;
2525
var server_handshake_done = false;
2626
var handshake_done = false;
27+
var endCount = 0;
2728

2829
var port = 8080;
2930

3031
var server_options = {
3132
key: fs.readFileSync(process.cwd() + '/resources/my_key.key').toString(),
3233
cert: fs.readFileSync(process.cwd() + '/resources/my_crt.crt'),
3334
rejectUnauthorized: false,
34-
isServer: true
35+
isServer: true,
3536
};
3637

3738
var server = tls.createServer(server_options, function(socket) {
@@ -41,7 +42,7 @@ var server = tls.createServer(server_options, function(socket) {
4142
client_message = data.toString();
4243
});
4344

44-
}).listen(port, function() { });
45+
}).listen(port, startTesting);
4546

4647
server.on('secureConnection', function() {
4748
server_handshake_done = true;
@@ -51,51 +52,61 @@ server.on('close', function() {
5152
server_closed = true;
5253
});
5354

54-
var socket_options = {
55-
rejectUnauthorized: false,
55+
function endCallback() {
56+
endCount += 1;
57+
if (endCount === 3) {
58+
server.close();
59+
}
5660
}
5761

58-
var socket1 = tls.connect(port, 'localhost', socket_options);
62+
function startTesting() {
63+
var socket_options = {
64+
rejectUnauthorized: false,
65+
};
5966

60-
socket1.on('secureConnect', function() {
61-
handshake_done = true;
62-
});
67+
var socket1 = tls.connect(port, 'localhost', socket_options);
6368

64-
socket1.on('data', function(data) {
65-
server_message = data.toString();
66-
socket1.write('Client hello');
67-
socket1.end();
68-
});
69+
socket1.on('secureConnect', function() {
70+
handshake_done = true;
71+
});
6972

70-
var socket2 = tls.connect(port, 'localhost', socket_options, function() {});
73+
socket1.on('data', function(data) {
74+
server_message = data.toString();
75+
socket1.write('Client hello');
76+
socket1.end();
77+
});
78+
socket1.on('end', endCallback);
7179

72-
socket1.on('secureConnect', function() {
73-
handshake_done = true;
74-
});
80+
var socket2 = tls.connect(port, 'localhost', socket_options, function() {});
7581

76-
socket2.on('data', function(data) {
77-
server_message = data.toString();
78-
socket2.write('Client hello');
79-
socket2.end();
80-
});
82+
socket1.on('secureConnect', function() {
83+
handshake_done = true;
84+
});
8185

82-
var socket3 = tls.connect(port, 'localhost', function() {});
86+
socket2.on('data', function(data) {
87+
server_message = data.toString();
88+
socket2.write('Client hello');
89+
socket2.end();
90+
});
91+
socket2.on('end', endCallback);
8392

84-
socket3.on('secureConnect', function(){
85-
handshake_done = true;
86-
});
93+
var socket3 = tls.connect(port, 'localhost', function() {});
8794

88-
socket3.on('data', function(data) {
89-
server_message = data.toString();
90-
socket3.write('Client hello');
91-
socket3.end();
92-
});
95+
socket3.on('secureConnect', function() {
96+
handshake_done = true;
97+
});
9398

94-
socket3.on('end', function() {
95-
server.close();
96-
});
99+
socket3.on('data', function(data) {
100+
server_message = data.toString();
101+
socket3.write('Client hello');
102+
socket3.end();
103+
});
104+
105+
socket3.on('end', endCallback);
106+
}
97107

98108
process.on('exit', function() {
109+
assert.equal(endCount, 3);
99110
assert.equal(handshake_done, true);
100111
assert.equal(server_handshake_done, true);
101112
assert.equal(client_message === expected_client_msg, true);

0 commit comments

Comments
 (0)