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