8 from framework import VppTestCase, VppTestRunner, running_extended_tests, \
10 from vpp_ip_route import VppIpTable, VppIpRoute, VppRoutePath, FibPathProto
12 iperf3 = '/usr/bin/iperf3'
17 subprocess.check_output([app, '-v'])
18 except (subprocess.CalledProcessError, OSError):
23 _have_iperf3 = have_app(iperf3)
26 class VCLAppWorker(Worker):
27 """ VCL Test Application Worker """
29 def __init__(self, build_dir, appname, executable_args, logger, env=None,
34 vcl_lib_dir = "%s/vpp/lib" % build_dir
35 if "iperf" in appname:
37 env.update({'LD_PRELOAD':
38 "%s/libvcl_ldpreload.so" % vcl_lib_dir})
39 elif "sock" in appname:
40 app = "%s/vpp/bin/%s" % (build_dir, appname)
41 env.update({'LD_PRELOAD':
42 "%s/libvcl_ldpreload.so" % vcl_lib_dir})
44 app = "%s/vpp/bin/%s" % (build_dir, appname)
45 self.args = [app] + executable_args
46 super(VCLAppWorker, self).__init__(self.args, logger, env,
50 class VCLTestCase(VppTestCase):
51 """ VCL Test Class """
52 extra_vpp_punt_config = ["session", "{", "poll-main", "}"]
56 super(VCLTestCase, cls).setUpClass()
59 def tearDownClass(cls):
60 super(VCLTestCase, cls).tearDownClass()
64 self.build_dir = os.getenv(var, None)
65 if self.build_dir is None:
66 raise EnvironmentError("Environment variable `%s' not set" % var)
67 self.vppDebug = 'vpp_debug' in self.build_dir
68 self.server_addr = "127.0.0.1"
69 self.server_port = "22000"
70 self.server_args = [self.server_port]
71 self.server_ipv6_addr = "::1"
72 self.server_ipv6_args = ["-6", self.server_port]
74 self.echo_phrase = "Hello, world! Jenny is a friend of mine."
75 self.pre_test_sleep = 0.3
76 self.post_test_sleep = 0.2
78 if os.path.isfile("/tmp/ldp_server_af_unix_socket"):
79 os.remove("/tmp/ldp_server_af_unix_socket")
81 super(VCLTestCase, self).setUp()
83 def cut_thru_setup(self):
84 self.vapi.session_enable_disable(is_enable=1)
86 def cut_thru_tear_down(self):
87 self.vapi.session_enable_disable(is_enable=0)
89 def cut_thru_test(self, server_app, server_args, client_app, client_args):
90 self.env = {'VCL_VPP_API_SOCKET': self.api_sock,
91 'VCL_APP_SCOPE_LOCAL': "true"}
92 worker_server = VCLAppWorker(self.build_dir, server_app, server_args,
93 self.logger, self.env)
95 self.sleep(self.pre_test_sleep)
96 worker_client = VCLAppWorker(self.build_dir, client_app, client_args,
97 self.logger, self.env)
99 worker_client.join(self.timeout)
101 self.validateResults(worker_client, worker_server, self.timeout)
102 except Exception as error:
103 self.fail("Failed with %s" % error)
104 self.sleep(self.post_test_sleep)
106 def thru_host_stack_setup(self):
107 self.vapi.session_enable_disable(is_enable=1)
108 self.create_loopback_interfaces(2)
112 for i in self.lo_interfaces:
116 tbl = VppIpTable(self, table_id)
119 i.set_table_ip4(table_id)
123 # Configure namespaces
124 self.vapi.app_namespace_add_del(namespace_id="1", secret=1234,
125 sw_if_index=self.loop0.sw_if_index)
126 self.vapi.app_namespace_add_del(namespace_id="2", secret=5678,
127 sw_if_index=self.loop1.sw_if_index)
129 # Add inter-table routes
130 ip_t01 = VppIpRoute(self, self.loop1.local_ip4, 32,
131 [VppRoutePath("0.0.0.0",
133 nh_table_id=2)], table_id=1)
134 ip_t10 = VppIpRoute(self, self.loop0.local_ip4, 32,
135 [VppRoutePath("0.0.0.0",
137 nh_table_id=1)], table_id=2)
138 ip_t01.add_vpp_config()
139 ip_t10.add_vpp_config()
140 self.logger.debug(self.vapi.cli("show ip fib"))
142 def thru_host_stack_tear_down(self):
143 for i in self.lo_interfaces:
148 def thru_host_stack_ipv6_setup(self):
149 self.vapi.session_enable_disable(is_enable=1)
150 self.create_loopback_interfaces(2)
154 for i in self.lo_interfaces:
157 tbl = VppIpTable(self, table_id, is_ip6=1)
160 i.set_table_ip6(table_id)
164 # Configure namespaces
165 self.vapi.app_namespace_add_del(namespace_id="1", secret=1234,
166 sw_if_index=self.loop0.sw_if_index)
167 self.vapi.app_namespace_add_del(namespace_id="2", secret=5678,
168 sw_if_index=self.loop1.sw_if_index)
170 # Add inter-table routes
171 ip_t01 = VppIpRoute(self, self.loop1.local_ip6, 128,
172 [VppRoutePath("::0", 0xffffffff,
175 ip_t10 = VppIpRoute(self, self.loop0.local_ip6, 128,
176 [VppRoutePath("::0", 0xffffffff,
179 ip_t01.add_vpp_config()
180 ip_t10.add_vpp_config()
181 self.logger.debug(self.vapi.cli("show interface addr"))
182 self.logger.debug(self.vapi.cli("show ip6 fib"))
184 def thru_host_stack_ipv6_tear_down(self):
185 for i in self.lo_interfaces:
190 self.vapi.session_enable_disable(is_enable=0)
192 @unittest.skipUnless(_have_iperf3, "'%s' not found, Skipping.")
193 def thru_host_stack_test(self, server_app, server_args,
194 client_app, client_args):
195 self.env = {'VCL_VPP_API_SOCKET': self.api_sock,
196 'VCL_APP_SCOPE_GLOBAL': "true",
197 'VCL_APP_NAMESPACE_ID': "1",
198 'VCL_APP_NAMESPACE_SECRET': "1234"}
200 worker_server = VCLAppWorker(self.build_dir, server_app, server_args,
201 self.logger, self.env)
202 worker_server.start()
203 self.sleep(self.pre_test_sleep)
205 self.env.update({'VCL_APP_NAMESPACE_ID': "2",
206 'VCL_APP_NAMESPACE_SECRET': "5678"})
207 worker_client = VCLAppWorker(self.build_dir, client_app, client_args,
208 self.logger, self.env)
209 worker_client.start()
210 worker_client.join(self.timeout)
213 self.validateResults(worker_client, worker_server, self.timeout)
214 except Exception as error:
215 self.fail("Failed with %s" % error)
216 self.sleep(self.post_test_sleep)
218 def validateResults(self, worker_client, worker_server, timeout):
219 if worker_server.process is None:
220 raise RuntimeError('worker_server is not running.')
221 if os.path.isdir('/proc/{}'.format(worker_server.process.pid)):
222 self.logger.info("Killing server worker process (pid %d)" %
223 worker_server.process.pid)
224 os.killpg(os.getpgid(worker_server.process.pid), signal.SIGTERM)
226 self.logger.info("Client worker result is `%s'" % worker_client.result)
228 if worker_client.result is None:
232 "Timeout: %ss! Killing client worker process (pid %d)" %
233 (timeout, worker_client.process.pid))
234 os.killpg(os.getpgid(worker_client.process.pid),
239 "Couldn't kill client worker process")
243 "Timeout! Client worker did not finish in %ss" % timeout)
244 self.assert_equal(worker_client.result, 0, "Binary test return code")
247 class LDPCutThruTestCase(VCLTestCase):
248 """ LDP Cut Thru Tests """
252 super(LDPCutThruTestCase, cls).setUpClass()
255 def tearDownClass(cls):
256 super(LDPCutThruTestCase, cls).tearDownClass()
259 super(LDPCutThruTestCase, self).setUp()
261 self.cut_thru_setup()
262 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
263 self.server_addr, self.server_port]
264 self.client_iperf3_timeout = 20
265 self.client_iperf3_args = ["-V4d", "-t 2", "-c", self.server_addr]
266 self.server_iperf3_args = ["-V4d", "-s"]
267 self.client_uni_dir_nsock_timeout = 20
268 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
272 self.client_bi_dir_nsock_timeout = 20
273 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
279 super(LDPCutThruTestCase, self).tearDown()
280 self.cut_thru_tear_down()
282 def show_commands_at_teardown(self):
283 self.logger.debug(self.vapi.cli("show session verbose 2"))
285 @unittest.skipUnless(running_extended_tests, "part of extended tests")
286 def test_ldp_cut_thru_echo(self):
287 """ run LDP cut thru echo test """
289 self.cut_thru_test("sock_test_server", self.server_args,
290 "sock_test_client", self.client_echo_test_args)
292 @unittest.skipUnless(_have_iperf3, "'%s' not found, Skipping.")
293 def test_ldp_cut_thru_iperf3(self):
294 """ run LDP cut thru iperf3 test """
296 self.timeout = self.client_iperf3_timeout
297 self.cut_thru_test(iperf3, self.server_iperf3_args,
298 iperf3, self.client_iperf3_args)
300 @unittest.skipUnless(running_extended_tests, "part of extended tests")
301 def test_ldp_cut_thru_uni_dir_nsock(self):
302 """ run LDP cut thru uni-directional (multiple sockets) test """
304 self.timeout = self.client_uni_dir_nsock_timeout
305 self.cut_thru_test("sock_test_server", self.server_args,
307 self.client_uni_dir_nsock_test_args)
309 @unittest.skipUnless(running_extended_tests, "part of extended tests")
310 @unittest.skip("sock test apps need to be improved")
311 def test_ldp_cut_thru_bi_dir_nsock(self):
312 """ run LDP cut thru bi-directional (multiple sockets) test """
314 self.timeout = self.client_bi_dir_nsock_timeout
315 self.cut_thru_test("sock_test_server", self.server_args,
317 self.client_bi_dir_nsock_test_args)
320 class VCLCutThruTestCase(VCLTestCase):
321 """ VCL Cut Thru Tests """
325 super(VCLCutThruTestCase, cls).setUpClass()
328 def tearDownClass(cls):
329 super(VCLCutThruTestCase, cls).tearDownClass()
332 super(VCLCutThruTestCase, self).setUp()
334 self.cut_thru_setup()
335 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
336 self.server_addr, self.server_port]
338 self.client_uni_dir_nsock_timeout = 20
339 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
343 self.client_bi_dir_nsock_timeout = 20
344 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
350 super(VCLCutThruTestCase, self).tearDown()
352 def show_commands_at_teardown(self):
353 self.logger.debug(self.vapi.cli("show session verbose 2"))
355 def test_vcl_cut_thru_echo(self):
356 """ run VCL cut thru echo test """
358 self.cut_thru_test("vcl_test_server", self.server_args,
359 "vcl_test_client", self.client_echo_test_args)
361 def test_vcl_cut_thru_uni_dir_nsock(self):
362 """ run VCL cut thru uni-directional (multiple sockets) test """
364 self.timeout = self.client_uni_dir_nsock_timeout
365 self.cut_thru_test("vcl_test_server", self.server_args,
367 self.client_uni_dir_nsock_test_args)
369 def test_vcl_cut_thru_bi_dir_nsock(self):
370 """ run VCL cut thru bi-directional (multiple sockets) test """
372 self.timeout = self.client_bi_dir_nsock_timeout
373 self.cut_thru_test("vcl_test_server", self.server_args,
375 self.client_bi_dir_nsock_test_args)
378 class VCLThruHostStackEcho(VCLTestCase):
379 """ VCL Thru Host Stack Echo """
383 super(VCLThruHostStackEcho, cls).setUpClass()
386 def tearDownClass(cls):
387 super(VCLThruHostStackEcho, cls).tearDownClass()
390 super(VCLThruHostStackEcho, self).setUp()
392 self.thru_host_stack_setup()
393 self.client_bi_dir_nsock_timeout = 20
394 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
396 self.loop0.local_ip4,
398 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
399 self.loop0.local_ip4,
403 self.thru_host_stack_tear_down()
404 super(VCLThruHostStackEcho, self).tearDown()
406 def show_commands_at_teardown(self):
407 self.logger.debug(self.vapi.cli("show app server"))
408 self.logger.debug(self.vapi.cli("show session verbose"))
411 class VCLThruHostStackTLS(VCLTestCase):
412 """ VCL Thru Host Stack TLS """
416 super(VCLThruHostStackTLS, cls).setUpClass()
419 def tearDownClass(cls):
420 super(VCLThruHostStackTLS, cls).tearDownClass()
423 super(VCLThruHostStackTLS, self).setUp()
425 self.thru_host_stack_setup()
426 self.client_uni_dir_tls_timeout = 20
427 self.server_tls_args = ["-L", self.server_port]
428 self.client_uni_dir_tls_test_args = ["-N", "1000", "-U", "-X", "-L",
429 self.loop0.local_ip4,
432 def test_vcl_thru_host_stack_tls_uni_dir(self):
433 """ run VCL thru host stack uni-directional TLS test """
435 self.timeout = self.client_uni_dir_tls_timeout
436 self.thru_host_stack_test("vcl_test_server", self.server_tls_args,
438 self.client_uni_dir_tls_test_args)
441 self.thru_host_stack_tear_down()
442 super(VCLThruHostStackTLS, self).tearDown()
444 def show_commands_at_teardown(self):
445 self.logger.debug(self.vapi.cli("show app server"))
446 self.logger.debug(self.vapi.cli("show session verbose 2"))
449 class VCLThruHostStackBidirNsock(VCLTestCase):
450 """ VCL Thru Host Stack Bidir Nsock """
454 super(VCLThruHostStackBidirNsock, cls).setUpClass()
457 def tearDownClass(cls):
458 super(VCLThruHostStackBidirNsock, cls).tearDownClass()
461 super(VCLThruHostStackBidirNsock, self).setUp()
463 self.thru_host_stack_setup()
464 self.client_bi_dir_nsock_timeout = 20
465 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
467 self.loop0.local_ip4,
469 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
470 self.loop0.local_ip4,
474 self.thru_host_stack_tear_down()
475 super(VCLThruHostStackBidirNsock, self).tearDown()
477 def show_commands_at_teardown(self):
478 self.logger.debug(self.vapi.cli("show session verbose 2"))
480 def test_vcl_thru_host_stack_bi_dir_nsock(self):
481 """ run VCL thru host stack bi-directional (multiple sockets) test """
483 self.timeout = self.client_bi_dir_nsock_timeout
484 self.thru_host_stack_test("vcl_test_server", self.server_args,
486 self.client_bi_dir_nsock_test_args)
489 class LDPThruHostStackBidirNsock(VCLTestCase):
490 """ LDP Thru Host Stack Bidir Nsock """
494 super(LDPThruHostStackBidirNsock, cls).setUpClass()
497 def tearDownClass(cls):
498 super(LDPThruHostStackBidirNsock, cls).tearDownClass()
501 super(LDPThruHostStackBidirNsock, self).setUp()
503 self.thru_host_stack_setup()
504 self.client_bi_dir_nsock_timeout = 20
505 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
506 # OUCH! Host Stack Bug?
507 # Only fails when running
508 # 'make test TEST_JOBS=auto'
511 self.loop0.local_ip4,
515 self.thru_host_stack_tear_down()
516 super(LDPThruHostStackBidirNsock, self).tearDown()
518 def show_commands_at_teardown(self):
519 self.logger.debug(self.vapi.cli("show session verbose 2"))
521 def test_ldp_thru_host_stack_bi_dir_nsock(self):
522 """ run LDP thru host stack bi-directional (multiple sockets) test """
524 self.timeout = self.client_bi_dir_nsock_timeout
525 self.thru_host_stack_test("sock_test_server", self.server_args,
527 self.client_bi_dir_nsock_test_args)
530 class LDPThruHostStackNsock(VCLTestCase):
531 """ LDP Thru Host Stack Nsock """
535 super(LDPThruHostStackNsock, cls).setUpClass()
538 def tearDownClass(cls):
539 super(LDPThruHostStackNsock, cls).tearDownClass()
542 super(LDPThruHostStackNsock, self).setUp()
544 self.thru_host_stack_setup()
546 self.client_uni_dir_nsock_timeout = 20
547 self.numSockets = "2"
549 self.client_uni_dir_nsock_timeout = 20
550 self.numSockets = "5"
552 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
553 "-I", self.numSockets,
554 self.loop0.local_ip4,
558 self.thru_host_stack_tear_down()
559 super(LDPThruHostStackNsock, self).tearDown()
561 def test_ldp_thru_host_stack_uni_dir_nsock(self):
562 """ run LDP thru host stack uni-directional (multiple sockets) test """
564 self.timeout = self.client_uni_dir_nsock_timeout
565 self.thru_host_stack_test("sock_test_server", self.server_args,
567 self.client_uni_dir_nsock_test_args)
570 class VCLThruHostStackNsock(VCLTestCase):
571 """ VCL Thru Host Stack Nsock """
575 super(VCLThruHostStackNsock, cls).setUpClass()
578 def tearDownClass(cls):
579 super(VCLThruHostStackNsock, cls).tearDownClass()
582 super(VCLThruHostStackNsock, self).setUp()
584 self.thru_host_stack_setup()
586 self.client_uni_dir_nsock_timeout = 20
587 self.numSockets = "2"
589 self.client_uni_dir_nsock_timeout = 20
590 self.numSockets = "5"
592 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
593 "-I", self.numSockets,
594 self.loop0.local_ip4,
598 self.thru_host_stack_tear_down()
599 super(VCLThruHostStackNsock, self).tearDown()
601 def test_vcl_thru_host_stack_uni_dir_nsock(self):
602 """ run VCL thru host stack uni-directional (multiple sockets) test """
604 self.timeout = self.client_uni_dir_nsock_timeout
605 self.thru_host_stack_test("vcl_test_server", self.server_args,
607 self.client_uni_dir_nsock_test_args)
610 class LDPThruHostStackIperf(VCLTestCase):
611 """ LDP Thru Host Stack Iperf """
615 super(LDPThruHostStackIperf, cls).setUpClass()
618 def tearDownClass(cls):
619 super(LDPThruHostStackIperf, cls).tearDownClass()
622 super(LDPThruHostStackIperf, self).setUp()
624 self.thru_host_stack_setup()
625 self.client_iperf3_timeout = 20
626 self.client_iperf3_args = ["-V4d", "-t 2", "-c", self.loop0.local_ip4]
627 self.server_iperf3_args = ["-V4d", "-s"]
630 self.thru_host_stack_tear_down()
631 super(LDPThruHostStackIperf, self).tearDown()
633 def show_commands_at_teardown(self):
634 self.logger.debug(self.vapi.cli("show session verbose 2"))
636 @unittest.skipUnless(_have_iperf3, "'%s' not found, Skipping.")
637 def test_ldp_thru_host_stack_iperf3(self):
638 """ run LDP thru host stack iperf3 test """
640 self.timeout = self.client_iperf3_timeout
641 self.thru_host_stack_test(iperf3, self.server_iperf3_args,
642 iperf3, self.client_iperf3_args)
645 class LDPThruHostStackIperfUdp(VCLTestCase):
646 """ LDP Thru Host Stack Iperf UDP """
650 super(LDPThruHostStackIperfUdp, cls).setUpClass()
653 def tearDownClass(cls):
654 super(LDPThruHostStackIperfUdp, cls).tearDownClass()
657 super(LDPThruHostStackIperfUdp, self).setUp()
659 self.thru_host_stack_setup()
660 self.client_iperf3_timeout = 20
661 self.client_iperf3_args = ["-V4d", "-t 2", "-u", "-l 1400",
662 "-c", self.loop0.local_ip4]
663 self.server_iperf3_args = ["-V4d", "-s"]
666 self.thru_host_stack_tear_down()
667 super(LDPThruHostStackIperfUdp, self).tearDown()
669 def show_commands_at_teardown(self):
670 self.logger.debug(self.vapi.cli("show session verbose 2"))
672 @unittest.skipUnless(_have_iperf3, "'%s' not found, Skipping.")
673 def test_ldp_thru_host_stack_iperf3_udp(self):
674 """ run LDP thru host stack iperf3 UDP test """
676 self.timeout = self.client_iperf3_timeout
677 self.thru_host_stack_test(iperf3, self.server_iperf3_args,
678 iperf3, self.client_iperf3_args)
681 class LDPIpv6CutThruTestCase(VCLTestCase):
682 """ LDP IPv6 Cut Thru Tests """
686 super(LDPIpv6CutThruTestCase, cls).setUpClass()
689 def tearDownClass(cls):
690 super(LDPIpv6CutThruTestCase, cls).tearDownClass()
693 super(LDPIpv6CutThruTestCase, self).setUp()
695 self.cut_thru_setup()
696 self.client_iperf3_timeout = 20
697 self.client_uni_dir_nsock_timeout = 20
698 self.client_bi_dir_nsock_timeout = 20
699 self.client_ipv6_echo_test_args = ["-6", "-E", self.echo_phrase, "-X",
700 self.server_ipv6_addr,
702 self.client_ipv6_iperf3_args = ["-V6d", "-t 2", "-c",
703 self.server_ipv6_addr]
704 self.server_ipv6_iperf3_args = ["-V6d", "-s"]
705 self.client_ipv6_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
708 self.server_ipv6_addr,
710 self.client_ipv6_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
713 self.server_ipv6_addr,
717 super(LDPIpv6CutThruTestCase, self).tearDown()
718 self.cut_thru_tear_down()
720 def test_ldp_ipv6_cut_thru_echo(self):
721 """ run LDP IPv6 cut thru echo test """
723 self.cut_thru_test("sock_test_server",
724 self.server_ipv6_args,
726 self.client_ipv6_echo_test_args)
728 @unittest.skipUnless(_have_iperf3, "'%s' not found, Skipping.")
729 @unittest.skipUnless(running_extended_tests, "part of extended tests")
730 def test_ldp_ipv6_cut_thru_iperf3(self):
731 """ run LDP IPv6 cut thru iperf3 test """
733 self.timeout = self.client_iperf3_timeout
734 self.cut_thru_test(iperf3, self.server_ipv6_iperf3_args,
735 iperf3, self.client_ipv6_iperf3_args)
737 @unittest.skipUnless(running_extended_tests, "part of extended tests")
738 def test_ldp_ipv6_cut_thru_uni_dir_nsock(self):
739 """ run LDP IPv6 cut thru uni-directional (multiple sockets) test """
741 self.timeout = self.client_uni_dir_nsock_timeout
742 self.cut_thru_test("sock_test_server", self.server_ipv6_args,
744 self.client_ipv6_uni_dir_nsock_test_args)
746 @unittest.skipUnless(running_extended_tests, "part of extended tests")
747 @unittest.skip("sock test apps need to be improved")
748 def test_ldp_ipv6_cut_thru_bi_dir_nsock(self):
749 """ run LDP IPv6 cut thru bi-directional (multiple sockets) test """
751 self.timeout = self.client_bi_dir_nsock_timeout
752 self.cut_thru_test("sock_test_server", self.server_ipv6_args,
754 self.client_ipv6_bi_dir_nsock_test_args)
757 class VCLIpv6CutThruTestCase(VCLTestCase):
758 """ VCL IPv6 Cut Thru Tests """
762 super(VCLIpv6CutThruTestCase, cls).setUpClass()
765 def tearDownClass(cls):
766 super(VCLIpv6CutThruTestCase, cls).tearDownClass()
769 super(VCLIpv6CutThruTestCase, self).setUp()
771 self.cut_thru_setup()
772 self.client_uni_dir_nsock_timeout = 20
773 self.client_bi_dir_nsock_timeout = 20
774 self.client_ipv6_echo_test_args = ["-6", "-E", self.echo_phrase, "-X",
775 self.server_ipv6_addr,
777 self.client_ipv6_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
780 self.server_ipv6_addr,
782 self.client_ipv6_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
785 self.server_ipv6_addr,
789 super(VCLIpv6CutThruTestCase, self).tearDown()
790 self.cut_thru_tear_down()
792 def test_vcl_ipv6_cut_thru_echo(self):
793 """ run VCL IPv6 cut thru echo test """
795 self.cut_thru_test("vcl_test_server",
796 self.server_ipv6_args,
798 self.client_ipv6_echo_test_args)
800 @unittest.skipUnless(running_extended_tests, "part of extended tests")
801 def test_vcl_ipv6_cut_thru_uni_dir_nsock(self):
802 """ run VCL IPv6 cut thru uni-directional (multiple sockets) test """
804 self.timeout = self.client_uni_dir_nsock_timeout
805 self.cut_thru_test("vcl_test_server", self.server_ipv6_args,
807 self.client_ipv6_uni_dir_nsock_test_args)
809 @unittest.skipUnless(running_extended_tests, "part of extended tests")
810 def test_vcl_ipv6_cut_thru_bi_dir_nsock(self):
811 """ run VCL IPv6 cut thru bi-directional (multiple sockets) test """
813 self.timeout = self.client_bi_dir_nsock_timeout
814 self.cut_thru_test("vcl_test_server", self.server_ipv6_args,
816 self.client_ipv6_bi_dir_nsock_test_args)
819 class VCLIpv6ThruHostStackEcho(VCLTestCase):
820 """ VCL IPv6 Thru Host Stack Echo """
824 super(VCLIpv6ThruHostStackEcho, cls).setUpClass()
827 def tearDownClass(cls):
828 super(VCLIpv6ThruHostStackEcho, cls).tearDownClass()
831 super(VCLIpv6ThruHostStackEcho, self).setUp()
833 self.thru_host_stack_ipv6_setup()
834 self.client_ipv6_echo_test_args = ["-6", "-E", self.echo_phrase, "-X",
835 self.loop0.local_ip6,
839 self.thru_host_stack_ipv6_tear_down()
840 super(VCLIpv6ThruHostStackEcho, self).tearDown()
842 def test_vcl_ipv6_thru_host_stack_echo(self):
843 """ run VCL IPv6 thru host stack echo test """
845 self.thru_host_stack_test("vcl_test_server",
846 self.server_ipv6_args,
848 self.client_ipv6_echo_test_args)
851 if __name__ == '__main__':
852 unittest.main(testRunner=VppTestRunner)