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(namespace_id="1", secret=1234,
107 sw_if_index=self.loop0.sw_if_index)
108 self.vapi.app_namespace_add(namespace_id="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 self.vapi.session_enable_disable(is_enabled=0)
132 def thru_host_stack_ipv6_setup(self):
133 self.vapi.session_enable_disable(is_enabled=1)
134 self.create_loopback_interfaces(2)
138 for i in self.lo_interfaces:
141 tbl = VppIpTable(self, table_id, is_ip6=1)
144 i.set_table_ip6(table_id)
148 # Configure namespaces
149 self.vapi.app_namespace_add(namespace_id="1", secret=1234,
150 sw_if_index=self.loop0.sw_if_index)
151 self.vapi.app_namespace_add(namespace_id="2", secret=5678,
152 sw_if_index=self.loop1.sw_if_index)
154 # Add inter-table routes
155 ip_t01 = VppIpRoute(self, self.loop1.local_ip6, 128,
156 [VppRoutePath("::0", 0xffffffff,
158 proto=DpoProto.DPO_PROTO_IP6)],
159 table_id=1, is_ip6=1)
160 ip_t10 = VppIpRoute(self, self.loop0.local_ip6, 128,
161 [VppRoutePath("::0", 0xffffffff,
163 proto=DpoProto.DPO_PROTO_IP6)],
164 table_id=2, is_ip6=1)
165 ip_t01.add_vpp_config()
166 ip_t10.add_vpp_config()
167 self.logger.debug(self.vapi.cli("show interface addr"))
168 self.logger.debug(self.vapi.cli("show ip6 fib"))
170 def thru_host_stack_ipv6_tear_down(self):
171 for i in self.lo_interfaces:
176 self.vapi.session_enable_disable(is_enabled=0)
178 def thru_host_stack_test(self, server_app, server_args,
179 client_app, client_args):
180 self.env = {'VCL_API_PREFIX': self.shm_prefix,
181 'VCL_APP_SCOPE_GLOBAL': "true",
182 'VCL_APP_NAMESPACE_ID': "1",
183 'VCL_APP_NAMESPACE_SECRET': "1234"}
185 worker_server = VCLAppWorker(self.build_dir, server_app, server_args,
186 self.logger, self.env)
187 worker_server.start()
188 self.sleep(self.pre_test_sleep)
190 self.env.update({'VCL_APP_NAMESPACE_ID': "2",
191 'VCL_APP_NAMESPACE_SECRET': "5678"})
192 worker_client = VCLAppWorker(self.build_dir, client_app, client_args,
193 self.logger, self.env)
194 worker_client.start()
195 worker_client.join(self.timeout)
198 self.validateResults(worker_client, worker_server, self.timeout)
199 except Exception as error:
200 self.fail("Failed with %s" % error)
201 self.sleep(self.post_test_sleep)
203 def validateResults(self, worker_client, worker_server, timeout):
204 if os.path.isdir('/proc/{}'.format(worker_server.process.pid)):
205 self.logger.info("Killing server worker process (pid %d)" %
206 worker_server.process.pid)
207 os.killpg(os.getpgid(worker_server.process.pid), signal.SIGKILL)
209 self.logger.info("Client worker result is `%s'" % worker_client.result)
211 if worker_client.result is None:
215 "Timeout: %ss! Killing client worker process (pid %d)" %
216 (timeout, worker_client.process.pid))
217 os.killpg(os.getpgid(worker_client.process.pid),
222 "Couldn't kill client worker process")
226 "Timeout! Client worker did not finish in %ss" % timeout)
227 self.assert_equal(worker_client.result, 0, "Binary test return code")
230 class LDPCutThruTestCase(VCLTestCase):
231 """ LDP Cut Thru Tests """
235 super(LDPCutThruTestCase, cls).setUpClass()
238 def tearDownClass(cls):
239 super(LDPCutThruTestCase, cls).tearDownClass()
242 super(LDPCutThruTestCase, self).setUp()
244 self.cut_thru_setup()
245 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
246 self.server_addr, self.server_port]
247 self.client_iperf3_timeout = 20
248 self.client_iperf3_args = ["-V4d", "-t 2", "-c", self.server_addr]
249 self.server_iperf3_args = ["-V4d", "-s"]
250 self.client_uni_dir_nsock_timeout = 20
251 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
255 self.client_bi_dir_nsock_timeout = 20
256 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
262 self.cut_thru_tear_down()
264 super(LDPCutThruTestCase, self).tearDown()
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:
279 self.logger.error("WARNING: 'iperf3' is not installed,")
280 self.logger.error(" 'test_ldp_cut_thru_iperf3' not run!")
283 self.timeout = self.client_iperf3_timeout
284 self.cut_thru_test("iperf3", self.server_iperf3_args,
285 "iperf3", self.client_iperf3_args)
287 @unittest.skipUnless(running_extended_tests, "part of extended tests")
288 def test_ldp_cut_thru_uni_dir_nsock(self):
289 """ run LDP cut thru uni-directional (multiple sockets) test """
291 self.timeout = self.client_uni_dir_nsock_timeout
292 self.cut_thru_test("sock_test_server", self.server_args,
294 self.client_uni_dir_nsock_test_args)
296 @unittest.skipUnless(running_extended_tests, "part of extended tests")
297 def test_ldp_cut_thru_bi_dir_nsock(self):
298 """ run LDP cut thru bi-directional (multiple sockets) test """
300 self.timeout = self.client_bi_dir_nsock_timeout
301 self.cut_thru_test("sock_test_server", self.server_args,
303 self.client_bi_dir_nsock_test_args)
306 class VCLCutThruTestCase(VCLTestCase):
307 """ VCL Cut Thru Tests """
311 super(VCLCutThruTestCase, cls).setUpClass()
314 def tearDownClass(cls):
315 super(VCLCutThruTestCase, cls).tearDownClass()
318 super(VCLCutThruTestCase, self).setUp()
320 self.cut_thru_setup()
321 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
322 self.server_addr, self.server_port]
324 self.client_uni_dir_nsock_timeout = 20
325 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
329 self.client_bi_dir_nsock_timeout = 20
330 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
336 self.cut_thru_tear_down()
338 super(VCLCutThruTestCase, self).tearDown()
340 def test_vcl_cut_thru_echo(self):
341 """ run VCL cut thru echo test """
343 self.cut_thru_test("vcl_test_server", self.server_args,
344 "vcl_test_client", self.client_echo_test_args)
346 def test_vcl_cut_thru_uni_dir_nsock(self):
347 """ run VCL cut thru uni-directional (multiple sockets) test """
349 self.timeout = self.client_uni_dir_nsock_timeout
350 self.cut_thru_test("vcl_test_server", self.server_args,
352 self.client_uni_dir_nsock_test_args)
354 def test_vcl_cut_thru_bi_dir_nsock(self):
355 """ run VCL cut thru bi-directional (multiple sockets) test """
357 self.timeout = self.client_bi_dir_nsock_timeout
358 self.cut_thru_test("vcl_test_server", self.server_args,
360 self.client_bi_dir_nsock_test_args)
363 class LDPThruHostStackEcho(VCLTestCase):
364 """ LDP Thru Host Stack Echo """
368 super(LDPThruHostStackEcho, cls).setUpClass()
371 def tearDownClass(cls):
372 super(LDPThruHostStackEcho, cls).tearDownClass()
375 super(LDPThruHostStackEcho, self).setUp()
377 self.thru_host_stack_setup()
378 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
379 self.loop0.local_ip4,
383 self.thru_host_stack_tear_down()
384 super(LDPThruHostStackEcho, self).tearDown()
386 def test_ldp_thru_host_stack_echo(self):
387 """ run LDP thru host stack echo test """
389 self.thru_host_stack_test("sock_test_server", self.server_args,
391 self.client_echo_test_args)
394 class VCLThruHostStackEcho(VCLTestCase):
395 """ VCL Thru Host Stack Echo """
399 super(VCLThruHostStackEcho, cls).setUpClass()
402 def tearDownClass(cls):
403 super(VCLThruHostStackEcho, cls).tearDownClass()
406 super(VCLThruHostStackEcho, self).setUp()
408 self.thru_host_stack_setup()
409 self.client_bi_dir_nsock_timeout = 20
410 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
412 self.loop0.local_ip4,
414 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
415 self.loop0.local_ip4,
419 self.logger.debug(self.vapi.cli("show app server"))
420 self.logger.debug(self.vapi.cli("show session verbose"))
421 self.thru_host_stack_tear_down()
422 super(VCLThruHostStackEcho, self).tearDown()
425 class VCLThruHostStackTLS(VCLTestCase):
426 """ VCL Thru Host Stack TLS """
430 super(VCLThruHostStackTLS, cls).setUpClass()
433 def tearDownClass(cls):
434 super(VCLThruHostStackTLS, cls).tearDownClass()
437 super(VCLThruHostStackTLS, self).setUp()
439 self.thru_host_stack_setup()
440 self.client_uni_dir_tls_timeout = 20
441 self.server_tls_args = ["-S", self.server_port]
442 self.client_uni_dir_tls_test_args = ["-N", "1000", "-U", "-X", "-S",
443 self.loop0.local_ip4,
446 def test_vcl_thru_host_stack_tls_uni_dir(self):
447 """ run VCL thru host stack uni-directional TLS test """
449 self.timeout = self.client_uni_dir_tls_timeout
450 self.thru_host_stack_test("vcl_test_server", self.server_tls_args,
452 self.client_uni_dir_tls_test_args)
455 self.logger.debug(self.vapi.cli("show app server"))
456 self.logger.debug(self.vapi.cli("show session verbose 2"))
457 self.thru_host_stack_tear_down()
458 super(VCLThruHostStackTLS, self).tearDown()
461 class VCLThruHostStackBidirNsock(VCLTestCase):
462 """ VCL Thru Host Stack Bidir Nsock """
466 super(VCLThruHostStackBidirNsock, cls).setUpClass()
469 def tearDownClass(cls):
470 super(VCLThruHostStackBidirNsock, cls).tearDownClass()
473 super(VCLThruHostStackBidirNsock, self).setUp()
475 self.thru_host_stack_setup()
476 self.client_bi_dir_nsock_timeout = 20
477 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
479 self.loop0.local_ip4,
481 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
482 self.loop0.local_ip4,
486 self.thru_host_stack_tear_down()
487 super(VCLThruHostStackBidirNsock, self).tearDown()
489 def test_vcl_thru_host_stack_bi_dir_nsock(self):
490 """ run VCL thru host stack bi-directional (multiple sockets) test """
492 self.timeout = self.client_bi_dir_nsock_timeout
493 self.thru_host_stack_test("vcl_test_server", self.server_args,
495 self.client_bi_dir_nsock_test_args)
498 class LDPThruHostStackBidirNsock(VCLTestCase):
499 """ LDP Thru Host Stack Bidir Nsock """
503 super(LDPThruHostStackBidirNsock, cls).setUpClass()
506 def tearDownClass(cls):
507 super(LDPThruHostStackBidirNsock, cls).tearDownClass()
510 super(LDPThruHostStackBidirNsock, self).setUp()
512 self.thru_host_stack_setup()
514 self.client_bi_dir_nsock_timeout = 20
515 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
516 # OUCH! Host Stack Bug?
518 self.loop0.local_ip4,
521 self.client_bi_dir_nsock_timeout = 20
522 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
523 # OUCH! Host Stack Bug?
525 self.loop0.local_ip4,
529 self.thru_host_stack_tear_down()
530 super(LDPThruHostStackBidirNsock, self).tearDown()
532 def test_ldp_thru_host_stack_bi_dir_nsock(self):
533 """ run LDP thru host stack bi-directional (multiple sockets) test """
535 self.timeout = self.client_bi_dir_nsock_timeout
536 self.thru_host_stack_test("sock_test_server", self.server_args,
538 self.client_bi_dir_nsock_test_args)
541 class LDPThruHostStackNsock(VCLTestCase):
542 """ LDP Thru Host Stack Nsock """
546 super(LDPThruHostStackNsock, cls).setUpClass()
549 def tearDownClass(cls):
550 super(LDPThruHostStackNsock, cls).tearDownClass()
553 super(LDPThruHostStackNsock, self).setUp()
555 self.thru_host_stack_setup()
557 self.client_uni_dir_nsock_timeout = 20
558 self.numSockets = "2"
560 self.client_uni_dir_nsock_timeout = 20
561 self.numSockets = "5"
563 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
564 "-I", self.numSockets,
565 self.loop0.local_ip4,
569 self.thru_host_stack_tear_down()
570 super(LDPThruHostStackNsock, self).tearDown()
572 def test_ldp_thru_host_stack_uni_dir_nsock(self):
573 """ run LDP thru host stack uni-directional (multiple sockets) test """
575 self.timeout = self.client_uni_dir_nsock_timeout
576 self.thru_host_stack_test("sock_test_server", self.server_args,
578 self.client_uni_dir_nsock_test_args)
581 class VCLThruHostStackNsock(VCLTestCase):
582 """ VCL Thru Host Stack Nsock """
586 super(VCLThruHostStackNsock, cls).setUpClass()
589 def tearDownClass(cls):
590 super(VCLThruHostStackNsock, cls).tearDownClass()
593 super(VCLThruHostStackNsock, self).setUp()
595 self.thru_host_stack_setup()
597 self.client_uni_dir_nsock_timeout = 20
598 self.numSockets = "2"
600 self.client_uni_dir_nsock_timeout = 20
601 self.numSockets = "5"
603 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
604 "-I", self.numSockets,
605 self.loop0.local_ip4,
609 self.thru_host_stack_tear_down()
610 super(VCLThruHostStackNsock, self).tearDown()
612 def test_vcl_thru_host_stack_uni_dir_nsock(self):
613 """ run VCL thru host stack uni-directional (multiple sockets) test """
615 self.timeout = self.client_uni_dir_nsock_timeout
616 self.thru_host_stack_test("vcl_test_server", self.server_args,
618 self.client_uni_dir_nsock_test_args)
621 class LDPThruHostStackIperf(VCLTestCase):
622 """ LDP Thru Host Stack Iperf """
626 super(LDPThruHostStackIperf, cls).setUpClass()
629 def tearDownClass(cls):
630 super(LDPThruHostStackIperf, cls).tearDownClass()
633 super(LDPThruHostStackIperf, self).setUp()
635 self.thru_host_stack_setup()
636 self.client_iperf3_timeout = 20
637 self.client_iperf3_args = ["-V4d", "-t 2", "-c", self.loop0.local_ip4]
638 self.server_iperf3_args = ["-V4d", "-s"]
641 self.logger.debug(self.vapi.cli("show session verbose 2"))
642 self.thru_host_stack_tear_down()
643 super(LDPThruHostStackIperf, self).tearDown()
645 def test_ldp_thru_host_stack_iperf3(self):
646 """ run LDP thru host stack iperf3 test """
649 subprocess.check_output(['iperf3', '-v'])
650 except subprocess.CalledProcessError:
651 self.logger.error("WARNING: 'iperf3' is not installed,")
653 " 'test_ldp_thru_host_stack_iperf3' not run!")
656 self.timeout = self.client_iperf3_timeout
657 self.thru_host_stack_test("iperf3", self.server_iperf3_args,
658 "iperf3", self.client_iperf3_args)
661 class LDPIpv6CutThruTestCase(VCLTestCase):
662 """ LDP IPv6 Cut Thru Tests """
666 super(LDPIpv6CutThruTestCase, cls).setUpClass()
669 def tearDownClass(cls):
670 super(LDPIpv6CutThruTestCase, cls).tearDownClass()
673 super(LDPIpv6CutThruTestCase, self).setUp()
675 self.cut_thru_setup()
676 self.client_iperf3_timeout = 20
677 self.client_uni_dir_nsock_timeout = 20
678 self.client_bi_dir_nsock_timeout = 20
679 self.client_ipv6_echo_test_args = ["-6", "-E", self.echo_phrase, "-X",
680 self.server_ipv6_addr,
682 self.client_ipv6_iperf3_args = ["-V6d", "-t 2", "-c",
683 self.server_ipv6_addr]
684 self.server_ipv6_iperf3_args = ["-V6d", "-s"]
685 self.client_ipv6_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
688 self.server_ipv6_addr,
690 self.client_ipv6_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
693 self.server_ipv6_addr,
697 self.cut_thru_tear_down()
699 super(LDPIpv6CutThruTestCase, self).tearDown()
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 self.cut_thru_tear_down()
778 super(VCLIpv6CutThruTestCase, self).tearDown()
780 def test_vcl_ipv6_cut_thru_echo(self):
781 """ run VCL IPv6 cut thru echo test """
783 self.cut_thru_test("vcl_test_server",
784 self.server_ipv6_args,
786 self.client_ipv6_echo_test_args)
788 @unittest.skipUnless(running_extended_tests, "part of extended tests")
789 def test_vcl_ipv6_cut_thru_uni_dir_nsock(self):
790 """ run VCL IPv6 cut thru uni-directional (multiple sockets) test """
792 self.timeout = self.client_uni_dir_nsock_timeout
793 self.cut_thru_test("vcl_test_server", self.server_ipv6_args,
795 self.client_ipv6_uni_dir_nsock_test_args)
797 @unittest.skipUnless(running_extended_tests, "part of extended tests")
798 def test_vcl_ipv6_cut_thru_bi_dir_nsock(self):
799 """ run VCL IPv6 cut thru bi-directional (multiple sockets) test """
801 self.timeout = self.client_bi_dir_nsock_timeout
802 self.cut_thru_test("vcl_test_server", self.server_ipv6_args,
804 self.client_ipv6_bi_dir_nsock_test_args)
807 class VCLIpv6ThruHostStackEcho(VCLTestCase):
808 """ VCL IPv6 Thru Host Stack Echo """
812 super(VCLIpv6ThruHostStackEcho, cls).setUpClass()
815 def tearDownClass(cls):
816 super(VCLIpv6ThruHostStackEcho, cls).tearDownClass()
819 super(VCLIpv6ThruHostStackEcho, self).setUp()
821 self.thru_host_stack_ipv6_setup()
822 self.client_ipv6_echo_test_args = ["-6", "-E", self.echo_phrase, "-X",
823 self.loop0.local_ip6,
827 self.thru_host_stack_ipv6_tear_down()
828 super(VCLIpv6ThruHostStackEcho, self).tearDown()
830 def test_vcl_ipv6_thru_host_stack_echo(self):
831 """ run VCL IPv6 thru host stack echo test """
833 self.thru_host_stack_test("vcl_test_server",
834 self.server_ipv6_args,
836 self.client_ipv6_echo_test_args)
839 if __name__ == '__main__':
840 unittest.main(testRunner=VppTestRunner)