blob: 50d36d5317dd282b18507bcbb5f5944ebef6efa9 [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
Damjan Marion5546e432021-09-30 20:04:14 +02008import glob
Dave Wallaced85075e2018-03-02 13:19:30 -05009from framework import VppTestCase, VppTestRunner, running_extended_tests, \
Dave Wallace5c520912021-05-27 19:44:50 -040010 Worker
Neale Ranns097fa662018-05-01 05:17:55 -070011from vpp_ip_route import VppIpTable, VppIpRoute, VppRoutePath, FibPathProto
Dave Wallacecfcf2f42018-02-16 18:31:56 -050012
Paul Vinciguerra063366e2019-06-30 15:38:55 -040013iperf3 = '/usr/bin/iperf3'
14
15
16def have_app(app):
17 try:
18 subprocess.check_output([app, '-v'])
19 except (subprocess.CalledProcessError, OSError):
20 return False
21 return True
22
23
24_have_iperf3 = have_app(iperf3)
Paul Vinciguerra063366e2019-06-30 15:38:55 -040025
Dave Wallacecfcf2f42018-02-16 18:31:56 -050026
Dave Wallace816833f2018-03-14 20:01:28 -040027class VCLAppWorker(Worker):
Dave Wallace42996c02018-02-26 14:40:13 -050028 """ VCL Test Application Worker """
29
Damjan Marion5546e432021-09-30 20:04:14 +020030 libname = "libvcl_ldpreload.so"
31
32 class LibraryNotFound(Exception):
33 pass
34
Paul Vinciguerra48bdbcd2019-12-04 19:43:53 -050035 def __init__(self, build_dir, appname, executable_args, logger, env=None,
Dave Wallace4ee17d82021-05-20 14:01:51 -040036 role=None, *args, **kwargs):
37 self.role = role
Damjan Marion5546e432021-09-30 20:04:14 +020038 vpp_install_path = os.getenv('VPP_INSTALL_PATH')
39
40 vcl_ldpreload_glob = "{}/**/{}".format(vpp_install_path, self.libname)
41 vcl_ldpreload_so = glob.glob(vcl_ldpreload_glob, recursive=True)
42
43 if len(vcl_ldpreload_so) < 1:
44 raise LibraryNotFound("cannot locate library: {}".format(
45 self.libname))
46
47 vcl_ldpreload_so = vcl_ldpreload_so[0]
48
Paul Vinciguerra48bdbcd2019-12-04 19:43:53 -050049 if env is None:
50 env = {}
Dave Wallace816833f2018-03-14 20:01:28 -040051 if "iperf" in appname:
52 app = appname
Damjan Marion5546e432021-09-30 20:04:14 +020053 env.update({'LD_PRELOAD': vcl_ldpreload_so})
Florin Corasab2f6db2018-08-31 14:31:41 -070054 elif "sock" in appname:
55 app = "%s/vpp/bin/%s" % (build_dir, appname)
Damjan Marion5546e432021-09-30 20:04:14 +020056 env.update({'LD_PRELOAD': vcl_ldpreload_so})
Dave Wallace816833f2018-03-14 20:01:28 -040057 else:
Florin Corasab2f6db2018-08-31 14:31:41 -070058 app = "%s/vpp/bin/%s" % (build_dir, appname)
Paul Vinciguerra48bdbcd2019-12-04 19:43:53 -050059 self.args = [app] + executable_args
60 super(VCLAppWorker, self).__init__(self.args, logger, env,
61 *args, **kwargs)
Dave Wallace42996c02018-02-26 14:40:13 -050062
63
Dave Wallace816833f2018-03-14 20:01:28 -040064class VCLTestCase(VppTestCase):
Dave Wallace42996c02018-02-26 14:40:13 -050065 """ VCL Test Class """
Florin Coras4c45d6f2021-08-12 08:38:02 -070066 session_startup = ["poll-main"]
Dave Wallace42996c02018-02-26 14:40:13 -050067
Paul Vinciguerra8d991d92019-01-25 14:05:48 -080068 @classmethod
69 def setUpClass(cls):
Florin Coras4c45d6f2021-08-12 08:38:02 -070070 if cls.session_startup:
71 conf = "session {" + " ".join(cls.session_startup) + "}"
72 cls.extra_vpp_punt_config = [conf]
Paul Vinciguerra8d991d92019-01-25 14:05:48 -080073 super(VCLTestCase, cls).setUpClass()
74
75 @classmethod
76 def tearDownClass(cls):
77 super(VCLTestCase, cls).tearDownClass()
78
79 def setUp(self):
Klement Sekerab8c72a42018-11-08 11:21:39 +010080 var = "VPP_BUILD_DIR"
Dave Wallaced85075e2018-03-02 13:19:30 -050081 self.build_dir = os.getenv(var, None)
82 if self.build_dir is None:
Paul Vinciguerra063366e2019-06-30 15:38:55 -040083 raise EnvironmentError("Environment variable `%s' not set" % var)
Dave Wallaced85075e2018-03-02 13:19:30 -050084 self.vppDebug = 'vpp_debug' in self.build_dir
Dave Wallace9f11c012018-02-28 17:55:23 -050085 self.server_addr = "127.0.0.1"
86 self.server_port = "22000"
Dave Wallace816833f2018-03-14 20:01:28 -040087 self.server_args = [self.server_port]
Dave Wallacede910062018-03-20 09:22:13 -040088 self.server_ipv6_addr = "::1"
89 self.server_ipv6_args = ["-6", self.server_port]
Florin Corasdc2e2512018-12-03 17:47:26 -080090 self.timeout = 20
Dave Wallace9f11c012018-02-28 17:55:23 -050091 self.echo_phrase = "Hello, world! Jenny is a friend of mine."
Florin Corasdc2e2512018-12-03 17:47:26 -080092 self.pre_test_sleep = 0.3
93 self.post_test_sleep = 0.2
Florin Coras4c45d6f2021-08-12 08:38:02 -070094 self.sapi_client_sock = ""
95 self.sapi_server_sock = ""
Florin Corasdc2e2512018-12-03 17:47:26 -080096
97 if os.path.isfile("/tmp/ldp_server_af_unix_socket"):
98 os.remove("/tmp/ldp_server_af_unix_socket")
Dave Wallace42996c02018-02-26 14:40:13 -050099
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800100 super(VCLTestCase, self).setUp()
Dave Wallace42996c02018-02-26 14:40:13 -0500101
Florin Coras4c45d6f2021-08-12 08:38:02 -0700102 def update_vcl_app_env(self, ns_id, ns_secret, attach_sock):
103 if not ns_id:
104 if 'VCL_APP_NAMESPACE_ID' in self.vcl_app_env:
105 del self.vcl_app_env['VCL_APP_NAMESPACE_ID']
106 else:
107 self.vcl_app_env['VCL_APP_NAMESPACE_ID'] = ns_id
108
109 if not ns_secret:
110 if 'VCL_APP_NAMESPACE_SECRET' in self.vcl_app_env:
111 del self.vcl_app_env['VCL_APP_NAMESPACE_SECRET']
112 else:
113 self.vcl_app_env['VCL_APP_NAMESPACE_SECRET'] = ns_secret
114
115 if not attach_sock:
116 self.vcl_app_env['VCL_VPP_API_SOCKET'] = self.get_api_sock_path()
117 if 'VCL_VPP_SAPI_SOCKET' in self.vcl_app_env:
118 del self.vcl_app_env['VCL_VPP_SAPI_SOCKET']
119 else:
120 sapi_sock = "%s/app_ns_sockets/%s" % (self.tempdir, attach_sock)
121 self.vcl_app_env['VCL_VPP_SAPI_SOCKET'] = sapi_sock
122 if 'VCL_VPP_API_SOCKET' in self.vcl_app_env:
123 del self.vcl_app_env['VCL_VPP_API_SOCKET']
124
Dave Wallace9f11c012018-02-28 17:55:23 -0500125 def cut_thru_setup(self):
Jakub Grajciar6a2794e2020-11-24 11:22:01 +0100126 self.vapi.session_enable_disable(is_enable=1)
Dave Wallacea67a03e2018-02-20 12:39:37 -0500127
Dave Wallace9f11c012018-02-28 17:55:23 -0500128 def cut_thru_tear_down(self):
Jakub Grajciar6a2794e2020-11-24 11:22:01 +0100129 self.vapi.session_enable_disable(is_enable=0)
Dave Wallacea67a03e2018-02-20 12:39:37 -0500130
Dave Wallace816833f2018-03-14 20:01:28 -0400131 def cut_thru_test(self, server_app, server_args, client_app, client_args):
Florin Coras4c45d6f2021-08-12 08:38:02 -0700132 self.vcl_app_env = {'VCL_APP_SCOPE_LOCAL': "true"}
133
134 self.update_vcl_app_env("", "", self.sapi_server_sock)
Dave Wallace816833f2018-03-14 20:01:28 -0400135 worker_server = VCLAppWorker(self.build_dir, server_app, server_args,
Florin Coras4c45d6f2021-08-12 08:38:02 -0700136 self.logger, self.vcl_app_env, "server")
Dave Wallacecfcf2f42018-02-16 18:31:56 -0500137 worker_server.start()
Florin Corasdc2e2512018-12-03 17:47:26 -0800138 self.sleep(self.pre_test_sleep)
Florin Coras4c45d6f2021-08-12 08:38:02 -0700139
140 self.update_vcl_app_env("", "", self.sapi_client_sock)
Dave Wallace816833f2018-03-14 20:01:28 -0400141 worker_client = VCLAppWorker(self.build_dir, client_app, client_args,
Florin Coras4c45d6f2021-08-12 08:38:02 -0700142 self.logger, self.vcl_app_env, "client")
Dave Wallacecfcf2f42018-02-16 18:31:56 -0500143 worker_client.start()
Dave Wallace42996c02018-02-26 14:40:13 -0500144 worker_client.join(self.timeout)
Dave Wallacefef3f7b2018-03-09 12:04:10 -0500145 try:
146 self.validateResults(worker_client, worker_server, self.timeout)
Klement Sekerab9ef2732018-06-24 22:49:33 +0200147 except Exception as error:
Dave Wallacefef3f7b2018-03-09 12:04:10 -0500148 self.fail("Failed with %s" % error)
Florin Corasdc2e2512018-12-03 17:47:26 -0800149 self.sleep(self.post_test_sleep)
Dave Wallacecfcf2f42018-02-16 18:31:56 -0500150
Dave Wallace9f11c012018-02-28 17:55:23 -0500151 def thru_host_stack_setup(self):
Jakub Grajciar6a2794e2020-11-24 11:22:01 +0100152 self.vapi.session_enable_disable(is_enable=1)
Klement Sekerab9ef2732018-06-24 22:49:33 +0200153 self.create_loopback_interfaces(2)
Dave Wallacea67a03e2018-02-20 12:39:37 -0500154
Florin Coras56b39f62018-03-27 17:29:32 -0700155 table_id = 1
Dave Wallacea67a03e2018-02-20 12:39:37 -0500156
157 for i in self.lo_interfaces:
158 i.admin_up()
159
160 if table_id != 0:
161 tbl = VppIpTable(self, table_id)
162 tbl.add_vpp_config()
163
164 i.set_table_ip4(table_id)
165 i.config_ip4()
166 table_id += 1
167
168 # Configure namespaces
Jakub Grajciarb4e5e502020-01-31 09:35:29 +0100169 self.vapi.app_namespace_add_del(namespace_id="1", secret=1234,
Ole Troane1ade682019-03-04 23:55:43 +0100170 sw_if_index=self.loop0.sw_if_index)
Jakub Grajciarb4e5e502020-01-31 09:35:29 +0100171 self.vapi.app_namespace_add_del(namespace_id="2", secret=5678,
Ole Troane1ade682019-03-04 23:55:43 +0100172 sw_if_index=self.loop1.sw_if_index)
Dave Wallacea67a03e2018-02-20 12:39:37 -0500173
Dave Wallacea67a03e2018-02-20 12:39:37 -0500174 # Add inter-table routes
175 ip_t01 = VppIpRoute(self, self.loop1.local_ip4, 32,
176 [VppRoutePath("0.0.0.0",
177 0xffffffff,
Florin Coras56b39f62018-03-27 17:29:32 -0700178 nh_table_id=2)], table_id=1)
Dave Wallacea67a03e2018-02-20 12:39:37 -0500179 ip_t10 = VppIpRoute(self, self.loop0.local_ip4, 32,
180 [VppRoutePath("0.0.0.0",
181 0xffffffff,
Florin Coras56b39f62018-03-27 17:29:32 -0700182 nh_table_id=1)], table_id=2)
Dave Wallacea67a03e2018-02-20 12:39:37 -0500183 ip_t01.add_vpp_config()
184 ip_t10.add_vpp_config()
Florin Coras56b39f62018-03-27 17:29:32 -0700185 self.logger.debug(self.vapi.cli("show ip fib"))
Dave Wallacea67a03e2018-02-20 12:39:37 -0500186
Dave Wallace9f11c012018-02-28 17:55:23 -0500187 def thru_host_stack_tear_down(self):
188 for i in self.lo_interfaces:
189 i.unconfig_ip4()
190 i.set_table_ip4(0)
191 i.admin_down()
192
Dave Wallacede910062018-03-20 09:22:13 -0400193 def thru_host_stack_ipv6_setup(self):
Jakub Grajciar6a2794e2020-11-24 11:22:01 +0100194 self.vapi.session_enable_disable(is_enable=1)
Klement Sekerab9ef2732018-06-24 22:49:33 +0200195 self.create_loopback_interfaces(2)
Dave Wallacede910062018-03-20 09:22:13 -0400196
197 table_id = 1
198
199 for i in self.lo_interfaces:
200 i.admin_up()
201
202 tbl = VppIpTable(self, table_id, is_ip6=1)
203 tbl.add_vpp_config()
204
205 i.set_table_ip6(table_id)
206 i.config_ip6()
207 table_id += 1
208
209 # Configure namespaces
Jakub Grajciarb4e5e502020-01-31 09:35:29 +0100210 self.vapi.app_namespace_add_del(namespace_id="1", secret=1234,
Ole Troane1ade682019-03-04 23:55:43 +0100211 sw_if_index=self.loop0.sw_if_index)
Jakub Grajciarb4e5e502020-01-31 09:35:29 +0100212 self.vapi.app_namespace_add_del(namespace_id="2", secret=5678,
Ole Troane1ade682019-03-04 23:55:43 +0100213 sw_if_index=self.loop1.sw_if_index)
Dave Wallacede910062018-03-20 09:22:13 -0400214
215 # Add inter-table routes
216 ip_t01 = VppIpRoute(self, self.loop1.local_ip6, 128,
Florin Coras56b39f62018-03-27 17:29:32 -0700217 [VppRoutePath("::0", 0xffffffff,
Neale Ranns097fa662018-05-01 05:17:55 -0700218 nh_table_id=2)],
219 table_id=1)
Dave Wallacede910062018-03-20 09:22:13 -0400220 ip_t10 = VppIpRoute(self, self.loop0.local_ip6, 128,
Florin Coras56b39f62018-03-27 17:29:32 -0700221 [VppRoutePath("::0", 0xffffffff,
Neale Ranns097fa662018-05-01 05:17:55 -0700222 nh_table_id=1)],
223 table_id=2)
Dave Wallacede910062018-03-20 09:22:13 -0400224 ip_t01.add_vpp_config()
225 ip_t10.add_vpp_config()
226 self.logger.debug(self.vapi.cli("show interface addr"))
227 self.logger.debug(self.vapi.cli("show ip6 fib"))
228
229 def thru_host_stack_ipv6_tear_down(self):
230 for i in self.lo_interfaces:
231 i.unconfig_ip6()
232 i.set_table_ip6(0)
233 i.admin_down()
234
Jakub Grajciar6a2794e2020-11-24 11:22:01 +0100235 self.vapi.session_enable_disable(is_enable=0)
Dave Wallacede910062018-03-20 09:22:13 -0400236
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400237 @unittest.skipUnless(_have_iperf3, "'%s' not found, Skipping.")
Dave Wallace816833f2018-03-14 20:01:28 -0400238 def thru_host_stack_test(self, server_app, server_args,
239 client_app, client_args):
Florin Coras4c45d6f2021-08-12 08:38:02 -0700240 self.vcl_app_env = {'VCL_APP_SCOPE_GLOBAL': "true"}
Dave Wallace9f11c012018-02-28 17:55:23 -0500241
Florin Coras4c45d6f2021-08-12 08:38:02 -0700242 self.update_vcl_app_env("1", "1234", self.sapi_server_sock)
Dave Wallace816833f2018-03-14 20:01:28 -0400243 worker_server = VCLAppWorker(self.build_dir, server_app, server_args,
Florin Coras4c45d6f2021-08-12 08:38:02 -0700244 self.logger, self.vcl_app_env, "server")
Dave Wallacea67a03e2018-02-20 12:39:37 -0500245 worker_server.start()
Florin Corasdc2e2512018-12-03 17:47:26 -0800246 self.sleep(self.pre_test_sleep)
Dave Wallace42996c02018-02-26 14:40:13 -0500247
Florin Coras4c45d6f2021-08-12 08:38:02 -0700248 self.update_vcl_app_env("2", "5678", self.sapi_client_sock)
Dave Wallace816833f2018-03-14 20:01:28 -0400249 worker_client = VCLAppWorker(self.build_dir, client_app, client_args,
Florin Coras4c45d6f2021-08-12 08:38:02 -0700250 self.logger, self.vcl_app_env, "client")
Dave Wallacea67a03e2018-02-20 12:39:37 -0500251 worker_client.start()
Dave Wallace42996c02018-02-26 14:40:13 -0500252 worker_client.join(self.timeout)
253
Dave Wallacefef3f7b2018-03-09 12:04:10 -0500254 try:
255 self.validateResults(worker_client, worker_server, self.timeout)
Klement Sekerab9ef2732018-06-24 22:49:33 +0200256 except Exception as error:
Dave Wallacefef3f7b2018-03-09 12:04:10 -0500257 self.fail("Failed with %s" % error)
Florin Corasdc2e2512018-12-03 17:47:26 -0800258 self.sleep(self.post_test_sleep)
Dave Wallacea67a03e2018-02-20 12:39:37 -0500259
Dave Wallace9f11c012018-02-28 17:55:23 -0500260 def validateResults(self, worker_client, worker_server, timeout):
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400261 if worker_server.process is None:
262 raise RuntimeError('worker_server is not running.')
Dave Wallaced85075e2018-03-02 13:19:30 -0500263 if os.path.isdir('/proc/{}'.format(worker_server.process.pid)):
264 self.logger.info("Killing server worker process (pid %d)" %
265 worker_server.process.pid)
Dave Barachad646872019-05-06 10:49:41 -0400266 os.killpg(os.getpgid(worker_server.process.pid), signal.SIGTERM)
Dave Wallaced85075e2018-03-02 13:19:30 -0500267 worker_server.join()
Dave Wallace9f11c012018-02-28 17:55:23 -0500268 self.logger.info("Client worker result is `%s'" % worker_client.result)
269 error = False
270 if worker_client.result is None:
271 try:
272 error = True
273 self.logger.error(
Dave Wallaced85075e2018-03-02 13:19:30 -0500274 "Timeout: %ss! Killing client worker process (pid %d)" %
275 (timeout, worker_client.process.pid))
Dave Wallace9f11c012018-02-28 17:55:23 -0500276 os.killpg(os.getpgid(worker_client.process.pid),
Florin Corasdc2e2512018-12-03 17:47:26 -0800277 signal.SIGKILL)
Dave Wallace9f11c012018-02-28 17:55:23 -0500278 worker_client.join()
Dave Wallace07c0a9d2019-05-13 19:21:24 -0400279 except OSError:
Dave Wallace9f11c012018-02-28 17:55:23 -0500280 self.logger.debug(
281 "Couldn't kill client worker process")
282 raise
283 if error:
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400284 raise RuntimeError(
Dave Wallace9f11c012018-02-28 17:55:23 -0500285 "Timeout! Client worker did not finish in %ss" % timeout)
286 self.assert_equal(worker_client.result, 0, "Binary test return code")
287
288
Florin Coras0ae445e2018-11-29 18:22:10 -0800289class LDPCutThruTestCase(VCLTestCase):
290 """ LDP Cut Thru Tests """
Dave Wallace9f11c012018-02-28 17:55:23 -0500291
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800292 @classmethod
293 def setUpClass(cls):
Florin Coras4c45d6f2021-08-12 08:38:02 -0700294 cls.session_startup = ["poll-main", "use-app-socket-api"]
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800295 super(LDPCutThruTestCase, cls).setUpClass()
296
297 @classmethod
298 def tearDownClass(cls):
299 super(LDPCutThruTestCase, cls).tearDownClass()
300
Dave Wallace9f11c012018-02-28 17:55:23 -0500301 def setUp(self):
Florin Coras0ae445e2018-11-29 18:22:10 -0800302 super(LDPCutThruTestCase, self).setUp()
Dave Wallace9f11c012018-02-28 17:55:23 -0500303
304 self.cut_thru_setup()
Dave Wallacede910062018-03-20 09:22:13 -0400305 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
306 self.server_addr, self.server_port]
Dave Wallace816833f2018-03-14 20:01:28 -0400307 self.client_iperf3_timeout = 20
Florin Coras1d879142021-05-06 00:08:18 -0700308 self.client_iperf3_args = ["-4", "-t 2", "-c", self.server_addr]
309 self.server_iperf3_args = ["-4", "-s"]
Florin Coras2eb42e72018-11-29 00:39:53 -0800310 self.client_uni_dir_nsock_timeout = 20
Dave Wallace45cd3a32018-06-26 01:14:04 -0400311 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
312 "-I", "2",
Dave Wallacede910062018-03-20 09:22:13 -0400313 self.server_addr,
314 self.server_port]
Florin Coras2eb42e72018-11-29 00:39:53 -0800315 self.client_bi_dir_nsock_timeout = 20
Dave Wallace45cd3a32018-06-26 01:14:04 -0400316 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
317 "-I", "2",
Dave Wallacede910062018-03-20 09:22:13 -0400318 self.server_addr,
319 self.server_port]
Florin Coras4c45d6f2021-08-12 08:38:02 -0700320 self.sapi_client_sock = "default"
321 self.sapi_server_sock = "default"
Dave Wallace9f11c012018-02-28 17:55:23 -0500322
323 def tearDown(self):
Florin Coras0ae445e2018-11-29 18:22:10 -0800324 super(LDPCutThruTestCase, self).tearDown()
Paul Vinciguerra9673e3e2019-05-10 20:41:08 -0400325 self.cut_thru_tear_down()
Dave Wallace9f11c012018-02-28 17:55:23 -0500326
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700327 def show_commands_at_teardown(self):
328 self.logger.debug(self.vapi.cli("show session verbose 2"))
Florin Coras41d5f542021-01-15 13:49:33 -0800329 self.logger.debug(self.vapi.cli("show app mq"))
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700330
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800331 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Dave Wallace9f11c012018-02-28 17:55:23 -0500332 def test_ldp_cut_thru_echo(self):
333 """ run LDP cut thru echo test """
334
Florin Corasab2f6db2018-08-31 14:31:41 -0700335 self.cut_thru_test("sock_test_server", self.server_args,
336 "sock_test_client", self.client_echo_test_args)
Dave Wallace816833f2018-03-14 20:01:28 -0400337
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400338 @unittest.skipUnless(_have_iperf3, "'%s' not found, Skipping.")
Dave Wallace816833f2018-03-14 20:01:28 -0400339 def test_ldp_cut_thru_iperf3(self):
340 """ run LDP cut thru iperf3 test """
341
Dave Wallace816833f2018-03-14 20:01:28 -0400342 self.timeout = self.client_iperf3_timeout
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400343 self.cut_thru_test(iperf3, self.server_iperf3_args,
344 iperf3, self.client_iperf3_args)
Dave Wallace9f11c012018-02-28 17:55:23 -0500345
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800346 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Dave Wallaced85075e2018-03-02 13:19:30 -0500347 def test_ldp_cut_thru_uni_dir_nsock(self):
348 """ run LDP cut thru uni-directional (multiple sockets) test """
349
350 self.timeout = self.client_uni_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700351 self.cut_thru_test("sock_test_server", self.server_args,
352 "sock_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500353 self.client_uni_dir_nsock_test_args)
354
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800355 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Florin Coras0f46e162019-07-02 19:33:15 -0700356 @unittest.skip("sock test apps need to be improved")
Dave Wallaced85075e2018-03-02 13:19:30 -0500357 def test_ldp_cut_thru_bi_dir_nsock(self):
358 """ run LDP cut thru bi-directional (multiple sockets) test """
359
360 self.timeout = self.client_bi_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700361 self.cut_thru_test("sock_test_server", self.server_args,
362 "sock_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500363 self.client_bi_dir_nsock_test_args)
364
Florin Coras0ae445e2018-11-29 18:22:10 -0800365
366class VCLCutThruTestCase(VCLTestCase):
367 """ VCL Cut Thru Tests """
368
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800369 @classmethod
370 def setUpClass(cls):
371 super(VCLCutThruTestCase, cls).setUpClass()
372
373 @classmethod
374 def tearDownClass(cls):
375 super(VCLCutThruTestCase, cls).tearDownClass()
376
Florin Coras0ae445e2018-11-29 18:22:10 -0800377 def setUp(self):
378 super(VCLCutThruTestCase, self).setUp()
379
380 self.cut_thru_setup()
381 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
382 self.server_addr, self.server_port]
383
384 self.client_uni_dir_nsock_timeout = 20
385 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
386 "-I", "2",
387 self.server_addr,
388 self.server_port]
389 self.client_bi_dir_nsock_timeout = 20
390 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
391 "-I", "2",
392 self.server_addr,
393 self.server_port]
394
395 def tearDown(self):
Florin Coras0ae445e2018-11-29 18:22:10 -0800396 super(VCLCutThruTestCase, self).tearDown()
397
Florin Coras317b8e02019-04-17 09:57:46 -0700398 def show_commands_at_teardown(self):
399 self.logger.debug(self.vapi.cli("show session verbose 2"))
Florin Coras41d5f542021-01-15 13:49:33 -0800400 self.logger.debug(self.vapi.cli("show app mq"))
Florin Coras317b8e02019-04-17 09:57:46 -0700401
Dave Wallace9f11c012018-02-28 17:55:23 -0500402 def test_vcl_cut_thru_echo(self):
403 """ run VCL cut thru echo test """
404
Florin Corasab2f6db2018-08-31 14:31:41 -0700405 self.cut_thru_test("vcl_test_server", self.server_args,
406 "vcl_test_client", self.client_echo_test_args)
Dave Wallace9f11c012018-02-28 17:55:23 -0500407
Dave Wallaced85075e2018-03-02 13:19:30 -0500408 def test_vcl_cut_thru_uni_dir_nsock(self):
409 """ run VCL cut thru uni-directional (multiple sockets) test """
410
411 self.timeout = self.client_uni_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700412 self.cut_thru_test("vcl_test_server", self.server_args,
413 "vcl_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500414 self.client_uni_dir_nsock_test_args)
415
Dave Wallaced85075e2018-03-02 13:19:30 -0500416 def test_vcl_cut_thru_bi_dir_nsock(self):
417 """ run VCL cut thru bi-directional (multiple sockets) test """
418
419 self.timeout = self.client_bi_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700420 self.cut_thru_test("vcl_test_server", self.server_args,
421 "vcl_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500422 self.client_bi_dir_nsock_test_args)
423
Dave Wallace9f11c012018-02-28 17:55:23 -0500424
Florin Corasdc2e2512018-12-03 17:47:26 -0800425class VCLThruHostStackEcho(VCLTestCase):
426 """ VCL Thru Host Stack Echo """
Dave Wallaced85075e2018-03-02 13:19:30 -0500427
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800428 @classmethod
429 def setUpClass(cls):
430 super(VCLThruHostStackEcho, cls).setUpClass()
431
432 @classmethod
433 def tearDownClass(cls):
434 super(VCLThruHostStackEcho, cls).tearDownClass()
435
Dave Wallaced85075e2018-03-02 13:19:30 -0500436 def setUp(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800437 super(VCLThruHostStackEcho, self).setUp()
Dave Wallaced85075e2018-03-02 13:19:30 -0500438
439 self.thru_host_stack_setup()
Florin Corasdc2e2512018-12-03 17:47:26 -0800440 self.client_bi_dir_nsock_timeout = 20
441 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
442 "-I", "2",
443 self.loop0.local_ip4,
444 self.server_port]
445 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
446 self.loop0.local_ip4,
447 self.server_port]
448
449 def tearDown(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800450 self.thru_host_stack_tear_down()
451 super(VCLThruHostStackEcho, self).tearDown()
452
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700453 def show_commands_at_teardown(self):
454 self.logger.debug(self.vapi.cli("show app server"))
455 self.logger.debug(self.vapi.cli("show session verbose"))
Florin Coras41d5f542021-01-15 13:49:33 -0800456 self.logger.debug(self.vapi.cli("show app mq"))
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700457
Florin Corasdc2e2512018-12-03 17:47:26 -0800458
Florin Coras8a140612019-02-18 22:39:39 -0800459class VCLThruHostStackTLS(VCLTestCase):
460 """ VCL Thru Host Stack TLS """
461
462 @classmethod
463 def setUpClass(cls):
Florin Coras4c45d6f2021-08-12 08:38:02 -0700464 cls.session_startup = ["poll-main", "use-app-socket-api"]
Florin Coras8a140612019-02-18 22:39:39 -0800465 super(VCLThruHostStackTLS, cls).setUpClass()
466
467 @classmethod
468 def tearDownClass(cls):
469 super(VCLThruHostStackTLS, cls).tearDownClass()
470
471 def setUp(self):
472 super(VCLThruHostStackTLS, self).setUp()
473
474 self.thru_host_stack_setup()
475 self.client_uni_dir_tls_timeout = 20
Dave Wallace03dd90a2019-03-25 19:34:50 -0400476 self.server_tls_args = ["-L", self.server_port]
477 self.client_uni_dir_tls_test_args = ["-N", "1000", "-U", "-X", "-L",
Florin Coras8a140612019-02-18 22:39:39 -0800478 self.loop0.local_ip4,
479 self.server_port]
Florin Coras4c45d6f2021-08-12 08:38:02 -0700480 self.sapi_server_sock = "1"
481 self.sapi_client_sock = "2"
Florin Coras8a140612019-02-18 22:39:39 -0800482
483 def test_vcl_thru_host_stack_tls_uni_dir(self):
484 """ run VCL thru host stack uni-directional TLS test """
485
486 self.timeout = self.client_uni_dir_tls_timeout
487 self.thru_host_stack_test("vcl_test_server", self.server_tls_args,
488 "vcl_test_client",
489 self.client_uni_dir_tls_test_args)
490
491 def tearDown(self):
Florin Coras8a140612019-02-18 22:39:39 -0800492 self.thru_host_stack_tear_down()
493 super(VCLThruHostStackTLS, self).tearDown()
494
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700495 def show_commands_at_teardown(self):
496 self.logger.debug(self.vapi.cli("show app server"))
497 self.logger.debug(self.vapi.cli("show session verbose 2"))
Florin Coras41d5f542021-01-15 13:49:33 -0800498 self.logger.debug(self.vapi.cli("show app mq"))
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700499
Florin Coras8a140612019-02-18 22:39:39 -0800500
Florin Corascec1b272021-05-06 12:46:04 -0700501class VCLThruHostStackDTLS(VCLTestCase):
502 """ VCL Thru Host Stack DTLS """
503
504 @classmethod
505 def setUpClass(cls):
506 super(VCLThruHostStackDTLS, cls).setUpClass()
507
508 @classmethod
509 def tearDownClass(cls):
510 super(VCLThruHostStackDTLS, cls).tearDownClass()
511
512 def setUp(self):
513 super(VCLThruHostStackDTLS, self).setUp()
514
515 self.thru_host_stack_setup()
516 self.client_uni_dir_dtls_timeout = 20
Florin Corasfb50bc32021-05-18 00:28:59 -0700517 self.server_dtls_args = ["-p", "dtls", self.server_port]
Florin Corascec1b272021-05-06 12:46:04 -0700518 self.client_uni_dir_dtls_test_args = ["-N", "1000", "-U", "-X",
Florin Corasfb50bc32021-05-18 00:28:59 -0700519 "-p", "dtls", "-T 1400",
Florin Corascec1b272021-05-06 12:46:04 -0700520 self.loop0.local_ip4,
521 self.server_port]
522
523 def test_vcl_thru_host_stack_dtls_uni_dir(self):
524 """ run VCL thru host stack uni-directional DTLS test """
525
526 self.timeout = self.client_uni_dir_dtls_timeout
527 self.thru_host_stack_test("vcl_test_server", self.server_dtls_args,
528 "vcl_test_client",
529 self.client_uni_dir_dtls_test_args)
530
531 def tearDown(self):
532 self.thru_host_stack_tear_down()
533 super(VCLThruHostStackDTLS, self).tearDown()
534
535 def show_commands_at_teardown(self):
536 self.logger.debug(self.vapi.cli("show app server"))
537 self.logger.debug(self.vapi.cli("show session verbose 2"))
538 self.logger.debug(self.vapi.cli("show app mq"))
539
540
Florin Corasdebb3522021-05-18 00:35:50 -0700541class VCLThruHostStackQUIC(VCLTestCase):
542 """ VCL Thru Host Stack QUIC """
543
544 @classmethod
545 def setUpClass(cls):
546 cls.extra_vpp_plugin_config.append("plugin quic_plugin.so { enable }")
547 super(VCLThruHostStackQUIC, cls).setUpClass()
548
549 @classmethod
550 def tearDownClass(cls):
551 super(VCLThruHostStackQUIC, cls).tearDownClass()
552
553 def setUp(self):
554 super(VCLThruHostStackQUIC, self).setUp()
555
556 self.thru_host_stack_setup()
557 self.client_uni_dir_quic_timeout = 20
558 self.server_quic_args = ["-p", "quic", self.server_port]
559 self.client_uni_dir_quic_test_args = ["-N", "1000", "-U", "-X",
560 "-p", "quic",
561 self.loop0.local_ip4,
562 self.server_port]
563
564 @unittest.skipUnless(running_extended_tests, "part of extended tests")
565 def test_vcl_thru_host_stack_quic_uni_dir(self):
566 """ run VCL thru host stack uni-directional QUIC test """
567
568 self.timeout = self.client_uni_dir_quic_timeout
569 self.thru_host_stack_test("vcl_test_server", self.server_quic_args,
570 "vcl_test_client",
571 self.client_uni_dir_quic_test_args)
572
573 def tearDown(self):
574 self.thru_host_stack_tear_down()
575 super(VCLThruHostStackQUIC, self).tearDown()
576
577 def show_commands_at_teardown(self):
578 self.logger.debug(self.vapi.cli("show app server"))
579 self.logger.debug(self.vapi.cli("show session verbose 2"))
580 self.logger.debug(self.vapi.cli("show app mq"))
581
582
Florin Corasdc2e2512018-12-03 17:47:26 -0800583class VCLThruHostStackBidirNsock(VCLTestCase):
584 """ VCL Thru Host Stack Bidir Nsock """
585
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800586 @classmethod
587 def setUpClass(cls):
588 super(VCLThruHostStackBidirNsock, cls).setUpClass()
589
590 @classmethod
591 def tearDownClass(cls):
592 super(VCLThruHostStackBidirNsock, cls).tearDownClass()
593
Florin Corasdc2e2512018-12-03 17:47:26 -0800594 def setUp(self):
595 super(VCLThruHostStackBidirNsock, self).setUp()
596
597 self.thru_host_stack_setup()
598 self.client_bi_dir_nsock_timeout = 20
599 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
600 "-I", "2",
601 self.loop0.local_ip4,
602 self.server_port]
603 self.client_echo_test_args = ["-E", self.echo_phrase, "-X",
604 self.loop0.local_ip4,
605 self.server_port]
Dave Wallaced85075e2018-03-02 13:19:30 -0500606
607 def tearDown(self):
608 self.thru_host_stack_tear_down()
Florin Corasdc2e2512018-12-03 17:47:26 -0800609 super(VCLThruHostStackBidirNsock, self).tearDown()
Dave Wallaced85075e2018-03-02 13:19:30 -0500610
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700611 def show_commands_at_teardown(self):
612 self.logger.debug(self.vapi.cli("show session verbose 2"))
Florin Coras41d5f542021-01-15 13:49:33 -0800613 self.logger.debug(self.vapi.cli("show app mq"))
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700614
Dave Wallaced85075e2018-03-02 13:19:30 -0500615 def test_vcl_thru_host_stack_bi_dir_nsock(self):
616 """ run VCL thru host stack bi-directional (multiple sockets) test """
617
618 self.timeout = self.client_bi_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700619 self.thru_host_stack_test("vcl_test_server", self.server_args,
620 "vcl_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500621 self.client_bi_dir_nsock_test_args)
622
623
Florin Corasdc2e2512018-12-03 17:47:26 -0800624class LDPThruHostStackBidirNsock(VCLTestCase):
625 """ LDP Thru Host Stack Bidir Nsock """
Dave Wallaced85075e2018-03-02 13:19:30 -0500626
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800627 @classmethod
628 def setUpClass(cls):
629 super(LDPThruHostStackBidirNsock, cls).setUpClass()
630
631 @classmethod
632 def tearDownClass(cls):
633 super(LDPThruHostStackBidirNsock, cls).tearDownClass()
634
Dave Wallaced85075e2018-03-02 13:19:30 -0500635 def setUp(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800636 super(LDPThruHostStackBidirNsock, self).setUp()
Dave Wallaced85075e2018-03-02 13:19:30 -0500637
638 self.thru_host_stack_setup()
Dave Wallace3102c382020-04-03 19:48:48 -0400639 self.client_bi_dir_nsock_timeout = 20
640 self.client_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
641 # OUCH! Host Stack Bug?
642 # Only fails when running
643 # 'make test TEST_JOBS=auto'
644 # or TEST_JOBS > 1
645 # "-I", "2",
646 self.loop0.local_ip4,
647 self.server_port]
Dave Wallaced85075e2018-03-02 13:19:30 -0500648
649 def tearDown(self):
650 self.thru_host_stack_tear_down()
Florin Corasdc2e2512018-12-03 17:47:26 -0800651 super(LDPThruHostStackBidirNsock, self).tearDown()
Dave Wallaced85075e2018-03-02 13:19:30 -0500652
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700653 def show_commands_at_teardown(self):
654 self.logger.debug(self.vapi.cli("show session verbose 2"))
Florin Coras41d5f542021-01-15 13:49:33 -0800655 self.logger.debug(self.vapi.cli("show app mq"))
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700656
Dave Wallaced85075e2018-03-02 13:19:30 -0500657 def test_ldp_thru_host_stack_bi_dir_nsock(self):
658 """ run LDP thru host stack bi-directional (multiple sockets) test """
659
660 self.timeout = self.client_bi_dir_nsock_timeout
Dave Wallace816833f2018-03-14 20:01:28 -0400661 self.thru_host_stack_test("sock_test_server", self.server_args,
662 "sock_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500663 self.client_bi_dir_nsock_test_args)
664
665
Florin Corasdc2e2512018-12-03 17:47:26 -0800666class LDPThruHostStackNsock(VCLTestCase):
667 """ LDP Thru Host Stack Nsock """
Dave Wallaced85075e2018-03-02 13:19:30 -0500668
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800669 @classmethod
670 def setUpClass(cls):
671 super(LDPThruHostStackNsock, cls).setUpClass()
672
673 @classmethod
674 def tearDownClass(cls):
675 super(LDPThruHostStackNsock, cls).tearDownClass()
676
Dave Wallaced85075e2018-03-02 13:19:30 -0500677 def setUp(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800678 super(LDPThruHostStackNsock, self).setUp()
Dave Wallaced85075e2018-03-02 13:19:30 -0500679
680 self.thru_host_stack_setup()
681 if self.vppDebug:
Florin Coras2eb42e72018-11-29 00:39:53 -0800682 self.client_uni_dir_nsock_timeout = 20
Dave Wallaced85075e2018-03-02 13:19:30 -0500683 self.numSockets = "2"
684 else:
Florin Coras2eb42e72018-11-29 00:39:53 -0800685 self.client_uni_dir_nsock_timeout = 20
Dave Wallaced85075e2018-03-02 13:19:30 -0500686 self.numSockets = "5"
687
Dave Wallace45cd3a32018-06-26 01:14:04 -0400688 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
689 "-I", self.numSockets,
Dave Wallacede910062018-03-20 09:22:13 -0400690 self.loop0.local_ip4,
691 self.server_port]
Dave Wallaced85075e2018-03-02 13:19:30 -0500692
693 def tearDown(self):
694 self.thru_host_stack_tear_down()
Florin Corasdc2e2512018-12-03 17:47:26 -0800695 super(LDPThruHostStackNsock, self).tearDown()
Dave Wallaced85075e2018-03-02 13:19:30 -0500696
Dave Wallaced85075e2018-03-02 13:19:30 -0500697 def test_ldp_thru_host_stack_uni_dir_nsock(self):
698 """ run LDP thru host stack uni-directional (multiple sockets) test """
699
700 self.timeout = self.client_uni_dir_nsock_timeout
Dave Wallace816833f2018-03-14 20:01:28 -0400701 self.thru_host_stack_test("sock_test_server", self.server_args,
702 "sock_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500703 self.client_uni_dir_nsock_test_args)
704
705
Florin Corasdc2e2512018-12-03 17:47:26 -0800706class VCLThruHostStackNsock(VCLTestCase):
707 """ VCL Thru Host Stack Nsock """
Dave Wallaced85075e2018-03-02 13:19:30 -0500708
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800709 @classmethod
710 def setUpClass(cls):
711 super(VCLThruHostStackNsock, cls).setUpClass()
712
713 @classmethod
714 def tearDownClass(cls):
715 super(VCLThruHostStackNsock, cls).tearDownClass()
716
Dave Wallaced85075e2018-03-02 13:19:30 -0500717 def setUp(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800718 super(VCLThruHostStackNsock, self).setUp()
Dave Wallaced85075e2018-03-02 13:19:30 -0500719
720 self.thru_host_stack_setup()
721 if self.vppDebug:
Florin Coras2eb42e72018-11-29 00:39:53 -0800722 self.client_uni_dir_nsock_timeout = 20
Dave Wallaced85075e2018-03-02 13:19:30 -0500723 self.numSockets = "2"
724 else:
Florin Coras2eb42e72018-11-29 00:39:53 -0800725 self.client_uni_dir_nsock_timeout = 20
Dave Wallaced85075e2018-03-02 13:19:30 -0500726 self.numSockets = "5"
727
Dave Wallace45cd3a32018-06-26 01:14:04 -0400728 self.client_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
729 "-I", self.numSockets,
Dave Wallacede910062018-03-20 09:22:13 -0400730 self.loop0.local_ip4,
731 self.server_port]
Dave Wallaced85075e2018-03-02 13:19:30 -0500732
733 def tearDown(self):
734 self.thru_host_stack_tear_down()
Florin Corasdc2e2512018-12-03 17:47:26 -0800735 super(VCLThruHostStackNsock, self).tearDown()
Dave Wallaced85075e2018-03-02 13:19:30 -0500736
Dave Wallaced85075e2018-03-02 13:19:30 -0500737 def test_vcl_thru_host_stack_uni_dir_nsock(self):
738 """ run VCL thru host stack uni-directional (multiple sockets) test """
739
740 self.timeout = self.client_uni_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700741 self.thru_host_stack_test("vcl_test_server", self.server_args,
742 "vcl_test_client",
Dave Wallaced85075e2018-03-02 13:19:30 -0500743 self.client_uni_dir_nsock_test_args)
744
745
Florin Corasdc2e2512018-12-03 17:47:26 -0800746class LDPThruHostStackIperf(VCLTestCase):
747 """ LDP Thru Host Stack Iperf """
Dave Wallace816833f2018-03-14 20:01:28 -0400748
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800749 @classmethod
750 def setUpClass(cls):
751 super(LDPThruHostStackIperf, cls).setUpClass()
752
753 @classmethod
754 def tearDownClass(cls):
755 super(LDPThruHostStackIperf, cls).tearDownClass()
756
Dave Wallace816833f2018-03-14 20:01:28 -0400757 def setUp(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800758 super(LDPThruHostStackIperf, self).setUp()
Dave Wallace816833f2018-03-14 20:01:28 -0400759
760 self.thru_host_stack_setup()
761 self.client_iperf3_timeout = 20
Florin Coras1d879142021-05-06 00:08:18 -0700762 self.client_iperf3_args = ["-4", "-t 2", "-c", self.loop0.local_ip4]
763 self.server_iperf3_args = ["-4", "-s"]
Dave Wallace816833f2018-03-14 20:01:28 -0400764
765 def tearDown(self):
766 self.thru_host_stack_tear_down()
Florin Corasdc2e2512018-12-03 17:47:26 -0800767 super(LDPThruHostStackIperf, self).tearDown()
Dave Wallace816833f2018-03-14 20:01:28 -0400768
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700769 def show_commands_at_teardown(self):
770 self.logger.debug(self.vapi.cli("show session verbose 2"))
Florin Coras41d5f542021-01-15 13:49:33 -0800771 self.logger.debug(self.vapi.cli("show app mq"))
Paul Vinciguerra90cf21b2019-03-13 09:23:05 -0700772
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400773 @unittest.skipUnless(_have_iperf3, "'%s' not found, Skipping.")
Dave Wallace816833f2018-03-14 20:01:28 -0400774 def test_ldp_thru_host_stack_iperf3(self):
775 """ run LDP thru host stack iperf3 test """
776
Dave Wallace816833f2018-03-14 20:01:28 -0400777 self.timeout = self.client_iperf3_timeout
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400778 self.thru_host_stack_test(iperf3, self.server_iperf3_args,
779 iperf3, self.client_iperf3_args)
Dave Wallace816833f2018-03-14 20:01:28 -0400780
781
Florin Coras57a5a2d2020-04-01 23:16:11 +0000782class LDPThruHostStackIperfUdp(VCLTestCase):
783 """ LDP Thru Host Stack Iperf UDP """
784
785 @classmethod
786 def setUpClass(cls):
787 super(LDPThruHostStackIperfUdp, cls).setUpClass()
788
789 @classmethod
790 def tearDownClass(cls):
791 super(LDPThruHostStackIperfUdp, cls).tearDownClass()
792
793 def setUp(self):
794 super(LDPThruHostStackIperfUdp, self).setUp()
795
796 self.thru_host_stack_setup()
797 self.client_iperf3_timeout = 20
Florin Coras1d879142021-05-06 00:08:18 -0700798 self.client_iperf3_args = ["-4", "-t 2", "-u", "-l 1400",
Florin Coras57a5a2d2020-04-01 23:16:11 +0000799 "-c", self.loop0.local_ip4]
Florin Coras1d879142021-05-06 00:08:18 -0700800 self.server_iperf3_args = ["-4", "-s"]
Florin Coras57a5a2d2020-04-01 23:16:11 +0000801
802 def tearDown(self):
803 self.thru_host_stack_tear_down()
804 super(LDPThruHostStackIperfUdp, self).tearDown()
805
806 def show_commands_at_teardown(self):
807 self.logger.debug(self.vapi.cli("show session verbose 2"))
Florin Coras41d5f542021-01-15 13:49:33 -0800808 self.logger.debug(self.vapi.cli("show app mq"))
Florin Coras57a5a2d2020-04-01 23:16:11 +0000809
810 @unittest.skipUnless(_have_iperf3, "'%s' not found, Skipping.")
811 def test_ldp_thru_host_stack_iperf3_udp(self):
812 """ run LDP thru host stack iperf3 UDP test """
813
814 self.timeout = self.client_iperf3_timeout
815 self.thru_host_stack_test(iperf3, self.server_iperf3_args,
816 iperf3, self.client_iperf3_args)
817
818
Florin Coras0ae445e2018-11-29 18:22:10 -0800819class LDPIpv6CutThruTestCase(VCLTestCase):
820 """ LDP IPv6 Cut Thru Tests """
Dave Wallacede910062018-03-20 09:22:13 -0400821
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800822 @classmethod
823 def setUpClass(cls):
824 super(LDPIpv6CutThruTestCase, cls).setUpClass()
825
826 @classmethod
827 def tearDownClass(cls):
828 super(LDPIpv6CutThruTestCase, cls).tearDownClass()
829
Florin Coras41d5f542021-01-15 13:49:33 -0800830 def show_commands_at_teardown(self):
831 self.logger.debug(self.vapi.cli("show session verbose 2"))
832 self.logger.debug(self.vapi.cli("show app mq"))
833
Dave Wallacede910062018-03-20 09:22:13 -0400834 def setUp(self):
Florin Coras0ae445e2018-11-29 18:22:10 -0800835 super(LDPIpv6CutThruTestCase, self).setUp()
Dave Wallacede910062018-03-20 09:22:13 -0400836
837 self.cut_thru_setup()
838 self.client_iperf3_timeout = 20
Florin Coras2eb42e72018-11-29 00:39:53 -0800839 self.client_uni_dir_nsock_timeout = 20
840 self.client_bi_dir_nsock_timeout = 20
Dave Wallacede910062018-03-20 09:22:13 -0400841 self.client_ipv6_echo_test_args = ["-6", "-E", self.echo_phrase, "-X",
842 self.server_ipv6_addr,
843 self.server_port]
Florin Coras1d879142021-05-06 00:08:18 -0700844 self.client_ipv6_iperf3_args = ["-6", "-t 2", "-c",
Florin Corasab2f6db2018-08-31 14:31:41 -0700845 self.server_ipv6_addr]
Florin Coras1d879142021-05-06 00:08:18 -0700846 self.server_ipv6_iperf3_args = ["-6", "-s"]
Dave Wallace45cd3a32018-06-26 01:14:04 -0400847 self.client_ipv6_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
848 "-6",
849 "-I", "2",
Dave Wallacede910062018-03-20 09:22:13 -0400850 self.server_ipv6_addr,
851 self.server_port]
Dave Wallace45cd3a32018-06-26 01:14:04 -0400852 self.client_ipv6_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
853 "-6",
854 "-I", "2",
Dave Wallacede910062018-03-20 09:22:13 -0400855 self.server_ipv6_addr,
856 self.server_port]
857
858 def tearDown(self):
Florin Coras0ae445e2018-11-29 18:22:10 -0800859 super(LDPIpv6CutThruTestCase, self).tearDown()
Paul Vinciguerra9673e3e2019-05-10 20:41:08 -0400860 self.cut_thru_tear_down()
Dave Wallacede910062018-03-20 09:22:13 -0400861
862 def test_ldp_ipv6_cut_thru_echo(self):
863 """ run LDP IPv6 cut thru echo test """
864
Florin Corasab2f6db2018-08-31 14:31:41 -0700865 self.cut_thru_test("sock_test_server",
Dave Wallacede910062018-03-20 09:22:13 -0400866 self.server_ipv6_args,
Florin Corasab2f6db2018-08-31 14:31:41 -0700867 "sock_test_client",
Dave Wallacede910062018-03-20 09:22:13 -0400868 self.client_ipv6_echo_test_args)
869
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400870 @unittest.skipUnless(_have_iperf3, "'%s' not found, Skipping.")
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800871 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Dave Wallacede910062018-03-20 09:22:13 -0400872 def test_ldp_ipv6_cut_thru_iperf3(self):
873 """ run LDP IPv6 cut thru iperf3 test """
874
Dave Wallacede910062018-03-20 09:22:13 -0400875 self.timeout = self.client_iperf3_timeout
Paul Vinciguerra063366e2019-06-30 15:38:55 -0400876 self.cut_thru_test(iperf3, self.server_ipv6_iperf3_args,
877 iperf3, self.client_ipv6_iperf3_args)
Dave Wallacede910062018-03-20 09:22:13 -0400878
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800879 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Dave Wallacede910062018-03-20 09:22:13 -0400880 def test_ldp_ipv6_cut_thru_uni_dir_nsock(self):
881 """ run LDP IPv6 cut thru uni-directional (multiple sockets) test """
882
883 self.timeout = self.client_uni_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700884 self.cut_thru_test("sock_test_server", self.server_ipv6_args,
885 "sock_test_client",
Dave Wallacede910062018-03-20 09:22:13 -0400886 self.client_ipv6_uni_dir_nsock_test_args)
887
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800888 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Florin Coras0f46e162019-07-02 19:33:15 -0700889 @unittest.skip("sock test apps need to be improved")
Dave Wallacede910062018-03-20 09:22:13 -0400890 def test_ldp_ipv6_cut_thru_bi_dir_nsock(self):
891 """ run LDP IPv6 cut thru bi-directional (multiple sockets) test """
892
893 self.timeout = self.client_bi_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700894 self.cut_thru_test("sock_test_server", self.server_ipv6_args,
895 "sock_test_client",
Dave Wallacede910062018-03-20 09:22:13 -0400896 self.client_ipv6_bi_dir_nsock_test_args)
897
Florin Coras0ae445e2018-11-29 18:22:10 -0800898
899class VCLIpv6CutThruTestCase(VCLTestCase):
900 """ VCL IPv6 Cut Thru Tests """
901
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800902 @classmethod
903 def setUpClass(cls):
904 super(VCLIpv6CutThruTestCase, cls).setUpClass()
905
906 @classmethod
907 def tearDownClass(cls):
908 super(VCLIpv6CutThruTestCase, cls).tearDownClass()
909
Florin Coras41d5f542021-01-15 13:49:33 -0800910 def show_commands_at_teardown(self):
911 self.logger.debug(self.vapi.cli("show session verbose 2"))
912 self.logger.debug(self.vapi.cli("show app mq"))
913
Florin Coras0ae445e2018-11-29 18:22:10 -0800914 def setUp(self):
915 super(VCLIpv6CutThruTestCase, self).setUp()
916
917 self.cut_thru_setup()
918 self.client_uni_dir_nsock_timeout = 20
919 self.client_bi_dir_nsock_timeout = 20
920 self.client_ipv6_echo_test_args = ["-6", "-E", self.echo_phrase, "-X",
921 self.server_ipv6_addr,
922 self.server_port]
923 self.client_ipv6_uni_dir_nsock_test_args = ["-N", "1000", "-U", "-X",
924 "-6",
925 "-I", "2",
926 self.server_ipv6_addr,
927 self.server_port]
928 self.client_ipv6_bi_dir_nsock_test_args = ["-N", "1000", "-B", "-X",
929 "-6",
930 "-I", "2",
931 self.server_ipv6_addr,
932 self.server_port]
933
934 def tearDown(self):
Florin Coras0ae445e2018-11-29 18:22:10 -0800935 super(VCLIpv6CutThruTestCase, self).tearDown()
Paul Vinciguerra9673e3e2019-05-10 20:41:08 -0400936 self.cut_thru_tear_down()
Florin Coras0ae445e2018-11-29 18:22:10 -0800937
Florin Coras41d5f542021-01-15 13:49:33 -0800938 def show_commands_at_teardown(self):
939 self.logger.debug(self.vapi.cli("show session verbose 2"))
940 self.logger.debug(self.vapi.cli("show app mq"))
941
Dave Wallacede910062018-03-20 09:22:13 -0400942 def test_vcl_ipv6_cut_thru_echo(self):
943 """ run VCL IPv6 cut thru echo test """
944
Florin Corasab2f6db2018-08-31 14:31:41 -0700945 self.cut_thru_test("vcl_test_server",
Dave Wallacede910062018-03-20 09:22:13 -0400946 self.server_ipv6_args,
Florin Corasab2f6db2018-08-31 14:31:41 -0700947 "vcl_test_client",
Dave Wallacede910062018-03-20 09:22:13 -0400948 self.client_ipv6_echo_test_args)
949
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800950 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Dave Wallacede910062018-03-20 09:22:13 -0400951 def test_vcl_ipv6_cut_thru_uni_dir_nsock(self):
952 """ run VCL IPv6 cut thru uni-directional (multiple sockets) test """
953
954 self.timeout = self.client_uni_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700955 self.cut_thru_test("vcl_test_server", self.server_ipv6_args,
956 "vcl_test_client",
Dave Wallacede910062018-03-20 09:22:13 -0400957 self.client_ipv6_uni_dir_nsock_test_args)
958
Paul Vinciguerradefde0f2018-12-06 07:46:13 -0800959 @unittest.skipUnless(running_extended_tests, "part of extended tests")
Dave Wallacede910062018-03-20 09:22:13 -0400960 def test_vcl_ipv6_cut_thru_bi_dir_nsock(self):
961 """ run VCL IPv6 cut thru bi-directional (multiple sockets) test """
962
963 self.timeout = self.client_bi_dir_nsock_timeout
Florin Corasab2f6db2018-08-31 14:31:41 -0700964 self.cut_thru_test("vcl_test_server", self.server_ipv6_args,
965 "vcl_test_client",
Dave Wallacede910062018-03-20 09:22:13 -0400966 self.client_ipv6_bi_dir_nsock_test_args)
967
968
Florin Corasdc2e2512018-12-03 17:47:26 -0800969class VCLIpv6ThruHostStackEcho(VCLTestCase):
970 """ VCL IPv6 Thru Host Stack Echo """
Dave Wallacede910062018-03-20 09:22:13 -0400971
Paul Vinciguerra8d991d92019-01-25 14:05:48 -0800972 @classmethod
973 def setUpClass(cls):
974 super(VCLIpv6ThruHostStackEcho, cls).setUpClass()
975
976 @classmethod
977 def tearDownClass(cls):
978 super(VCLIpv6ThruHostStackEcho, cls).tearDownClass()
979
Dave Wallacede910062018-03-20 09:22:13 -0400980 def setUp(self):
Florin Corasdc2e2512018-12-03 17:47:26 -0800981 super(VCLIpv6ThruHostStackEcho, self).setUp()
Dave Wallacede910062018-03-20 09:22:13 -0400982
983 self.thru_host_stack_ipv6_setup()
984 self.client_ipv6_echo_test_args = ["-6", "-E", self.echo_phrase, "-X",
985 self.loop0.local_ip6,
986 self.server_port]
987
988 def tearDown(self):
989 self.thru_host_stack_ipv6_tear_down()
Florin Corasdc2e2512018-12-03 17:47:26 -0800990 super(VCLIpv6ThruHostStackEcho, self).tearDown()
Dave Wallacede910062018-03-20 09:22:13 -0400991
992 def test_vcl_ipv6_thru_host_stack_echo(self):
993 """ run VCL IPv6 thru host stack echo test """
994
Florin Corasdc2e2512018-12-03 17:47:26 -0800995 self.thru_host_stack_test("vcl_test_server",
Damjan Marion855e2682018-08-24 13:37:45 +0200996 self.server_ipv6_args,
Florin Corasab2f6db2018-08-31 14:31:41 -0700997 "vcl_test_client",
Florin Corasdc2e2512018-12-03 17:47:26 -0800998 self.client_ipv6_echo_test_args)
Dave Wallacede910062018-03-20 09:22:13 -0400999
1000
Dave Wallacecfcf2f42018-02-16 18:31:56 -05001001if __name__ == '__main__':
1002 unittest.main(testRunner=VppTestRunner)