From b06653f4fc66e6cdafaa2697f9553ae12b417e93 Mon Sep 17 00:00:00 2001 From: Hanoh Haim Date: Wed, 27 Jan 2016 18:43:12 +0200 Subject: move api under scripts --- api/stl/examples/stl_bi_dir_flows.py | 122 --------------------------- api/stl/examples/stl_simple_burst.py | 90 -------------------- api/stl/examples/udp_64B.pcap | Bin 104 -> 0 bytes api/stl/profiles/burst.yaml | 39 --------- api/stl/trex_stl_api.py | 25 ------ linux/ws_main.py | 7 +- linux_dpdk/ws_main.py | 3 +- scripts/api/stl/examples/stl_bi_dir_flows.py | 122 +++++++++++++++++++++++++++ scripts/api/stl/examples/stl_simple_burst.py | 90 ++++++++++++++++++++ scripts/api/stl/examples/udp_64B.pcap | Bin 0 -> 104 bytes scripts/api/stl/profiles/burst.yaml | 39 +++++++++ scripts/api/stl/trex_stl_api.py | 25 ++++++ 12 files changed, 281 insertions(+), 281 deletions(-) delete mode 100644 api/stl/examples/stl_bi_dir_flows.py delete mode 100644 api/stl/examples/stl_simple_burst.py delete mode 100644 api/stl/examples/udp_64B.pcap delete mode 100644 api/stl/profiles/burst.yaml delete mode 100644 api/stl/trex_stl_api.py create mode 100644 scripts/api/stl/examples/stl_bi_dir_flows.py create mode 100644 scripts/api/stl/examples/stl_simple_burst.py create mode 100644 scripts/api/stl/examples/udp_64B.pcap create mode 100644 scripts/api/stl/profiles/burst.yaml create mode 100644 scripts/api/stl/trex_stl_api.py diff --git a/api/stl/examples/stl_bi_dir_flows.py b/api/stl/examples/stl_bi_dir_flows.py deleted file mode 100644 index 429445e6..00000000 --- a/api/stl/examples/stl_bi_dir_flows.py +++ /dev/null @@ -1,122 +0,0 @@ -# include the path of trex_stl_api.py -import sys -sys.path.insert(0, "../") - -from trex_stl_api import * - -import dpkt -import time -import json - - -def simple_burst (): - - # build A side packet - pkt_a = STLPktBuilder() - - pkt_a.add_pkt_layer("l2", dpkt.ethernet.Ethernet()) - pkt_a.add_pkt_layer("l3_ip", dpkt.ip.IP()) - pkt_a.add_pkt_layer("l4_udp", dpkt.udp.UDP()) - pkt_a.set_pkt_payload("somepayload") - pkt_a.set_layer_attr("l3_ip", "len", len(pkt_a.get_layer('l3_ip'))) - - # build B side packet - pkt_b = pkt_a.clone() - - # set IP range for pkt and split it by multiple cores - pkt_a.set_vm_ip_range(ip_layer_name = "l3_ip", - ip_field = "src", - ip_start="10.0.0.1", ip_end="10.0.0.254", - operation = "inc", - split = True) - - pkt_a.set_vm_ip_range(ip_layer_name = "l3_ip", - ip_field = "dst", - ip_start="8.0.0.1", ip_end="8.0.0.254", - operation = "inc") - - - # build B side packet - pkt_b.set_vm_ip_range(ip_layer_name = "l3_ip", - ip_field = "src", - ip_start="8.0.0.1", ip_end="8.0.0.254", - operation = "inc", - split = True) - - pkt_b.set_vm_ip_range(ip_layer_name = "l3_ip", - ip_field = "dst", - ip_start="10.0.0.1", ip_end="10.0.0.254", - operation = "inc") - - - # create client - c = STLClient() - passed = True - - try: - # turn this on for some information - #c.set_verbose("high") - - # create two streams - s1 = STLStream(packet = pkt_a, - mode = STLTXCont(pps = 100)) - - # second stream with a phase of 1ms (inter stream gap) - s2 = STLStream(packet = pkt_b, - 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["port 0"], indent = 4, separators=(',', ': '), sort_keys = True) - print json.dumps(stats["port 1"], indent = 4, separators=(',', ': '), sort_keys = True) - - lost_a = stats["port 0"]["opackets"] - stats["port 1"]["ipackets"] - lost_b = stats["port 1"]["opackets"] - stats["port 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/api/stl/examples/stl_simple_burst.py b/api/stl/examples/stl_simple_burst.py deleted file mode 100644 index 3b394d10..00000000 --- a/api/stl/examples/stl_simple_burst.py +++ /dev/null @@ -1,90 +0,0 @@ -import sys -sys.path.insert(0, "../") - -from trex_stl_api import * -import dpkt -import time - -def simple_burst (): - - # build a simple packet - - pkt_bld = STLPktBuilder() - pkt_bld.add_pkt_layer("l2", dpkt.ethernet.Ethernet()) - # set Ethernet layer attributes - pkt_bld.set_eth_layer_addr("l2", "src", "00:15:17:a7:75:a3") - pkt_bld.set_eth_layer_addr("l2", "dst", "e0:5f:b9:69:e9:22") - pkt_bld.set_layer_attr("l2", "type", dpkt.ethernet.ETH_TYPE_IP) - # set IP layer attributes - pkt_bld.add_pkt_layer("l3_ip", dpkt.ip.IP()) - pkt_bld.set_ip_layer_addr("l3_ip", "src", "21.0.0.2") - pkt_bld.set_ip_layer_addr("l3_ip", "dst", "22.0.0.12") - pkt_bld.set_layer_attr("l3_ip", "p", dpkt.ip.IP_PROTO_TCP) - # set TCP layer attributes - pkt_bld.add_pkt_layer("l4_tcp", dpkt.tcp.TCP()) - pkt_bld.set_layer_attr("l4_tcp", "sport", 13311) - pkt_bld.set_layer_attr("l4_tcp", "dport", 80) - pkt_bld.set_layer_attr("l4_tcp", "flags", 0) - pkt_bld.set_layer_attr("l4_tcp", "win", 32768) - pkt_bld.set_layer_attr("l4_tcp", "seq", 0) - #pkt_bld.set_pkt_payload("abcdefgh") - pkt_bld.set_layer_attr("l3_ip", "len", len(pkt_bld.get_layer('l3_ip'))) - - - # create client - c = STLClient() - passed = True - - try: - - #c.logger.set_verbose(c.logger.VERBOSE_NORMAL) - - # create two bursts and link them - s1 = STLStream(packet = pkt_bld, - mode = STLTXSingleBurst(total_pkts = 5000) - ) - - s2 = STLStream(packet = pkt_bld, - mode = STLTXSingleBurst(total_pkts = 3000), - next_stream_id = s1.get_id()) - - - # connect to server - c.connect() - - # prepare our ports - c.reset(ports = [0, 1]) - - # add both streams to ports - c.add_streams([s1, s2], ports = [0, 1]) - - # run 5 times - for i in xrange(1, 6): - c.clear_stats() - c.start(ports = [0, 1], mult = "1gbps") - c.wait_on_traffic(ports = [0, 1]) - - 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() - diff --git a/api/stl/examples/udp_64B.pcap b/api/stl/examples/udp_64B.pcap deleted file mode 100644 index 699b9c80..00000000 Binary files a/api/stl/examples/udp_64B.pcap and /dev/null differ diff --git a/api/stl/profiles/burst.yaml b/api/stl/profiles/burst.yaml deleted file mode 100644 index dbd348c7..00000000 --- a/api/stl/profiles/burst.yaml +++ /dev/null @@ -1,39 +0,0 @@ -### Single stream UDP packet, 64B ### -##################################### -- name: stream0 - stream: - self_start: True - next_stream_id: stream1 - packet: - binary: udp_64B.pcap - mode: - type: single_burst - pps: 100 - total_pkts : 100 - rx_stats: [] - vm: [] - -- name: stream1 - stream: - self_start: False - next_stream_id: stream2 - packet: - binary: udp_64B.pcap - mode: - type: single_burst - pps: 100 - total_pkts : 200 - rx_stats: [] - vm: [] - -- name: stream2 - stream: - self_start: False - packet: - binary: udp_64B.pcap - mode: - type: single_burst - pps: 100 - total_pkts : 300 - rx_stats: [] - vm: [] diff --git a/api/stl/trex_stl_api.py b/api/stl/trex_stl_api.py deleted file mode 100644 index ce818b7a..00000000 --- a/api/stl/trex_stl_api.py +++ /dev/null @@ -1,25 +0,0 @@ -import os -import sys -import time - - -# update the import path to include the stateless client -root_path = os.path.dirname(os.path.abspath(__file__)) - -sys.path.insert(0, os.path.join(root_path, '../../scripts/automation/trex_control_plane/')) - -# aliasing -import common.trex_streams -from client_utils.packet_builder import CTRexPktBuilder -import common.trex_stl_exceptions -import client.trex_stateless_client - -STLClient = client.trex_stateless_client.STLClient -STLError = common.trex_stl_exceptions.STLError -STLStream = common.trex_streams.STLStream - -STLTXCont = common.trex_streams.STLTXCont -STLTXSingleBurst = common.trex_streams.STLTXSingleBurst -STLTXMultiBurst = common.trex_streams.STLTXMultiBurst - -STLPktBuilder = CTRexPktBuilder diff --git a/linux/ws_main.py b/linux/ws_main.py index 22c52eea..5636965b 100755 --- a/linux/ws_main.py +++ b/linux/ws_main.py @@ -412,9 +412,10 @@ build_types = [ flags = ['-Wall', '-Werror', '-Wno-sign-compare', '-Wno-strict-aliasing'], rpath = ['.']), - build_option(name = "mock-rpc-server", use = [''], src = rpc_server_mock, debug_mode= DEBUG_,platform = PLATFORM_64, is_pie = False, - flags = ['-DTREX_RPC_MOCK_SERVER', '-Wall', '-Werror', '-Wno-sign-compare'], - rpath = ['.']), + # not supported any more + #build_option(name = "mock-rpc-server", use = [''], src = rpc_server_mock, debug_mode= DEBUG_,platform = PLATFORM_64, is_pie = False, + # flags = ['-DTREX_RPC_MOCK_SERVER', '-Wall', '-Werror', '-Wno-sign-compare'], + # rpath = ['.']), ] diff --git a/linux_dpdk/ws_main.py b/linux_dpdk/ws_main.py index 51298ba6..37e99cce 100755 --- a/linux_dpdk/ws_main.py +++ b/linux_dpdk/ws_main.py @@ -831,7 +831,6 @@ files_list=[ 'bp-sim-64', 'bp-sim-64-debug', 't-rex-debug-gdb', - 'mock-rpc-server-64-debug', 'release_notes.pdf', 'dpdk_nic_bind.py', 'dpdk_setup_ports.py', @@ -840,7 +839,7 @@ files_list=[ 'trex-console' ]; -files_dir=['cap2','avl','cfg','ko','automation', 'external_libs', 'python-lib','stl'] +files_dir=['cap2','avl','cfg','ko','automation', 'external_libs', 'python-lib','stl','api'] class Env(object): diff --git a/scripts/api/stl/examples/stl_bi_dir_flows.py b/scripts/api/stl/examples/stl_bi_dir_flows.py new file mode 100644 index 00000000..429445e6 --- /dev/null +++ b/scripts/api/stl/examples/stl_bi_dir_flows.py @@ -0,0 +1,122 @@ +# include the path of trex_stl_api.py +import sys +sys.path.insert(0, "../") + +from trex_stl_api import * + +import dpkt +import time +import json + + +def simple_burst (): + + # build A side packet + pkt_a = STLPktBuilder() + + pkt_a.add_pkt_layer("l2", dpkt.ethernet.Ethernet()) + pkt_a.add_pkt_layer("l3_ip", dpkt.ip.IP()) + pkt_a.add_pkt_layer("l4_udp", dpkt.udp.UDP()) + pkt_a.set_pkt_payload("somepayload") + pkt_a.set_layer_attr("l3_ip", "len", len(pkt_a.get_layer('l3_ip'))) + + # build B side packet + pkt_b = pkt_a.clone() + + # set IP range for pkt and split it by multiple cores + pkt_a.set_vm_ip_range(ip_layer_name = "l3_ip", + ip_field = "src", + ip_start="10.0.0.1", ip_end="10.0.0.254", + operation = "inc", + split = True) + + pkt_a.set_vm_ip_range(ip_layer_name = "l3_ip", + ip_field = "dst", + ip_start="8.0.0.1", ip_end="8.0.0.254", + operation = "inc") + + + # build B side packet + pkt_b.set_vm_ip_range(ip_layer_name = "l3_ip", + ip_field = "src", + ip_start="8.0.0.1", ip_end="8.0.0.254", + operation = "inc", + split = True) + + pkt_b.set_vm_ip_range(ip_layer_name = "l3_ip", + ip_field = "dst", + ip_start="10.0.0.1", ip_end="10.0.0.254", + operation = "inc") + + + # create client + c = STLClient() + passed = True + + try: + # turn this on for some information + #c.set_verbose("high") + + # create two streams + s1 = STLStream(packet = pkt_a, + mode = STLTXCont(pps = 100)) + + # second stream with a phase of 1ms (inter stream gap) + s2 = STLStream(packet = pkt_b, + 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["port 0"], indent = 4, separators=(',', ': '), sort_keys = True) + print json.dumps(stats["port 1"], indent = 4, separators=(',', ': '), sort_keys = True) + + lost_a = stats["port 0"]["opackets"] - stats["port 1"]["ipackets"] + lost_b = stats["port 1"]["opackets"] - stats["port 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_simple_burst.py b/scripts/api/stl/examples/stl_simple_burst.py new file mode 100644 index 00000000..3b394d10 --- /dev/null +++ b/scripts/api/stl/examples/stl_simple_burst.py @@ -0,0 +1,90 @@ +import sys +sys.path.insert(0, "../") + +from trex_stl_api import * +import dpkt +import time + +def simple_burst (): + + # build a simple packet + + pkt_bld = STLPktBuilder() + pkt_bld.add_pkt_layer("l2", dpkt.ethernet.Ethernet()) + # set Ethernet layer attributes + pkt_bld.set_eth_layer_addr("l2", "src", "00:15:17:a7:75:a3") + pkt_bld.set_eth_layer_addr("l2", "dst", "e0:5f:b9:69:e9:22") + pkt_bld.set_layer_attr("l2", "type", dpkt.ethernet.ETH_TYPE_IP) + # set IP layer attributes + pkt_bld.add_pkt_layer("l3_ip", dpkt.ip.IP()) + pkt_bld.set_ip_layer_addr("l3_ip", "src", "21.0.0.2") + pkt_bld.set_ip_layer_addr("l3_ip", "dst", "22.0.0.12") + pkt_bld.set_layer_attr("l3_ip", "p", dpkt.ip.IP_PROTO_TCP) + # set TCP layer attributes + pkt_bld.add_pkt_layer("l4_tcp", dpkt.tcp.TCP()) + pkt_bld.set_layer_attr("l4_tcp", "sport", 13311) + pkt_bld.set_layer_attr("l4_tcp", "dport", 80) + pkt_bld.set_layer_attr("l4_tcp", "flags", 0) + pkt_bld.set_layer_attr("l4_tcp", "win", 32768) + pkt_bld.set_layer_attr("l4_tcp", "seq", 0) + #pkt_bld.set_pkt_payload("abcdefgh") + pkt_bld.set_layer_attr("l3_ip", "len", len(pkt_bld.get_layer('l3_ip'))) + + + # create client + c = STLClient() + passed = True + + try: + + #c.logger.set_verbose(c.logger.VERBOSE_NORMAL) + + # create two bursts and link them + s1 = STLStream(packet = pkt_bld, + mode = STLTXSingleBurst(total_pkts = 5000) + ) + + s2 = STLStream(packet = pkt_bld, + mode = STLTXSingleBurst(total_pkts = 3000), + next_stream_id = s1.get_id()) + + + # connect to server + c.connect() + + # prepare our ports + c.reset(ports = [0, 1]) + + # add both streams to ports + c.add_streams([s1, s2], ports = [0, 1]) + + # run 5 times + for i in xrange(1, 6): + c.clear_stats() + c.start(ports = [0, 1], mult = "1gbps") + c.wait_on_traffic(ports = [0, 1]) + + 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() + diff --git a/scripts/api/stl/examples/udp_64B.pcap b/scripts/api/stl/examples/udp_64B.pcap new file mode 100644 index 00000000..699b9c80 Binary files /dev/null and b/scripts/api/stl/examples/udp_64B.pcap differ diff --git a/scripts/api/stl/profiles/burst.yaml b/scripts/api/stl/profiles/burst.yaml new file mode 100644 index 00000000..dbd348c7 --- /dev/null +++ b/scripts/api/stl/profiles/burst.yaml @@ -0,0 +1,39 @@ +### Single stream UDP packet, 64B ### +##################################### +- name: stream0 + stream: + self_start: True + next_stream_id: stream1 + packet: + binary: udp_64B.pcap + mode: + type: single_burst + pps: 100 + total_pkts : 100 + rx_stats: [] + vm: [] + +- name: stream1 + stream: + self_start: False + next_stream_id: stream2 + packet: + binary: udp_64B.pcap + mode: + type: single_burst + pps: 100 + total_pkts : 200 + rx_stats: [] + vm: [] + +- name: stream2 + stream: + self_start: False + packet: + binary: udp_64B.pcap + mode: + type: single_burst + pps: 100 + total_pkts : 300 + rx_stats: [] + vm: [] diff --git a/scripts/api/stl/trex_stl_api.py b/scripts/api/stl/trex_stl_api.py new file mode 100644 index 00000000..09a0af18 --- /dev/null +++ b/scripts/api/stl/trex_stl_api.py @@ -0,0 +1,25 @@ +import os +import sys +import time + + +# update the import path to include the stateless client +root_path = os.path.dirname(os.path.abspath(__file__)) + +sys.path.insert(0, os.path.join(root_path, '../../automation/trex_control_plane/')) + +# aliasing +import common.trex_streams +from client_utils.packet_builder import CTRexPktBuilder +import common.trex_stl_exceptions +import client.trex_stateless_client + +STLClient = client.trex_stateless_client.STLClient +STLError = common.trex_stl_exceptions.STLError +STLStream = common.trex_streams.STLStream + +STLTXCont = common.trex_streams.STLTXCont +STLTXSingleBurst = common.trex_streams.STLTXSingleBurst +STLTXMultiBurst = common.trex_streams.STLTXMultiBurst + +STLPktBuilder = CTRexPktBuilder -- cgit