f-stack/dpdk/app/test/suites/meson.build

136 lines
4.6 KiB
Meson

# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2023 Intel Corporation
# some perf tests (eg: memcpy perf autotest) take a very long
# to complete, so timeout to 10 minutes
timeout_seconds = 600
timeout_seconds_fast = 10
test_no_huge_args = ['--no-huge', '-m', '2048']
has_hugepage = run_command(has_hugepages_cmd, check: true).stdout().strip() != '0'
message('hugepage availability: @0@'.format(has_hugepage))
# process source files to determine the different unit test suites
# - fast_tests
# - perf_tests
# - driver_tests
test_suites = run_command(get_test_suites_cmd, autotest_sources,
check: true).stdout().strip().split()
foreach suite:test_suites
# simple cases - tests without parameters or special handling
suite = suite.split('=')
suite_name = suite[0]
suite_tests = suite[1].split(',')
if suite_name == 'non_suite_tests'
# tests not in any suite
foreach t: suite_tests
if developer_mode
warning('Test "@0@" is not defined in any test suite'.format(t))
endif
test(t, dpdk_test,
env: ['DPDK_TEST=' + t],
timeout: timeout_seconds,
is_parallel: false)
endforeach
elif suite_name != 'fast-tests'
# simple cases - tests without parameters or special handling
foreach t: suite_tests
test(t, dpdk_test,
env: ['DPDK_TEST=' + t],
timeout: timeout_seconds,
is_parallel: false,
suite: suite_name)
endforeach
else
# special fast-test handling here
foreach t: suite_tests
params = t.split(':')
test_name = params[0]
nohuge = params[1] == 'true'
asan = params[2] == 'true'
test_args = []
if nohuge
test_args += test_no_huge_args
elif not has_hugepage
continue #skip this tests
endif
if not asan and (get_option('b_sanitize') == 'address'
or get_option('b_sanitize') == 'address,undefined')
continue # skip this test
endif
if get_option('default_library') == 'shared'
test_args += ['-d', dpdk_drivers_build_dir]
endif
test(test_name, dpdk_test,
args : test_args,
env: ['DPDK_TEST=' + test_name],
timeout : timeout_seconds_fast,
is_parallel : false,
suite : 'fast-tests')
if not is_windows and test_name == 'trace_autotest'
test_args += ['--trace=.*']
test_args += ['--trace-dir=@0@'.format(meson.current_build_dir())]
test(test_name + '_with_traces', dpdk_test,
args : test_args,
env: ['DPDK_TEST=' + test_name],
timeout : timeout_seconds_fast,
is_parallel : false,
suite : 'fast-tests')
endif
endforeach
endif
endforeach
# standalone test for telemetry
if not is_windows and dpdk_conf.has('RTE_LIB_TELEMETRY')
test_args = [dpdk_test]
test_args += test_no_huge_args
if get_option('default_library') == 'shared'
test_args += ['-d', dpdk_drivers_build_dir]
endif
if dpdk_conf.has('RTE_CRYPTO_NULL')
test_args += ['--vdev=crypto_null0']
endif
if dpdk_conf.has('RTE_DMA_SKELETON')
test_args += ['--vdev=dma_skeleton0']
endif
if dpdk_conf.has('RTE_EVENT_SKELETON')
test_args += ['--vdev=event_skeleton0']
endif
if dpdk_conf.has('RTE_NET_NULL')
test_args += ['--vdev=net_null0']
endif
if dpdk_conf.has('RTE_RAW_SKELETON')
test_args += ['--vdev=rawdev_skeleton0']
endif
test_args += ['-a', '0000:00:00.0']
test('telemetry_all', find_program('test_telemetry.sh'),
args: test_args,
timeout : timeout_seconds_fast,
is_parallel : false,
suite : 'fast-tests')
endif
# dump tests are defined in commands.c, and not easily extractable
dump_test_names = [
'dump_devargs',
'dump_log_types',
'dump_malloc_heaps',
'dump_malloc_stats',
'dump_mempool',
'dump_memzone',
'dump_physmem',
'dump_ring',
'dump_struct_sizes',
]
foreach arg : dump_test_names
test(arg, dpdk_test,
env : ['DPDK_TEST=' + arg],
timeout : timeout_seconds_fast,
is_parallel : false,
suite : 'debug-tests')
endforeach