9858: Check if port-1 is available, retry if not when asking an available port for...
authorLucas Di Pentima <lucas@curoverse.com>
Fri, 2 Sep 2016 19:41:27 +0000 (16:41 -0300)
committerLucas Di Pentima <lucas@curoverse.com>
Fri, 2 Sep 2016 19:41:27 +0000 (16:41 -0300)
apps/workbench/test/integration_helper.rb

index 785912d3242e303825fce26975fa38b314ac1e88..c133de0d6b16ef821e3c44dbb8357991b3de2dda 100644 (file)
@@ -5,10 +5,20 @@ require 'uri'
 require 'yaml'
 
 def available_port for_what
-  Addrinfo.tcp("0.0.0.0", 0).listen do |srv|
-    port = srv.connect_address.ip_port
-    STDERR.puts "Using port #{port} for #{for_what}"
-    return port
+  begin
+    Addrinfo.tcp("0.0.0.0", 0).listen do |srv|
+      port = srv.connect_address.ip_port
+      # Selenium needs an additional locking port, check if it's available
+      # and retry if necessary.
+      if for_what == 'selenium'
+        locking_port = port - 1
+        Addrinfo.tcp("0.0.0.0", locking_port).listen.close
+      end
+      STDERR.puts "Using port #{port} for #{for_what}"
+      return port
+    end
+  rescue Errno::EADDRINUSE => e
+    retry
   end
 end