app/test: remove meson dependency on file in /sys
[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         'rib_slow_autotest',
263         'fib_slow_autotest',
264         'fib_perf_autotest',
265         'red_all',
266         'barrier_autotest',
267         'hash_multiwriter_autotest',
268         'timer_racecond_autotest',
269         'efd_autotest',
270         'hash_functions_autotest',
271         'member_perf_autotest',
272         'efd_perf_autotest',
273         'lpm6_perf_autotest',
274         'rib6_slow_autotest',
275         'fib6_slow_autotest',
276         'fib6_perf_autotest',
277         'rcu_qsbr_perf_autotest',
278         'red_perf',
279         'distributor_perf_autotest',
280         'ring_pmd_perf_autotest',
281         'pmd_perf_autotest',
282         'stack_perf_autotest',
283         'stack_lf_perf_autotest',
284         'rand_perf_autotest',
285 ]
286
287 driver_test_names = [
288         'cryptodev_aesni_mb_autotest',
289         'cryptodev_aesni_gcm_autotest',
290         'cryptodev_dpaa_sec_autotest',
291         'cryptodev_dpaa2_sec_autotest',
292         'cryptodev_null_autotest',
293         'cryptodev_octeontx2_autotest',
294         'cryptodev_openssl_autotest',
295         'cryptodev_openssl_asym_autotest',
296         'cryptodev_qat_autotest',
297         'cryptodev_sw_armv8_autotest',
298         'cryptodev_sw_kasumi_autotest',
299         'cryptodev_sw_mvsam_autotest',
300         'cryptodev_sw_snow3g_autotest',
301         'cryptodev_sw_zuc_autotest',
302         'eventdev_selftest_octeontx',
303         'eventdev_selftest_sw',
304         'link_bonding_autotest',
305         'link_bonding_mode4_autotest',
306         'link_bonding_rssconf_autotest',
307         'rawdev_autotest',
308 ]
309
310 dump_test_names = [
311         'dump_struct_sizes',
312         'dump_mempool',
313         'dump_malloc_stats',
314         'dump_devargs',
315         'dump_log_types',
316         'dump_ring',
317         'dump_physmem',
318         'dump_memzone',
319 ]
320
321 # The following linkages are an exception to allow running the
322 # unit tests without requiring that the developer install the
323 # DPDK libraries.  Explicit linkage of drivers (plugin libraries)
324 # in applications should not be used.
325 if dpdk_conf.has('RTE_LIBRTE_RING_MEMPOOL')
326         test_deps += 'mempool_ring'
327 endif
328 if dpdk_conf.has('RTE_LIBRTE_STACK_MEMPOOL')
329         test_deps += 'mempool_stack'
330 endif
331 if dpdk_conf.has('RTE_LIBRTE_SKELETON_EVENTDEV_PMD')
332         test_deps += 'pmd_skeleton_event'
333 endif
334
335 # The following linkages of drivers are required because
336 # they are used via a driver-specific API.
337 if dpdk_conf.has('RTE_LIBRTE_BOND_PMD')
338         test_deps += 'pmd_bond'
339 endif
340 if dpdk_conf.has('RTE_LIBRTE_RING_PMD')
341         test_deps += 'pmd_ring'
342 endif
343
344 if dpdk_conf.has('RTE_LIBRTE_POWER')
345         test_deps += 'power'
346 endif
347 if dpdk_conf.has('RTE_LIBRTE_KNI')
348         test_deps += 'kni'
349 endif
350 if dpdk_conf.has('RTE_LIBRTE_PDUMP')
351         test_deps += 'pdump'
352 endif
353
354 cflags = machine_args
355 if cc.has_argument('-Wno-format-truncation')
356     cflags += '-Wno-format-truncation'
357 endif
358
359 # specify -D_GNU_SOURCE unconditionally
360 cflags += '-D_GNU_SOURCE'
361
362 test_dep_objs = []
363 if dpdk_conf.has('RTE_LIBRTE_COMPRESSDEV')
364         compress_test_dep = dependency('zlib', required: false)
365         if compress_test_dep.found()
366                 test_dep_objs += compress_test_dep
367                 test_sources += 'test_compressdev.c'
368                 test_deps += 'compressdev'
369                 fast_test_names += 'compressdev_autotest'
370         endif
371 endif
372
373 if dpdk_conf.has('RTE_LIBRTE_PMD_CRYPTO_SCHEDULER')
374         driver_test_names += 'cryptodev_scheduler_autotest'
375 endif
376
377 foreach d:test_deps
378         def_lib = get_option('default_library')
379         test_dep_objs += get_variable(def_lib + '_rte_' + d)
380 endforeach
381 test_dep_objs += cc.find_library('execinfo', required: false)
382
383 link_libs = []
384 if get_option('default_library') == 'static'
385         link_libs = dpdk_drivers
386 endif
387
388 dpdk_test = executable('dpdk-test',
389         test_sources,
390         link_whole: link_libs,
391         dependencies: test_dep_objs,
392         c_args: [cflags, '-DALLOW_EXPERIMENTAL_API'],
393         install_rpath: driver_install_path,
394         install: true)
395
396 # some perf tests (eg: memcpy perf autotest)take very long
397 # to complete, so timeout to 10 minutes
398 timeout_seconds = 600
399 timeout_seconds_fast = 10
400
401 get_coremask = find_program('get-coremask.sh')
402 num_cores_arg = '-l ' + run_command(get_coremask).stdout().strip()
403
404 test_args = [num_cores_arg]
405 foreach arg : fast_test_names
406         if host_machine.system() == 'linux'
407                 test(arg, dpdk_test,
408                           env : ['DPDK_TEST=' + arg],
409                           args : test_args +
410                                  ['--file-prefix=@0@'.format(arg)],
411                 timeout : timeout_seconds_fast,
412                 is_parallel : false,
413                 suite : 'fast-tests')
414         else
415                 test(arg, dpdk_test,
416                         env : ['DPDK_TEST=' + arg],
417                         args : test_args,
418                 timeout : timeout_seconds_fast,
419                 is_parallel : false,
420                 suite : 'fast-tests')
421         endif
422 endforeach
423
424 foreach arg : perf_test_names
425         test(arg, dpdk_test,
426         env : ['DPDK_TEST=' + arg],
427         args : test_args,
428         timeout : timeout_seconds,
429         is_parallel : false,
430         suite : 'perf-tests')
431 endforeach
432
433 foreach arg : driver_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 : 'driver-tests')
440 endforeach
441
442 foreach arg : dump_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 : 'debug-tests')
449 endforeach