ecb904cc45
Meson 0.61.1 is giving warnings that the calls to run_command do not always explicitly specify if the result is to be checked or not, i.e. there is a missing "check" parameter. This is because the default behaviour without the parameter is due to change in the future. We can fix these warnings by explicitly adding into each call whether the result should be checked by meson or not. This patch therefore adds in "check: false" to each run_command call where the result is being checked by the DPDK meson.build code afterwards, and adds in "check: true" to any calls where the result is currently unchecked. Bugzilla ID: 921 Cc: stable@dpdk.org Reported-by: Jerin Jacob <jerinj@marvell.com> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Tested-by: Jerin Jacob <jerinj@marvell.com>
530 lines
16 KiB
Meson
530 lines
16 KiB
Meson
# SPDX-License-Identifier: BSD-3-Clause
|
|
# Copyright(c) 2017 Intel Corporation
|
|
|
|
if is_windows
|
|
build = false
|
|
reason = 'not supported on Windows'
|
|
subdir_done()
|
|
endif
|
|
|
|
if not get_option('tests')
|
|
subdir_done()
|
|
endif
|
|
|
|
test_sources = files(
|
|
'commands.c',
|
|
'packet_burst_generator.c',
|
|
'test.c',
|
|
'test_acl.c',
|
|
'test_alarm.c',
|
|
'test_atomic.c',
|
|
'test_barrier.c',
|
|
'test_bitops.c',
|
|
'test_bitmap.c',
|
|
'test_bpf.c',
|
|
'test_byteorder.c',
|
|
'test_cksum.c',
|
|
'test_cmdline.c',
|
|
'test_cmdline_cirbuf.c',
|
|
'test_cmdline_etheraddr.c',
|
|
'test_cmdline_ipaddr.c',
|
|
'test_cmdline_lib.c',
|
|
'test_cmdline_num.c',
|
|
'test_cmdline_portlist.c',
|
|
'test_cmdline_string.c',
|
|
'test_common.c',
|
|
'test_cpuflags.c',
|
|
'test_crc.c',
|
|
'test_cryptodev.c',
|
|
'test_cryptodev_asym.c',
|
|
'test_cryptodev_blockcipher.c',
|
|
'test_cryptodev_security_ipsec.c',
|
|
'test_cryptodev_security_pdcp.c',
|
|
'test_cycles.c',
|
|
'test_debug.c',
|
|
'test_devargs.c',
|
|
'test_distributor.c',
|
|
'test_distributor_perf.c',
|
|
'test_dmadev.c',
|
|
'test_dmadev_api.c',
|
|
'test_eal_flags.c',
|
|
'test_eal_fs.c',
|
|
'test_efd.c',
|
|
'test_efd_perf.c',
|
|
'test_errno.c',
|
|
'test_ethdev_link.c',
|
|
'test_event_crypto_adapter.c',
|
|
'test_event_eth_rx_adapter.c',
|
|
'test_event_ring.c',
|
|
'test_event_timer_adapter.c',
|
|
'test_eventdev.c',
|
|
'test_external_mem.c',
|
|
'test_fbarray.c',
|
|
'test_fib.c',
|
|
'test_fib_perf.c',
|
|
'test_fib6.c',
|
|
'test_fib6_perf.c',
|
|
'test_func_reentrancy.c',
|
|
'test_graph.c',
|
|
'test_graph_perf.c',
|
|
'test_hash.c',
|
|
'test_hash_functions.c',
|
|
'test_hash_multiwriter.c',
|
|
'test_hash_readwrite.c',
|
|
'test_hash_perf.c',
|
|
'test_hash_readwrite_lf_perf.c',
|
|
'test_interrupts.c',
|
|
'test_ipfrag.c',
|
|
'test_ipsec.c',
|
|
'test_ipsec_sad.c',
|
|
'test_ipsec_perf.c',
|
|
'test_kni.c',
|
|
'test_kvargs.c',
|
|
'test_lcores.c',
|
|
'test_logs.c',
|
|
'test_lpm.c',
|
|
'test_lpm6.c',
|
|
'test_lpm6_perf.c',
|
|
'test_lpm_perf.c',
|
|
'test_malloc.c',
|
|
'test_mbuf.c',
|
|
'test_member.c',
|
|
'test_member_perf.c',
|
|
'test_memcpy.c',
|
|
'test_memcpy_perf.c',
|
|
'test_memory.c',
|
|
'test_mempool.c',
|
|
'test_mempool_perf.c',
|
|
'test_memzone.c',
|
|
'test_meter.c',
|
|
'test_mcslock.c',
|
|
'test_mp_secondary.c',
|
|
'test_per_lcore.c',
|
|
'test_pflock.c',
|
|
'test_pmd_perf.c',
|
|
'test_power.c',
|
|
'test_power_cpufreq.c',
|
|
'test_power_kvm_vm.c',
|
|
'test_prefetch.c',
|
|
'test_rand_perf.c',
|
|
'test_rawdev.c',
|
|
'test_rcu_qsbr.c',
|
|
'test_rcu_qsbr_perf.c',
|
|
'test_reciprocal_division.c',
|
|
'test_reciprocal_division_perf.c',
|
|
'test_red.c',
|
|
'test_pie.c',
|
|
'test_reorder.c',
|
|
'test_rib.c',
|
|
'test_rib6.c',
|
|
'test_ring.c',
|
|
'test_ring_mpmc_stress.c',
|
|
'test_ring_hts_stress.c',
|
|
'test_ring_mt_peek_stress.c',
|
|
'test_ring_mt_peek_stress_zc.c',
|
|
'test_ring_perf.c',
|
|
'test_ring_rts_stress.c',
|
|
'test_ring_st_peek_stress.c',
|
|
'test_ring_st_peek_stress_zc.c',
|
|
'test_ring_stress.c',
|
|
'test_rwlock.c',
|
|
'test_sched.c',
|
|
'test_security.c',
|
|
'test_service_cores.c',
|
|
'test_spinlock.c',
|
|
'test_stack.c',
|
|
'test_stack_perf.c',
|
|
'test_string_fns.c',
|
|
'test_tailq.c',
|
|
'test_thash.c',
|
|
'test_thash_perf.c',
|
|
'test_timer.c',
|
|
'test_timer_perf.c',
|
|
'test_timer_racecond.c',
|
|
'test_timer_secondary.c',
|
|
'test_ticketlock.c',
|
|
'test_trace.c',
|
|
'test_trace_register.c',
|
|
'test_trace_perf.c',
|
|
'test_version.c',
|
|
'virtual_pmd.c',
|
|
)
|
|
|
|
test_deps = enabled_libs
|
|
# as well as libs, the pci and vdev bus drivers are needed for a lot of tests
|
|
test_deps += ['bus_pci', 'bus_vdev']
|
|
|
|
# Each test is marked with flag true/false
|
|
# to indicate whether it can run in no-huge mode.
|
|
fast_tests = [
|
|
['acl_autotest', true],
|
|
['atomic_autotest', false],
|
|
['bitmap_autotest', true],
|
|
['bpf_autotest', true],
|
|
['bpf_convert_autotest', true],
|
|
['bitops_autotest', true],
|
|
['byteorder_autotest', true],
|
|
['cksum_autotest', true],
|
|
['cmdline_autotest', true],
|
|
['common_autotest', true],
|
|
['cpuflags_autotest', true],
|
|
['debug_autotest', true],
|
|
['devargs_autotest', true],
|
|
['eal_flags_c_opt_autotest', false],
|
|
['eal_flags_main_opt_autotest', false],
|
|
['eal_flags_n_opt_autotest', false],
|
|
['eal_flags_hpet_autotest', false],
|
|
['eal_flags_no_huge_autotest', false],
|
|
['eal_flags_a_opt_autotest', false],
|
|
['eal_flags_b_opt_autotest', false],
|
|
['eal_flags_vdev_opt_autotest', false],
|
|
['eal_flags_r_opt_autotest', false],
|
|
['eal_flags_mem_autotest', false],
|
|
['eal_flags_file_prefix_autotest', false],
|
|
['eal_flags_misc_autotest', false],
|
|
['eal_fs_autotest', true],
|
|
['errno_autotest', true],
|
|
['ethdev_link_status', true],
|
|
['event_ring_autotest', true],
|
|
['fib_autotest', true],
|
|
['fib6_autotest', true],
|
|
['func_reentrancy_autotest', false],
|
|
['hash_autotest', true],
|
|
['interrupt_autotest', true],
|
|
['ipfrag_autotest', false],
|
|
['lcores_autotest', true],
|
|
['logs_autotest', true],
|
|
['lpm_autotest', true],
|
|
['lpm6_autotest', true],
|
|
['malloc_autotest', false],
|
|
['mbuf_autotest', false],
|
|
['mcslock_autotest', false],
|
|
['memcpy_autotest', true],
|
|
['memory_autotest', false],
|
|
['mempool_autotest', false],
|
|
['memzone_autotest', false],
|
|
['meter_autotest', true],
|
|
['multiprocess_autotest', false],
|
|
['per_lcore_autotest', true],
|
|
['pflock_autotest', true],
|
|
['prefetch_autotest', true],
|
|
['rcu_qsbr_autotest', true],
|
|
['pie_autotest', true],
|
|
['rib_autotest', true],
|
|
['rib6_autotest', true],
|
|
['ring_autotest', true],
|
|
['rwlock_test1_autotest', true],
|
|
['rwlock_rda_autotest', true],
|
|
['rwlock_rds_wrm_autotest', true],
|
|
['rwlock_rde_wro_autotest', true],
|
|
['sched_autotest', true],
|
|
['security_autotest', false],
|
|
['spinlock_autotest', true],
|
|
['stack_autotest', false],
|
|
['stack_lf_autotest', false],
|
|
['string_autotest', true],
|
|
['tailq_autotest', true],
|
|
['ticketlock_autotest', true],
|
|
['timer_autotest', false],
|
|
['user_delay_us', true],
|
|
['version_autotest', true],
|
|
['crc_autotest', true],
|
|
['distributor_autotest', false],
|
|
['eventdev_common_autotest', true],
|
|
['fbarray_autotest', true],
|
|
['hash_readwrite_func_autotest', false],
|
|
['ipsec_autotest', true],
|
|
['kni_autotest', false],
|
|
['kvargs_autotest', true],
|
|
['member_autotest', true],
|
|
['power_cpufreq_autotest', false],
|
|
['power_autotest', true],
|
|
['power_kvm_vm_autotest', false],
|
|
['reorder_autotest', true],
|
|
['service_autotest', true],
|
|
['thash_autotest', true],
|
|
['trace_autotest', true],
|
|
]
|
|
|
|
# Tests known to have issues or which don't belong in other tests lists.
|
|
extra_test_names = [
|
|
'alarm_autotest', # ee00af60170b ("test: remove strict timing requirements some tests")
|
|
'cycles_autotest', # ee00af60170b ("test: remove strict timing requirements some tests")
|
|
'delay_us_sleep_autotest', # ee00af60170b ("test: remove strict timing requirements some tests")
|
|
'red_autotest', # https://bugs.dpdk.org/show_bug.cgi?id=826
|
|
]
|
|
|
|
perf_test_names = [
|
|
'ring_perf_autotest',
|
|
'mempool_perf_autotest',
|
|
'memcpy_perf_autotest',
|
|
'hash_perf_autotest',
|
|
'timer_perf_autotest',
|
|
'reciprocal_division',
|
|
'reciprocal_division_perf',
|
|
'lpm_perf_autotest',
|
|
'rib_slow_autotest',
|
|
'fib_slow_autotest',
|
|
'fib_perf_autotest',
|
|
'red_all',
|
|
'pie_all',
|
|
'barrier_autotest',
|
|
'hash_multiwriter_autotest',
|
|
'timer_racecond_autotest',
|
|
'efd_autotest',
|
|
'hash_functions_autotest',
|
|
'member_perf_autotest',
|
|
'efd_perf_autotest',
|
|
'lpm6_perf_autotest',
|
|
'rib6_slow_autotest',
|
|
'fib6_slow_autotest',
|
|
'fib6_perf_autotest',
|
|
'rcu_qsbr_perf_autotest',
|
|
'red_perf',
|
|
'pie_perf',
|
|
'distributor_perf_autotest',
|
|
'pmd_perf_autotest',
|
|
'stack_perf_autotest',
|
|
'stack_lf_perf_autotest',
|
|
'rand_perf_autotest',
|
|
'hash_readwrite_perf_autotest',
|
|
'hash_readwrite_lf_perf_autotest',
|
|
'trace_perf_autotest',
|
|
'ipsec_perf_autotest',
|
|
'thash_perf_autotest',
|
|
]
|
|
|
|
driver_test_names = [
|
|
'cryptodev_aesni_mb_autotest',
|
|
'cryptodev_aesni_gcm_autotest',
|
|
'cryptodev_cn9k_autotest',
|
|
'cryptodev_cn10k_autotest',
|
|
'cryptodev_dpaa_sec_autotest',
|
|
'cryptodev_dpaa2_sec_autotest',
|
|
'cryptodev_null_autotest',
|
|
'cryptodev_openssl_autotest',
|
|
'cryptodev_openssl_asym_autotest',
|
|
'cryptodev_qat_autotest',
|
|
'cryptodev_sw_armv8_autotest',
|
|
'cryptodev_sw_kasumi_autotest',
|
|
'cryptodev_sw_mvsam_autotest',
|
|
'cryptodev_sw_snow3g_autotest',
|
|
'cryptodev_sw_zuc_autotest',
|
|
'dmadev_autotest',
|
|
'eventdev_selftest_octeontx',
|
|
'eventdev_selftest_sw',
|
|
'rawdev_autotest',
|
|
]
|
|
|
|
dump_test_names = [
|
|
'dump_struct_sizes',
|
|
'dump_mempool',
|
|
'dump_malloc_stats',
|
|
'dump_devargs',
|
|
'dump_log_types',
|
|
'dump_ring',
|
|
'dump_physmem',
|
|
'dump_memzone',
|
|
]
|
|
|
|
# The following linkages are an exception to allow running the
|
|
# unit tests without requiring that the developer install the
|
|
# DPDK libraries. Explicit linkage of drivers (plugin libraries)
|
|
# in applications should not be used.
|
|
if dpdk_conf.has('RTE_MEMPOOL_RING')
|
|
test_deps += 'mempool_ring'
|
|
endif
|
|
if dpdk_conf.has('RTE_MEMPOOL_STACK')
|
|
test_deps += 'mempool_stack'
|
|
endif
|
|
if dpdk_conf.has('RTE_EVENT_SKELETON')
|
|
test_deps += 'event_skeleton'
|
|
endif
|
|
|
|
if dpdk_conf.has('RTE_LIB_FLOW_CLASSIFY')
|
|
test_sources += 'test_flow_classify.c'
|
|
fast_tests += [['flow_classify_autotest', false]]
|
|
endif
|
|
if dpdk_conf.has('RTE_LIB_METRICS')
|
|
test_sources += ['test_metrics.c']
|
|
fast_tests += [['metrics_autotest', true]]
|
|
endif
|
|
if dpdk_conf.has('RTE_LIB_TELEMETRY')
|
|
test_sources += ['test_telemetry_json.c', 'test_telemetry_data.c']
|
|
fast_tests += [['telemetry_json_autotest', true], ['telemetry_data_autotest', true]]
|
|
endif
|
|
if dpdk_conf.has('RTE_LIB_PIPELINE')
|
|
# pipeline lib depends on port and table libs, so those must be present
|
|
# if pipeline library is.
|
|
test_sources += [
|
|
'test_table.c',
|
|
'test_table_acl.c',
|
|
'test_table_combined.c',
|
|
'test_table_pipeline.c',
|
|
'test_table_ports.c',
|
|
'test_table_tables.c',
|
|
]
|
|
fast_tests += [['table_autotest', true]]
|
|
endif
|
|
|
|
# The following linkages of drivers are required because
|
|
# they are used via a driver-specific API.
|
|
if dpdk_conf.has('RTE_NET_BOND')
|
|
test_deps += 'net_bond'
|
|
test_sources += ['test_link_bonding.c', 'test_link_bonding_rssconf.c']
|
|
driver_test_names += ['link_bonding_autotest', 'link_bonding_rssconf_autotest']
|
|
if dpdk_conf.has('RTE_NET_RING')
|
|
test_sources += 'test_link_bonding_mode4.c'
|
|
driver_test_names += 'link_bonding_mode4_autotest'
|
|
endif
|
|
endif
|
|
if dpdk_conf.has('RTE_NET_RING')
|
|
test_deps += 'net_ring'
|
|
test_sources += 'test_pmd_ring_perf.c'
|
|
test_sources += 'test_pmd_ring.c'
|
|
test_sources += 'test_event_eth_tx_adapter.c'
|
|
test_sources += 'sample_packet_forward.c'
|
|
fast_tests += [['ring_pmd_autotest', true]]
|
|
perf_test_names += 'ring_pmd_perf_autotest'
|
|
fast_tests += [['event_eth_tx_adapter_autotest', false]]
|
|
if dpdk_conf.has('RTE_LIB_BITRATESTATS')
|
|
test_sources += 'test_bitratestats.c'
|
|
fast_tests += [['bitratestats_autotest', true]]
|
|
endif
|
|
if dpdk_conf.has('RTE_LIB_LATENCYSTATS')
|
|
test_sources += 'test_latencystats.c'
|
|
fast_tests += [['latencystats_autotest', true]]
|
|
endif
|
|
if dpdk_conf.has('RTE_LIB_PDUMP')
|
|
test_sources += 'test_pdump.c'
|
|
fast_tests += [['pdump_autotest', true]]
|
|
endif
|
|
endif
|
|
if dpdk_conf.has('RTE_NET_NULL')
|
|
test_deps += 'net_null'
|
|
test_sources += 'test_vdev.c'
|
|
fast_tests += [['vdev_autotest', true]]
|
|
endif
|
|
|
|
if dpdk_conf.has('RTE_HAS_LIBPCAP')
|
|
ext_deps += pcap_dep
|
|
if dpdk_conf.has('RTE_LIB_PCAPNG')
|
|
test_sources += 'test_pcapng.c'
|
|
endif
|
|
endif
|
|
|
|
if cc.has_argument('-Wno-format-truncation')
|
|
cflags += '-Wno-format-truncation'
|
|
endif
|
|
|
|
# Strict-aliasing rules are violated by uint8_t[] to context size casts.
|
|
cflags += '-fno-strict-aliasing'
|
|
|
|
# Enable using internal APIs in unit tests
|
|
cflags += ['-DALLOW_INTERNAL_API']
|
|
|
|
test_dep_objs = []
|
|
if dpdk_conf.has('RTE_LIB_COMPRESSDEV')
|
|
compress_test_dep = dependency('zlib', required: false, method: 'pkg-config')
|
|
if compress_test_dep.found()
|
|
test_dep_objs += compress_test_dep
|
|
test_sources += 'test_compressdev.c'
|
|
fast_tests += [['compressdev_autotest', false]]
|
|
endif
|
|
endif
|
|
|
|
if dpdk_conf.has('RTE_CRYPTO_SCHEDULER')
|
|
driver_test_names += 'cryptodev_scheduler_autotest'
|
|
test_deps += 'crypto_scheduler'
|
|
endif
|
|
|
|
foreach d:test_deps
|
|
def_lib = get_option('default_library')
|
|
test_dep_objs += get_variable(def_lib + '_rte_' + d)
|
|
endforeach
|
|
|
|
link_libs = []
|
|
if get_option('default_library') == 'static'
|
|
link_libs = dpdk_static_libraries + dpdk_drivers
|
|
endif
|
|
|
|
dpdk_test = executable('dpdk-test',
|
|
test_sources,
|
|
link_whole: link_libs,
|
|
dependencies: test_dep_objs + ext_deps,
|
|
c_args: cflags,
|
|
install_rpath: join_paths(get_option('prefix'),
|
|
driver_install_path),
|
|
install: true)
|
|
|
|
has_hugepage = run_command('has-hugepage.sh', check: true).stdout().strip() != '0'
|
|
message('hugepage availability: @0@'.format(has_hugepage))
|
|
|
|
# some perf tests (eg: memcpy perf autotest)take very long
|
|
# to complete, so timeout to 10 minutes
|
|
timeout_seconds = 600
|
|
timeout_seconds_fast = 10
|
|
|
|
foreach arg : fast_tests
|
|
test_args = []
|
|
run_test = true
|
|
if not has_hugepage
|
|
if arg[1]
|
|
test_args += ['--no-huge', '-m', '2048']
|
|
else
|
|
run_test = false
|
|
endif
|
|
endif
|
|
|
|
if (get_option('default_library') == 'shared' and
|
|
arg[0] == 'event_eth_tx_adapter_autotest')
|
|
foreach drv:dpdk_drivers
|
|
test_args += ['-d', drv.full_path().split('.a')[0] + '.so']
|
|
endforeach
|
|
endif
|
|
if is_linux
|
|
test_args += ['--file-prefix=@0@'.format(arg[0])]
|
|
endif
|
|
|
|
if run_test
|
|
test(arg[0], dpdk_test,
|
|
env : ['DPDK_TEST=' + arg[0]],
|
|
args : test_args,
|
|
timeout : timeout_seconds_fast,
|
|
is_parallel : false,
|
|
suite : 'fast-tests')
|
|
endif
|
|
endforeach
|
|
|
|
foreach arg : perf_test_names
|
|
test(arg, dpdk_test,
|
|
env : ['DPDK_TEST=' + arg],
|
|
timeout : timeout_seconds,
|
|
is_parallel : false,
|
|
suite : 'perf-tests')
|
|
endforeach
|
|
|
|
foreach arg : driver_test_names
|
|
test(arg, dpdk_test,
|
|
env : ['DPDK_TEST=' + arg],
|
|
timeout : timeout_seconds,
|
|
is_parallel : false,
|
|
suite : 'driver-tests')
|
|
endforeach
|
|
|
|
foreach arg : dump_test_names
|
|
test(arg, dpdk_test,
|
|
env : ['DPDK_TEST=' + arg],
|
|
timeout : timeout_seconds,
|
|
is_parallel : false,
|
|
suite : 'debug-tests')
|
|
endforeach
|
|
|
|
foreach arg : extra_test_names
|
|
test(arg, dpdk_test,
|
|
env : ['DPDK_TEST=' + arg],
|
|
timeout : timeout_seconds,
|
|
is_parallel : false,
|
|
suite : 'extra-tests')
|
|
endforeach
|