8 from framework import VppTestCase, VppTestRunner, running_extended_tests, \
10 from vpp_ip_route import VppIpTable, VppIpRoute, VppRoutePath, DpoProto
13 class VCLAppWorker(Worker):
14 """ VCL Test Application Worker """
16 def __init__(self, build_dir, appname, args, logger, env={}):
17 vcl_lib_dir = "%s/vpp/lib" % build_dir
18 if "iperf" in appname:
20 env.update({'LD_PRELOAD':
21 "%s/libvcl_ldpreload.so" % vcl_lib_dir})
22 elif "sock" in appname:
23 app = "%s/vpp/bin/%s" % (build_dir, appname)
24 env.update({'LD_PRELOAD':
25 "%s/libvcl_ldpreload.so" % vcl_lib_dir})
27 app = "%s/vpp/bin/%s" % (build_dir, appname)
28 self.args = [app] + args
29 super(VCLAppWorker, self).__init__(self.args, logger, env)
32 class VCLTestCase(VppTestCase):
33 """ VCL Test Class """
37 super(VCLTestCase, cls).setUpClass()
40 def tearDownClass(cls):
41 super(VCLTestCase, cls).tearDownClass()
45 self.build_dir = os.getenv(var, None)
46 if self.build_dir is None:
47 raise Exception("Environment variable `%s' not set" % var)
48 self.vppDebug = 'vpp_debug' in self.build_dir
49 self.server_addr = "127.0.0.1"
50 self.server_port = "22000"
51 self.server_args = [self.server_port]
52 self.server_ipv6_addr = "::1"
53 self.server_ipv6_args = ["-6", self.server_port]
55 self.echo_phrase = "Hello, world! Jenny is a friend of mine."
56 self.pre_test_sleep = 0.3
57 self.post_test_sleep = 0.2
59 if os.path.isfile("/tmp/ldp_server_af_unix_socket"):
60 os.remove("/tmp/ldp_server_af_unix_socket")
62 super(VCLTestCase, self).setUp()
64 def cut_thru_setup(self):
65 self.vapi.session_enable_disable(is_enabled=1)
67 def cut_thru_tear_down(self):
68 self.vapi.session_enable_disable(is_enabled=0)
70 def cut_thru_test(self, server_app, server_args, client_app, client_args):
71 self.env = {'VCL_API_PREFIX': self.shm_prefix,
72 'VCL_APP_SCOPE_LOCAL': "true"}
74 worker_server = VCLAppWorker(self.build_dir, server_app, server_args,
75 self.logger, self.env)
77 self.sleep(self.pre_test_sleep)
78 worker_client = VCLAppWorker(self.build_dir, client_app, client_args,
79 self.logger, self.env)
81 worker_client.join(self.timeout)
83 self.validateResults(worker_client, worker_server, self.timeout)
84 except Exception as error:
85 self.fail("Failed with %s" % error)
86 self.sleep(self.post_test_sleep)
88 def thru_host_stack_setup(self):
89 self.vapi.session_enable_disable(is_enabled=1)
90 self.create_loopback_interfaces(2)
94 for i in self.lo_interfaces:
98 tbl = VppIpTable(self, table_id)
101 i.set_table_ip4(table_id)
105 # Configure namespaces
106 self.vapi.app_namespace_add_del(namespace_id=b"1", secret=1234,
107 sw_if_index=self.loop0.sw_if_index)
108 self.vapi.app_namespace_add_del(namespace_id=b"2", secret=5678,
109 sw_if_index=self.loop1.sw_if_index)
111 # Add inter-table routes
112 ip_t01 = VppIpRoute(self, self.loop1.local_ip4, 32,
113 [VppRoutePath("0.0.0.0",
115 nh_table_id=2)], table_id=1)
116 ip_t10 = VppIpRoute(self, self.loop0.local_ip4, 32,
117 [VppRoutePath("0.0.0.0",
119 nh_table_id=1)], table_id=2)
120 ip_t01.add_vpp_config()
121 ip_t10.add_vpp_config()
122 self.logger.debug(self.vapi.cli("show ip fib"))
124 def thru_host_stack_tear_down(self):
125 for i in self.lo_interfaces:
130 def thru_host_stack_ipv6_setup(self):
131 self.vapi.session_enable_disable(is_enabled=1)
132 self.create_loopback_interfaces(2)
136 for i in self.lo_interfaces:
139 tbl = VppIpTable(self, table_id, is_ip6=1)
142 i.set_table_ip6(table_id)
146 # Configure namespaces
147 self.vapi.app_namespace_add_del(namespace_id=b"1", secret=1234,
148 sw_if_index=self.loop0.sw_if_index)
149 self.vapi.app_namespace_add_del(namespace_id=b"2", secret=5678,
150 sw_if_index=self.loop1.sw_if_index)
152 # Add inter-table routes
153 ip_t01 = VppIpRoute(self, self.loop1.local_ip6, 128,
154 [VppRoutePath("::0", 0xffffffff,
156 proto=DpoProto.DPO_PROTO_IP6)],
157 table_id=1, is_ip6=1)
158 ip_t10 = VppIpRoute(self, self.loop0.local_ip6, 128,
159 [VppRoutePath("::0", 0xffffffff,
161 proto=DpoProto.DPO_PROTO_IP6)],
162 table_id=2, is_ip6=1)
163 ip_t01.add_vpp_config()
164 ip_t10.add_vpp_config()
165 self.logger.debug(self.vapi.cli("show interface addr"))
166 self.logger.debug(self.vapi.cli("show ip6 fib"))
168 def thru_host_stack_ipv6_tear_down(self):
169 for i in self.lo_interfaces:
174 self.vapi.session_enable_disable(is_enabled=0)
176 def thru_host_stack_test(self, server_app, server_args,
177 client_app, client_args):
178 self.env = {'VCL_API_PREFIX': self.shm_prefix,
179 'VCL_APP_SCOPE_GLOBAL': "true",
180 'VCL_APP_NAMESPACE_ID': "1",
181 'VCL_APP_NAMESPACE_SECRET': "1234"}
183 worker_server = VCLAppWorker(self.build_dir, server_app, server_args,
184 self.logger, self.env)
185 worker_server.start()
186 self.sleep(self.pre_test_sleep)
188 self.env.update({'VCL_APP_NAMESPACE_ID': "2",
189 'VCL_APP_NAMESPACE_SECRET': "5678"})
190 worker_client = VCLAppWorker(self.build_dir, client_app, client_args,
191 self.logger, self.env)
192 worker_client.start()
193 worker_client.join(self.timeout)
196 self.validateResults(worker_client, worker_server, self.timeout)
197 except Exception as error:
198 self.fail("Failed with %s" % error)
199 self.sleep(self.post_test_sleep)
201 def validateResults(self, worker_client, worker_server, timeout):
202 if os.path.isdir('/proc/{}'.format(worker_server.process.pid)):
203 self.logger.info("Killing server worker process (pid %d)" %
204 worker_server.process.pid)
205 os.killpg(os.getpgid(worker_server.process.pid), signal.SIGTERM)
207 self.logger.info("Client worker result is `%s'" % worker_client.result)
209 if worker_client.result is None:
213 "Timeout: %ss! Killing client worker process (pid %d)" %
214 (timeout, worker_client.process.pid))
215 os.killpg(os.getpgid(worker_client.process.pid),
220 "Couldn't kill client worker process")
224 "Timeout! Client worker did not finish in %ss" % timeout)
225 self.assert_equal(worker_client.result, 0, "Binary test return code")
228 class LDPCutThruTestCase(VCLTestCase):
229 """ LDP Cut Thru Tests """
233 super(LDPCutThruTestCase, cls).setUpClass()
236 def tearDownClass(cls):
237 super(LDPCutThruTestCase, cls).tearDownClass()
240 super(LDPCutThruTestCase, self).setUp()
242 self.cut_thru_setup()
243 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
244 self.server_addr, self.server_port]
245 self.client_iperf3_timeout = 20
246 self.client_iperf3_args = ["-V4d", "-t 2", "-c", self.server_addr]
247 self.server_iperf3_args = ["-V4d", "-s"]
248 self.client_uni_dir_nsock_timeout = 20
249 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
253 self.client_bi_dir_nsock_timeout = 20
254 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
260 super(LDPCutThruTestCase, self).tearDown()
261 self.cut_thru_tear_down()
263 def show_commands_at_teardown(self):
264 self.logger.debug(self.vapi.cli("show session verbose 2"))
266 @unittest.skipUnless(running_extended_tests, "part of extended tests")
267 def test_ldp_cut_thru_echo(self):
268 """ run LDP cut thru echo test """
270 self.cut_thru_test("sock_test_server", self.server_args,
271 "sock_test_client", self.client_echo_test_args)
273 def test_ldp_cut_thru_iperf3(self):
274 """ run LDP cut thru iperf3 test """
277 subprocess.check_output(['iperf3', '-v'])
278 except subprocess.CalledProcessError:
280 "WARNING: Subprocess returned non-0 running 'iperf3 -v")
281 self.logger.error(" 'test_ldp_cut_thru_iperf3' not run!")
285 "WARNING: Subprocess returned with OS error (%s) %s\n"
286 " 'iperf3' is likely not installed,",
288 self.logger.error(" 'test_ldp_cut_thru_iperf3' not run!")
291 self.logger.exception(
292 "Subprocess returned non-0 running 'iperf3 -v")
294 self.timeout = self.client_iperf3_timeout
295 self.cut_thru_test("iperf3", self.server_iperf3_args,
296 "iperf3", self.client_iperf3_args)
298 @unittest.skipUnless(running_extended_tests, "part of extended tests")
299 def test_ldp_cut_thru_uni_dir_nsock(self):
300 """ run LDP cut thru uni-directional (multiple sockets) test """
302 self.timeout = self.client_uni_dir_nsock_timeout
303 self.cut_thru_test("sock_test_server", self.server_args,
305 self.client_uni_dir_nsock_test_args)
307 @unittest.skipUnless(running_extended_tests, "part of extended tests")
308 def test_ldp_cut_thru_bi_dir_nsock(self):
309 """ run LDP cut thru bi-directional (multiple sockets) test """
311 self.timeout = self.client_bi_dir_nsock_timeout
312 self.cut_thru_test("sock_test_server", self.server_args,
314 self.client_bi_dir_nsock_test_args)
317 class VCLCutThruTestCase(VCLTestCase):
318 """ VCL Cut Thru Tests """
322 super(VCLCutThruTestCase, cls).setUpClass()
325 def tearDownClass(cls):
326 super(VCLCutThruTestCase, cls).tearDownClass()
329 super(VCLCutThruTestCase, self).setUp()
331 self.cut_thru_setup()
332 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
333 self.server_addr, self.server_port]
335 self.client_uni_dir_nsock_timeout = 20
336 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
340 self.client_bi_dir_nsock_timeout = 20
341 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
347 super(VCLCutThruTestCase, self).tearDown()
349 def show_commands_at_teardown(self):
350 self.logger.debug(self.vapi.cli("show session verbose 2"))
352 def test_vcl_cut_thru_echo(self):
353 """ run VCL cut thru echo test """
355 self.cut_thru_test("vcl_test_server", self.server_args,
356 "vcl_test_client", self.client_echo_test_args)
358 def test_vcl_cut_thru_uni_dir_nsock(self):
359 """ run VCL cut thru uni-directional (multiple sockets) test """
361 self.timeout = self.client_uni_dir_nsock_timeout
362 self.cut_thru_test("vcl_test_server", self.server_args,
364 self.client_uni_dir_nsock_test_args)
366 def test_vcl_cut_thru_bi_dir_nsock(self):
367 """ run VCL cut thru bi-directional (multiple sockets) test """
369 self.timeout = self.client_bi_dir_nsock_timeout
370 self.cut_thru_test("vcl_test_server", self.server_args,
372 self.client_bi_dir_nsock_test_args)
375 class VCLThruHostStackEcho(VCLTestCase):
376 """ VCL Thru Host Stack Echo """
380 super(VCLThruHostStackEcho, cls).setUpClass()
383 def tearDownClass(cls):
384 super(VCLThruHostStackEcho, cls).tearDownClass()
387 super(VCLThruHostStackEcho, self).setUp()
389 self.thru_host_stack_setup()
390 self.client_bi_dir_nsock_timeout = 20
391 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
393 self.loop0.local_ip4,
395 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
396 self.loop0.local_ip4,
400 self.thru_host_stack_tear_down()
401 super(VCLThruHostStackEcho, self).tearDown()
403 def show_commands_at_teardown(self):
404 self.logger.debug(self.vapi.cli("show app server"))
405 self.logger.debug(self.vapi.cli("show session verbose"))
408 class VCLThruHostStackTLS(VCLTestCase):
409 """ VCL Thru Host Stack TLS """
413 super(VCLThruHostStackTLS, cls).setUpClass()
416 def tearDownClass(cls):
417 super(VCLThruHostStackTLS, cls).tearDownClass()
420 super(VCLThruHostStackTLS, self).setUp()
422 self.thru_host_stack_setup()
423 self.client_uni_dir_tls_timeout = 20
424 self.server_tls_args = ["-L", self.server_port]
425 self.client_uni_dir_tls_test_args = ["-N", "1000", "-U", "-X", "-L",
426 self.loop0.local_ip4,
429 def test_vcl_thru_host_stack_tls_uni_dir(self):
430 """ run VCL thru host stack uni-directional TLS test """
432 self.timeout = self.client_uni_dir_tls_timeout
433 self.thru_host_stack_test("vcl_test_server", self.server_tls_args,
435 self.client_uni_dir_tls_test_args)
438 self.thru_host_stack_tear_down()
439 super(VCLThruHostStackTLS, self).tearDown()
441 def show_commands_at_teardown(self):
442 self.logger.debug(self.vapi.cli("show app server"))
443 self.logger.debug(self.vapi.cli("show session verbose 2"))
446 class VCLThruHostStackBidirNsock(VCLTestCase):
447 """ VCL Thru Host Stack Bidir Nsock """
451 super(VCLThruHostStackBidirNsock, cls).setUpClass()
454 def tearDownClass(cls):
455 super(VCLThruHostStackBidirNsock, cls).tearDownClass()
458 super(VCLThruHostStackBidirNsock, self).setUp()
460 self.thru_host_stack_setup()
461 self.client_bi_dir_nsock_timeout = 20
462 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
464 self.loop0.local_ip4,
466 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
467 self.loop0.local_ip4,
471 self.thru_host_stack_tear_down()
472 super(VCLThruHostStackBidirNsock, self).tearDown()
474 def show_commands_at_teardown(self):
475 self.logger.debug(self.vapi.cli("show session verbose 2"))
477 def test_vcl_thru_host_stack_bi_dir_nsock(self):
478 """ run VCL thru host stack bi-directional (multiple sockets) test """
480 self.timeout = self.client_bi_dir_nsock_timeout
481 self.thru_host_stack_test("vcl_test_server", self.server_args,
483 self.client_bi_dir_nsock_test_args)
486 class LDPThruHostStackBidirNsock(VCLTestCase):
487 """ LDP Thru Host Stack Bidir Nsock """
491 super(LDPThruHostStackBidirNsock, cls).setUpClass()
494 def tearDownClass(cls):
495 super(LDPThruHostStackBidirNsock, cls).tearDownClass()
498 super(LDPThruHostStackBidirNsock, self).setUp()
500 self.thru_host_stack_setup()
502 self.client_bi_dir_nsock_timeout = 20
503 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
504 # OUCH! Host Stack Bug?
506 self.loop0.local_ip4,
509 self.client_bi_dir_nsock_timeout = 20
510 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
511 # OUCH! Host Stack Bug?
513 self.loop0.local_ip4,
517 self.thru_host_stack_tear_down()
518 super(LDPThruHostStackBidirNsock, self).tearDown()
520 def show_commands_at_teardown(self):
521 self.logger.debug(self.vapi.cli("show session verbose 2"))
523 def test_ldp_thru_host_stack_bi_dir_nsock(self):
524 """ run LDP thru host stack bi-directional (multiple sockets) test """
526 self.timeout = self.client_bi_dir_nsock_timeout
527 self.thru_host_stack_test("sock_test_server", self.server_args,
529 self.client_bi_dir_nsock_test_args)
532 class LDPThruHostStackNsock(VCLTestCase):
533 """ LDP Thru Host Stack Nsock """
537 super(LDPThruHostStackNsock, cls).setUpClass()
540 def tearDownClass(cls):
541 super(LDPThruHostStackNsock, cls).tearDownClass()
544 super(LDPThruHostStackNsock, self).setUp()
546 self.thru_host_stack_setup()
548 self.client_uni_dir_nsock_timeout = 20
549 self.numSockets = "2"
551 self.client_uni_dir_nsock_timeout = 20
552 self.numSockets = "5"
554 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
555 "-I", self.numSockets,
556 self.loop0.local_ip4,
560 self.thru_host_stack_tear_down()
561 super(LDPThruHostStackNsock, self).tearDown()
563 def test_ldp_thru_host_stack_uni_dir_nsock(self):
564 """ run LDP thru host stack uni-directional (multiple sockets) test """
566 self.timeout = self.client_uni_dir_nsock_timeout
567 self.thru_host_stack_test("sock_test_server", self.server_args,
569 self.client_uni_dir_nsock_test_args)
572 class VCLThruHostStackNsock(VCLTestCase):
573 """ VCL Thru Host Stack Nsock """
577 super(VCLThruHostStackNsock, cls).setUpClass()
580 def tearDownClass(cls):
581 super(VCLThruHostStackNsock, cls).tearDownClass()
584 super(VCLThruHostStackNsock, self).setUp()
586 self.thru_host_stack_setup()
588 self.client_uni_dir_nsock_timeout = 20
589 self.numSockets = "2"
591 self.client_uni_dir_nsock_timeout = 20
592 self.numSockets = "5"
594 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
595 "-I", self.numSockets,
596 self.loop0.local_ip4,
600 self.thru_host_stack_tear_down()
601 super(VCLThruHostStackNsock, self).tearDown()
603 def test_vcl_thru_host_stack_uni_dir_nsock(self):
604 """ run VCL thru host stack uni-directional (multiple sockets) test """
606 self.timeout = self.client_uni_dir_nsock_timeout
607 self.thru_host_stack_test("vcl_test_server", self.server_args,
609 self.client_uni_dir_nsock_test_args)
612 class LDPThruHostStackIperf(VCLTestCase):
613 """ LDP Thru Host Stack Iperf """
617 super(LDPThruHostStackIperf, cls).setUpClass()
620 def tearDownClass(cls):
621 super(LDPThruHostStackIperf, cls).tearDownClass()
624 super(LDPThruHostStackIperf, self).setUp()
626 self.thru_host_stack_setup()
627 self.client_iperf3_timeout = 20
628 self.client_iperf3_args = ["-V4d", "-t 2", "-c", self.loop0.local_ip4]
629 self.server_iperf3_args = ["-V4d", "-s"]
632 self.thru_host_stack_tear_down()
633 super(LDPThruHostStackIperf, self).tearDown()
635 def show_commands_at_teardown(self):
636 self.logger.debug(self.vapi.cli("show session verbose 2"))
638 def test_ldp_thru_host_stack_iperf3(self):
639 """ run LDP thru host stack iperf3 test """
642 subprocess.check_output(['iperf3', '-v'])
643 except subprocess.CalledProcessError:
644 self.logger.error("WARNING: 'iperf3' is not installed,")
646 " 'test_ldp_thru_host_stack_iperf3' not run!")
649 self.logger.error("WARNING: 'iperf3' is not installed,")
650 self.logger.error(" 'test' not run!")
652 except Exception as e:
653 self.logger.error("WARNING: 'iperf3' unexpected error,")
654 self.logger.error(" 'test' not run!")
657 self.timeout = self.client_iperf3_timeout
658 self.thru_host_stack_test("iperf3", self.server_iperf3_args,
659 "iperf3", self.client_iperf3_args)
662 class LDPIpv6CutThruTestCase(VCLTestCase):
663 """ LDP IPv6 Cut Thru Tests """
667 super(LDPIpv6CutThruTestCase, cls).setUpClass()
670 def tearDownClass(cls):
671 super(LDPIpv6CutThruTestCase, cls).tearDownClass()
674 super(LDPIpv6CutThruTestCase, self).setUp()
676 self.cut_thru_setup()
677 self.client_iperf3_timeout = 20
678 self.client_uni_dir_nsock_timeout = 20
679 self.client_bi_dir_nsock_timeout = 20
680 self.client_ipv6_echo_test_args = ["-6", "-E", self.echo_phrase, "-X",
681 self.server_ipv6_addr,
683 self.client_ipv6_iperf3_args = ["-V6d", "-t 2", "-c",
684 self.server_ipv6_addr]
685 self.server_ipv6_iperf3_args = ["-V6d", "-s"]
686 self.client_ipv6_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
689 self.server_ipv6_addr,
691 self.client_ipv6_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
694 self.server_ipv6_addr,
698 super(LDPIpv6CutThruTestCase, self).tearDown()
699 self.cut_thru_tear_down()
701 def test_ldp_ipv6_cut_thru_echo(self):
702 """ run LDP IPv6 cut thru echo test """
704 self.cut_thru_test("sock_test_server",
705 self.server_ipv6_args,
707 self.client_ipv6_echo_test_args)
709 @unittest.skipUnless(running_extended_tests, "part of extended tests")
710 def test_ldp_ipv6_cut_thru_iperf3(self):
711 """ run LDP IPv6 cut thru iperf3 test """
714 subprocess.check_output(['iperf3', '-v'])
716 self.logger.error("WARNING: 'iperf3' is not installed,")
718 " 'test_ldp_ipv6_cut_thru_iperf3' not run!")
721 self.timeout = self.client_iperf3_timeout
722 self.cut_thru_test("iperf3", self.server_ipv6_iperf3_args,
723 "iperf3", self.client_ipv6_iperf3_args)
725 @unittest.skipUnless(running_extended_tests, "part of extended tests")
726 def test_ldp_ipv6_cut_thru_uni_dir_nsock(self):
727 """ run LDP IPv6 cut thru uni-directional (multiple sockets) test """
729 self.timeout = self.client_uni_dir_nsock_timeout
730 self.cut_thru_test("sock_test_server", self.server_ipv6_args,
732 self.client_ipv6_uni_dir_nsock_test_args)
734 @unittest.skipUnless(running_extended_tests, "part of extended tests")
735 def test_ldp_ipv6_cut_thru_bi_dir_nsock(self):
736 """ run LDP IPv6 cut thru bi-directional (multiple sockets) test """
738 self.timeout = self.client_bi_dir_nsock_timeout
739 self.cut_thru_test("sock_test_server", self.server_ipv6_args,
741 self.client_ipv6_bi_dir_nsock_test_args)
744 class VCLIpv6CutThruTestCase(VCLTestCase):
745 """ VCL IPv6 Cut Thru Tests """
749 super(VCLIpv6CutThruTestCase, cls).setUpClass()
752 def tearDownClass(cls):
753 super(VCLIpv6CutThruTestCase, cls).tearDownClass()
756 super(VCLIpv6CutThruTestCase, self).setUp()
758 self.cut_thru_setup()
759 self.client_uni_dir_nsock_timeout = 20
760 self.client_bi_dir_nsock_timeout = 20
761 self.client_ipv6_echo_test_args = ["-6", "-E", self.echo_phrase, "-X",
762 self.server_ipv6_addr,
764 self.client_ipv6_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
767 self.server_ipv6_addr,
769 self.client_ipv6_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
772 self.server_ipv6_addr,
776 super(VCLIpv6CutThruTestCase, self).tearDown()
777 self.cut_thru_tear_down()
779 def test_vcl_ipv6_cut_thru_echo(self):
780 """ run VCL IPv6 cut thru echo test """
782 self.cut_thru_test("vcl_test_server",
783 self.server_ipv6_args,
785 self.client_ipv6_echo_test_args)
787 @unittest.skipUnless(running_extended_tests, "part of extended tests")
788 def test_vcl_ipv6_cut_thru_uni_dir_nsock(self):
789 """ run VCL IPv6 cut thru uni-directional (multiple sockets) test """
791 self.timeout = self.client_uni_dir_nsock_timeout
792 self.cut_thru_test("vcl_test_server", self.server_ipv6_args,
794 self.client_ipv6_uni_dir_nsock_test_args)
796 @unittest.skipUnless(running_extended_tests, "part of extended tests")
797 def test_vcl_ipv6_cut_thru_bi_dir_nsock(self):
798 """ run VCL IPv6 cut thru bi-directional (multiple sockets) test """
800 self.timeout = self.client_bi_dir_nsock_timeout
801 self.cut_thru_test("vcl_test_server", self.server_ipv6_args,
803 self.client_ipv6_bi_dir_nsock_test_args)
806 class VCLIpv6ThruHostStackEcho(VCLTestCase):
807 """ VCL IPv6 Thru Host Stack Echo """
811 super(VCLIpv6ThruHostStackEcho, cls).setUpClass()
814 def tearDownClass(cls):
815 super(VCLIpv6ThruHostStackEcho, cls).tearDownClass()
818 super(VCLIpv6ThruHostStackEcho, self).setUp()
820 self.thru_host_stack_ipv6_setup()
821 self.client_ipv6_echo_test_args = ["-6", "-E", self.echo_phrase, "-X",
822 self.loop0.local_ip6,
826 self.thru_host_stack_ipv6_tear_down()
827 super(VCLIpv6ThruHostStackEcho, self).tearDown()
829 def test_vcl_ipv6_thru_host_stack_echo(self):
830 """ run VCL IPv6 thru host stack echo test """
832 self.thru_host_stack_test("vcl_test_server",
833 self.server_ipv6_args,
835 self.client_ipv6_echo_test_args)
838 if __name__ == '__main__':
839 unittest.main(testRunner=VppTestRunner)