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