build: remove special handling for node library
[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_bitops.c',
16         'test_bpf.c',
17         'test_byteorder.c',
18         'test_cmdline.c',
19         'test_cmdline_cirbuf.c',
20         'test_cmdline_etheraddr.c',
21         'test_cmdline_ipaddr.c',
22         'test_cmdline_lib.c',
23         'test_cmdline_num.c',
24         'test_cmdline_portlist.c',
25         'test_cmdline_string.c',
26         'test_common.c',
27         'test_cpuflags.c',
28         'test_crc.c',
29         'test_cryptodev.c',
30         'test_cryptodev_asym.c',
31         'test_cryptodev_blockcipher.c',
32         'test_cryptodev_security_pdcp.c',
33         'test_cycles.c',
34         'test_debug.c',
35         'test_distributor.c',
36         'test_distributor_perf.c',
37         'test_eal_flags.c',
38         'test_eal_fs.c',
39         'test_efd.c',
40         'test_efd_perf.c',
41         'test_errno.c',
42         'test_event_crypto_adapter.c',
43         'test_event_eth_rx_adapter.c',
44         'test_event_ring.c',
45         'test_event_timer_adapter.c',
46         'test_eventdev.c',
47         'test_external_mem.c',
48         'test_fbarray.c',
49         'test_fib.c',
50         'test_fib_perf.c',
51         'test_fib6.c',
52         'test_fib6_perf.c',
53         'test_func_reentrancy.c',
54         'test_flow_classify.c',
55         'test_graph.c',
56         'test_graph_perf.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_perf.c',
63         'test_interrupts.c',
64         'test_ipfrag.c',
65         'test_ipsec.c',
66         'test_ipsec_sad.c',
67         'test_ipsec_perf.c',
68         'test_kni.c',
69         'test_kvargs.c',
70         'test_logs.c',
71         'test_lpm.c',
72         'test_lpm6.c',
73         'test_lpm6_perf.c',
74         'test_lpm_perf.c',
75         'test_malloc.c',
76         'test_mbuf.c',
77         'test_member.c',
78         'test_member_perf.c',
79         'test_memcpy.c',
80         'test_memcpy_perf.c',
81         'test_memory.c',
82         'test_mempool.c',
83         'test_mempool_perf.c',
84         'test_memzone.c',
85         'test_meter.c',
86         'test_metrics.c',
87         'test_mcslock.c',
88         'test_mp_secondary.c',
89         'test_per_lcore.c',
90         'test_pmd_perf.c',
91         'test_power.c',
92         'test_power_cpufreq.c',
93         'test_power_kvm_vm.c',
94         'test_prefetch.c',
95         'test_rand_perf.c',
96         'test_rawdev.c',
97         'test_rcu_qsbr.c',
98         'test_rcu_qsbr_perf.c',
99         'test_reciprocal_division.c',
100         'test_reciprocal_division_perf.c',
101         'test_red.c',
102         'test_reorder.c',
103         'test_rib.c',
104         'test_rib6.c',
105         'test_ring.c',
106         'test_ring_mpmc_stress.c',
107         'test_ring_hts_stress.c',
108         'test_ring_mt_peek_stress.c',
109         'test_ring_perf.c',
110         'test_ring_rts_stress.c',
111         'test_ring_st_peek_stress.c',
112         'test_ring_stress.c',
113         'test_rwlock.c',
114         'test_sched.c',
115         'test_security.c',
116         'test_service_cores.c',
117         'test_spinlock.c',
118         'test_stack.c',
119         'test_stack_perf.c',
120         'test_string_fns.c',
121         'test_table.c',
122         'test_table_acl.c',
123         'test_table_combined.c',
124         'test_table_pipeline.c',
125         'test_table_ports.c',
126         'test_table_tables.c',
127         'test_tailq.c',
128         'test_thash.c',
129         'test_timer.c',
130         'test_timer_perf.c',
131         'test_timer_racecond.c',
132         'test_timer_secondary.c',
133         'test_ticketlock.c',
134         'test_trace.c',
135         'test_trace_register.c',
136         'test_trace_perf.c',
137         'test_version.c',
138         'virtual_pmd.c'
139 )
140
141 test_deps = ['acl',
142         'bus_pci',
143         'bus_vdev',
144         'bitratestats',
145         'bpf',
146         'cfgfile',
147         'cmdline',
148         'cryptodev',
149         'distributor',
150         'efd',
151         'ethdev',
152         'eventdev',
153         'fib',
154         'flow_classify',
155         'graph',
156         'hash',
157         'ipsec',
158         'latencystats',
159         'lpm',
160         'member',
161         'metrics',
162         'node',
163         'pipeline',
164         'port',
165         'rawdev',
166         'rcu',
167         'reorder',
168         'rib',
169         'ring',
170         'security',
171         'stack',
172         'timer'
173 ]
174
175 # Each test is marked with flag true/false
176 # to indicate whether it can run in no-huge mode.
177 fast_tests = [
178         ['acl_autotest', true],
179         ['alarm_autotest', false],
180         ['atomic_autotest', false],
181         ['bitops_autotest', true],
182         ['byteorder_autotest', true],
183         ['cmdline_autotest', true],
184         ['common_autotest', true],
185         ['cpuflags_autotest', true],
186         ['cycles_autotest', true],
187         ['debug_autotest', true],
188         ['eal_flags_c_opt_autotest', false],
189         ['eal_flags_master_opt_autotest', false],
190         ['eal_flags_n_opt_autotest', false],
191         ['eal_flags_hpet_autotest', false],
192         ['eal_flags_no_huge_autotest', false],
193         ['eal_flags_w_opt_autotest', false],
194         ['eal_flags_b_opt_autotest', false],
195         ['eal_flags_vdev_opt_autotest', false],
196         ['eal_flags_r_opt_autotest', false],
197         ['eal_flags_mem_autotest', false],
198         ['eal_flags_file_prefix_autotest', false],
199         ['eal_flags_misc_autotest', false],
200         ['eal_fs_autotest', true],
201         ['errno_autotest', true],
202         ['event_ring_autotest', true],
203         ['fib_autotest', true],
204         ['fib6_autotest', true],
205         ['func_reentrancy_autotest', false],
206         ['flow_classify_autotest', false],
207         ['hash_autotest', true],
208         ['interrupt_autotest', true],
209         ['ipfrag_autotest', false],
210         ['logs_autotest', true],
211         ['lpm_autotest', true],
212         ['lpm6_autotest', true],
213         ['malloc_autotest', false],
214         ['mbuf_autotest', false],
215         ['mcslock_autotest', false],
216         ['memcpy_autotest', true],
217         ['memory_autotest', false],
218         ['mempool_autotest', false],
219         ['memzone_autotest', false],
220         ['meter_autotest', true],
221         ['multiprocess_autotest', false],
222         ['per_lcore_autotest', true],
223         ['prefetch_autotest', true],
224         ['rcu_qsbr_autotest', true],
225         ['red_autotest', true],
226         ['rib_autotest', true],
227         ['rib6_autotest', true],
228         ['ring_autotest', true],
229         ['rwlock_test1_autotest', true],
230         ['rwlock_rda_autotest', true],
231         ['rwlock_rds_wrm_autotest', true],
232         ['rwlock_rde_wro_autotest', true],
233         ['sched_autotest', true],
234                 ['security_autotest', false],
235         ['spinlock_autotest', true],
236         ['stack_autotest', false],
237         ['stack_lf_autotest', false],
238         ['string_autotest', true],
239         ['table_autotest', true],
240         ['tailq_autotest', true],
241         ['timer_autotest', false],
242         ['user_delay_us', true],
243         ['version_autotest', true],
244         ['crc_autotest', true],
245         ['delay_us_sleep_autotest', true],
246         ['distributor_autotest', false],
247         ['eventdev_common_autotest', true],
248         ['fbarray_autotest', true],
249         ['hash_readwrite_func_autotest', false],
250         ['ipsec_autotest', true],
251         ['kni_autotest', false],
252         ['kvargs_autotest', true],
253         ['member_autotest', true],
254         ['metrics_autotest', true],
255         ['power_cpufreq_autotest', false],
256         ['power_autotest', true],
257         ['power_kvm_vm_autotest', false],
258         ['reorder_autotest', true],
259         ['service_autotest', true],
260         ['thash_autotest', true],
261         ['trace_autotest', true],
262 ]
263
264 perf_test_names = [
265         'ring_perf_autotest',
266         'mempool_perf_autotest',
267         'memcpy_perf_autotest',
268         'hash_perf_autotest',
269         'timer_perf_autotest',
270         'reciprocal_division',
271         'reciprocal_division_perf',
272         'lpm_perf_autotest',
273         'rib_slow_autotest',
274         'fib_slow_autotest',
275         'fib_perf_autotest',
276         'red_all',
277         'barrier_autotest',
278         'hash_multiwriter_autotest',
279         'timer_racecond_autotest',
280         'efd_autotest',
281         'hash_functions_autotest',
282         'member_perf_autotest',
283         'efd_perf_autotest',
284         'lpm6_perf_autotest',
285         'rib6_slow_autotest',
286         'fib6_slow_autotest',
287         'fib6_perf_autotest',
288         'rcu_qsbr_perf_autotest',
289         'red_perf',
290         'distributor_perf_autotest',
291         'pmd_perf_autotest',
292         'stack_perf_autotest',
293         'stack_lf_perf_autotest',
294         'rand_perf_autotest',
295         'hash_readwrite_perf_autotest',
296         'hash_readwrite_lf_perf_autotest',
297         'trace_perf_autotest',
298         'ipsec_perf_autotest',
299 ]
300
301 driver_test_names = [
302         'cryptodev_aesni_mb_autotest',
303         'cryptodev_aesni_gcm_autotest',
304         'cryptodev_dpaa_sec_autotest',
305         'cryptodev_dpaa2_sec_autotest',
306         'cryptodev_null_autotest',
307         'cryptodev_octeontx2_autotest',
308         'cryptodev_openssl_autotest',
309         'cryptodev_openssl_asym_autotest',
310         'cryptodev_qat_autotest',
311         'cryptodev_sw_armv8_autotest',
312         'cryptodev_sw_kasumi_autotest',
313         'cryptodev_sw_mvsam_autotest',
314         'cryptodev_sw_snow3g_autotest',
315         'cryptodev_sw_zuc_autotest',
316         'eventdev_selftest_octeontx',
317         'eventdev_selftest_sw',
318         'rawdev_autotest',
319 ]
320
321 dump_test_names = [
322         'dump_struct_sizes',
323         'dump_mempool',
324         'dump_malloc_stats',
325         'dump_devargs',
326         'dump_log_types',
327         'dump_ring',
328         'dump_physmem',
329         'dump_memzone',
330 ]
331
332 # The following linkages are an exception to allow running the
333 # unit tests without requiring that the developer install the
334 # DPDK libraries.  Explicit linkage of drivers (plugin libraries)
335 # in applications should not be used.
336 if dpdk_conf.has('RTE_LIBRTE_RING_MEMPOOL')
337         test_deps += 'mempool_ring'
338 endif
339 if dpdk_conf.has('RTE_LIBRTE_STACK_MEMPOOL')
340         test_deps += 'mempool_stack'
341 endif
342 if dpdk_conf.has('RTE_LIBRTE_SKELETON_EVENTDEV_PMD')
343         test_deps += 'pmd_skeleton_event'
344 endif
345 if dpdk_conf.has('RTE_LIBRTE_TELEMETRY')
346         test_sources += 'test_telemetry_json.c'
347         fast_tests += [['telemetry_json_autotest', true]]
348 endif
349
350 # The following linkages of drivers are required because
351 # they are used via a driver-specific API.
352 if dpdk_conf.has('RTE_LIBRTE_BOND_PMD')
353         test_deps += 'pmd_bond'
354         test_sources += ['test_link_bonding.c', 'test_link_bonding_rssconf.c']
355         driver_test_names += ['link_bonding_autotest', 'link_bonding_rssconf_autotest']
356         if dpdk_conf.has('RTE_LIBRTE_RING_PMD')
357                 test_sources += 'test_link_bonding_mode4.c'
358                 driver_test_names += 'link_bonding_mode4_autotest'
359         endif
360 endif
361 if dpdk_conf.has('RTE_LIBRTE_RING_PMD')
362         test_deps += 'pmd_ring'
363         test_sources += 'test_pmd_ring_perf.c'
364         test_sources += 'test_pmd_ring.c'
365         test_sources += 'test_event_eth_tx_adapter.c'
366         test_sources += 'test_bitratestats.c'
367         test_sources += 'test_latencystats.c'
368         test_sources += 'sample_packet_forward.c'
369         test_sources += 'test_pdump.c'
370         fast_tests += [['ring_pmd_autotest', true]]
371         perf_test_names += 'ring_pmd_perf_autotest'
372         fast_tests += [['event_eth_tx_adapter_autotest', false]]
373         fast_tests += [['bitratestats_autotest', true]]
374         fast_tests += [['latencystats_autotest', true]]
375         fast_tests += [['pdump_autotest', true]]
376 endif
377
378 if dpdk_conf.has('RTE_LIBRTE_POWER')
379         test_deps += 'power'
380 endif
381 if dpdk_conf.has('RTE_LIBRTE_KNI')
382         test_deps += 'kni'
383 endif
384 if dpdk_conf.has('RTE_LIBRTE_PDUMP')
385         test_deps += 'pdump'
386 endif
387
388 if cc.has_argument('-Wno-format-truncation')
389     cflags += '-Wno-format-truncation'
390 endif
391
392 # specify -D_GNU_SOURCE unconditionally
393 cflags += '-D_GNU_SOURCE'
394 # Strict-aliasing rules are violated by uint8_t[] to context size casts.
395 cflags += '-fno-strict-aliasing'
396
397 test_dep_objs = []
398 if dpdk_conf.has('RTE_LIBRTE_COMPRESSDEV')
399         compress_test_dep = dependency('zlib', required: false)
400         if compress_test_dep.found()
401                 test_dep_objs += compress_test_dep
402                 test_sources += 'test_compressdev.c'
403                 test_deps += 'compressdev'
404                 fast_tests += [['compressdev_autotest', false]]
405         endif
406 endif
407
408 if dpdk_conf.has('RTE_LIBRTE_PMD_CRYPTO_SCHEDULER')
409         driver_test_names += 'cryptodev_scheduler_autotest'
410 endif
411
412 foreach d:test_deps
413         def_lib = get_option('default_library')
414         test_dep_objs += get_variable(def_lib + '_rte_' + d)
415 endforeach
416 test_dep_objs += cc.find_library('execinfo', required: false)
417
418 link_libs = []
419 if get_option('default_library') == 'static'
420         link_libs = dpdk_static_libraries + dpdk_drivers
421 endif
422
423 dpdk_test = executable('dpdk-test',
424         test_sources,
425         link_whole: link_libs,
426         dependencies: test_dep_objs,
427         c_args: cflags,
428         install_rpath: driver_install_path,
429         install: true)
430
431 has_hugepage = run_command('has-hugepage.sh').stdout().strip() != '0'
432 message('hugepage availability: @0@'.format(has_hugepage))
433
434 # some perf tests (eg: memcpy perf autotest)take very long
435 # to complete, so timeout to 10 minutes
436 timeout_seconds = 600
437 timeout_seconds_fast = 10
438
439 get_coremask = find_program('get-coremask.sh')
440 num_cores_arg = '-l ' + run_command(get_coremask).stdout().strip()
441
442 default_test_args = [num_cores_arg]
443
444 foreach arg : fast_tests
445         test_args = default_test_args
446         run_test = true
447         if not has_hugepage
448                 if arg[1]
449                         test_args += ['--no-huge', '-m', '2048']
450                 else
451                         run_test = false
452                 endif
453         endif
454
455         if (get_option('default_library') == 'shared' and
456                 arg[0] == 'event_eth_tx_adapter_autotest')
457                 foreach drv:dpdk_drivers
458                         test_args += ['-d', drv.full_path().split('.a')[0] + '.so']
459                 endforeach
460         endif
461         if is_linux
462                 test_args += ['--file-prefix=@0@'.format(arg[0])]
463         endif
464
465         if run_test
466                 test(arg[0], dpdk_test,
467                         env : ['DPDK_TEST=' + arg[0]],
468                         args : test_args,
469                         timeout : timeout_seconds_fast,
470                         is_parallel : false,
471                         suite : 'fast-tests')
472         endif
473 endforeach
474
475 foreach arg : perf_test_names
476         test(arg, dpdk_test,
477         env : ['DPDK_TEST=' + arg],
478         args : default_test_args,
479         timeout : timeout_seconds,
480         is_parallel : false,
481         suite : 'perf-tests')
482 endforeach
483
484 foreach arg : driver_test_names
485         test(arg, dpdk_test,
486                 env : ['DPDK_TEST=' + arg],
487                 args : default_test_args,
488                 timeout : timeout_seconds,
489                 is_parallel : false,
490                 suite : 'driver-tests')
491 endforeach
492
493 foreach arg : dump_test_names
494         test(arg, dpdk_test,
495                 env : ['DPDK_TEST=' + arg],
496                 args : default_test_args,
497                 timeout : timeout_seconds,
498                 is_parallel : false,
499                 suite : 'debug-tests')
500 endforeach