summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorimarom <imarom@cisco.com>2016-02-11 09:31:45 -0500
committerimarom <imarom@cisco.com>2016-02-11 09:32:25 -0500
commit96e96afa83a47268000194ddf75ec2323e336d18 (patch)
treebd07ecebc4402524a3443f389616519fc1f179d1 /scripts
parent53cb5b1f7340e72374eb30c6b5e495c63776ecd9 (diff)
fixed 'streams' command that was broken because of my big commit
Diffstat (limited to 'scripts')
-rw-r--r--scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_packet_builder_scapy.py5
-rw-r--r--scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_port.py36
-rw-r--r--scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_stats.py4
-rw-r--r--scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_streams.py33
-rw-r--r--scripts/stl/imix.py4
5 files changed, 58 insertions, 24 deletions
diff --git a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_packet_builder_scapy.py b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_packet_builder_scapy.py
index de96350a..0b90d3e1 100644
--- a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_packet_builder_scapy.py
+++ b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_packet_builder_scapy.py
@@ -700,10 +700,15 @@ class CScapyTRexPktBuilder(CTrexPktBuilderInterface):
"""
pkt_buf = self._get_pkt_as_str()
+ return self.pkt_layers_desc_from_buffer(pkt_buf)
+
+ @staticmethod
+ def pkt_layers_desc_from_buffer (pkt_buf):
scapy_pkt = Ether(pkt_buf);
pkt_utl = CTRexScapyPktUtl(scapy_pkt);
return pkt_utl.get_pkt_layers()
+
def set_pkt_as_str (self, pkt_buffer):
assert type(pkt_buffer)==str, "pkt_buffer should be string"
self.pkt_raw = pkt_buffer
diff --git a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_port.py b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_port.py
index de96f1ac..e319e7d3 100644
--- a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_port.py
+++ b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_port.py
@@ -180,7 +180,8 @@ class Port(object):
return self.err("stream dependency error - unable to find '{0}'".format(next))
next_id = lookup[next]
- stream.fields['next_stream_id'] = next_id
+
+ stream.set_next_id(next_id)
batch = []
@@ -490,39 +491,36 @@ class Port(object):
################# stream printout ######################
def generate_loaded_streams_sum(self, stream_id_list):
- if self.state == self.STATE_DOWN or self.state == self.STATE_STREAMS:
+ if self.state == self.STATE_DOWN:
return {}
streams_data = {}
if not stream_id_list:
# if no mask has been provided, apply to all streams on port
stream_id_list = self.streams.keys()
-
+
streams_data = {stream_id: self.streams[stream_id].metadata.get('stream_sum', ["N/A"] * 6)
for stream_id in stream_id_list
if stream_id in self.streams}
-
- return {"referring_file" : "",
- "streams" : streams_data}
+ # sort the data
+ return {"streams" : OrderedDict(sorted(streams_data.items())) }
@staticmethod
def _generate_stream_metadata(stream):
meta_dict = {}
- # create packet stream description
- #pkt_bld_obj = packet_builder.CTRexPktBuilder()
- #pkt_bld_obj.load_from_stream_obj(compiled_stream_obj)
- # generate stream summary based on that
-
- #next_stream = "None" if stream['next_stream_id']==-1 else stream['next_stream_id']
-
- meta_dict['stream_sum'] = OrderedDict([("id", stream.get_id()),
- ("packet_type", "FIXME!!!"),
- ("L2 len", "FIXME!!! +++4"),
- ("mode", "FIXME!!!"),
- ("rate_pps", "FIXME!!!"),
- ("next_stream", "FIXME!!!")
+
+ next = stream.get_next_id()
+ if next == -1:
+ next = "-"
+
+ meta_dict['stream_sum'] = OrderedDict([("id", stream.get_id()),
+ ("packet_type", stream.get_pkt_type()),
+ ("L2 len", stream.get_pkt_len()),
+ ("mode", stream.get_mode()),
+ ("rate_pps", stream.get_pps()),
+ ("next_stream", next)
])
return meta_dict
diff --git a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_stats.py b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_stats.py
index 183ae0c6..30f303a8 100644
--- a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_stats.py
+++ b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_stats.py
@@ -84,15 +84,13 @@ class CTRexInfoGenerator(object):
def generate_streams_info(self, port_id_list, stream_id_list):
relevant_ports = self.__get_relevant_ports(port_id_list)
-
return_data = OrderedDict()
for port_obj in relevant_ports:
streams_data = self._generate_single_port_streams_info(port_obj, stream_id_list)
if not streams_data:
continue
- hdr_key = "Port {port}: {yaml_file}".format(port= port_obj.port_id,
- yaml_file= streams_data.raw_data.get('referring_file', ''))
+ hdr_key = "Port {port}:".format(port= port_obj.port_id)
# TODO: test for other ports with same stream structure, and join them
return_data[hdr_key] = streams_data
diff --git a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_streams.py b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_streams.py
index 91a554ff..609006a8 100644
--- a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_streams.py
+++ b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_streams.py
@@ -38,6 +38,8 @@ class STLTXCont(STLTXMode):
self.fields['type'] = 'continuous'
self.fields['pps'] = pps
+ def __str__ (self):
+ return "Continuous"
# single burst mode
class STLTXSingleBurst(STLTXMode):
@@ -56,6 +58,8 @@ class STLTXSingleBurst(STLTXMode):
self.fields['pps'] = pps
self.fields['total_pkts'] = total_pkts
+ def __str__ (self):
+ return "Single Burst"
# multi burst mode
class STLTXMultiBurst(STLTXMode):
@@ -86,6 +90,9 @@ class STLTXMultiBurst(STLTXMode):
self.fields['ibg'] = ibg
self.fields['count'] = count
+ def __str__ (self):
+ return "Multi Burst"
+
class STLStream(object):
@@ -122,6 +129,8 @@ class STLStream(object):
# tag for the stream and next - can be anything
self.name = name if name else random_name(8)
self.next = next
+
+ # ID
self.set_id(stream_id)
self.fields = {}
@@ -133,6 +142,7 @@ class STLStream(object):
# mode
self.fields['mode'] = mode.to_json()
+ self.mode_desc = str(mode)
self.fields['packet'] = {}
self.fields['vm'] = {}
@@ -146,6 +156,7 @@ class STLStream(object):
# packet and VM
self.fields['packet'] = packet.dump_pkt()
self.fields['vm'] = packet.get_vm_data()
+ self.packet_desc = packet.pkt_layers_desc()
if not rx_stats:
self.fields['rx_stats'] = {}
@@ -169,12 +180,34 @@ class STLStream(object):
def set_id (self, id):
self.id = id
+ def get_next_id (self):
+ return self.fields.get('next_stream_id')
+
+ def set_next_id (self, next_stream_id):
+ self.fields['next_stream_id'] = next_stream_id
+
def get_name (self):
return self.name
def get_next (self):
return self.next
+ def get_pkt_type (self):
+ return self.packet_desc
+
+ def get_pkt_len (self, count_crc = True):
+ pkt_len = len(base64.b64decode(self.fields['packet']['binary']))
+ if count_crc:
+ pkt_len += 4
+
+ return pkt_len
+
+ def get_pps (self):
+ return self.fields['mode']['pps']
+
+ def get_mode (self):
+ return self.mode_desc
+
def to_yaml (self):
return {'name': self.name, 'stream': self.fields}
diff --git a/scripts/stl/imix.py b/scripts/stl/imix.py
index 144bb3f8..54208af7 100644
--- a/scripts/stl/imix.py
+++ b/scripts/stl/imix.py
@@ -17,7 +17,7 @@ class STLImix(object):
{'size': 1514, 'pps': 4, 'isg':0.2 } ]
- def create_stream (self, size, pps,isg, vm ):
+ def create_stream (self, size, pps, isg, vm ):
# create a base packet and pad it to size
base_pkt = Ether()/IP()/UDP()
pad = max(0, size - len(base_pkt)) * 'x'
@@ -27,7 +27,7 @@ class STLImix(object):
return STLStream(isg = isg,
packet = pkt,
- mode = STLTXCont())
+ mode = STLTXCont(pps = pps))
def get_streams (self, direction = 0):