classify: vpp packet tracer support
[vpp.git] / test / test_trace_filter.py
1 #!/usr/bin/env python3
2
3 import unittest
4
5 from framework import VppTestCase, VppTestRunner, running_extended_tests
6 from vpp_ip_route import VppIpTable, VppIpRoute, VppRoutePath
7
8
9 class TestTracefilter(VppTestCase):
10     """ Packet Tracer Filter Test """
11
12     @classmethod
13     def setUpClass(cls):
14         super(TestTracefilter, cls).setUpClass()
15
16     @classmethod
17     def tearDownClass(cls):
18         super(TestTracefilter, cls).tearDownClass()
19
20     def setUp(self):
21         super(TestTracefilter, self).setUp()
22
23     def tearDown(self):
24         super(TestTracefilter, self).tearDown()
25
26     def test_mactime_unitTest(self):
27         """ Packet Tracer Filter Test """
28         cmds = ["loopback create",
29                 "set int ip address loop0 192.168.1.1/24",
30                 "set int state loop0 up",
31                 "packet-generator new {\n"
32                 " name classifyme\n"
33                 " limit 100\n"
34                 " size 300-300\n"
35                 " interface loop0\n"
36                 " node ethernet-input\n"
37                 " data { \n"
38                 "      IP4: 1.2.3 -> 4.5.6\n"
39                 "      UDP: 192.168.1.10 - 192.168.1.20 -> 192.168.2.10\n"
40                 "      UDP: 1234 -> 2345\n"
41                 "      incrementing 286\n"
42                 "     }\n"
43                 "}\n",
44                 "classify filter trace mask l3 ip4 src\n"
45                 " match l3 ip4 src 192.168.1.15",
46                 "trace add pg-input 100 filter",
47                 "pa en"]
48
49         for cmd in cmds:
50             r = self.vapi.cli_return_response(cmd)
51             if r.retval != 0:
52                 if hasattr(r, 'reply'):
53                     self.logger.info(cmd + " FAIL reply " + r.reply)
54                 else:
55                     self.logger.info(cmd + " FAIL retval " + str(r.retval))
56
57         # Check for 9 classifier hits, which is the right answer
58         r = self.vapi.cli_return_response("show classify table verbose 2")
59         self.assertTrue(r.retval == 0)
60         self.assertTrue(hasattr(r, 'reply'))
61         self.assertTrue(r.reply.find("hits 9") != -1)
62
63 if __name__ == '__main__':
64     unittest.main(testRunner=VppTestRunner)