Skip to content

Commit f79b58a

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 IoT.js-DCO-1.0-Signed-off-by: Yonggang Luo [email protected]
1 parent c8a49ce commit f79b58a

8 files changed

+338
-283
lines changed

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);

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);

test/run_pass/test_net_http_get.js

+25-23
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ var server = http.createServer(function (req, res) {
4242

4343
});
4444

45-
server.listen(3005,5);
45+
server.listen(3005,5, startTesting);
4646

4747

4848
// 1. GET req
@@ -67,32 +67,34 @@ var getResponseHandler = function (res) {
6767
});
6868
};
6969

70-
http.get(options, getResponseHandler);
70+
function startTesting() {
71+
http.get(options, getResponseHandler);
7172

7273

73-
// 2. close server req
74-
var finalMsg = 'close server';
75-
var finalOptions = {
76-
method : 'POST',
77-
port : 3005,
78-
headers : {'Content-Length': finalMsg.length}
79-
};
74+
// 2. close server req
75+
var finalMsg = 'close server';
76+
var finalOptions = {
77+
method : 'POST',
78+
port : 3005,
79+
headers : {'Content-Length': finalMsg.length}
80+
};
8081

81-
var finalResponseHandler = function (res) {
82-
var res_body = '';
82+
var finalResponseHandler = function (res) {
83+
var res_body = '';
8384

84-
assert.equal(200, res.statusCode);
85+
assert.equal(200, res.statusCode);
8586

86-
var endHandler = function(){
87-
assert.equal(finalMsg, res_body);
88-
};
89-
res.on('end', endHandler);
87+
var endHandler = function(){
88+
assert.equal(finalMsg, res_body);
89+
};
90+
res.on('end', endHandler);
9091

91-
res.on('data', function(chunk){
92-
res_body += chunk.toString();
93-
});
94-
};
92+
res.on('data', function(chunk){
93+
res_body += chunk.toString();
94+
});
95+
};
9596

96-
var finalReq = http.request(finalOptions, finalResponseHandler);
97-
finalReq.write(finalMsg);
98-
finalReq.end();
97+
var finalReq = http.request(finalOptions, finalResponseHandler);
98+
finalReq.write(finalMsg);
99+
finalReq.end();
100+
}

0 commit comments

Comments
 (0)