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