summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@gmail.com>2014-10-11 21:29:27 +0100
committerRichard Maw <richard.maw@gmail.com>2014-10-15 13:35:19 +0000
commit9b3cd8f334fe335a77b71cdd5c964d88eebd3fbd (patch)
tree32bf7f10ac140cfb058134fcb77473cea4107798
parentb7de175d185948c1130a1036ecd11d113dbf1175 (diff)
downloadcmdtest-9b3cd8f334fe335a77b71cdd5c964d88eebd3fbd.tar.gz
yarn: Move timing out of .run_scenario
This is in effort of moving the scenario running code into yarnlib, and being able to make it run scenarios in parallel.
-rwxr-xr-xyarn50
1 files changed, 30 insertions, 20 deletions
diff --git a/yarn b/yarn
index ffec41a..47ef754 100755
--- a/yarn
+++ b/yarn
@@ -235,34 +235,24 @@ class YarnRunner(cliapp.Application):
return scenarios
def run_scenario(self, scenario_runner, scenario):
- self.start_scenario_timing(scenario.name)
- started = time.time()
-
- self.info('Running scenario %s' % scenario.name)
- self.ts['scenario_name'] = scenario.name
- self.scenarios_run += 1
-
- if self.settings['no-act']:
- self.info('Pretending everything went OK')
- for step in scenario.steps:
- self.ts['current_step'] = step
- self.remember_scenario_timing(time.time() - started)
- return True
-
os.mkdir(self.scenario_dir(self.tempdir, scenario))
datadir = self.datadir(self.tempdir, scenario)
os.mkdir(datadir)
- self.info('DATADIR is %s' % datadir)
homedir = self.homedir(datadir)
os.mkdir(homedir)
- self.info('HOME for tests is %s' % homedir)
- ok = scenario_runner.run_scenario(scenario, datadir, homedir)
+ ud = self.pre_scenario(scenario, datadir, homedir)
+
+ if self.settings['no-act']:
+ self.info('Pretending everything went OK')
+ for step in scenario.steps:
+ self.ts['current_step'] = step
+ ok = True
+ else:
+ ok = scenario_runner.run_scenario(scenario, datadir, homedir)
- self.remember_scenario_timing(time.time() - started)
+ self.post_scenario(scenario, datadir, homedir, ud)
- if not self.settings['snapshot']:
- shutil.rmtree(datadir, ignore_errors=True)
return ok
def homedir(self, datadir):
@@ -277,6 +267,26 @@ class YarnRunner(cliapp.Application):
key, value = option_arg.split('=', 1)
yield key, value
+ def pre_scenario(self, scenario, datadir, homedir):
+ self.start_scenario_timing(scenario.name)
+ started = time.time()
+
+ self.info('Running scenario %s' % scenario.name)
+ self.ts['scenario_name'] = scenario.name
+ self.scenarios_run += 1
+ self.info('DATADIR is %s' % datadir)
+ self.info('HOME for tests is %s' % homedir)
+ return (started,)
+
+ def post_scenario(self, scenario, datadir, homedir, pre_scenario_userdata):
+ stopped = time.time()
+ started, = pre_scenario_userdata
+
+ self.remember_scenario_timing(stopped - started)
+
+ if not self.settings['snapshot']:
+ shutil.rmtree(datadir, ignore_errors=True)
+
def pre_step(self, step, **ignored):
started = time.time()