xref: /dpdk/app/test/meson.build (revision d6f923ba)
1# SPDX-License-Identifier: BSD-3-Clause
2# Copyright(c) 2017 Intel Corporation
3
4if not get_option('tests')
5	subdir_done()
6endif
7
8test_sources = files('commands.c',
9	'packet_burst_generator.c',
10	'sample_packet_forward.c',
11	'test.c',
12	'test_acl.c',
13	'test_alarm.c',
14	'test_atomic.c',
15	'test_barrier.c',
16	'test_bitratestats.c',
17	'test_bpf.c',
18	'test_byteorder.c',
19	'test_cmdline.c',
20	'test_cmdline_cirbuf.c',
21	'test_cmdline_etheraddr.c',
22	'test_cmdline_ipaddr.c',
23	'test_cmdline_lib.c',
24	'test_cmdline_num.c',
25	'test_cmdline_portlist.c',
26	'test_cmdline_string.c',
27	'test_common.c',
28	'test_cpuflags.c',
29	'test_crc.c',
30	'test_cryptodev.c',
31	'test_cryptodev_asym.c',
32	'test_cryptodev_blockcipher.c',
33	'test_cryptodev_security_pdcp.c',
34	'test_cycles.c',
35	'test_debug.c',
36	'test_distributor.c',
37	'test_distributor_perf.c',
38	'test_eal_flags.c',
39	'test_eal_fs.c',
40	'test_efd.c',
41	'test_efd_perf.c',
42	'test_errno.c',
43	'test_event_crypto_adapter.c',
44	'test_event_eth_rx_adapter.c',
45	'test_event_ring.c',
46	'test_event_eth_tx_adapter.c',
47	'test_event_timer_adapter.c',
48	'test_eventdev.c',
49	'test_external_mem.c',
50	'test_fbarray.c',
51	'test_fib.c',
52	'test_fib_perf.c',
53	'test_fib6.c',
54	'test_fib6_perf.c',
55	'test_func_reentrancy.c',
56	'test_flow_classify.c',
57	'test_hash.c',
58	'test_hash_functions.c',
59	'test_hash_multiwriter.c',
60	'test_hash_readwrite.c',
61	'test_hash_perf.c',
62	'test_hash_readwrite_lf.c',
63	'test_interrupts.c',
64	'test_ipsec.c',
65	'test_ipsec_sad.c',
66	'test_kni.c',
67	'test_kvargs.c',
68	'test_latencystats.c',
69	'test_link_bonding.c',
70	'test_link_bonding_mode4.c',
71	'test_link_bonding_rssconf.c',
72	'test_logs.c',
73	'test_lpm.c',
74	'test_lpm6.c',
75	'test_lpm6_perf.c',
76	'test_lpm_perf.c',
77	'test_malloc.c',
78	'test_mbuf.c',
79	'test_member.c',
80	'test_member_perf.c',
81	'test_memcpy.c',
82	'test_memcpy_perf.c',
83	'test_memory.c',
84	'test_mempool.c',
85	'test_mempool_perf.c',
86	'test_memzone.c',
87	'test_meter.c',
88	'test_metrics.c',
89	'test_mcslock.c',
90	'test_mp_secondary.c',
91	'test_pdump.c',
92	'test_per_lcore.c',
93	'test_pmd_perf.c',
94	'test_pmd_ring.c',
95	'test_pmd_ring_perf.c',
96	'test_power.c',
97	'test_power_cpufreq.c',
98	'test_power_kvm_vm.c',
99	'test_prefetch.c',
100	'test_rand_perf.c',
101	'test_rawdev.c',
102	'test_rcu_qsbr.c',
103	'test_rcu_qsbr_perf.c',
104	'test_reciprocal_division.c',
105	'test_reciprocal_division_perf.c',
106	'test_red.c',
107	'test_reorder.c',
108	'test_rib.c',
109	'test_rib6.c',
110	'test_ring.c',
111	'test_ring_perf.c',
112	'test_rwlock.c',
113	'test_sched.c',
114	'test_service_cores.c',
115	'test_spinlock.c',
116	'test_stack.c',
117	'test_stack_perf.c',
118	'test_string_fns.c',
119	'test_table.c',
120	'test_table_acl.c',
121	'test_table_combined.c',
122	'test_table_pipeline.c',
123	'test_table_ports.c',
124	'test_table_tables.c',
125	'test_tailq.c',
126	'test_thash.c',
127	'test_timer.c',
128	'test_timer_perf.c',
129	'test_timer_racecond.c',
130	'test_timer_secondary.c',
131	'test_ticketlock.c',
132	'test_version.c',
133	'virtual_pmd.c'
134)
135
136test_deps = ['acl',
137	'bitratestats',
138	'bpf',
139	'cfgfile',
140	'cmdline',
141	'cryptodev',
142	'distributor',
143	'efd',
144	'ethdev',
145	'eventdev',
146	'fib',
147	'flow_classify',
148	'hash',
149	'ipsec',
150	'latencystats',
151	'lpm',
152	'member',
153	'metrics',
154	'pipeline',
155	'port',
156	'rawdev',
157	'rcu',
158	'reorder',
159	'rib',
160	'ring',
161	'stack',
162	'timer'
163]
164
165fast_test_names = [
166        'acl_autotest',
167        'alarm_autotest',
168        'atomic_autotest',
169        'byteorder_autotest',
170        'cmdline_autotest',
171        'common_autotest',
172        'cpuflags_autotest',
173        'cycles_autotest',
174        'debug_autotest',
175        'eal_flags_c_opt_autotest',
176        'eal_flags_master_opt_autotest',
177        'eal_flags_n_opt_autotest',
178        'eal_flags_hpet_autotest',
179        'eal_flags_no_huge_autotest',
180        'eal_flags_w_opt_autotest',
181        'eal_flags_b_opt_autotest',
182        'eal_flags_vdev_opt_autotest',
183        'eal_flags_r_opt_autotest',
184        'eal_flags_mem_autotest',
185        'eal_flags_file_prefix_autotest',
186        'eal_flags_misc_autotest',
187        'eal_fs_autotest',
188        'errno_autotest',
189        'event_ring_autotest',
190        'fib_autotest',
191        'fib6_autotest',
192        'func_reentrancy_autotest',
193        'flow_classify_autotest',
194        'hash_autotest',
195        'interrupt_autotest',
196        'logs_autotest',
197        'lpm_autotest',
198        'lpm6_autotest',
199        'malloc_autotest',
200        'mbuf_autotest',
201        'mcslock_autotest',
202        'memcpy_autotest',
203        'memory_autotest',
204        'mempool_autotest',
205        'memzone_autotest',
206        'meter_autotest',
207        'multiprocess_autotest',
208        'per_lcore_autotest',
209        'prefetch_autotest',
210        'rcu_qsbr_autotest',
211        'red_autotest',
212        'rib_autotest',
213        'rib6_autotest',
214        'ring_autotest',
215        'ring_pmd_autotest',
216        'rwlock_test1_autotest',
217        'rwlock_rda_autotest',
218        'rwlock_rds_wrm_autotest',
219        'rwlock_rde_wro_autotest',
220        'sched_autotest',
221        'spinlock_autotest',
222        'stack_autotest',
223        'stack_lf_autotest',
224        'string_autotest',
225        'table_autotest',
226        'tailq_autotest',
227        'timer_autotest',
228        'user_delay_us',
229        'version_autotest',
230        'bitratestats_autotest',
231        'crc_autotest',
232        'delay_us_sleep_autotest',
233        'distributor_autotest',
234        'eventdev_common_autotest',
235        'fbarray_autotest',
236        'hash_readwrite_autotest',
237        'hash_readwrite_lf_autotest',
238        'ipsec_autotest',
239        'kni_autotest',
240        'kvargs_autotest',
241        'latencystats_autotest',
242        'member_autotest',
243        'metrics_autotest',
244        'pdump_autotest',
245        'power_cpufreq_autotest',
246        'power_autotest',
247        'power_kvm_vm_autotest',
248        'reorder_autotest',
249        'service_autotest',
250        'thash_autotest',
251]
252
253perf_test_names = [
254        'ring_perf_autotest',
255        'mempool_perf_autotest',
256        'memcpy_perf_autotest',
257        'hash_perf_autotest',
258        'timer_perf_autotest',
259        'reciprocal_division',
260        'reciprocal_division_perf',
261        'lpm_perf_autotest',
262        'rib_slow_autotest',
263        'fib_slow_autotest',
264        'fib_perf_autotest',
265        'red_all',
266        'barrier_autotest',
267        'hash_multiwriter_autotest',
268        'timer_racecond_autotest',
269        'efd_autotest',
270        'hash_functions_autotest',
271        'member_perf_autotest',
272        'efd_perf_autotest',
273        'lpm6_perf_autotest',
274        'rib6_slow_autotest',
275        'fib6_slow_autotest',
276        'fib6_perf_autotest',
277        'rcu_qsbr_perf_autotest',
278        'red_perf',
279        'distributor_perf_autotest',
280        'ring_pmd_perf_autotest',
281        'pmd_perf_autotest',
282        'stack_perf_autotest',
283        'stack_lf_perf_autotest',
284        'rand_perf_autotest',
285]
286
287driver_test_names = [
288        'cryptodev_aesni_mb_autotest',
289        'cryptodev_aesni_gcm_autotest',
290        'cryptodev_dpaa_sec_autotest',
291        'cryptodev_dpaa2_sec_autotest',
292        'cryptodev_null_autotest',
293        'cryptodev_octeontx2_autotest',
294        'cryptodev_openssl_autotest',
295        'cryptodev_openssl_asym_autotest',
296        'cryptodev_qat_autotest',
297        'cryptodev_sw_armv8_autotest',
298        'cryptodev_sw_kasumi_autotest',
299        'cryptodev_sw_mvsam_autotest',
300        'cryptodev_sw_snow3g_autotest',
301        'cryptodev_sw_zuc_autotest',
302        'eventdev_selftest_octeontx',
303        'eventdev_selftest_sw',
304        'link_bonding_autotest',
305        'link_bonding_mode4_autotest',
306        'link_bonding_rssconf_autotest',
307        'rawdev_autotest',
308]
309
310dump_test_names = [
311        'dump_struct_sizes',
312        'dump_mempool',
313        'dump_malloc_stats',
314        'dump_devargs',
315        'dump_log_types',
316        'dump_ring',
317        'dump_physmem',
318        'dump_memzone',
319]
320
321# The following linkages are an exception to allow running the
322# unit tests without requiring that the developer install the
323# DPDK libraries.  Explicit linkage of drivers (plugin libraries)
324# in applications should not be used.
325if dpdk_conf.has('RTE_LIBRTE_RING_MEMPOOL')
326	test_deps += 'mempool_ring'
327endif
328if dpdk_conf.has('RTE_LIBRTE_STACK_MEMPOOL')
329	test_deps += 'mempool_stack'
330endif
331if dpdk_conf.has('RTE_LIBRTE_SKELETON_EVENTDEV_PMD')
332	test_deps += 'pmd_skeleton_event'
333endif
334
335# The following linkages of drivers are required because
336# they are used via a driver-specific API.
337if dpdk_conf.has('RTE_LIBRTE_BOND_PMD')
338	test_deps += 'pmd_bond'
339endif
340if dpdk_conf.has('RTE_LIBRTE_RING_PMD')
341	test_deps += 'pmd_ring'
342endif
343
344if dpdk_conf.has('RTE_LIBRTE_POWER')
345	test_deps += 'power'
346endif
347if dpdk_conf.has('RTE_LIBRTE_KNI')
348	test_deps += 'kni'
349endif
350if dpdk_conf.has('RTE_LIBRTE_PDUMP')
351	test_deps += 'pdump'
352endif
353
354cflags = machine_args
355if cc.has_argument('-Wno-format-truncation')
356    cflags += '-Wno-format-truncation'
357endif
358
359# specify -D_GNU_SOURCE unconditionally
360cflags += '-D_GNU_SOURCE'
361
362test_dep_objs = []
363if dpdk_conf.has('RTE_LIBRTE_COMPRESSDEV')
364	compress_test_dep = dependency('zlib', required: false)
365	if compress_test_dep.found()
366		test_dep_objs += compress_test_dep
367		test_sources += 'test_compressdev.c'
368		test_deps += 'compressdev'
369		fast_test_names += 'compressdev_autotest'
370	endif
371endif
372
373if dpdk_conf.has('RTE_LIBRTE_PMD_CRYPTO_SCHEDULER')
374	driver_test_names += 'cryptodev_scheduler_autotest'
375endif
376
377foreach d:test_deps
378	def_lib = get_option('default_library')
379	test_dep_objs += get_variable(def_lib + '_rte_' + d)
380endforeach
381test_dep_objs += cc.find_library('execinfo', required: false)
382
383link_libs = []
384if get_option('default_library') == 'static'
385	link_libs = dpdk_drivers
386endif
387
388dpdk_test = executable('dpdk-test',
389	test_sources,
390	link_whole: link_libs,
391	dependencies: test_dep_objs,
392	c_args: [cflags, '-DALLOW_EXPERIMENTAL_API'],
393	install_rpath: driver_install_path,
394	install: true)
395
396# some perf tests (eg: memcpy perf autotest)take very long
397# to complete, so timeout to 10 minutes
398timeout_seconds = 600
399timeout_seconds_fast = 10
400
401get_coremask = find_program('get-coremask.sh')
402num_cores_arg = '-l ' + run_command(get_coremask).stdout().strip()
403
404test_args = [num_cores_arg]
405foreach arg : fast_test_names
406	if host_machine.system() == 'linux'
407		test(arg, dpdk_test,
408			  env : ['DPDK_TEST=' + arg],
409			  args : test_args +
410				 ['--file-prefix=@0@'.format(arg)],
411		timeout : timeout_seconds_fast,
412		is_parallel : false,
413		suite : 'fast-tests')
414	else
415		test(arg, dpdk_test,
416			env : ['DPDK_TEST=' + arg],
417			args : test_args,
418		timeout : timeout_seconds_fast,
419		is_parallel : false,
420		suite : 'fast-tests')
421	endif
422endforeach
423
424foreach arg : perf_test_names
425	test(arg, dpdk_test,
426	env : ['DPDK_TEST=' + arg],
427	args : test_args,
428	timeout : timeout_seconds,
429	is_parallel : false,
430	suite : 'perf-tests')
431endforeach
432
433foreach arg : driver_test_names
434	test(arg, dpdk_test,
435		env : ['DPDK_TEST=' + arg],
436		args : test_args,
437		timeout : timeout_seconds,
438		is_parallel : false,
439		suite : 'driver-tests')
440endforeach
441
442foreach arg : dump_test_names
443	test(arg, dpdk_test,
444		env : ['DPDK_TEST=' + arg],
445		args : test_args,
446		timeout : timeout_seconds,
447		is_parallel : false,
448		suite : 'debug-tests')
449endforeach
450