From 6107c1ca4aa485c5971ff3326513b8f4934f7ac1 Mon Sep 17 00:00:00 2001 From: imarom Date: Mon, 8 Feb 2016 10:55:20 -0500 Subject: huge refactor - again --- scripts/api/stl/examples/stl_bi_dir_flows.py | 114 ------------- scripts/api/stl/examples/stl_imix.py | 101 ------------ scripts/api/stl/examples/stl_path.py | 4 - scripts/api/stl/examples/stl_run_udp_simple.py | 219 ------------------------- scripts/api/stl/examples/stl_simple_burst.py | 65 -------- 5 files changed, 503 deletions(-) delete mode 100644 scripts/api/stl/examples/stl_bi_dir_flows.py delete mode 100644 scripts/api/stl/examples/stl_imix.py delete mode 100644 scripts/api/stl/examples/stl_path.py delete mode 100644 scripts/api/stl/examples/stl_run_udp_simple.py delete mode 100644 scripts/api/stl/examples/stl_simple_burst.py (limited to 'scripts/api') diff --git a/scripts/api/stl/examples/stl_bi_dir_flows.py b/scripts/api/stl/examples/stl_bi_dir_flows.py deleted file mode 100644 index 46b84c6e..00000000 --- a/scripts/api/stl/examples/stl_bi_dir_flows.py +++ /dev/null @@ -1,114 +0,0 @@ -import stl_path -from trex_control_plane.stl.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"), - STLVmWriteFlowVar(fv_name="src",pkt_offset= "IP.src"), - - # dst - STLVmFlowVar(name="dst",min_value=dst['start'],max_value=dst['end'],size=4,op="inc"), - STLVmWriteFlowVar(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 = [0, 1]) - - # add both streams to ports - c.add_streams(s1, ports = [0]) - c.add_streams(s2, ports = [1]) - - # 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 = [0, 1], mult = "5mpps", duration = 10) - - # block until done - c.wait_on_traffic(ports = [0, 1]) - - # read the stats after the test - stats = c.get_stats() - - print json.dumps(stats[0], indent = 4, separators=(',', ': '), sort_keys = True) - print json.dumps(stats[1], indent = 4, separators=(',', ': '), sort_keys = True) - - lost_a = stats[0]["opackets"] - stats[1]["ipackets"] - lost_b = stats[1]["opackets"] - stats[0]["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" - - -# run the tests -simple_burst() - diff --git a/scripts/api/stl/examples/stl_imix.py b/scripts/api/stl/examples/stl_imix.py deleted file mode 100644 index c083a207..00000000 --- a/scripts/api/stl/examples/stl_imix.py +++ /dev/null @@ -1,101 +0,0 @@ -import stl_path -from trex_control_plane.stl.api import * - -import time -import json -from pprint import pprint - -# IMIX test -# it maps the ports to sides -# then it load a predefind profile 'IMIX' -# and attach it to both sides and inject -# at a certain rate for some time -# finally it checks that all packets arrived -def imix_test (): - - - # create client - c = STLClient() - passed = True - - - try: - - # connect to server - c.connect() - - # take all the ports - c.reset() - - # map ports - identify the routes - table = stl_map_ports(c) - - print "Mapped ports to sides {0} <--> {1}".format(table['dir'][0], table['dir'][1]) - dir_0 = table['dir'][0] - dir_1 = table['dir'][1] - - # load IMIX profile - streams = c.load_profile('../../../stl/profiles/imix.py') - - # add both streams to ports - c.add_streams(streams, ports = dir_0) - c.add_streams(streams, ports = dir_1) - - # clear the stats before injecting - c.clear_stats() - - # choose rate and start traffic for 10 seconds on 5 mpps - duration = 10 - mult = "5mpps" - print "Injecting {0} <--> {1} on total rate of '{2}' for {3} seconds".format(dir_0, dir_1, mult, duration) - - c.start(ports = (dir_0 + dir_1), mult = mult, duration = duration, total = True) - - # block until done - c.wait_on_traffic(ports = (dir_0 + dir_1)) - - # read the stats after the test - stats = c.get_stats() - - # use this for debug info on all the stats - #pprint(stats) - - # sum dir 0 - dir_0_opackets = sum([stats[i]["opackets"] for i in dir_0]) - dir_0_ipackets = sum([stats[i]["ipackets"] for i in dir_0]) - - # sum dir 1 - dir_1_opackets = sum([stats[i]["opackets"] for i in dir_1]) - dir_1_ipackets = sum([stats[i]["ipackets"] for i in dir_1]) - - - lost_0 = dir_0_opackets - dir_1_ipackets - lost_1 = dir_1_opackets - dir_0_ipackets - - print "\nPackets injected from {0}: {1:,}".format(dir_0, dir_0_opackets) - print "Packets injected from {0}: {1:,}".format(dir_1, dir_1_opackets) - - print "\npackets lost from {0} --> {1}: {2:,} pkts".format(dir_0, dir_0, lost_0) - print "packets lost from {0} --> {1}: {2:,} pkts".format(dir_0, dir_0, lost_0) - - if (lost_0 == 0) and (lost_0 == 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" - - -# run the tests -imix_test() - diff --git a/scripts/api/stl/examples/stl_path.py b/scripts/api/stl/examples/stl_path.py deleted file mode 100644 index a5b8102b..00000000 --- a/scripts/api/stl/examples/stl_path.py +++ /dev/null @@ -1,4 +0,0 @@ -import sys - -# FIXME to the write path for trex_control_plane -sys.path.insert(0, "../../../automation") diff --git a/scripts/api/stl/examples/stl_run_udp_simple.py b/scripts/api/stl/examples/stl_run_udp_simple.py deleted file mode 100644 index 47db1b5a..00000000 --- a/scripts/api/stl/examples/stl_run_udp_simple.py +++ /dev/null @@ -1,219 +0,0 @@ -#!/usr/bin/python -import sys, getopt -import argparse; -""" -Sample API application, -Connect to TRex -Send UDP packet in specific length -Each direction has its own IP range -Compare Rx-pkts to TX-pkts assuming ports are loopback - -""" - -import stl_path -from trex_control_plane.stl.api import * - -H_VER = "trex-x v0.1 " - -class t_global(object): - args=None; - - -import dpkt -import time -import json -import string - -def generate_payload(length): - word = '' - alphabet_size = len(string.letters) - for i in range(length): - word += string.letters[(i % alphabet_size)] - return word - -# simple packet creation -def create_pkt (frame_size = 9000, direction=0): - - 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"), - STLVmWriteFlowVar(fv_name="src",pkt_offset= "IP.src"), - - # dst - STLVmFlowVar(name="dst",min_value=dst['start'],max_value=dst['end'],size=4,op="inc"), - STLVmWriteFlowVar(fv_name="dst",pkt_offset= "IP.dst"), - - # checksum - STLVmFixIpv4(offset = "IP") - ] - - pkt_base = Ether(src="00:00:00:00:00:01",dst="00:00:00:00:00:02")/IP()/UDP(dport=12,sport=1025) - pyld_size = frame_size - len(pkt_base); - pkt_pyld = generate_payload(pyld_size) - - return STLPktBuilder(pkt = pkt_base/pkt_pyld, - vm = vm) - - -def simple_burst (duration = 10, frame_size = 9000, speed = '1gbps'): - - if (frame_size < 60): - frame_size = 60 - - pkt_dir_0 = create_pkt (frame_size, 0) - - pkt_dir_1 = create_pkt (frame_size, 1) - - # create client - c = STLClient(server = t_global.args.ip) - - passed = True - - try: - # turn this on for some information - #c.set_verbose("high") - - # create two streams - s1 = STLStream(packet = pkt_dir_0, - mode = STLTXCont(pps = 100)) - - # second stream with a phase of 1ms (inter stream gap) - s2 = STLStream(packet = pkt_dir_1, - isg = 1000, - mode = STLTXCont(pps = 100)) - - if t_global.args.debug: - STLStream.dump_to_yaml ("example.yaml", [s1,s2]) # export to YAML so you can run it on simulator ./stl-sim -f example.yaml -o o.pcap - - # connect to server - c.connect() - - # prepare our ports (my machine has 0 <--> 1 with static route) - c.reset(ports = [0, 1]) - - # add both streams to ports - c.add_streams(s1, ports = [0]) - c.add_streams(s2, ports = [1]) - - # clear the stats before injecting - c.clear_stats() - - # choose rate and start traffic for 10 seconds on 5 mpps - print "Running {0} on ports 0, 1 for 10 seconds, UDP {1}...".format(speed,frame_size+4) - c.start(ports = [0, 1], mult = speed, duration = duration) - - # block until done - c.wait_on_traffic(ports = [0, 1]) - - # read the stats after the test - stats = c.get_stats() - - #print stats - print json.dumps(stats[0], indent = 4, separators=(',', ': '), sort_keys = True) - print json.dumps(stats[1], indent = 4, separators=(',', ': '), sort_keys = True) - - lost_a = stats[0]["opackets"] - stats[1]["ipackets"] - lost_b = stats[1]["opackets"] - stats[0]["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 "\nPASSED\n" - else: - print "\nFAILED\n" - -def process_options (): - parser = argparse.ArgumentParser(usage=""" - connect to TRex and send burst of packets - - examples - - stl_run_udp_simple.py -s 9001 - - stl_run_udp_simple.py -s 9000 -d 2 - - stl_run_udp_simple.py -s 3000 -d 3 -m 10mbps - - stl_run_udp_simple.py -s 3000 -d 3 -m 10mbps --debug - - then run the simulator on the output - ./stl-sim -f example.yaml -o a.pcap ==> a.pcap include the packet - - """, - description="example for TRex api", - epilog=" written by hhaim"); - - parser.add_argument("-s", "--frame-size", - dest="frame_size", - help='L2 frame size in bytes without FCS', - default=60, - type = int, - ) - - parser.add_argument("--ip", - dest="ip", - help='remote trex ip default local', - default="127.0.0.1", - type = str - ) - - - parser.add_argument('-d','--duration', - dest='duration', - help='duration in second ', - default=10, - type = int, - ) - - - parser.add_argument('-m','--multiplier', - dest='mul', - help='speed in gbps/pps for example 1gbps, 1mbps, 1mpps ', - default="1mbps" - ) - - parser.add_argument('--debug', - action='store_true', - help='see debug into ') - - parser.add_argument('--version', action='version', - version=H_VER ) - - t_global.args = parser.parse_args(); - print t_global.args - - - -def main(): - process_options () - simple_burst(duration = t_global.args.duration, - frame_size = t_global.args.frame_size, - speed = t_global.args.mul - ) - -if __name__ == "__main__": - main() - diff --git a/scripts/api/stl/examples/stl_simple_burst.py b/scripts/api/stl/examples/stl_simple_burst.py deleted file mode 100644 index 1e3e7695..00000000 --- a/scripts/api/stl/examples/stl_simple_burst.py +++ /dev/null @@ -1,65 +0,0 @@ -import stl_path -from trex_control_plane.stl.api import * - -import time - -def simple_burst (): - - - # create client - c = STLClient() - passed = True - - try: - pkt = STLPktBuilder(pkt = Ether()/IP(src="16.0.0.1",dst="48.0.0.1")/UDP(dport=12,sport=1025)/IP()/'a_payload_example') - - # create two bursts and link them - s1 = STLStream(name = 'A', - packet = pkt, - mode = STLTXSingleBurst(total_pkts = 5000), - next = 'B') - - s2 = STLStream(name = 'B', - self_start = False, - packet = pkt, - mode = STLTXSingleBurst(total_pkts = 3000)) - - # connect to server - c.connect() - - # prepare our ports - c.reset(ports = [0, 3]) - - # add both streams to ports - stream_ids = c.add_streams([s1, s2], ports = [0, 3]) - - # run 5 times - for i in xrange(1, 6): - c.clear_stats() - c.start(ports = [0, 3], mult = "1gbps") - c.wait_on_traffic(ports = [0, 3]) - - stats = c.get_stats() - ipackets = stats['total']['ipackets'] - - print "Test iteration {0} - Packets Received: {1} ".format(i, ipackets) - # (5000 + 3000) * 2 ports = 16,000 - if (ipackets != (16000)): - 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" - - -# run the tests -simple_burst() - -- cgit