diff options
Diffstat (limited to 'test/parallel/test-pipe-stream.js')
-rw-r--r-- | test/parallel/test-pipe-stream.js | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/test/parallel/test-pipe-stream.js b/test/parallel/test-pipe-stream.js new file mode 100644 index 0000000000..693066c2fb --- /dev/null +++ b/test/parallel/test-pipe-stream.js @@ -0,0 +1,68 @@ +'use strict'; +var common = require('../common'); +var assert = require('assert'); +var net = require('net'); + +common.refreshTmpDir(); + +function test(clazz, cb) { + var have_ping = false; + var have_pong = false; + + function check() { + assert.ok(have_ping); + assert.ok(have_pong); + } + + function ping() { + var conn = new clazz(); + + conn.on('error', function(err) { + throw err; + }); + + conn.connect(common.PIPE, function() { + conn.write('PING', 'utf-8'); + }); + + conn.on('data', function(data) { + assert.equal(data.toString(), 'PONG'); + have_pong = true; + conn.destroy(); + }); + } + + function pong(conn) { + conn.on('error', function(err) { + throw err; + }); + + conn.on('data', function(data) { + assert.equal(data.toString(), 'PING'); + have_ping = true; + conn.write('PONG', 'utf-8'); + }); + + conn.on('close', function() { + server.close(); + }); + } + + var timeout = setTimeout(function() { + server.close(); + }, 2000); + + var server = net.Server(); + server.listen(common.PIPE, ping); + server.on('connection', pong); + server.on('close', function() { + clearTimeout(timeout); + check(); + cb && cb(); + }); +} + +test(net.Stream, function() { + test(net.Socket); +}); + |