From 951a503356fd359407a8fae791b75fa8881dc04c Mon Sep 17 00:00:00 2001 From: Hanoh Haim Date: Thu, 3 Mar 2016 17:14:12 +0200 Subject: console help looks better now --- .../stl/examples/stl_bi_dir_flows1.py | 114 +++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 scripts/automation/trex_control_plane/stl/examples/stl_bi_dir_flows1.py (limited to 'scripts/automation/trex_control_plane/stl/examples/stl_bi_dir_flows1.py') 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() + -- cgit 1.2.3-korg