From f034e50ba9847250388c0608cd217dbd1dbc76db Mon Sep 17 00:00:00 2001
From: murgatroid99 <michael.lumish@gmail.com>
Date: Wed, 21 Jan 2015 12:12:39 -0800
Subject: [PATCH] Modified interop tests to handle binding to port 0

---
 src/node/interop/interop_server.js   | 11 ++++++-----
 src/node/test/interop_sanity_test.js | 13 +++++--------
 2 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/src/node/interop/interop_server.js b/src/node/interop/interop_server.js
index 735b7a6d18..6d2bd7ae0d 100644
--- a/src/node/interop/interop_server.js
+++ b/src/node/interop/interop_server.js
@@ -157,7 +157,8 @@ function handleHalfDuplex(call) {
  * Get a server object bound to the given port
  * @param {string} port Port to which to bind
  * @param {boolean} tls Indicates that the bound port should use TLS
- * @return {Server} Server object bound to the support
+ * @return {{server: Server, port: number}} Server object bound to the support,
+ *     and port number that the server is bound to
  */
 function getServer(port, tls) {
   // TODO(mlumish): enable TLS functionality
@@ -183,8 +184,8 @@ function getServer(port, tls) {
       halfDuplexCall: handleHalfDuplex
     }
   }, options);
-  server.bind('0.0.0.0:' + port, tls);
-  return server;
+  var port_num = server.bind('0.0.0.0:' + port, tls);
+  return {server: server, port: port_num};
 }
 
 if (require.main === module) {
@@ -192,8 +193,8 @@ if (require.main === module) {
   var argv = parseArgs(process.argv, {
     string: ['port', 'use_tls']
   });
-  var server = getServer(argv.port, argv.use_tls === 'true');
-  server.start();
+  var server_obj = getServer(argv.port, argv.use_tls === 'true');
+  server_obj.server.start();
 }
 
 /**
diff --git a/src/node/test/interop_sanity_test.js b/src/node/test/interop_sanity_test.js
index 9959a165ad..b0fc8f8200 100644
--- a/src/node/test/interop_sanity_test.js
+++ b/src/node/test/interop_sanity_test.js
@@ -34,8 +34,6 @@
 var interop_server = require('../interop/interop_server.js');
 var interop_client = require('../interop/interop_client.js');
 
-var port_picker = require('../port_picker');
-
 var server;
 
 var port;
@@ -44,12 +42,11 @@ var name_override = 'foo.test.google.com';
 
 describe('Interop tests', function() {
   before(function(done) {
-    port_picker.nextAvailablePort(function(addr) {
-      server = interop_server.getServer(addr.substring(addr.indexOf(':') + 1), true);
-      server.listen();
-      port = addr;
-      done();
-    });
+    var server_obj = interop_server.getServer(0, true);
+    server = server_obj.server;
+    server.listen();
+    port = 'localhost:' + server_obj.port;
+    done();
   });
   // This depends on not using a binary stream
   it.skip('should pass empty_unary', function(done) {
-- 
GitLab