示例#1
0
    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'])
示例#2
0
 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)
示例#3
0
 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)
示例#4
0
    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)
示例#5
0
    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)
示例#6
0
    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))
示例#7
0
 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")
示例#8
0
    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))
示例#9
0
 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")
示例#10
0
    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)
示例#11
0
    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)
示例#12
0
    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'])