Skip to content

Commit 60ff181

Browse files
committed
[test] Add core test-http-upload-timeout test
Modifications: * make client connect to `PROXY_PORT` instead of `PORT`
1 parent 98bbe54 commit 60ff181

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
// Copyright Joyent, Inc. and other Node contributors.
2+
//
3+
// Permission is hereby granted, free of charge, to any person obtaining a
4+
// copy of this software and associated documentation files (the
5+
// "Software"), to deal in the Software without restriction, including
6+
// without limitation the rights to use, copy, modify, merge, publish,
7+
// distribute, sublicense, and/or sell copies of the Software, and to permit
8+
// persons to whom the Software is furnished to do so, subject to the
9+
// following conditions:
10+
//
11+
// The above copyright notice and this permission notice shall be included
12+
// in all copies or substantial portions of the Software.
13+
//
14+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15+
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16+
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
17+
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18+
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19+
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20+
// USE OR OTHER DEALINGS IN THE SOFTWARE.
21+
22+
// This tests setTimeout() by having multiple clients connecting and sending
23+
// data in random intervals. Clients are also randomly disconnecting until there
24+
// are no more clients left. If no false timeout occurs, this test has passed.
25+
var common = require('../common'),
26+
assert = require('assert'),
27+
http = require('http'),
28+
server = http.createServer(),
29+
connections = 0;
30+
31+
server.on('request', function(req, res) {
32+
req.socket.setTimeout(1000);
33+
req.socket.on('timeout', function() {
34+
throw new Error('Unexpected timeout');
35+
});
36+
req.on('end', function() {
37+
connections--;
38+
res.writeHead(200);
39+
res.end('done\n');
40+
if (connections == 0) {
41+
server.close();
42+
}
43+
});
44+
});
45+
46+
server.listen(common.PORT, '127.0.0.1', function() {
47+
for (var i = 0; i < 10; i++) {
48+
connections++;
49+
50+
setTimeout(function() {
51+
var request = http.request({
52+
port: common.PROXY_PORT,
53+
method: 'POST',
54+
path: '/'
55+
});
56+
57+
function ping() {
58+
var nextPing = (Math.random() * 900).toFixed();
59+
if (nextPing > 600) {
60+
request.end();
61+
return;
62+
}
63+
request.write('ping');
64+
setTimeout(ping, nextPing);
65+
}
66+
ping();
67+
}, i * 50);
68+
}
69+
});

0 commit comments

Comments
 (0)