some work on statistic code
diff --git a/wally/suits/io/fio.py b/wally/suits/io/fio.py
index fb18165..c32dba2 100644
--- a/wally/suits/io/fio.py
+++ b/wally/suits/io/fio.py
@@ -35,7 +35,6 @@
self.force_prefill = get('force_prefill', False) # type: bool
self.load_profile_name = self.config.params['load'] # type: str
- self.name = "io." + self.load_profile_name
if os.path.isfile(self.load_profile_name):
self.load_profile_path = self.load_profile_name # type: str
@@ -193,12 +192,14 @@
try:
time_ms_s, val_s, _, *rest = line.split(",")
time_ms = int(time_ms_s.strip())
- if prev_ts and abs(time_ms - prev_ts - expected_time_delta) > max_time_diff:
- logger.warning("Too large gap in {} log at {} - {}ms"
- .format(time_ms, name, time_ms - prev_ts))
- else:
+
+ if not prev_ts:
prev_ts = time_ms - expected_time_delta
load_start_at = time_ms
+ elif abs(time_ms - prev_ts - expected_time_delta) > max_time_diff:
+ logger.warning("Too large gap in {} log at {} - {}ms"
+ .format(name, time_ms, time_ms - prev_ts))
+
if name == 'lat':
vals = [int(i.strip()) for i in rest]
@@ -213,6 +214,7 @@
except ValueError:
logger.exception("Error during parse %s fio log file in line %s: %r", name, idx, line)
raise StopTestError()
+
prev_ts += expected_time_delta
res.series[name] = TimeSerie(name=name,
diff --git a/wally/suits/io/fio_task_parser.py b/wally/suits/io/fio_task_parser.py
index 6790c97..bdcf4a3 100644
--- a/wally/suits/io/fio_task_parser.py
+++ b/wally/suits/io/fio_task_parser.py
@@ -39,8 +39,6 @@
class FioJobSection(IterationConfig, IStorable):
- yaml_tag = 'fio_job'
-
def __init__(self, name: str) -> None:
self.name = name
self.vals = OrderedDict() # type: Dict[str, Any]
diff --git a/wally/suits/io/rrd.cfg b/wally/suits/io/rrd.cfg
index d32d6a8..850c9a3 100644
--- a/wally/suits/io/rrd.cfg
+++ b/wally/suits/io/rrd.cfg
@@ -1,7 +1,7 @@
[global]
include defaults_qd.cfg
ramp_time=0
-runtime=4
+runtime=600
[test_{TEST_SUMM}]
blocksize=60k
diff --git a/wally/suits/itest.py b/wally/suits/itest.py
index 78986f6..446ad69 100644
--- a/wally/suits/itest.py
+++ b/wally/suits/itest.py
@@ -86,6 +86,7 @@
# used_max_diff = max((min_run_time * max_rel_time_diff), max_time_diff)
max_time_diff = 5
max_rel_time_diff = 0.05
+ load_profile_name = None # type: str
def __init__(self, *args, **kwargs) -> None:
PerfTest.__init__(self, *args, **kwargs)
@@ -138,7 +139,9 @@
logger.info("All test iteration in storage already. Skip test")
return
- logger.debug("Run test {} on nodes {}.".format(self.name, ",".join(self.sorted_nodes_ids)))
+ logger.debug("Run test io.{} with profile {!r} on nodes {}.".format(self.name,
+ self.load_profile_name,
+ ",".join(self.sorted_nodes_ids)))
logger.debug("Prepare nodes")
with ThreadPoolExecutor(len(self.nodes)) as pool:
@@ -211,7 +214,9 @@
.format(self.name, iter_name, max_start_time - min_start_time, self.max_time_diff))
test_config = {
- 'name': self.name,
+ 'suite': 'io',
+ 'test': self.name,
+ 'profile': self.load_profile_name,
'iteration_name': iter_name,
'iteration_config': iteration_config.raw(),
'params': self.config.params,
@@ -221,15 +226,7 @@
}
self.process_storage_queue()
- self.config.storage.put(test_config, "result", str(run_id), "info")
-
- if "all_results" in self.config.storage:
- all_results = self.config.storage.get("all_results")
- else:
- all_results = []
-
- all_results.append([self.name, iteration_config.summary, current_result_path])
- self.config.storage.put(all_results, "all_results")
+ self.config.storage.put(test_config, current_result_path, "info")
self.config.storage.sync()
if self.on_idle is not None: