node: add logging and null node
[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_link_bonding.c',
69         'test_link_bonding_rssconf.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_peek_stress.c',
109         'test_ring_perf.c',
110         'test_ring_rts_stress.c',
111         'test_ring_stress.c',
112         'test_rwlock.c',
113         'test_sched.c',
114         'test_security.c',
115         'test_service_cores.c',
116         'test_spinlock.c',
117         'test_stack.c',
118         'test_stack_perf.c',
119         'test_string_fns.c',
120         'test_table.c',
121         'test_table_acl.c',
122         'test_table_combined.c',
123         'test_table_pipeline.c',
124         'test_table_ports.c',
125         'test_table_tables.c',
126         'test_tailq.c',
127         'test_thash.c',
128         'test_timer.c',
129         'test_timer_perf.c',
130         'test_timer_racecond.c',
131         'test_timer_secondary.c',
132         'test_ticketlock.c',
133         'test_trace.c',
134         'test_trace_register.c',
135         'test_trace_perf.c',
136         'test_version.c',
137         'virtual_pmd.c'
138 )
139
140 test_deps = ['acl',
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         'link_bonding_autotest',
314         'link_bonding_rssconf_autotest',
315         'rawdev_autotest',
316 ]
317
318 dump_test_names = [
319         'dump_struct_sizes',
320         'dump_mempool',
321         'dump_malloc_stats',
322         'dump_devargs',
323         'dump_log_types',
324         'dump_ring',
325         'dump_physmem',
326         'dump_memzone',
327 ]
328
329 # The following linkages are an exception to allow running the
330 # unit tests without requiring that the developer install the
331 # DPDK libraries.  Explicit linkage of drivers (plugin libraries)
332 # in applications should not be used.
333 if dpdk_conf.has('RTE_LIBRTE_RING_MEMPOOL')
334         test_deps += 'mempool_ring'
335 endif
336 if dpdk_conf.has('RTE_LIBRTE_STACK_MEMPOOL')
337         test_deps += 'mempool_stack'
338 endif
339 if dpdk_conf.has('RTE_LIBRTE_SKELETON_EVENTDEV_PMD')
340         test_deps += 'pmd_skeleton_event'
341 endif
342
343 # The following linkages of drivers are required because
344 # they are used via a driver-specific API.
345 if dpdk_conf.has('RTE_LIBRTE_BOND_PMD')
346         test_deps += 'pmd_bond'
347 endif
348 if dpdk_conf.has('RTE_LIBRTE_RING_PMD')
349         test_deps += 'pmd_ring'
350         test_sources += 'test_pmd_ring_perf.c'
351         test_sources += 'test_pmd_ring.c'
352         test_sources += 'test_event_eth_tx_adapter.c'
353         test_sources += 'test_bitratestats.c'
354         test_sources += 'test_latencystats.c'
355         test_sources += 'test_link_bonding_mode4.c'
356         test_sources += 'sample_packet_forward.c'
357         test_sources += 'test_pdump.c'
358         fast_tests += [['ring_pmd_autotest', true]]
359         perf_test_names += 'ring_pmd_perf_autotest'
360         fast_tests += [['event_eth_tx_adapter_autotest', false]]
361         fast_tests += [['bitratestats_autotest', true]]
362         fast_tests += [['latencystats_autotest', true]]
363         driver_test_names += 'link_bonding_mode4_autotest'
364         fast_tests += [['pdump_autotest', true]]
365 endif
366
367 if dpdk_conf.has('RTE_LIBRTE_POWER')
368         test_deps += 'power'
369 endif
370 if dpdk_conf.has('RTE_LIBRTE_KNI')
371         test_deps += 'kni'
372 endif
373 if dpdk_conf.has('RTE_LIBRTE_PDUMP')
374         test_deps += 'pdump'
375 endif
376
377 if cc.has_argument('-Wno-format-truncation')
378     cflags += '-Wno-format-truncation'
379 endif
380
381 # specify -D_GNU_SOURCE unconditionally
382 cflags += '-D_GNU_SOURCE'
383 # Strict-aliasing rules are violated by uint8_t[] to context size casts.
384 cflags += '-fno-strict-aliasing'
385
386 test_dep_objs = []
387 if dpdk_conf.has('RTE_LIBRTE_COMPRESSDEV')
388         compress_test_dep = dependency('zlib', required: false)
389         if compress_test_dep.found()
390                 test_dep_objs += compress_test_dep
391                 test_sources += 'test_compressdev.c'
392                 test_deps += 'compressdev'
393                 fast_tests += [['compressdev_autotest', false]]
394         endif
395 endif
396
397 if dpdk_conf.has('RTE_LIBRTE_PMD_CRYPTO_SCHEDULER')
398         driver_test_names += 'cryptodev_scheduler_autotest'
399 endif
400
401 foreach d:test_deps
402         def_lib = get_option('default_library')
403         test_dep_objs += get_variable(def_lib + '_rte_' + d)
404 endforeach
405 test_dep_objs += cc.find_library('execinfo', required: false)
406
407 link_libs = []
408 link_nodes = []
409 if get_option('default_library') == 'static'
410         link_libs = dpdk_drivers
411         link_nodes = dpdk_graph_nodes
412 endif
413
414 dpdk_test = executable('dpdk-test',
415         test_sources,
416         link_whole: link_libs + link_nodes,
417         dependencies: test_dep_objs,
418         c_args: cflags,
419         install_rpath: driver_install_path,
420         install: true)
421
422 has_hugepage = run_command('has-hugepage.sh').stdout().strip() != '0'
423 message('hugepage availability: @0@'.format(has_hugepage))
424
425 # some perf tests (eg: memcpy perf autotest)take very long
426 # to complete, so timeout to 10 minutes
427 timeout_seconds = 600
428 timeout_seconds_fast = 10
429
430 get_coremask = find_program('get-coremask.sh')
431 num_cores_arg = '-l ' + run_command(get_coremask).stdout().strip()
432
433 default_test_args = [num_cores_arg]
434
435 foreach arg : fast_tests
436         test_args = default_test_args
437         run_test = true
438         if not has_hugepage
439                 if arg[1]
440                         test_args += ['--no-huge', '-m', '2048']
441                 else
442                         run_test = false
443                 endif
444         endif
445
446         if (get_option('default_library') == 'shared' and
447                 arg[0] == 'event_eth_tx_adapter_autotest')
448                 foreach drv:dpdk_drivers
449                         test_args += ['-d', drv.full_path().split('.a')[0] + '.so']
450                 endforeach
451         endif
452         if is_linux
453                 test_args += ['--file-prefix=@0@'.format(arg[0])]
454         endif
455
456         if run_test
457                 test(arg[0], dpdk_test,
458                         env : ['DPDK_TEST=' + arg[0]],
459                         args : test_args,
460                         timeout : timeout_seconds_fast,
461                         is_parallel : false,
462                         suite : 'fast-tests')
463         endif
464 endforeach
465
466 foreach arg : perf_test_names
467         test(arg, dpdk_test,
468         env : ['DPDK_TEST=' + arg],
469         args : default_test_args,
470         timeout : timeout_seconds,
471         is_parallel : false,
472         suite : 'perf-tests')
473 endforeach
474
475 foreach arg : driver_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 : 'driver-tests')
482 endforeach
483
484 foreach arg : dump_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 : 'debug-tests')
491 endforeach