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