xref: /dpdk/app/test/meson.build (revision 9e6b36c3)
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
401# Retrieve the number of CPU cores, defaulting to 4.
402num_cores = '0-3'
403if host_machine.system() == 'linux'
404	num_cores = run_command('cat',
405				'/sys/devices/system/cpu/present'
406			       ).stdout().strip()
407elif host_machine.system() == 'freebsd'
408	snum_cores = run_command('/sbin/sysctl', '-n',
409				 'hw.ncpu').stdout().strip()
410	inum_cores = snum_cores.to_int() - 1
411        num_cores = '0-@0@'.format(inum_cores)
412endif
413
414num_cores_arg = '-l ' + num_cores
415
416test_args = [num_cores_arg]
417foreach arg : fast_test_names
418	if host_machine.system() == 'linux'
419		test(arg, dpdk_test,
420			  env : ['DPDK_TEST=' + arg],
421			  args : test_args +
422				 ['--file-prefix=@0@'.format(arg)],
423		timeout : timeout_seconds_fast,
424		is_parallel : false,
425		suite : 'fast-tests')
426	else
427		test(arg, dpdk_test,
428			env : ['DPDK_TEST=' + arg],
429			args : test_args,
430		timeout : timeout_seconds_fast,
431		is_parallel : false,
432		suite : 'fast-tests')
433	endif
434endforeach
435
436foreach arg : perf_test_names
437	test(arg, dpdk_test,
438	env : ['DPDK_TEST=' + arg],
439	args : test_args,
440	timeout : timeout_seconds,
441	is_parallel : false,
442	suite : 'perf-tests')
443endforeach
444
445foreach arg : driver_test_names
446	test(arg, dpdk_test,
447		env : ['DPDK_TEST=' + arg],
448		args : test_args,
449		timeout : timeout_seconds,
450		is_parallel : false,
451		suite : 'driver-tests')
452endforeach
453
454foreach arg : dump_test_names
455	test(arg, dpdk_test,
456		env : ['DPDK_TEST=' + arg],
457		args : test_args,
458		timeout : timeout_seconds,
459		is_parallel : false,
460		suite : 'debug-tests')
461endforeach
462