test/trace: add functional test cases
[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_mpmc_stress.c',
104         'test_ring_hts_stress.c',
105         'test_ring_peek_stress.c',
106         'test_ring_perf.c',
107         'test_ring_rts_stress.c',
108         'test_ring_stress.c',
109         'test_rwlock.c',
110         'test_sched.c',
111         'test_security.c',
112         'test_service_cores.c',
113         'test_spinlock.c',
114         'test_stack.c',
115         'test_stack_perf.c',
116         'test_string_fns.c',
117         'test_table.c',
118         'test_table_acl.c',
119         'test_table_combined.c',
120         'test_table_pipeline.c',
121         'test_table_ports.c',
122         'test_table_tables.c',
123         'test_tailq.c',
124         'test_thash.c',
125         'test_timer.c',
126         'test_timer_perf.c',
127         'test_timer_racecond.c',
128         'test_timer_secondary.c',
129         'test_ticketlock.c',
130         'test_trace.c',
131         'test_trace_register.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         'security',
162         'stack',
163         'timer'
164 ]
165
166 # Each test is marked with flag true/false
167 # to indicate whether it can run in no-huge mode.
168 fast_tests = [
169         ['acl_autotest', true],
170         ['alarm_autotest', false],
171         ['atomic_autotest', false],
172         ['byteorder_autotest', true],
173         ['cmdline_autotest', true],
174         ['common_autotest', true],
175         ['cpuflags_autotest', true],
176         ['cycles_autotest', true],
177         ['debug_autotest', true],
178         ['eal_flags_c_opt_autotest', false],
179         ['eal_flags_master_opt_autotest', false],
180         ['eal_flags_n_opt_autotest', false],
181         ['eal_flags_hpet_autotest', false],
182         ['eal_flags_no_huge_autotest', false],
183         ['eal_flags_w_opt_autotest', false],
184         ['eal_flags_b_opt_autotest', false],
185         ['eal_flags_vdev_opt_autotest', false],
186         ['eal_flags_r_opt_autotest', false],
187         ['eal_flags_mem_autotest', false],
188         ['eal_flags_file_prefix_autotest', false],
189         ['eal_flags_misc_autotest', false],
190         ['eal_fs_autotest', true],
191         ['errno_autotest', true],
192         ['event_ring_autotest', true],
193         ['fib_autotest', true],
194         ['fib6_autotest', true],
195         ['func_reentrancy_autotest', false],
196         ['flow_classify_autotest', false],
197         ['hash_autotest', true],
198         ['interrupt_autotest', true],
199         ['logs_autotest', true],
200         ['lpm_autotest', true],
201         ['lpm6_autotest', true],
202         ['malloc_autotest', false],
203         ['mbuf_autotest', false],
204         ['mcslock_autotest', false],
205         ['memcpy_autotest', true],
206         ['memory_autotest', false],
207         ['mempool_autotest', false],
208         ['memzone_autotest', false],
209         ['meter_autotest', true],
210         ['multiprocess_autotest', false],
211         ['per_lcore_autotest', true],
212         ['prefetch_autotest', true],
213         ['rcu_qsbr_autotest', true],
214         ['red_autotest', true],
215         ['rib_autotest', true],
216         ['rib6_autotest', true],
217         ['ring_autotest', true],
218         ['rwlock_test1_autotest', true],
219         ['rwlock_rda_autotest', true],
220         ['rwlock_rds_wrm_autotest', true],
221         ['rwlock_rde_wro_autotest', true],
222         ['sched_autotest', true],
223                 ['security_autotest', false],
224         ['spinlock_autotest', true],
225         ['stack_autotest', false],
226         ['stack_lf_autotest', false],
227         ['string_autotest', true],
228         ['table_autotest', true],
229         ['tailq_autotest', true],
230         ['timer_autotest', false],
231         ['user_delay_us', true],
232         ['version_autotest', true],
233         ['crc_autotest', true],
234         ['delay_us_sleep_autotest', true],
235         ['distributor_autotest', false],
236         ['eventdev_common_autotest', true],
237         ['fbarray_autotest', true],
238         ['hash_readwrite_func_autotest', false],
239         ['ipsec_autotest', true],
240         ['kni_autotest', false],
241         ['kvargs_autotest', true],
242         ['member_autotest', true],
243         ['metrics_autotest', true],
244         ['power_cpufreq_autotest', false],
245         ['power_autotest', true],
246         ['power_kvm_vm_autotest', false],
247         ['reorder_autotest', true],
248         ['service_autotest', true],
249         ['thash_autotest', true],
250         ['trace_autotest', true],
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         'pmd_perf_autotest',
281         'stack_perf_autotest',
282         'stack_lf_perf_autotest',
283         'rand_perf_autotest',
284         'hash_readwrite_perf_autotest',
285         'hash_readwrite_lf_perf_autotest',
286 ]
287
288 driver_test_names = [
289         'cryptodev_aesni_mb_autotest',
290         'cryptodev_aesni_gcm_autotest',
291         'cryptodev_dpaa_sec_autotest',
292         'cryptodev_dpaa2_sec_autotest',
293         'cryptodev_null_autotest',
294         'cryptodev_octeontx2_autotest',
295         'cryptodev_openssl_autotest',
296         'cryptodev_openssl_asym_autotest',
297         'cryptodev_qat_autotest',
298         'cryptodev_sw_armv8_autotest',
299         'cryptodev_sw_kasumi_autotest',
300         'cryptodev_sw_mvsam_autotest',
301         'cryptodev_sw_snow3g_autotest',
302         'cryptodev_sw_zuc_autotest',
303         'eventdev_selftest_octeontx',
304         'eventdev_selftest_sw',
305         'link_bonding_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         test_sources += 'test_pmd_ring_perf.c'
343         test_sources += 'test_pmd_ring.c'
344         test_sources += 'test_event_eth_tx_adapter.c'
345         test_sources += 'test_bitratestats.c'
346         test_sources += 'test_latencystats.c'
347         test_sources += 'test_link_bonding_mode4.c'
348         test_sources += 'sample_packet_forward.c'
349         test_sources += 'test_pdump.c'
350         fast_tests += [['ring_pmd_autotest', true]]
351         perf_test_names += 'ring_pmd_perf_autotest'
352         fast_tests += [['event_eth_tx_adapter_autotest', false]]
353         fast_tests += [['bitratestats_autotest', true]]
354         fast_tests += [['latencystats_autotest', true]]
355         driver_test_names += 'link_bonding_mode4_autotest'
356         fast_tests += [['pdump_autotest', true]]
357 endif
358
359 if dpdk_conf.has('RTE_LIBRTE_POWER')
360         test_deps += 'power'
361 endif
362 if dpdk_conf.has('RTE_LIBRTE_KNI')
363         test_deps += 'kni'
364 endif
365 if dpdk_conf.has('RTE_LIBRTE_PDUMP')
366         test_deps += 'pdump'
367 endif
368
369 if cc.has_argument('-Wno-format-truncation')
370     cflags += '-Wno-format-truncation'
371 endif
372
373 # specify -D_GNU_SOURCE unconditionally
374 cflags += '-D_GNU_SOURCE'
375
376 test_dep_objs = []
377 if dpdk_conf.has('RTE_LIBRTE_COMPRESSDEV')
378         compress_test_dep = dependency('zlib', required: false)
379         if compress_test_dep.found()
380                 test_dep_objs += compress_test_dep
381                 test_sources += 'test_compressdev.c'
382                 test_deps += 'compressdev'
383                 fast_tests += [['compressdev_autotest', false]]
384         endif
385 endif
386
387 if dpdk_conf.has('RTE_LIBRTE_PMD_CRYPTO_SCHEDULER')
388         driver_test_names += 'cryptodev_scheduler_autotest'
389 endif
390
391 foreach d:test_deps
392         def_lib = get_option('default_library')
393         test_dep_objs += get_variable(def_lib + '_rte_' + d)
394 endforeach
395 test_dep_objs += cc.find_library('execinfo', required: false)
396
397 link_libs = []
398 if get_option('default_library') == 'static'
399         link_libs = dpdk_drivers
400 endif
401
402 dpdk_test = executable('dpdk-test',
403         test_sources,
404         link_whole: link_libs,
405         dependencies: test_dep_objs,
406         c_args: cflags,
407         install_rpath: driver_install_path,
408         install: true)
409
410 has_hugepage = run_command('has-hugepage.sh').stdout().strip() != '0'
411 message('hugepage availability: @0@'.format(has_hugepage))
412
413 # some perf tests (eg: memcpy perf autotest)take very long
414 # to complete, so timeout to 10 minutes
415 timeout_seconds = 600
416 timeout_seconds_fast = 10
417
418 get_coremask = find_program('get-coremask.sh')
419 num_cores_arg = '-l ' + run_command(get_coremask).stdout().strip()
420
421 default_test_args = [num_cores_arg]
422
423 foreach arg : fast_tests
424         test_args = default_test_args
425         run_test = true
426         if not has_hugepage
427                 if arg[1]
428                         test_args += ['--no-huge', '-m', '2048']
429                 else
430                         run_test = false
431                 endif
432         endif
433
434         if (get_option('default_library') == 'shared' and
435                 arg[0] == 'event_eth_tx_adapter_autotest')
436                 foreach drv:dpdk_drivers
437                         test_args += ['-d', drv.full_path().split('.a')[0] + '.so']
438                 endforeach
439         endif
440         if is_linux
441                 test_args += ['--file-prefix=@0@'.format(arg[0])]
442         endif
443
444         if run_test
445                 test(arg[0], dpdk_test,
446                         env : ['DPDK_TEST=' + arg[0]],
447                         args : test_args,
448                         timeout : timeout_seconds_fast,
449                         is_parallel : false,
450                         suite : 'fast-tests')
451         endif
452 endforeach
453
454 foreach arg : perf_test_names
455         test(arg, dpdk_test,
456         env : ['DPDK_TEST=' + arg],
457         args : default_test_args,
458         timeout : timeout_seconds,
459         is_parallel : false,
460         suite : 'perf-tests')
461 endforeach
462
463 foreach arg : driver_test_names
464         test(arg, dpdk_test,
465                 env : ['DPDK_TEST=' + arg],
466                 args : default_test_args,
467                 timeout : timeout_seconds,
468                 is_parallel : false,
469                 suite : 'driver-tests')
470 endforeach
471
472 foreach arg : dump_test_names
473         test(arg, dpdk_test,
474                 env : ['DPDK_TEST=' + arg],
475                 args : default_test_args,
476                 timeout : timeout_seconds,
477                 is_parallel : false,
478                 suite : 'debug-tests')
479 endforeach