More fixes for making base tsqa tests work
Project: http://git-wip-us.apache.org/repos/asf/trafficserver-qa/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver-qa/commit/b9006c23 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver-qa/tree/b9006c23 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver-qa/diff/b9006c23 Branch: refs/heads/master Commit: b9006c23725d087aa31dbc48dee1d8007b7bb67d Parents: 82b0fd2 Author: Thomas Jackson <[email protected]> Authored: Tue Dec 23 16:04:52 2014 -0800 Committer: Thomas Jackson <[email protected]> Committed: Tue Dec 23 16:04:52 2014 -0800 ---------------------------------------------------------------------- tsqa/environment.py | 36 ++++++++++++++++++++++++------------ tsqa/test_cases.py | 3 +++ 2 files changed, 27 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver-qa/blob/b9006c23/tsqa/environment.py ---------------------------------------------------------------------- diff --git a/tsqa/environment.py b/tsqa/environment.py index ddb7a91..29878e7 100644 --- a/tsqa/environment.py +++ b/tsqa/environment.py @@ -215,30 +215,34 @@ class Layout: class Environment: def __exec_cop(self): - path = os.path.join(self.layout.bindir, 'traffic_server') # make traffic_cop - logfile = os.path.join(self.layout.logdir, 'cop.log') - #cmd = [path, '--debug', '--stdout'] # TODO: re-enable when traffic_cop + # TODO: use traffic_cop/manager? Setuid and gid remove LD_LIBRARY_PATH + # so we can't use them for now + #path = os.path.join(self.layout.bindir, 'traffic_cop') + #cmd = [path, '--debug', '--stdout'] + + path = os.path.join(self.layout.bindir, 'traffic_server') cmd = [path] environ = copy.copy(os.environ) environ['TS_ROOT'] = self.layout.prefix - if environ.has_key('LD_LIBRARY_PATH'): + if environ.has_key('LD_LIBRARY_PATH') and self.layout.libdir not in environ['LD_LIBRARY_PATH'].split(':'): environ['LD_LIBRARY_PATH'] = self.layout.libdir + ':' + environ['LD_LIBRARY_PATH'] else: environ['LD_LIBRARY_PATH'] = self.layout.libdir - # XXX We ought to be pointing traffic_cop to its records.config using - # proxy.config.config_dir in the environment, but traffic_cop doesn't - # look at that (yet). with open(os.path.join(self.layout.logdir, 'cop.log'), 'w+') as logfile: self.cop = subprocess.Popen(cmd, env=environ, - #stdout=logfile, - #stderr=logfile, + stdout=logfile, + stderr=logfile, ) import time time.sleep(3) # TODO: wait or the process to listen? + # TODO: better checking... + self.cop.poll() + if self.cop.returncode is not None: + raise Exception(self.cop.returncode) def __init__(self, layout=None): """ @@ -270,6 +274,7 @@ class Environment: self.layout = Layout(tempfile.mkdtemp()) else: os.makedirs(self.layout.prefix) + os.chmod(self.layout.prefix, 0777) # Make the tmp dir readable by all # copy all files from old layout to new one for item in os.listdir(layout.prefix): @@ -283,7 +288,9 @@ class Environment: for name in self.layout.suffixes: dirname = getattr(self.layout, name) if not os.path.exists(dirname): - os.makedirs(dirname) + os.makedirs(dirname, 0777) + else: + os.chmod(dirname, 0777) # overwrite a few things that need to be changed to have a unique env records = tsqa.configs.RecordsConfig(os.path.join(self.layout.sysconfdir, 'records.config')) @@ -294,17 +301,21 @@ class Environment: 'proxy.config.bin_path': self.layout.bindir, 'proxy.config.log.logfile_dir': self.layout.logdir, 'proxy.config.local_state_dir': self.layout.runtimedir, - 'proxy.config.http.server_ports': str(tsqa.utils.bind_unused_port()[1]) # your own listen port + 'proxy.config.http.server_ports': str(tsqa.utils.bind_unused_port()[1]), # your own listen port + 'proxy.config.process_manager.mgmt_port': tsqa.utils.bind_unused_port()[1], # your own listen port }) records.write() + os.chmod(os.path.join(os.path.dirname(self.layout.runtimedir)), 0777) + os.chmod(os.path.join(self.layout.runtimedir), 0777) + def destroy(self): """ Tear down the environment. Kill any running processes and remove any installed files. """ self.stop() - shutil.rmtree(self.layout.prefix, ignore_errors=True) + #shutil.rmtree(self.layout.prefix, ignore_errors=True) self.layout = Layout(None) def start(self): @@ -319,6 +330,7 @@ class Environment: self.cop.terminate() # TODO: remove?? or wait... def running(self): + self.cop.poll() return self.cop is not None and self.cop.returncode is not None # its running if it hasn't died def __del__(self): http://git-wip-us.apache.org/repos/asf/trafficserver-qa/blob/b9006c23/tsqa/test_cases.py ---------------------------------------------------------------------- diff --git a/tsqa/test_cases.py b/tsqa/test_cases.py index 6100c9e..72f9633 100644 --- a/tsqa/test_cases.py +++ b/tsqa/test_cases.py @@ -60,6 +60,9 @@ class EnvironmentCase(unittest.TestCase): @classmethod def tearDownClass(cls): + # TODO: some better checking that we didn't crash + if cls.environment.cop is not None and not cls.environment.running: + raise Exception('ATS died during the test run') # stop ATS cls.environment.stop()
