test: cache lazy properties, fix style nits
authorRod Vagg <rod@vagg.org>
Wed, 18 Mar 2015 22:27:26 +0000 (09:27 +1100)
committerRod Vagg <rod@vagg.org>
Thu, 19 Mar 2015 05:27:45 +0000 (16:27 +1100)
inFreeBSDJail involves an execSync() and is used by localhost_ipv4 so
will be unnecessarily expensive, so cache both values and reuse
rather than re-evaluate each time.

Renamed localhost_ipv4 to localhostIPv4 for style consistency.

PR-URL: https://github.com/iojs/io.js/pull/1196
Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
test/common.js
test/parallel/test-dgram-address.js
test/parallel/test-dgram-udp4.js
test/parallel/test-net-local-address-port.js
test/parallel/test-net-remote-address-port.js
test/sequential/test-net-server-address.js

index e0db001..1ef491e 100644 (file)
@@ -20,33 +20,44 @@ if (process.env.TEST_THREAD_ID) {
 exports.tmpDir = path.join(exports.testDir, exports.tmpDirName);
 
 var opensslCli = null;
+var inFreeBSDJail = null;
+var localhostIPv4 = null;
 
 Object.defineProperty(exports, 'inFreeBSDJail', {
   get: function() {
+    if (inFreeBSDJail !== null) return inFreeBSDJail;
+
     if (process.platform === 'freebsd' &&
       child_process.execSync('sysctl -n security.jail.jailed').toString() ===
       '1\n') {
-      return true;
+      inFreeBSDJail = true;
     } else {
-      return false;
+      inFreeBSDJail = false;
     }
+    return inFreeBSDJail;
   }
 });
 
-Object.defineProperty(exports, 'localhost_ipv4', {
+Object.defineProperty(exports, 'localhostIPv4', {
   get: function() {
+    if (localhostIPv4 !== null) return localhostIPv4;
+
     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.');
+      if (process.env.LOCALHOST) {
+        localhostIPv4 = process.env.LOCALHOST;
+      } else {
+        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';
+
+    if (localhostIPv4 === null) localhostIPv4 = '127.0.0.1';
+
+    return localhostIPv4;
   }
 });
 
index d0781a9..6da1c6c 100644 (file)
@@ -3,13 +3,12 @@ var assert = require('assert');
 var dgram = require('dgram');
 
 // IPv4 Test
-var localhost_ipv4 = common.localhost_ipv4;
 var socket_ipv4 = dgram.createSocket('udp4');
 var family_ipv4 = 'IPv4';
 
 socket_ipv4.on('listening', function() {
   var address_ipv4 = socket_ipv4.address();
-  assert.strictEqual(address_ipv4.address, localhost_ipv4);
+  assert.strictEqual(address_ipv4.address, common.localhostIPv4);
   assert.strictEqual(address_ipv4.port, common.PORT);
   assert.strictEqual(address_ipv4.family, family_ipv4);
   socket_ipv4.close();
@@ -20,7 +19,7 @@ socket_ipv4.on('error', function(e) {
   socket_ipv4.close();
 });
 
-socket_ipv4.bind(common.PORT, localhost_ipv4);
+socket_ipv4.bind(common.PORT, common.localhostIPv4);
 
 // IPv6 Test
 var localhost_ipv6 = '::1';
index da54214..cde49c1 100644 (file)
@@ -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, common.localhost_ipv4);
+  assert.strictEqual(rinfo.address, common.localhostIPv4);
   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, common.localhost_ipv4);
+    assert.strictEqual(rinfo.address, common.localhostIPv4);
     assert.strictEqual(rinfo.port, server_port);
     assert.strictEqual(msg.toString(), message_to_send.toString());
     client.close();
index 57c39f1..0bbfee8 100644 (file)
@@ -6,7 +6,7 @@ var conns = 0, conns_closed = 0;
 
 var server = net.createServer(function(socket) {
   conns++;
-  assert.equal(common.localhost_ipv4, socket.localAddress);
+  assert.equal(common.localhostIPv4, 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, common.localhost_ipv4, function() {
-  var client = net.createConnection(common.PORT, common.localhost_ipv4);
+server.listen(common.PORT, common.localhostIPv4, function() {
+  var client = net.createConnection(common.PORT, common.localhostIPv4);
   client.on('connect', function() {
     client.end();
   });
index 44c4e3a..2f8c673 100644 (file)
@@ -5,7 +5,7 @@ var net = require('net');
 
 var conns = 0, conns_closed = 0;
 
-var remoteAddrCandidates = [ common.localhost_ipv4 ];
+var remoteAddrCandidates = [ common.localhostIPv4 ];
 if (common.hasIPv6) remoteAddrCandidates.push('::ffff:127.0.0.1');
 
 var remoteFamilyCandidates = ['IPv4'];
index 292fea2..717d46f 100644 (file)
@@ -3,7 +3,6 @@ var assert = require('assert');
 var net = require('net');
 
 // Test on IPv4 Server
-var localhost_ipv4 = common.localhost_ipv4;
 var family_ipv4 = 'IPv4';
 var server_ipv4 = net.createServer();
 
@@ -11,9 +10,9 @@ server_ipv4.on('error', function(e) {
   console.log('Error on ipv4 socket: ' + e.toString());
 });
 
-server_ipv4.listen(common.PORT, localhost_ipv4, function() {
+server_ipv4.listen(common.PORT, common.localhostIPv4, function() {
   var address_ipv4 = server_ipv4.address();
-  assert.strictEqual(address_ipv4.address, localhost_ipv4);
+  assert.strictEqual(address_ipv4.address, common.localhostIPv4);
   assert.strictEqual(address_ipv4.port, common.PORT);
   assert.strictEqual(address_ipv4.family, family_ipv4);
   server_ipv4.close();