summaryrefslogtreecommitdiffstats
path: root/scripts/automation/trex_control_plane
diff options
context:
space:
mode:
authorHanoh Haim <hhaim@cisco.com>2016-03-03 17:14:12 +0200
committerHanoh Haim <hhaim@cisco.com>2016-03-03 17:14:12 +0200
commit951a503356fd359407a8fae791b75fa8881dc04c (patch)
tree2da507afa9a3240d1a7892a55a5b7c27581fa799 /scripts/automation/trex_control_plane
parent42c621b92fca9c9ef916ce9896aecea0290ce2aa (diff)
console help looks better now
Diffstat (limited to 'scripts/automation/trex_control_plane')
-rwxr-xr-xscripts/automation/trex_control_plane/stl/console/trex_console.py11
-rw-r--r--scripts/automation/trex_control_plane/stl/examples/stl_bi_dir_flows.py4
-rw-r--r--scripts/automation/trex_control_plane/stl/examples/stl_bi_dir_flows1.py114
3 files changed, 122 insertions, 7 deletions
diff --git a/scripts/automation/trex_control_plane/stl/console/trex_console.py b/scripts/automation/trex_control_plane/stl/console/trex_console.py
index ffad03f3..e037f517 100755
--- a/scripts/automation/trex_control_plane/stl/console/trex_console.py
+++ b/scripts/automation/trex_control_plane/stl/console/trex_console.py
@@ -252,16 +252,16 @@ class TRexConsole(TRexGeneralCmd):
def postcmd(self, stop, line):
if not self.stateless_client.is_connected():
- self.prompt = "TRex (offline) > "
+ self.prompt = "trex(offline)>"
self.supported_rpc = None
return stop
if self.stateless_client.is_all_ports_acquired():
- self.prompt = "TRex (read only) > "
+ self.prompt = "trex(read-only)>"
return stop
- self.prompt = "TRex > "
+ self.prompt = "trex>"
return stop
@@ -614,8 +614,9 @@ class TRexConsole(TRexGeneralCmd):
help = "*** Undocumented Function ***\n"
except AttributeError:
help = "*** Undocumented Function ***\n"
-
- print "{:<30} {:<30}".format(cmd + " - ", help)
+
+ l=help.splitlines()
+ print "{:<30} {:<30}".format(cmd + " - ",l[0] )
# a custorm cmdloop wrapper
def start(self):
diff --git a/scripts/automation/trex_control_plane/stl/examples/stl_bi_dir_flows.py b/scripts/automation/trex_control_plane/stl/examples/stl_bi_dir_flows.py
index 7e90e264..05fff67c 100644
--- a/scripts/automation/trex_control_plane/stl/examples/stl_bi_dir_flows.py
+++ b/scripts/automation/trex_control_plane/stl/examples/stl_bi_dir_flows.py
@@ -108,7 +108,7 @@ def simple_burst ():
else:
print "\nTest has failed :-(\n"
-
+while True:
# run the tests
-simple_burst()
+ simple_burst()
diff --git a/scripts/automation/trex_control_plane/stl/examples/stl_bi_dir_flows1.py b/scripts/automation/trex_control_plane/stl/examples/stl_bi_dir_flows1.py
new file mode 100644
index 00000000..264d985e
--- /dev/null
+++ b/scripts/automation/trex_control_plane/stl/examples/stl_bi_dir_flows1.py
@@ -0,0 +1,114 @@
+import stl_path
+from trex_stl_lib.api import *
+
+import time
+import json
+
+# simple packet creation
+def create_pkt (size, direction):
+
+ ip_range = {'src': {'start': "10.0.0.1", 'end': "10.0.0.254"},
+ 'dst': {'start': "8.0.0.1", 'end': "8.0.0.254"}}
+
+ if (direction == 0):
+ src = ip_range['src']
+ dst = ip_range['dst']
+ else:
+ src = ip_range['dst']
+ dst = ip_range['src']
+
+ vm = [
+ # src
+ STLVmFlowVar(name="src",min_value=src['start'],max_value=src['end'],size=4,op="inc"),
+ STLVmWrFlowVar(fv_name="src",pkt_offset= "IP.src"),
+
+ # dst
+ STLVmFlowVar(name="dst",min_value=dst['start'],max_value=dst['end'],size=4,op="inc"),
+ STLVmWrFlowVar(fv_name="dst",pkt_offset= "IP.dst"),
+
+ # checksum
+ STLVmFixIpv4(offset = "IP")
+ ]
+
+
+ base = Ether()/IP()/UDP()
+ pad = max(0, len(base)) * 'x'
+
+ return STLPktBuilder(pkt = base/pad,
+ vm = vm)
+
+
+def simple_burst ():
+
+
+ # create client
+ c = STLClient()
+ passed = True
+
+ try:
+ # turn this on for some information
+ #c.set_verbose("high")
+
+ # create two streams
+ s1 = STLStream(packet = create_pkt(200, 0),
+ mode = STLTXCont(pps = 100))
+
+ # second stream with a phase of 1ms (inter stream gap)
+ s2 = STLStream(packet = create_pkt(200, 1),
+ isg = 1000,
+ mode = STLTXCont(pps = 100))
+
+
+ # connect to server
+ c.connect()
+
+ # prepare our ports (my machine has 0 <--> 1 with static route)
+ c.reset(ports = [2, 3])
+
+ # add both streams to ports
+ c.add_streams(s1, ports = [2])
+ c.add_streams(s2, ports = [3])
+
+ # clear the stats before injecting
+ c.clear_stats()
+
+ # choose rate and start traffic for 10 seconds on 5 mpps
+ print "Running 5 Mpps on ports 0, 1 for 10 seconds..."
+ c.start(ports = [2, 3], mult = "5mpps", duration = 10)
+
+ # block until done
+ c.wait_on_traffic(ports = [2, 3])
+
+ # read the stats after the test
+ stats = c.get_stats()
+
+ print json.dumps(stats[2], indent = 4, separators=(',', ': '), sort_keys = True)
+ print json.dumps(stats[3], indent = 4, separators=(',', ': '), sort_keys = True)
+
+ lost_a = stats[2]["opackets"] - stats[3]["ipackets"]
+ lost_b = stats[3]["opackets"] - stats[2]["ipackets"]
+
+ print "\npackets lost from 0 --> 1: {0} pkts".format(lost_a)
+ print "packets lost from 1 --> 0: {0} pkts".format(lost_b)
+
+ if (lost_a == 0) and (lost_b == 0):
+ passed = True
+ else:
+ passed = False
+
+ except STLError as e:
+ passed = False
+ print e
+
+ finally:
+ c.disconnect()
+
+ if passed:
+ print "\nTest has passed :-)\n"
+ else:
+ print "\nTest has failed :-(\n"
+
+while True :
+ # run the tests
+ simple_burst()
+