blob: 6c01d3b7b1611dc4cd9ba220e87969d591add2e9 [file] [log] [blame]
#!/usr/bin/env python3
import unittest
from scapy.packet import Raw
from scapy.layers.l2 import Ether
from scapy.layers.inet import IP, UDP
from scapy.layers.inet6 import IPv6
from framework import VppTestCase
from asfframework import VppTestRunner
class TestPgStream(VppTestCase):
"""PG Stream Test Case"""
def __init__(self, *args):
VppTestCase.__init__(self, *args)
def setUp(self):
super(TestPgStream, self).setUp()
# Create 3 pg interfaces - one each for ethernet, IPv4, and IPv6.
self.create_pg_interfaces(range(0, 1))
self.pg_interfaces += self.create_pg_ip4_interfaces(range(1, 2))
self.pg_interfaces += self.create_pg_ip6_interfaces(range(2, 3))
for i in self.pg_interfaces:
i.admin_up()
for i in [self.pg0, self.pg1]:
i.config_ip4()
for i in [self.pg0, self.pg2]:
i.config_ip6()
self.pg0.resolve_arp()
self.pg0.resolve_ndp()
def tearDown(self):
super(TestPgStream, self).tearDown()
for i in self.pg_interfaces:
i.unconfig_ip4()
i.admin_down()
i.remove_vpp_config()
def pg_stream(self, count=100, rate=1e6, packet_size=700):
rate = str(rate)
packet_size = str(packet_size)
count = str(count)
cmds = [
"packet-generator new {{\n"
" name pg0-stream\n"
" limit {count}\n"
" node ethernet-input\n"
" source pg0\n"
" rate {rate}\n"
" size {packet_size}+{packet_size}\n"
" data {{\n"
" IP4: {src_mac} -> 00:02:03:04:05:06\n"
" UDP: 192.168.20.20 -> 192.168.10.100\n"
" UDP: 1234 -> 4321\n"
" incrementing 100\n"
" }}\n"
"}}\n".format(
count=count,
rate=rate,
packet_size=packet_size,
src_mac=self.pg0.local_mac,
),
"packet-generator enable",
"packet-generator disable",
"packet-generator delete pg0-stream",
]
for cmd in cmds:
r = self.vapi.cli_return_response(cmd)
if r.retval != 0:
if hasattr(r, "reply"):
self.logger.info(cmd + " FAIL reply " + r.reply)
else:
self.logger.info(cmd + " FAIL retval " + str(r.retval))
def test_pg_stream(self):
"""PG Stream testing"""
self.pg_stream(rate=100, packet_size=64)
self.pg_stream(count=1000, rate=1000)
self.pg_stream(count=100000, rate=10000, packet_size=1500)
self.pg_stream(packet_size=4000)
if __name__ == "__main__":
unittest.main(testRunner=VppTestRunner)