test/ipfrag: add unit test case
[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_ipfrag.c',
62         'test_ipsec.c',
63         'test_ipsec_sad.c',
64         'test_kni.c',
65         'test_kvargs.c',
66         'test_link_bonding.c',
67         'test_link_bonding_rssconf.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         'bitratestats',
140         'bpf',
141         'cfgfile',
142         'cmdline',
143         'cryptodev',
144         'distributor',
145         'efd',
146         'ethdev',
147         'eventdev',
148         'fib',
149         'flow_classify',
150         'hash',
151         'ipsec',
152         'latencystats',
153         'lpm',
154         'member',
155         'metrics',
156         'pipeline',
157         'port',
158         'rawdev',
159         'rcu',
160         'reorder',
161         'rib',
162         'ring',
163         'security',
164         'stack',
165         'timer'
166 ]
167
168 # Each test is marked with flag true/false
169 # to indicate whether it can run in no-huge mode.
170 fast_tests = [
171         ['acl_autotest', true],
172         ['alarm_autotest', false],
173         ['atomic_autotest', false],
174         ['byteorder_autotest', true],
175         ['cmdline_autotest', true],
176         ['common_autotest', true],
177         ['cpuflags_autotest', true],
178         ['cycles_autotest', true],
179         ['debug_autotest', true],
180         ['eal_flags_c_opt_autotest', false],
181         ['eal_flags_master_opt_autotest', false],
182         ['eal_flags_n_opt_autotest', false],
183         ['eal_flags_hpet_autotest', false],
184         ['eal_flags_no_huge_autotest', false],
185         ['eal_flags_w_opt_autotest', false],
186         ['eal_flags_b_opt_autotest', false],
187         ['eal_flags_vdev_opt_autotest', false],
188         ['eal_flags_r_opt_autotest', false],
189         ['eal_flags_mem_autotest', false],
190         ['eal_flags_file_prefix_autotest', false],
191         ['eal_flags_misc_autotest', false],
192         ['eal_fs_autotest', true],
193         ['errno_autotest', true],
194         ['event_ring_autotest', true],
195         ['fib_autotest', true],
196         ['fib6_autotest', true],
197         ['func_reentrancy_autotest', false],
198         ['flow_classify_autotest', false],
199         ['hash_autotest', true],
200         ['interrupt_autotest', true],
201         ['ipfrag_autotest', false],
202         ['logs_autotest', true],
203         ['lpm_autotest', true],
204         ['lpm6_autotest', true],
205         ['malloc_autotest', false],
206         ['mbuf_autotest', false],
207         ['mcslock_autotest', false],
208         ['memcpy_autotest', true],
209         ['memory_autotest', false],
210         ['mempool_autotest', false],
211         ['memzone_autotest', false],
212         ['meter_autotest', true],
213         ['multiprocess_autotest', false],
214         ['per_lcore_autotest', true],
215         ['prefetch_autotest', true],
216         ['rcu_qsbr_autotest', true],
217         ['red_autotest', true],
218         ['rib_autotest', true],
219         ['rib6_autotest', true],
220         ['ring_autotest', true],
221         ['rwlock_test1_autotest', true],
222         ['rwlock_rda_autotest', true],
223         ['rwlock_rds_wrm_autotest', true],
224         ['rwlock_rde_wro_autotest', true],
225         ['sched_autotest', true],
226                 ['security_autotest', false],
227         ['spinlock_autotest', true],
228         ['stack_autotest', false],
229         ['stack_lf_autotest', false],
230         ['string_autotest', true],
231         ['table_autotest', true],
232         ['tailq_autotest', true],
233         ['timer_autotest', false],
234         ['user_delay_us', true],
235         ['version_autotest', true],
236         ['crc_autotest', true],
237         ['delay_us_sleep_autotest', true],
238         ['distributor_autotest', false],
239         ['eventdev_common_autotest', true],
240         ['fbarray_autotest', true],
241         ['hash_readwrite_func_autotest', false],
242         ['ipsec_autotest', true],
243         ['kni_autotest', false],
244         ['kvargs_autotest', true],
245         ['member_autotest', true],
246         ['metrics_autotest', true],
247         ['power_cpufreq_autotest', false],
248         ['power_autotest', true],
249         ['power_kvm_vm_autotest', false],
250         ['reorder_autotest', true],
251         ['service_autotest', true],
252         ['thash_autotest', true],
253         ['trace_autotest', true],
254 ]
255
256 perf_test_names = [
257         'ring_perf_autotest',
258         'mempool_perf_autotest',
259         'memcpy_perf_autotest',
260         'hash_perf_autotest',
261         'timer_perf_autotest',
262         'reciprocal_division',
263         'reciprocal_division_perf',
264         'lpm_perf_autotest',
265         'rib_slow_autotest',
266         'fib_slow_autotest',
267         'fib_perf_autotest',
268         'red_all',
269         'barrier_autotest',
270         'hash_multiwriter_autotest',
271         'timer_racecond_autotest',
272         'efd_autotest',
273         'hash_functions_autotest',
274         'member_perf_autotest',
275         'efd_perf_autotest',
276         'lpm6_perf_autotest',
277         'rib6_slow_autotest',
278         'fib6_slow_autotest',
279         'fib6_perf_autotest',
280         'rcu_qsbr_perf_autotest',
281         'red_perf',
282         'distributor_perf_autotest',
283         'pmd_perf_autotest',
284         'stack_perf_autotest',
285         'stack_lf_perf_autotest',
286         'rand_perf_autotest',
287         'hash_readwrite_perf_autotest',
288         'hash_readwrite_lf_perf_autotest',
289         'trace_perf_autotest',
290 ]
291
292 driver_test_names = [
293         'cryptodev_aesni_mb_autotest',
294         'cryptodev_aesni_gcm_autotest',
295         'cryptodev_dpaa_sec_autotest',
296         'cryptodev_dpaa2_sec_autotest',
297         'cryptodev_null_autotest',
298         'cryptodev_octeontx2_autotest',
299         'cryptodev_openssl_autotest',
300         'cryptodev_openssl_asym_autotest',
301         'cryptodev_qat_autotest',
302         'cryptodev_sw_armv8_autotest',
303         'cryptodev_sw_kasumi_autotest',
304         'cryptodev_sw_mvsam_autotest',
305         'cryptodev_sw_snow3g_autotest',
306         'cryptodev_sw_zuc_autotest',
307         'eventdev_selftest_octeontx',
308         'eventdev_selftest_sw',
309         'link_bonding_autotest',
310         'link_bonding_rssconf_autotest',
311         'rawdev_autotest',
312 ]
313
314 dump_test_names = [
315         'dump_struct_sizes',
316         'dump_mempool',
317         'dump_malloc_stats',
318         'dump_devargs',
319         'dump_log_types',
320         'dump_ring',
321         'dump_physmem',
322         'dump_memzone',
323 ]
324
325 # The following linkages are an exception to allow running the
326 # unit tests without requiring that the developer install the
327 # DPDK libraries.  Explicit linkage of drivers (plugin libraries)
328 # in applications should not be used.
329 if dpdk_conf.has('RTE_LIBRTE_RING_MEMPOOL')
330         test_deps += 'mempool_ring'
331 endif
332 if dpdk_conf.has('RTE_LIBRTE_STACK_MEMPOOL')
333         test_deps += 'mempool_stack'
334 endif
335 if dpdk_conf.has('RTE_LIBRTE_SKELETON_EVENTDEV_PMD')
336         test_deps += 'pmd_skeleton_event'
337 endif
338
339 # The following linkages of drivers are required because
340 # they are used via a driver-specific API.
341 if dpdk_conf.has('RTE_LIBRTE_BOND_PMD')
342         test_deps += 'pmd_bond'
343 endif
344 if dpdk_conf.has('RTE_LIBRTE_RING_PMD')
345         test_deps += 'pmd_ring'
346         test_sources += 'test_pmd_ring_perf.c'
347         test_sources += 'test_pmd_ring.c'
348         test_sources += 'test_event_eth_tx_adapter.c'
349         test_sources += 'test_bitratestats.c'
350         test_sources += 'test_latencystats.c'
351         test_sources += 'test_link_bonding_mode4.c'
352         test_sources += 'sample_packet_forward.c'
353         test_sources += 'test_pdump.c'
354         fast_tests += [['ring_pmd_autotest', true]]
355         perf_test_names += 'ring_pmd_perf_autotest'
356         fast_tests += [['event_eth_tx_adapter_autotest', false]]
357         fast_tests += [['bitratestats_autotest', true]]
358         fast_tests += [['latencystats_autotest', true]]
359         driver_test_names += 'link_bonding_mode4_autotest'
360         fast_tests += [['pdump_autotest', true]]
361 endif
362
363 if dpdk_conf.has('RTE_LIBRTE_POWER')
364         test_deps += 'power'
365 endif
366 if dpdk_conf.has('RTE_LIBRTE_KNI')
367         test_deps += 'kni'
368 endif
369 if dpdk_conf.has('RTE_LIBRTE_PDUMP')
370         test_deps += 'pdump'
371 endif
372
373 if cc.has_argument('-Wno-format-truncation')
374     cflags += '-Wno-format-truncation'
375 endif
376
377 # specify -D_GNU_SOURCE unconditionally
378 cflags += '-D_GNU_SOURCE'
379
380 test_dep_objs = []
381 if dpdk_conf.has('RTE_LIBRTE_COMPRESSDEV')
382         compress_test_dep = dependency('zlib', required: false)
383         if compress_test_dep.found()
384                 test_dep_objs += compress_test_dep
385                 test_sources += 'test_compressdev.c'
386                 test_deps += 'compressdev'
387                 fast_tests += [['compressdev_autotest', false]]
388         endif
389 endif
390
391 if dpdk_conf.has('RTE_LIBRTE_PMD_CRYPTO_SCHEDULER')
392         driver_test_names += 'cryptodev_scheduler_autotest'
393 endif
394
395 foreach d:test_deps
396         def_lib = get_option('default_library')
397         test_dep_objs += get_variable(def_lib + '_rte_' + d)
398 endforeach
399 test_dep_objs += cc.find_library('execinfo', required: false)
400
401 link_libs = []
402 if get_option('default_library') == 'static'
403         link_libs = dpdk_drivers
404 endif
405
406 dpdk_test = executable('dpdk-test',
407         test_sources,
408         link_whole: link_libs,
409         dependencies: test_dep_objs,
410         c_args: cflags,
411         install_rpath: driver_install_path,
412         install: true)
413
414 has_hugepage = run_command('has-hugepage.sh').stdout().strip() != '0'
415 message('hugepage availability: @0@'.format(has_hugepage))
416
417 # some perf tests (eg: memcpy perf autotest)take very long
418 # to complete, so timeout to 10 minutes
419 timeout_seconds = 600
420 timeout_seconds_fast = 10
421
422 get_coremask = find_program('get-coremask.sh')
423 num_cores_arg = '-l ' + run_command(get_coremask).stdout().strip()
424
425 default_test_args = [num_cores_arg]
426
427 foreach arg : fast_tests
428         test_args = default_test_args
429         run_test = true
430         if not has_hugepage
431                 if arg[1]
432                         test_args += ['--no-huge', '-m', '2048']
433                 else
434                         run_test = false
435                 endif
436         endif
437
438         if (get_option('default_library') == 'shared' and
439                 arg[0] == 'event_eth_tx_adapter_autotest')
440                 foreach drv:dpdk_drivers
441                         test_args += ['-d', drv.full_path().split('.a')[0] + '.so']
442                 endforeach
443         endif
444         if is_linux
445                 test_args += ['--file-prefix=@0@'.format(arg[0])]
446         endif
447
448         if run_test
449                 test(arg[0], dpdk_test,
450                         env : ['DPDK_TEST=' + arg[0]],
451                         args : test_args,
452                         timeout : timeout_seconds_fast,
453                         is_parallel : false,
454                         suite : 'fast-tests')
455         endif
456 endforeach
457
458 foreach arg : perf_test_names
459         test(arg, dpdk_test,
460         env : ['DPDK_TEST=' + arg],
461         args : default_test_args,
462         timeout : timeout_seconds,
463         is_parallel : false,
464         suite : 'perf-tests')
465 endforeach
466
467 foreach arg : driver_test_names
468         test(arg, dpdk_test,
469                 env : ['DPDK_TEST=' + arg],
470                 args : default_test_args,
471                 timeout : timeout_seconds,
472                 is_parallel : false,
473                 suite : 'driver-tests')
474 endforeach
475
476 foreach arg : dump_test_names
477         test(arg, dpdk_test,
478                 env : ['DPDK_TEST=' + arg],
479                 args : default_test_args,
480                 timeout : timeout_seconds,
481                 is_parallel : false,
482                 suite : 'debug-tests')
483 endforeach