| #!/usr/bin/env python3 |
| |
| import os |
| import unittest |
| |
| from framework import VppTestCase, VppTestRunner, running_gcov_tests |
| 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) |