7 from framework import VppTestCase, VppTestRunner, running_extended_tests
8 from framework import running_gcov_tests
9 from vpp_ip_route import VppIpTable, VppIpRoute, VppRoutePath
12 class TestVlib(VppTestCase):
13 """ Vlib Unit Test Cases """
18 super(TestVlib, cls).setUpClass()
21 def tearDownClass(cls):
22 super(TestVlib, cls).tearDownClass()
25 super(TestVlib, self).setUp()
28 super(TestVlib, self).tearDown()
30 @unittest.skipUnless(running_gcov_tests, "part of code coverage tests")
31 def test_vlib_main_unittest(self):
32 """ Vlib main.c Code Coverage Test """
34 cmds = ["loopback create",
35 "packet-generator new {\n"
40 " node ethernet-input\n"
42 " IP6: 00:d0:2d:5e:86:85 -> 00:0d:ea:d0:00:00\n"
43 " ICMP: db00::1 -> db00::2\n"
47 "event-logger trace dispatch",
50 "event-logger resize 102400",
51 "event-logger restart",
52 "pcap dispatch trace on max 100 buffer-trace pg-input 15",
54 "show event-log 100 all",
57 "pcap dispatch trace",
58 "pcap dispatch trace status",
59 "pcap dispatch trace off",
60 "show vlib frame-allocation",
64 r = self.vapi.cli_return_response(cmd)
66 if hasattr(r, 'reply'):
67 self.logger.info(cmd + " FAIL reply " + r.reply)
69 self.logger.info(cmd + " FAIL retval " + str(r.retval))
71 @unittest.skipUnless(running_gcov_tests, "part of code coverage tests")
72 def test_vlib_node_cli_unittest(self):
73 """ Vlib node_cli.c Code Coverage Test """
75 cmds = ["loopback create",
76 "packet-generator new {\n"
81 " node ethernet-input\n"
83 " IP6: 00:d0:2d:5e:86:85 -> 00:0d:ea:d0:00:00\n"
84 " ICMP: db00::1 -> db00::2\n"
89 "show vlib graph ethernet-input",
91 "show vlib graphviz graphviz.dot",
93 "show runtime ethernet-input",
94 "show runtime brief verbose max summary",
97 "show node ethernet-input",
100 "set node function no-such-node",
101 "set node function cdp-input default",
102 "set node function ethernet-input default",
103 "set node function ethernet-input bozo",
104 "set node function ethernet-input",
109 r = self.vapi.cli_return_response(cmd)
111 if hasattr(r, 'reply'):
112 self.logger.info(cmd + " FAIL reply " + r.reply)
114 self.logger.info(cmd + " FAIL retval " + str(r.retval))
116 @unittest.skipUnless(running_gcov_tests, "part of code coverage tests")
117 def test_vlib_buffer_c_unittest(self):
118 """ Vlib buffer.c Code Coverage Test """
120 cmds = ["loopback create",
121 "packet-generator new {\n"
126 " node ethernet-input\n"
128 " IP6: 00:d0:2d:5e:86:85 -> 00:0d:ea:d0:00:00\n"
129 " ICMP: db00::1 -> db00::2\n"
133 "event-logger trace",
134 "event-logger trace enable",
135 "event-logger trace api cli barrier",
137 "show interface bogus",
138 "event-logger trace disable api cli barrier",
139 "event-logger trace circuit-node ethernet-input",
140 "event-logger trace circuit-node ethernet-input disable",
144 "show memory api-segment stats-segment main-heap verbose",
145 "leak-check { show memory }",
147 "memory-trace main-heap",
148 "memory-trace main-heap api-segment stats-segment",
149 "leak-check { show version }",
151 "comment { show version }",
152 "uncomment { show version }",
153 "show memory main-heap",
156 "test heap-validate",
157 "memory-trace main-heap disable",
165 r = self.vapi.cli_return_response(cmd)
167 if hasattr(r, 'reply'):
168 self.logger.info(cmd + " FAIL reply " + r.reply)
170 self.logger.info(cmd + " FAIL retval " + str(r.retval))
172 @unittest.skipUnless(running_gcov_tests, "part of code coverage tests")
173 def test_vlib_format_unittest(self):
174 """ Vlib format.c Code Coverage Test """
176 cmds = ["loopback create",
177 "classify filter pcap mask l2 proto match l2 proto 0x86dd",
178 "classify filter pcap del",
183 r = self.vapi.cli_return_response(cmd)
185 if hasattr(r, 'reply'):
186 self.logger.info(cmd + " FAIL reply " + r.reply)
188 self.logger.info(cmd + " FAIL retval " + str(r.retval))
190 @unittest.skipUnless(running_gcov_tests, "part of code coverage tests")
191 def test_vlib_main_unittest(self):
192 """ Private Binary API Segment Test (takes 70 seconds) """
194 vat_path = self.vpp_bin + '_api_test'
195 vat = pexpect.spawn(vat_path, ['socket-name',
196 self.get_api_sock_path()])
197 vat.expect("vat# ", timeout=10)
198 vat.sendline('sock_init_shm')
199 vat.expect("vat# ", timeout=10)
200 vat.sendline('sh api cli')
201 vat.kill(signal.SIGKILL)
203 self.logger.info("vat terminated, 70 second wait for the Reaper")
205 self.logger.info("Reaper should be complete...")
208 if __name__ == '__main__':
209 unittest.main(testRunner=VppTestRunner)