Blame SOURCES/disable-some-tests.patch

92c11c
From c6b09606aaf7e14ad4ecc0abf7f25d107f52bba2 Mon Sep 17 00:00:00 2001
92c11c
From: Tomas Hrcka <thrcka@redhat.com>
92c11c
Date: Thu, 19 Mar 2015 09:49:41 +0100
92c11c
Subject: [PATCH] Disable some tests
92c11c
92c11c
---
92c11c
 .../disabled/koji/test-child-process-fork-dgram.js | 122 +++++++++++
92c11c
 test/disabled/koji/test-crypto-dh-odd-key.js       |  31 +++
92c11c
 test/disabled/koji/test-crypto-stream.js           |  76 +++++++
92c11c
 test/disabled/koji/test-debugger-client.js         | 232 ++++++++++++++++++++
92c11c
 test/disabled/koji/test-debugger-repl-utf8.js      |  27 +++
92c11c
 test/disabled/koji/test-debugger-repl.js           |  77 +++++++
92c11c
 .../koji/test-dgram-broadcast-multi-process.js     | 240 +++++++++++++++++++++
92c11c
 test/disabled/koji/test-fs-readfile-error.js       |  64 ++++++
92c11c
 test/disabled/koji/test-http-curl-chunk-problem.js |  85 ++++++++
92c11c
 .../koji/test-http-many-keep-alive-connections.js  |  69 ++++++
92c11c
 test/disabled/koji/test-net-GH-5504.js             | 123 +++++++++++
92c11c
 test/disabled/koji/test-setproctitle.js            |  52 +++++
92c11c
 test/disabled/koji/test-stdout-close-unref.js      |  24 +++
92c11c
 test/disabled/koji/test-timers-ordering.js         |  48 +++++
92c11c
 test/disabled/koji/test-tls-securepair-client.js   | 201 +++++++++++++++++
92c11c
 test/disabled/koji/test-tls-securepair-server.js   | 154 +++++++++++++
92c11c
 test/disabled/koji/test-tls-set-ciphers.js         |  62 ++++++
92c11c
 test/simple/test-child-process-fork-dgram.js       | 122 -----------
92c11c
 test/simple/test-crypto-dh-odd-key.js              |  31 ---
92c11c
 test/simple/test-crypto-stream.js                  |  76 -------
92c11c
 test/simple/test-debugger-client.js                | 232 --------------------
92c11c
 test/simple/test-debugger-repl-utf8.js             |  27 ---
92c11c
 test/simple/test-debugger-repl.js                  |  77 -------
92c11c
 test/simple/test-dgram-broadcast-multi-process.js  | 240 ---------------------
92c11c
 test/simple/test-fs-readfile-error.js              |  64 ------
92c11c
 test/simple/test-http-curl-chunk-problem.js        |  85 --------
92c11c
 .../test-http-many-keep-alive-connections.js       |  69 ------
92c11c
 test/simple/test-net-GH-5504.js                    | 123 -----------
92c11c
 test/simple/test-setproctitle.js                   |  52 -----
92c11c
 test/simple/test-stdout-close-unref.js             |  24 ---
92c11c
 test/simple/test-timers-ordering.js                |  48 -----
92c11c
 test/simple/test-tls-securepair-client.js          | 201 -----------------
92c11c
 test/simple/test-tls-securepair-server.js          | 154 -------------
92c11c
 test/simple/test-tls-set-ciphers.js                |  62 ------
92c11c
 34 files changed, 1687 insertions(+), 1687 deletions(-)
92c11c
 create mode 100644 test/disabled/koji/test-child-process-fork-dgram.js
92c11c
 create mode 100644 test/disabled/koji/test-crypto-dh-odd-key.js
92c11c
 create mode 100644 test/disabled/koji/test-crypto-stream.js
92c11c
 create mode 100644 test/disabled/koji/test-debugger-client.js
92c11c
 create mode 100644 test/disabled/koji/test-debugger-repl-utf8.js
92c11c
 create mode 100644 test/disabled/koji/test-debugger-repl.js
92c11c
 create mode 100644 test/disabled/koji/test-dgram-broadcast-multi-process.js
92c11c
 create mode 100644 test/disabled/koji/test-fs-readfile-error.js
92c11c
 create mode 100644 test/disabled/koji/test-http-curl-chunk-problem.js
92c11c
 create mode 100644 test/disabled/koji/test-http-many-keep-alive-connections.js
92c11c
 create mode 100644 test/disabled/koji/test-net-GH-5504.js
92c11c
 create mode 100644 test/disabled/koji/test-setproctitle.js
92c11c
 create mode 100644 test/disabled/koji/test-stdout-close-unref.js
92c11c
 create mode 100644 test/disabled/koji/test-timers-ordering.js
92c11c
 create mode 100644 test/disabled/koji/test-tls-securepair-client.js
92c11c
 create mode 100644 test/disabled/koji/test-tls-securepair-server.js
92c11c
 create mode 100644 test/disabled/koji/test-tls-set-ciphers.js
92c11c
 delete mode 100644 test/simple/test-child-process-fork-dgram.js
92c11c
 delete mode 100644 test/simple/test-crypto-dh-odd-key.js
92c11c
 delete mode 100644 test/simple/test-crypto-stream.js
92c11c
 delete mode 100644 test/simple/test-debugger-client.js
92c11c
 delete mode 100644 test/simple/test-debugger-repl-utf8.js
92c11c
 delete mode 100644 test/simple/test-debugger-repl.js
92c11c
 delete mode 100644 test/simple/test-dgram-broadcast-multi-process.js
92c11c
 delete mode 100644 test/simple/test-fs-readfile-error.js
92c11c
 delete mode 100644 test/simple/test-http-curl-chunk-problem.js
92c11c
 delete mode 100644 test/simple/test-http-many-keep-alive-connections.js
92c11c
 delete mode 100644 test/simple/test-net-GH-5504.js
92c11c
 delete mode 100644 test/simple/test-setproctitle.js
92c11c
 delete mode 100644 test/simple/test-stdout-close-unref.js
92c11c
 delete mode 100644 test/simple/test-timers-ordering.js
92c11c
 delete mode 100644 test/simple/test-tls-securepair-client.js
92c11c
 delete mode 100644 test/simple/test-tls-securepair-server.js
92c11c
 delete mode 100644 test/simple/test-tls-set-ciphers.js
