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