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