aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Fernandes <joelaf@google.com>2017-04-23 01:46:28 -0700
committerJoel Fernandes <joelaf@google.com>2017-06-02 12:49:36 -0700
commit1d8d74d032697c24977fe026ded7dc74a918625a (patch)
tree4db17b38b77818826b1ec9da14771da9545d8bfb
parente565c7adcddde8d11cb7c27b7d22310d4acafde2 (diff)
downloadtrappy-1d8d74d032697c24977fe026ded7dc74a918625a.tar.gz
trappy: Split out parsing of trace string into separate function
In preparation of introducing event callbacks, split out string parsing into separate function. Signed-off-by: Joel Fernandes <joelaf@google.com>
-rw-r--r--trappy/base.py36
1 files changed, 20 insertions, 16 deletions
diff --git a/trappy/base.py b/trappy/base.py
index 6b9be4d..14de582 100644
--- a/trappy/base.py
+++ b/trappy/base.py
@@ -171,6 +171,25 @@ class Base(object):
self.cpu_array.append(cpu)
self.data_array.append(data)
+ def generate_data_dict(self, comm, pid, cpu, data_str):
+ data_dict = {"__comm": comm, "__pid": pid, "__cpu": cpu}
+ prev_key = None
+ for field in data_str.split():
+ if "=" not in field:
+ # Concatenation is supported only for "string" values
+ if type(data_dict[prev_key]) is not str:
+ continue
+ data_dict[prev_key] += ' ' + field
+ continue
+ (key, value) = field.split('=', 1)
+ try:
+ value = int(value)
+ except ValueError:
+ pass
+ data_dict[key] = value
+ prev_key = key
+ return data_dict
+
def generate_parsed_data(self):
# Get a rough idea of how much memory we have to play with
@@ -182,22 +201,7 @@ class Base(object):
for (comm, pid, cpu, data_str) in zip(self.comm_array, self.pid_array,
self.cpu_array, self.data_array):
- data_dict = {"__comm": comm, "__pid": pid, "__cpu": cpu}
- prev_key = None
- for field in data_str.split():
- if "=" not in field:
- # Concatenation is supported only for "string" values
- if type(data_dict[prev_key]) is not str:
- continue
- data_dict[prev_key] += ' ' + field
- continue
- (key, value) = field.split('=', 1)
- try:
- value = int(value)
- except ValueError:
- pass
- data_dict[key] = value
- prev_key = key
+ data_dict = self.generate_data_dict(comm, pid, cpu, data_str)
# When running out of memory, Pandas has been observed to segfault
# rather than throwing a proper Python error.