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