92c11c
92c11c
diff --git a/test/disabled/koji/test-child-process-fork-dgram.js b/test/disabled/koji/test-child-process-fork-dgram.js
92c11c
new file mode 100644
92c11c
index 0000000..1c4e9ac
92c11c
--- /dev/null
92c11c
+++ b/test/disabled/koji/test-child-process-fork-dgram.js
92c11c
@@ -0,0 +1,122 @@
92c11c
+// Copyright Joyent, Inc. and other Node contributors.
92c11c
+//
92c11c
+// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
+// copy of this software and associated documentation files (the
92c11c
+// "Software"), to deal in the Software without restriction, including
92c11c
+// without limitation the rights to use, copy, modify, merge, publish,
92c11c
+// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
+// persons to whom the Software is furnished to do so, subject to the
92c11c
+// following conditions:
92c11c
+//
92c11c
+// The above copyright notice and this permission notice shall be included
92c11c
+// in all copies or substantial portions of the Software.
92c11c
+//
92c11c
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
+
92c11c
+/*
92c11c
+ * The purpose of this test is to make sure that when forking a process,
92c11c
+ * sending a fd representing a UDP socket to the child and sending messages
92c11c
+ * to this endpoint, these messages are distributed to the parent and the
92c11c
+ * child process.
92c11c
+ *
92c11c
+ * Because it's not really possible to predict how the messages will be
92c11c
+ * distributed among the parent and the child processes, we keep sending
92c11c
+ * messages until both the parent and the child received at least one
92c11c
+ * message. The worst case scenario is when either one never receives
92c11c
+ * a message. In this case the test runner will timeout after 60 secs
92c11c
+ * and the test will fail.
92c11c
+ */
92c11c
+
92c11c
+var dgram = require('dgram');
92c11c
+var fork = require('child_process').fork;
92c11c
+var assert = require('assert');
92c11c
+var common = require('../common');
92c11c
+
92c11c
+if (process.platform === 'win32') {
92c11c
+  console.error('Sending dgram sockets to child processes not supported');
92c11c
+  process.exit(0);
92c11c
+}
92c11c
+
92c11c
+if (process.argv[2] === 'child') {
92c11c
+  var childCollected = 0;
92c11c
+  var server;
92c11c
+
92c11c
+  process.on('message', function removeMe(msg, clusterServer) {
92c11c
+    if (msg === 'server') {
92c11c
+      server = clusterServer;
92c11c
+
92c11c
+      server.on('message', function () {
92c11c
+        process.send('gotMessage');
92c11c
+      });
92c11c
+
92c11c
+    } else if (msg === 'stop') {
92c11c
+      server.close();
92c11c
+      process.removeListener('message', removeMe);
92c11c
+    }
92c11c
+  });
92c11c
+
92c11c
+} else {
92c11c
+  var server = dgram.createSocket('udp4');
92c11c
+  var client = dgram.createSocket('udp4');
92c11c
+  var child = fork(__filename, ['child']);
92c11c
+
92c11c
+  var msg = new Buffer('Some bytes');
92c11c
+
92c11c
+  var childGotMessage = false;
92c11c
+  var parentGotMessage = false;
92c11c
+
92c11c
+  server.on('message', function (msg, rinfo) {
92c11c
+    parentGotMessage = true;
92c11c
+  });
92c11c
+
92c11c
+  server.on('listening', function () {
92c11c
+    child.send('server', server);
92c11c
+
92c11c
+    child.once('message', function (msg) {
92c11c
+      if (msg === 'gotMessage') {
92c11c
+        childGotMessage = true;
92c11c
+      }
92c11c
+    });
92c11c
+
92c11c
+    sendMessages();
92c11c
+  });
92c11c
+
92c11c
+  var sendMessages = function () {
92c11c
+    var timer = setInterval(function () {
92c11c
+      client.send(msg, 0, msg.length, common.PORT, '127.0.0.1', function(err) {
92c11c
+          if (err) throw err;
92c11c
+        }
92c11c
+      );
92c11c
+
92c11c
+      /*
92c11c
+       * Both the parent and the child got at least one message,
92c11c
+       * test passed, clean up everyting.
92c11c
+       */
92c11c
+      if (parentGotMessage && childGotMessage) {
92c11c
+        clearInterval(timer);
92c11c
+        shutdown();
92c11c
+      }
92c11c
+
92c11c
+    }, 1);
92c11c
+  };
92c11c
+
92c11c
+  var shutdown = function () {
92c11c
+    child.send('stop');
92c11c
+
92c11c
+    server.close();
92c11c
+    client.close();
92c11c
+  };
92c11c
+
92c11c
+  server.bind(common.PORT, '127.0.0.1');
92c11c
+
92c11c
+  process.once('exit', function () {
92c11c
+    assert(parentGotMessage);
92c11c
+    assert(childGotMessage);
92c11c
+  });
92c11c
+}
92c11c
diff --git a/test/disabled/koji/test-crypto-dh-odd-key.js b/test/disabled/koji/test-crypto-dh-odd-key.js
92c11c
new file mode 100644
92c11c
index 0000000..a3d99e9
92c11c
--- /dev/null
92c11c
+++ b/test/disabled/koji/test-crypto-dh-odd-key.js
92c11c
@@ -0,0 +1,31 @@
92c11c
+// Copyright Joyent, Inc. and other Node contributors.
92c11c
+//
92c11c
+// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
+// copy of this software and associated documentation files (the
92c11c
+// "Software"), to deal in the Software without restriction, including
92c11c
+// without limitation the rights to use, copy, modify, merge, publish,
92c11c
+// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
+// persons to whom the Software is furnished to do so, subject to the
92c11c
+// following conditions:
92c11c
+//
92c11c
+// The above copyright notice and this permission notice shall be included
92c11c
+// in all copies or substantial portions of the Software.
92c11c
+//
92c11c
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
+
92c11c
+var common = require('../common');
92c11c
+var assert = require('assert');
92c11c
+
92c11c
+var crypto = require('crypto');
92c11c
+var odd = new Buffer(39);
92c11c
+odd.fill('A');
92c11c
+
92c11c
+var c = crypto.createDiffieHellman(32);
92c11c
+c.setPrivateKey(odd);
92c11c
+c.generateKeys();
92c11c
diff --git a/test/disabled/koji/test-crypto-stream.js b/test/disabled/koji/test-crypto-stream.js
92c11c
new file mode 100644
92c11c
index 0000000..402761e
92c11c
--- /dev/null
92c11c
+++ b/test/disabled/koji/test-crypto-stream.js
92c11c
@@ -0,0 +1,76 @@
92c11c
+// Copyright Joyent, Inc. and other Node contributors.
92c11c
+//
92c11c
+// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
+// copy of this software and associated documentation files (the
92c11c
+// "Software"), to deal in the Software without restriction, including
92c11c
+// without limitation the rights to use, copy, modify, merge, publish,
92c11c
+// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
+// persons to whom the Software is furnished to do so, subject to the
92c11c
+// following conditions:
92c11c
+//
92c11c
+// The above copyright notice and this permission notice shall be included
92c11c
+// in all copies or substantial portions of the Software.
92c11c
+//
92c11c
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
+
92c11c
+var common = require('../common');
92c11c
+var assert = require('assert');
92c11c
+var stream = require('stream');
92c11c
+var util = require('util');
92c11c
+
92c11c
+try {
92c11c
+  var crypto = require('crypto');
92c11c
+} catch (e) {
92c11c
+  console.log('Not compiled with OPENSSL support.');
92c11c
+  process.exit();
92c11c
+}
92c11c
+
92c11c
+// Small stream to buffer converter
92c11c
+function Stream2buffer(callback) {
92c11c
+  stream.Writable.call(this);
92c11c
+
92c11c
+  this._buffers = [];
92c11c
+  this.once('finish', function () {
92c11c
+    callback(null, Buffer.concat(this._buffers));
92c11c
+  });
92c11c
+}
92c11c
+util.inherits(Stream2buffer, stream.Writable);
92c11c
+
92c11c
+Stream2buffer.prototype._write = function (data, encodeing, done) {
92c11c
+  this._buffers.push(data);
92c11c
+  return done(null);
92c11c
+};
92c11c
+
92c11c
+// Create an md5 hash of "Hallo world"
92c11c
+var hasher1 = crypto.createHash('md5');
92c11c
+    hasher1.pipe(new Stream2buffer(common.mustCall(function end(err, hash) {
92c11c
+      assert.equal(err, null);
92c11c
+      assert.equal(hash.toString('hex'), '06460dadb35d3d503047ce750ceb2d07');
92c11c
+    })));
92c11c
+    hasher1.end('Hallo world');
92c11c
+
92c11c
+// Simpler check for unpipe, setEncoding, pause and resume
92c11c
+crypto.createHash('md5').unpipe({});
92c11c
+crypto.createHash('md5').setEncoding('utf8');
92c11c
+crypto.createHash('md5').pause();
92c11c
+crypto.createHash('md5').resume();
92c11c
+
92c11c
+// Decipher._flush() should emit an error event, not an exception.
92c11c
+var key = new Buffer('48fb56eb10ffeb13fc0ef551bbca3b1b', 'hex'),
92c11c
+    badkey = new Buffer('12341234123412341234123412341234', 'hex'),
92c11c
+    iv = new Buffer('6d358219d1f488f5f4eb12820a66d146', 'hex'),
92c11c
+    cipher = crypto.createCipheriv('aes-128-cbc', key, iv),
92c11c
+    decipher = crypto.createDecipheriv('aes-128-cbc', badkey, iv);
92c11c
+
92c11c
+cipher.pipe(decipher)
92c11c
+  .on('error', common.mustCall(function end(err) {
92c11c
+    assert(/:00000000:/.test(err));
92c11c
+  }));
92c11c
+
92c11c
+cipher.end('Papaya!');  // Should not cause an unhandled exception.
92c11c
diff --git a/test/disabled/koji/test-debugger-client.js b/test/disabled/koji/test-debugger-client.js
92c11c
new file mode 100644
92c11c
index 0000000..6480e1c
92c11c
--- /dev/null
92c11c
+++ b/test/disabled/koji/test-debugger-client.js
92c11c
@@ -0,0 +1,232 @@
92c11c
+// Copyright Joyent, Inc. and other Node contributors.
92c11c
+//
92c11c
+// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
+// copy of this software and associated documentation files (the
92c11c
+// "Software"), to deal in the Software without restriction, including
92c11c
+// without limitation the rights to use, copy, modify, merge, publish,
92c11c
+// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
+// persons to whom the Software is furnished to do so, subject to the
92c11c
+// following conditions:
92c11c
+//
92c11c
+// The above copyright notice and this permission notice shall be included
92c11c
+// in all copies or substantial portions of the Software.
92c11c
+//
92c11c
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
+
92c11c
+
92c11c
+
92c11c
+
92c11c
+process.env.NODE_DEBUGGER_TIMEOUT = 2000;
92c11c
+var common = require('../common');
92c11c
+var assert = require('assert');
92c11c
+var debug = require('_debugger');
92c11c
+
92c11c
+var debugPort = common.PORT + 1337;
92c11c
+debug.port = debugPort;
92c11c
+var spawn = require('child_process').spawn;
92c11c
+
92c11c
+setTimeout(function() {
92c11c
+  if (nodeProcess) nodeProcess.kill('SIGTERM');
92c11c
+  throw new Error('timeout');
92c11c
+}, 10000).unref();
92c11c
+
92c11c
+
92c11c
+var resCount = 0;
92c11c
+var p = new debug.Protocol();
92c11c
+p.onResponse = function(res) {
92c11c
+  resCount++;
92c11c
+};
92c11c
+
92c11c
+p.execute('Type: connect\r\n' +
92c11c
+          'V8-Version: 3.0.4.1\r\n' +
92c11c
+          'Protocol-Version: 1\r\n' +
92c11c
+          'Embedding-Host: node v0.3.3-pre\r\n' +
92c11c
+          'Content-Length: 0\r\n\r\n');
92c11c
+assert.equal(1, resCount);
92c11c
+
92c11c
+// Make sure split messages go in.
92c11c
+
92c11c
+var parts = [];
92c11c
+parts.push('Content-Length: 336\r\n');
92c11c
+assert.equal(21, parts[0].length);
92c11c
+parts.push('\r\n');
92c11c
+assert.equal(2, parts[1].length);
92c11c
+var bodyLength = 0;
92c11c
+
92c11c
+parts.push('{"seq":12,"type":"event","event":"break","body":' +
92c11c
+           '{"invocationText":"#');
92c11c
+assert.equal(78, parts[2].length);
92c11c
+bodyLength += parts[2].length;
92c11c
+
92c11c
+parts.push('.[anonymous](req=#<an IncomingMessage>, ' +
92c11c
+           'res=#)","sourceLine"');
92c11c
+assert.equal(78, parts[3].length);
92c11c
+bodyLength += parts[3].length;
92c11c
+
92c11c
+parts.push(':45,"sourceColumn":4,"sourceLineText":"    debugger;",' +
92c11c
+           '"script":{"id":24,"name":"/home/ryan/projects/node/' +
92c11c
+           'benchmark/http_simple.js","lineOffset":0,"columnOffset":0,' +
92c11c
+           '"lineCount":98}}}');
92c11c
+assert.equal(180, parts[4].length);
92c11c
+bodyLength += parts[4].length;
92c11c
+
92c11c
+assert.equal(336, bodyLength);
92c11c
+
92c11c
+for (var i = 0; i < parts.length; i++) {
92c11c
+  p.execute(parts[i]);
92c11c
+}
92c11c
+assert.equal(2, resCount);
92c11c
+
92c11c
+
92c11c
+// Make sure that if we get backed up, we still manage to get all the
92c11c
+// messages
92c11c
+var d = 'Content-Length: 466\r\n\r\n' +
92c11c
+        '{"seq":10,"type":"event","event":"afterCompile","success":true,' +
92c11c
+        '"body":{"script":{"handle":1,"type":"script","name":"dns.js",' +
92c11c
+        '"id":34,"lineOffset":0,"columnOffset":0,"lineCount":241,' +
92c11c
+        '"sourceStart":"(function (module, exports, require) {' +
92c11c
+        'var dns = process.binding(\'cares\')' +
92c11c
+        ';\\nvar ne","sourceLength":6137,"scriptType":2,"compilationType":0,' +
92c11c
+        '"context":{"ref":0},"text":"dns.js (lines: 241)"}},"refs":' +
92c11c
+        '[{"handle":0' +
92c11c
+        ',"type":"context","text":"#"}],"running":true}' +
92c11c
+        'Content-Length: 119\r\n\r\n' +
92c11c
+        '{"seq":11,"type":"event","event":"scriptCollected","success":true,' +
92c11c
+        '"body":{"script":{"id":26}},"refs":[],"running":true}';
92c11c
+p.execute(d);
92c11c
+assert.equal(4, resCount);
92c11c
+
92c11c
+var expectedConnections = 0;
92c11c
+var tests = [];
92c11c
+function addTest(cb) {
92c11c
+  expectedConnections++;
92c11c
+  tests.push(cb);
92c11c
+}
92c11c
+
92c11c
+addTest(function(client, done) {
92c11c
+  console.error('requesting version');
92c11c
+  client.reqVersion(function(err, v) {
92c11c
+    assert.ok(!err);
92c11c
+    console.log('version: %s', v);
92c11c
+    assert.equal(process.versions.v8, v);
92c11c
+    done();
92c11c
+  });
92c11c
+});
92c11c
+
92c11c
+addTest(function(client, done) {
92c11c
+  console.error('requesting scripts');
92c11c
+  client.reqScripts(function(err) {
92c11c
+    assert.ok(!err);
92c11c
+    console.error('got %d scripts', Object.keys(client.scripts).length);
92c11c
+
92c11c
+    var foundMainScript = false;
92c11c
+    for (var k in client.scripts) {
92c11c
+      var script = client.scripts[k];
92c11c
+      if (script && script.name === 'node.js') {
92c11c
+        foundMainScript = true;
92c11c
+        break;
92c11c
+      }
92c11c
+    }
92c11c
+    assert.ok(foundMainScript);
92c11c
+    done();
92c11c
+  });
92c11c
+});
92c11c
+
92c11c
+addTest(function(client, done) {
92c11c
+  console.error('eval 2+2');
92c11c
+  client.reqEval('2+2', function(err, res) {
92c11c
+    console.error(res);
92c11c
+    assert.ok(!err);
92c11c
+    assert.equal('4', res.text);
92c11c
+    assert.equal(4, res.value);
92c11c
+    done();
92c11c
+  });
92c11c
+});
92c11c
+
92c11c
+
92c11c
+var connectCount = 0;
92c11c
+var script = 'setTimeout(function () { console.log("blah"); });' +
92c11c
+             'setInterval(function () {}, 1000000);';
92c11c
+
92c11c
+var nodeProcess;
92c11c
+
92c11c
+function doTest(cb, done) {
92c11c
+  var args = ['--debug=' + debugPort, '-e', script];
92c11c
+  nodeProcess = spawn(process.execPath, args);
92c11c
+
92c11c
+  nodeProcess.stdout.once('data', function(c) {
92c11c
+    console.log('>>> new node process: %d', nodeProcess.pid);
92c11c
+    var failed = true;
92c11c
+    try {
92c11c
+      process._debugProcess(nodeProcess.pid);
92c11c
+      failed = false;
92c11c
+    } finally {
92c11c
+      // At least TRY not to leave zombie procs if this fails.
92c11c
+      if (failed)
92c11c
+        nodeProcess.kill('SIGTERM');
92c11c
+    }
92c11c
+    console.log('>>> starting debugger session');
92c11c
+  });
92c11c
+
92c11c
+  var didTryConnect = false;
92c11c
+  nodeProcess.stderr.setEncoding('utf8');
92c11c
+  var b = '';
92c11c
+  nodeProcess.stderr.on('data', function(data) {
92c11c
+    console.error('got stderr data %j', data);
92c11c
+    nodeProcess.stderr.resume();
92c11c
+    b += data;
92c11c
+    if (didTryConnect == false &&
92c11c
+        b.match(/debugger listening on port/)) {
92c11c
+      didTryConnect = true;
92c11c
+
92c11c
+      setTimeout(function() {
92c11c
+        // Wait for some data before trying to connect
92c11c
+        var c = new debug.Client();
92c11c
+        console.error('>>> connecting...');
92c11c
+        c.connect(debug.port);
92c11c
+        c.on('break', function(brk) {
92c11c
+          c.reqContinue(function() {});
92c11c
+        });
92c11c
+        c.on('ready', function() {
92c11c
+          connectCount++;
92c11c
+          console.log('ready!');
92c11c
+          cb(c, function() {
92c11c
+            c.end();
92c11c
+            c.on('end', function() {
92c11c
+              console.error(
92c11c
+                  '>>> killing node process %d\n\n',
92c11c
+                  nodeProcess.pid);
92c11c
+              nodeProcess.kill();
92c11c
+              done();
92c11c
+            });
92c11c
+          });
92c11c
+        });
92c11c
+      });
92c11c
+    }
92c11c
+  });
92c11c
+}
92c11c
+
92c11c
+
92c11c
+function run() {
92c11c
+  var t = tests[0];
92c11c
+  if (!t) return;
92c11c
+
92c11c
+  doTest(t, function() {
92c11c
+    tests.shift();
92c11c
+    run();
92c11c
+  });
92c11c
+}
92c11c
+
92c11c
+run();
92c11c
+
92c11c
+process.on('exit', function(code) {
92c11c
+  if (!code)
92c11c
+    assert.equal(expectedConnections, connectCount);
92c11c
+});
92c11c
+
92c11c
diff --git a/test/disabled/koji/test-debugger-repl-utf8.js b/test/disabled/koji/test-debugger-repl-utf8.js
92c11c
new file mode 100644
92c11c
index 0000000..73314b8
92c11c
--- /dev/null
92c11c
+++ b/test/disabled/koji/test-debugger-repl-utf8.js
92c11c
@@ -0,0 +1,27 @@
92c11c
+// Copyright Joyent, Inc. and other Node contributors.
92c11c
+//
92c11c
+// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
+// copy of this software and associated documentation files (the
92c11c
+// "Software"), to deal in the Software without restriction, including
92c11c
+// without limitation the rights to use, copy, modify, merge, publish,
92c11c
+// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
+// persons to whom the Software is furnished to do so, subject to the
92c11c
+// following conditions:
92c11c
+//
92c11c
+// The above copyright notice and this permission notice shall be included
92c11c
+// in all copies or substantial portions of the Software.
92c11c
+//
92c11c
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
+
92c11c
+var common = require('../common');
92c11c
+var script = common.fixturesDir + '/breakpoints_utf8.js';
92c11c
+process.env.NODE_DEBUGGER_TEST_SCRIPT = script;
92c11c
+
92c11c
+require('./test-debugger-repl.js');
92c11c
+
92c11c
diff --git a/test/disabled/koji/test-debugger-repl.js b/test/disabled/koji/test-debugger-repl.js
92c11c
new file mode 100644
92c11c
index 0000000..40639e0
92c11c
--- /dev/null
92c11c
+++ b/test/disabled/koji/test-debugger-repl.js
92c11c
@@ -0,0 +1,77 @@
92c11c
+// Copyright Joyent, Inc. and other Node contributors.
92c11c
+//
92c11c
+// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
+// copy of this software and associated documentation files (the
92c11c
+// "Software"), to deal in the Software without restriction, including
92c11c
+// without limitation the rights to use, copy, modify, merge, publish,
92c11c
+// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
+// persons to whom the Software is furnished to do so, subject to the
92c11c
+// following conditions:
92c11c
+//
92c11c
+// The above copyright notice and this permission notice shall be included
92c11c
+// in all copies or substantial portions of the Software.
92c11c
+//
92c11c
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
+
92c11c
+var repl = require('./helper-debugger-repl.js');
92c11c
+
92c11c
+repl.startDebugger('breakpoints.js');
92c11c
+
92c11c
+var addTest = repl.addTest;
92c11c
+
92c11c
+// Next
92c11c
+addTest('n', [
92c11c
+  /break in .*:11/,
92c11c
+  /9/, /10/, /11/, /12/, /13/
92c11c
+]);
92c11c
+
92c11c
+// Watch
92c11c
+addTest('watch("\'x\'")');
92c11c
+
92c11c
+// Continue
92c11c
+addTest('c', [
92c11c
+  /break in .*:5/,
92c11c
+  /Watchers/,
92c11c
+  /0:\s+'x' = "x"/,
92c11c
+  /()/,
92c11c
+  /3/, /4/, /5/, /6/, /7/
92c11c
+]);
92c11c
+
92c11c
+// Show watchers
92c11c
+addTest('watchers', [
92c11c
+  /0:\s+'x' = "x"/
92c11c
+]);
92c11c
+
92c11c
+// Unwatch
92c11c
+addTest('unwatch("\'x\'")');
92c11c
+
92c11c
+// Step out
92c11c
+addTest('o', [
92c11c
+  /break in .*:12/,
92c11c
+  /10/, /11/, /12/, /13/, /14/
92c11c
+]);
92c11c
+
92c11c
+// Continue
92c11c
+addTest('c', [
92c11c
+  /break in .*:5/,
92c11c
+  /3/, /4/, /5/, /6/, /7/
92c11c
+]);
92c11c
+
92c11c
+// Set breakpoint by function name
92c11c
+addTest('sb("setInterval()", "!(setInterval.flag++)")', [
92c11c
+  /1/, /2/, /3/, /4/, /5/, /6/, /7/, /8/, /9/, /10/
92c11c
+]);
92c11c
+
92c11c
+// Continue
92c11c
+addTest('c', [
92c11c
+  /break in node.js:\d+/,
92c11c
+  /\d/, /\d/, /\d/, /\d/, /\d/
92c11c
+]);
92c11c
+
92c11c
+addTest('quit', []);
92c11c
diff --git a/test/disabled/koji/test-dgram-broadcast-multi-process.js b/test/disabled/koji/test-dgram-broadcast-multi-process.js
92c11c
new file mode 100644
92c11c
index 0000000..ad5b4eb
92c11c
--- /dev/null
92c11c
+++ b/test/disabled/koji/test-dgram-broadcast-multi-process.js
92c11c
@@ -0,0 +1,240 @@
92c11c
+// Copyright Joyent, Inc. and other Node contributors.
92c11c
+//
92c11c
+// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
+// copy of this software and associated documentation files (the
92c11c
+// "Software"), to deal in the Software without restriction, including
92c11c
+// without limitation the rights to use, copy, modify, merge, publish,
92c11c
+// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
+// persons to whom the Software is furnished to do so, subject to the
92c11c
+// following conditions:
92c11c
+//
92c11c
+// The above copyright notice and this permission notice shall be included
92c11c
+// in all copies or substantial portions of the Software.
92c11c
+//
92c11c
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
+
92c11c
+var common = require('../common'),
92c11c
+    assert = require('assert'),
92c11c
+    dgram = require('dgram'),
92c11c
+    util = require('util'),
92c11c
+    networkInterfaces = require('os').networkInterfaces(),
92c11c
+    Buffer = require('buffer').Buffer,
92c11c
+    fork = require('child_process').fork,
92c11c
+    LOCAL_BROADCAST_HOST = '255.255.255.255',
92c11c
+    TIMEOUT = 5000,
92c11c
+    messages = [
92c11c
+      new Buffer('First message to send'),
92c11c
+      new Buffer('Second message to send'),
92c11c
+      new Buffer('Third message to send'),
92c11c
+      new Buffer('Fourth message to send')
92c11c
+    ];
92c11c
+
92c11c
+// take the first non-internal interface as the address for binding
92c11c
+get_bindAddress: for (var name in networkInterfaces) {
92c11c
+  var interfaces = networkInterfaces[name];
92c11c
+  for(var i = 0; i < interfaces.length; i++) {
92c11c
+    var localInterface = interfaces[i];
92c11c
+    if (!localInterface.internal && localInterface.family === 'IPv4') {
92c11c
+      var bindAddress = localInterface.address;
92c11c
+      break get_bindAddress;
92c11c
+    }
92c11c
+  }
92c11c
+}
92c11c
+assert.ok(bindAddress);
92c11c
+
92c11c
+if (process.argv[2] !== 'child') {
92c11c
+  var workers = {},
92c11c
+      listeners = 3,
92c11c
+      listening = 0,
92c11c
+      dead = 0,
92c11c
+      i = 0,
92c11c
+      done = 0,
92c11c
+      timer = null;
92c11c
+
92c11c
+  //exit the test if it doesn't succeed within TIMEOUT
92c11c
+  timer = setTimeout(function() {
92c11c
+    console.error('[PARENT] Responses were not received within %d ms.',
92c11c
+                  TIMEOUT);
92c11c
+    console.error('[PARENT] Fail');
92c11c
+
92c11c
+    killChildren(workers);
92c11c
+
92c11c
+    process.exit(1);
92c11c
+  }, TIMEOUT);
92c11c
+
92c11c
+  //launch child processes
92c11c
+  for (var x = 0; x < listeners; x++) {
92c11c
+    (function() {
92c11c
+      var worker = fork(process.argv[1], ['child']);
92c11c
+      workers[worker.pid] = worker;
92c11c
+
92c11c
+      worker.messagesReceived = [];
92c11c
+
92c11c
+      //handle the death of workers
92c11c
+      worker.on('exit', function(code, signal) {
92c11c
+        // don't consider this the true death if the worker
92c11c
+        // has finished successfully
92c11c
+        // or if the exit code is 0
92c11c
+        if (worker.isDone || code == 0) {
92c11c
+          return;
92c11c
+        }
92c11c
+
92c11c
+        dead += 1;
92c11c
+        console.error('[PARENT] Worker %d died. %d dead of %d',
92c11c
+                      worker.pid,
92c11c
+                      dead,
92c11c
+                      listeners);
92c11c
+
92c11c
+        if (dead === listeners) {
92c11c
+          console.error('[PARENT] All workers have died.');
92c11c
+          console.error('[PARENT] Fail');
92c11c
+
92c11c
+          killChildren(workers);
92c11c
+
92c11c
+          process.exit(1);
92c11c
+        }
92c11c
+      });
92c11c
+
92c11c
+      worker.on('message', function(msg) {
92c11c
+        if (msg.listening) {
92c11c
+          listening += 1;
92c11c
+
92c11c
+          if (listening === listeners) {
92c11c
+            //all child process are listening, so start sending
92c11c
+            sendSocket.sendNext();
92c11c
+          }
92c11c
+        }
92c11c
+        else if (msg.message) {
92c11c
+          worker.messagesReceived.push(msg.message);
92c11c
+
92c11c
+          if (worker.messagesReceived.length === messages.length) {
92c11c
+            done += 1;
92c11c
+            worker.isDone = true;
92c11c
+            console.error('[PARENT] %d received %d messages total.',
92c11c
+                          worker.pid,
92c11c
+                          worker.messagesReceived.length);
92c11c
+          }
92c11c
+
92c11c
+          if (done === listeners) {
92c11c
+            console.error('[PARENT] All workers have received the ' +
92c11c
+                          'required number of ' +
92c11c
+                          'messages. Will now compare.');
92c11c
+
92c11c
+            Object.keys(workers).forEach(function(pid) {
92c11c
+              var worker = workers[pid];
92c11c
+
92c11c
+              var count = 0;
92c11c
+
92c11c
+              worker.messagesReceived.forEach(function(buf) {
92c11c
+                for (var i = 0; i < messages.length; ++i) {
92c11c
+                  if (buf.toString() === messages[i].toString()) {
92c11c
+                    count++;
92c11c
+                    break;
92c11c
+                  }
92c11c
+                }
92c11c
+              });
92c11c
+
92c11c
+              console.error('[PARENT] %d received %d matching messges.',
92c11c
+                            worker.pid,
92c11c
+                            count);
92c11c
+
92c11c
+              assert.equal(count, messages.length,
92c11c
+                           'A worker received an invalid multicast message');
92c11c
+            });
92c11c
+
92c11c
+            clearTimeout(timer);
92c11c
+            console.error('[PARENT] Success');
92c11c
+            killChildren(workers);
92c11c
+          }
92c11c
+        }
92c11c
+      });
92c11c
+    })(x);
92c11c
+  }
92c11c
+
92c11c
+  var sendSocket = dgram.createSocket('udp4');
92c11c
+
92c11c
+  // bind the address explicitly for sending
92c11c
+  // INADDR_BROADCAST to only one interface
92c11c
+  sendSocket.bind(common.PORT, bindAddress);
92c11c
+  sendSocket.on('listening', function () {
92c11c
+    sendSocket.setBroadcast(true);
92c11c
+  });
92c11c
+
92c11c
+  sendSocket.on('close', function() {
92c11c
+    console.error('[PARENT] sendSocket closed');
92c11c
+  });
92c11c
+
92c11c
+  sendSocket.sendNext = function() {
92c11c
+    var buf = messages[i++];
92c11c
+
92c11c
+    if (!buf) {
92c11c
+      try { sendSocket.close(); } catch (e) {}
92c11c
+      return;
92c11c
+    }
92c11c
+
92c11c
+    sendSocket.send(buf, 0, buf.length,
92c11c
+                    common.PORT, LOCAL_BROADCAST_HOST, function(err) {
92c11c
+
92c11c
+          if (err) throw err;
92c11c
+
92c11c
+          console.error('[PARENT] sent %s to %s:%s',
92c11c
+                        util.inspect(buf.toString()),
92c11c
+                        LOCAL_BROADCAST_HOST, common.PORT);
92c11c
+
92c11c
+          process.nextTick(sendSocket.sendNext);
92c11c
+        });
92c11c
+  };
92c11c
+
92c11c
+  function killChildren(children) {
92c11c
+    Object.keys(children).forEach(function(key) {
92c11c
+      var child = children[key];
92c11c
+      child.kill();
92c11c
+    });
92c11c
+  }
92c11c
+}
92c11c
+
92c11c
+if (process.argv[2] === 'child') {
92c11c
+  var receivedMessages = [];
92c11c
+  var listenSocket = dgram.createSocket('udp4');
92c11c
+
92c11c
+  listenSocket.on('message', function(buf, rinfo) {
92c11c
+    // receive udp messages only sent from parent
92c11c
+    if (rinfo.address !== bindAddress) return;
92c11c
+
92c11c
+    console.error('[CHILD] %s received %s from %j',
92c11c
+                  process.pid,
92c11c
+                  util.inspect(buf.toString()),
92c11c
+                  rinfo);
92c11c
+
92c11c
+    receivedMessages.push(buf);
92c11c
+
92c11c
+    process.send({ message: buf.toString() });
92c11c
+
92c11c
+    if (receivedMessages.length == messages.length) {
92c11c
+      process.nextTick(function() {
92c11c
+        listenSocket.close();
92c11c
+      });
92c11c
+    }
92c11c
+  });
92c11c
+
92c11c
+  listenSocket.on('close', function() {
92c11c
+    //HACK: Wait to exit the process to ensure that the parent
92c11c
+    //process has had time to receive all messages via process.send()
92c11c
+    //This may be indicitave of some other issue.
92c11c
+    setTimeout(function() {
92c11c
+      process.exit();
92c11c
+    }, 1000);
92c11c
+  });
92c11c
+
92c11c
+  listenSocket.on('listening', function() {
92c11c
+    process.send({ listening: true });
92c11c
+  });
92c11c
+
92c11c
+  listenSocket.bind(common.PORT);
92c11c
+}
92c11c
diff --git a/test/disabled/koji/test-fs-readfile-error.js b/test/disabled/koji/test-fs-readfile-error.js
92c11c
new file mode 100644
92c11c
index 0000000..97d2f06
92c11c
--- /dev/null
92c11c
+++ b/test/disabled/koji/test-fs-readfile-error.js
92c11c
@@ -0,0 +1,64 @@
92c11c
+// Copyright Joyent, Inc. and other Node contributors.
92c11c
+//
92c11c
+// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
+// copy of this software and associated documentation files (the
92c11c
+// "Software"), to deal in the Software without restriction, including
92c11c
+// without limitation the rights to use, copy, modify, merge, publish,
92c11c
+// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
+// persons to whom the Software is furnished to do so, subject to the
92c11c
+// following conditions:
92c11c
+//
92c11c
+// The above copyright notice and this permission notice shall be included
92c11c
+// in all copies or substantial portions of the Software.
92c11c
+//
92c11c
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
+
92c11c
+var common = require('../common');
92c11c
+var assert = require('assert');
92c11c
+var exec = require('child_process').exec;
92c11c
+var path = require('path');
92c11c
+
92c11c
+var callbacks = 0;
92c11c
+
92c11c
+function test(env, cb) {
92c11c
+  var filename = path.join(common.fixturesDir, 'test-fs-readfile-error.js');
92c11c
+  var execPath = process.execPath + ' --throw-deprecation ' + filename;
92c11c
+  var options = { env: env || {} };
92c11c
+  exec(execPath, options, function(err, stdout, stderr) {
92c11c
+    assert(err);
92c11c
+    assert.equal(stdout, '');
92c11c
+    assert.notEqual(stderr, '');
92c11c
+    cb('' + stderr);
92c11c
+  });
92c11c
+}
92c11c
+
92c11c
+test({ NODE_DEBUG: '' }, function(data) {
92c11c
+  assert(/EISDIR/.test(data));
92c11c
+  assert(!/test-fs-readfile-error/.test(data));
92c11c
+  callbacks++;
92c11c
+});
92c11c
+
92c11c
+test({ NODE_DEBUG: 'fs' }, function(data) {
92c11c
+  assert(/EISDIR/.test(data));
92c11c
+  assert(/test-fs-readfile-error/.test(data));
92c11c
+  callbacks++;
92c11c
+});
92c11c
+
92c11c
+process.on('exit', function() {
92c11c
+  assert.equal(callbacks, 2);
92c11c
+});
92c11c
+
92c11c
+(function() {
92c11c
+  console.error('the warnings are normal here.');
92c11c
+  // just make sure that this doesn't crash the process.
92c11c
+  var fs = require('fs');
92c11c
+  fs.readFile(__dirname);
92c11c
+  fs.readdir(__filename);
92c11c
+  fs.unlink('gee-i-sure-hope-this-file-isnt-important-or-existing');
92c11c
+})();
92c11c
diff --git a/test/disabled/koji/test-http-curl-chunk-problem.js b/test/disabled/koji/test-http-curl-chunk-problem.js
92c11c
new file mode 100644
92c11c
index 0000000..5b1cb0b
92c11c
--- /dev/null
92c11c
+++ b/test/disabled/koji/test-http-curl-chunk-problem.js
92c11c
@@ -0,0 +1,85 @@
92c11c
+// Copyright Joyent, Inc. and other Node contributors.
92c11c
+//
92c11c
+// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
+// copy of this software and associated documentation files (the
92c11c
+// "Software"), to deal in the Software without restriction, including
92c11c
+// without limitation the rights to use, copy, modify, merge, publish,
92c11c
+// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
+// persons to whom the Software is furnished to do so, subject to the
92c11c
+// following conditions:
92c11c
+//
92c11c
+// The above copyright notice and this permission notice shall be included
92c11c
+// in all copies or substantial portions of the Software.
92c11c
+//
92c11c
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
+
92c11c
+if (!process.versions.openssl) {
92c11c
+  console.error('Skipping because node compiled without OpenSSL.');
92c11c
+  process.exit(0);
92c11c
+}
92c11c
+
92c11c
+// http://groups.google.com/group/nodejs/browse_thread/thread/f66cd3c960406919
92c11c
+var common = require('../common');
92c11c
+var assert = require('assert');
92c11c
+var http = require('http');
92c11c
+var cp = require('child_process');
92c11c
+var fs = require('fs');
92c11c
+
92c11c
+var filename = require('path').join(common.tmpDir, 'big');
92c11c
+
92c11c
+var count = 0;
92c11c
+function maybeMakeRequest() {
92c11c
+  if (++count < 2) return;
92c11c
+  console.log('making curl request');
92c11c
+  var cmd = 'curl http://127.0.0.1:' + common.PORT + '/ | openssl sha1';
92c11c
+  cp.exec(cmd, function(err, stdout, stderr) {
92c11c
+    if (err) throw err;
92c11c
+    var hex = stdout.match(/([A-Fa-f0-9]{40})/)[0];
92c11c
+    assert.equal('8c206a1a87599f532ce68675536f0b1546900d7a', hex);
92c11c
+    console.log('got the correct response');
92c11c
+    fs.unlink(filename);
92c11c
+    server.close();
92c11c
+  });
92c11c
+}
92c11c
+
92c11c
+
92c11c
+var ddcmd = common.ddCommand(filename, 10240);
92c11c
+console.log('dd command: ', ddcmd);
92c11c
+
92c11c
+cp.exec(ddcmd, function(err, stdout, stderr) {
92c11c
+  if (err) throw err;
92c11c
+  maybeMakeRequest();
92c11c
+});
92c11c
+
92c11c
+
92c11c
+var server = http.createServer(function(req, res) {
92c11c
+  res.writeHead(200);
92c11c
+
92c11c
+  // Create the subprocess
92c11c
+  var cat = cp.spawn('cat', [filename]);
92c11c
+
92c11c
+  // Stream the data through to the response as binary chunks
92c11c
+  cat.stdout.on('data', function(data) {
92c11c
+    res.write(data);
92c11c
+  });
92c11c
+
92c11c
+  // End the response on exit (and log errors)
92c11c
+  cat.on('exit', function(code) {
92c11c
+    if (code !== 0) {
92c11c
+      console.error('subprocess exited with code ' + code);
92c11c
+      exit(1);
92c11c
+    }
92c11c
+    res.end();
92c11c
+  });
92c11c
+
92c11c
+});
92c11c
+
92c11c
+server.listen(common.PORT, maybeMakeRequest);
92c11c
+
92c11c
+console.log('Server running at http://localhost:8080');
92c11c
diff --git a/test/disabled/koji/test-http-many-keep-alive-connections.js b/test/disabled/koji/test-http-many-keep-alive-connections.js
92c11c
new file mode 100644
92c11c
index 0000000..adbebbd
92c11c
--- /dev/null
92c11c
+++ b/test/disabled/koji/test-http-many-keep-alive-connections.js
92c11c
@@ -0,0 +1,69 @@
92c11c
+// Copyright Joyent, Inc. and other Node contributors.
92c11c
+//
92c11c
+// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
+// copy of this software and associated documentation files (the
92c11c
+// "Software"), to deal in the Software without restriction, including
92c11c
+// without limitation the rights to use, copy, modify, merge, publish,
92c11c
+// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
+// persons to whom the Software is furnished to do so, subject to the
92c11c
+// following conditions:
92c11c
+//
92c11c
+// The above copyright notice and this permission notice shall be included
92c11c
+// in all copies or substantial portions of the Software.
92c11c
+//
92c11c
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
+
92c11c
+var common = require('../common');
92c11c
+var assert = require('assert');
92c11c
+var http = require('http');
92c11c
+
92c11c
+var expected = 10000;
92c11c
+var responses = 0;
92c11c
+var requests = 0;
92c11c
+var connection;
92c11c
+
92c11c
+var server = http.Server(function(req, res) {
92c11c
+  requests++;
92c11c
+  assert.equal(req.connection, connection);
92c11c
+  res.writeHead(200);
92c11c
+  res.end('hello world\n');
92c11c
+});
92c11c
+
92c11c
+server.once('connection', function(c) {
92c11c
+  connection = c;
92c11c
+});
92c11c
+
92c11c
+server.listen(common.PORT, function() {
92c11c
+  var callee = arguments.callee;
92c11c
+  var request = http.get({
92c11c
+    port: common.PORT,
92c11c
+    path: '/',
92c11c
+    headers: {
92c11c
+      'Connection': 'Keep-alive'
92c11c
+    }
92c11c
+  }, function(res) {
92c11c
+    res.on('end', function() {
92c11c
+      if (++responses < expected) {
92c11c
+        callee();
92c11c
+      } else {
92c11c
+        server.close();
92c11c
+      }
92c11c
+    });
92c11c
+    res.resume();
92c11c
+  }).on('error', function(e) {
92c11c
+    console.log(e.message);
92c11c
+    process.exit(1);
92c11c
+  });
92c11c
+  request.agent.maxSockets = 1;
92c11c
+});
92c11c
+
92c11c
+process.on('exit', function() {
92c11c
+  assert.equal(expected, responses);
92c11c
+  assert.equal(expected, requests);
92c11c
+});
92c11c
diff --git a/test/disabled/koji/test-net-GH-5504.js b/test/disabled/koji/test-net-GH-5504.js
92c11c
new file mode 100644
92c11c
index 0000000..d5059f0
92c11c
--- /dev/null
92c11c
+++ b/test/disabled/koji/test-net-GH-5504.js
92c11c
@@ -0,0 +1,123 @@
92c11c
+// Copyright Joyent, Inc. and other Node contributors.
92c11c
+//
92c11c
+// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
+// copy of this software and associated documentation files (the
92c11c
+// "Software"), to deal in the Software without restriction, including
92c11c
+// without limitation the rights to use, copy, modify, merge, publish,
92c11c
+// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
+// persons to whom the Software is furnished to do so, subject to the
92c11c
+// following conditions:
92c11c
+//
92c11c
+// The above copyright notice and this permission notice shall be included
92c11c
+// in all copies or substantial portions of the Software.
92c11c
+//
92c11c
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
+
92c11c
+var common = require('../common');
92c11c
+var assert = require('assert');
92c11c
+
92c11c
+// this test only fails with CentOS 6.3 using kernel version 2.6.32
92c11c
+// On other linuxes and darwin, the `read` call gets an ECONNRESET in
92c11c
+// that case.  On sunos, the `write` call fails with EPIPE.
92c11c
+//
92c11c
+// However, old CentOS will occasionally send an EOF instead of a
92c11c
+// ECONNRESET or EPIPE when the client has been destroyed abruptly.
92c11c
+//
92c11c
+// Make sure we don't keep trying to write or read more in that case.
92c11c
+
92c11c
+switch (process.argv[2]) {
92c11c
+  case 'server': return server();
92c11c
+  case 'client': return client();
92c11c
+  case undefined: return parent();
92c11c
+  default: throw new Error('wtf');
92c11c
+}
92c11c
+
92c11c
+function server() {
92c11c
+  var net = require('net');
92c11c
+  var content = new Buffer(64 * 1024 * 1024);
92c11c
+  content.fill('#');
92c11c
+  net.createServer(function(socket) {
92c11c
+    this.close();
92c11c
+    socket.on('end', function() {
92c11c
+      console.error('end');
92c11c
+    });
92c11c
+    socket.on('_socketEnd', function() {
92c11c
+      console.error('_socketEnd');
92c11c
+    });
92c11c
+    socket.write(content);
92c11c
+  }).listen(3000, function() {
92c11c
+    console.log('listening');
92c11c
+  });
92c11c
+}
92c11c
+
92c11c
+function client() {
92c11c
+  var net = require('net');
92c11c
+  var client = net.connect({
92c11c
+    host: 'localhost',
92c11c
+    port: 3000
92c11c
+  }, function() {
92c11c
+    client.destroy();
92c11c
+  });
92c11c
+}
92c11c
+
92c11c
+function parent() {
92c11c
+  var spawn = require('child_process').spawn;
92c11c
+  var node = process.execPath;
92c11c
+  var assert = require('assert');
92c11c
+  var serverExited = false;
92c11c
+  var clientExited = false;
92c11c
+  var serverListened = false;
92c11c
+  var opt = { env: { NODE_DEBUG: 'net' } };
92c11c
+
92c11c
+  process.on('exit', function() {
92c11c
+    assert(serverExited);
92c11c
+    assert(clientExited);
92c11c
+    assert(serverListened);
92c11c
+    console.log('ok');
92c11c
+  });
92c11c
+
92c11c
+  setTimeout(function() {
92c11c
+    if (s) s.kill();
92c11c
+    if (c) c.kill();
92c11c
+    setTimeout(function() {
92c11c
+      throw new Error('hang');
92c11c
+    });
92c11c
+  }, 1000).unref();
92c11c
+
92c11c
+  var s = spawn(node, [__filename, 'server'], opt);
92c11c
+  var c;
92c11c
+
92c11c
+  wrap(s.stderr, process.stderr, 'SERVER 2>');
92c11c
+  wrap(s.stdout, process.stdout, 'SERVER 1>');
92c11c
+  s.on('exit', function(c) {
92c11c
+    console.error('server exited', c);
92c11c
+    serverExited = true;
92c11c
+  });
92c11c
+
92c11c
+  s.stdout.once('data', function() {
92c11c
+    serverListened = true;
92c11c
+    c = spawn(node, [__filename, 'client']);
92c11c
+    wrap(c.stderr, process.stderr, 'CLIENT 2>');
92c11c
+    wrap(c.stdout, process.stdout, 'CLIENT 1>');
92c11c
+    c.on('exit', function(c) {
92c11c
+      console.error('client exited', c);
92c11c
+      clientExited = true;
92c11c
+    });
92c11c
+  });
92c11c
+
92c11c
+  function wrap(inp, out, w) {
92c11c
+    inp.setEncoding('utf8');
92c11c
+    inp.on('data', function(c) {
92c11c
+      c = c.trim();
92c11c
+      if (!c) return;
92c11c
+      out.write(w + c.split('\n').join('\n' + w) + '\n');
92c11c
+    });
92c11c
+  }
92c11c
+}
92c11c
+
92c11c
diff --git a/test/disabled/koji/test-setproctitle.js b/test/disabled/koji/test-setproctitle.js
92c11c
new file mode 100644
92c11c
index 0000000..6373af4
92c11c
--- /dev/null
92c11c
+++ b/test/disabled/koji/test-setproctitle.js
92c11c
@@ -0,0 +1,52 @@
92c11c
+// Copyright Joyent, Inc. and other Node contributors.
92c11c
+//
92c11c
+// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
+// copy of this software and associated documentation files (the
92c11c
+// "Software"), to deal in the Software without restriction, including
92c11c
+// without limitation the rights to use, copy, modify, merge, publish,
92c11c
+// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
+// persons to whom the Software is furnished to do so, subject to the
92c11c
+// following conditions:
92c11c
+//
92c11c
+// The above copyright notice and this permission notice shall be included
92c11c
+// in all copies or substantial portions of the Software.
92c11c
+//
92c11c
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
+
92c11c
+// Original test written by Jakub Lekstan <kuebzky@gmail.com>
92c11c
+
92c11c
+// FIXME add sunos support
92c11c
+if ('linux freebsd darwin'.indexOf(process.platform) === -1) {
92c11c
+  console.error('Skipping test, platform not supported.');
92c11c
+  process.exit();
92c11c
+}
92c11c
+
92c11c
+var common = require('../common');
92c11c
+var assert = require('assert');
92c11c
+var exec = require('child_process').exec;
92c11c
+
92c11c
+// The title shouldn't be too long; libuv's uv_set_process_title() out of
92c11c
+// security considerations no longer overwrites envp, only argv, so the
92c11c
+// maximum title length is possibly quite short.
92c11c
+var title = 'testme';
92c11c
+
92c11c
+assert.notEqual(process.title, title);
92c11c
+process.title = title;
92c11c
+assert.equal(process.title, title);
92c11c
+
92c11c
+exec('ps -p ' + process.pid + ' -o args=', function(error, stdout, stderr) {
92c11c
+  assert.equal(error, null);
92c11c
+  assert.equal(stderr, '');
92c11c
+
92c11c
+  // freebsd always add ' (procname)' to the process title
92c11c
+  if (process.platform === 'freebsd') title += ' (node)';
92c11c
+
92c11c
+  // omitting trailing whitespace and \n
92c11c
+  assert.equal(stdout.replace(/\s+$/, ''), title);
92c11c
+});
92c11c
diff --git a/test/disabled/koji/test-stdout-close-unref.js b/test/disabled/koji/test-stdout-close-unref.js
92c11c
new file mode 100644
92c11c
index 0000000..42f3997
92c11c
--- /dev/null
92c11c
+++ b/test/disabled/koji/test-stdout-close-unref.js
92c11c
@@ -0,0 +1,24 @@
92c11c
+// Copyright Joyent, Inc. and other Node contributors.
92c11c
+//
92c11c
+// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
+// copy of this software and associated documentation files (the
92c11c
+// "Software"), to deal in the Software without restriction, including
92c11c
+// without limitation the rights to use, copy, modify, merge, publish,
92c11c
+// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
+// persons to whom the Software is furnished to do so, subject to the
92c11c
+// following conditions:
92c11c
+//
92c11c
+// The above copyright notice and this permission notice shall be included
92c11c
+// in all copies or substantial portions of the Software.
92c11c
+//
92c11c
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
+
92c11c
+process.stdin.resume();
92c11c
+process.stdin._handle.close();
92c11c
+process.stdin._handle.unref();  // Should not segfault.
92c11c
diff --git a/test/disabled/koji/test-timers-ordering.js b/test/disabled/koji/test-timers-ordering.js
92c11c
new file mode 100644
92c11c
index 0000000..0a32d48
92c11c
--- /dev/null
92c11c
+++ b/test/disabled/koji/test-timers-ordering.js
92c11c
@@ -0,0 +1,48 @@
92c11c
+// Copyright Joyent, Inc. and other Node contributors.
92c11c
+//
92c11c
+// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
+// copy of this software and associated documentation files (the
92c11c
+// "Software"), to deal in the Software without restriction, including
92c11c
+// without limitation the rights to use, copy, modify, merge, publish,
92c11c
+// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
+// persons to whom the Software is furnished to do so, subject to the
92c11c
+// following conditions:
92c11c
+//
92c11c
+// The above copyright notice and this permission notice shall be included
92c11c
+// in all copies or substantial portions of the Software.
92c11c
+//
92c11c
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
+
92c11c
+var common = require('../common');
92c11c
+var assert = require('assert');
92c11c
+var i;
92c11c
+
92c11c
+var N = 30;
92c11c
+
92c11c
+var last_i = 0;
92c11c
+var last_ts = 0;
92c11c
+var start = Date.now();
92c11c
+
92c11c
+var f = function(i) {
92c11c
+  if (i <= N) {
92c11c
+    // check order
92c11c
+    assert.equal(i, last_i + 1, 'order is broken: ' + i + ' != ' + last_i + ' + 1');
92c11c
+    last_i = i;
92c11c
+
92c11c
+    // check that this iteration is fired at least 1ms later than the previous
92c11c
+    var now = Date.now();
92c11c
+    console.log(i, now);
92c11c
+    assert(now >= last_ts + 1, 'current ts ' + now + ' < prev ts ' + last_ts + ' + 1');
92c11c
+    last_ts = now;
92c11c
+
92c11c
+    // schedule next iteration
92c11c
+    setTimeout(f, 1, i + 1);
92c11c
+  }
92c11c
+};
92c11c
+f(1);
92c11c
diff --git a/test/disabled/koji/test-tls-securepair-client.js b/test/disabled/koji/test-tls-securepair-client.js
92c11c
new file mode 100644
92c11c
index 0000000..e361a14
92c11c
--- /dev/null
92c11c
+++ b/test/disabled/koji/test-tls-securepair-client.js
92c11c
@@ -0,0 +1,201 @@
92c11c
+// Copyright Joyent, Inc. and other Node contributors.
92c11c
+//
92c11c
+// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
+// copy of this software and associated documentation files (the
92c11c
+// "Software"), to deal in the Software without restriction, including
92c11c
+// without limitation the rights to use, copy, modify, merge, publish,
92c11c
+// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
+// persons to whom the Software is furnished to do so, subject to the
92c11c
+// following conditions:
92c11c
+//
92c11c
+// The above copyright notice and this permission notice shall be included
92c11c
+// in all copies or substantial portions of the Software.
92c11c
+//
92c11c
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
+
92c11c
+if (!process.versions.openssl) {
92c11c
+  console.error('Skipping because node compiled without OpenSSL.');
92c11c
+  process.exit(0);
92c11c
+}
92c11c
+
92c11c
+var common = require('../common');
92c11c
+var join = require('path').join;
92c11c
+var net = require('net');
92c11c
+var assert = require('assert');
92c11c
+var fs = require('fs');
92c11c
+var crypto = require('crypto');
92c11c
+var tls = require('tls');
92c11c
+var exec = require('child_process').exec;
92c11c
+var spawn = require('child_process').spawn;
92c11c
+
92c11c
+maybe(test1);
92c11c
+
92c11c
+// There is a bug with 'openssl s_server' which makes it not flush certain
92c11c
+// important events to stdout when done over a pipe. Therefore we skip this
92c11c
+// test for all openssl versions less than 1.0.0.
92c11c
+function maybe(cb) {
92c11c
+  exec('openssl version', function(err, data) {
92c11c
+    if (err) throw err;
92c11c
+    if (/OpenSSL 0\./.test(data)) {
92c11c
+      console.error('Skipping due to old OpenSSL version.');
92c11c
+      return;
92c11c
+    }
92c11c
+    cb();
92c11c
+  });
92c11c
+}
92c11c
+
92c11c
+// simple/test-tls-securepair-client
92c11c
+function test1() {
92c11c
+  test('agent.key', 'agent.crt', null, test2);
92c11c
+}
92c11c
+
92c11c
+// simple/test-tls-ext-key-usage
92c11c
+function test2() {
92c11c
+  function check(pair) {
92c11c
+    // "TLS Web Client Authentication"
92c11c
+    assert.equal(pair.cleartext.getPeerCertificate().ext_key_usage.length, 1);
92c11c
+    assert.equal(pair.cleartext.getPeerCertificate().ext_key_usage[0],
92c11c
+                 '1.3.6.1.5.5.7.3.2');
92c11c
+  }
92c11c
+  test('keys/agent4-key.pem', 'keys/agent4-cert.pem', check);
92c11c
+}
92c11c
+
92c11c
+function test(keyfn, certfn, check, next) {
92c11c
+  // FIXME: Avoid the common PORT as this test currently hits a C-level
92c11c
+  // assertion error with node_g. The program aborts without HUPing
92c11c
+  // the openssl s_server thus causing many tests to fail with
92c11c
+  // EADDRINUSE.
92c11c
+  var PORT = common.PORT + 5;
92c11c
+
92c11c
+  var connections = 0;
92c11c
+
92c11c
+  keyfn = join(common.fixturesDir, keyfn);
92c11c
+  var key = fs.readFileSync(keyfn).toString();
92c11c
+
92c11c
+  certfn = join(common.fixturesDir, certfn);
92c11c
+  var cert = fs.readFileSync(certfn).toString();
92c11c
+
92c11c
+  var server = spawn('openssl', ['s_server',
92c11c
+                                 '-accept', PORT,
92c11c
+                                 '-cert', certfn,
92c11c
+                                 '-key', keyfn]);
92c11c
+  server.stdout.pipe(process.stdout);
92c11c
+  server.stderr.pipe(process.stdout);
92c11c
+
92c11c
+
92c11c
+  var state = 'WAIT-ACCEPT';
92c11c
+
92c11c
+  var serverStdoutBuffer = '';
92c11c
+  server.stdout.setEncoding('utf8');
92c11c
+  server.stdout.on('data', function(s) {
92c11c
+    serverStdoutBuffer += s;
92c11c
+    console.error(state);
92c11c
+    switch (state) {
92c11c
+      case 'WAIT-ACCEPT':
92c11c
+        if (/ACCEPT/g.test(serverStdoutBuffer)) {
92c11c
+          // Give s_server half a second to start up.
92c11c
+          setTimeout(startClient, 500);
92c11c
+          state = 'WAIT-HELLO';
92c11c
+        }
92c11c
+        break;
92c11c
+
92c11c
+      case 'WAIT-HELLO':
92c11c
+        if (/hello/g.test(serverStdoutBuffer)) {
92c11c
+
92c11c
+          // End the current SSL connection and exit.
92c11c
+          // See s_server(1ssl).
92c11c
+          server.stdin.write('Q');
92c11c
+
92c11c
+          state = 'WAIT-SERVER-CLOSE';
92c11c
+        }
92c11c
+        break;
92c11c
+
92c11c
+      default:
92c11c
+        break;
92c11c
+    }
92c11c
+  });
92c11c
+
92c11c
+
92c11c
+  var timeout = setTimeout(function() {
92c11c
+    server.kill();
92c11c
+    process.exit(1);
92c11c
+  }, 5000);
92c11c
+
92c11c
+  var gotWriteCallback = false;
92c11c
+  var serverExitCode = -1;
92c11c
+
92c11c
+  server.on('exit', function(code) {
92c11c
+    serverExitCode = code;
92c11c
+    clearTimeout(timeout);
92c11c
+    if (next) next();
92c11c
+  });
92c11c
+
92c11c
+
92c11c
+  function startClient() {
92c11c
+    var s = new net.Stream();
92c11c
+
92c11c
+    var sslcontext = crypto.createCredentials({key: key, cert: cert});
92c11c
+    sslcontext.context.setCiphers('RC4-SHA:AES128-SHA:AES256-SHA');
92c11c
+
92c11c
+    var pair = tls.createSecurePair(sslcontext, false);
92c11c
+
92c11c
+    assert.ok(pair.encrypted.writable);
92c11c
+    assert.ok(pair.cleartext.writable);
92c11c
+
92c11c
+    pair.encrypted.pipe(s);
92c11c
+    s.pipe(pair.encrypted);
92c11c
+
92c11c
+    s.connect(PORT);
92c11c
+
92c11c
+    s.on('connect', function() {
92c11c
+      console.log('client connected');
92c11c
+    });
92c11c
+
92c11c
+    pair.on('secure', function() {
92c11c
+      console.log('client: connected+secure!');
92c11c
+      console.log('client pair.cleartext.getPeerCertificate(): %j',
92c11c
+                  pair.cleartext.getPeerCertificate());
92c11c
+      console.log('client pair.cleartext.getCipher(): %j',
92c11c
+                  pair.cleartext.getCipher());
92c11c
+      if (check) check(pair);
92c11c
+      setTimeout(function() {
92c11c
+        pair.cleartext.write('hello\r\n', function() {
92c11c
+          gotWriteCallback = true;
92c11c
+        });
92c11c
+      }, 500);
92c11c
+    });
92c11c
+
92c11c
+    pair.cleartext.on('data', function(d) {
92c11c
+      console.log('cleartext: %s', d.toString());
92c11c
+    });
92c11c
+
92c11c
+    s.on('close', function() {
92c11c
+      console.log('client close');
92c11c
+    });
92c11c
+
92c11c
+    pair.encrypted.on('error', function(err) {
92c11c
+      console.log('encrypted error: ' + err);
92c11c
+    });
92c11c
+
92c11c
+    s.on('error', function(err) {
92c11c
+      console.log('socket error: ' + err);
92c11c
+    });
92c11c
+
92c11c
+    pair.on('error', function(err) {
92c11c
+      console.log('secure error: ' + err);
92c11c
+    });
92c11c
+  }
92c11c
+
92c11c
+
92c11c
+  process.on('exit', function() {
92c11c
+    assert.equal(0, serverExitCode);
92c11c
+    assert.equal('WAIT-SERVER-CLOSE', state);
92c11c
+    assert.ok(gotWriteCallback);
92c11c
+  });
92c11c
+}
92c11c
diff --git a/test/disabled/koji/test-tls-securepair-server.js b/test/disabled/koji/test-tls-securepair-server.js
92c11c
new file mode 100644
92c11c
index 0000000..3b4eec1
92c11c
--- /dev/null
92c11c
+++ b/test/disabled/koji/test-tls-securepair-server.js
92c11c
@@ -0,0 +1,154 @@
92c11c
+// Copyright Joyent, Inc. and other Node contributors.
92c11c
+//
92c11c
+// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
+// copy of this software and associated documentation files (the
92c11c
+// "Software"), to deal in the Software without restriction, including
92c11c
+// without limitation the rights to use, copy, modify, merge, publish,
92c11c
+// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
+// persons to whom the Software is furnished to do so, subject to the
92c11c
+// following conditions:
92c11c
+//
92c11c
+// The above copyright notice and this permission notice shall be included
92c11c
+// in all copies or substantial portions of the Software.
92c11c
+//
92c11c
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
+
92c11c
+if (!process.versions.openssl) {
92c11c
+  console.error('Skipping because node compiled without OpenSSL.');
92c11c
+  process.exit(0);
92c11c
+}
92c11c
+
92c11c
+
92c11c
+var common = require('../common');
92c11c
+var assert = require('assert');
92c11c
+
92c11c
+var join = require('path').join;
92c11c
+var net = require('net');
92c11c
+var fs = require('fs');
92c11c
+var crypto = require('crypto');
92c11c
+var tls = require('tls');
92c11c
+var spawn = require('child_process').spawn;
92c11c
+
92c11c
+var connections = 0;
92c11c
+var key = fs.readFileSync(join(common.fixturesDir, 'agent.key')).toString();
92c11c
+var cert = fs.readFileSync(join(common.fixturesDir, 'agent.crt')).toString();
92c11c
+
92c11c
+function log(a) {
92c11c
+  console.error('***server*** ' + a);
92c11c
+}
92c11c
+
92c11c
+var server = net.createServer(function(socket) {
92c11c
+  connections++;
92c11c
+  log('connection fd=' + socket.fd);
92c11c
+  var sslcontext = crypto.createCredentials({key: key, cert: cert});
92c11c
+  sslcontext.context.setCiphers('RC4-SHA:AES128-SHA:AES256-SHA');
92c11c
+
92c11c
+  var pair = tls.createSecurePair(sslcontext, true);
92c11c
+
92c11c
+  assert.ok(pair.encrypted.writable);
92c11c
+  assert.ok(pair.cleartext.writable);
92c11c
+
92c11c
+  pair.encrypted.pipe(socket);
92c11c
+  socket.pipe(pair.encrypted);
92c11c
+
92c11c
+  log('i set it secure');
92c11c
+
92c11c
+  pair.on('secure', function() {
92c11c
+    log('connected+secure!');
92c11c
+    pair.cleartext.write('hello\r\n');
92c11c
+    log(pair.cleartext.getPeerCertificate());
92c11c
+    log(pair.cleartext.getCipher());
92c11c
+  });
92c11c
+
92c11c
+  pair.cleartext.on('data', function(data) {
92c11c
+    log('read bytes ' + data.length);
92c11c
+    pair.cleartext.write(data);
92c11c
+  });
92c11c
+
92c11c
+  socket.on('end', function() {
92c11c
+    log('socket end');
92c11c
+  });
92c11c
+
92c11c
+  pair.cleartext.on('error', function(err) {
92c11c
+    log('got error: ');
92c11c
+    log(err);
92c11c
+    log(err.stack);
92c11c
+    socket.destroy();
92c11c
+  });
92c11c
+
92c11c
+  pair.encrypted.on('error', function(err) {
92c11c
+    log('encrypted error: ');
92c11c
+    log(err);
92c11c
+    log(err.stack);
92c11c
+    socket.destroy();
92c11c
+  });
92c11c
+
92c11c
+  socket.on('error', function(err) {
92c11c
+    log('socket error: ');
92c11c
+    log(err);
92c11c
+    log(err.stack);
92c11c
+    socket.destroy();
92c11c
+  });
92c11c
+
92c11c
+  socket.on('close', function(err) {
92c11c
+    log('socket closed');
92c11c
+  });
92c11c
+
92c11c
+  pair.on('error', function(err) {
92c11c
+    log('secure error: ');
92c11c
+    log(err);
92c11c
+    log(err.stack);
92c11c
+    socket.destroy();
92c11c
+  });
92c11c
+});
92c11c
+
92c11c
+var gotHello = false;
92c11c
+var sentWorld = false;
92c11c
+var gotWorld = false;
92c11c
+var opensslExitCode = -1;
92c11c
+
92c11c
+server.listen(common.PORT, function() {
92c11c
+  // To test use: openssl s_client -connect localhost:8000
92c11c
+  var client = spawn('openssl', ['s_client', '-connect', '127.0.0.1:' +
92c11c
+        common.PORT]);
92c11c
+
92c11c
+
92c11c
+  var out = '';
92c11c
+
92c11c
+  client.stdout.setEncoding('utf8');
92c11c
+  client.stdout.on('data', function(d) {
92c11c
+    out += d;
92c11c
+
92c11c
+    if (!gotHello && /hello/.test(out)) {
92c11c
+      gotHello = true;
92c11c
+      client.stdin.write('world\r\n');
92c11c
+      sentWorld = true;
92c11c
+    }
92c11c
+
92c11c
+    if (!gotWorld && /world/.test(out)) {
92c11c
+      gotWorld = true;
92c11c
+      client.stdin.end();
92c11c
+    }
92c11c
+  });
92c11c
+
92c11c
+  client.stdout.pipe(process.stdout, { end: false });
92c11c
+
92c11c
+  client.on('exit', function(code) {
92c11c
+    opensslExitCode = code;
92c11c
+    server.close();
92c11c
+  });
92c11c
+});
92c11c
+
92c11c
+process.on('exit', function() {
92c11c
+  assert.equal(1, connections);
92c11c
+  assert.ok(gotHello);
92c11c
+  assert.ok(sentWorld);
92c11c
+  assert.ok(gotWorld);
92c11c
+  assert.equal(0, opensslExitCode);
92c11c
+});
92c11c
diff --git a/test/disabled/koji/test-tls-set-ciphers.js b/test/disabled/koji/test-tls-set-ciphers.js
92c11c
new file mode 100644
92c11c
index 0000000..a473a1d
92c11c
--- /dev/null
92c11c
+++ b/test/disabled/koji/test-tls-set-ciphers.js
92c11c
@@ -0,0 +1,62 @@
92c11c
+// Copyright Joyent, Inc. and other Node contributors.
92c11c
+//
92c11c
+// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
+// copy of this software and associated documentation files (the
92c11c
+// "Software"), to deal in the Software without restriction, including
92c11c
+// without limitation the rights to use, copy, modify, merge, publish,
92c11c
+// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
+// persons to whom the Software is furnished to do so, subject to the
92c11c
+// following conditions:
92c11c
+//
92c11c
+// The above copyright notice and this permission notice shall be included
92c11c
+// in all copies or substantial portions of the Software.
92c11c
+//
92c11c
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
+
92c11c
+var common = require('../common');
92c11c
+var assert = require('assert');
92c11c
+var exec = require('child_process').exec;
92c11c
+var tls = require('tls');
92c11c
+var fs = require('fs');
92c11c
+
92c11c
+if (process.platform === 'win32') {
92c11c
+  console.log("Skipping test, you probably don't have openssl installed.");
92c11c
+  process.exit();
92c11c
+}
92c11c
+
92c11c
+var options = {
92c11c
+  key: fs.readFileSync(common.fixturesDir + '/keys/agent2-key.pem'),
92c11c
+  cert: fs.readFileSync(common.fixturesDir + '/keys/agent2-cert.pem'),
92c11c
+  ciphers: 'RC4-MD5'
92c11c
+};
92c11c
+
92c11c
+var reply = 'I AM THE WALRUS'; // something recognizable
92c11c
+var nconns = 0;
92c11c
+var response = '';
92c11c
+
92c11c
+process.on('exit', function() {
92c11c
+  assert.equal(nconns, 1);
92c11c
+  assert.notEqual(response.indexOf(reply), -1);
92c11c
+});
92c11c
+
92c11c
+var server = tls.createServer(options, function(conn) {
92c11c
+  conn.end(reply);
92c11c
+  nconns++;
92c11c
+});
92c11c
+
92c11c
+server.listen(common.PORT, '127.0.0.1', function() {
92c11c
+  var cmd = 'openssl s_client -cipher ' + options.ciphers +
92c11c
+            ' -connect 127.0.0.1:' + common.PORT;
92c11c
+
92c11c
+  exec(cmd, function(err, stdout, stderr) {
92c11c
+    if (err) throw err;
92c11c
+    response = stdout;
92c11c
+    server.close();
92c11c
+  });
92c11c
+});
92c11c
diff --git a/test/simple/test-child-process-fork-dgram.js b/test/simple/test-child-process-fork-dgram.js
92c11c
deleted file mode 100644
92c11c
index 1c4e9ac..0000000
92c11c
--- a/test/simple/test-child-process-fork-dgram.js
92c11c
+++ /dev/null
92c11c
@@ -1,122 +0,0 @@
92c11c
-// Copyright Joyent, Inc. and other Node contributors.
92c11c
-//
92c11c
-// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
-// copy of this software and associated documentation files (the
92c11c
-// "Software"), to deal in the Software without restriction, including
92c11c
-// without limitation the rights to use, copy, modify, merge, publish,
92c11c
-// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
-// persons to whom the Software is furnished to do so, subject to the
92c11c
-// following conditions:
92c11c
-//
92c11c
-// The above copyright notice and this permission notice shall be included
92c11c
-// in all copies or substantial portions of the Software.
92c11c
-//
92c11c
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
-
92c11c
-/*
92c11c
- * The purpose of this test is to make sure that when forking a process,
92c11c
- * sending a fd representing a UDP socket to the child and sending messages
92c11c
- * to this endpoint, these messages are distributed to the parent and the
92c11c
- * child process.
92c11c
- *
92c11c
- * Because it's not really possible to predict how the messages will be
92c11c
- * distributed among the parent and the child processes, we keep sending
92c11c
- * messages until both the parent and the child received at least one
92c11c
- * message. The worst case scenario is when either one never receives
92c11c
- * a message. In this case the test runner will timeout after 60 secs
92c11c
- * and the test will fail.
92c11c
- */
92c11c
-
92c11c
-var dgram = require('dgram');
92c11c
-var fork = require('child_process').fork;
92c11c
-var assert = require('assert');
92c11c
-var common = require('../common');
92c11c
-
92c11c
-if (process.platform === 'win32') {
92c11c
-  console.error('Sending dgram sockets to child processes not supported');
92c11c
-  process.exit(0);
92c11c
-}
92c11c
-
92c11c
-if (process.argv[2] === 'child') {
92c11c
-  var childCollected = 0;
92c11c
-  var server;
92c11c
-
92c11c
-  process.on('message', function removeMe(msg, clusterServer) {
92c11c
-    if (msg === 'server') {
92c11c
-      server = clusterServer;
92c11c
-
92c11c
-      server.on('message', function () {
92c11c
-        process.send('gotMessage');
92c11c
-      });
92c11c
-
92c11c
-    } else if (msg === 'stop') {
92c11c
-      server.close();
92c11c
-      process.removeListener('message', removeMe);
92c11c
-    }
92c11c
-  });
92c11c
-
92c11c
-} else {
92c11c
-  var server = dgram.createSocket('udp4');
92c11c
-  var client = dgram.createSocket('udp4');
92c11c
-  var child = fork(__filename, ['child']);
92c11c
-
92c11c
-  var msg = new Buffer('Some bytes');
92c11c
-
92c11c
-  var childGotMessage = false;
92c11c
-  var parentGotMessage = false;
92c11c
-
92c11c
-  server.on('message', function (msg, rinfo) {
92c11c
-    parentGotMessage = true;
92c11c
-  });
92c11c
-
92c11c
-  server.on('listening', function () {
92c11c
-    child.send('server', server);
92c11c
-
92c11c
-    child.once('message', function (msg) {
92c11c
-      if (msg === 'gotMessage') {
92c11c
-        childGotMessage = true;
92c11c
-      }
92c11c
-    });
92c11c
-
92c11c
-    sendMessages();
92c11c
-  });
92c11c
-
92c11c
-  var sendMessages = function () {
92c11c
-    var timer = setInterval(function () {
92c11c
-      client.send(msg, 0, msg.length, common.PORT, '127.0.0.1', function(err) {
92c11c
-          if (err) throw err;
92c11c
-        }
92c11c
-      );
92c11c
-
92c11c
-      /*
92c11c
-       * Both the parent and the child got at least one message,
92c11c
-       * test passed, clean up everyting.
92c11c
-       */
92c11c
-      if (parentGotMessage && childGotMessage) {
92c11c
-        clearInterval(timer);
92c11c
-        shutdown();
92c11c
-      }
92c11c
-
92c11c
-    }, 1);
92c11c
-  };
92c11c
-
92c11c
-  var shutdown = function () {
92c11c
-    child.send('stop');
92c11c
-
92c11c
-    server.close();
92c11c
-    client.close();
92c11c
-  };
92c11c
-
92c11c
-  server.bind(common.PORT, '127.0.0.1');
92c11c
-
92c11c
-  process.once('exit', function () {
92c11c
-    assert(parentGotMessage);
92c11c
-    assert(childGotMessage);
92c11c
-  });
92c11c
-}
92c11c
diff --git a/test/simple/test-crypto-dh-odd-key.js b/test/simple/test-crypto-dh-odd-key.js
92c11c
deleted file mode 100644
92c11c
index a3d99e9..0000000
92c11c
--- a/test/simple/test-crypto-dh-odd-key.js
92c11c
+++ /dev/null
92c11c
@@ -1,31 +0,0 @@
92c11c
-// Copyright Joyent, Inc. and other Node contributors.
92c11c
-//
92c11c
-// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
-// copy of this software and associated documentation files (the
92c11c
-// "Software"), to deal in the Software without restriction, including
92c11c
-// without limitation the rights to use, copy, modify, merge, publish,
92c11c
-// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
-// persons to whom the Software is furnished to do so, subject to the
92c11c
-// following conditions:
92c11c
-//
92c11c
-// The above copyright notice and this permission notice shall be included
92c11c
-// in all copies or substantial portions of the Software.
92c11c
-//
92c11c
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
-
92c11c
-var common = require('../common');
92c11c
-var assert = require('assert');
92c11c
-
92c11c
-var crypto = require('crypto');
92c11c
-var odd = new Buffer(39);
92c11c
-odd.fill('A');
92c11c
-
92c11c
-var c = crypto.createDiffieHellman(32);
92c11c
-c.setPrivateKey(odd);
92c11c
-c.generateKeys();
92c11c
diff --git a/test/simple/test-crypto-stream.js b/test/simple/test-crypto-stream.js
92c11c
deleted file mode 100644
92c11c
index 402761e..0000000
92c11c
--- a/test/simple/test-crypto-stream.js
92c11c
+++ /dev/null
92c11c
@@ -1,76 +0,0 @@
92c11c
-// Copyright Joyent, Inc. and other Node contributors.
92c11c
-//
92c11c
-// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
-// copy of this software and associated documentation files (the
92c11c
-// "Software"), to deal in the Software without restriction, including
92c11c
-// without limitation the rights to use, copy, modify, merge, publish,
92c11c
-// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
-// persons to whom the Software is furnished to do so, subject to the
92c11c
-// following conditions:
92c11c
-//
92c11c
-// The above copyright notice and this permission notice shall be included
92c11c
-// in all copies or substantial portions of the Software.
92c11c
-//
92c11c
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
-
92c11c
-var common = require('../common');
92c11c
-var assert = require('assert');
92c11c
-var stream = require('stream');
92c11c
-var util = require('util');
92c11c
-
92c11c
-try {
92c11c
-  var crypto = require('crypto');
92c11c
-} catch (e) {
92c11c
-  console.log('Not compiled with OPENSSL support.');
92c11c
-  process.exit();
92c11c
-}
92c11c
-
92c11c
-// Small stream to buffer converter
92c11c
-function Stream2buffer(callback) {
92c11c
-  stream.Writable.call(this);
92c11c
-
92c11c
-  this._buffers = [];
92c11c
-  this.once('finish', function () {
92c11c
-    callback(null, Buffer.concat(this._buffers));
92c11c
-  });
92c11c
-}
92c11c
-util.inherits(Stream2buffer, stream.Writable);
92c11c
-
92c11c
-Stream2buffer.prototype._write = function (data, encodeing, done) {
92c11c
-  this._buffers.push(data);
92c11c
-  return done(null);
92c11c
-};
92c11c
-
92c11c
-// Create an md5 hash of "Hallo world"
92c11c
-var hasher1 = crypto.createHash('md5');
92c11c
-    hasher1.pipe(new Stream2buffer(common.mustCall(function end(err, hash) {
92c11c
-      assert.equal(err, null);
92c11c
-      assert.equal(hash.toString('hex'), '06460dadb35d3d503047ce750ceb2d07');
92c11c
-    })));
92c11c
-    hasher1.end('Hallo world');
92c11c
-
92c11c
-// Simpler check for unpipe, setEncoding, pause and resume
92c11c
-crypto.createHash('md5').unpipe({});
92c11c
-crypto.createHash('md5').setEncoding('utf8');
92c11c
-crypto.createHash('md5').pause();
92c11c
-crypto.createHash('md5').resume();
92c11c
-
92c11c
-// Decipher._flush() should emit an error event, not an exception.
92c11c
-var key = new Buffer('48fb56eb10ffeb13fc0ef551bbca3b1b', 'hex'),
92c11c
-    badkey = new Buffer('12341234123412341234123412341234', 'hex'),
92c11c
-    iv = new Buffer('6d358219d1f488f5f4eb12820a66d146', 'hex'),
92c11c
-    cipher = crypto.createCipheriv('aes-128-cbc', key, iv),
92c11c
-    decipher = crypto.createDecipheriv('aes-128-cbc', badkey, iv);
92c11c
-
92c11c
-cipher.pipe(decipher)
92c11c
-  .on('error', common.mustCall(function end(err) {
92c11c
-    assert(/:00000000:/.test(err));
92c11c
-  }));
92c11c
-
92c11c
-cipher.end('Papaya!');  // Should not cause an unhandled exception.
92c11c
diff --git a/test/simple/test-debugger-client.js b/test/simple/test-debugger-client.js
92c11c
deleted file mode 100644
92c11c
index 6480e1c..0000000
92c11c
--- a/test/simple/test-debugger-client.js
92c11c
+++ /dev/null
92c11c
@@ -1,232 +0,0 @@
92c11c
-// Copyright Joyent, Inc. and other Node contributors.
92c11c
-//
92c11c
-// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
-// copy of this software and associated documentation files (the
92c11c
-// "Software"), to deal in the Software without restriction, including
92c11c
-// without limitation the rights to use, copy, modify, merge, publish,
92c11c
-// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
-// persons to whom the Software is furnished to do so, subject to the
92c11c
-// following conditions:
92c11c
-//
92c11c
-// The above copyright notice and this permission notice shall be included
92c11c
-// in all copies or substantial portions of the Software.
92c11c
-//
92c11c
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
-
92c11c
-
92c11c
-
92c11c
-
92c11c
-process.env.NODE_DEBUGGER_TIMEOUT = 2000;
92c11c
-var common = require('../common');
92c11c
-var assert = require('assert');
92c11c
-var debug = require('_debugger');
92c11c
-
92c11c
-var debugPort = common.PORT + 1337;
92c11c
-debug.port = debugPort;
92c11c
-var spawn = require('child_process').spawn;
92c11c
-
92c11c
-setTimeout(function() {
92c11c
-  if (nodeProcess) nodeProcess.kill('SIGTERM');
92c11c
-  throw new Error('timeout');
92c11c
-}, 10000).unref();
92c11c
-
92c11c
-
92c11c
-var resCount = 0;
92c11c
-var p = new debug.Protocol();
92c11c
-p.onResponse = function(res) {
92c11c
-  resCount++;
92c11c
-};
92c11c
-
92c11c
-p.execute('Type: connect\r\n' +
92c11c
-          'V8-Version: 3.0.4.1\r\n' +
92c11c
-          'Protocol-Version: 1\r\n' +
92c11c
-          'Embedding-Host: node v0.3.3-pre\r\n' +
92c11c
-          'Content-Length: 0\r\n\r\n');
92c11c
-assert.equal(1, resCount);
92c11c
-
92c11c
-// Make sure split messages go in.
92c11c
-
92c11c
-var parts = [];
92c11c
-parts.push('Content-Length: 336\r\n');
92c11c
-assert.equal(21, parts[0].length);
92c11c
-parts.push('\r\n');
92c11c
-assert.equal(2, parts[1].length);
92c11c
-var bodyLength = 0;
92c11c
-
92c11c
-parts.push('{"seq":12,"type":"event","event":"break","body":' +
92c11c
-           '{"invocationText":"#');
92c11c
-assert.equal(78, parts[2].length);
92c11c
-bodyLength += parts[2].length;
92c11c
-
92c11c
-parts.push('.[anonymous](req=#<an IncomingMessage>, ' +
92c11c
-           'res=#)","sourceLine"');
92c11c
-assert.equal(78, parts[3].length);
92c11c
-bodyLength += parts[3].length;
92c11c
-
92c11c
-parts.push(':45,"sourceColumn":4,"sourceLineText":"    debugger;",' +
92c11c
-           '"script":{"id":24,"name":"/home/ryan/projects/node/' +
92c11c
-           'benchmark/http_simple.js","lineOffset":0,"columnOffset":0,' +
92c11c
-           '"lineCount":98}}}');
92c11c
-assert.equal(180, parts[4].length);
92c11c
-bodyLength += parts[4].length;
92c11c
-
92c11c
-assert.equal(336, bodyLength);
92c11c
-
92c11c
-for (var i = 0; i < parts.length; i++) {
92c11c
-  p.execute(parts[i]);
92c11c
-}
92c11c
-assert.equal(2, resCount);
92c11c
-
92c11c
-
92c11c
-// Make sure that if we get backed up, we still manage to get all the
92c11c
-// messages
92c11c
-var d = 'Content-Length: 466\r\n\r\n' +
92c11c
-        '{"seq":10,"type":"event","event":"afterCompile","success":true,' +
92c11c
-        '"body":{"script":{"handle":1,"type":"script","name":"dns.js",' +
92c11c
-        '"id":34,"lineOffset":0,"columnOffset":0,"lineCount":241,' +
92c11c
-        '"sourceStart":"(function (module, exports, require) {' +
92c11c
-        'var dns = process.binding(\'cares\')' +
92c11c
-        ';\\nvar ne","sourceLength":6137,"scriptType":2,"compilationType":0,' +
92c11c
-        '"context":{"ref":0},"text":"dns.js (lines: 241)"}},"refs":' +
92c11c
-        '[{"handle":0' +
92c11c
-        ',"type":"context","text":"#"}],"running":true}' +
92c11c
-        'Content-Length: 119\r\n\r\n' +
92c11c
-        '{"seq":11,"type":"event","event":"scriptCollected","success":true,' +
92c11c
-        '"body":{"script":{"id":26}},"refs":[],"running":true}';
92c11c
-p.execute(d);
92c11c
-assert.equal(4, resCount);
92c11c
-
92c11c
-var expectedConnections = 0;
92c11c
-var tests = [];
92c11c
-function addTest(cb) {
92c11c
-  expectedConnections++;
92c11c
-  tests.push(cb);
92c11c
-}
92c11c
-
92c11c
-addTest(function(client, done) {
92c11c
-  console.error('requesting version');
92c11c
-  client.reqVersion(function(err, v) {
92c11c
-    assert.ok(!err);
92c11c
-    console.log('version: %s', v);
92c11c
-    assert.equal(process.versions.v8, v);
92c11c
-    done();
92c11c
-  });
92c11c
-});
92c11c
-
92c11c
-addTest(function(client, done) {
92c11c
-  console.error('requesting scripts');
92c11c
-  client.reqScripts(function(err) {
92c11c
-    assert.ok(!err);
92c11c
-    console.error('got %d scripts', Object.keys(client.scripts).length);
92c11c
-
92c11c
-    var foundMainScript = false;
92c11c
-    for (var k in client.scripts) {
92c11c
-      var script = client.scripts[k];
92c11c
-      if (script && script.name === 'node.js') {
92c11c
-        foundMainScript = true;
92c11c
-        break;
92c11c
-      }
92c11c
-    }
92c11c
-    assert.ok(foundMainScript);
92c11c
-    done();
92c11c
-  });
92c11c
-});
92c11c
-
92c11c
-addTest(function(client, done) {
92c11c
-  console.error('eval 2+2');
92c11c
-  client.reqEval('2+2', function(err, res) {
92c11c
-    console.error(res);
92c11c
-    assert.ok(!err);
92c11c
-    assert.equal('4', res.text);
92c11c
-    assert.equal(4, res.value);
92c11c
-    done();
92c11c
-  });
92c11c
-});
92c11c
-
92c11c
-
92c11c
-var connectCount = 0;
92c11c
-var script = 'setTimeout(function () { console.log("blah"); });' +
92c11c
-             'setInterval(function () {}, 1000000);';
92c11c
-
92c11c
-var nodeProcess;
92c11c
-
92c11c
-function doTest(cb, done) {
92c11c
-  var args = ['--debug=' + debugPort, '-e', script];
92c11c
-  nodeProcess = spawn(process.execPath, args);
92c11c
-
92c11c
-  nodeProcess.stdout.once('data', function(c) {
92c11c
-    console.log('>>> new node process: %d', nodeProcess.pid);
92c11c
-    var failed = true;
92c11c
-    try {
92c11c
-      process._debugProcess(nodeProcess.pid);
92c11c
-      failed = false;
92c11c
-    } finally {
92c11c
-      // At least TRY not to leave zombie procs if this fails.
92c11c
-      if (failed)
92c11c
-        nodeProcess.kill('SIGTERM');
92c11c
-    }
92c11c
-    console.log('>>> starting debugger session');
92c11c
-  });
92c11c
-
92c11c
-  var didTryConnect = false;
92c11c
-  nodeProcess.stderr.setEncoding('utf8');
92c11c
-  var b = '';
92c11c
-  nodeProcess.stderr.on('data', function(data) {
92c11c
-    console.error('got stderr data %j', data);
92c11c
-    nodeProcess.stderr.resume();
92c11c
-    b += data;
92c11c
-    if (didTryConnect == false &&
92c11c
-        b.match(/debugger listening on port/)) {
92c11c
-      didTryConnect = true;
92c11c
-
92c11c
-      setTimeout(function() {
92c11c
-        // Wait for some data before trying to connect
92c11c
-        var c = new debug.Client();
92c11c
-        console.error('>>> connecting...');
92c11c
-        c.connect(debug.port);
92c11c
-        c.on('break', function(brk) {
92c11c
-          c.reqContinue(function() {});
92c11c
-        });
92c11c
-        c.on('ready', function() {
92c11c
-          connectCount++;
92c11c
-          console.log('ready!');
92c11c
-          cb(c, function() {
92c11c
-            c.end();
92c11c
-            c.on('end', function() {
92c11c
-              console.error(
92c11c
-                  '>>> killing node process %d\n\n',
92c11c
-                  nodeProcess.pid);
92c11c
-              nodeProcess.kill();
92c11c
-              done();
92c11c
-            });
92c11c
-          });
92c11c
-        });
92c11c
-      });
92c11c
-    }
92c11c
-  });
92c11c
-}
92c11c
-
92c11c
-
92c11c
-function run() {
92c11c
-  var t = tests[0];
92c11c
-  if (!t) return;
92c11c
-
92c11c
-  doTest(t, function() {
92c11c
-    tests.shift();
92c11c
-    run();
92c11c
-  });
92c11c
-}
92c11c
-
92c11c
-run();
92c11c
-
92c11c
-process.on('exit', function(code) {
92c11c
-  if (!code)
92c11c
-    assert.equal(expectedConnections, connectCount);
92c11c
-});
92c11c
-
92c11c
diff --git a/test/simple/test-debugger-repl-utf8.js b/test/simple/test-debugger-repl-utf8.js
92c11c
deleted file mode 100644
92c11c
index 73314b8..0000000
92c11c
--- a/test/simple/test-debugger-repl-utf8.js
92c11c
+++ /dev/null
92c11c
@@ -1,27 +0,0 @@
92c11c
-// Copyright Joyent, Inc. and other Node contributors.
92c11c
-//
92c11c
-// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
-// copy of this software and associated documentation files (the
92c11c
-// "Software"), to deal in the Software without restriction, including
92c11c
-// without limitation the rights to use, copy, modify, merge, publish,
92c11c
-// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
-// persons to whom the Software is furnished to do so, subject to the
92c11c
-// following conditions:
92c11c
-//
92c11c
-// The above copyright notice and this permission notice shall be included
92c11c
-// in all copies or substantial portions of the Software.
92c11c
-//
92c11c
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
-
92c11c
-var common = require('../common');
92c11c
-var script = common.fixturesDir + '/breakpoints_utf8.js';
92c11c
-process.env.NODE_DEBUGGER_TEST_SCRIPT = script;
92c11c
-
92c11c
-require('./test-debugger-repl.js');
92c11c
-
92c11c
diff --git a/test/simple/test-debugger-repl.js b/test/simple/test-debugger-repl.js
92c11c
deleted file mode 100644
92c11c
index 40639e0..0000000
92c11c
--- a/test/simple/test-debugger-repl.js
92c11c
+++ /dev/null
92c11c
@@ -1,77 +0,0 @@
92c11c
-// Copyright Joyent, Inc. and other Node contributors.
92c11c
-//
92c11c
-// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
-// copy of this software and associated documentation files (the
92c11c
-// "Software"), to deal in the Software without restriction, including
92c11c
-// without limitation the rights to use, copy, modify, merge, publish,
92c11c
-// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
-// persons to whom the Software is furnished to do so, subject to the
92c11c
-// following conditions:
92c11c
-//
92c11c
-// The above copyright notice and this permission notice shall be included
92c11c
-// in all copies or substantial portions of the Software.
92c11c
-//
92c11c
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
-
92c11c
-var repl = require('./helper-debugger-repl.js');
92c11c
-
92c11c
-repl.startDebugger('breakpoints.js');
92c11c
-
92c11c
-var addTest = repl.addTest;
92c11c
-
92c11c
-// Next
92c11c
-addTest('n', [
92c11c
-  /break in .*:11/,
92c11c
-  /9/, /10/, /11/, /12/, /13/
92c11c
-]);
92c11c
-
92c11c
-// Watch
92c11c
-addTest('watch("\'x\'")');
92c11c
-
92c11c
-// Continue
92c11c
-addTest('c', [
92c11c
-  /break in .*:5/,
92c11c
-  /Watchers/,
92c11c
-  /0:\s+'x' = "x"/,
92c11c
-  /()/,
92c11c
-  /3/, /4/, /5/, /6/, /7/
92c11c
-]);
92c11c
-
92c11c
-// Show watchers
92c11c
-addTest('watchers', [
92c11c
-  /0:\s+'x' = "x"/
92c11c
-]);
92c11c
-
92c11c
-// Unwatch
92c11c
-addTest('unwatch("\'x\'")');
92c11c
-
92c11c
-// Step out
92c11c
-addTest('o', [
92c11c
-  /break in .*:12/,
92c11c
-  /10/, /11/, /12/, /13/, /14/
92c11c
-]);
92c11c
-
92c11c
-// Continue
92c11c
-addTest('c', [
92c11c
-  /break in .*:5/,
92c11c
-  /3/, /4/, /5/, /6/, /7/
92c11c
-]);
92c11c
-
92c11c
-// Set breakpoint by function name
92c11c
-addTest('sb("setInterval()", "!(setInterval.flag++)")', [
92c11c
-  /1/, /2/, /3/, /4/, /5/, /6/, /7/, /8/, /9/, /10/
92c11c
-]);
92c11c
-
92c11c
-// Continue
92c11c
-addTest('c', [
92c11c
-  /break in node.js:\d+/,
92c11c
-  /\d/, /\d/, /\d/, /\d/, /\d/
92c11c
-]);
92c11c
-
92c11c
-addTest('quit', []);
92c11c
diff --git a/test/simple/test-dgram-broadcast-multi-process.js b/test/simple/test-dgram-broadcast-multi-process.js
92c11c
deleted file mode 100644
92c11c
index ad5b4eb..0000000
92c11c
--- a/test/simple/test-dgram-broadcast-multi-process.js
92c11c
+++ /dev/null
92c11c
@@ -1,240 +0,0 @@
92c11c
-// Copyright Joyent, Inc. and other Node contributors.
92c11c
-//
92c11c
-// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
-// copy of this software and associated documentation files (the
92c11c
-// "Software"), to deal in the Software without restriction, including
92c11c
-// without limitation the rights to use, copy, modify, merge, publish,
92c11c
-// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
-// persons to whom the Software is furnished to do so, subject to the
92c11c
-// following conditions:
92c11c
-//
92c11c
-// The above copyright notice and this permission notice shall be included
92c11c
-// in all copies or substantial portions of the Software.
92c11c
-//
92c11c
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
-
92c11c
-var common = require('../common'),
92c11c
-    assert = require('assert'),
92c11c
-    dgram = require('dgram'),
92c11c
-    util = require('util'),
92c11c
-    networkInterfaces = require('os').networkInterfaces(),
92c11c
-    Buffer = require('buffer').Buffer,
92c11c
-    fork = require('child_process').fork,
92c11c
-    LOCAL_BROADCAST_HOST = '255.255.255.255',
92c11c
-    TIMEOUT = 5000,
92c11c
-    messages = [
92c11c
-      new Buffer('First message to send'),
92c11c
-      new Buffer('Second message to send'),
92c11c
-      new Buffer('Third message to send'),
92c11c
-      new Buffer('Fourth message to send')
92c11c
-    ];
92c11c
-
92c11c
-// take the first non-internal interface as the address for binding
92c11c
-get_bindAddress: for (var name in networkInterfaces) {
92c11c
-  var interfaces = networkInterfaces[name];
92c11c
-  for(var i = 0; i < interfaces.length; i++) {
92c11c
-    var localInterface = interfaces[i];
92c11c
-    if (!localInterface.internal && localInterface.family === 'IPv4') {
92c11c
-      var bindAddress = localInterface.address;
92c11c
-      break get_bindAddress;
92c11c
-    }
92c11c
-  }
92c11c
-}
92c11c
-assert.ok(bindAddress);
92c11c
-
92c11c
-if (process.argv[2] !== 'child') {
92c11c
-  var workers = {},
92c11c
-      listeners = 3,
92c11c
-      listening = 0,
92c11c
-      dead = 0,
92c11c
-      i = 0,
92c11c
-      done = 0,
92c11c
-      timer = null;
92c11c
-
92c11c
-  //exit the test if it doesn't succeed within TIMEOUT
92c11c
-  timer = setTimeout(function() {
92c11c
-    console.error('[PARENT] Responses were not received within %d ms.',
92c11c
-                  TIMEOUT);
92c11c
-    console.error('[PARENT] Fail');
92c11c
-
92c11c
-    killChildren(workers);
92c11c
-
92c11c
-    process.exit(1);
92c11c
-  }, TIMEOUT);
92c11c
-
92c11c
-  //launch child processes
92c11c
-  for (var x = 0; x < listeners; x++) {
92c11c
-    (function() {
92c11c
-      var worker = fork(process.argv[1], ['child']);
92c11c
-      workers[worker.pid] = worker;
92c11c
-
92c11c
-      worker.messagesReceived = [];
92c11c
-
92c11c
-      //handle the death of workers
92c11c
-      worker.on('exit', function(code, signal) {
92c11c
-        // don't consider this the true death if the worker
92c11c
-        // has finished successfully
92c11c
-        // or if the exit code is 0
92c11c
-        if (worker.isDone || code == 0) {
92c11c
-          return;
92c11c
-        }
92c11c
-
92c11c
-        dead += 1;
92c11c
-        console.error('[PARENT] Worker %d died. %d dead of %d',
92c11c
-                      worker.pid,
92c11c
-                      dead,
92c11c
-                      listeners);
92c11c
-
92c11c
-        if (dead === listeners) {
92c11c
-          console.error('[PARENT] All workers have died.');
92c11c
-          console.error('[PARENT] Fail');
92c11c
-
92c11c
-          killChildren(workers);
92c11c
-
92c11c
-          process.exit(1);
92c11c
-        }
92c11c
-      });
92c11c
-
92c11c
-      worker.on('message', function(msg) {
92c11c
-        if (msg.listening) {
92c11c
-          listening += 1;
92c11c
-
92c11c
-          if (listening === listeners) {
92c11c
-            //all child process are listening, so start sending
92c11c
-            sendSocket.sendNext();
92c11c
-          }
92c11c
-        }
92c11c
-        else if (msg.message) {
92c11c
-          worker.messagesReceived.push(msg.message);
92c11c
-
92c11c
-          if (worker.messagesReceived.length === messages.length) {
92c11c
-            done += 1;
92c11c
-            worker.isDone = true;
92c11c
-            console.error('[PARENT] %d received %d messages total.',
92c11c
-                          worker.pid,
92c11c
-                          worker.messagesReceived.length);
92c11c
-          }
92c11c
-
92c11c
-          if (done === listeners) {
92c11c
-            console.error('[PARENT] All workers have received the ' +
92c11c
-                          'required number of ' +
92c11c
-                          'messages. Will now compare.');
92c11c
-
92c11c
-            Object.keys(workers).forEach(function(pid) {
92c11c
-              var worker = workers[pid];
92c11c
-
92c11c
-              var count = 0;
92c11c
-
92c11c
-              worker.messagesReceived.forEach(function(buf) {
92c11c
-                for (var i = 0; i < messages.length; ++i) {
92c11c
-                  if (buf.toString() === messages[i].toString()) {
92c11c
-                    count++;
92c11c
-                    break;
92c11c
-                  }
92c11c
-                }
92c11c
-              });
92c11c
-
92c11c
-              console.error('[PARENT] %d received %d matching messges.',
92c11c
-                            worker.pid,
92c11c
-                            count);
92c11c
-
92c11c
-              assert.equal(count, messages.length,
92c11c
-                           'A worker received an invalid multicast message');
92c11c
-            });
92c11c
-
92c11c
-            clearTimeout(timer);
92c11c
-            console.error('[PARENT] Success');
92c11c
-            killChildren(workers);
92c11c
-          }
92c11c
-        }
92c11c
-      });
92c11c
-    })(x);
92c11c
-  }
92c11c
-
92c11c
-  var sendSocket = dgram.createSocket('udp4');
92c11c
-
92c11c
-  // bind the address explicitly for sending
92c11c
-  // INADDR_BROADCAST to only one interface
92c11c
-  sendSocket.bind(common.PORT, bindAddress);
92c11c
-  sendSocket.on('listening', function () {
92c11c
-    sendSocket.setBroadcast(true);
92c11c
-  });
92c11c
-
92c11c
-  sendSocket.on('close', function() {
92c11c
-    console.error('[PARENT] sendSocket closed');
92c11c
-  });
92c11c
-
92c11c
-  sendSocket.sendNext = function() {
92c11c
-    var buf = messages[i++];
92c11c
-
92c11c
-    if (!buf) {
92c11c
-      try { sendSocket.close(); } catch (e) {}
92c11c
-      return;
92c11c
-    }
92c11c
-
92c11c
-    sendSocket.send(buf, 0, buf.length,
92c11c
-                    common.PORT, LOCAL_BROADCAST_HOST, function(err) {
92c11c
-
92c11c
-          if (err) throw err;
92c11c
-
92c11c
-          console.error('[PARENT] sent %s to %s:%s',
92c11c
-                        util.inspect(buf.toString()),
92c11c
-                        LOCAL_BROADCAST_HOST, common.PORT);
92c11c
-
92c11c
-          process.nextTick(sendSocket.sendNext);
92c11c
-        });
92c11c
-  };
92c11c
-
92c11c
-  function killChildren(children) {
92c11c
-    Object.keys(children).forEach(function(key) {
92c11c
-      var child = children[key];
92c11c
-      child.kill();
92c11c
-    });
92c11c
-  }
92c11c
-}
92c11c
-
92c11c
-if (process.argv[2] === 'child') {
92c11c
-  var receivedMessages = [];
92c11c
-  var listenSocket = dgram.createSocket('udp4');
92c11c
-
92c11c
-  listenSocket.on('message', function(buf, rinfo) {
92c11c
-    // receive udp messages only sent from parent
92c11c
-    if (rinfo.address !== bindAddress) return;
92c11c
-
92c11c
-    console.error('[CHILD] %s received %s from %j',
92c11c
-                  process.pid,
92c11c
-                  util.inspect(buf.toString()),
92c11c
-                  rinfo);
92c11c
-
92c11c
-    receivedMessages.push(buf);
92c11c
-
92c11c
-    process.send({ message: buf.toString() });
92c11c
-
92c11c
-    if (receivedMessages.length == messages.length) {
92c11c
-      process.nextTick(function() {
92c11c
-        listenSocket.close();
92c11c
-      });
92c11c
-    }
92c11c
-  });
92c11c
-
92c11c
-  listenSocket.on('close', function() {
92c11c
-    //HACK: Wait to exit the process to ensure that the parent
92c11c
-    //process has had time to receive all messages via process.send()
92c11c
-    //This may be indicitave of some other issue.
92c11c
-    setTimeout(function() {
92c11c
-      process.exit();
92c11c
-    }, 1000);
92c11c
-  });
92c11c
-
92c11c
-  listenSocket.on('listening', function() {
92c11c
-    process.send({ listening: true });
92c11c
-  });
92c11c
-
92c11c
-  listenSocket.bind(common.PORT);
92c11c
-}
92c11c
diff --git a/test/simple/test-fs-readfile-error.js b/test/simple/test-fs-readfile-error.js
92c11c
deleted file mode 100644
92c11c
index 97d2f06..0000000
92c11c
--- a/test/simple/test-fs-readfile-error.js
92c11c
+++ /dev/null
92c11c
@@ -1,64 +0,0 @@
92c11c
-// Copyright Joyent, Inc. and other Node contributors.
92c11c
-//
92c11c
-// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
-// copy of this software and associated documentation files (the
92c11c
-// "Software"), to deal in the Software without restriction, including
92c11c
-// without limitation the rights to use, copy, modify, merge, publish,
92c11c
-// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
-// persons to whom the Software is furnished to do so, subject to the
92c11c
-// following conditions:
92c11c
-//
92c11c
-// The above copyright notice and this permission notice shall be included
92c11c
-// in all copies or substantial portions of the Software.
92c11c
-//
92c11c
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
-
92c11c
-var common = require('../common');
92c11c
-var assert = require('assert');
92c11c
-var exec = require('child_process').exec;
92c11c
-var path = require('path');
92c11c
-
92c11c
-var callbacks = 0;
92c11c
-
92c11c
-function test(env, cb) {
92c11c
-  var filename = path.join(common.fixturesDir, 'test-fs-readfile-error.js');
92c11c
-  var execPath = process.execPath + ' --throw-deprecation ' + filename;
92c11c
-  var options = { env: env || {} };
92c11c
-  exec(execPath, options, function(err, stdout, stderr) {
92c11c
-    assert(err);
92c11c
-    assert.equal(stdout, '');
92c11c
-    assert.notEqual(stderr, '');
92c11c
-    cb('' + stderr);
92c11c
-  });
92c11c
-}
92c11c
-
92c11c
-test({ NODE_DEBUG: '' }, function(data) {
92c11c
-  assert(/EISDIR/.test(data));
92c11c
-  assert(!/test-fs-readfile-error/.test(data));
92c11c
-  callbacks++;
92c11c
-});
92c11c
-
92c11c
-test({ NODE_DEBUG: 'fs' }, function(data) {
92c11c
-  assert(/EISDIR/.test(data));
92c11c
-  assert(/test-fs-readfile-error/.test(data));
92c11c
-  callbacks++;
92c11c
-});
92c11c
-
92c11c
-process.on('exit', function() {
92c11c
-  assert.equal(callbacks, 2);
92c11c
-});
92c11c
-
92c11c
-(function() {
92c11c
-  console.error('the warnings are normal here.');
92c11c
-  // just make sure that this doesn't crash the process.
92c11c
-  var fs = require('fs');
92c11c
-  fs.readFile(__dirname);
92c11c
-  fs.readdir(__filename);
92c11c
-  fs.unlink('gee-i-sure-hope-this-file-isnt-important-or-existing');
92c11c
-})();
92c11c
diff --git a/test/simple/test-http-curl-chunk-problem.js b/test/simple/test-http-curl-chunk-problem.js
92c11c
deleted file mode 100644
92c11c
index 5b1cb0b..0000000
92c11c
--- a/test/simple/test-http-curl-chunk-problem.js
92c11c
+++ /dev/null
92c11c
@@ -1,85 +0,0 @@
92c11c
-// Copyright Joyent, Inc. and other Node contributors.
92c11c
-//
92c11c
-// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
-// copy of this software and associated documentation files (the
92c11c
-// "Software"), to deal in the Software without restriction, including
92c11c
-// without limitation the rights to use, copy, modify, merge, publish,
92c11c
-// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
-// persons to whom the Software is furnished to do so, subject to the
92c11c
-// following conditions:
92c11c
-//
92c11c
-// The above copyright notice and this permission notice shall be included
92c11c
-// in all copies or substantial portions of the Software.
92c11c
-//
92c11c
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
-
92c11c
-if (!process.versions.openssl) {
92c11c
-  console.error('Skipping because node compiled without OpenSSL.');
92c11c
-  process.exit(0);
92c11c
-}
92c11c
-
92c11c
-// http://groups.google.com/group/nodejs/browse_thread/thread/f66cd3c960406919
92c11c
-var common = require('../common');
92c11c
-var assert = require('assert');
92c11c
-var http = require('http');
92c11c
-var cp = require('child_process');
92c11c
-var fs = require('fs');
92c11c
-
92c11c
-var filename = require('path').join(common.tmpDir, 'big');
92c11c
-
92c11c
-var count = 0;
92c11c
-function maybeMakeRequest() {
92c11c
-  if (++count < 2) return;
92c11c
-  console.log('making curl request');
92c11c
-  var cmd = 'curl http://127.0.0.1:' + common.PORT + '/ | openssl sha1';
92c11c
-  cp.exec(cmd, function(err, stdout, stderr) {
92c11c
-    if (err) throw err;
92c11c
-    var hex = stdout.match(/([A-Fa-f0-9]{40})/)[0];
92c11c
-    assert.equal('8c206a1a87599f532ce68675536f0b1546900d7a', hex);
92c11c
-    console.log('got the correct response');
92c11c
-    fs.unlink(filename);
92c11c
-    server.close();
92c11c
-  });
92c11c
-}
92c11c
-
92c11c
-
92c11c
-var ddcmd = common.ddCommand(filename, 10240);
92c11c
-console.log('dd command: ', ddcmd);
92c11c
-
92c11c
-cp.exec(ddcmd, function(err, stdout, stderr) {
92c11c
-  if (err) throw err;
92c11c
-  maybeMakeRequest();
92c11c
-});
92c11c
-
92c11c
-
92c11c
-var server = http.createServer(function(req, res) {
92c11c
-  res.writeHead(200);
92c11c
-
92c11c
-  // Create the subprocess
92c11c
-  var cat = cp.spawn('cat', [filename]);
92c11c
-
92c11c
-  // Stream the data through to the response as binary chunks
92c11c
-  cat.stdout.on('data', function(data) {
92c11c
-    res.write(data);
92c11c
-  });
92c11c
-
92c11c
-  // End the response on exit (and log errors)
92c11c
-  cat.on('exit', function(code) {
92c11c
-    if (code !== 0) {
92c11c
-      console.error('subprocess exited with code ' + code);
92c11c
-      exit(1);
92c11c
-    }
92c11c
-    res.end();
92c11c
-  });
92c11c
-
92c11c
-});
92c11c
-
92c11c
-server.listen(common.PORT, maybeMakeRequest);
92c11c
-
92c11c
-console.log('Server running at http://localhost:8080');
92c11c
diff --git a/test/simple/test-http-many-keep-alive-connections.js b/test/simple/test-http-many-keep-alive-connections.js
92c11c
deleted file mode 100644
92c11c
index adbebbd..0000000
92c11c
--- a/test/simple/test-http-many-keep-alive-connections.js
92c11c
+++ /dev/null
92c11c
@@ -1,69 +0,0 @@
92c11c
-// Copyright Joyent, Inc. and other Node contributors.
92c11c
-//
92c11c
-// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
-// copy of this software and associated documentation files (the
92c11c
-// "Software"), to deal in the Software without restriction, including
92c11c
-// without limitation the rights to use, copy, modify, merge, publish,
92c11c
-// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
-// persons to whom the Software is furnished to do so, subject to the
92c11c
-// following conditions:
92c11c
-//
92c11c
-// The above copyright notice and this permission notice shall be included
92c11c
-// in all copies or substantial portions of the Software.
92c11c
-//
92c11c
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
-
92c11c
-var common = require('../common');
92c11c
-var assert = require('assert');
92c11c
-var http = require('http');
92c11c
-
92c11c
-var expected = 10000;
92c11c
-var responses = 0;
92c11c
-var requests = 0;
92c11c
-var connection;
92c11c
-
92c11c
-var server = http.Server(function(req, res) {
92c11c
-  requests++;
92c11c
-  assert.equal(req.connection, connection);
92c11c
-  res.writeHead(200);
92c11c
-  res.end('hello world\n');
92c11c
-});
92c11c
-
92c11c
-server.once('connection', function(c) {
92c11c
-  connection = c;
92c11c
-});
92c11c
-
92c11c
-server.listen(common.PORT, function() {
92c11c
-  var callee = arguments.callee;
92c11c
-  var request = http.get({
92c11c
-    port: common.PORT,
92c11c
-    path: '/',
92c11c
-    headers: {
92c11c
-      'Connection': 'Keep-alive'
92c11c
-    }
92c11c
-  }, function(res) {
92c11c
-    res.on('end', function() {
92c11c
-      if (++responses < expected) {
92c11c
-        callee();
92c11c
-      } else {
92c11c
-        server.close();
92c11c
-      }
92c11c
-    });
92c11c
-    res.resume();
92c11c
-  }).on('error', function(e) {
92c11c
-    console.log(e.message);
92c11c
-    process.exit(1);
92c11c
-  });
92c11c
-  request.agent.maxSockets = 1;
92c11c
-});
92c11c
-
92c11c
-process.on('exit', function() {
92c11c
-  assert.equal(expected, responses);
92c11c
-  assert.equal(expected, requests);
92c11c
-});
92c11c
diff --git a/test/simple/test-net-GH-5504.js b/test/simple/test-net-GH-5504.js
92c11c
deleted file mode 100644
92c11c
index d5059f0..0000000
92c11c
--- a/test/simple/test-net-GH-5504.js
92c11c
+++ /dev/null
92c11c
@@ -1,123 +0,0 @@
92c11c
-// Copyright Joyent, Inc. and other Node contributors.
92c11c
-//
92c11c
-// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
-// copy of this software and associated documentation files (the
92c11c
-// "Software"), to deal in the Software without restriction, including
92c11c
-// without limitation the rights to use, copy, modify, merge, publish,
92c11c
-// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
-// persons to whom the Software is furnished to do so, subject to the
92c11c
-// following conditions:
92c11c
-//
92c11c
-// The above copyright notice and this permission notice shall be included
92c11c
-// in all copies or substantial portions of the Software.
92c11c
-//
92c11c
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
-
92c11c
-var common = require('../common');
92c11c
-var assert = require('assert');
92c11c
-
92c11c
-// this test only fails with CentOS 6.3 using kernel version 2.6.32
92c11c
-// On other linuxes and darwin, the `read` call gets an ECONNRESET in
92c11c
-// that case.  On sunos, the `write` call fails with EPIPE.
92c11c
-//
92c11c
-// However, old CentOS will occasionally send an EOF instead of a
92c11c
-// ECONNRESET or EPIPE when the client has been destroyed abruptly.
92c11c
-//
92c11c
-// Make sure we don't keep trying to write or read more in that case.
92c11c
-
92c11c
-switch (process.argv[2]) {
92c11c
-  case 'server': return server();
92c11c
-  case 'client': return client();
92c11c
-  case undefined: return parent();
92c11c
-  default: throw new Error('wtf');
92c11c
-}
92c11c
-
92c11c
-function server() {
92c11c
-  var net = require('net');
92c11c
-  var content = new Buffer(64 * 1024 * 1024);
92c11c
-  content.fill('#');
92c11c
-  net.createServer(function(socket) {
92c11c
-    this.close();
92c11c
-    socket.on('end', function() {
92c11c
-      console.error('end');
92c11c
-    });
92c11c
-    socket.on('_socketEnd', function() {
92c11c
-      console.error('_socketEnd');
92c11c
-    });
92c11c
-    socket.write(content);
92c11c
-  }).listen(3000, function() {
92c11c
-    console.log('listening');
92c11c
-  });
92c11c
-}
92c11c
-
92c11c
-function client() {
92c11c
-  var net = require('net');
92c11c
-  var client = net.connect({
92c11c
-    host: 'localhost',
92c11c
-    port: 3000
92c11c
-  }, function() {
92c11c
-    client.destroy();
92c11c
-  });
92c11c
-}
92c11c
-
92c11c
-function parent() {
92c11c
-  var spawn = require('child_process').spawn;
92c11c
-  var node = process.execPath;
92c11c
-  var assert = require('assert');
92c11c
-  var serverExited = false;
92c11c
-  var clientExited = false;
92c11c
-  var serverListened = false;
92c11c
-  var opt = { env: { NODE_DEBUG: 'net' } };
92c11c
-
92c11c
-  process.on('exit', function() {
92c11c
-    assert(serverExited);
92c11c
-    assert(clientExited);
92c11c
-    assert(serverListened);
92c11c
-    console.log('ok');
92c11c
-  });
92c11c
-
92c11c
-  setTimeout(function() {
92c11c
-    if (s) s.kill();
92c11c
-    if (c) c.kill();
92c11c
-    setTimeout(function() {
92c11c
-      throw new Error('hang');
92c11c
-    });
92c11c
-  }, 1000).unref();
92c11c
-
92c11c
-  var s = spawn(node, [__filename, 'server'], opt);
92c11c
-  var c;
92c11c
-
92c11c
-  wrap(s.stderr, process.stderr, 'SERVER 2>');
92c11c
-  wrap(s.stdout, process.stdout, 'SERVER 1>');
92c11c
-  s.on('exit', function(c) {
92c11c
-    console.error('server exited', c);
92c11c
-    serverExited = true;
92c11c
-  });
92c11c
-
92c11c
-  s.stdout.once('data', function() {
92c11c
-    serverListened = true;
92c11c
-    c = spawn(node, [__filename, 'client']);
92c11c
-    wrap(c.stderr, process.stderr, 'CLIENT 2>');
92c11c
-    wrap(c.stdout, process.stdout, 'CLIENT 1>');
92c11c
-    c.on('exit', function(c) {
92c11c
-      console.error('client exited', c);
92c11c
-      clientExited = true;
92c11c
-    });
92c11c
-  });
92c11c
-
92c11c
-  function wrap(inp, out, w) {
92c11c
-    inp.setEncoding('utf8');
92c11c
-    inp.on('data', function(c) {
92c11c
-      c = c.trim();
92c11c
-      if (!c) return;
92c11c
-      out.write(w + c.split('\n').join('\n' + w) + '\n');
92c11c
-    });
92c11c
-  }
92c11c
-}
92c11c
-
92c11c
diff --git a/test/simple/test-setproctitle.js b/test/simple/test-setproctitle.js
92c11c
deleted file mode 100644
92c11c
index 6373af4..0000000
92c11c
--- a/test/simple/test-setproctitle.js
92c11c
+++ /dev/null
92c11c
@@ -1,52 +0,0 @@
92c11c
-// Copyright Joyent, Inc. and other Node contributors.
92c11c
-//
92c11c
-// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
-// copy of this software and associated documentation files (the
92c11c
-// "Software"), to deal in the Software without restriction, including
92c11c
-// without limitation the rights to use, copy, modify, merge, publish,
92c11c
-// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
-// persons to whom the Software is furnished to do so, subject to the
92c11c
-// following conditions:
92c11c
-//
92c11c
-// The above copyright notice and this permission notice shall be included
92c11c
-// in all copies or substantial portions of the Software.
92c11c
-//
92c11c
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
-
92c11c
-// Original test written by Jakub Lekstan <kuebzky@gmail.com>
92c11c
-
92c11c
-// FIXME add sunos support
92c11c
-if ('linux freebsd darwin'.indexOf(process.platform) === -1) {
92c11c
-  console.error('Skipping test, platform not supported.');
92c11c
-  process.exit();
92c11c
-}
92c11c
-
92c11c
-var common = require('../common');
92c11c
-var assert = require('assert');
92c11c
-var exec = require('child_process').exec;
92c11c
-
92c11c
-// The title shouldn't be too long; libuv's uv_set_process_title() out of
92c11c
-// security considerations no longer overwrites envp, only argv, so the
92c11c
-// maximum title length is possibly quite short.
92c11c
-var title = 'testme';
92c11c
-
92c11c
-assert.notEqual(process.title, title);
92c11c
-process.title = title;
92c11c
-assert.equal(process.title, title);
92c11c
-
92c11c
-exec('ps -p ' + process.pid + ' -o args=', function(error, stdout, stderr) {
92c11c
-  assert.equal(error, null);
92c11c
-  assert.equal(stderr, '');
92c11c
-
92c11c
-  // freebsd always add ' (procname)' to the process title
92c11c
-  if (process.platform === 'freebsd') title += ' (node)';
92c11c
-
92c11c
-  // omitting trailing whitespace and \n
92c11c
-  assert.equal(stdout.replace(/\s+$/, ''), title);
92c11c
-});
92c11c
diff --git a/test/simple/test-stdout-close-unref.js b/test/simple/test-stdout-close-unref.js
92c11c
deleted file mode 100644
92c11c
index 42f3997..0000000
92c11c
--- a/test/simple/test-stdout-close-unref.js
92c11c
+++ /dev/null
92c11c
@@ -1,24 +0,0 @@
92c11c
-// Copyright Joyent, Inc. and other Node contributors.
92c11c
-//
92c11c
-// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
-// copy of this software and associated documentation files (the
92c11c
-// "Software"), to deal in the Software without restriction, including
92c11c
-// without limitation the rights to use, copy, modify, merge, publish,
92c11c
-// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
-// persons to whom the Software is furnished to do so, subject to the
92c11c
-// following conditions:
92c11c
-//
92c11c
-// The above copyright notice and this permission notice shall be included
92c11c
-// in all copies or substantial portions of the Software.
92c11c
-//
92c11c
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
-
92c11c
-process.stdin.resume();
92c11c
-process.stdin._handle.close();
92c11c
-process.stdin._handle.unref();  // Should not segfault.
92c11c
diff --git a/test/simple/test-timers-ordering.js b/test/simple/test-timers-ordering.js
92c11c
deleted file mode 100644
92c11c
index 0a32d48..0000000
92c11c
--- a/test/simple/test-timers-ordering.js
92c11c
+++ /dev/null
92c11c
@@ -1,48 +0,0 @@
92c11c
-// Copyright Joyent, Inc. and other Node contributors.
92c11c
-//
92c11c
-// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
-// copy of this software and associated documentation files (the
92c11c
-// "Software"), to deal in the Software without restriction, including
92c11c
-// without limitation the rights to use, copy, modify, merge, publish,
92c11c
-// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
-// persons to whom the Software is furnished to do so, subject to the
92c11c
-// following conditions:
92c11c
-//
92c11c
-// The above copyright notice and this permission notice shall be included
92c11c
-// in all copies or substantial portions of the Software.
92c11c
-//
92c11c
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
-
92c11c
-var common = require('../common');
92c11c
-var assert = require('assert');
92c11c
-var i;
92c11c
-
92c11c
-var N = 30;
92c11c
-
92c11c
-var last_i = 0;
92c11c
-var last_ts = 0;
92c11c
-var start = Date.now();
92c11c
-
92c11c
-var f = function(i) {
92c11c
-  if (i <= N) {
92c11c
-    // check order
92c11c
-    assert.equal(i, last_i + 1, 'order is broken: ' + i + ' != ' + last_i + ' + 1');
92c11c
-    last_i = i;
92c11c
-
92c11c
-    // check that this iteration is fired at least 1ms later than the previous
92c11c
-    var now = Date.now();
92c11c
-    console.log(i, now);
92c11c
-    assert(now >= last_ts + 1, 'current ts ' + now + ' < prev ts ' + last_ts + ' + 1');
92c11c
-    last_ts = now;
92c11c
-
92c11c
-    // schedule next iteration
92c11c
-    setTimeout(f, 1, i + 1);
92c11c
-  }
92c11c
-};
92c11c
-f(1);
92c11c
diff --git a/test/simple/test-tls-securepair-client.js b/test/simple/test-tls-securepair-client.js
92c11c
deleted file mode 100644
92c11c
index e361a14..0000000
92c11c
--- a/test/simple/test-tls-securepair-client.js
92c11c
+++ /dev/null
92c11c
@@ -1,201 +0,0 @@
92c11c
-// Copyright Joyent, Inc. and other Node contributors.
92c11c
-//
92c11c
-// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
-// copy of this software and associated documentation files (the
92c11c
-// "Software"), to deal in the Software without restriction, including
92c11c
-// without limitation the rights to use, copy, modify, merge, publish,
92c11c
-// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
-// persons to whom the Software is furnished to do so, subject to the
92c11c
-// following conditions:
92c11c
-//
92c11c
-// The above copyright notice and this permission notice shall be included
92c11c
-// in all copies or substantial portions of the Software.
92c11c
-//
92c11c
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
-
92c11c
-if (!process.versions.openssl) {
92c11c
-  console.error('Skipping because node compiled without OpenSSL.');
92c11c
-  process.exit(0);
92c11c
-}
92c11c
-
92c11c
-var common = require('../common');
92c11c
-var join = require('path').join;
92c11c
-var net = require('net');
92c11c
-var assert = require('assert');
92c11c
-var fs = require('fs');
92c11c
-var crypto = require('crypto');
92c11c
-var tls = require('tls');
92c11c
-var exec = require('child_process').exec;
92c11c
-var spawn = require('child_process').spawn;
92c11c
-
92c11c
-maybe(test1);
92c11c
-
92c11c
-// There is a bug with 'openssl s_server' which makes it not flush certain
92c11c
-// important events to stdout when done over a pipe. Therefore we skip this
92c11c
-// test for all openssl versions less than 1.0.0.
92c11c
-function maybe(cb) {
92c11c
-  exec('openssl version', function(err, data) {
92c11c
-    if (err) throw err;
92c11c
-    if (/OpenSSL 0\./.test(data)) {
92c11c
-      console.error('Skipping due to old OpenSSL version.');
92c11c
-      return;
92c11c
-    }
92c11c
-    cb();
92c11c
-  });
92c11c
-}
92c11c
-
92c11c
-// simple/test-tls-securepair-client
92c11c
-function test1() {
92c11c
-  test('agent.key', 'agent.crt', null, test2);
92c11c
-}
92c11c
-
92c11c
-// simple/test-tls-ext-key-usage
92c11c
-function test2() {
92c11c
-  function check(pair) {
92c11c
-    // "TLS Web Client Authentication"
92c11c
-    assert.equal(pair.cleartext.getPeerCertificate().ext_key_usage.length, 1);
92c11c
-    assert.equal(pair.cleartext.getPeerCertificate().ext_key_usage[0],
92c11c
-                 '1.3.6.1.5.5.7.3.2');
92c11c
-  }
92c11c
-  test('keys/agent4-key.pem', 'keys/agent4-cert.pem', check);
92c11c
-}
92c11c
-
92c11c
-function test(keyfn, certfn, check, next) {
92c11c
-  // FIXME: Avoid the common PORT as this test currently hits a C-level
92c11c
-  // assertion error with node_g. The program aborts without HUPing
92c11c
-  // the openssl s_server thus causing many tests to fail with
92c11c
-  // EADDRINUSE.
92c11c
-  var PORT = common.PORT + 5;
92c11c
-
92c11c
-  var connections = 0;
92c11c
-
92c11c
-  keyfn = join(common.fixturesDir, keyfn);
92c11c
-  var key = fs.readFileSync(keyfn).toString();
92c11c
-
92c11c
-  certfn = join(common.fixturesDir, certfn);
92c11c
-  var cert = fs.readFileSync(certfn).toString();
92c11c
-
92c11c
-  var server = spawn('openssl', ['s_server',
92c11c
-                                 '-accept', PORT,
92c11c
-                                 '-cert', certfn,
92c11c
-                                 '-key', keyfn]);
92c11c
-  server.stdout.pipe(process.stdout);
92c11c
-  server.stderr.pipe(process.stdout);
92c11c
-
92c11c
-
92c11c
-  var state = 'WAIT-ACCEPT';
92c11c
-
92c11c
-  var serverStdoutBuffer = '';
92c11c
-  server.stdout.setEncoding('utf8');
92c11c
-  server.stdout.on('data', function(s) {
92c11c
-    serverStdoutBuffer += s;
92c11c
-    console.error(state);
92c11c
-    switch (state) {
92c11c
-      case 'WAIT-ACCEPT':
92c11c
-        if (/ACCEPT/g.test(serverStdoutBuffer)) {
92c11c
-          // Give s_server half a second to start up.
92c11c
-          setTimeout(startClient, 500);
92c11c
-          state = 'WAIT-HELLO';
92c11c
-        }
92c11c
-        break;
92c11c
-
92c11c
-      case 'WAIT-HELLO':
92c11c
-        if (/hello/g.test(serverStdoutBuffer)) {
92c11c
-
92c11c
-          // End the current SSL connection and exit.
92c11c
-          // See s_server(1ssl).
92c11c
-          server.stdin.write('Q');
92c11c
-
92c11c
-          state = 'WAIT-SERVER-CLOSE';
92c11c
-        }
92c11c
-        break;
92c11c
-
92c11c
-      default:
92c11c
-        break;
92c11c
-    }
92c11c
-  });
92c11c
-
92c11c
-
92c11c
-  var timeout = setTimeout(function() {
92c11c
-    server.kill();
92c11c
-    process.exit(1);
92c11c
-  }, 5000);
92c11c
-
92c11c
-  var gotWriteCallback = false;
92c11c
-  var serverExitCode = -1;
92c11c
-
92c11c
-  server.on('exit', function(code) {
92c11c
-    serverExitCode = code;
92c11c
-    clearTimeout(timeout);
92c11c
-    if (next) next();
92c11c
-  });
92c11c
-
92c11c
-
92c11c
-  function startClient() {
92c11c
-    var s = new net.Stream();
92c11c
-
92c11c
-    var sslcontext = crypto.createCredentials({key: key, cert: cert});
92c11c
-    sslcontext.context.setCiphers('RC4-SHA:AES128-SHA:AES256-SHA');
92c11c
-
92c11c
-    var pair = tls.createSecurePair(sslcontext, false);
92c11c
-
92c11c
-    assert.ok(pair.encrypted.writable);
92c11c
-    assert.ok(pair.cleartext.writable);
92c11c
-
92c11c
-    pair.encrypted.pipe(s);
92c11c
-    s.pipe(pair.encrypted);
92c11c
-
92c11c
-    s.connect(PORT);
92c11c
-
92c11c
-    s.on('connect', function() {
92c11c
-      console.log('client connected');
92c11c
-    });
92c11c
-
92c11c
-    pair.on('secure', function() {
92c11c
-      console.log('client: connected+secure!');
92c11c
-      console.log('client pair.cleartext.getPeerCertificate(): %j',
92c11c
-                  pair.cleartext.getPeerCertificate());
92c11c
-      console.log('client pair.cleartext.getCipher(): %j',
92c11c
-                  pair.cleartext.getCipher());
92c11c
-      if (check) check(pair);
92c11c
-      setTimeout(function() {
92c11c
-        pair.cleartext.write('hello\r\n', function() {
92c11c
-          gotWriteCallback = true;
92c11c
-        });
92c11c
-      }, 500);
92c11c
-    });
92c11c
-
92c11c
-    pair.cleartext.on('data', function(d) {
92c11c
-      console.log('cleartext: %s', d.toString());
92c11c
-    });
92c11c
-
92c11c
-    s.on('close', function() {
92c11c
-      console.log('client close');
92c11c
-    });
92c11c
-
92c11c
-    pair.encrypted.on('error', function(err) {
92c11c
-      console.log('encrypted error: ' + err);
92c11c
-    });
92c11c
-
92c11c
-    s.on('error', function(err) {
92c11c
-      console.log('socket error: ' + err);
92c11c
-    });
92c11c
-
92c11c
-    pair.on('error', function(err) {
92c11c
-      console.log('secure error: ' + err);
92c11c
-    });
92c11c
-  }
92c11c
-
92c11c
-
92c11c
-  process.on('exit', function() {
92c11c
-    assert.equal(0, serverExitCode);
92c11c
-    assert.equal('WAIT-SERVER-CLOSE', state);
92c11c
-    assert.ok(gotWriteCallback);
92c11c
-  });
92c11c
-}
92c11c
diff --git a/test/simple/test-tls-securepair-server.js b/test/simple/test-tls-securepair-server.js
92c11c
deleted file mode 100644
92c11c
index 3b4eec1..0000000
92c11c
--- a/test/simple/test-tls-securepair-server.js
92c11c
+++ /dev/null
92c11c
@@ -1,154 +0,0 @@
92c11c
-// Copyright Joyent, Inc. and other Node contributors.
92c11c
-//
92c11c
-// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
-// copy of this software and associated documentation files (the
92c11c
-// "Software"), to deal in the Software without restriction, including
92c11c
-// without limitation the rights to use, copy, modify, merge, publish,
92c11c
-// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
-// persons to whom the Software is furnished to do so, subject to the
92c11c
-// following conditions:
92c11c
-//
92c11c
-// The above copyright notice and this permission notice shall be included
92c11c
-// in all copies or substantial portions of the Software.
92c11c
-//
92c11c
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
-
92c11c
-if (!process.versions.openssl) {
92c11c
-  console.error('Skipping because node compiled without OpenSSL.');
92c11c
-  process.exit(0);
92c11c
-}
92c11c
-
92c11c
-
92c11c
-var common = require('../common');
92c11c
-var assert = require('assert');
92c11c
-
92c11c
-var join = require('path').join;
92c11c
-var net = require('net');
92c11c
-var fs = require('fs');
92c11c
-var crypto = require('crypto');
92c11c
-var tls = require('tls');
92c11c
-var spawn = require('child_process').spawn;
92c11c
-
92c11c
-var connections = 0;
92c11c
-var key = fs.readFileSync(join(common.fixturesDir, 'agent.key')).toString();
92c11c
-var cert = fs.readFileSync(join(common.fixturesDir, 'agent.crt')).toString();
92c11c
-
92c11c
-function log(a) {
92c11c
-  console.error('***server*** ' + a);
92c11c
-}
92c11c
-
92c11c
-var server = net.createServer(function(socket) {
92c11c
-  connections++;
92c11c
-  log('connection fd=' + socket.fd);
92c11c
-  var sslcontext = crypto.createCredentials({key: key, cert: cert});
92c11c
-  sslcontext.context.setCiphers('RC4-SHA:AES128-SHA:AES256-SHA');
92c11c
-
92c11c
-  var pair = tls.createSecurePair(sslcontext, true);
92c11c
-
92c11c
-  assert.ok(pair.encrypted.writable);
92c11c
-  assert.ok(pair.cleartext.writable);
92c11c
-
92c11c
-  pair.encrypted.pipe(socket);
92c11c
-  socket.pipe(pair.encrypted);
92c11c
-
92c11c
-  log('i set it secure');
92c11c
-
92c11c
-  pair.on('secure', function() {
92c11c
-    log('connected+secure!');
92c11c
-    pair.cleartext.write('hello\r\n');
92c11c
-    log(pair.cleartext.getPeerCertificate());
92c11c
-    log(pair.cleartext.getCipher());
92c11c
-  });
92c11c
-
92c11c
-  pair.cleartext.on('data', function(data) {
92c11c
-    log('read bytes ' + data.length);
92c11c
-    pair.cleartext.write(data);
92c11c
-  });
92c11c
-
92c11c
-  socket.on('end', function() {
92c11c
-    log('socket end');
92c11c
-  });
92c11c
-
92c11c
-  pair.cleartext.on('error', function(err) {
92c11c
-    log('got error: ');
92c11c
-    log(err);
92c11c
-    log(err.stack);
92c11c
-    socket.destroy();
92c11c
-  });
92c11c
-
92c11c
-  pair.encrypted.on('error', function(err) {
92c11c
-    log('encrypted error: ');
92c11c
-    log(err);
92c11c
-    log(err.stack);
92c11c
-    socket.destroy();
92c11c
-  });
92c11c
-
92c11c
-  socket.on('error', function(err) {
92c11c
-    log('socket error: ');
92c11c
-    log(err);
92c11c
-    log(err.stack);
92c11c
-    socket.destroy();
92c11c
-  });
92c11c
-
92c11c
-  socket.on('close', function(err) {
92c11c
-    log('socket closed');
92c11c
-  });
92c11c
-
92c11c
-  pair.on('error', function(err) {
92c11c
-    log('secure error: ');
92c11c
-    log(err);
92c11c
-    log(err.stack);
92c11c
-    socket.destroy();
92c11c
-  });
92c11c
-});
92c11c
-
92c11c
-var gotHello = false;
92c11c
-var sentWorld = false;
92c11c
-var gotWorld = false;
92c11c
-var opensslExitCode = -1;
92c11c
-
92c11c
-server.listen(common.PORT, function() {
92c11c
-  // To test use: openssl s_client -connect localhost:8000
92c11c
-  var client = spawn('openssl', ['s_client', '-connect', '127.0.0.1:' +
92c11c
-        common.PORT]);
92c11c
-
92c11c
-
92c11c
-  var out = '';
92c11c
-
92c11c
-  client.stdout.setEncoding('utf8');
92c11c
-  client.stdout.on('data', function(d) {
92c11c
-    out += d;
92c11c
-
92c11c
-    if (!gotHello && /hello/.test(out)) {
92c11c
-      gotHello = true;
92c11c
-      client.stdin.write('world\r\n');
92c11c
-      sentWorld = true;
92c11c
-    }
92c11c
-
92c11c
-    if (!gotWorld && /world/.test(out)) {
92c11c
-      gotWorld = true;
92c11c
-      client.stdin.end();
92c11c
-    }
92c11c
-  });
92c11c
-
92c11c
-  client.stdout.pipe(process.stdout, { end: false });
92c11c
-
92c11c
-  client.on('exit', function(code) {
92c11c
-    opensslExitCode = code;
92c11c
-    server.close();
92c11c
-  });
92c11c
-});
92c11c
-
92c11c
-process.on('exit', function() {
92c11c
-  assert.equal(1, connections);
92c11c
-  assert.ok(gotHello);
92c11c
-  assert.ok(sentWorld);
92c11c
-  assert.ok(gotWorld);
92c11c
-  assert.equal(0, opensslExitCode);
92c11c
-});
92c11c
diff --git a/test/simple/test-tls-set-ciphers.js b/test/simple/test-tls-set-ciphers.js
92c11c
deleted file mode 100644
92c11c
index a473a1d..0000000
92c11c
--- a/test/simple/test-tls-set-ciphers.js
92c11c
+++ /dev/null
92c11c
@@ -1,62 +0,0 @@
92c11c
-// Copyright Joyent, Inc. and other Node contributors.
92c11c
-//
92c11c
-// Permission is hereby granted, free of charge, to any person obtaining a
92c11c
-// copy of this software and associated documentation files (the
92c11c
-// "Software"), to deal in the Software without restriction, including
92c11c
-// without limitation the rights to use, copy, modify, merge, publish,
92c11c
-// distribute, sublicense, and/or sell copies of the Software, and to permit
92c11c
-// persons to whom the Software is furnished to do so, subject to the
92c11c
-// following conditions:
92c11c
-//
92c11c
-// The above copyright notice and this permission notice shall be included
92c11c
-// in all copies or substantial portions of the Software.
92c11c
-//
92c11c
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
92c11c
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
92c11c
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
92c11c
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
92c11c
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
92c11c
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
92c11c
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
92c11c
-
92c11c
-var common = require('../common');
92c11c
-var assert = require('assert');
92c11c
-var exec = require('child_process').exec;
92c11c
-var tls = require('tls');
92c11c
-var fs = require('fs');
92c11c
-
92c11c
-if (process.platform === 'win32') {
92c11c
-  console.log("Skipping test, you probably don't have openssl installed.");
92c11c
-  process.exit();
92c11c
-}
92c11c
-
92c11c
-var options = {
92c11c
-  key: fs.readFileSync(common.fixturesDir + '/keys/agent2-key.pem'),
92c11c
-  cert: fs.readFileSync(common.fixturesDir + '/keys/agent2-cert.pem'),
92c11c
-  ciphers: 'RC4-MD5'
92c11c
-};
92c11c
-
92c11c
-var reply = 'I AM THE WALRUS'; // something recognizable
92c11c
-var nconns = 0;
92c11c
-var response = '';
92c11c
-
92c11c
-process.on('exit', function() {
92c11c
-  assert.equal(nconns, 1);
92c11c
-  assert.notEqual(response.indexOf(reply), -1);
92c11c
-});
92c11c
-
92c11c
-var server = tls.createServer(options, function(conn) {
92c11c
-  conn.end(reply);
92c11c
-  nconns++;
92c11c
-});
92c11c
-
92c11c
-server.listen(common.PORT, '127.0.0.1', function() {
92c11c
-  var cmd = 'openssl s_client -cipher ' + options.ciphers +
92c11c
-            ' -connect 127.0.0.1:' + common.PORT;
92c11c
-
92c11c
-  exec(cmd, function(err, stdout, stderr) {
92c11c
-    if (err) throw err;
92c11c
-    response = stdout;
92c11c
-    server.close();
92c11c
-  });
92c11c
-});
92c11c
-- 
92c11c
1.8.3.1
92c11c