summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMonty Taylor <mordred@inaugust.com>2013-01-24 08:14:15 +1100
committerMonty Taylor <mordred@inaugust.com>2013-01-24 16:30:26 +1100
commita387d1fb044ae05be366febe0796e0f0080d43ef (patch)
tree2e80bd7cfdfddf5601854e09ba9c000a689a14a8
parent8c80224ecb5194a5e2ed5f74f1c7f457202d21a3 (diff)
Prevent parallel test port clashes for zmq.
The scheme of incrementing port numbers did not work so well for parallel test runs. Part of blueprint grizzly-testtools. Change-Id: I100e79ae79e4409691145dc721139d1a86839199
-rw-r--r--tests/unit/rpc/test_zmq.py19
-rw-r--r--tests/utils.py1
2 files changed, 14 insertions, 6 deletions
diff --git a/tests/unit/rpc/test_zmq.py b/tests/unit/rpc/test_zmq.py
index 2f0c20d..2aac2b3 100644
--- a/tests/unit/rpc/test_zmq.py
+++ b/tests/unit/rpc/test_zmq.py
@@ -23,6 +23,7 @@ eventlet.monkey_patch()
import logging
import os
+import socket
import fixtures
@@ -44,17 +45,23 @@ LOG = logging.getLogger(__name__)
FLAGS = cfg.CONF
+def get_unused_port():
+ """
+ Returns an unused port on localhost.
+ """
+ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ s.bind(('localhost', 0))
+ addr, port = s.getsockname()
+ s.close()
+ return port
+
+
class _RpcZmqBaseTestCase(common.BaseRpcTestCase):
- # TESTCNT needs to be a class var as each run
- # by subclasses must have a unique identifier
- TESTCNT = 0
rpc = impl_zmq
def setUp(self, topic='test', topic_nested='nested'):
if not impl_zmq:
self.skipTest("ZeroMQ library required")
- _RpcZmqBaseTestCase.TESTCNT += 1
- testcnt = _RpcZmqBaseTestCase.TESTCNT
self.reactor = None
self.rpc = impl_zmq
@@ -74,7 +81,7 @@ class _RpcZmqBaseTestCase(common.BaseRpcTestCase):
# between tearDown() and setUp()
# TODO(mordred): replace this with testresources once we're on
# testr
- self.config(rpc_zmq_port=9500 + testcnt)
+ self.config(rpc_zmq_port=get_unused_port())
internal_ipc_dir = self.useFixture(fixtures.TempDir()).path
self.config(rpc_zmq_ipc_dir=internal_ipc_dir)
diff --git a/tests/utils.py b/tests/utils.py
index 3c749f6..f9854ca 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -35,6 +35,7 @@ class BaseTestCase(testtools.TestCase):
self.stubs = self.useFixture(moxstubout.MoxStubout()).stubs
self.addCleanup(CONF.reset)
self.useFixture(fixtures.FakeLogger('openstack.common'))
+ self.useFixture(fixtures.Timeout(30, True))
def config(self, **kw):
"""