xref: /xnu-11215.41.3/tests/skywalk/skywalk_test_driver.h (revision 33de042d024d46de5ff4e89f2471de6608e37fa4)
1 /*
2  * Copyright (c) 2024 Apple Inc. All rights reserved.
3  *
4  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5  *
6  * This file contains Original Code and/or Modifications of Original Code
7  * as defined in and that are subject to the Apple Public Source License
8  * Version 2.0 (the 'License'). You may not use this file except in
9  * compliance with the License. The rights granted to you under the License
10  * may not be used to create, or enable the creation or redistribution of,
11  * unlawful or unlicensed copies of an Apple operating system, or to
12  * circumvent, violate, or enable the circumvention or violation of, any
13  * terms of an Apple operating system software license agreement.
14  *
15  * Please obtain a copy of the License at
16  * http://www.opensource.apple.com/apsl/ and read it before using this file.
17  *
18  * The Original Code and all software distributed under the License are
19  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23  * Please see the License for the specific language governing rights and
24  * limitations under the License.
25  *
26  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27  */
28 #ifndef _SKYWALK_TEST_DRIVER_H_
29 #define _SKYWALK_TEST_DRIVER_H_
30 
31 #include <stdlib.h>
32 #include <stdbool.h>
33 
34 #include "skywalk_test_common.h"
35 #include "skywalk_test_utils.h"
36 
37 #define SKT_MAX_ARGV 8
38 
39 struct skywalk_test {
40 	const char *skt_testname;
41 	const char *skt_testdesc;
42 	uint64_t skt_required_features;
43 	int (*skt_main)(int argc, char **);
44 	char *skt_argv[SKT_MAX_ARGV];
45 	void (*skt_init)(void);
46 	void (*skt_fini)(void);
47 	uint64_t skt_expected_exception_code;
48 	uint64_t skt_expected_exception_code_ignore;
49 	char skt_argv2[11]; // dynamically initialized default argv2
50 };
51 
52 extern int skywalk_test_driver_run(struct skywalk_test *, int, char **,
53     uint32_t, bool, bool, int);
54 
55 struct skywalk_mptest {
56 	const char *skt_testname;
57 	const char *skt_testdesc;
58 	uint64_t skt_required_features;
59 	int skt_nchildren;
60 	int (*skt_main)(int argc, char *argv[]);
61 	char *skt_argv[SKT_MAX_ARGV];
62 	void (*skt_init)(void);
63 	void (*skt_fini)(void);
64 	char skt_argv2[11]; // dynamically initialized default argv2
65 };
66 
67 struct skywalk_mptest_check {
68 	const char *skt_testname;
69 	bool (*skt_supported)(void);
70 };
71 
72 #define MPTEST_SEQ_FILENO 3
73 extern bool skywalk_in_driver; // true only if in skywalk test driver process
74 
75 extern int skywalk_mptest_driver_run(struct skywalk_mptest *, bool);
76 
77 extern struct skywalk_test skt_noop;
78 extern struct skywalk_test skt_crash;
79 extern struct skywalk_test skt_assert;
80 extern struct skywalk_test skt_features;
81 extern struct skywalk_test skt_oneslotus;
82 extern struct skywalk_test skt_oneslotks;
83 extern struct skywalk_test skt_oneslotup;
84 extern struct skywalk_test skt_oneslotkp;
85 extern struct skywalk_test skt_oneslotuk;
86 extern struct skywalk_test skt_oneslotuk_defunct;
87 extern struct skywalk_test skt_oneslotkk;
88 extern struct skywalk_test skt_shutdownus;
89 extern struct skywalk_test skt_shutdownks;
90 extern struct skywalk_test skt_shutdownup;
91 extern struct skywalk_test skt_shutdownkp;
92 extern struct skywalk_test skt_shutdownuk;
93 extern struct skywalk_test skt_shutdownkk;
94 extern struct skywalk_test skt_shutdown2us;
95 extern struct skywalk_test skt_shutdown2ks;
96 extern struct skywalk_test skt_shutdown2up;
97 extern struct skywalk_test skt_shutdown2kp;
98 extern struct skywalk_test skt_shutdown2uk;
99 extern struct skywalk_test skt_shutdown2kk;
100 extern struct skywalk_test skt_nslotsus;
101 extern struct skywalk_test skt_nslotsks;
102 extern struct skywalk_test skt_nslotsup;
103 extern struct skywalk_test skt_nslotskp;
104 extern struct skywalk_test skt_nslotsuk;
105 extern struct skywalk_test skt_nslotskk;
106 extern struct skywalk_test skt_mslotsus;
107 extern struct skywalk_test skt_mslotsks;
108 extern struct skywalk_test skt_mslotsup;
109 extern struct skywalk_test skt_mslotskp;
110 extern struct skywalk_test skt_mslotsuk;
111 extern struct skywalk_test skt_mslotskk;
112 extern struct skywalk_test skt_mmslotsus;
113 extern struct skywalk_test skt_mmslotsks;
114 extern struct skywalk_test skt_mmslotsup;
115 extern struct skywalk_test skt_mmslotskp;
116 extern struct skywalk_test skt_mmslotsuk;
117 extern struct skywalk_test skt_mmslotskk;
118 extern struct skywalk_test skt_closecfd;
119 extern struct skywalk_test skt_writecfd;
120 extern struct skywalk_test skt_readcfd;
121 extern struct skywalk_test skt_closenfd;
122 extern struct skywalk_test skt_writenfd;
123 extern struct skywalk_test skt_readnfd;
124 extern struct skywalk_test skt_writeif;
125 extern struct skywalk_test skt_writering;
126 extern struct skywalk_test skt_readsmap;
127 extern struct skywalk_test skt_writesmap;
128 extern struct skywalk_test skt_badringtl;
129 extern struct skywalk_test skt_badringtp;
130 extern struct skywalk_test skt_badringtk;
131 extern struct skywalk_test skt_badringts;
132 extern struct skywalk_test skt_badringrl;
133 extern struct skywalk_test skt_badringrp;
134 extern struct skywalk_test skt_badringrk;
135 extern struct skywalk_test skt_badringrs;
136 extern struct skywalk_test skt_kqueue_basic;
137 extern struct skywalk_test skt_kqueue_lowat_chan_slots;
138 extern struct skywalk_test skt_kqueue_lowat_chan_bytes;
139 extern struct skywalk_test skt_kqueue_lowat_note_slots;
140 extern struct skywalk_test skt_kqueue_lowat_note_bytes;
141 extern struct skywalk_test skt_change_len;
142 extern struct skywalk_test skt_big_len;
143 extern struct skywalk_test skt_internalizemetdata;
144 extern struct skywalk_test skt_ringidtx;
145 extern struct skywalk_test skt_ringidrx;
146 extern struct skywalk_test skt_closekqk;
147 extern struct skywalk_test skt_debug_verify_u;
148 extern struct skywalk_test skt_debug_verify_k;
149 extern struct skywalk_test skt_utun27302538a;
150 extern struct skywalk_test skt_utun27302538b;
151 extern struct skywalk_test skt_utun27302538c;
152 extern struct skywalk_test skt_utun27302538d;
153 extern struct skywalk_test skt_utun27646755;
154 extern struct skywalk_test skt_utun27646755slow;
155 extern struct skywalk_test skt_utunleak;
156 extern struct skywalk_test skt_utunloopn4u1;
157 extern struct skywalk_test skt_utunloopn4u2;
158 extern struct skywalk_test skt_utunloopn4t1;
159 extern struct skywalk_test skt_utunloopn4t2;
160 extern struct skywalk_test skt_utunloopy4u1;
161 extern struct skywalk_test skt_utunloopy4u2;
162 extern struct skywalk_test skt_utunloopy4t1;
163 extern struct skywalk_test skt_utunloopy4t2;
164 extern struct skywalk_test skt_utunloopn1000;
165 extern struct skywalk_test skt_utunloopy1000;
166 extern struct skywalk_test skt_ipsecloopy4u1;
167 extern struct skywalk_test skt_ipsecloopy4u2;
168 extern struct skywalk_test skt_ipsecloopy4t1;
169 extern struct skywalk_test skt_ipsecloopy4t2;
170 extern struct skywalk_test skt_ipsecloopy1000;
171 extern struct skywalk_test skt_bindupipeanon;
172 extern struct skywalk_test skt_bindupipekey;
173 extern struct skywalk_test skt_bindfswanon;
174 extern struct skywalk_test skt_bindfswkey;
175 extern struct skywalk_test skt_bindnetifkey;
176 extern struct skywalk_test skt_flowswitch_ns_reserve;
177 extern struct skywalk_test skt_flowswitch_ns_reserve2;
178 extern struct skywalk_test skt_netifcompata;
179 extern struct skywalk_test skt_netifcompatb;
180 extern struct skywalk_test skt_netifcompatc;
181 extern struct skywalk_test skt_netiffsw;
182 extern struct skywalk_test skt_netifdelete;
183 extern struct skywalk_test skt_fswloopfsw;
184 extern struct skywalk_test skt_fswloop2ff;
185 extern struct skywalk_test skt_fswloop2nff;
186 extern struct skywalk_test skt_teardown;
187 extern struct skywalk_test skt_teardownb;
188 extern struct skywalk_test skt_teardownr;
189 extern struct skywalk_test skt_teardownz;
190 extern struct skywalk_test skt_fsw29301703a;
191 extern struct skywalk_test skt_fsw29301703b;
192 extern struct skywalk_test skt_fsw29301703c;
193 extern struct skywalk_test skt_fswbindany;
194 extern struct skywalk_test skt_fswbind0;
195 extern struct skywalk_test skt_fswbind1;
196 extern struct skywalk_test skt_fswbind512;
197 extern struct skywalk_test skt_fswbind2;
198 extern struct skywalk_test skt_fswbind5;
199 extern struct skywalk_test skt_fswbind25;
200 extern struct skywalk_test skt_mf10x10;
201 extern struct skywalk_test skt_mf10x100;
202 extern struct skywalk_test skt_mf100x10;
203 extern struct skywalk_test skt_mf100x100;
204 extern struct skywalk_test skt_mf1xall;
205 extern struct skywalk_test skt_mf1xallslow;
206 extern struct skywalk_test skt_fullupipe;
207 extern struct skywalk_test skt_upipepeerclosure;
208 extern struct skywalk_test skt_pllupipe;
209 extern struct skywalk_test skt_pllutxk;
210 extern struct skywalk_test skt_pllutxs;
211 extern struct skywalk_test skt_pllutxp;
212 extern struct skywalk_test skt_pllurxk;
213 extern struct skywalk_test skt_pllurxs;
214 extern struct skywalk_test skt_pllurxp;
215 extern struct skywalk_test skt_listener;
216 extern struct skywalk_test skt_listener_stress;
217 extern struct skywalk_test skt_listener_reuse;
218 extern struct skywalk_test skt_listen_stress;
219 extern struct skywalk_test skt_copy_cksum_single;
220 extern struct skywalk_test skt_copy_cksum_multi;
221 extern struct skywalk_test skt_reass_default_setting;
222 extern struct skywalk_test skt_reass;
223 extern struct skywalk_test skt_reass_timeout;
224 extern struct skywalk_test skt_reass_bad_fraglen;
225 extern struct skywalk_test skt_reass_atomic;
226 extern struct skywalk_test skt_reass_fuzz_queue_limit;
227 extern struct skywalk_test skt_verifynxadv;
228 extern struct skywalk_test skt_cksum;
229 extern struct skywalk_test skt_memory;
230 extern struct skywalk_test skt_flow_req;
231 extern struct skywalk_test skt_flow_req_ll;
232 extern struct skywalk_test skt_flow_config;
233 extern struct skywalk_test skt_flowlookup;
234 extern struct skywalk_test skt_libcuckoo;
235 extern struct skywalk_test skt_restricted_port;
236 extern struct skywalk_test skt_steering;
237 
238 
239 extern struct skywalk_mptest skt_mp100noop;
240 extern struct skywalk_mptest skt_mc10x10;
241 extern struct skywalk_mptest skt_mc10x100;
242 extern struct skywalk_mptest skt_mc100x10;
243 extern struct skywalk_mptest skt_mc100x100;
244 extern struct skywalk_mptest skt_mpprotons;
245 extern struct skywalk_mptest skt_xferudp;
246 extern struct skywalk_mptest skt_xferudpn;
247 extern struct skywalk_mptest skt_xferudpnsp;
248 extern struct skywalk_mptest skt_xferudpfcs;
249 extern struct skywalk_mptest skt_xferudptrailer;
250 extern struct skywalk_mptest skt_xferudpnfcs;
251 extern struct skywalk_mptest skt_xferudpntrailer;
252 extern struct skywalk_mptest skt_xferudplong;
253 extern struct skywalk_mptest skt_xferudplongn;
254 extern struct skywalk_mptest skt_xferudpoverwhelm;
255 extern struct skywalk_mptest skt_xferudpoverwhelmn;
256 extern struct skywalk_mptest skt_xferudpoverwhelmnsp;
257 extern struct skywalk_mptest skt_xferudpoverwhelmlong;
258 extern struct skywalk_mptest skt_xferudpoverwhelmlongn;
259 extern struct skywalk_mptest skt_xferudpping;
260 extern struct skywalk_mptest skt_xferudppingn;
261 extern struct skywalk_mptest skt_xferudpping_aqm;
262 extern struct skywalk_mptest skt_xferudppingn_aqm;
263 extern struct skywalk_mptest skt_xferudpping1;
264 extern struct skywalk_mptest skt_xferudpping1n;
265 extern struct skywalk_mptest skt_xferudppinglong;
266 extern struct skywalk_mptest skt_xferudppinglongn;
267 extern struct skywalk_mptest skt_xferudpping1wrong;
268 extern struct skywalk_mptest skt_xfertcpsynflood;
269 extern struct skywalk_mptest skt_xfertcprstflood;
270 extern struct skywalk_mptest skt_xferudpwitherrors;
271 extern struct skywalk_mptest skt_xferudpwitherrorscompat;
272 extern struct skywalk_mptest skt_xfertcpportzero;
273 extern struct skywalk_mptest skt_xferudpportzero;
274 extern struct skywalk_mptest skt_xfersetuponly;
275 extern struct skywalk_mptest skt_xfersetuponlyn;
276 extern struct skywalk_mptest skt_xferudppingn_wmm;
277 extern struct skywalk_mptest skt_xferflowmatch;
278 extern struct skywalk_mptest skt_xferflowcleanup;
279 extern struct skywalk_mptest skt_xferudppingn_mb;
280 extern struct skywalk_mptest skt_xferfastlane;
281 extern struct skywalk_mptest skt_xferfastlanen;
282 extern struct skywalk_mptest skt_xferrfc4594;
283 extern struct skywalk_mptest skt_xferrfc4594n;
284 extern struct skywalk_mptest skt_xfercsumoffload;
285 extern struct skywalk_mptest skt_xfercsumoffloadn;
286 extern struct skywalk_mptest skt_xferudpfrags;
287 extern struct skywalk_mptest skt_xferudpbadfrags;
288 extern struct skywalk_mptest skt_xferlistenertcprst;
289 extern struct skywalk_mptest skt_netifdirecttxrx;
290 extern struct skywalk_mptest skt_netifdirecttxrxsp;
291 extern struct skywalk_mptest skt_netifdirecttxrxcopymode;
292 extern struct skywalk_mptest skt_netifdirectifadvenable;
293 extern struct skywalk_mptest skt_netifdirectifadvdisable;
294 extern struct skywalk_mptest skt_netifdirectchanevents;
295 extern struct skywalk_mptest skt_netifdirectexpiryevents;
296 extern struct skywalk_mptest skt_filternative;
297 extern struct skywalk_mptest skt_filtercompat;
298 extern struct skywalk_mptest_check skt_filternative_check;
299 extern struct skywalk_mptest_check skt_filtercompat_check;
300 extern struct skywalk_mptest skt_xferudpifadvenable;
301 extern struct skywalk_mptest skt_xferudpifadvdisable;
302 extern struct skywalk_mptest skt_xferudppingnll;
303 extern struct skywalk_mptest skt_xferudppingllink;
304 extern struct skywalk_mptest skt_xferudppingllink_wmm;
305 extern struct skywalk_mptest skt_xferudppingllink_multi;
306 extern struct skywalk_mptest skt_xferudpchanevents;
307 extern struct skywalk_mptest skt_xferudpchaneventsasync;
308 extern struct skywalk_mptest skt_xferudppingllink_multi_combined;
309 extern struct skywalk_mptest skt_xferparentchildflow;
310 extern struct skywalk_mptest skt_xferparentchildflown;
311 extern struct skywalk_mptest skt_xferparentchildflow_offset_400;
312 extern struct skywalk_mptest skt_xferparentchildflown_offset_400;
313 extern struct skywalk_mptest skt_xferrdudpping;
314 
315 extern struct skywalk_mptest_check skt_filternative_check;
316 extern struct skywalk_mptest_check skt_filtercompat_check;
317 
318 #endif /* _SKYWALK_TEST_DRIVER_H_ */
319