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