test: remove meson dependency on /proc file
[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 # Each test is marked with flag true/false
158 # to indicate whether it can run in no-huge mode.
159 fast_tests = [
160         ['acl_autotest', true],
161         ['alarm_autotest', false],
162         ['atomic_autotest', false],
163         ['byteorder_autotest', true],
164         ['cmdline_autotest', true],
165         ['common_autotest', true],
166         ['cpuflags_autotest', true],
167         ['cycles_autotest', true],
168         ['debug_autotest', true],
169         ['eal_flags_c_opt_autotest', false],
170         ['eal_flags_master_opt_autotest', false],
171         ['eal_flags_n_opt_autotest', false],
172         ['eal_flags_hpet_autotest', false],
173         ['eal_flags_no_huge_autotest', false],
174         ['eal_flags_w_opt_autotest', false],
175         ['eal_flags_b_opt_autotest', false],
176         ['eal_flags_vdev_opt_autotest', false],
177         ['eal_flags_r_opt_autotest', false],
178         ['eal_flags_mem_autotest', false],
179         ['eal_flags_file_prefix_autotest', false],
180         ['eal_flags_misc_autotest', false],
181         ['eal_fs_autotest', true],
182         ['errno_autotest', true],
183         ['event_ring_autotest', true],
184         ['fib_autotest', true],
185         ['fib6_autotest', true],
186         ['func_reentrancy_autotest', false],
187         ['flow_classify_autotest', false],
188         ['hash_autotest', true],
189         ['interrupt_autotest', true],
190         ['logs_autotest', true],
191         ['lpm_autotest', true],
192         ['lpm6_autotest', true],
193         ['malloc_autotest', false],
194         ['mbuf_autotest', false],
195         ['mcslock_autotest', false],
196         ['memcpy_autotest', true],
197         ['memory_autotest', false],
198         ['mempool_autotest', false],
199         ['memzone_autotest', false],
200         ['meter_autotest', true],
201         ['multiprocess_autotest', false],
202         ['per_lcore_autotest', true],
203         ['prefetch_autotest', true],
204         ['rcu_qsbr_autotest', true],
205         ['red_autotest', true],
206         ['rib_autotest', true],
207         ['rib6_autotest', true],
208         ['ring_autotest', true],
209         ['rwlock_test1_autotest', true],
210         ['rwlock_rda_autotest', true],
211         ['rwlock_rds_wrm_autotest', true],
212         ['rwlock_rde_wro_autotest', true],
213         ['sched_autotest', true],
214         ['spinlock_autotest', true],
215         ['stack_autotest', false],
216         ['stack_lf_autotest', false],
217         ['string_autotest', true],
218         ['table_autotest', true],
219         ['tailq_autotest', true],
220         ['timer_autotest', false],
221         ['user_delay_us', true],
222         ['version_autotest', true],
223         ['crc_autotest', true],
224         ['delay_us_sleep_autotest', true],
225         ['distributor_autotest', false],
226         ['eventdev_common_autotest', true],
227         ['fbarray_autotest', true],
228         ['hash_readwrite_func_autotest', false],
229         ['ipsec_autotest', true],
230         ['kni_autotest', false],
231         ['kvargs_autotest', true],
232         ['member_autotest', true],
233         ['metrics_autotest', true],
234         ['power_cpufreq_autotest', false],
235         ['power_autotest', true],
236         ['power_kvm_vm_autotest', false],
237         ['reorder_autotest', true],
238         ['service_autotest', true],
239         ['thash_autotest', true],
240 ]
241
242 perf_test_names = [
243         'ring_perf_autotest',
244         'mempool_perf_autotest',
245         'memcpy_perf_autotest',
246         'hash_perf_autotest',
247         'timer_perf_autotest',
248         'reciprocal_division',
249         'reciprocal_division_perf',
250         'lpm_perf_autotest',
251         'rib_slow_autotest',
252         'fib_slow_autotest',
253         'fib_perf_autotest',
254         'red_all',
255         'barrier_autotest',
256         'hash_multiwriter_autotest',
257         'timer_racecond_autotest',
258         'efd_autotest',
259         'hash_functions_autotest',
260         'member_perf_autotest',
261         'efd_perf_autotest',
262         'lpm6_perf_autotest',
263         'rib6_slow_autotest',
264         'fib6_slow_autotest',
265         'fib6_perf_autotest',
266         'rcu_qsbr_perf_autotest',
267         'red_perf',
268         'distributor_perf_autotest',
269         'pmd_perf_autotest',
270         'stack_perf_autotest',
271         'stack_lf_perf_autotest',
272         'rand_perf_autotest',
273         'hash_readwrite_perf_autotest',
274         'hash_readwrite_lf_perf_autotest',
275 ]
276
277 driver_test_names = [
278         'cryptodev_aesni_mb_autotest',
279         'cryptodev_aesni_gcm_autotest',
280         'cryptodev_dpaa_sec_autotest',
281         'cryptodev_dpaa2_sec_autotest',
282         'cryptodev_null_autotest',
283         'cryptodev_octeontx2_autotest',
284         'cryptodev_openssl_autotest',
285         'cryptodev_openssl_asym_autotest',
286         'cryptodev_qat_autotest',
287         'cryptodev_sw_armv8_autotest',
288         'cryptodev_sw_kasumi_autotest',
289         'cryptodev_sw_mvsam_autotest',
290         'cryptodev_sw_snow3g_autotest',
291         'cryptodev_sw_zuc_autotest',
292         'eventdev_selftest_octeontx',
293         'eventdev_selftest_sw',
294         'link_bonding_autotest',
295         'link_bonding_rssconf_autotest',
296         'rawdev_autotest',
297 ]
298
299 dump_test_names = [
300         'dump_struct_sizes',
301         'dump_mempool',
302         'dump_malloc_stats',
303         'dump_devargs',
304         'dump_log_types',
305         'dump_ring',
306         'dump_physmem',
307         'dump_memzone',
308 ]
309
310 # The following linkages are an exception to allow running the
311 # unit tests without requiring that the developer install the
312 # DPDK libraries.  Explicit linkage of drivers (plugin libraries)
313 # in applications should not be used.
314 if dpdk_conf.has('RTE_LIBRTE_RING_MEMPOOL')
315         test_deps += 'mempool_ring'
316 endif
317 if dpdk_conf.has('RTE_LIBRTE_STACK_MEMPOOL')
318         test_deps += 'mempool_stack'
319 endif
320 if dpdk_conf.has('RTE_LIBRTE_SKELETON_EVENTDEV_PMD')
321         test_deps += 'pmd_skeleton_event'
322 endif
323
324 # The following linkages of drivers are required because
325 # they are used via a driver-specific API.
326 if dpdk_conf.has('RTE_LIBRTE_BOND_PMD')
327         test_deps += 'pmd_bond'
328 endif
329 if dpdk_conf.has('RTE_LIBRTE_RING_PMD')
330         test_deps += 'pmd_ring'
331         test_sources += 'test_pmd_ring_perf.c'
332         test_sources += 'test_pmd_ring.c'
333         test_sources += 'test_event_eth_tx_adapter.c'
334         test_sources += 'test_bitratestats.c'
335         test_sources += 'test_latencystats.c'
336         test_sources += 'test_link_bonding_mode4.c'
337         test_sources += 'sample_packet_forward.c'
338         test_sources += 'test_pdump.c'
339         fast_tests += [['ring_pmd_autotest', true]]
340         perf_test_names += 'ring_pmd_perf_autotest'
341         fast_tests += [['event_eth_tx_adapter_autotest', false]]
342         fast_tests += [['bitratestats_autotest', true]]
343         fast_tests += [['latencystats_autotest', true]]
344         driver_test_names += 'link_bonding_mode4_autotest'
345         fast_tests += [['pdump_autotest', true]]
346 endif
347
348 if dpdk_conf.has('RTE_LIBRTE_POWER')
349         test_deps += 'power'
350 endif
351 if dpdk_conf.has('RTE_LIBRTE_KNI')
352         test_deps += 'kni'
353 endif
354 if dpdk_conf.has('RTE_LIBRTE_PDUMP')
355         test_deps += 'pdump'
356 endif
357
358 if cc.has_argument('-Wno-format-truncation')
359     cflags += '-Wno-format-truncation'
360 endif
361
362 # specify -D_GNU_SOURCE unconditionally
363 cflags += '-D_GNU_SOURCE'
364
365 test_dep_objs = []
366 if dpdk_conf.has('RTE_LIBRTE_COMPRESSDEV')
367         compress_test_dep = dependency('zlib', required: false)
368         if compress_test_dep.found()
369                 test_dep_objs += compress_test_dep
370                 test_sources += 'test_compressdev.c'
371                 test_deps += 'compressdev'
372                 fast_tests += [['compressdev_autotest', false]]
373         endif
374 endif
375
376 if dpdk_conf.has('RTE_LIBRTE_PMD_CRYPTO_SCHEDULER')
377         driver_test_names += 'cryptodev_scheduler_autotest'
378 endif
379
380 foreach d:test_deps
381         def_lib = get_option('default_library')
382         test_dep_objs += get_variable(def_lib + '_rte_' + d)
383 endforeach
384 test_dep_objs += cc.find_library('execinfo', required: false)
385
386 link_libs = []
387 if get_option('default_library') == 'static'
388         link_libs = dpdk_drivers
389 endif
390
391 dpdk_test = executable('dpdk-test',
392         test_sources,
393         link_whole: link_libs,
394         dependencies: test_dep_objs,
395         c_args: cflags,
396         install_rpath: driver_install_path,
397         install: true)
398
399 has_hugepage = run_command('has-hugepage.sh').stdout().strip() != '0'
400 message('hugepage availability: @0@'.format(has_hugepage))
401
402 # some perf tests (eg: memcpy perf autotest)take very long
403 # to complete, so timeout to 10 minutes
404 timeout_seconds = 600
405 timeout_seconds_fast = 10
406
407 get_coremask = find_program('get-coremask.sh')
408 num_cores_arg = '-l ' + run_command(get_coremask).stdout().strip()
409
410 default_test_args = [num_cores_arg]
411
412 foreach arg : fast_tests
413         test_args = default_test_args
414         run_test = true
415         if not has_hugepage
416                 if arg[1]
417                         test_args += ['--no-huge', '-m', '2048']
418                 else
419                         run_test = false
420                 endif
421         endif
422
423         if (get_option('default_library') == 'shared' and
424                 arg[0] == 'event_eth_tx_adapter_autotest')
425                 foreach drv:dpdk_drivers
426                         test_args += ['-d', drv.full_path().split('.a')[0] + '.so']
427                 endforeach
428         endif
429         if is_linux
430                 test_args += ['--file-prefix=@0@'.format(arg[0])]
431         endif
432
433         if run_test
434                 test(arg[0], dpdk_test,
435                         env : ['DPDK_TEST=' + arg[0]],
436                         args : test_args,
437                         timeout : timeout_seconds_fast,
438                         is_parallel : false,
439                         suite : 'fast-tests')
440         endif
441 endforeach
442
443 foreach arg : perf_test_names
444         test(arg, dpdk_test,
445         env : ['DPDK_TEST=' + arg],
446         args : default_test_args,
447         timeout : timeout_seconds,
448         is_parallel : false,
449         suite : 'perf-tests')
450 endforeach
451
452 foreach arg : driver_test_names
453         test(arg, dpdk_test,
454                 env : ['DPDK_TEST=' + arg],
455                 args : default_test_args,
456                 timeout : timeout_seconds,
457                 is_parallel : false,
458                 suite : 'driver-tests')
459 endforeach
460
461 foreach arg : dump_test_names
462         test(arg, dpdk_test,
463                 env : ['DPDK_TEST=' + arg],
464                 args : default_test_args,
465                 timeout : timeout_seconds,
466                 is_parallel : false,
467                 suite : 'debug-tests')
468 endforeach