summaryrefslogtreecommitdiff
path: root/test/parallel/test-socket-write-after-fin-error.js
diff options
context:
space:
mode:
authorSantiago Gimeno <santiago.gimeno@gmail.com>2016-04-05 19:08:01 +0200
committerJames M Snell <jasnell@gmail.com>2016-04-08 17:12:33 -0700
commiteaab17c6a79462da5f3ac037722719ad1606e8cf (patch)
treec5b0bf27a9784757b678edbbd38bf58eeac20520 /test/parallel/test-socket-write-after-fin-error.js
parenta9aa1995433ddc4d65abb473b79d78aba4ebce4b (diff)
downloadandroid-node-v8-eaab17c6a79462da5f3ac037722719ad1606e8cf.tar.gz
android-node-v8-eaab17c6a79462da5f3ac037722719ad1606e8cf.tar.bz2
android-node-v8-eaab17c6a79462da5f3ac037722719ad1606e8cf.zip
test: move some test from sequential to parallel
The only test with modifications is `test-stdin-child-proc` that was passing when it should not because the exit code of the child process was not being checked. PR-URL: https://github.com/nodejs/node/pull/6087 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Johan Bergström <bugs@bergstroem.nu> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com> Reviewed-By: Claudio Rodriguez <cjrodr@yahoo.com>
Diffstat (limited to 'test/parallel/test-socket-write-after-fin-error.js')
-rw-r--r--test/parallel/test-socket-write-after-fin-error.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/test/parallel/test-socket-write-after-fin-error.js b/test/parallel/test-socket-write-after-fin-error.js
new file mode 100644
index 0000000000..226440ec50
--- /dev/null
+++ b/test/parallel/test-socket-write-after-fin-error.js
@@ -0,0 +1,60 @@
+'use strict';
+var common = require('../common');
+var assert = require('assert');
+
+// This is similar to simple/test-socket-write-after-fin, except that
+// we don't set allowHalfOpen. Then we write after the client has sent
+// a FIN, and this is an error. However, the standard "write after end"
+// message is too vague, and doesn't actually tell you what happens.
+
+var net = require('net');
+var serverData = '';
+var gotServerEnd = false;
+var clientData = '';
+var gotClientEnd = false;
+var gotServerError = false;
+
+var server = net.createServer(function(sock) {
+ sock.setEncoding('utf8');
+ sock.on('error', function(er) {
+ console.error(er.code + ': ' + er.message);
+ gotServerError = er;
+ });
+
+ sock.on('data', function(c) {
+ serverData += c;
+ });
+ sock.on('end', function() {
+ gotServerEnd = true;
+ sock.write(serverData);
+ sock.end();
+ });
+ server.close();
+});
+server.listen(common.PORT);
+
+var sock = net.connect(common.PORT);
+sock.setEncoding('utf8');
+sock.on('data', function(c) {
+ clientData += c;
+});
+
+sock.on('end', function() {
+ gotClientEnd = true;
+});
+
+process.on('exit', function() {
+ assert.equal(clientData, '');
+ assert.equal(serverData, 'hello1hello2hello3\nTHUNDERMUSCLE!');
+ assert(gotClientEnd);
+ assert(gotServerEnd);
+ assert(gotServerError);
+ assert.equal(gotServerError.code, 'EPIPE');
+ assert.notEqual(gotServerError.message, 'write after end');
+ console.log('ok');
+});
+
+sock.write('hello1');
+sock.write('hello2');
+sock.write('hello3\n');
+sock.end('THUNDERMUSCLE!');