test: add devargs test cases
[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         ['bitops_autotest', true],
202         ['byteorder_autotest', true],
203         ['cksum_autotest', true],
204         ['cmdline_autotest', true],
205         ['common_autotest', true],
206         ['cpuflags_autotest', true],
207         ['debug_autotest', true],
208         ['devargs_autotest', true],
209         ['eal_flags_c_opt_autotest', false],
210         ['eal_flags_main_opt_autotest', false],
211         ['eal_flags_n_opt_autotest', false],
212         ['eal_flags_hpet_autotest', false],
213         ['eal_flags_no_huge_autotest', false],
214         ['eal_flags_a_opt_autotest', false],
215         ['eal_flags_b_opt_autotest', false],
216         ['eal_flags_vdev_opt_autotest', false],
217         ['eal_flags_r_opt_autotest', false],
218         ['eal_flags_mem_autotest', false],
219         ['eal_flags_file_prefix_autotest', false],
220         ['eal_flags_misc_autotest', false],
221         ['eal_fs_autotest', true],
222         ['errno_autotest', true],
223         ['ethdev_link_status', true],
224         ['event_ring_autotest', true],
225         ['fib_autotest', true],
226         ['fib6_autotest', true],
227         ['func_reentrancy_autotest', false],
228         ['flow_classify_autotest', false],
229         ['hash_autotest', true],
230         ['interrupt_autotest', true],
231         ['ipfrag_autotest', false],
232         ['lcores_autotest', true],
233         ['logs_autotest', true],
234         ['lpm_autotest', true],
235         ['lpm6_autotest', true],
236         ['malloc_autotest', false],
237         ['mbuf_autotest', false],
238         ['mcslock_autotest', false],
239         ['memcpy_autotest', true],
240         ['memory_autotest', false],
241         ['mempool_autotest', false],
242         ['memzone_autotest', false],
243         ['meter_autotest', true],
244         ['multiprocess_autotest', false],
245         ['per_lcore_autotest', true],
246         ['pflock_autotest', true],
247         ['prefetch_autotest', true],
248         ['rcu_qsbr_autotest', true],
249         ['red_autotest', true],
250         ['rib_autotest', true],
251         ['rib6_autotest', true],
252         ['ring_autotest', true],
253         ['rwlock_test1_autotest', true],
254         ['rwlock_rda_autotest', true],
255         ['rwlock_rds_wrm_autotest', true],
256         ['rwlock_rde_wro_autotest', true],
257         ['sched_autotest', true],
258         ['security_autotest', false],
259         ['spinlock_autotest', true],
260         ['stack_autotest', false],
261         ['stack_lf_autotest', false],
262         ['string_autotest', true],
263         ['table_autotest', true],
264         ['tailq_autotest', true],
265         ['ticketlock_autotest', true],
266         ['timer_autotest', false],
267         ['user_delay_us', true],
268         ['version_autotest', true],
269         ['crc_autotest', true],
270         ['distributor_autotest', false],
271         ['eventdev_common_autotest', true],
272         ['fbarray_autotest', true],
273         ['hash_readwrite_func_autotest', false],
274         ['ipsec_autotest', true],
275         ['kni_autotest', false],
276         ['kvargs_autotest', true],
277         ['member_autotest', true],
278         ['metrics_autotest', true],
279         ['power_cpufreq_autotest', false],
280         ['power_autotest', true],
281         ['power_kvm_vm_autotest', false],
282         ['reorder_autotest', true],
283         ['service_autotest', true],
284         ['thash_autotest', true],
285         ['trace_autotest', true],
286 ]
287
288 perf_test_names = [
289         'ring_perf_autotest',
290         'mempool_perf_autotest',
291         'memcpy_perf_autotest',
292         'hash_perf_autotest',
293         'timer_perf_autotest',
294         'reciprocal_division',
295         'reciprocal_division_perf',
296         'lpm_perf_autotest',
297         'rib_slow_autotest',
298         'fib_slow_autotest',
299         'fib_perf_autotest',
300         'red_all',
301         'barrier_autotest',
302         'hash_multiwriter_autotest',
303         'timer_racecond_autotest',
304         'efd_autotest',
305         'hash_functions_autotest',
306         'member_perf_autotest',
307         'efd_perf_autotest',
308         'lpm6_perf_autotest',
309         'rib6_slow_autotest',
310         'fib6_slow_autotest',
311         'fib6_perf_autotest',
312         'rcu_qsbr_perf_autotest',
313         'red_perf',
314         'distributor_perf_autotest',
315         'pmd_perf_autotest',
316         'stack_perf_autotest',
317         'stack_lf_perf_autotest',
318         'rand_perf_autotest',
319         'hash_readwrite_perf_autotest',
320         'hash_readwrite_lf_perf_autotest',
321         'trace_perf_autotest',
322         'ipsec_perf_autotest',
323 ]
324
325 driver_test_names = [
326         'cryptodev_aesni_mb_autotest',
327         'cryptodev_aesni_gcm_autotest',
328         'cryptodev_cn9k_autotest',
329         'cryptodev_cn10k_autotest',
330         'cryptodev_dpaa_sec_autotest',
331         'cryptodev_dpaa2_sec_autotest',
332         'cryptodev_null_autotest',
333         'cryptodev_octeontx2_autotest',
334         'cryptodev_openssl_autotest',
335         'cryptodev_openssl_asym_autotest',
336         'cryptodev_qat_autotest',
337         'cryptodev_sw_armv8_autotest',
338         'cryptodev_sw_kasumi_autotest',
339         'cryptodev_sw_mvsam_autotest',
340         'cryptodev_sw_snow3g_autotest',
341         'cryptodev_sw_zuc_autotest',
342         'dmadev_autotest',
343         'eventdev_selftest_octeontx',
344         'eventdev_selftest_sw',
345         'rawdev_autotest',
346 ]
347
348 dump_test_names = [
349         'dump_struct_sizes',
350         'dump_mempool',
351         'dump_malloc_stats',
352         'dump_devargs',
353         'dump_log_types',
354         'dump_ring',
355         'dump_physmem',
356         'dump_memzone',
357 ]
358
359 # The following linkages are an exception to allow running the
360 # unit tests without requiring that the developer install the
361 # DPDK libraries.  Explicit linkage of drivers (plugin libraries)
362 # in applications should not be used.
363 if dpdk_conf.has('RTE_MEMPOOL_RING')
364     test_deps += 'mempool_ring'
365 endif
366 if dpdk_conf.has('RTE_MEMPOOL_STACK')
367     test_deps += 'mempool_stack'
368 endif
369 if dpdk_conf.has('RTE_EVENT_SKELETON')
370     test_deps += 'event_skeleton'
371 endif
372 if dpdk_conf.has('RTE_LIB_TELEMETRY')
373     test_sources += ['test_telemetry_json.c', 'test_telemetry_data.c']
374     fast_tests += [['telemetry_json_autotest', true], ['telemetry_data_autotest', true]]
375 endif
376
377 # The following linkages of drivers are required because
378 # they are used via a driver-specific API.
379 if dpdk_conf.has('RTE_NET_BOND')
380     test_deps += 'net_bond'
381     test_sources += ['test_link_bonding.c', 'test_link_bonding_rssconf.c']
382     driver_test_names += ['link_bonding_autotest', 'link_bonding_rssconf_autotest']
383     if dpdk_conf.has('RTE_NET_RING')
384         test_sources += 'test_link_bonding_mode4.c'
385         driver_test_names += 'link_bonding_mode4_autotest'
386     endif
387 endif
388 if dpdk_conf.has('RTE_NET_RING')
389     test_deps += 'net_ring'
390     test_sources += 'test_pmd_ring_perf.c'
391     test_sources += 'test_pmd_ring.c'
392     test_sources += 'test_event_eth_tx_adapter.c'
393     test_sources += 'test_bitratestats.c'
394     test_sources += 'test_latencystats.c'
395     test_sources += 'sample_packet_forward.c'
396     test_sources += 'test_pdump.c'
397     fast_tests += [['ring_pmd_autotest', true]]
398     perf_test_names += 'ring_pmd_perf_autotest'
399     fast_tests += [['event_eth_tx_adapter_autotest', false]]
400     fast_tests += [['bitratestats_autotest', true]]
401     fast_tests += [['latencystats_autotest', true]]
402     fast_tests += [['pdump_autotest', true]]
403 endif
404
405 if dpdk_conf.has('RTE_LIB_POWER')
406     test_deps += 'power'
407 endif
408 if dpdk_conf.has('RTE_LIB_KNI')
409     test_deps += 'kni'
410 endif
411 if dpdk_conf.has('RTE_LIB_PDUMP')
412     test_deps += 'pdump'
413 endif
414
415 if cc.has_argument('-Wno-format-truncation')
416     cflags += '-Wno-format-truncation'
417 endif
418
419 # Strict-aliasing rules are violated by uint8_t[] to context size casts.
420 cflags += '-fno-strict-aliasing'
421
422 # Enable using internal APIs in unit tests
423 cflags += ['-DALLOW_INTERNAL_API']
424
425 test_dep_objs = []
426 if dpdk_conf.has('RTE_LIB_COMPRESSDEV')
427     compress_test_dep = dependency('zlib', required: false, method: 'pkg-config')
428     if compress_test_dep.found()
429         test_dep_objs += compress_test_dep
430         test_sources += 'test_compressdev.c'
431         test_deps += 'compressdev'
432         fast_tests += [['compressdev_autotest', false]]
433     endif
434 endif
435
436 if dpdk_conf.has('RTE_CRYPTO_SCHEDULER')
437     driver_test_names += 'cryptodev_scheduler_autotest'
438     test_deps += 'crypto_scheduler'
439 endif
440
441 foreach d:test_deps
442     def_lib = get_option('default_library')
443     test_dep_objs += get_variable(def_lib + '_rte_' + d)
444 endforeach
445
446 link_libs = []
447 if get_option('default_library') == 'static'
448     link_libs = dpdk_static_libraries + dpdk_drivers
449 endif
450
451 dpdk_test = executable('dpdk-test',
452         test_sources,
453         link_whole: link_libs,
454         dependencies: test_dep_objs,
455         c_args: cflags,
456         install_rpath: join_paths(get_option('prefix'),
457              driver_install_path),
458         install: true)
459
460 has_hugepage = run_command('has-hugepage.sh').stdout().strip() != '0'
461 message('hugepage availability: @0@'.format(has_hugepage))
462
463 # some perf tests (eg: memcpy perf autotest)take very long
464 # to complete, so timeout to 10 minutes
465 timeout_seconds = 600
466 timeout_seconds_fast = 10
467
468 get_coremask = find_program('get-coremask.sh')
469 num_cores_arg = '-l ' + run_command(get_coremask).stdout().strip()
470
471 default_test_args = [num_cores_arg]
472
473 foreach arg : fast_tests
474     test_args = default_test_args
475     run_test = true
476     if not has_hugepage
477         if arg[1]
478             test_args += ['--no-huge', '-m', '2048']
479         else
480             run_test = false
481         endif
482     endif
483
484     if (get_option('default_library') == 'shared' and
485         arg[0] == 'event_eth_tx_adapter_autotest')
486         foreach drv:dpdk_drivers
487             test_args += ['-d', drv.full_path().split('.a')[0] + '.so']
488         endforeach
489     endif
490     if is_linux
491         test_args += ['--file-prefix=@0@'.format(arg[0])]
492     endif
493
494     if run_test
495         test(arg[0], dpdk_test,
496                 env : ['DPDK_TEST=' + arg[0]],
497                 args : test_args,
498                 timeout : timeout_seconds_fast,
499                 is_parallel : false,
500                 suite : 'fast-tests')
501     endif
502 endforeach
503
504 foreach arg : perf_test_names
505     test(arg, dpdk_test,
506             env : ['DPDK_TEST=' + arg],
507             args : default_test_args,
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             args : default_test_args,
517             timeout : timeout_seconds,
518             is_parallel : false,
519             suite : 'driver-tests')
520 endforeach
521
522 foreach arg : dump_test_names
523     test(arg, dpdk_test,
524             env : ['DPDK_TEST=' + arg],
525             args : default_test_args,
526             timeout : timeout_seconds,
527             is_parallel : false,
528             suite : 'debug-tests')
529 endforeach