aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavi Merino <javi.merino@arm.com>2014-07-02 19:21:17 +0100
committerJavi Merino <javi.merino@arm.com>2015-08-12 14:52:40 +0100
commit45a59c3b1a790ff7a8d202dee4e9bad6cf6398d2 (patch)
tree71308145dd89a9a765808302634238d0ff495a4e
parent076277d98916df87839351dbb0cebbbc0868270f (diff)
downloadtrappy-45a59c3b1a790ff7a8d202dee4e9bad6cf6398d2.tar.gz
thermal: learn to parse traces with empty arrays
-rw-r--r--cr2/thermal.py4
-rw-r--r--tests/test_thermal.py28
2 files changed, 32 insertions, 0 deletions
diff --git a/cr2/thermal.py b/cr2/thermal.py
index d4c3f81..94f0650 100644
--- a/cr2/thermal.py
+++ b/cr2/thermal.py
@@ -87,6 +87,7 @@ class BaseThermal(object):
pat_timestamp = re.compile(r"([0-9]+\.[0-9]+):")
pat_data = re.compile(r"[A-Za-z0-9_]+=([^ {]+)")
pat_header = re.compile(r"([A-Za-z0-9_]+)=[^ ]+")
+ pat_empty_array = re.compile(r"[A-Za-z0-9_]+=\{\} ")
header = ""
with open(os.path.join(self.basepath, "trace.txt")) as fin:
@@ -102,6 +103,9 @@ class BaseThermal(object):
data_start_idx = re.search(r"[A-Za-z0-9_]+=", line).start()
data_str = line[data_start_idx:]
+ # Remove empty arrays from the trace
+ data_str = re.sub(pat_empty_array, r"", data_str)
+
data_str = trace_parser_explode_array(data_str)
if not header:
diff --git a/tests/test_thermal.py b/tests/test_thermal.py
index 4d95bbd..a61b040 100644
--- a/tests/test_thermal.py
+++ b/tests/test_thermal.py
@@ -41,6 +41,34 @@ class BaseTestThermal(utils_tests.SetupDirectory):
*args,
**kwargs)
+class TestThermalBase(utils_tests.SetupDirectory):
+ """Incomplete tests for the ThermalBase class"""
+
+ def __init__(self, *args, **kwargs):
+ super(TestThermalBase, self).__init__(
+ [],
+ *args,
+ **kwargs)
+
+ def test_parse_into_csv_empty_array(self):
+ """Test that trace that has an empty array creates valid csv"""
+
+ in_data = """ kworker/4:1-397 [004] 720.741315: thermal_power_actor_cpu_get_dyn_power: cpus=000000f0 freq=1900000 raw_cpu_power=1259 load={} power=61
+ kworker/4:1-397 [004] 720.741349: thermal_power_actor_cpu_get_dyn_power: cpus=0000000f freq=1400000 raw_cpu_power=189 load={} power=14"""
+ expected_header = "Time,cpus,freq,raw_cpu_power,power"
+ expected_first_data = "720.741315,000000f0,1900000,1259,61"
+
+ with open("trace.txt", "w") as fout:
+ fout.write(in_data)
+
+ base = thermal.BaseThermal(None, "thermal_power_actor_cpu_get_dyn_power")
+ base.parse_into_csv()
+
+ data_csv_lines = base.data_csv.split('\n')
+
+ self.assertEquals(data_csv_lines[0], expected_header)
+ self.assertEquals(data_csv_lines[1], expected_first_data)
+
class TestThermal(BaseTestThermal):
def test_get_dataframe(self):
df = Thermal().get_data_frame()