summaryrefslogtreecommitdiff
path: root/indra/newview/tests/test_llxmlrpc_peer.py
diff options
context:
space:
mode:
authorJoshua Bell <josh@lindenlab.com>2011-05-16 10:09:53 -0700
committerJoshua Bell <josh@lindenlab.com>2011-05-16 10:09:53 -0700
commitcfad224f1c56556e58cfe7f3fe0606b4ab164ef8 (patch)
tree1000311071eb6b9d8a1132f860ffd980bb5f5c5b /indra/newview/tests/test_llxmlrpc_peer.py
parentf440cd4af6cb7cd791e5f0eddb8dc9b99a37e0b0 (diff)
parent0b5f662c3bf1655b95dbb92ad3f16bae37ee04f4 (diff)
Merge
Diffstat (limited to 'indra/newview/tests/test_llxmlrpc_peer.py')
-rw-r--r--indra/newview/tests/test_llxmlrpc_peer.py21
1 files changed, 13 insertions, 8 deletions
diff --git a/indra/newview/tests/test_llxmlrpc_peer.py b/indra/newview/tests/test_llxmlrpc_peer.py
index 1c7204a6b6..281b72a058 100644
--- a/indra/newview/tests/test_llxmlrpc_peer.py
+++ b/indra/newview/tests/test_llxmlrpc_peer.py
@@ -37,7 +37,7 @@ from SimpleXMLRPCServer import SimpleXMLRPCServer
mydir = os.path.dirname(__file__) # expected to be .../indra/newview/tests/
sys.path.insert(0, os.path.join(mydir, os.pardir, os.pardir, "lib", "python"))
sys.path.insert(1, os.path.join(mydir, os.pardir, os.pardir, "llmessage", "tests"))
-from testrunner import run, debug
+from testrunner import freeport, run, debug
class TestServer(SimpleXMLRPCServer):
def _dispatch(self, method, params):
@@ -66,11 +66,16 @@ class TestServer(SimpleXMLRPCServer):
# Suppress error output as well
pass
-class ServerRunner(Thread):
- def run(self):
- server = TestServer(('127.0.0.1', 8000))
- debug("Starting XMLRPC server...\n")
- server.serve_forever()
-
if __name__ == "__main__":
- sys.exit(run(server=ServerRunner(name="xmlrpc"), *sys.argv[1:]))
+ # Instantiate a TestServer on the first free port in the specified port
+ # range. Doing this inline is better than in a daemon thread: if it blows
+ # up here, we'll get a traceback. If it blew up in some other thread, the
+ # traceback would get eaten and we'd run the subject test program anyway.
+ xmlrpcd, port = freeport(xrange(8000, 8020),
+ lambda port: TestServer(('127.0.0.1', port)))
+ # Pass the selected port number to the subject test program via the
+ # environment. We don't want to impose requirements on the test program's
+ # command-line parsing -- and anyway, for C++ integration tests, that's
+ # performed in TUT code rather than our own.
+ os.environ["PORT"] = str(port)
+ sys.exit(run(server=Thread(name="xmlrpc", target=xmlrpcd.serve_forever), *sys.argv[1:]))