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