test/hash: move lock-free tests to perf tests
[dpdk.git] / app / test / meson.build
1 # SPDX-License-Identifier: BSD-3-Clause
2 # Copyright(c) 2017 Intel Corporation
3
4 if not get_option('tests')
5         subdir_done()
6 endif
7
8 test_sources = files('commands.c',
9         'packet_burst_generator.c',
10         'sample_packet_forward.c',
11         'test.c',
12         'test_acl.c',
13         'test_alarm.c',
14         'test_atomic.c',
15         'test_barrier.c',
16         'test_bitratestats.c',
17         'test_bpf.c',
18         'test_byteorder.c',
19         'test_cmdline.c',
20         'test_cmdline_cirbuf.c',
21         'test_cmdline_etheraddr.c',
22         'test_cmdline_ipaddr.c',
23         'test_cmdline_lib.c',
24         'test_cmdline_num.c',
25         'test_cmdline_portlist.c',
26         'test_cmdline_string.c',
27         'test_common.c',
28         'test_cpuflags.c',
29         'test_crc.c',
30         'test_cryptodev.c',
31         'test_cryptodev_asym.c',
32         'test_cryptodev_blockcipher.c',
33         'test_cryptodev_security_pdcp.c',
34         'test_cycles.c',
35         'test_debug.c',
36         'test_distributor.c',
37         'test_distributor_perf.c',
38         'test_eal_flags.c',
39         'test_eal_fs.c',
40         'test_efd.c',
41         'test_efd_perf.c',
42         'test_errno.c',
43         'test_event_crypto_adapter.c',
44         'test_event_eth_rx_adapter.c',
45         'test_event_ring.c',
46         'test_event_eth_tx_adapter.c',
47         'test_event_timer_adapter.c',
48         'test_eventdev.c',
49         'test_external_mem.c',
50         'test_fbarray.c',
51         'test_fib.c',
52         'test_fib_perf.c',
53         'test_fib6.c',
54         'test_fib6_perf.c',
55         'test_func_reentrancy.c',
56         'test_flow_classify.c',
57         'test_hash.c',
58         'test_hash_functions.c',
59         'test_hash_multiwriter.c',
60         'test_hash_readwrite.c',
61         'test_hash_perf.c',
62         'test_hash_readwrite_lf_perf.c',
63         'test_interrupts.c',
64         'test_ipsec.c',
65         'test_ipsec_sad.c',
66         'test_kni.c',
67         'test_kvargs.c',
68         'test_latencystats.c',
69         'test_link_bonding.c',
70         'test_link_bonding_mode4.c',
71         'test_link_bonding_rssconf.c',
72         'test_logs.c',
73         'test_lpm.c',
74         'test_lpm6.c',
75         'test_lpm6_perf.c',
76         'test_lpm_perf.c',
77         'test_malloc.c',
78         'test_mbuf.c',
79         'test_member.c',
80         'test_member_perf.c',
81         'test_memcpy.c',
82         'test_memcpy_perf.c',
83         'test_memory.c',
84         'test_mempool.c',
85         'test_mempool_perf.c',
86         'test_memzone.c',
87         'test_meter.c',
88         'test_metrics.c',
89         'test_mcslock.c',
90         'test_mp_secondary.c',
91         'test_pdump.c',
92         'test_per_lcore.c',
93         'test_pmd_perf.c',
94         'test_pmd_ring.c',
95         'test_pmd_ring_perf.c',
96         'test_power.c',
97         'test_power_cpufreq.c',
98         'test_power_kvm_vm.c',
99         'test_prefetch.c',
100         'test_rand_perf.c',
101         'test_rawdev.c',
102         'test_rcu_qsbr.c',
103         'test_rcu_qsbr_perf.c',
104         'test_reciprocal_division.c',
105         'test_reciprocal_division_perf.c',
106         'test_red.c',
107         'test_reorder.c',
108         'test_rib.c',
109         'test_rib6.c',
110         'test_ring.c',
111         'test_ring_perf.c',
112         'test_rwlock.c',
113         'test_sched.c',
114         'test_service_cores.c',
115         'test_spinlock.c',
116         'test_stack.c',
117         'test_stack_perf.c',
118         'test_string_fns.c',
119         'test_table.c',
120         'test_table_acl.c',
121         'test_table_combined.c',
122         'test_table_pipeline.c',
123         'test_table_ports.c',
124         'test_table_tables.c',
125         'test_tailq.c',
126         'test_thash.c',
127         'test_timer.c',
128         'test_timer_perf.c',
129         'test_timer_racecond.c',
130         'test_timer_secondary.c',
131         'test_ticketlock.c',
132         'test_version.c',
133         'virtual_pmd.c'
134 )
135
136 test_deps = ['acl',
137         'bitratestats',
138         'bpf',
139         'cfgfile',
140         'cmdline',
141         'cryptodev',
142         'distributor',
143         'efd',
144         'ethdev',
145         'eventdev',
146         'fib',
147         'flow_classify',
148         'hash',
149         'ipsec',
150         'latencystats',
151         'lpm',
152         'member',
153         'metrics',
154         'pipeline',
155         'port',
156         'rawdev',
157         'rcu',
158         'reorder',
159         'rib',
160         'ring',
161         'stack',
162         'timer'
163 ]
164
165 fast_test_names = [
166         'acl_autotest',
167         'alarm_autotest',
168         'atomic_autotest',
169         'byteorder_autotest',
170         'cmdline_autotest',
171         'common_autotest',
172         'cpuflags_autotest',
173         'cycles_autotest',
174         'debug_autotest',
175         'eal_flags_c_opt_autotest',
176         'eal_flags_master_opt_autotest',
177         'eal_flags_n_opt_autotest',
178         'eal_flags_hpet_autotest',
179         'eal_flags_no_huge_autotest',
180         'eal_flags_w_opt_autotest',
181         'eal_flags_b_opt_autotest',
182         'eal_flags_vdev_opt_autotest',
183         'eal_flags_r_opt_autotest',
184         'eal_flags_mem_autotest',
185         'eal_flags_file_prefix_autotest',
186         'eal_flags_misc_autotest',
187         'eal_fs_autotest',
188         'errno_autotest',
189         'event_ring_autotest',
190         'fib_autotest',
191         'fib6_autotest',
192         'func_reentrancy_autotest',
193         'flow_classify_autotest',
194         'hash_autotest',
195         'interrupt_autotest',
196         'logs_autotest',
197         'lpm_autotest',
198         'lpm6_autotest',
199         'malloc_autotest',
200         'mbuf_autotest',
201         'mcslock_autotest',
202         'memcpy_autotest',
203         'memory_autotest',
204         'mempool_autotest',
205         'memzone_autotest',
206         'meter_autotest',
207         'multiprocess_autotest',
208         'per_lcore_autotest',
209         'prefetch_autotest',
210         'rcu_qsbr_autotest',
211         'red_autotest',
212         'rib_autotest',
213         'rib6_autotest',
214         'ring_autotest',
215         'ring_pmd_autotest',
216         'rwlock_test1_autotest',
217         'rwlock_rda_autotest',
218         'rwlock_rds_wrm_autotest',
219         'rwlock_rde_wro_autotest',
220         'sched_autotest',
221         'spinlock_autotest',
222         'stack_autotest',
223         'stack_lf_autotest',
224         'string_autotest',
225         'table_autotest',
226         'tailq_autotest',
227         'timer_autotest',
228         'user_delay_us',
229         'version_autotest',
230         'bitratestats_autotest',
231         'crc_autotest',
232         'delay_us_sleep_autotest',
233         'distributor_autotest',
234         'eventdev_common_autotest',
235         'fbarray_autotest',
236         'hash_readwrite_func_autotest',
237         'ipsec_autotest',
238         'kni_autotest',
239         'kvargs_autotest',
240         'latencystats_autotest',
241         'member_autotest',
242         'metrics_autotest',
243         'pdump_autotest',
244         'power_cpufreq_autotest',
245         'power_autotest',
246         'power_kvm_vm_autotest',
247         'reorder_autotest',
248         'service_autotest',
249         'thash_autotest',
250 ]
251
252 perf_test_names = [
253         'ring_perf_autotest',
254         'mempool_perf_autotest',
255         'memcpy_perf_autotest',
256         'hash_perf_autotest',
257         'timer_perf_autotest',
258         'reciprocal_division',
259         'reciprocal_division_perf',
260         'lpm_perf_autotest',
261         'rib_slow_autotest',
262         'fib_slow_autotest',
263         'fib_perf_autotest',
264         'red_all',
265         'barrier_autotest',
266         'hash_multiwriter_autotest',
267         'timer_racecond_autotest',
268         'efd_autotest',
269         'hash_functions_autotest',
270         'member_perf_autotest',
271         'efd_perf_autotest',
272         'lpm6_perf_autotest',
273         'rib6_slow_autotest',
274         'fib6_slow_autotest',
275         'fib6_perf_autotest',
276         'rcu_qsbr_perf_autotest',
277         'red_perf',
278         'distributor_perf_autotest',
279         'ring_pmd_perf_autotest',
280         'pmd_perf_autotest',
281         'stack_perf_autotest',
282         'stack_lf_perf_autotest',
283         'rand_perf_autotest',
284         'hash_readwrite_perf_autotest',
285         'hash_readwrite_lf_perf_autotest',
286 ]
287
288 driver_test_names = [
289         'cryptodev_aesni_mb_autotest',
290         'cryptodev_aesni_gcm_autotest',
291         'cryptodev_dpaa_sec_autotest',
292         'cryptodev_dpaa2_sec_autotest',
293         'cryptodev_null_autotest',
294         'cryptodev_octeontx2_autotest',
295         'cryptodev_openssl_autotest',
296         'cryptodev_openssl_asym_autotest',
297         'cryptodev_qat_autotest',
298         'cryptodev_sw_armv8_autotest',
299         'cryptodev_sw_kasumi_autotest',
300         'cryptodev_sw_mvsam_autotest',
301         'cryptodev_sw_snow3g_autotest',
302         'cryptodev_sw_zuc_autotest',
303         'eventdev_selftest_octeontx',
304         'eventdev_selftest_sw',
305         'link_bonding_autotest',
306         'link_bonding_mode4_autotest',
307         'link_bonding_rssconf_autotest',
308         'rawdev_autotest',
309 ]
310
311 dump_test_names = [
312         'dump_struct_sizes',
313         'dump_mempool',
314         'dump_malloc_stats',
315         'dump_devargs',
316         'dump_log_types',
317         'dump_ring',
318         'dump_physmem',
319         'dump_memzone',
320 ]
321
322 # The following linkages are an exception to allow running the
323 # unit tests without requiring that the developer install the
324 # DPDK libraries.  Explicit linkage of drivers (plugin libraries)
325 # in applications should not be used.
326 if dpdk_conf.has('RTE_LIBRTE_RING_MEMPOOL')
327         test_deps += 'mempool_ring'
328 endif
329 if dpdk_conf.has('RTE_LIBRTE_STACK_MEMPOOL')
330         test_deps += 'mempool_stack'
331 endif
332 if dpdk_conf.has('RTE_LIBRTE_SKELETON_EVENTDEV_PMD')
333         test_deps += 'pmd_skeleton_event'
334 endif
335
336 # The following linkages of drivers are required because
337 # they are used via a driver-specific API.
338 if dpdk_conf.has('RTE_LIBRTE_BOND_PMD')
339         test_deps += 'pmd_bond'
340 endif
341 if dpdk_conf.has('RTE_LIBRTE_RING_PMD')
342         test_deps += 'pmd_ring'
343 endif
344
345 if dpdk_conf.has('RTE_LIBRTE_POWER')
346         test_deps += 'power'
347 endif
348 if dpdk_conf.has('RTE_LIBRTE_KNI')
349         test_deps += 'kni'
350 endif
351 if dpdk_conf.has('RTE_LIBRTE_PDUMP')
352         test_deps += 'pdump'
353 endif
354
355 cflags = machine_args
356 if cc.has_argument('-Wno-format-truncation')
357     cflags += '-Wno-format-truncation'
358 endif
359
360 # specify -D_GNU_SOURCE unconditionally
361 cflags += '-D_GNU_SOURCE'
362
363 test_dep_objs = []
364 if dpdk_conf.has('RTE_LIBRTE_COMPRESSDEV')
365         compress_test_dep = dependency('zlib', required: false)
366         if compress_test_dep.found()
367                 test_dep_objs += compress_test_dep
368                 test_sources += 'test_compressdev.c'
369                 test_deps += 'compressdev'
370                 fast_test_names += 'compressdev_autotest'
371         endif
372 endif
373
374 if dpdk_conf.has('RTE_LIBRTE_PMD_CRYPTO_SCHEDULER')
375         driver_test_names += 'cryptodev_scheduler_autotest'
376 endif
377
378 foreach d:test_deps
379         def_lib = get_option('default_library')
380         test_dep_objs += get_variable(def_lib + '_rte_' + d)
381 endforeach
382 test_dep_objs += cc.find_library('execinfo', required: false)
383
384 link_libs = []
385 if get_option('default_library') == 'static'
386         link_libs = dpdk_drivers
387 endif
388
389 dpdk_test = executable('dpdk-test',
390         test_sources,
391         link_whole: link_libs,
392         dependencies: test_dep_objs,
393         c_args: [cflags, '-DALLOW_EXPERIMENTAL_API'],
394         install_rpath: driver_install_path,
395         install: true)
396
397 # some perf tests (eg: memcpy perf autotest)take very long
398 # to complete, so timeout to 10 minutes
399 timeout_seconds = 600
400 timeout_seconds_fast = 10
401
402 get_coremask = find_program('get-coremask.sh')
403 num_cores_arg = '-l ' + run_command(get_coremask).stdout().strip()
404
405 test_args = [num_cores_arg]
406 foreach arg : fast_test_names
407         if host_machine.system() == 'linux'
408                 test(arg, dpdk_test,
409                           env : ['DPDK_TEST=' + arg],
410                           args : test_args +
411                                  ['--file-prefix=@0@'.format(arg)],
412                 timeout : timeout_seconds_fast,
413                 is_parallel : false,
414                 suite : 'fast-tests')
415         else
416                 test(arg, dpdk_test,
417                         env : ['DPDK_TEST=' + arg],
418                         args : test_args,
419                 timeout : timeout_seconds_fast,
420                 is_parallel : false,
421                 suite : 'fast-tests')
422         endif
423 endforeach
424
425 foreach arg : perf_test_names
426         test(arg, dpdk_test,
427         env : ['DPDK_TEST=' + arg],
428         args : test_args,
429         timeout : timeout_seconds,
430         is_parallel : false,
431         suite : 'perf-tests')
432 endforeach
433
434 foreach arg : driver_test_names
435         test(arg, dpdk_test,
436                 env : ['DPDK_TEST=' + arg],
437                 args : test_args,
438                 timeout : timeout_seconds,
439                 is_parallel : false,
440                 suite : 'driver-tests')
441 endforeach
442
443 foreach arg : dump_test_names
444         test(arg, dpdk_test,
445                 env : ['DPDK_TEST=' + arg],
446                 args : test_args,
447                 timeout : timeout_seconds,
448                 is_parallel : false,
449                 suite : 'debug-tests')
450 endforeach