From ea95fd208b9ab4d715624811b84c6e267e580cdd Mon Sep 17 00:00:00 2001 From: Douglas Gibbons Date: Mon, 3 Feb 2020 20:30:41 -0800 Subject: [PATCH] * Python 3 compatibility * New port for every test --- test/wait-for-it.py | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) mode change 100644 => 100755 test/wait-for-it.py diff --git a/test/wait-for-it.py b/test/wait-for-it.py old mode 100644 new mode 100755 index e06fb8c..f63990d --- a/test/wait-for-it.py +++ b/test/wait-for-it.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python + import unittest import shlex from subprocess import Popen, PIPE @@ -24,13 +26,13 @@ class TestWaitForIt(unittest.TestCase): proc = Popen(args, stdout=PIPE, stderr=PIPE) out, err = proc.communicate() exitcode = proc.returncode - return exitcode, out, err + return exitcode, out.decode('utf-8'), err.decode('utf-8') - def open_local_port(self, host="localhost", port=8929, timeout=5): + def open_local_port(self, timeout=5): s = socket.socket() - s.bind((host, port)) + s.bind(('', 0)) s.listen(timeout) - return s + return s, s.getsockname()[1] def check_args(self, args, stdout_regex, stderr_regex, exitcode): command = self.wait_script + " " + args @@ -102,11 +104,11 @@ class TestWaitForIt(unittest.TestCase): def test_host_port(self): """ Check that --host and --port args work correctly """ - soc = self.open_local_port(port=8929) + soc, port = self.open_local_port() self.check_args( - "--host=localhost --port=8929 --timeout=1", + "--host=localhost --port={0} --timeout=1".format(port), "", - "wait-for-it.sh: waiting 1 seconds for localhost:8929", + "wait-for-it.sh: waiting 1 seconds for localhost:{0}".format(port), 0 ) soc.close() @@ -116,15 +118,16 @@ class TestWaitForIt(unittest.TestCase): Tests that wait-for-it.sh returns correctly after establishing a connectionm using combined host and ports """ - soc = self.open_local_port(port=8929) + soc, port = self.open_local_port() self.check_args( - "localhost:8929 --timeout=1", + "localhost:{0} --timeout=1".format(port), "", - "wait-for-it.sh: waiting 1 seconds for localhost:8929", + "wait-for-it.sh: waiting 1 seconds for localhost:{0}".format(port), 0 ) soc.close() + def test_port_failure_with_timeout(self): """ Note exit status of 124 is exected, passed from the timeout command @@ -140,11 +143,11 @@ class TestWaitForIt(unittest.TestCase): """ Checks that a command executes correctly after a port test passes """ - soc = self.open_local_port(port=8929) + soc, port = self.open_local_port() self.check_args( - "localhost:8929 -- echo \"CMD OUTPUT\"", + "localhost:{0} -- echo \"CMD OUTPUT\"".format(port), "CMD OUTPUT", - ".*wait-for-it.sh: localhost:8929 is available after 0 seconds", + ".*wait-for-it.sh: localhost:{0} is available after 0 seconds".format(port), 0 ) soc.close() @@ -154,9 +157,9 @@ class TestWaitForIt(unittest.TestCase): Check command failure. The command in question outputs STDERR and an exit code of 2 """ - soc = self.open_local_port(port=8929) + soc, port = self.open_local_port() self.check_args( - "localhost:8929 -- ls not_real_file", + "localhost:{0} -- ls not_real_file".format(port), "", ".*No such file or directory\n", 2