blob: afb38482207860fd8eb7c2d0da07e82829eea6e1 [file] [log] [blame]
Renato Botelho do Coutoead1e532019-10-31 13:31:07 -05001#!/usr/bin/env python3
Dave Wallacecfcf2f42018-02-16 18:31:56 -05002""" Vpp VCL tests """
3
4import unittest
5import os
Dave Wallace816833f2018-03-14 20:01:28 -04006import subprocess
Dave Wallacecfcf2f42018-02-16 18:31:56 -05007import signal
Dave Wallaced85075e2018-03-02 13:19:30 -05008from framework import VppTestCase, VppTestRunner, running_extended_tests, \
9 Worker
Neale Ranns097fa662018-05-01 05:17:55 -070010from vpp_ip_route import VppIpTable, VppIpRoute, VppRoutePath, FibPathProto
Dave Wallacecfcf2f42018-02-16 18:31:56 -050011
Paul Vinciguerra063366e2019-06-30 15:38:55 -040012iperf3 = '/usr/bin/iperf3'
13
14
15def have_app(app):
16 try:
17 subprocess.check_output([app, '-v'])
18 except (subprocess.CalledProcessError, OSError):
19 return False
20 return True
21
22
23_have_iperf3 = have_app(iperf3)
Paul Vinciguerra063366e2019-06-30 15:38:55 -040024
Dave Wallacecfcf2f42018-02-16 18:31:56 -050025
Dave Wallace816833f2018-03-14 20:01:28 -040026class VCLAppWorker(Worker):
Dave Wallace42996c02018-02-26 14:40:13 -050027 """ VCL Test Application Worker """
28
Paul Vinciguerra48bdbcd2019-12-04 19:43:53 -050029 def __init__(self, build_dir, appname, executable_args, logger, env=None,
30 *args, **kwargs):
31
32 if env is None:
33 env = {}
Damjan Marion855e2682018-08-24 13:37:45 +020034 vcl_lib_dir = "%s/vpp/lib" % build_dir
Dave Wallace816833f2018-03-14 20:01:28 -040035 if "iperf" in appname:
36 app = appname
Dave Wallace9f11c012018-02-28 17:55:23 -050037 env.update({'LD_PRELOAD':
Damjan Marion855e2682018-08-24 13:37:45 +020038 "%s/libvcl_ldpreload.so" % vcl_lib_dir})
Florin Corasab2f6db2018-08-31 14:31:41 -070039 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})
Dave Wallace816833f2018-03-14 20:01:28 -040043 else:
Florin Corasab2f6db2018-08-31 14:31:41 -070044 app = "%s/vpp/bin/%s" % (build_dir, appname)
Paul Vinciguerra48bdbcd2019-12-04 19:43:53 -050045 self.args = [app] + executable_args
46 super(VCLAppWorker, self).__init__(self.args, logger, env,
47 *args, **kwargs)
Dave Wallace42996c02018-02-26 14:40:13 -050048
49
Dave Wallace816833f2018-03-14 20:01:28 -040050class VCLTestCase(VppTestCase):
Dave Wallace42996c02018-02-26 14:40:13 -050051 """ VCL Test Class """
Florin Corase92c9462020-11-25 08:44:16 -080052 extra_vpp_punt_config = ["session", "{", "poll-main", "}"]
Dave Wallace42996c02018-02-26 14:40:13 -050053
Paul Vinciguerra8d991d92019-01-25 14:05:48 -080054 @classmethod
55 def setUpClass(cls):
56 super(VCLTestCase, cls).setUpClass()
57
58 @classmethod
59 def tearDownClass(cls):
60 super(VCLTestCase, cls).tearDownClass()
61
62 def setUp(self):
Klement Sekerab8c72a42018-11-08 11:21:39 +010063 var = "VPP_BUILD_DIR"
Dave Wallaced85075e2018-03-02 13:19:30 -050064 self.build_dir = os.getenv(var, None)
65 if self.build_dir is None:
Paul Vinciguerra063366e2019-06-30 15:38:55 -040066 raise EnvironmentError("Environment variable `%s' not set" % var)
Dave Wallaced85075e2018-03-02 13:19:30 -050067 self.vppDebug = 'vpp_debug' in self.build_dir
Dave Wallace9f11c012018-02-28 17:55:23 -050068 self.server_addr = "127.0.0.1"
69 self.server_port = "22000"
Dave Wallace816833f2018-03-14 20:01:28 -040070 self.server_args = [self.server_port]
Dave Wallacede910062018-03-20 09:22:13 -040071 self.server_ipv6_addr = "::1"
72 self.server_ipv6_args = ["-6", self.server_port]
Florin Corasdc2e2512018-12-03 17:47:26 -080073 self.timeout = 20
Dave Wallace9f11c012018-02-28 17:55:23 -050074 self.echo_phrase = "Hello, world! Jenny is a friend of mine."
Florin Corasdc2e2512018-12-03 17:47:26 -080075 self.pre_test_sleep = 0.3
76 self.post_test_sleep = 0.2
77
78 if os.path.isfile("/tmp/ldp_server_af_unix_socket"):
79 os.remove("/tmp/ldp_server_af_unix_socket")
Dave Wallace42996c02018-02-26 14:40:13 -050080
Paul Vinciguerra8d991d92019-01-25 14:05:48 -080081 super(VCLTestCase, self).setUp()
Dave Wallace42996c02018-02-26 14:40:13 -050082
Dave Wallace9f11c012018-02-28 17:55:23 -050083 def cut_thru_setup(self):
Jakub Grajciar6a2794e2020-11-24 11:22:01 +010084 self.vapi.session_enable_disable(is_enable=1)
Dave Wallacea67a03e2018-02-20 12:39:37 -050085
Dave Wallace9f11c012018-02-28 17:55:23 -050086 def cut_thru_tear_down(self):
Jakub Grajciar6a2794e2020-11-24 11:22:01 +010087 self.vapi.session_enable_disable(is_enable=0)
Dave Wallacea67a03e2018-02-20 12:39:37 -050088
Dave Wallace816833f2018-03-14 20:01:28 -040089 def cut_thru_test(self, server_app, server_args, client_app, client_args):
Florin Coras45ab3ec2020-11-08 14:36:19 -080090 self.env = {'VCL_VPP_API_SOCKET': self.api_sock,
Dave Wallace42996c02018-02-26 14:40:13 -050091 'VCL_APP_SCOPE_LOCAL': "true"}
Dave Wallace816833f2018-03-14 20:01:28 -040092 worker_server = VCLAppWorker(self.build_dir, server_app, server_args,
Dave Wallace42996c02018-02-26 14:40:13 -050093 self.logger, self.env)
Dave Wallacecfcf2f42018-02-16 18:31:56 -050094 worker_server.start()
Florin Corasdc2e2512018-12-03 17:47:26 -080095 self.sleep(self.pre_test_sleep)
Dave Wallace816833f2018-03-14 20:01:28 -040096 worker_client = VCLAppWorker(self.build_dir, client_app, client_args,
Dave Wallace42996c02018-02-26 14:40:13 -050097 self.logger, self.env)
Dave Wallacecfcf2f42018-02-16 18:31:56 -050098 worker_client.start()
Dave Wallace42996c02018-02-26 14:40:13 -050099 worker_client.join(self.timeout)
Dave Wallacefef3f7b2018-03-09 12:04:10 -0500100 try:
101 self.validateResults(worker_client, worker_server, self.timeout)
Klement Sekerab9ef2732018-06-24 22:49:33 +0200102 except Exception as error:
Dave Wallacefef3f7b2018-03-09 12:04:10 -0500103 self.fail("Failed with %s" % error)
Florin Corasdc2e2512018-12-03 17:47:26 -0800104 self.sleep(self.post_test_sleep)
Dave Wallacecfcf2f42018-02-16 18:31:56 -0500105
Dave Wallace9f11c012018-02-28 17:55:23 -0500106 def thru_host_stack_setup(self):
Jakub Grajciar6a2794e2020-11-24 11:22:01 +0100107 self.vapi.session_enable_disable(is_enable=1)
Klement Sekerab9ef2732018-06-24 22:49:33 +0200108 self.create_loopback_interfaces(2)
Dave Wallacea67a03e2018-02-20 12:39:37 -0500109
Florin Coras56b39f62018-03-27 17:29:32 -0700110 table_id = 1
Dave Wallacea67a03e2018-02-20 12:39:37 -0500111
112 for i in self.lo_interfaces:
113 i.admin_up()
114
115 if table_id != 0:
116 tbl = VppIpTable(self, table_id)
117 tbl.add_vpp_config()
118
119 i.set_table_ip4(table_id)
120 i.config_ip4()
121 table_id += 1
122
123 # Configure namespaces
Jakub Grajciarb4e5e502020-01-31 09:35:29 +0100124 self.vapi.app_namespace_add_del(namespace_id="1", secret=1234,
Ole Troane1ade682019-03-04 23:55:43 +0100125 sw_if_index=self.loop0.sw_if_index)
Jakub Grajciarb4e5e502020-01-31 09:35:29 +0100126 self.vapi.app_namespace_add_del(namespace_id="2", secret=5678,
Ole Troane1ade682019-03-04 23:55:43 +0100127 sw_if_index=self.loop1.sw_if_index)
Dave Wallacea67a03e2018-02-20 12:39:37 -0500128
Dave Wallacea67a03e2018-02-20 12:39:37 -0500129 # Add inter-table routes
130 ip_t01 = VppIpRoute(self, self.loop1.local_ip4, 32,
131 [VppRoutePath("0.0.0.0",
132 0xffffffff,
Florin Coras56b39f62018-03-27 17:29:32 -0700133 nh_table_id=2)], table_id=1)
Dave Wallacea67a03e2018-02-20 12:39:37 -0500134 ip_t10 = VppIpRoute(self, self.loop0.local_ip4, 32,
135 [VppRoutePath("0.0.0.0",
136 0xffffffff,
Florin Coras56b39f62018-03-27 17:29:32 -0700137 nh_table_id=1)], table_id=2)
Dave Wallacea67a03e2018-02-20 12:39:37 -0500138 ip_t01.add_vpp_config()
139 ip_t10.add_vpp_config()
Florin Coras56b39f62018-03-27 17:29:32 -0700140 self.logger.debug(self.vapi.cli("show ip fib"))
Dave Wallacea67a03e2018-02-20 12:39:37 -0500141
Dave Wallace9f11c012018-02-28 17:55:23 -0500142 def thru_host_stack_tear_down(self):
143 for i in self.lo_interfaces:
144 i.unconfig_ip4()
145 i.set_table_ip4(0)
146 i.admin_down()
147
Dave Wallacede910062018-03-20 09:22:13 -0400148 def thru_host_stack_ipv6_setup(self):
Jakub Grajciar6a2794e2020-11-24 11:22:01 +0100149 self.vapi.session_enable_disable(is_enable=1)
Klement Sekerab9ef2732018-06-24 22:49:33 +0200150 self.create_loopback_interfaces(2)
Dave Wallacede910062018-03-20 09:22:13 -0400151
152 table_id = 1
153
154 for i in self.lo_interfaces:
155 i.admin_up()
156
157 tbl = VppIpTable(self, table_id, is_ip6=1)
158 tbl.add_vpp_config()
159
160 i.set_table_ip6(table_id)
161 i.config_ip6()
162 table_id += 1
163
164 # Configure namespaces
Jakub Grajciarb4e5e502020-01-31 09:35:29 +0100165 self.vapi.app_namespace_add_del(namespace_id="1", secret=1234,
Ole Troane1ade682019-03-04 23:55:43 +0100166 sw_if_index=self.loop0.sw_if_index)
Jakub Grajciarb4e5e502020-01-31 09:35:29 +0100167 self.vapi.app_namespace_add_del(namespace_id="2", secret=5678,
Ole Troane1ade682019-03-04 23:55:43 +0100168 sw_if_index=self.loop1.sw_if_index)
Dave Wallacede910062018-03-20 09:22:13 -0400169
170 # Add inter-table routes
171 ip_t01 = VppIpRoute(self, self.loop1.local_ip6, 128,
Florin Coras56b39f62018-03-27 17:29:32 -0700172 [VppRoutePath("::0", 0xffffffff,
Neale Ranns097fa662018-05-01 05:17:55 -0700173 nh_table_id=2)],
174 table_id=1)
Dave Wallacede910062018-03-20 09:22:13 -0400175 ip_t10 = VppIpRoute(self, self.loop0.local_ip6, 128,
Florin Coras56b39f62018-03-27 17:29:32 -0700176 [VppRoutePath("::0", 0xffffffff,
Neale Ranns097fa662018-05-01 05:17:55 -0700177 nh_table_id=1)],
178 table_id=2)
Dave Wallacede910062018-03-20 09:22:13 -0400179 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"))
183
184 def thru_host_stack_ipv6_tear_down(self):
185 for i in self.lo_interfaces:
186 i.unconfig_ip6()
187 i.set_table_ip6(0)
188 i.admin_down()
189
Jakub Grajciar6a2794e2020-11-24 11:22:01 +0100190 self.vapi.session_enable_disable(is_enable=0)
Dave Wallacede910062018-03-20 09:22:13 -0400191
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400192 @unittest.skipUnless(_have_iperf3, "'%s' not found, Skipping.")
Dave Wallace816833f2018-03-14 20:01:28 -0400193 def thru_host_stack_test(self, server_app, server_args,
194 client_app, client_args):
Florin Coras45ab3ec2020-11-08 14:36:19 -0800195 self.env = {'VCL_VPP_API_SOCKET': self.api_sock,
Dave Wallace9f11c012018-02-28 17:55:23 -0500196 'VCL_APP_SCOPE_GLOBAL': "true",
Florin Coras56b39f62018-03-27 17:29:32 -0700197 'VCL_APP_NAMESPACE_ID': "1",
Dave Wallace9f11c012018-02-28 17:55:23 -0500198 'VCL_APP_NAMESPACE_SECRET': "1234"}
199
Dave Wallace816833f2018-03-14 20:01:28 -0400200 worker_server = VCLAppWorker(self.build_dir, server_app, server_args,
Dave Wallace42996c02018-02-26 14:40:13 -0500201 self.logger, self.env)
Dave Wallacea67a03e2018-02-20 12:39:37 -0500202 worker_server.start()
Florin Corasdc2e2512018-12-03 17:47:26 -0800203 self.sleep(self.pre_test_sleep)
Dave Wallace42996c02018-02-26 14:40:13 -0500204
Florin Coras56b39f62018-03-27 17:29:32 -0700205 self.env.update({'VCL_APP_NAMESPACE_ID': "2",
Dave Wallace42996c02018-02-26 14:40:13 -0500206 'VCL_APP_NAMESPACE_SECRET': "5678"})
Dave Wallace816833f2018-03-14 20:01:28 -0400207 worker_client = VCLAppWorker(self.build_dir, client_app, client_args,
Dave Wallace42996c02018-02-26 14:40:13 -0500208 self.logger, self.env)
Dave Wallacea67a03e2018-02-20 12:39:37 -0500209 worker_client.start()
Dave Wallace42996c02018-02-26 14:40:13 -0500210 worker_client.join(self.timeout)
211
Dave Wallacefef3f7b2018-03-09 12:04:10 -0500212 try:
213 self.validateResults(worker_client, worker_server, self.timeout)
Klement Sekerab9ef2732018-06-24 22:49:33 +0200214 except Exception as error:
Dave Wallacefef3f7b2018-03-09 12:04:10 -0500215 self.fail("Failed with %s" % error)
Florin Corasdc2e2512018-12-03 17:47:26 -0800216 self.sleep(self.post_test_sleep)
Dave Wallacea67a03e2018-02-20 12:39:37 -0500217
Dave Wallace9f11c012018-02-28 17:55:23 -0500218 def validateResults(self, worker_client, worker_server, timeout):
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400219 if worker_server.process is None:
220 raise RuntimeError('worker_server is not running.')
Dave Wallaced85075e2018-03-02 13:19:30 -0500221 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)
Dave Barachad646872019-05-06 10:49:41 -0400224 os.killpg(os.getpgid(worker_server.process.pid), signal.SIGTERM)
Dave Wallaced85075e2018-03-02 13:19:30 -0500225 worker_server.join()
Dave Wallace9f11c012018-02-28 17:55:23 -0500226 self.logger.info("Client worker result is `%s'" % worker_client.result)
227 error = False
228 if worker_client.result is None:
229 try:
230 error = True
231 self.logger.error(
Dave Wallaced85075e2018-03-02 13:19:30 -0500232 "Timeout: %ss! Killing client worker process (pid %d)" %
233 (timeout, worker_client.process.pid))
Dave Wallace9f11c012018-02-28 17:55:23 -0500234 os.killpg(os.getpgid(worker_client.process.pid),
Florin Corasdc2e2512018-12-03 17:47:26 -0800235 signal.SIGKILL)
Dave Wallace9f11c012018-02-28 17:55:23 -0500236 worker_client.join()
Dave Wallace07c0a9d2019-05-13 19:21:24 -0400237 except OSError:
Dave Wallace9f11c012018-02-28 17:55:23 -0500238 self.logger.debug(
239 "Couldn't kill client worker process")
240 raise
241 if error:
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400242 raise RuntimeError(
Dave Wallace9f11c012018-02-28 17:55:23 -0500243 "Timeout! Client worker did not finish in %ss" % timeout)
244 self.assert_equal(worker_client.result, 0, "Binary test return code")
245
246
Florin Coras0ae445e2018-11-29 18:22:10 -0800247class LDPCutThruTestCase(VCLTestCase):
248 """ LDP Cut Thru Tests """
Dave Wallace9f11c012018-02-28 17:55:23 -0500249
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800250 @classmethod
251 def setUpClass(cls):
252 super(LDPCutThruTestCase, cls).setUpClass()
253
254 @classmethod
255 def tearDownClass(cls):
256 super(LDPCutThruTestCase, cls).tearDownClass()
257
Dave Wallace9f11c012018-02-28 17:55:23 -0500258 def setUp(self):
Florin Coras0ae445e2018-11-29 18:22:10 -0800259 super(LDPCutThruTestCase, self).setUp()
Dave Wallace9f11c012018-02-28 17:55:23 -0500260
261 self.cut_thru_setup()
Dave Wallacede910062018-03-20 09:22:13 -0400262 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
263 self.server_addr, self.server_port]
Dave Wallace816833f2018-03-14 20:01:28 -0400264 self.client_iperf3_timeout = 20
Florin Corasdc2e2512018-12-03 17:47:26 -0800265 self.client_iperf3_args = ["-V4d", "-t 2", "-c", self.server_addr]
Dave Wallace816833f2018-03-14 20:01:28 -0400266 self.server_iperf3_args = ["-V4d", "-s"]
Florin Coras2eb42e72018-11-29 00:39:53 -0800267 self.client_uni_dir_nsock_timeout = 20
Dave Wallace45cd3a32018-06-26 01:14:04 -0400268 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
269 "-I", "2",
Dave Wallacede910062018-03-20 09:22:13 -0400270 self.server_addr,
271 self.server_port]
Florin Coras2eb42e72018-11-29 00:39:53 -0800272 self.client_bi_dir_nsock_timeout = 20
Dave Wallace45cd3a32018-06-26 01:14:04 -0400273 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
274 "-I", "2",
Dave Wallacede910062018-03-20 09:22:13 -0400275 self.server_addr,
276 self.server_port]
Dave Wallace9f11c012018-02-28 17:55:23 -0500277
278 def tearDown(self):
Florin Coras0ae445e2018-11-29 18:22:10 -0800279 super(LDPCutThruTestCase, self).tearDown()
Paul Vinciguerra9673e3e2019-05-10 20:41:08 -0400280 self.cut_thru_tear_down()
Dave Wallace9f11c012018-02-28 17:55:23 -0500281
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700282 def show_commands_at_teardown(self):
283 self.logger.debug(self.vapi.cli("show session verbose 2"))
284
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800285 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Dave Wallace9f11c012018-02-28 17:55:23 -0500286 def test_ldp_cut_thru_echo(self):
287 """ run LDP cut thru echo test """
288
Florin Corasab2f6db2018-08-31 14:31:41 -0700289 self.cut_thru_test("sock_test_server", self.server_args,
290 "sock_test_client", self.client_echo_test_args)
Dave Wallace816833f2018-03-14 20:01:28 -0400291
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400292 @unittest.skipUnless(_have_iperf3, "'%s' not found, Skipping.")
Dave Wallace816833f2018-03-14 20:01:28 -0400293 def test_ldp_cut_thru_iperf3(self):
294 """ run LDP cut thru iperf3 test """
295
Dave Wallace816833f2018-03-14 20:01:28 -0400296 self.timeout = self.client_iperf3_timeout
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400297 self.cut_thru_test(iperf3, self.server_iperf3_args,
298 iperf3, self.client_iperf3_args)
Dave Wallace9f11c012018-02-28 17:55:23 -0500299
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800300 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Dave Wallaced85075e2018-03-02 13:19:30 -0500301 def test_ldp_cut_thru_uni_dir_nsock(self):
302 """ run LDP cut thru uni-directional (multiple sockets) test """
303
304 self.timeout = self.client_uni_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700305 self.cut_thru_test("sock_test_server", self.server_args,
306 "sock_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500307 self.client_uni_dir_nsock_test_args)
308
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800309 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Florin Coras0f46e162019-07-02 19:33:15 -0700310 @unittest.skip("sock test apps need to be improved")
Dave Wallaced85075e2018-03-02 13:19:30 -0500311 def test_ldp_cut_thru_bi_dir_nsock(self):
312 """ run LDP cut thru bi-directional (multiple sockets) test """
313
314 self.timeout = self.client_bi_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700315 self.cut_thru_test("sock_test_server", self.server_args,
316 "sock_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500317 self.client_bi_dir_nsock_test_args)
318
Florin Coras0ae445e2018-11-29 18:22:10 -0800319
320class VCLCutThruTestCase(VCLTestCase):
321 """ VCL Cut Thru Tests """
322
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800323 @classmethod
324 def setUpClass(cls):
325 super(VCLCutThruTestCase, cls).setUpClass()
326
327 @classmethod
328 def tearDownClass(cls):
329 super(VCLCutThruTestCase, cls).tearDownClass()
330
Florin Coras0ae445e2018-11-29 18:22:10 -0800331 def setUp(self):
332 super(VCLCutThruTestCase, self).setUp()
333
334 self.cut_thru_setup()
335 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
336 self.server_addr, self.server_port]
337
338 self.client_uni_dir_nsock_timeout = 20
339 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
340 "-I", "2",
341 self.server_addr,
342 self.server_port]
343 self.client_bi_dir_nsock_timeout = 20
344 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
345 "-I", "2",
346 self.server_addr,
347 self.server_port]
348
349 def tearDown(self):
Florin Coras0ae445e2018-11-29 18:22:10 -0800350 super(VCLCutThruTestCase, self).tearDown()
351
Florin Coras317b8e02019-04-17 09:57:46 -0700352 def show_commands_at_teardown(self):
353 self.logger.debug(self.vapi.cli("show session verbose 2"))
354
Dave Wallace9f11c012018-02-28 17:55:23 -0500355 def test_vcl_cut_thru_echo(self):
356 """ run VCL cut thru echo test """
357
Florin Corasab2f6db2018-08-31 14:31:41 -0700358 self.cut_thru_test("vcl_test_server", self.server_args,
359 "vcl_test_client", self.client_echo_test_args)
Dave Wallace9f11c012018-02-28 17:55:23 -0500360
Dave Wallaced85075e2018-03-02 13:19:30 -0500361 def test_vcl_cut_thru_uni_dir_nsock(self):
362 """ run VCL cut thru uni-directional (multiple sockets) test """
363
364 self.timeout = self.client_uni_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700365 self.cut_thru_test("vcl_test_server", self.server_args,
366 "vcl_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500367 self.client_uni_dir_nsock_test_args)
368
Dave Wallaced85075e2018-03-02 13:19:30 -0500369 def test_vcl_cut_thru_bi_dir_nsock(self):
370 """ run VCL cut thru bi-directional (multiple sockets) test """
371
372 self.timeout = self.client_bi_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700373 self.cut_thru_test("vcl_test_server", self.server_args,
374 "vcl_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500375 self.client_bi_dir_nsock_test_args)
376
Dave Wallace9f11c012018-02-28 17:55:23 -0500377
Florin Corasdc2e2512018-12-03 17:47:26 -0800378class VCLThruHostStackEcho(VCLTestCase):
379 """ VCL Thru Host Stack Echo """
Dave Wallaced85075e2018-03-02 13:19:30 -0500380
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800381 @classmethod
382 def setUpClass(cls):
383 super(VCLThruHostStackEcho, cls).setUpClass()
384
385 @classmethod
386 def tearDownClass(cls):
387 super(VCLThruHostStackEcho, cls).tearDownClass()
388
Dave Wallaced85075e2018-03-02 13:19:30 -0500389 def setUp(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800390 super(VCLThruHostStackEcho, self).setUp()
Dave Wallaced85075e2018-03-02 13:19:30 -0500391
392 self.thru_host_stack_setup()
Florin Corasdc2e2512018-12-03 17:47:26 -0800393 self.client_bi_dir_nsock_timeout = 20
394 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
395 "-I", "2",
396 self.loop0.local_ip4,
397 self.server_port]
398 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
399 self.loop0.local_ip4,
400 self.server_port]
401
402 def tearDown(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800403 self.thru_host_stack_tear_down()
404 super(VCLThruHostStackEcho, self).tearDown()
405
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700406 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"))
409
Florin Corasdc2e2512018-12-03 17:47:26 -0800410
Florin Coras8a140612019-02-18 22:39:39 -0800411class VCLThruHostStackTLS(VCLTestCase):
412 """ VCL Thru Host Stack TLS """
413
414 @classmethod
415 def setUpClass(cls):
416 super(VCLThruHostStackTLS, cls).setUpClass()
417
418 @classmethod
419 def tearDownClass(cls):
420 super(VCLThruHostStackTLS, cls).tearDownClass()
421
422 def setUp(self):
423 super(VCLThruHostStackTLS, self).setUp()
424
425 self.thru_host_stack_setup()
426 self.client_uni_dir_tls_timeout = 20
Dave Wallace03dd90a2019-03-25 19:34:50 -0400427 self.server_tls_args = ["-L", self.server_port]
428 self.client_uni_dir_tls_test_args = ["-N", "1000", "-U", "-X", "-L",
Florin Coras8a140612019-02-18 22:39:39 -0800429 self.loop0.local_ip4,
430 self.server_port]
431
432 def test_vcl_thru_host_stack_tls_uni_dir(self):
433 """ run VCL thru host stack uni-directional TLS test """
434
435 self.timeout = self.client_uni_dir_tls_timeout
436 self.thru_host_stack_test("vcl_test_server", self.server_tls_args,
437 "vcl_test_client",
438 self.client_uni_dir_tls_test_args)
439
440 def tearDown(self):
Florin Coras8a140612019-02-18 22:39:39 -0800441 self.thru_host_stack_tear_down()
442 super(VCLThruHostStackTLS, self).tearDown()
443
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700444 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"))
447
Florin Coras8a140612019-02-18 22:39:39 -0800448
Florin Corasdc2e2512018-12-03 17:47:26 -0800449class VCLThruHostStackBidirNsock(VCLTestCase):
450 """ VCL Thru Host Stack Bidir Nsock """
451
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800452 @classmethod
453 def setUpClass(cls):
454 super(VCLThruHostStackBidirNsock, cls).setUpClass()
455
456 @classmethod
457 def tearDownClass(cls):
458 super(VCLThruHostStackBidirNsock, cls).tearDownClass()
459
Florin Corasdc2e2512018-12-03 17:47:26 -0800460 def setUp(self):
461 super(VCLThruHostStackBidirNsock, self).setUp()
462
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",
466 "-I", "2",
467 self.loop0.local_ip4,
468 self.server_port]
469 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
470 self.loop0.local_ip4,
471 self.server_port]
Dave Wallaced85075e2018-03-02 13:19:30 -0500472
473 def tearDown(self):
474 self.thru_host_stack_tear_down()
Florin Corasdc2e2512018-12-03 17:47:26 -0800475 super(VCLThruHostStackBidirNsock, self).tearDown()
Dave Wallaced85075e2018-03-02 13:19:30 -0500476
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700477 def show_commands_at_teardown(self):
478 self.logger.debug(self.vapi.cli("show session verbose 2"))
479
Dave Wallaced85075e2018-03-02 13:19:30 -0500480 def test_vcl_thru_host_stack_bi_dir_nsock(self):
481 """ run VCL thru host stack bi-directional (multiple sockets) test """
482
483 self.timeout = self.client_bi_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700484 self.thru_host_stack_test("vcl_test_server", self.server_args,
485 "vcl_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500486 self.client_bi_dir_nsock_test_args)
487
488
Florin Corasdc2e2512018-12-03 17:47:26 -0800489class LDPThruHostStackBidirNsock(VCLTestCase):
490 """ LDP Thru Host Stack Bidir Nsock """
Dave Wallaced85075e2018-03-02 13:19:30 -0500491
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800492 @classmethod
493 def setUpClass(cls):
494 super(LDPThruHostStackBidirNsock, cls).setUpClass()
495
496 @classmethod
497 def tearDownClass(cls):
498 super(LDPThruHostStackBidirNsock, cls).tearDownClass()
499
Dave Wallaced85075e2018-03-02 13:19:30 -0500500 def setUp(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800501 super(LDPThruHostStackBidirNsock, self).setUp()
Dave Wallaced85075e2018-03-02 13:19:30 -0500502
503 self.thru_host_stack_setup()
Dave Wallace3102c382020-04-03 19:48:48 -0400504 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'
509 # or TEST_JOBS > 1
510 # "-I", "2",
511 self.loop0.local_ip4,
512 self.server_port]
Dave Wallaced85075e2018-03-02 13:19:30 -0500513
514 def tearDown(self):
515 self.thru_host_stack_tear_down()
Florin Corasdc2e2512018-12-03 17:47:26 -0800516 super(LDPThruHostStackBidirNsock, self).tearDown()
Dave Wallaced85075e2018-03-02 13:19:30 -0500517
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700518 def show_commands_at_teardown(self):
519 self.logger.debug(self.vapi.cli("show session verbose 2"))
520
Dave Wallaced85075e2018-03-02 13:19:30 -0500521 def test_ldp_thru_host_stack_bi_dir_nsock(self):
522 """ run LDP thru host stack bi-directional (multiple sockets) test """
523
524 self.timeout = self.client_bi_dir_nsock_timeout
Dave Wallace816833f2018-03-14 20:01:28 -0400525 self.thru_host_stack_test("sock_test_server", self.server_args,
526 "sock_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500527 self.client_bi_dir_nsock_test_args)
528
529
Florin Corasdc2e2512018-12-03 17:47:26 -0800530class LDPThruHostStackNsock(VCLTestCase):
531 """ LDP Thru Host Stack Nsock """
Dave Wallaced85075e2018-03-02 13:19:30 -0500532
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800533 @classmethod
534 def setUpClass(cls):
535 super(LDPThruHostStackNsock, cls).setUpClass()
536
537 @classmethod
538 def tearDownClass(cls):
539 super(LDPThruHostStackNsock, cls).tearDownClass()
540
Dave Wallaced85075e2018-03-02 13:19:30 -0500541 def setUp(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800542 super(LDPThruHostStackNsock, self).setUp()
Dave Wallaced85075e2018-03-02 13:19:30 -0500543
544 self.thru_host_stack_setup()
545 if self.vppDebug:
Florin Coras2eb42e72018-11-29 00:39:53 -0800546 self.client_uni_dir_nsock_timeout = 20
Dave Wallaced85075e2018-03-02 13:19:30 -0500547 self.numSockets = "2"
548 else:
Florin Coras2eb42e72018-11-29 00:39:53 -0800549 self.client_uni_dir_nsock_timeout = 20
Dave Wallaced85075e2018-03-02 13:19:30 -0500550 self.numSockets = "5"
551
Dave Wallace45cd3a32018-06-26 01:14:04 -0400552 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
553 "-I", self.numSockets,
Dave Wallacede910062018-03-20 09:22:13 -0400554 self.loop0.local_ip4,
555 self.server_port]
Dave Wallaced85075e2018-03-02 13:19:30 -0500556
557 def tearDown(self):
558 self.thru_host_stack_tear_down()
Florin Corasdc2e2512018-12-03 17:47:26 -0800559 super(LDPThruHostStackNsock, self).tearDown()
Dave Wallaced85075e2018-03-02 13:19:30 -0500560
Dave Wallaced85075e2018-03-02 13:19:30 -0500561 def test_ldp_thru_host_stack_uni_dir_nsock(self):
562 """ run LDP thru host stack uni-directional (multiple sockets) test """
563
564 self.timeout = self.client_uni_dir_nsock_timeout
Dave Wallace816833f2018-03-14 20:01:28 -0400565 self.thru_host_stack_test("sock_test_server", self.server_args,
566 "sock_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500567 self.client_uni_dir_nsock_test_args)
568
569
Florin Corasdc2e2512018-12-03 17:47:26 -0800570class VCLThruHostStackNsock(VCLTestCase):
571 """ VCL Thru Host Stack Nsock """
Dave Wallaced85075e2018-03-02 13:19:30 -0500572
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800573 @classmethod
574 def setUpClass(cls):
575 super(VCLThruHostStackNsock, cls).setUpClass()
576
577 @classmethod
578 def tearDownClass(cls):
579 super(VCLThruHostStackNsock, cls).tearDownClass()
580
Dave Wallaced85075e2018-03-02 13:19:30 -0500581 def setUp(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800582 super(VCLThruHostStackNsock, self).setUp()
Dave Wallaced85075e2018-03-02 13:19:30 -0500583
584 self.thru_host_stack_setup()
585 if self.vppDebug:
Florin Coras2eb42e72018-11-29 00:39:53 -0800586 self.client_uni_dir_nsock_timeout = 20
Dave Wallaced85075e2018-03-02 13:19:30 -0500587 self.numSockets = "2"
588 else:
Florin Coras2eb42e72018-11-29 00:39:53 -0800589 self.client_uni_dir_nsock_timeout = 20
Dave Wallaced85075e2018-03-02 13:19:30 -0500590 self.numSockets = "5"
591
Dave Wallace45cd3a32018-06-26 01:14:04 -0400592 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
593 "-I", self.numSockets,
Dave Wallacede910062018-03-20 09:22:13 -0400594 self.loop0.local_ip4,
595 self.server_port]
Dave Wallaced85075e2018-03-02 13:19:30 -0500596
597 def tearDown(self):
598 self.thru_host_stack_tear_down()
Florin Corasdc2e2512018-12-03 17:47:26 -0800599 super(VCLThruHostStackNsock, self).tearDown()
Dave Wallaced85075e2018-03-02 13:19:30 -0500600
Dave Wallaced85075e2018-03-02 13:19:30 -0500601 def test_vcl_thru_host_stack_uni_dir_nsock(self):
602 """ run VCL thru host stack uni-directional (multiple sockets) test """
603
604 self.timeout = self.client_uni_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700605 self.thru_host_stack_test("vcl_test_server", self.server_args,
606 "vcl_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500607 self.client_uni_dir_nsock_test_args)
608
609
Florin Corasdc2e2512018-12-03 17:47:26 -0800610class LDPThruHostStackIperf(VCLTestCase):
611 """ LDP Thru Host Stack Iperf """
Dave Wallace816833f2018-03-14 20:01:28 -0400612
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800613 @classmethod
614 def setUpClass(cls):
615 super(LDPThruHostStackIperf, cls).setUpClass()
616
617 @classmethod
618 def tearDownClass(cls):
619 super(LDPThruHostStackIperf, cls).tearDownClass()
620
Dave Wallace816833f2018-03-14 20:01:28 -0400621 def setUp(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800622 super(LDPThruHostStackIperf, self).setUp()
Dave Wallace816833f2018-03-14 20:01:28 -0400623
624 self.thru_host_stack_setup()
625 self.client_iperf3_timeout = 20
Florin Corasdc2e2512018-12-03 17:47:26 -0800626 self.client_iperf3_args = ["-V4d", "-t 2", "-c", self.loop0.local_ip4]
Dave Wallace816833f2018-03-14 20:01:28 -0400627 self.server_iperf3_args = ["-V4d", "-s"]
628
629 def tearDown(self):
630 self.thru_host_stack_tear_down()
Florin Corasdc2e2512018-12-03 17:47:26 -0800631 super(LDPThruHostStackIperf, self).tearDown()
Dave Wallace816833f2018-03-14 20:01:28 -0400632
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700633 def show_commands_at_teardown(self):
634 self.logger.debug(self.vapi.cli("show session verbose 2"))
635
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400636 @unittest.skipUnless(_have_iperf3, "'%s' not found, Skipping.")
Dave Wallace816833f2018-03-14 20:01:28 -0400637 def test_ldp_thru_host_stack_iperf3(self):
638 """ run LDP thru host stack iperf3 test """
639
Dave Wallace816833f2018-03-14 20:01:28 -0400640 self.timeout = self.client_iperf3_timeout
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400641 self.thru_host_stack_test(iperf3, self.server_iperf3_args,
642 iperf3, self.client_iperf3_args)
Dave Wallace816833f2018-03-14 20:01:28 -0400643
644
Florin Coras57a5a2d2020-04-01 23:16:11 +0000645class LDPThruHostStackIperfUdp(VCLTestCase):
646 """ LDP Thru Host Stack Iperf UDP """
647
648 @classmethod
649 def setUpClass(cls):
650 super(LDPThruHostStackIperfUdp, cls).setUpClass()
651
652 @classmethod
653 def tearDownClass(cls):
654 super(LDPThruHostStackIperfUdp, cls).tearDownClass()
655
656 def setUp(self):
657 super(LDPThruHostStackIperfUdp, self).setUp()
658
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"]
664
665 def tearDown(self):
666 self.thru_host_stack_tear_down()
667 super(LDPThruHostStackIperfUdp, self).tearDown()
668
669 def show_commands_at_teardown(self):
670 self.logger.debug(self.vapi.cli("show session verbose 2"))
671
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 """
675
676 self.timeout = self.client_iperf3_timeout
677 self.thru_host_stack_test(iperf3, self.server_iperf3_args,
678 iperf3, self.client_iperf3_args)
679
680
Florin Coras0ae445e2018-11-29 18:22:10 -0800681class LDPIpv6CutThruTestCase(VCLTestCase):
682 """ LDP IPv6 Cut Thru Tests """
Dave Wallacede910062018-03-20 09:22:13 -0400683
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800684 @classmethod
685 def setUpClass(cls):
686 super(LDPIpv6CutThruTestCase, cls).setUpClass()
687
688 @classmethod
689 def tearDownClass(cls):
690 super(LDPIpv6CutThruTestCase, cls).tearDownClass()
691
Dave Wallacede910062018-03-20 09:22:13 -0400692 def setUp(self):
Florin Coras0ae445e2018-11-29 18:22:10 -0800693 super(LDPIpv6CutThruTestCase, self).setUp()
Dave Wallacede910062018-03-20 09:22:13 -0400694
695 self.cut_thru_setup()
696 self.client_iperf3_timeout = 20
Florin Coras2eb42e72018-11-29 00:39:53 -0800697 self.client_uni_dir_nsock_timeout = 20
698 self.client_bi_dir_nsock_timeout = 20
Dave Wallacede910062018-03-20 09:22:13 -0400699 self.client_ipv6_echo_test_args = ["-6", "-E", self.echo_phrase, "-X",
700 self.server_ipv6_addr,
701 self.server_port]
Florin Corasdc2e2512018-12-03 17:47:26 -0800702 self.client_ipv6_iperf3_args = ["-V6d", "-t 2", "-c",
Florin Corasab2f6db2018-08-31 14:31:41 -0700703 self.server_ipv6_addr]
Dave Wallacede910062018-03-20 09:22:13 -0400704 self.server_ipv6_iperf3_args = ["-V6d", "-s"]
Dave Wallace45cd3a32018-06-26 01:14:04 -0400705 self.client_ipv6_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
706 "-6",
707 "-I", "2",
Dave Wallacede910062018-03-20 09:22:13 -0400708 self.server_ipv6_addr,
709 self.server_port]
Dave Wallace45cd3a32018-06-26 01:14:04 -0400710 self.client_ipv6_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
711 "-6",
712 "-I", "2",
Dave Wallacede910062018-03-20 09:22:13 -0400713 self.server_ipv6_addr,
714 self.server_port]
715
716 def tearDown(self):
Florin Coras0ae445e2018-11-29 18:22:10 -0800717 super(LDPIpv6CutThruTestCase, self).tearDown()
Paul Vinciguerra9673e3e2019-05-10 20:41:08 -0400718 self.cut_thru_tear_down()
Dave Wallacede910062018-03-20 09:22:13 -0400719
720 def test_ldp_ipv6_cut_thru_echo(self):
721 """ run LDP IPv6 cut thru echo test """
722
Florin Corasab2f6db2018-08-31 14:31:41 -0700723 self.cut_thru_test("sock_test_server",
Dave Wallacede910062018-03-20 09:22:13 -0400724 self.server_ipv6_args,
Florin Corasab2f6db2018-08-31 14:31:41 -0700725 "sock_test_client",
Dave Wallacede910062018-03-20 09:22:13 -0400726 self.client_ipv6_echo_test_args)
727
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400728 @unittest.skipUnless(_have_iperf3, "'%s' not found, Skipping.")
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800729 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Dave Wallacede910062018-03-20 09:22:13 -0400730 def test_ldp_ipv6_cut_thru_iperf3(self):
731 """ run LDP IPv6 cut thru iperf3 test """
732
Dave Wallacede910062018-03-20 09:22:13 -0400733 self.timeout = self.client_iperf3_timeout
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400734 self.cut_thru_test(iperf3, self.server_ipv6_iperf3_args,
735 iperf3, self.client_ipv6_iperf3_args)
Dave Wallacede910062018-03-20 09:22:13 -0400736
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800737 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Dave Wallacede910062018-03-20 09:22:13 -0400738 def test_ldp_ipv6_cut_thru_uni_dir_nsock(self):
739 """ run LDP IPv6 cut thru uni-directional (multiple sockets) test """
740
741 self.timeout = self.client_uni_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700742 self.cut_thru_test("sock_test_server", self.server_ipv6_args,
743 "sock_test_client",
Dave Wallacede910062018-03-20 09:22:13 -0400744 self.client_ipv6_uni_dir_nsock_test_args)
745
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800746 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Florin Coras0f46e162019-07-02 19:33:15 -0700747 @unittest.skip("sock test apps need to be improved")
Dave Wallacede910062018-03-20 09:22:13 -0400748 def test_ldp_ipv6_cut_thru_bi_dir_nsock(self):
749 """ run LDP IPv6 cut thru bi-directional (multiple sockets) test """
750
751 self.timeout = self.client_bi_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700752 self.cut_thru_test("sock_test_server", self.server_ipv6_args,
753 "sock_test_client",
Dave Wallacede910062018-03-20 09:22:13 -0400754 self.client_ipv6_bi_dir_nsock_test_args)
755
Florin Coras0ae445e2018-11-29 18:22:10 -0800756
757class VCLIpv6CutThruTestCase(VCLTestCase):
758 """ VCL IPv6 Cut Thru Tests """
759
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800760 @classmethod
761 def setUpClass(cls):
762 super(VCLIpv6CutThruTestCase, cls).setUpClass()
763
764 @classmethod
765 def tearDownClass(cls):
766 super(VCLIpv6CutThruTestCase, cls).tearDownClass()
767
Florin Coras0ae445e2018-11-29 18:22:10 -0800768 def setUp(self):
769 super(VCLIpv6CutThruTestCase, self).setUp()
770
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,
776 self.server_port]
777 self.client_ipv6_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
778 "-6",
779 "-I", "2",
780 self.server_ipv6_addr,
781 self.server_port]
782 self.client_ipv6_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
783 "-6",
784 "-I", "2",
785 self.server_ipv6_addr,
786 self.server_port]
787
788 def tearDown(self):
Florin Coras0ae445e2018-11-29 18:22:10 -0800789 super(VCLIpv6CutThruTestCase, self).tearDown()
Paul Vinciguerra9673e3e2019-05-10 20:41:08 -0400790 self.cut_thru_tear_down()
Florin Coras0ae445e2018-11-29 18:22:10 -0800791
Dave Wallacede910062018-03-20 09:22:13 -0400792 def test_vcl_ipv6_cut_thru_echo(self):
793 """ run VCL IPv6 cut thru echo test """
794
Florin Corasab2f6db2018-08-31 14:31:41 -0700795 self.cut_thru_test("vcl_test_server",
Dave Wallacede910062018-03-20 09:22:13 -0400796 self.server_ipv6_args,
Florin Corasab2f6db2018-08-31 14:31:41 -0700797 "vcl_test_client",
Dave Wallacede910062018-03-20 09:22:13 -0400798 self.client_ipv6_echo_test_args)
799
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800800 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Dave Wallacede910062018-03-20 09:22:13 -0400801 def test_vcl_ipv6_cut_thru_uni_dir_nsock(self):
802 """ run VCL IPv6 cut thru uni-directional (multiple sockets) test """
803
804 self.timeout = self.client_uni_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700805 self.cut_thru_test("vcl_test_server", self.server_ipv6_args,
806 "vcl_test_client",
Dave Wallacede910062018-03-20 09:22:13 -0400807 self.client_ipv6_uni_dir_nsock_test_args)
808
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800809 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Dave Wallacede910062018-03-20 09:22:13 -0400810 def test_vcl_ipv6_cut_thru_bi_dir_nsock(self):
811 """ run VCL IPv6 cut thru bi-directional (multiple sockets) test """
812
813 self.timeout = self.client_bi_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700814 self.cut_thru_test("vcl_test_server", self.server_ipv6_args,
815 "vcl_test_client",
Dave Wallacede910062018-03-20 09:22:13 -0400816 self.client_ipv6_bi_dir_nsock_test_args)
817
818
Florin Corasdc2e2512018-12-03 17:47:26 -0800819class VCLIpv6ThruHostStackEcho(VCLTestCase):
820 """ VCL IPv6 Thru Host Stack Echo """
Dave Wallacede910062018-03-20 09:22:13 -0400821
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800822 @classmethod
823 def setUpClass(cls):
824 super(VCLIpv6ThruHostStackEcho, cls).setUpClass()
825
826 @classmethod
827 def tearDownClass(cls):
828 super(VCLIpv6ThruHostStackEcho, cls).tearDownClass()
829
Dave Wallacede910062018-03-20 09:22:13 -0400830 def setUp(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800831 super(VCLIpv6ThruHostStackEcho, self).setUp()
Dave Wallacede910062018-03-20 09:22:13 -0400832
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,
836 self.server_port]
837
838 def tearDown(self):
839 self.thru_host_stack_ipv6_tear_down()
Florin Corasdc2e2512018-12-03 17:47:26 -0800840 super(VCLIpv6ThruHostStackEcho, self).tearDown()
Dave Wallacede910062018-03-20 09:22:13 -0400841
842 def test_vcl_ipv6_thru_host_stack_echo(self):
843 """ run VCL IPv6 thru host stack echo test """
844
Florin Corasdc2e2512018-12-03 17:47:26 -0800845 self.thru_host_stack_test("vcl_test_server",
Damjan Marion855e2682018-08-24 13:37:45 +0200846 self.server_ipv6_args,
Florin Corasab2f6db2018-08-31 14:31:41 -0700847 "vcl_test_client",
Florin Corasdc2e2512018-12-03 17:47:26 -0800848 self.client_ipv6_echo_test_args)
Dave Wallacede910062018-03-20 09:22:13 -0400849
850
Dave Wallacecfcf2f42018-02-16 18:31:56 -0500851if __name__ == '__main__':
852 unittest.main(testRunner=VppTestRunner)