diff options
author | 2016-01-10 04:13:39 -0500 | |
---|---|---|
committer | 2016-01-10 04:13:39 -0500 | |
commit | 773e9d1c67c314aca8f6f88f676b4dd2d777863d (patch) | |
tree | 99f664f967787f8ab4a35aa0d28dfd3c4e10ce41 /scripts/automation/trex_control_plane/common/trex_streams.py | |
parent | 505d0dcd8b094cc11a20986f4417facc0a7a9dd7 (diff) | |
parent | 859a72101c94a26296efcc713882b472caf6ff8e (diff) |
Merge branch 'master' of https://github.com/danklein10/trex-core into danklein10-master
Diffstat (limited to 'scripts/automation/trex_control_plane/common/trex_streams.py')
-rwxr-xr-x | scripts/automation/trex_control_plane/common/trex_streams.py | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/scripts/automation/trex_control_plane/common/trex_streams.py b/scripts/automation/trex_control_plane/common/trex_streams.py index 007e2464..800b6d49 100755 --- a/scripts/automation/trex_control_plane/common/trex_streams.py +++ b/scripts/automation/trex_control_plane/common/trex_streams.py @@ -10,7 +10,7 @@ import copy import os StreamPack = namedtuple('StreamPack', ['stream_id', 'stream']) -LoadedStreamList = namedtuple('LoadedStreamList', ['loaded', 'compiled']) +LoadedStreamList = namedtuple('LoadedStreamList', ['name', 'loaded', 'compiled']) class CStreamList(object): @@ -176,9 +176,11 @@ class CStream(object): def __init__(self): self.is_loaded = False self._is_compiled = False + self._pkt_bld_obj = CTRexPktBuilder() for field in CStream.FIELDS: setattr(self, field, None) + def load_data(self, **kwargs): try: for k in CStream.FIELDS: @@ -206,8 +208,13 @@ class CStream(object): binary = kwargs[k]["binary"] if isinstance(binary, list): setattr(self, k, kwargs[k]) + # TODO: load to _pkt_bld_obj also when passed as byte array! elif isinstance(binary, str) and binary.endswith(".pcap"): - self.load_packet_from_pcap(binary, kwargs[k]["meta"]) + # self.load_packet_from_pcap(binary, kwargs[k]["meta"]) + self._pkt_bld_obj.load_packet_from_pcap(binary) + self._pkt_bld_obj.metadata = kwargs[k]["meta"] + self.packet = self._pkt_bld_obj.dump_pkt() + else: raise ValueError("Packet binary attribute has been loaded with unsupported value." "Supported values are reference to pcap file with SINGLE packet, " @@ -254,6 +261,10 @@ class CStream(object): else: raise RuntimeError("CStream object isn't loaded with data. Use 'load_data' method.") + def get_stream_layers(self, depth_limit=Ellipsis): + stream_layers = self._pkt_bld_obj.get_packet_layers(depth_limit) + return "/".join(stream_layers) + # describes a stream DB @@ -271,20 +282,23 @@ class CStreamsDB(object): stream_list = CStreamList() loaded_obj = stream_list.load_yaml(filename) - compiled_streams = stream_list.compile_streams() - rc = self.load_streams(stream_pack_name, - LoadedStreamList(loaded_obj, - [StreamPack(v.stream_id, v.stream.dump()) - for k, v in compiled_streams.items()])) + try: + compiled_streams = stream_list.compile_streams() + rc = self.load_streams(LoadedStreamList(stream_pack_name, + loaded_obj, + [StreamPack(v.stream_id, v.stream.dump()) + for k, v in compiled_streams.items()])) + except Exception as e: + return None return self.get_stream_pack(stream_pack_name) - def load_streams(self, name, LoadedStreamList_obj): - if name in self.stream_packs: + def load_streams(self, LoadedStreamList_obj): + if LoadedStreamList_obj.name in self.stream_packs: return False else: - self.stream_packs[name] = LoadedStreamList_obj + self.stream_packs[LoadedStreamList_obj.name] = LoadedStreamList_obj return True def remove_stream_packs(self, *names): |