summaryrefslogtreecommitdiffstats
path: root/scripts/api/stl
diff options
context:
space:
mode:
authorimarom <imarom@cisco.com>2016-02-08 10:55:20 -0500
committerimarom <imarom@cisco.com>2016-02-08 10:55:20 -0500
commit6107c1ca4aa485c5971ff3326513b8f4934f7ac1 (patch)
treea109d80501bd087e3219f68c186fb55bc17e090a /scripts/api/stl
parentf5a5e50bfe046148a20f6ce578d6082119dec2c0 (diff)
huge refactor - again
Diffstat (limited to 'scripts/api/stl')
-rw-r--r--scripts/api/stl/examples/stl_bi_dir_flows.py114
-rw-r--r--scripts/api/stl/examples/stl_imix.py101
-rw-r--r--scripts/api/stl/examples/stl_path.py4
-rw-r--r--scripts/api/stl/examples/stl_run_udp_simple.py219
-rw-r--r--scripts/api/stl/examples/stl_simple_burst.py65
5 files changed, 0 insertions, 503 deletions
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()
-