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