From a1512995a67a9f7a20ae23bd87dd775c141bdfc8 Mon Sep 17 00:00:00 2001 From: Brendan Jackman Date: Wed, 23 Nov 2016 18:36:49 +0000 Subject: [PATCH] LisaTest: Add get_trace method It's a good idea to unify the creation of Traces in one place, because passing a different sent of events will result in different time indexes due to the time normalization being based on the time of the first event. This is also a nice convenience method. --- libs/utils/test.py | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/libs/utils/test.py b/libs/utils/test.py index 3a658ee5f..3cc338352 100644 --- a/libs/utils/test.py +++ b/libs/utils/test.py @@ -26,6 +26,7 @@ import wrapt from env import TestEnv from executor import Executor +from trace import Trace class LisaTest(unittest.TestCase): @@ -123,7 +124,8 @@ class LisaTest(unittest.TestCase): """ Return a SchedAssert over the task provided """ - return SchedAssert(experiment.out_dir, self.te.topology, execname=task) + return SchedAssert( + self.get_trace(experment), self.te.topology, execname=task) @memoized def get_multi_assert(self, experiment, task_filter=""): @@ -134,10 +136,29 @@ class LisaTest(unittest.TestCase): experiment. """ tasks = experiment.wload.tasks.keys() - return SchedMultiAssert(experiment.out_dir, + return SchedMultiAssert(self.get_trace(experiment).ftrace, self.te.topology, [t for t in tasks if task_filter in t]) + def get_trace(self, experiment): + if not hasattr(self, "__traces"): + self.__traces = {} + if experiment.out_dir in self.__traces: + return self.__traces[experiment.out_dir] + + if ('ftrace' not in experiment.conf['flags'] + or 'ftrace' not in self.test_conf): + raise ValueError( + 'Tracing not enabled. If this test needs a trace, add "ftrace" ' + 'to your test/experiment configuration flags') + + events = self.test_conf['ftrace']['events'] + tasks = experiment.wload.tasks.keys() + trace = Trace(self.te.platform, experiment.out_dir, events, tasks) + + self.__traces[experiment.out_dir] = trace + return trace + def get_start_time(self, experiment): """ Get the time at which the experiment workload began executing @@ -163,9 +184,9 @@ class LisaTest(unittest.TestCase): """ end_times = {} + ftrace = self.get_trace(experiment).ftrace for task in experiment.wload.tasks.keys(): - sched_assert = SchedAssert(experiment.out_dir, self.te.topology, - execname=task) + sched_assert = SchedAssert(ftrace, self.te.topology, execname=task) end_times[task] = sched_assert.getEndTime() return end_times -- GitLab