blob: 2688816d42a4a04e8b28afad56c3e2399bfe1a94 [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, \
Dave Wallace5c520912021-05-27 19:44:50 -04009 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,
Dave Wallace4ee17d82021-05-20 14:01:51 -040030 role=None, *args, **kwargs):
31 self.role = role
Paul Vinciguerra48bdbcd2019-12-04 19:43:53 -050032 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):
Klement Sekerae2636852021-03-16 12:52:12 +010090 self.env = {'VCL_VPP_API_SOCKET': self.get_api_sock_path(),
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 Wallace4ee17d82021-05-20 14:01:51 -040093 self.logger, self.env, "server")
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 Wallace4ee17d82021-05-20 14:01:51 -040097 self.logger, self.env, "client")
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):
Klement Sekerae2636852021-03-16 12:52:12 +0100195 self.env = {'VCL_VPP_API_SOCKET': self.get_api_sock_path(),
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 Wallace4ee17d82021-05-20 14:01:51 -0400201 self.logger, self.env, "server")
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 Wallace4ee17d82021-05-20 14:01:51 -0400208 self.logger, self.env, "client")
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 Coras1d879142021-05-06 00:08:18 -0700265 self.client_iperf3_args = ["-4", "-t 2", "-c", self.server_addr]
266 self.server_iperf3_args = ["-4", "-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"))
Florin Coras41d5f542021-01-15 13:49:33 -0800284 self.logger.debug(self.vapi.cli("show app mq"))
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700285
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800286 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Dave Wallace9f11c012018-02-28 17:55:23 -0500287 def test_ldp_cut_thru_echo(self):
288 """ run LDP cut thru echo test """
289
Florin Corasab2f6db2018-08-31 14:31:41 -0700290 self.cut_thru_test("sock_test_server", self.server_args,
291 "sock_test_client", self.client_echo_test_args)
Dave Wallace816833f2018-03-14 20:01:28 -0400292
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400293 @unittest.skipUnless(_have_iperf3, "'%s' not found, Skipping.")
Dave Wallace816833f2018-03-14 20:01:28 -0400294 def test_ldp_cut_thru_iperf3(self):
295 """ run LDP cut thru iperf3 test """
296
Dave Wallace816833f2018-03-14 20:01:28 -0400297 self.timeout = self.client_iperf3_timeout
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400298 self.cut_thru_test(iperf3, self.server_iperf3_args,
299 iperf3, self.client_iperf3_args)
Dave Wallace9f11c012018-02-28 17:55:23 -0500300
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800301 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Dave Wallaced85075e2018-03-02 13:19:30 -0500302 def test_ldp_cut_thru_uni_dir_nsock(self):
303 """ run LDP cut thru uni-directional (multiple sockets) test """
304
305 self.timeout = self.client_uni_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700306 self.cut_thru_test("sock_test_server", self.server_args,
307 "sock_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500308 self.client_uni_dir_nsock_test_args)
309
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800310 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Florin Coras0f46e162019-07-02 19:33:15 -0700311 @unittest.skip("sock test apps need to be improved")
Dave Wallaced85075e2018-03-02 13:19:30 -0500312 def test_ldp_cut_thru_bi_dir_nsock(self):
313 """ run LDP cut thru bi-directional (multiple sockets) test """
314
315 self.timeout = self.client_bi_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700316 self.cut_thru_test("sock_test_server", self.server_args,
317 "sock_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500318 self.client_bi_dir_nsock_test_args)
319
Florin Coras0ae445e2018-11-29 18:22:10 -0800320
321class VCLCutThruTestCase(VCLTestCase):
322 """ VCL Cut Thru Tests """
323
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800324 @classmethod
325 def setUpClass(cls):
326 super(VCLCutThruTestCase, cls).setUpClass()
327
328 @classmethod
329 def tearDownClass(cls):
330 super(VCLCutThruTestCase, cls).tearDownClass()
331
Florin Coras0ae445e2018-11-29 18:22:10 -0800332 def setUp(self):
333 super(VCLCutThruTestCase, self).setUp()
334
335 self.cut_thru_setup()
336 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
337 self.server_addr, self.server_port]
338
339 self.client_uni_dir_nsock_timeout = 20
340 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
341 "-I", "2",
342 self.server_addr,
343 self.server_port]
344 self.client_bi_dir_nsock_timeout = 20
345 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
346 "-I", "2",
347 self.server_addr,
348 self.server_port]
349
350 def tearDown(self):
Florin Coras0ae445e2018-11-29 18:22:10 -0800351 super(VCLCutThruTestCase, self).tearDown()
352
Florin Coras317b8e02019-04-17 09:57:46 -0700353 def show_commands_at_teardown(self):
354 self.logger.debug(self.vapi.cli("show session verbose 2"))
Florin Coras41d5f542021-01-15 13:49:33 -0800355 self.logger.debug(self.vapi.cli("show app mq"))
Florin Coras317b8e02019-04-17 09:57:46 -0700356
Dave Wallace9f11c012018-02-28 17:55:23 -0500357 def test_vcl_cut_thru_echo(self):
358 """ run VCL cut thru echo test """
359
Florin Corasab2f6db2018-08-31 14:31:41 -0700360 self.cut_thru_test("vcl_test_server", self.server_args,
361 "vcl_test_client", self.client_echo_test_args)
Dave Wallace9f11c012018-02-28 17:55:23 -0500362
Dave Wallaced85075e2018-03-02 13:19:30 -0500363 def test_vcl_cut_thru_uni_dir_nsock(self):
364 """ run VCL cut thru uni-directional (multiple sockets) test """
365
366 self.timeout = self.client_uni_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700367 self.cut_thru_test("vcl_test_server", self.server_args,
368 "vcl_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500369 self.client_uni_dir_nsock_test_args)
370
Dave Wallaced85075e2018-03-02 13:19:30 -0500371 def test_vcl_cut_thru_bi_dir_nsock(self):
372 """ run VCL cut thru bi-directional (multiple sockets) test """
373
374 self.timeout = self.client_bi_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700375 self.cut_thru_test("vcl_test_server", self.server_args,
376 "vcl_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500377 self.client_bi_dir_nsock_test_args)
378
Dave Wallace9f11c012018-02-28 17:55:23 -0500379
Florin Corasdc2e2512018-12-03 17:47:26 -0800380class VCLThruHostStackEcho(VCLTestCase):
381 """ VCL Thru Host Stack Echo """
Dave Wallaced85075e2018-03-02 13:19:30 -0500382
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800383 @classmethod
384 def setUpClass(cls):
385 super(VCLThruHostStackEcho, cls).setUpClass()
386
387 @classmethod
388 def tearDownClass(cls):
389 super(VCLThruHostStackEcho, cls).tearDownClass()
390
Dave Wallaced85075e2018-03-02 13:19:30 -0500391 def setUp(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800392 super(VCLThruHostStackEcho, self).setUp()
Dave Wallaced85075e2018-03-02 13:19:30 -0500393
394 self.thru_host_stack_setup()
Florin Corasdc2e2512018-12-03 17:47:26 -0800395 self.client_bi_dir_nsock_timeout = 20
396 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
397 "-I", "2",
398 self.loop0.local_ip4,
399 self.server_port]
400 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
401 self.loop0.local_ip4,
402 self.server_port]
403
404 def tearDown(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800405 self.thru_host_stack_tear_down()
406 super(VCLThruHostStackEcho, self).tearDown()
407
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700408 def show_commands_at_teardown(self):
409 self.logger.debug(self.vapi.cli("show app server"))
410 self.logger.debug(self.vapi.cli("show session verbose"))
Florin Coras41d5f542021-01-15 13:49:33 -0800411 self.logger.debug(self.vapi.cli("show app mq"))
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700412
Florin Corasdc2e2512018-12-03 17:47:26 -0800413
Florin Coras8a140612019-02-18 22:39:39 -0800414class VCLThruHostStackTLS(VCLTestCase):
415 """ VCL Thru Host Stack TLS """
416
417 @classmethod
418 def setUpClass(cls):
419 super(VCLThruHostStackTLS, cls).setUpClass()
420
421 @classmethod
422 def tearDownClass(cls):
423 super(VCLThruHostStackTLS, cls).tearDownClass()
424
425 def setUp(self):
426 super(VCLThruHostStackTLS, self).setUp()
427
428 self.thru_host_stack_setup()
429 self.client_uni_dir_tls_timeout = 20
Dave Wallace03dd90a2019-03-25 19:34:50 -0400430 self.server_tls_args = ["-L", self.server_port]
431 self.client_uni_dir_tls_test_args = ["-N", "1000", "-U", "-X", "-L",
Florin Coras8a140612019-02-18 22:39:39 -0800432 self.loop0.local_ip4,
433 self.server_port]
434
435 def test_vcl_thru_host_stack_tls_uni_dir(self):
436 """ run VCL thru host stack uni-directional TLS test """
437
438 self.timeout = self.client_uni_dir_tls_timeout
439 self.thru_host_stack_test("vcl_test_server", self.server_tls_args,
440 "vcl_test_client",
441 self.client_uni_dir_tls_test_args)
442
443 def tearDown(self):
Florin Coras8a140612019-02-18 22:39:39 -0800444 self.thru_host_stack_tear_down()
445 super(VCLThruHostStackTLS, self).tearDown()
446
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700447 def show_commands_at_teardown(self):
448 self.logger.debug(self.vapi.cli("show app server"))
449 self.logger.debug(self.vapi.cli("show session verbose 2"))
Florin Coras41d5f542021-01-15 13:49:33 -0800450 self.logger.debug(self.vapi.cli("show app mq"))
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700451
Florin Coras8a140612019-02-18 22:39:39 -0800452
Florin Corascec1b272021-05-06 12:46:04 -0700453class VCLThruHostStackDTLS(VCLTestCase):
454 """ VCL Thru Host Stack DTLS """
455
456 @classmethod
457 def setUpClass(cls):
458 super(VCLThruHostStackDTLS, cls).setUpClass()
459
460 @classmethod
461 def tearDownClass(cls):
462 super(VCLThruHostStackDTLS, cls).tearDownClass()
463
464 def setUp(self):
465 super(VCLThruHostStackDTLS, self).setUp()
466
467 self.thru_host_stack_setup()
468 self.client_uni_dir_dtls_timeout = 20
Florin Corasfb50bc32021-05-18 00:28:59 -0700469 self.server_dtls_args = ["-p", "dtls", self.server_port]
Florin Corascec1b272021-05-06 12:46:04 -0700470 self.client_uni_dir_dtls_test_args = ["-N", "1000", "-U", "-X",
Florin Corasfb50bc32021-05-18 00:28:59 -0700471 "-p", "dtls", "-T 1400",
Florin Corascec1b272021-05-06 12:46:04 -0700472 self.loop0.local_ip4,
473 self.server_port]
474
475 def test_vcl_thru_host_stack_dtls_uni_dir(self):
476 """ run VCL thru host stack uni-directional DTLS test """
477
478 self.timeout = self.client_uni_dir_dtls_timeout
479 self.thru_host_stack_test("vcl_test_server", self.server_dtls_args,
480 "vcl_test_client",
481 self.client_uni_dir_dtls_test_args)
482
483 def tearDown(self):
484 self.thru_host_stack_tear_down()
485 super(VCLThruHostStackDTLS, self).tearDown()
486
487 def show_commands_at_teardown(self):
488 self.logger.debug(self.vapi.cli("show app server"))
489 self.logger.debug(self.vapi.cli("show session verbose 2"))
490 self.logger.debug(self.vapi.cli("show app mq"))
491
492
Florin Corasdebb3522021-05-18 00:35:50 -0700493class VCLThruHostStackQUIC(VCLTestCase):
494 """ VCL Thru Host Stack QUIC """
495
496 @classmethod
497 def setUpClass(cls):
498 cls.extra_vpp_plugin_config.append("plugin quic_plugin.so { enable }")
499 super(VCLThruHostStackQUIC, cls).setUpClass()
500
501 @classmethod
502 def tearDownClass(cls):
503 super(VCLThruHostStackQUIC, cls).tearDownClass()
504
505 def setUp(self):
506 super(VCLThruHostStackQUIC, self).setUp()
507
508 self.thru_host_stack_setup()
509 self.client_uni_dir_quic_timeout = 20
510 self.server_quic_args = ["-p", "quic", self.server_port]
511 self.client_uni_dir_quic_test_args = ["-N", "1000", "-U", "-X",
512 "-p", "quic",
513 self.loop0.local_ip4,
514 self.server_port]
515
516 @unittest.skipUnless(running_extended_tests, "part of extended tests")
517 def test_vcl_thru_host_stack_quic_uni_dir(self):
518 """ run VCL thru host stack uni-directional QUIC test """
519
520 self.timeout = self.client_uni_dir_quic_timeout
521 self.thru_host_stack_test("vcl_test_server", self.server_quic_args,
522 "vcl_test_client",
523 self.client_uni_dir_quic_test_args)
524
525 def tearDown(self):
526 self.thru_host_stack_tear_down()
527 super(VCLThruHostStackQUIC, self).tearDown()
528
529 def show_commands_at_teardown(self):
530 self.logger.debug(self.vapi.cli("show app server"))
531 self.logger.debug(self.vapi.cli("show session verbose 2"))
532 self.logger.debug(self.vapi.cli("show app mq"))
533
534
Florin Corasdc2e2512018-12-03 17:47:26 -0800535class VCLThruHostStackBidirNsock(VCLTestCase):
536 """ VCL Thru Host Stack Bidir Nsock """
537
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800538 @classmethod
539 def setUpClass(cls):
540 super(VCLThruHostStackBidirNsock, cls).setUpClass()
541
542 @classmethod
543 def tearDownClass(cls):
544 super(VCLThruHostStackBidirNsock, cls).tearDownClass()
545
Florin Corasdc2e2512018-12-03 17:47:26 -0800546 def setUp(self):
547 super(VCLThruHostStackBidirNsock, self).setUp()
548
549 self.thru_host_stack_setup()
550 self.client_bi_dir_nsock_timeout = 20
551 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
552 "-I", "2",
553 self.loop0.local_ip4,
554 self.server_port]
555 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
556 self.loop0.local_ip4,
557 self.server_port]
Dave Wallaced85075e2018-03-02 13:19:30 -0500558
559 def tearDown(self):
560 self.thru_host_stack_tear_down()
Florin Corasdc2e2512018-12-03 17:47:26 -0800561 super(VCLThruHostStackBidirNsock, self).tearDown()
Dave Wallaced85075e2018-03-02 13:19:30 -0500562
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700563 def show_commands_at_teardown(self):
564 self.logger.debug(self.vapi.cli("show session verbose 2"))
Florin Coras41d5f542021-01-15 13:49:33 -0800565 self.logger.debug(self.vapi.cli("show app mq"))
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700566
Dave Wallaced85075e2018-03-02 13:19:30 -0500567 def test_vcl_thru_host_stack_bi_dir_nsock(self):
568 """ run VCL thru host stack bi-directional (multiple sockets) test """
569
570 self.timeout = self.client_bi_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700571 self.thru_host_stack_test("vcl_test_server", self.server_args,
572 "vcl_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500573 self.client_bi_dir_nsock_test_args)
574
575
Florin Corasdc2e2512018-12-03 17:47:26 -0800576class LDPThruHostStackBidirNsock(VCLTestCase):
577 """ LDP Thru Host Stack Bidir Nsock """
Dave Wallaced85075e2018-03-02 13:19:30 -0500578
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800579 @classmethod
580 def setUpClass(cls):
581 super(LDPThruHostStackBidirNsock, cls).setUpClass()
582
583 @classmethod
584 def tearDownClass(cls):
585 super(LDPThruHostStackBidirNsock, cls).tearDownClass()
586
Dave Wallaced85075e2018-03-02 13:19:30 -0500587 def setUp(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800588 super(LDPThruHostStackBidirNsock, self).setUp()
Dave Wallaced85075e2018-03-02 13:19:30 -0500589
590 self.thru_host_stack_setup()
Dave Wallace3102c382020-04-03 19:48:48 -0400591 self.client_bi_dir_nsock_timeout = 20
592 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
593 # OUCH! Host Stack Bug?
594 # Only fails when running
595 # 'make test TEST_JOBS=auto'
596 # or TEST_JOBS > 1
597 # "-I", "2",
598 self.loop0.local_ip4,
599 self.server_port]
Dave Wallaced85075e2018-03-02 13:19:30 -0500600
601 def tearDown(self):
602 self.thru_host_stack_tear_down()
Florin Corasdc2e2512018-12-03 17:47:26 -0800603 super(LDPThruHostStackBidirNsock, self).tearDown()
Dave Wallaced85075e2018-03-02 13:19:30 -0500604
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700605 def show_commands_at_teardown(self):
606 self.logger.debug(self.vapi.cli("show session verbose 2"))
Florin Coras41d5f542021-01-15 13:49:33 -0800607 self.logger.debug(self.vapi.cli("show app mq"))
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700608
Dave Wallaced85075e2018-03-02 13:19:30 -0500609 def test_ldp_thru_host_stack_bi_dir_nsock(self):
610 """ run LDP thru host stack bi-directional (multiple sockets) test """
611
612 self.timeout = self.client_bi_dir_nsock_timeout
Dave Wallace816833f2018-03-14 20:01:28 -0400613 self.thru_host_stack_test("sock_test_server", self.server_args,
614 "sock_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500615 self.client_bi_dir_nsock_test_args)
616
617
Florin Corasdc2e2512018-12-03 17:47:26 -0800618class LDPThruHostStackNsock(VCLTestCase):
619 """ LDP Thru Host Stack Nsock """
Dave Wallaced85075e2018-03-02 13:19:30 -0500620
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800621 @classmethod
622 def setUpClass(cls):
623 super(LDPThruHostStackNsock, cls).setUpClass()
624
625 @classmethod
626 def tearDownClass(cls):
627 super(LDPThruHostStackNsock, cls).tearDownClass()
628
Dave Wallaced85075e2018-03-02 13:19:30 -0500629 def setUp(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800630 super(LDPThruHostStackNsock, self).setUp()
Dave Wallaced85075e2018-03-02 13:19:30 -0500631
632 self.thru_host_stack_setup()
633 if self.vppDebug:
Florin Coras2eb42e72018-11-29 00:39:53 -0800634 self.client_uni_dir_nsock_timeout = 20
Dave Wallaced85075e2018-03-02 13:19:30 -0500635 self.numSockets = "2"
636 else:
Florin Coras2eb42e72018-11-29 00:39:53 -0800637 self.client_uni_dir_nsock_timeout = 20
Dave Wallaced85075e2018-03-02 13:19:30 -0500638 self.numSockets = "5"
639
Dave Wallace45cd3a32018-06-26 01:14:04 -0400640 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
641 "-I", self.numSockets,
Dave Wallacede910062018-03-20 09:22:13 -0400642 self.loop0.local_ip4,
643 self.server_port]
Dave Wallaced85075e2018-03-02 13:19:30 -0500644
645 def tearDown(self):
646 self.thru_host_stack_tear_down()
Florin Corasdc2e2512018-12-03 17:47:26 -0800647 super(LDPThruHostStackNsock, self).tearDown()
Dave Wallaced85075e2018-03-02 13:19:30 -0500648
Dave Wallaced85075e2018-03-02 13:19:30 -0500649 def test_ldp_thru_host_stack_uni_dir_nsock(self):
650 """ run LDP thru host stack uni-directional (multiple sockets) test """
651
652 self.timeout = self.client_uni_dir_nsock_timeout
Dave Wallace816833f2018-03-14 20:01:28 -0400653 self.thru_host_stack_test("sock_test_server", self.server_args,
654 "sock_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500655 self.client_uni_dir_nsock_test_args)
656
657
Florin Corasdc2e2512018-12-03 17:47:26 -0800658class VCLThruHostStackNsock(VCLTestCase):
659 """ VCL Thru Host Stack Nsock """
Dave Wallaced85075e2018-03-02 13:19:30 -0500660
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800661 @classmethod
662 def setUpClass(cls):
663 super(VCLThruHostStackNsock, cls).setUpClass()
664
665 @classmethod
666 def tearDownClass(cls):
667 super(VCLThruHostStackNsock, cls).tearDownClass()
668
Dave Wallaced85075e2018-03-02 13:19:30 -0500669 def setUp(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800670 super(VCLThruHostStackNsock, self).setUp()
Dave Wallaced85075e2018-03-02 13:19:30 -0500671
672 self.thru_host_stack_setup()
673 if self.vppDebug:
Florin Coras2eb42e72018-11-29 00:39:53 -0800674 self.client_uni_dir_nsock_timeout = 20
Dave Wallaced85075e2018-03-02 13:19:30 -0500675 self.numSockets = "2"
676 else:
Florin Coras2eb42e72018-11-29 00:39:53 -0800677 self.client_uni_dir_nsock_timeout = 20
Dave Wallaced85075e2018-03-02 13:19:30 -0500678 self.numSockets = "5"
679
Dave Wallace45cd3a32018-06-26 01:14:04 -0400680 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
681 "-I", self.numSockets,
Dave Wallacede910062018-03-20 09:22:13 -0400682 self.loop0.local_ip4,
683 self.server_port]
Dave Wallaced85075e2018-03-02 13:19:30 -0500684
685 def tearDown(self):
686 self.thru_host_stack_tear_down()
Florin Corasdc2e2512018-12-03 17:47:26 -0800687 super(VCLThruHostStackNsock, self).tearDown()
Dave Wallaced85075e2018-03-02 13:19:30 -0500688
Dave Wallaced85075e2018-03-02 13:19:30 -0500689 def test_vcl_thru_host_stack_uni_dir_nsock(self):
690 """ run VCL thru host stack uni-directional (multiple sockets) test """
691
692 self.timeout = self.client_uni_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700693 self.thru_host_stack_test("vcl_test_server", self.server_args,
694 "vcl_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500695 self.client_uni_dir_nsock_test_args)
696
697
Florin Corasdc2e2512018-12-03 17:47:26 -0800698class LDPThruHostStackIperf(VCLTestCase):
699 """ LDP Thru Host Stack Iperf """
Dave Wallace816833f2018-03-14 20:01:28 -0400700
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800701 @classmethod
702 def setUpClass(cls):
703 super(LDPThruHostStackIperf, cls).setUpClass()
704
705 @classmethod
706 def tearDownClass(cls):
707 super(LDPThruHostStackIperf, cls).tearDownClass()
708
Dave Wallace816833f2018-03-14 20:01:28 -0400709 def setUp(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800710 super(LDPThruHostStackIperf, self).setUp()
Dave Wallace816833f2018-03-14 20:01:28 -0400711
712 self.thru_host_stack_setup()
713 self.client_iperf3_timeout = 20
Florin Coras1d879142021-05-06 00:08:18 -0700714 self.client_iperf3_args = ["-4", "-t 2", "-c", self.loop0.local_ip4]
715 self.server_iperf3_args = ["-4", "-s"]
Dave Wallace816833f2018-03-14 20:01:28 -0400716
717 def tearDown(self):
718 self.thru_host_stack_tear_down()
Florin Corasdc2e2512018-12-03 17:47:26 -0800719 super(LDPThruHostStackIperf, self).tearDown()
Dave Wallace816833f2018-03-14 20:01:28 -0400720
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700721 def show_commands_at_teardown(self):
722 self.logger.debug(self.vapi.cli("show session verbose 2"))
Florin Coras41d5f542021-01-15 13:49:33 -0800723 self.logger.debug(self.vapi.cli("show app mq"))
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700724
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400725 @unittest.skipUnless(_have_iperf3, "'%s' not found, Skipping.")
Dave Wallace816833f2018-03-14 20:01:28 -0400726 def test_ldp_thru_host_stack_iperf3(self):
727 """ run LDP thru host stack iperf3 test """
728
Dave Wallace816833f2018-03-14 20:01:28 -0400729 self.timeout = self.client_iperf3_timeout
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400730 self.thru_host_stack_test(iperf3, self.server_iperf3_args,
731 iperf3, self.client_iperf3_args)
Dave Wallace816833f2018-03-14 20:01:28 -0400732
733
Florin Coras57a5a2d2020-04-01 23:16:11 +0000734class LDPThruHostStackIperfUdp(VCLTestCase):
735 """ LDP Thru Host Stack Iperf UDP """
736
737 @classmethod
738 def setUpClass(cls):
739 super(LDPThruHostStackIperfUdp, cls).setUpClass()
740
741 @classmethod
742 def tearDownClass(cls):
743 super(LDPThruHostStackIperfUdp, cls).tearDownClass()
744
745 def setUp(self):
746 super(LDPThruHostStackIperfUdp, self).setUp()
747
748 self.thru_host_stack_setup()
749 self.client_iperf3_timeout = 20
Florin Coras1d879142021-05-06 00:08:18 -0700750 self.client_iperf3_args = ["-4", "-t 2", "-u", "-l 1400",
Florin Coras57a5a2d2020-04-01 23:16:11 +0000751 "-c", self.loop0.local_ip4]
Florin Coras1d879142021-05-06 00:08:18 -0700752 self.server_iperf3_args = ["-4", "-s"]
Florin Coras57a5a2d2020-04-01 23:16:11 +0000753
754 def tearDown(self):
755 self.thru_host_stack_tear_down()
756 super(LDPThruHostStackIperfUdp, self).tearDown()
757
758 def show_commands_at_teardown(self):
759 self.logger.debug(self.vapi.cli("show session verbose 2"))
Florin Coras41d5f542021-01-15 13:49:33 -0800760 self.logger.debug(self.vapi.cli("show app mq"))
Florin Coras57a5a2d2020-04-01 23:16:11 +0000761
762 @unittest.skipUnless(_have_iperf3, "'%s' not found, Skipping.")
763 def test_ldp_thru_host_stack_iperf3_udp(self):
764 """ run LDP thru host stack iperf3 UDP test """
765
766 self.timeout = self.client_iperf3_timeout
767 self.thru_host_stack_test(iperf3, self.server_iperf3_args,
768 iperf3, self.client_iperf3_args)
769
770
Florin Coras0ae445e2018-11-29 18:22:10 -0800771class LDPIpv6CutThruTestCase(VCLTestCase):
772 """ LDP IPv6 Cut Thru Tests """
Dave Wallacede910062018-03-20 09:22:13 -0400773
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800774 @classmethod
775 def setUpClass(cls):
776 super(LDPIpv6CutThruTestCase, cls).setUpClass()
777
778 @classmethod
779 def tearDownClass(cls):
780 super(LDPIpv6CutThruTestCase, cls).tearDownClass()
781
Florin Coras41d5f542021-01-15 13:49:33 -0800782 def show_commands_at_teardown(self):
783 self.logger.debug(self.vapi.cli("show session verbose 2"))
784 self.logger.debug(self.vapi.cli("show app mq"))
785
Dave Wallacede910062018-03-20 09:22:13 -0400786 def setUp(self):
Florin Coras0ae445e2018-11-29 18:22:10 -0800787 super(LDPIpv6CutThruTestCase, self).setUp()
Dave Wallacede910062018-03-20 09:22:13 -0400788
789 self.cut_thru_setup()
790 self.client_iperf3_timeout = 20
Florin Coras2eb42e72018-11-29 00:39:53 -0800791 self.client_uni_dir_nsock_timeout = 20
792 self.client_bi_dir_nsock_timeout = 20
Dave Wallacede910062018-03-20 09:22:13 -0400793 self.client_ipv6_echo_test_args = ["-6", "-E", self.echo_phrase, "-X",
794 self.server_ipv6_addr,
795 self.server_port]
Florin Coras1d879142021-05-06 00:08:18 -0700796 self.client_ipv6_iperf3_args = ["-6", "-t 2", "-c",
Florin Corasab2f6db2018-08-31 14:31:41 -0700797 self.server_ipv6_addr]
Florin Coras1d879142021-05-06 00:08:18 -0700798 self.server_ipv6_iperf3_args = ["-6", "-s"]
Dave Wallace45cd3a32018-06-26 01:14:04 -0400799 self.client_ipv6_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
800 "-6",
801 "-I", "2",
Dave Wallacede910062018-03-20 09:22:13 -0400802 self.server_ipv6_addr,
803 self.server_port]
Dave Wallace45cd3a32018-06-26 01:14:04 -0400804 self.client_ipv6_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
805 "-6",
806 "-I", "2",
Dave Wallacede910062018-03-20 09:22:13 -0400807 self.server_ipv6_addr,
808 self.server_port]
809
810 def tearDown(self):
Florin Coras0ae445e2018-11-29 18:22:10 -0800811 super(LDPIpv6CutThruTestCase, self).tearDown()
Paul Vinciguerra9673e3e2019-05-10 20:41:08 -0400812 self.cut_thru_tear_down()
Dave Wallacede910062018-03-20 09:22:13 -0400813
814 def test_ldp_ipv6_cut_thru_echo(self):
815 """ run LDP IPv6 cut thru echo test """
816
Florin Corasab2f6db2018-08-31 14:31:41 -0700817 self.cut_thru_test("sock_test_server",
Dave Wallacede910062018-03-20 09:22:13 -0400818 self.server_ipv6_args,
Florin Corasab2f6db2018-08-31 14:31:41 -0700819 "sock_test_client",
Dave Wallacede910062018-03-20 09:22:13 -0400820 self.client_ipv6_echo_test_args)
821
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400822 @unittest.skipUnless(_have_iperf3, "'%s' not found, Skipping.")
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800823 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Dave Wallacede910062018-03-20 09:22:13 -0400824 def test_ldp_ipv6_cut_thru_iperf3(self):
825 """ run LDP IPv6 cut thru iperf3 test """
826
Dave Wallacede910062018-03-20 09:22:13 -0400827 self.timeout = self.client_iperf3_timeout
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400828 self.cut_thru_test(iperf3, self.server_ipv6_iperf3_args,
829 iperf3, self.client_ipv6_iperf3_args)
Dave Wallacede910062018-03-20 09:22:13 -0400830
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800831 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Dave Wallacede910062018-03-20 09:22:13 -0400832 def test_ldp_ipv6_cut_thru_uni_dir_nsock(self):
833 """ run LDP IPv6 cut thru uni-directional (multiple sockets) test """
834
835 self.timeout = self.client_uni_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700836 self.cut_thru_test("sock_test_server", self.server_ipv6_args,
837 "sock_test_client",
Dave Wallacede910062018-03-20 09:22:13 -0400838 self.client_ipv6_uni_dir_nsock_test_args)
839
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800840 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Florin Coras0f46e162019-07-02 19:33:15 -0700841 @unittest.skip("sock test apps need to be improved")
Dave Wallacede910062018-03-20 09:22:13 -0400842 def test_ldp_ipv6_cut_thru_bi_dir_nsock(self):
843 """ run LDP IPv6 cut thru bi-directional (multiple sockets) test """
844
845 self.timeout = self.client_bi_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700846 self.cut_thru_test("sock_test_server", self.server_ipv6_args,
847 "sock_test_client",
Dave Wallacede910062018-03-20 09:22:13 -0400848 self.client_ipv6_bi_dir_nsock_test_args)
849
Florin Coras0ae445e2018-11-29 18:22:10 -0800850
851class VCLIpv6CutThruTestCase(VCLTestCase):
852 """ VCL IPv6 Cut Thru Tests """
853
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800854 @classmethod
855 def setUpClass(cls):
856 super(VCLIpv6CutThruTestCase, cls).setUpClass()
857
858 @classmethod
859 def tearDownClass(cls):
860 super(VCLIpv6CutThruTestCase, cls).tearDownClass()
861
Florin Coras41d5f542021-01-15 13:49:33 -0800862 def show_commands_at_teardown(self):
863 self.logger.debug(self.vapi.cli("show session verbose 2"))
864 self.logger.debug(self.vapi.cli("show app mq"))
865
Florin Coras0ae445e2018-11-29 18:22:10 -0800866 def setUp(self):
867 super(VCLIpv6CutThruTestCase, self).setUp()
868
869 self.cut_thru_setup()
870 self.client_uni_dir_nsock_timeout = 20
871 self.client_bi_dir_nsock_timeout = 20
872 self.client_ipv6_echo_test_args = ["-6", "-E", self.echo_phrase, "-X",
873 self.server_ipv6_addr,
874 self.server_port]
875 self.client_ipv6_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
876 "-6",
877 "-I", "2",
878 self.server_ipv6_addr,
879 self.server_port]
880 self.client_ipv6_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
881 "-6",
882 "-I", "2",
883 self.server_ipv6_addr,
884 self.server_port]
885
886 def tearDown(self):
Florin Coras0ae445e2018-11-29 18:22:10 -0800887 super(VCLIpv6CutThruTestCase, self).tearDown()
Paul Vinciguerra9673e3e2019-05-10 20:41:08 -0400888 self.cut_thru_tear_down()
Florin Coras0ae445e2018-11-29 18:22:10 -0800889
Florin Coras41d5f542021-01-15 13:49:33 -0800890 def show_commands_at_teardown(self):
891 self.logger.debug(self.vapi.cli("show session verbose 2"))
892 self.logger.debug(self.vapi.cli("show app mq"))
893
Dave Wallacede910062018-03-20 09:22:13 -0400894 def test_vcl_ipv6_cut_thru_echo(self):
895 """ run VCL IPv6 cut thru echo test """
896
Florin Corasab2f6db2018-08-31 14:31:41 -0700897 self.cut_thru_test("vcl_test_server",
Dave Wallacede910062018-03-20 09:22:13 -0400898 self.server_ipv6_args,
Florin Corasab2f6db2018-08-31 14:31:41 -0700899 "vcl_test_client",
Dave Wallacede910062018-03-20 09:22:13 -0400900 self.client_ipv6_echo_test_args)
901
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800902 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Dave Wallacede910062018-03-20 09:22:13 -0400903 def test_vcl_ipv6_cut_thru_uni_dir_nsock(self):
904 """ run VCL IPv6 cut thru uni-directional (multiple sockets) test """
905
906 self.timeout = self.client_uni_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700907 self.cut_thru_test("vcl_test_server", self.server_ipv6_args,
908 "vcl_test_client",
Dave Wallacede910062018-03-20 09:22:13 -0400909 self.client_ipv6_uni_dir_nsock_test_args)
910
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800911 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Dave Wallacede910062018-03-20 09:22:13 -0400912 def test_vcl_ipv6_cut_thru_bi_dir_nsock(self):
913 """ run VCL IPv6 cut thru bi-directional (multiple sockets) test """
914
915 self.timeout = self.client_bi_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700916 self.cut_thru_test("vcl_test_server", self.server_ipv6_args,
917 "vcl_test_client",
Dave Wallacede910062018-03-20 09:22:13 -0400918 self.client_ipv6_bi_dir_nsock_test_args)
919
920
Florin Corasdc2e2512018-12-03 17:47:26 -0800921class VCLIpv6ThruHostStackEcho(VCLTestCase):
922 """ VCL IPv6 Thru Host Stack Echo """
Dave Wallacede910062018-03-20 09:22:13 -0400923
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800924 @classmethod
925 def setUpClass(cls):
926 super(VCLIpv6ThruHostStackEcho, cls).setUpClass()
927
928 @classmethod
929 def tearDownClass(cls):
930 super(VCLIpv6ThruHostStackEcho, cls).tearDownClass()
931
Dave Wallacede910062018-03-20 09:22:13 -0400932 def setUp(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800933 super(VCLIpv6ThruHostStackEcho, self).setUp()
Dave Wallacede910062018-03-20 09:22:13 -0400934
935 self.thru_host_stack_ipv6_setup()
936 self.client_ipv6_echo_test_args = ["-6", "-E", self.echo_phrase, "-X",
937 self.loop0.local_ip6,
938 self.server_port]
939
940 def tearDown(self):
941 self.thru_host_stack_ipv6_tear_down()
Florin Corasdc2e2512018-12-03 17:47:26 -0800942 super(VCLIpv6ThruHostStackEcho, self).tearDown()
Dave Wallacede910062018-03-20 09:22:13 -0400943
944 def test_vcl_ipv6_thru_host_stack_echo(self):
945 """ run VCL IPv6 thru host stack echo test """
946
Florin Corasdc2e2512018-12-03 17:47:26 -0800947 self.thru_host_stack_test("vcl_test_server",
Damjan Marion855e2682018-08-24 13:37:45 +0200948 self.server_ipv6_args,
Florin Corasab2f6db2018-08-31 14:31:41 -0700949 "vcl_test_client",
Florin Corasdc2e2512018-12-03 17:47:26 -0800950 self.client_ipv6_echo_test_args)
Dave Wallacede910062018-03-20 09:22:13 -0400951
952
Dave Wallacecfcf2f42018-02-16 18:31:56 -0500953if __name__ == '__main__':
954 unittest.main(testRunner=VppTestRunner)