aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Bergström <bugs@bergstroem.nu>2015-03-17 12:06:48 +1100
committerJohan Bergström <bugs@bergstroem.nu>2015-03-19 09:11:50 +1100
commitc15e81afdd5413f94df23eb82b6fc65875cb07fb (patch)
tree580f0433e3b1fff6693cce1dbb3de0682317df43
parentfe0f015c5159633127e268ebfc5db121883bc35c (diff)
downloadandroid-node-v8-c15e81afdd5413f94df23eb82b6fc65875cb07fb.tar.gz
android-node-v8-c15e81afdd5413f94df23eb82b6fc65875cb07fb.tar.bz2
android-node-v8-c15e81afdd5413f94df23eb82b6fc65875cb07fb.zip
test: Introduce knowledge of FreeBSD jails
FreeBSD jails act differently than your average vm or similar application container. All routing passes through one ip address, which makes things like localhost or 0.0.0.0 resolve differently. Introduce a helper that allows us to verify if we're in a jail and another one for returning an ip address for localhost. Also, skip one test instead of trading additional complexity in common.js for one specific user scenario. PR-URL: https://github.com/iojs/io.js/pull/1167 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
-rw-r--r--test/common.js29
-rw-r--r--test/parallel/test-dgram-address.js2
-rw-r--r--test/parallel/test-dgram-bind-default-address.js6
-rw-r--r--test/parallel/test-dgram-udp4.js4
-rw-r--r--test/parallel/test-net-local-address-port.js6
-rw-r--r--test/parallel/test-net-remote-address-port.js2
-rw-r--r--test/sequential/test-net-server-address.js2
7 files changed, 43 insertions, 8 deletions
diff --git a/test/common.js b/test/common.js
index 901425b288..e0db00175f 100644
--- a/test/common.js
+++ b/test/common.js
@@ -21,6 +21,35 @@ exports.tmpDir = path.join(exports.testDir, exports.tmpDirName);
var opensslCli = null;
+Object.defineProperty(exports, 'inFreeBSDJail', {
+ get: function() {
+ if (process.platform === 'freebsd' &&
+ child_process.execSync('sysctl -n security.jail.jailed').toString() ===
+ '1\n') {
+ return true;
+ } else {
+ return false;
+ }
+ }
+});
+
+Object.defineProperty(exports, 'localhost_ipv4', {
+ get: function() {
+ if (exports.inFreeBSDJail) {
+ // Jailed network interfaces are a bit special - since we need to jump
+ // through loops, as well as this being an exception case, assume the
+ // user will provide this instead.
+ if (process.env.LOCALHOST)
+ return process.env.LOCALHOST;
+
+ console.error('Looks like we\'re in a FreeBSD Jail. ' +
+ 'Please provide your default interface address ' +
+ 'as LOCALHOST or expect some tests to fail.');
+ }
+ return '127.0.0.1';
+ }
+});
+
// opensslCli defined lazily to reduce overhead of spawnSync
Object.defineProperty(exports, 'opensslCli', {get: function() {
if (opensslCli !== null) return opensslCli;
diff --git a/test/parallel/test-dgram-address.js b/test/parallel/test-dgram-address.js
index bab4507612..d0781a9452 100644
--- a/test/parallel/test-dgram-address.js
+++ b/test/parallel/test-dgram-address.js
@@ -3,7 +3,7 @@ var assert = require('assert');
var dgram = require('dgram');
// IPv4 Test
-var localhost_ipv4 = '127.0.0.1';
+var localhost_ipv4 = common.localhost_ipv4;
var socket_ipv4 = dgram.createSocket('udp4');
var family_ipv4 = 'IPv4';
diff --git a/test/parallel/test-dgram-bind-default-address.js b/test/parallel/test-dgram-bind-default-address.js
index 74bf9442ab..28db7d9fa6 100644
--- a/test/parallel/test-dgram-bind-default-address.js
+++ b/test/parallel/test-dgram-bind-default-address.js
@@ -2,6 +2,12 @@ var common = require('../common');
var assert = require('assert');
var dgram = require('dgram');
+// skip test in FreeBSD jails since 0.0.0.0 will resolve to default interface
+if (common.inFreeBSDJail) {
+ console.log('1..0 # Skipped: In a FreeBSD jail');
+ process.exit();
+}
+
dgram.createSocket('udp4').bind(common.PORT + 0, common.mustCall(function() {
assert.equal(this.address().port, common.PORT + 0);
assert.equal(this.address().address, '0.0.0.0');
diff --git a/test/parallel/test-dgram-udp4.js b/test/parallel/test-dgram-udp4.js
index 6844c7c449..da542146ad 100644
--- a/test/parallel/test-dgram-udp4.js
+++ b/test/parallel/test-dgram-udp4.js
@@ -11,7 +11,7 @@ server = dgram.createSocket('udp4');
server.on('message', function(msg, rinfo) {
console.log('server got: ' + msg +
' from ' + rinfo.address + ':' + rinfo.port);
- assert.strictEqual(rinfo.address, '127.0.0.1');
+ assert.strictEqual(rinfo.address, common.localhost_ipv4);
assert.strictEqual(msg.toString(), message_to_send.toString());
server.send(msg, 0, msg.length, rinfo.port, rinfo.address);
});
@@ -22,7 +22,7 @@ server.on('listening', function() {
client.on('message', function(msg, rinfo) {
console.log('client got: ' + msg +
' from ' + rinfo.address + ':' + address.port);
- assert.strictEqual(rinfo.address, '127.0.0.1');
+ assert.strictEqual(rinfo.address, common.localhost_ipv4);
assert.strictEqual(rinfo.port, server_port);
assert.strictEqual(msg.toString(), message_to_send.toString());
client.close();
diff --git a/test/parallel/test-net-local-address-port.js b/test/parallel/test-net-local-address-port.js
index 2669e10df7..57c39f1d7e 100644
--- a/test/parallel/test-net-local-address-port.js
+++ b/test/parallel/test-net-local-address-port.js
@@ -6,7 +6,7 @@ var conns = 0, conns_closed = 0;
var server = net.createServer(function(socket) {
conns++;
- assert.equal('127.0.0.1', socket.localAddress);
+ assert.equal(common.localhost_ipv4, socket.localAddress);
assert.equal(socket.localPort, common.PORT);
socket.on('end', function() {
server.close();
@@ -14,8 +14,8 @@ var server = net.createServer(function(socket) {
socket.resume();
});
-server.listen(common.PORT, '127.0.0.1', function() {
- var client = net.createConnection(common.PORT, '127.0.0.1');
+server.listen(common.PORT, common.localhost_ipv4, function() {
+ var client = net.createConnection(common.PORT, common.localhost_ipv4);
client.on('connect', function() {
client.end();
});
diff --git a/test/parallel/test-net-remote-address-port.js b/test/parallel/test-net-remote-address-port.js
index 62b28f9cb4..44c4e3a4cd 100644
--- a/test/parallel/test-net-remote-address-port.js
+++ b/test/parallel/test-net-remote-address-port.js
@@ -5,7 +5,7 @@ var net = require('net');
var conns = 0, conns_closed = 0;
-var remoteAddrCandidates = [ '127.0.0.1'];
+var remoteAddrCandidates = [ common.localhost_ipv4 ];
if (common.hasIPv6) remoteAddrCandidates.push('::ffff:127.0.0.1');
var remoteFamilyCandidates = ['IPv4'];
diff --git a/test/sequential/test-net-server-address.js b/test/sequential/test-net-server-address.js
index 936a7760b1..292fea2e19 100644
--- a/test/sequential/test-net-server-address.js
+++ b/test/sequential/test-net-server-address.js
@@ -3,7 +3,7 @@ var assert = require('assert');
var net = require('net');
// Test on IPv4 Server
-var localhost_ipv4 = '127.0.0.1';
+var localhost_ipv4 = common.localhost_ipv4;
var family_ipv4 = 'IPv4';
var server_ipv4 = net.createServer();