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