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