0a2ce710f060e15ff7af623145b21995643feb88
[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         'test.c',
11         'test_acl.c',
12         'test_alarm.c',
13         'test_atomic.c',
14         'test_barrier.c',
15         'test_bpf.c',
16         'test_byteorder.c',
17         'test_cmdline.c',
18         'test_cmdline_cirbuf.c',
19         'test_cmdline_etheraddr.c',
20         'test_cmdline_ipaddr.c',
21         'test_cmdline_lib.c',
22         'test_cmdline_num.c',
23         'test_cmdline_portlist.c',
24         'test_cmdline_string.c',
25         'test_common.c',
26         'test_cpuflags.c',
27         'test_crc.c',
28         'test_cryptodev.c',
29         'test_cryptodev_asym.c',
30         'test_cryptodev_blockcipher.c',
31         'test_cryptodev_security_pdcp.c',
32         'test_cycles.c',
33         'test_debug.c',
34         'test_distributor.c',
35         'test_distributor_perf.c',
36         'test_eal_flags.c',
37         'test_eal_fs.c',
38         'test_efd.c',
39         'test_efd_perf.c',
40         'test_errno.c',
41         'test_event_crypto_adapter.c',
42         'test_event_eth_rx_adapter.c',
43         'test_event_ring.c',
44         'test_event_timer_adapter.c',
45         'test_eventdev.c',
46         'test_external_mem.c',
47         'test_fbarray.c',
48         'test_fib.c',
49         'test_fib_perf.c',
50         'test_fib6.c',
51         'test_fib6_perf.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_perf.c',
60         'test_interrupts.c',
61         'test_ipsec.c',
62         'test_ipsec_sad.c',
63         'test_kni.c',
64         'test_kvargs.c',
65         'test_link_bonding.c',
66         'test_link_bonding_rssconf.c',
67         'test_logs.c',
68         'test_lpm.c',
69         'test_lpm6.c',
70         'test_lpm6_perf.c',
71         'test_lpm_perf.c',
72         'test_malloc.c',
73         'test_mbuf.c',
74         'test_member.c',
75         'test_member_perf.c',
76         'test_memcpy.c',
77         'test_memcpy_perf.c',
78         'test_memory.c',
79         'test_mempool.c',
80         'test_mempool_perf.c',
81         'test_memzone.c',
82         'test_meter.c',
83         'test_metrics.c',
84         'test_mcslock.c',
85         'test_mp_secondary.c',
86         'test_per_lcore.c',
87         'test_pmd_perf.c',
88         'test_power.c',
89         'test_power_cpufreq.c',
90         'test_power_kvm_vm.c',
91         'test_prefetch.c',
92         'test_rand_perf.c',
93         'test_rawdev.c',
94         'test_rcu_qsbr.c',
95         'test_rcu_qsbr_perf.c',
96         'test_reciprocal_division.c',
97         'test_reciprocal_division_perf.c',
98         'test_red.c',
99         'test_reorder.c',
100         'test_rib.c',
101         'test_rib6.c',
102         'test_ring.c',
103         'test_ring_perf.c',
104         'test_rwlock.c',
105         'test_sched.c',
106         'test_service_cores.c',
107         'test_spinlock.c',
108         'test_stack.c',
109         'test_stack_perf.c',
110         'test_string_fns.c',
111         'test_table.c',
112         'test_table_acl.c',
113         'test_table_combined.c',
114         'test_table_pipeline.c',
115         'test_table_ports.c',
116         'test_table_tables.c',
117         'test_tailq.c',
118         'test_thash.c',
119         'test_timer.c',
120         'test_timer_perf.c',
121         'test_timer_racecond.c',
122         'test_timer_secondary.c',
123         'test_ticketlock.c',
124         'test_version.c',
125         'virtual_pmd.c'
126 )
127
128 test_deps = ['acl',
129         'bitratestats',
130         'bpf',
131         'cfgfile',
132         'cmdline',
133         'cryptodev',
134         'distributor',
135         'efd',
136         'ethdev',
137         'eventdev',
138         'fib',
139         'flow_classify',
140         'hash',
141         'ipsec',
142         'latencystats',
143         'lpm',
144         'member',
145         'metrics',
146         'pipeline',
147         'port',
148         'rawdev',
149         'rcu',
150         'reorder',
151         'rib',
152         'ring',
153         'stack',
154         'timer'
155 ]
156
157 fast_test_names = [
158         'acl_autotest',
159         'alarm_autotest',
160         'atomic_autotest',
161         'byteorder_autotest',
162         'cmdline_autotest',
163         'common_autotest',
164         'cpuflags_autotest',
165         'cycles_autotest',
166         'debug_autotest',
167         'eal_flags_c_opt_autotest',
168         'eal_flags_master_opt_autotest',
169         'eal_flags_n_opt_autotest',
170         'eal_flags_hpet_autotest',
171         'eal_flags_no_huge_autotest',
172         'eal_flags_w_opt_autotest',
173         'eal_flags_b_opt_autotest',
174         'eal_flags_vdev_opt_autotest',
175         'eal_flags_r_opt_autotest',
176         'eal_flags_mem_autotest',
177         'eal_flags_file_prefix_autotest',
178         'eal_flags_misc_autotest',
179         'eal_fs_autotest',
180         'errno_autotest',
181         'event_ring_autotest',
182         'fib_autotest',
183         'fib6_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         'rib6_autotest',
206         'ring_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         'crc_autotest',
222         'delay_us_sleep_autotest',
223         'distributor_autotest',
224         'eventdev_common_autotest',
225         'fbarray_autotest',
226         'hash_readwrite_func_autotest',
227         'ipsec_autotest',
228         'kni_autotest',
229         'kvargs_autotest',
230         'member_autotest',
231         'metrics_autotest',
232         'power_cpufreq_autotest',
233         'power_autotest',
234         'power_kvm_vm_autotest',
235         'reorder_autotest',
236         'service_autotest',
237         'thash_autotest',
238 ]
239
240 perf_test_names = [
241         'ring_perf_autotest',
242         'mempool_perf_autotest',
243         'memcpy_perf_autotest',
244         'hash_perf_autotest',
245         'timer_perf_autotest',
246         'reciprocal_division',
247         'reciprocal_division_perf',
248         'lpm_perf_autotest',
249         'rib_slow_autotest',
250         'fib_slow_autotest',
251         'fib_perf_autotest',
252         'red_all',
253         'barrier_autotest',
254         'hash_multiwriter_autotest',
255         'timer_racecond_autotest',
256         'efd_autotest',
257         'hash_functions_autotest',
258         'member_perf_autotest',
259         'efd_perf_autotest',
260         'lpm6_perf_autotest',
261         'rib6_slow_autotest',
262         'fib6_slow_autotest',
263         'fib6_perf_autotest',
264         'rcu_qsbr_perf_autotest',
265         'red_perf',
266         'distributor_perf_autotest',
267         'pmd_perf_autotest',
268         'stack_perf_autotest',
269         'stack_lf_perf_autotest',
270         'rand_perf_autotest',
271         'hash_readwrite_perf_autotest',
272         'hash_readwrite_lf_perf_autotest',
273 ]
274
275 driver_test_names = [
276         'cryptodev_aesni_mb_autotest',
277         'cryptodev_aesni_gcm_autotest',
278         'cryptodev_dpaa_sec_autotest',
279         'cryptodev_dpaa2_sec_autotest',
280         'cryptodev_null_autotest',
281         'cryptodev_octeontx2_autotest',
282         'cryptodev_openssl_autotest',
283         'cryptodev_openssl_asym_autotest',
284         'cryptodev_qat_autotest',
285         'cryptodev_sw_armv8_autotest',
286         'cryptodev_sw_kasumi_autotest',
287         'cryptodev_sw_mvsam_autotest',
288         'cryptodev_sw_snow3g_autotest',
289         'cryptodev_sw_zuc_autotest',
290         'eventdev_selftest_octeontx',
291         'eventdev_selftest_sw',
292         'link_bonding_autotest',
293         'link_bonding_rssconf_autotest',
294         'rawdev_autotest',
295 ]
296
297 dump_test_names = [
298         'dump_struct_sizes',
299         'dump_mempool',
300         'dump_malloc_stats',
301         'dump_devargs',
302         'dump_log_types',
303         'dump_ring',
304         'dump_physmem',
305         'dump_memzone',
306 ]
307
308 # The following linkages are an exception to allow running the
309 # unit tests without requiring that the developer install the
310 # DPDK libraries.  Explicit linkage of drivers (plugin libraries)
311 # in applications should not be used.
312 if dpdk_conf.has('RTE_LIBRTE_RING_MEMPOOL')
313         test_deps += 'mempool_ring'
314 endif
315 if dpdk_conf.has('RTE_LIBRTE_STACK_MEMPOOL')
316         test_deps += 'mempool_stack'
317 endif
318 if dpdk_conf.has('RTE_LIBRTE_SKELETON_EVENTDEV_PMD')
319         test_deps += 'pmd_skeleton_event'
320 endif
321
322 # The following linkages of drivers are required because
323 # they are used via a driver-specific API.
324 if dpdk_conf.has('RTE_LIBRTE_BOND_PMD')
325         test_deps += 'pmd_bond'
326 endif
327 if dpdk_conf.has('RTE_LIBRTE_RING_PMD')
328         test_deps += 'pmd_ring'
329         test_sources += 'test_pmd_ring_perf.c'
330         test_sources += 'test_pmd_ring.c'
331         test_sources += 'test_event_eth_tx_adapter.c'
332         test_sources += 'test_bitratestats.c'
333         test_sources += 'test_latencystats.c'
334         test_sources += 'test_link_bonding_mode4.c'
335         test_sources += 'sample_packet_forward.c'
336         test_sources += 'test_pdump.c'
337         fast_test_names += 'ring_pmd_autotest'
338         perf_test_names += 'ring_pmd_perf_autotest'
339         fast_test_names += 'event_eth_tx_adapter_autotest'
340         fast_test_names += 'bitratestats_autotest'
341         fast_test_names += 'latencystats_autotest'
342         driver_test_names += 'link_bonding_mode4_autotest'
343         fast_test_names += 'pdump_autotest'
344 endif
345
346 if dpdk_conf.has('RTE_LIBRTE_POWER')
347         test_deps += 'power'
348 endif
349 if dpdk_conf.has('RTE_LIBRTE_KNI')
350         test_deps += 'kni'
351 endif
352 if dpdk_conf.has('RTE_LIBRTE_PDUMP')
353         test_deps += 'pdump'
354 endif
355
356 cflags = machine_args
357 if cc.has_argument('-Wno-format-truncation')
358     cflags += '-Wno-format-truncation'
359 endif
360
361 # specify -D_GNU_SOURCE unconditionally
362 cflags += '-D_GNU_SOURCE'
363
364 test_dep_objs = []
365 if dpdk_conf.has('RTE_LIBRTE_COMPRESSDEV')
366         compress_test_dep = dependency('zlib', required: false)
367         if compress_test_dep.found()
368                 test_dep_objs += compress_test_dep
369                 test_sources += 'test_compressdev.c'
370                 test_deps += 'compressdev'
371                 fast_test_names += 'compressdev_autotest'
372         endif
373 endif
374
375 if dpdk_conf.has('RTE_LIBRTE_PMD_CRYPTO_SCHEDULER')
376         driver_test_names += 'cryptodev_scheduler_autotest'
377 endif
378
379 foreach d:test_deps
380         def_lib = get_option('default_library')
381         test_dep_objs += get_variable(def_lib + '_rte_' + d)
382 endforeach
383 test_dep_objs += cc.find_library('execinfo', required: false)
384
385 link_libs = []
386 if get_option('default_library') == 'static'
387         link_libs = dpdk_drivers
388 endif
389
390 dpdk_test = executable('dpdk-test',
391         test_sources,
392         link_whole: link_libs,
393         dependencies: test_dep_objs,
394         c_args: [cflags, '-DALLOW_EXPERIMENTAL_API'],
395         install_rpath: driver_install_path,
396         install: true)
397
398 # some perf tests (eg: memcpy perf autotest)take very long
399 # to complete, so timeout to 10 minutes
400 timeout_seconds = 600
401 timeout_seconds_fast = 10
402
403 get_coremask = find_program('get-coremask.sh')
404 num_cores_arg = '-l ' + run_command(get_coremask).stdout().strip()
405
406 test_args = [num_cores_arg]
407
408 foreach arg : fast_test_names
409         if (get_option('default_library') == 'shared' and
410                 arg == 'event_eth_tx_adapter_autotest')
411                 foreach drv:dpdk_drivers
412                         test_args += ['-d', drv.full_path().split('.a')[0] + '.so']
413                 endforeach
414         endif
415         if host_machine.system() == 'linux'
416                 test(arg, dpdk_test,
417                           env : ['DPDK_TEST=' + arg],
418                           args : test_args +
419                                  ['--file-prefix=@0@'.format(arg)],
420                 timeout : timeout_seconds_fast,
421                 is_parallel : false,
422                 suite : 'fast-tests')
423         else
424                 test(arg, dpdk_test,
425                         env : ['DPDK_TEST=' + arg],
426                         args : test_args,
427                 timeout : timeout_seconds_fast,
428                 is_parallel : false,
429                 suite : 'fast-tests')
430         endif
431 endforeach
432
433 foreach arg : perf_test_names
434         test(arg, dpdk_test,
435         env : ['DPDK_TEST=' + arg],
436         args : test_args,
437         timeout : timeout_seconds,
438         is_parallel : false,
439         suite : 'perf-tests')
440 endforeach
441
442 foreach arg : driver_test_names
443         test(arg, dpdk_test,
444                 env : ['DPDK_TEST=' + arg],
445                 args : test_args,
446                 timeout : timeout_seconds,
447                 is_parallel : false,
448                 suite : 'driver-tests')
449 endforeach
450
451 foreach arg : dump_test_names
452         test(arg, dpdk_test,
453                 env : ['DPDK_TEST=' + arg],
454                 args : test_args,
455                 timeout : timeout_seconds,
456                 is_parallel : false,
457                 suite : 'debug-tests')
458 endforeach