fix muptiply tests in one run, update report generation
diff --git a/wally/config.py b/wally/config.py
index 2a09d47..e587a8e 100644
--- a/wally/config.py
+++ b/wally/config.py
@@ -16,18 +16,58 @@
cfg_dict = {}
+class NoData(object):
+ @classmethod
+ def get(cls, name, x):
+ return cls
+
+
+class Config(object):
+ def get(self, name, defval=None):
+ obj = self.__dict__
+ for cname in name.split("."):
+ obj = obj.get(cname, NoData)
+
+ if obj is NoData:
+ return defval
+ return obj
+
+
+cfg = Config()
+cfg.__dict__ = cfg_dict
+
+
def mkdirs_if_unxists(path):
if not os.path.exists(path):
os.makedirs(path)
+def get_test_files(results_dir):
+ in_var_dir = functools.partial(os.path.join, results_dir)
+
+ res = dict(
+ run_params_file='run_params.yaml',
+ saved_config_file='config.yaml',
+ vm_ids_fname='os_vm_ids',
+ html_report_file='{0}_report.html',
+ text_report_file='report.txt',
+ log_file='log.txt',
+ sensor_storage='sensor_storage',
+ nodes_report_file='nodes.yaml',
+ results='results',
+ hwinfo_directory='hwinfo',
+ hwreport_fname='hwinfo.txt',
+ raw_results='raw_results.yaml')
+
+ res = dict((k, in_var_dir(v)) for k, v in res.items())
+ res['var_dir'] = results_dir
+ return res
+
+
def load_config(file_name, explicit_folder=None):
- first_load = len(cfg_dict) == 0
cfg_dict.update(yaml.load(open(file_name).read()))
- if first_load:
- var_dir = cfg_dict.get('internal', {}).get('var_dir_root', '/tmp')
-
+ var_dir = cfg_dict.get('internal', {}).get('var_dir_root', '/tmp')
run_uuid = None
if explicit_folder is None:
for i in range(10):
@@ -42,27 +82,18 @@
else:
results_dir = explicit_folder
- cfg_dict['var_dir'] = results_dir
+ cfg_dict.update(get_test_files(results_dir))
mkdirs_if_unxists(cfg_dict['var_dir'])
- in_var_dir = functools.partial(os.path.join, cfg_dict['var_dir'])
- run_params_file = in_var_dir('run_params.yaml')
-
if explicit_folder is not None:
- with open(run_params_file) as fd:
+ with open(cfg_dict['run_params_file']) as fd:
cfg_dict['run_uuid'] = yaml.load(fd)['run_uuid']
run_uuid = cfg_dict['run_uuid']
else:
- with open(run_params_file, 'w') as fd:
+ with open(cfg_dict['run_params_file'], 'w') as fd:
fd.write(dumps({'run_uuid': cfg_dict['run_uuid']}))
- cfg_dict['vm_ids_fname'] = in_var_dir('os_vm_ids')
- cfg_dict['html_report_file'] = in_var_dir('{0}_report.html')
- cfg_dict['text_report_file'] = in_var_dir('report.txt')
- cfg_dict['log_file'] = in_var_dir('log.txt')
- cfg_dict['sensor_storage'] = in_var_dir('sensor_storage')
mkdirs_if_unxists(cfg_dict['sensor_storage'])
- cfg_dict['nodes_report_file'] = in_var_dir('nodes.yaml')
if 'sensors_remote_path' not in cfg_dict:
cfg_dict['sensors_remote_path'] = '/tmp/sensors'
@@ -72,11 +103,7 @@
cfg_dict['default_test_local_folder'] = \
testnode_log_dir.format(cfg_dict['run_uuid'])
- cfg_dict['test_log_directory'] = in_var_dir('test_logs')
- mkdirs_if_unxists(cfg_dict['test_log_directory'])
-
- cfg_dict['hwinfo_directory'] = in_var_dir('hwinfo')
- cfg_dict['hwreport_fname'] = in_var_dir('hwinfo.txt')
+ mkdirs_if_unxists(cfg_dict['results'])
mkdirs_if_unxists(cfg_dict['hwinfo_directory'])