diff --git a/tracetools_analysis/package.xml b/tracetools_analysis/package.xml
index a23316a..064fa3d 100644
--- a/tracetools_analysis/package.xml
+++ b/tracetools_analysis/package.xml
@@ -9,7 +9,7 @@
Ingo Luetkebohle
Christophe Bedard
- python3-babeltrace
+ tracetools_read
ament_copyright
ament_flake8
diff --git a/tracetools_analysis/tracetools_analysis/analysis/handler.py b/tracetools_analysis/tracetools_analysis/analysis/handler.py
index ef4298f..da7c2de 100644
--- a/tracetools_analysis/tracetools_analysis/analysis/handler.py
+++ b/tracetools_analysis/tracetools_analysis/analysis/handler.py
@@ -5,9 +5,10 @@ from typing import Callable
from typing import Dict
from typing import List
+from tracetools_read.utils import get_event_name
+from tracetools_read.utils import get_field
+
from .lttng_models import EventMetadata
-from .lttng_models import get_field
-from .lttng_models import get_name
class EventHandler():
@@ -31,7 +32,7 @@ class EventHandler():
self._handle(event)
def _handle(self, event: Dict[str, str]) -> None:
- event_name = get_name(event)
+ event_name = get_event_name(event)
handler_function = self._handler_map.get(event_name, None)
if handler_function is not None:
pid = get_field(
diff --git a/tracetools_analysis/tracetools_analysis/analysis/lttng_models.py b/tracetools_analysis/tracetools_analysis/analysis/lttng_models.py
index 2c54719..62b86ca 100644
--- a/tracetools_analysis/tracetools_analysis/analysis/lttng_models.py
+++ b/tracetools_analysis/tracetools_analysis/analysis/lttng_models.py
@@ -1,20 +1,5 @@
# Model objects for LTTng traces/events
-from typing import Any
-from typing import Dict
-
-
-def get_field(event: Dict, field_name: str, default=None, raise_if_not_found=True) -> Any:
- field_value = event.get(field_name, default)
- # If enabled, raise exception as soon as possible to avoid headaches
- if raise_if_not_found and field_value is None:
- raise AttributeError(f'event field "{field_name}" not found!')
- return field_value
-
-
-def get_name(event: Dict) -> str:
- return get_field(event, '_name')
-
class EventMetadata():
"""Container for event metadata."""
diff --git a/tracetools_analysis/tracetools_analysis/analysis/ros2_processor.py b/tracetools_analysis/tracetools_analysis/analysis/ros2_processor.py
index 8110fa7..e9c6eae 100644
--- a/tracetools_analysis/tracetools_analysis/analysis/ros2_processor.py
+++ b/tracetools_analysis/tracetools_analysis/analysis/ros2_processor.py
@@ -3,9 +3,10 @@
from typing import Dict
from typing import List
+from tracetools_read.utils import get_field
+
from .data_model import DataModel
from .handler import EventHandler
-from .lttng_models import get_field
from .lttng_models import EventMetadata
diff --git a/tracetools_analysis/tracetools_analysis/conversion/ctf.py b/tracetools_analysis/tracetools_analysis/conversion/ctf.py
index 826231f..e3b329f 100644
--- a/tracetools_analysis/tracetools_analysis/conversion/ctf.py
+++ b/tracetools_analysis/tracetools_analysis/conversion/ctf.py
@@ -2,14 +2,7 @@
from pickle import Pickler
-import babeltrace
-
-# List of ignored CTF fields
-_IGNORED_FIELDS = [
- 'content_size', 'cpu_id', 'events_discarded', 'id', 'packet_size', 'packet_seq_num',
- 'stream_id', 'stream_instance_id', 'timestamp_end', 'timestamp_begin', 'magic', 'uuid', 'v'
-]
-_DISCARD = 'events_discarded'
+from tracetools_read import utils
def ctf_to_pickle(trace_directory: str, target: Pickler) -> int:
@@ -21,9 +14,8 @@ def ctf_to_pickle(trace_directory: str, target: Pickler) -> int:
:return: the number of events written
"""
# add traces
- tc = babeltrace.TraceCollection()
print(f'Importing trace directory: {trace_directory}')
- tc.add_traces_recursive(trace_directory, 'ctf')
+ ctf_events = utils._get_trace_ctf_events(trace_directory)
count = 0
count_written = 0
@@ -31,7 +23,7 @@ def ctf_to_pickle(trace_directory: str, target: Pickler) -> int:
# traced = set()
# PID_KEYS = ['vpid', 'pid']
- for event in tc.events:
+ for event in ctf_events:
count += 1
# pid = None
# for key in PID_KEYS:
@@ -40,25 +32,8 @@ def ctf_to_pickle(trace_directory: str, target: Pickler) -> int:
# break
# Write all for now
- pod = _ctf_event_to_pod(event)
+ pod = utils.event_to_dict(event)
target.dump(pod)
count_written += 1
return count_written
-
-
-def _ctf_event_to_pod(ctf_event):
- """
- Convert name, timestamp, and all other keys except those in IGNORED_FIELDS into a dictionary.
-
- :param ctf_element: The element to convert
- :type ctf_element: babeltrace.Element
- :return:
- :return type: dict
- """
- pod = {'_name': ctf_event.name, '_timestamp': ctf_event.timestamp}
- if hasattr(ctf_event, _DISCARD) and ctf_event[_DISCARD] > 0:
- print(ctf_event[_DISCARD])
- for key in [key for key in ctf_event.keys() if key not in _IGNORED_FIELDS]:
- pod[key] = ctf_event[key]
- return pod