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