Author: laukpe
Date: Fri Sep 26 12:07:16 2008
New Revision: 841
Modified:
trunk/proto/remote/run_tests.py
Log:
possibility to stop server started manually, cleanup, better errors
Modified: trunk/proto/remote/run_tests.py
==============================================================================
--- trunk/proto/remote/run_tests.py (original)
+++ trunk/proto/remote/run_tests.py Fri Sep 26 12:07:16 2008
@@ -1,11 +1,16 @@
#!/usr/bin/env python
"""Script for running the remote library tests against different servers.
-Usage: run_tests.py lang [[options] datasources]
+Usage 1: run_tests.py lang [[options] datasources]
-Currently lang can be 'python' or 'ruby'.
-By default, all tests under 'test' directory are run, but this can be
changed
-by providing options, which can be any Robot Framework command line
options.
+Valid languages are 'python', 'jython' or 'ruby'. By default, all
+tests under 'test' directory are run, but this can be changed by
+providing options, which can be any Robot Framework command line
+options.
+
+Usage 2: run_tests.py stop [port]
+
+Stops remote server in specified port. Default port is 8270..
"""
import sys
import xmlrpclib
@@ -16,7 +21,10 @@
class Library:
- def __init__(self, lang):
+ def __init__(self, lang=None):
+ if lang is None:
+ self._stdout = self._stderr = None
+ return
ext =
{'python': 'py', 'jython': 'py', 'ruby': 'rb', 'perl': 'pl'}[lang]
dirname = lang if lang != 'jython' else 'python'
cmd = '%s %s/examplelibrary.%s' % (lang, dirname, ext)
@@ -28,20 +36,26 @@
url = 'http://localhost:%s' % port
for i in range(attempts):
try:
- server = xmlrpclib.ServerProxy(url)
- server.get_keyword_names()
- except socket.error:
+ xmlrpclib.ServerProxy(url).get_keyword_names()
+ except socket.error, (errno, errmsg):
time.sleep(1)
+ except xmlrpclib.Error, err:
+ errmsg = err.faultString
+ break
else:
- print "Server at %s seems to work OK." % url
- return
- print "Failed to connect to server at %s with %d attempts." %
(url, attempts)
+ print "Server is running on port %s." % port
+ return True
+ print "Failed to connect to server on port %s: %s" % (port, errmsg)
+ return False
def stop(self, port=8270):
- server = xmlrpclib.ServerProxy('http://localhost:%s' % port)
- server.stop_remote_server()
- self._stdout.close()
- self._stderr.close()
+ if not self.test(port):
+ return
+ xmlrpclib.ServerProxy('http://localhost:%s' %
port).stop_remote_server()
+ if self._stdout:
+ self._stdout.close()
+ self._stderr.close()
+ print "Server on port %s stopped." % port
if __name__ == '__main__':
@@ -49,6 +63,10 @@
print __doc__
sys.exit(1)
lang = sys.argv[1]
+ if lang == 'stop':
+ Library().stop(*sys.argv[2:])
+ sys.exit()
+
include = lang if lang != 'jython' else 'python'
args = 'test' if len(sys.argv) == 2 else ' '.join(sys.argv[2:])
lib = Library(lang)