summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/parallel/test-http-set-trailers.js72
1 files changed, 29 insertions, 43 deletions
diff --git a/test/parallel/test-http-set-trailers.js b/test/parallel/test-http-set-trailers.js
index 921c456bda..2197de9b0b 100644
--- a/test/parallel/test-http-set-trailers.js
+++ b/test/parallel/test-http-set-trailers.js
@@ -26,29 +26,18 @@ const http = require('http');
const net = require('net');
const util = require('util');
-let outstanding_reqs = 0;
-
-const server = http.createServer(function(req, res) {
- res.writeHead(200, [['content-type', 'text/plain']]);
- res.addTrailers({ 'x-foo': 'bar' });
- res.end('stuff\n');
-});
-server.listen(0);
-
-
// First, we test an HTTP/1.0 request.
-server.on('listening', function() {
- const c = net.createConnection(this.address().port);
- let res_buffer = '';
+function testHttp10(port, callback) {
+ const c = net.createConnection(port);
c.setEncoding('utf8');
- c.on('connect', function() {
- outstanding_reqs++;
+ c.on('connect', () => {
c.write('GET / HTTP/1.0\r\n\r\n');
});
- c.on('data', function(chunk) {
+ let res_buffer = '';
+ c.on('data', (chunk) => {
res_buffer += chunk;
});
@@ -56,61 +45,58 @@ server.on('listening', function() {
c.end();
assert.ok(
!/x-foo/.test(res_buffer),
- `Trailer in HTTP/1.0 response. Response buffer: ${res_buffer}`
+ `No trailer in HTTP/1.0 response. Response buffer: ${res_buffer}`
);
- outstanding_reqs--;
- if (outstanding_reqs === 0) {
- server.close();
- }
+ callback();
});
-});
+}
// Now, we test an HTTP/1.1 request.
-server.on('listening', function() {
- const c = net.createConnection(this.address().port);
- let res_buffer = '';
- let tid;
+function testHttp11(port, callback) {
+ const c = net.createConnection(port);
c.setEncoding('utf8');
+ let tid;
c.on('connect', function() {
- outstanding_reqs++;
c.write('GET / HTTP/1.1\r\n\r\n');
tid = setTimeout(common.mustNotCall(), 2000, 'Couldn\'t find last chunk.');
});
+ let res_buffer = '';
c.on('data', function(chunk) {
res_buffer += chunk;
if (/0\r\n/.test(res_buffer)) { // got the end.
- outstanding_reqs--;
clearTimeout(tid);
assert.ok(
/0\r\nx-foo: bar\r\n\r\n$/.test(res_buffer),
`No trailer in HTTP/1.1 response. Response buffer: ${res_buffer}`
);
- if (outstanding_reqs === 0) {
- server.close();
- }
+ callback();
}
});
-});
+}
// Now, see if the client sees the trailers.
-server.on('listening', function() {
- http.get({
- port: this.address().port,
- path: '/hello',
- headers: {}
- }, function(res) {
+function testClientTrailers(port, callback) {
+ http.get({ port, path: '/hello', headers: {} }, (res) => {
res.on('end', function() {
assert.ok('x-foo' in res.trailers,
`${util.inspect(res.trailers)} misses the 'x-foo' property`);
- outstanding_reqs--;
- if (outstanding_reqs === 0) {
- server.close();
- }
+ callback();
});
res.resume();
});
- outstanding_reqs++;
+}
+
+const server = http.createServer((req, res) => {
+ res.writeHead(200, [['content-type', 'text/plain']]);
+ res.addTrailers({ 'x-foo': 'bar' });
+ res.end('stuff\n');
+});
+server.listen(0, () => {
+ Promise.all([testHttp10, testHttp11, testClientTrailers]
+ .map(util.promisify)
+ .map((f) => f(server.address().port)))
+ .then(() => server.close());
});