diff options
Diffstat (limited to 'test/asf/test_pcap.py')
-rw-r--r-- | test/asf/test_pcap.py | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/test/asf/test_pcap.py b/test/asf/test_pcap.py new file mode 100644 index 00000000000..f44a880feac --- /dev/null +++ b/test/asf/test_pcap.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python3 + +import os +import unittest + +from asfframework import VppTestCase, VppTestRunner +from vpp_ip_route import VppIpTable, VppIpRoute, VppRoutePath + + +class TestPcap(VppTestCase): + """Pcap Unit Test Cases""" + + @classmethod + def setUpClass(cls): + super(TestPcap, cls).setUpClass() + + @classmethod + def tearDownClass(cls): + super(TestPcap, cls).tearDownClass() + + def setUp(self): + super(TestPcap, self).setUp() + + def tearDown(self): + super(TestPcap, self).tearDown() + + # This is a code coverage test, but it only runs for 0.3 seconds + # might as well just run it... + def test_pcap_unittest(self): + """PCAP Capture Tests""" + cmds = [ + "loop create", + "set int ip address loop0 11.22.33.1/24", + "set int state loop0 up", + "loop create", + "set int ip address loop1 11.22.34.1/24", + "set int state loop1 up", + "set ip neighbor loop1 11.22.34.44 03:00:11:22:34:44", + "packet-generator new {\n" + " name s0\n" + " limit 10\n" + " size 128-128\n" + " interface loop0\n" + " tx-interface loop1\n" + " node loop1-output\n" + " buffer-flags ip4 offload\n" + " buffer-offload-flags offload-ip-cksum offload-udp-cksum\n" + " data {\n" + " IP4: 1.2.3 -> dead.0000.0001\n" + " UDP: 11.22.33.44 -> 11.22.34.44\n" + " ttl 2 checksum 13\n" + " UDP: 1234 -> 2345\n" + " checksum 11\n" + " incrementing 114\n" + " }\n" + "}", + "pcap dispatch trace on max 100 buffer-trace pg-input 10", + "pa en", + "pcap dispatch trace off", + "pcap trace rx tx max 1000 intfc any", + "pa en", + "pcap trace status", + "pcap trace rx tx off", + "classify filter pcap mask l3 ip4 src match l3 ip4 src 11.22.33.44", + "pcap trace rx tx max 1000 intfc any file filt.pcap filter", + "show cla t verbose 2", + "show cla t verbose", + "show cla t", + "pa en", + "pcap trace rx tx off", + "classify filter pcap del mask l3 ip4 src", + ] + + 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)) + + self.assertTrue(os.path.exists("/tmp/dispatch.pcap")) + self.assertTrue(os.path.exists("/tmp/rxtx.pcap")) + self.assertTrue(os.path.exists("/tmp/filt.pcap")) + os.remove("/tmp/dispatch.pcap") + os.remove("/tmp/rxtx.pcap") + os.remove("/tmp/filt.pcap") + + +if __name__ == "__main__": + unittest.main(testRunner=VppTestRunner) |