Enable linting for the test directory. A number of changes was made so all tests conform the current rules used by lib and src directories. The only exception for tests is that unreachable (dead) code is allowed. test-fs-non-number-arguments-throw had to be excluded from the changes because of a weird issue on Windows CI. PR-URL: https://github.com/nodejs/io.js/pull/1721 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
137 lines
2.7 KiB
JavaScript
137 lines
2.7 KiB
JavaScript
'use strict';
|
|
// Regression test for GH-784
|
|
// https://github.com/joyent/node/issues/784
|
|
//
|
|
// The test works by making a total of 8 requests to the server. The first
|
|
// two are made with the server off - they should come back as ECONNREFUSED.
|
|
// The next two are made with server on - they should come back successful.
|
|
// The next two are made with the server off - and so on. Without the fix
|
|
// we were experiencing parse errors and instead of ECONNREFUSED.
|
|
var common = require('../common');
|
|
var http = require('http');
|
|
var assert = require('assert');
|
|
|
|
|
|
var server = http.createServer(function(req, res) {
|
|
var body = '';
|
|
|
|
req.setEncoding('utf8');
|
|
req.on('data', function(chunk) {
|
|
body += chunk;
|
|
});
|
|
|
|
req.on('end', function() {
|
|
assert.equal('PING', body);
|
|
res.writeHead(200);
|
|
res.end('PONG');
|
|
});
|
|
});
|
|
|
|
|
|
server.on('listening', pingping);
|
|
|
|
|
|
function serverOn() {
|
|
console.error('Server ON');
|
|
server.listen(common.PORT);
|
|
}
|
|
|
|
|
|
function serverOff() {
|
|
console.error('Server OFF');
|
|
server.close();
|
|
pingping();
|
|
}
|
|
|
|
var responses = [];
|
|
|
|
|
|
function afterPing(result) {
|
|
responses.push(result);
|
|
console.error('afterPing. responses.length = ' + responses.length);
|
|
switch (responses.length) {
|
|
case 2:
|
|
assert.ok(/ECONNREFUSED/.test(responses[0]));
|
|
assert.ok(/ECONNREFUSED/.test(responses[1]));
|
|
serverOn();
|
|
break;
|
|
|
|
case 4:
|
|
assert.ok(/success/.test(responses[2]));
|
|
assert.ok(/success/.test(responses[3]));
|
|
serverOff();
|
|
break;
|
|
|
|
case 6:
|
|
assert.ok(/ECONNREFUSED/.test(responses[4]));
|
|
assert.ok(/ECONNREFUSED/.test(responses[5]));
|
|
serverOn();
|
|
break;
|
|
|
|
case 8:
|
|
assert.ok(/success/.test(responses[6]));
|
|
assert.ok(/success/.test(responses[7]));
|
|
server.close();
|
|
// we should go to process.on('exit') from here.
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
function ping() {
|
|
console.error('making req');
|
|
|
|
var opt = {
|
|
port: common.PORT,
|
|
path: '/ping',
|
|
method: 'POST'
|
|
};
|
|
|
|
var req = http.request(opt, function(res) {
|
|
var body = '';
|
|
|
|
res.setEncoding('utf8');
|
|
res.on('data', function(chunk) {
|
|
body += chunk;
|
|
});
|
|
|
|
res.on('end', function() {
|
|
assert.equal('PONG', body);
|
|
assert.ok(!hadError);
|
|
gotEnd = true;
|
|
afterPing('success');
|
|
});
|
|
});
|
|
|
|
req.end('PING');
|
|
|
|
var gotEnd = false;
|
|
var hadError = false;
|
|
|
|
req.on('error', function(error) {
|
|
console.log('Error making ping req: ' + error);
|
|
hadError = true;
|
|
assert.ok(!gotEnd);
|
|
afterPing(error.message);
|
|
});
|
|
}
|
|
|
|
|
|
|
|
function pingping() {
|
|
ping();
|
|
ping();
|
|
}
|
|
|
|
|
|
pingping();
|
|
|
|
|
|
|
|
|
|
process.on('exit', function() {
|
|
console.error("process.on('exit')");
|
|
console.error(responses);
|
|
|
|
assert.equal(8, responses.length);
|
|
});
|