summaryrefslogtreecommitdiffstats
path: root/scripts/automation/trex_control_plane/stl/examples/stl_simple_burst.py
blob: 4bd9fd4c3038c1c3a228a3e3eadde6e748c59e9e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa000
import stl_path
from trex_stl_lib.api import *

import time

def simple_burst (port_a, port_b, pkt_size, burst_size, rate):

    # create client
    c = STLClient()
    passed = True
    
    try:
        pkt_base = Ether()/IP(src="16.0.0.1",dst="48.0.0.1")/UDP(dport=12,sport=1025)/IP()
        pad = max(0, pkt_size - len(pkt_base)) * 'x'
        pkt = STLPktBuilder(pkt = pkt_base / pad)

        # create two bursts and link them
        s1 = STLStream(name = 'A',
                       packet = pkt,
                       mode = STLTXSingleBurst(total_pkts = burst_size),
                       next = 'B')
        
        s2 = STLStream(name = 'B',
                       self_start = False,
                       packet = pkt,
                       mode = STLTXSingleBurst(total_pkts = burst_size))

        # connect to server
        c.connect()

        # prepare our ports
        c.reset(ports = [port_a, port_b])

        # add both streams to ports
        stream_ids = c.add_streams([s1, s2], ports = [port_a, port_b])

        # run 5 times
        for i in range(1, 6):
            c.clear_stats()
            c.start(ports = [port_a, port_b], mult = rate)
            c.wait_on_traffic(ports = [port_a, port_b])

            stats = c.get_stats()
            ipackets  = stats['total']['ipackets']

            print("Test iteration {0} - Packets Received: {1} ".format(i, ipackets))
            # two streams X 2 ports
            if (ipackets != (burst_size * 2 * 2)):
                passed = False

    except STLError as e:
        passed = False
        print(e)

    finally:
        c.disconnect()

    if c.get_warnings():
            print("\n\n*** test had warnings ****\n\n")
            for w in c.get_warnings():
                print(w)

    if passed and not c.get_warnings():
        print("\nTest has passed :-)\n")
    else:
        print("\nTest has failed :-(\n")


# run the tests
simple_burst(0, 3, 256, 50000, "80%")