From 77784ef0fba80c899437000271a31710001ea63e Mon Sep 17 00:00:00 2001 From: Ruifeng Wang Date: Mon, 23 Mar 2020 20:59:24 +0100 Subject: [PATCH] test: allow no-huge mode for fast-tests In environments where hugepage are not available, such as containers, many cases in fast-tests suite should also run if no-huge EAL option is used. Flag is appended to each case in fast-tests suite to indicate whether it lives with no-huge mode. With the flag, fast-tests suite can be generated based on detected hugepage availability of building environment. All cases will be valid if hugepage is available, whereas only applicable cases will be added if environment has no hugepage support. Suggested-by: Aaron Conole Signed-off-by: Ruifeng Wang Reviewed-by: Gavin Hu Acked-by: Aaron Conole Signed-off-by: David Marchand --- app/test/meson.build | 215 ++++++++++++++++++++++++------------------- 1 file changed, 119 insertions(+), 96 deletions(-) diff --git a/app/test/meson.build b/app/test/meson.build index 7ab2b586e1..351d29cb65 100644 --- a/app/test/meson.build +++ b/app/test/meson.build @@ -154,87 +154,89 @@ test_deps = ['acl', 'timer' ] -fast_test_names = [ - 'acl_autotest', - 'alarm_autotest', - 'atomic_autotest', - 'byteorder_autotest', - 'cmdline_autotest', - 'common_autotest', - 'cpuflags_autotest', - 'cycles_autotest', - 'debug_autotest', - 'eal_flags_c_opt_autotest', - 'eal_flags_master_opt_autotest', - 'eal_flags_n_opt_autotest', - 'eal_flags_hpet_autotest', - 'eal_flags_no_huge_autotest', - 'eal_flags_w_opt_autotest', - 'eal_flags_b_opt_autotest', - 'eal_flags_vdev_opt_autotest', - 'eal_flags_r_opt_autotest', - 'eal_flags_mem_autotest', - 'eal_flags_file_prefix_autotest', - 'eal_flags_misc_autotest', - 'eal_fs_autotest', - 'errno_autotest', - 'event_ring_autotest', - 'fib_autotest', - 'fib6_autotest', - 'func_reentrancy_autotest', - 'flow_classify_autotest', - 'hash_autotest', - 'interrupt_autotest', - 'logs_autotest', - 'lpm_autotest', - 'lpm6_autotest', - 'malloc_autotest', - 'mbuf_autotest', - 'mcslock_autotest', - 'memcpy_autotest', - 'memory_autotest', - 'mempool_autotest', - 'memzone_autotest', - 'meter_autotest', - 'multiprocess_autotest', - 'per_lcore_autotest', - 'prefetch_autotest', - 'rcu_qsbr_autotest', - 'red_autotest', - 'rib_autotest', - 'rib6_autotest', - 'ring_autotest', - 'rwlock_test1_autotest', - 'rwlock_rda_autotest', - 'rwlock_rds_wrm_autotest', - 'rwlock_rde_wro_autotest', - 'sched_autotest', - 'spinlock_autotest', - 'stack_autotest', - 'stack_lf_autotest', - 'string_autotest', - 'table_autotest', - 'tailq_autotest', - 'timer_autotest', - 'user_delay_us', - 'version_autotest', - 'crc_autotest', - 'delay_us_sleep_autotest', - 'distributor_autotest', - 'eventdev_common_autotest', - 'fbarray_autotest', - 'hash_readwrite_func_autotest', - 'ipsec_autotest', - 'kni_autotest', - 'kvargs_autotest', - 'member_autotest', - 'metrics_autotest', - 'power_cpufreq_autotest', - 'power_autotest', - 'power_kvm_vm_autotest', - 'reorder_autotest', - 'service_autotest', - 'thash_autotest', +# Each test is marked with flag true/false +# to indicate whether it can run in no-huge mode. +fast_tests = [ + ['acl_autotest', true], + ['alarm_autotest', false], + ['atomic_autotest', false], + ['byteorder_autotest', true], + ['cmdline_autotest', true], + ['common_autotest', true], + ['cpuflags_autotest', true], + ['cycles_autotest', true], + ['debug_autotest', true], + ['eal_flags_c_opt_autotest', false], + ['eal_flags_master_opt_autotest', false], + ['eal_flags_n_opt_autotest', false], + ['eal_flags_hpet_autotest', false], + ['eal_flags_no_huge_autotest', false], + ['eal_flags_w_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], + ['event_ring_autotest', true], + ['fib_autotest', true], + ['fib6_autotest', true], + ['func_reentrancy_autotest', false], + ['flow_classify_autotest', false], + ['hash_autotest', true], + ['interrupt_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], + ['prefetch_autotest', true], + ['rcu_qsbr_autotest', true], + ['red_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], + ['spinlock_autotest', true], + ['stack_autotest', false], + ['stack_lf_autotest', false], + ['string_autotest', true], + ['table_autotest', true], + ['tailq_autotest', true], + ['timer_autotest', false], + ['user_delay_us', true], + ['version_autotest', true], + ['crc_autotest', true], + ['delay_us_sleep_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], + ['metrics_autotest', true], + ['power_cpufreq_autotest', false], + ['power_autotest', true], + ['power_kvm_vm_autotest', false], + ['reorder_autotest', true], + ['service_autotest', true], + ['thash_autotest', true], ] perf_test_names = [ @@ -334,13 +336,13 @@ if dpdk_conf.has('RTE_LIBRTE_RING_PMD') test_sources += 'test_link_bonding_mode4.c' test_sources += 'sample_packet_forward.c' test_sources += 'test_pdump.c' - fast_test_names += 'ring_pmd_autotest' + fast_tests += [['ring_pmd_autotest', true]] perf_test_names += 'ring_pmd_perf_autotest' - fast_test_names += 'event_eth_tx_adapter_autotest' - fast_test_names += 'bitratestats_autotest' - fast_test_names += 'latencystats_autotest' + fast_tests += [['event_eth_tx_adapter_autotest', false]] + fast_tests += [['bitratestats_autotest', true]] + fast_tests += [['latencystats_autotest', true]] driver_test_names += 'link_bonding_mode4_autotest' - fast_test_names += 'pdump_autotest' + fast_tests += [['pdump_autotest', true]] endif if dpdk_conf.has('RTE_LIBRTE_POWER') @@ -368,7 +370,7 @@ if dpdk_conf.has('RTE_LIBRTE_COMPRESSDEV') test_dep_objs += compress_test_dep test_sources += 'test_compressdev.c' test_deps += 'compressdev' - fast_test_names += 'compressdev_autotest' + fast_tests += [['compressdev_autotest', false]] endif endif @@ -395,6 +397,17 @@ dpdk_test = executable('dpdk-test', install_rpath: driver_install_path, install: true) +has_hugepage = true +if is_linux + check_hugepage = run_command('cat', + '/proc/sys/vm/nr_hugepages') + if (check_hugepage.returncode() != 0 or + check_hugepage.stdout().strip() == '0') + has_hugepage = false + endif +endif +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 @@ -405,25 +418,35 @@ num_cores_arg = '-l ' + run_command(get_coremask).stdout().strip() default_test_args = [num_cores_arg] -foreach arg : fast_test_names +foreach arg : fast_tests test_args = default_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 == 'event_eth_tx_adapter_autotest') + 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)] + test_args += ['--file-prefix=@0@'.format(arg[0])] endif - test(arg, dpdk_test, - env : ['DPDK_TEST=' + arg], - args : test_args, - timeout : timeout_seconds_fast, - is_parallel : false, - suite : 'fast-tests') + 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 -- 2.20.1