def test_parse_special_fields(self): """TestBase: Task name, PID, CPU and timestamp are properly paresed """ events = { '1001.456789': { 'task': 'rcu_preempt', 'pid': 1123, 'cpu': 001 }, '1002.456789': { 'task': 'rs:main', 'pid': 2123, 'cpu': 002 }, '1003.456789': { 'task': 'AsyncTask #1', 'pid': 3123, 'cpu': 003 }, '1004.456789': { 'task': 'kworker/1:1H', 'pid': 4123, 'cpu': 004 }, '1005.456789': { 'task': 'jbd2/sda2-8', 'pid': 5123, 'cpu': 005 }, } in_data = """""" for timestamp in sorted(events): in_data+="{0:>16s}-{1:d} [{2:04d}] {3:s}: event0: tag=value\n".\ format( events[timestamp]['task'], events[timestamp]['pid'], events[timestamp]['cpu'], timestamp ) expected_columns = set(["__comm", "__pid", "__cpu", "tag"]) with open("trace.txt", "w") as fout: fout.write(in_data) trappy.register_dynamic('Event0', 'event0', scope="sched") run = trappy.Run() dfr = run.event0.data_frame self.assertEquals(set(dfr.columns), expected_columns) for idx in range(len(events)): timestap = str(dfr.index[idx] + float(events.keys()[0])) self.assertTrue(timestamp in events) self.assertEquals(dfr["__comm"].iloc[idx], events[timestap]['task']) self.assertEquals(dfr["__pid"].iloc[idx], events[timestap]['pid']) self.assertEquals(dfr["__cpu"].iloc[idx], events[timestap]['cpu'])
def test_dynamic_data_frame(self): """ Test if the dynamic events are populated in the data frame """ trappy.register_dynamic("DynamicEvent", "dynamic_test_key") r = trappy.Run(name="first") self.assertTrue(len(r.dynamic_event.data_frame) == 1)
def test_dynamic_event_plot(self): """Test if plotter can accept a dynamic class for a template argument""" cls = trappy.register_dynamic("DynamicEvent", "dynamic_test_key") r = trappy.Run(name="first") l = trappy.LinePlot(r, cls, column="load") l.view(test=True)
def test_dynamic_event_scope(self): """Test the case when an "all" scope class is registered. it should appear in both thermal and sched run class definitions when scoped run objects are created """ cls = trappy.register_dynamic("DynamicEvent", "dynamic_test_key") r1 = trappy.Run(name="first") print r1.class_definitions self.assertTrue(r1.class_definitions.has_key(cls.name))
def test_dynamic_class_attr(self): """ Test the attibutes of the dynamically generated class """ cls = trappy.register_dynamic("DynamicEvent", "dynamic_test_key") self.assertEquals(cls.__name__, "DynamicEvent") self.assertEquals(cls.name, "dynamic_event") self.assertEquals(cls.unique_word, "dynamic_test_key")
def test_parse_values_concatenation(self): """TestBase: Trace with space separated values created a valid DataFrame""" in_data = """ rcu_preempt-7 [000] 73.604532: my_sched_stat_runtime: comm=Space separated taskname pid=7 runtime=262875 [ns] vruntime=17096359856 [ns]""" expected_columns = set(["__comm", "__pid", "__cpu", "comm", "pid", "runtime", "vruntime"]) with open("trace.txt", "w") as fout: fout.write(in_data) trappy.register_dynamic('sched_stat_runtime', 'my_sched_stat_runtime', scope="sched") run = trappy.Run() dfr = run.sched_stat_runtime.data_frame self.assertEquals(set(dfr.columns), expected_columns) self.assertEquals(dfr["comm"].iloc[0], "Space separated taskname") self.assertEquals(dfr["pid"].iloc[0], 7) self.assertEquals(dfr["runtime"].iloc[0], 262875) self.assertEquals(dfr["vruntime"].iloc[0], 17096359856)
def test_parse_values_concatenation(self): """TestBase: Trace with space separated values created a valid DataFrame""" in_data = """ rcu_preempt-7 [000] 73.604532: my_sched_stat_runtime: comm=Space separated taskname pid=7 runtime=262875 [ns] vruntime=17096359856 [ns]""" expected_columns = set( ["__comm", "__pid", "__cpu", "comm", "pid", "runtime", "vruntime"]) with open("trace.txt", "w") as fout: fout.write(in_data) trappy.register_dynamic('sched_stat_runtime', 'my_sched_stat_runtime', scope="sched") run = trappy.Run() dfr = run.sched_stat_runtime.data_frame self.assertEquals(set(dfr.columns), expected_columns) self.assertEquals(dfr["comm"].iloc[0], "Space separated taskname") self.assertEquals(dfr["pid"].iloc[0], 7) self.assertEquals(dfr["runtime"].iloc[0], 262875) self.assertEquals(dfr["vruntime"].iloc[0], 17096359856)
def test_parse_special_fields(self): """TestBase: Task name, PID, CPU and timestamp are properly paresed """ events = { '1001.456789' : { 'task': 'rcu_preempt', 'pid': 1123, 'cpu': 001 }, '1002.456789' : { 'task': 'rs:main', 'pid': 2123, 'cpu': 002 }, '1003.456789' : { 'task': 'AsyncTask #1', 'pid': 3123, 'cpu': 003 }, '1004.456789' : { 'task': 'kworker/1:1H', 'pid': 4123, 'cpu': 004 }, '1005.456789' : { 'task': 'jbd2/sda2-8', 'pid': 5123, 'cpu': 005 }, } in_data = """""" for timestamp in sorted(events): in_data+="{0:>16s}-{1:d} [{2:04d}] {3:s}: event0: tag=value\n".\ format( events[timestamp]['task'], events[timestamp]['pid'], events[timestamp]['cpu'], timestamp ) expected_columns = set(["__comm", "__pid", "__cpu", "tag"]) with open("trace.txt", "w") as fout: fout.write(in_data) trappy.register_dynamic('Event0', 'event0', scope="sched") run = trappy.Run() dfr = run.event0.data_frame self.assertEquals(set(dfr.columns), expected_columns) for idx in range(len(events)): timestap = str( dfr.index[idx]+float(events.keys()[0])) self.assertTrue(timestamp in events) self.assertEquals(dfr["__comm"].iloc[idx], events[timestap]['task']) self.assertEquals(dfr["__pid"].iloc[idx], events[timestap]['pid']) self.assertEquals(dfr["__cpu"].iloc[idx], events[timestap]['cpu'])