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