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