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