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