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