From patchwork Fri Mar 13 08:16:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ruifeng Wang X-Patchwork-Id: 66630 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 03A3EA0567; Fri, 13 Mar 2020 09:17:16 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id EBBC71C037; Fri, 13 Mar 2020 09:17:13 +0100 (CET) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by dpdk.org (Postfix) with ESMTP id 81CEE1C02E for ; Fri, 13 Mar 2020 09:17:12 +0100 (CET) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0471731B; Fri, 13 Mar 2020 01:17:12 -0700 (PDT) Received: from net-arm-thunderx2-02.shanghai.arm.com (net-arm-thunderx2-02.shanghai.arm.com [10.169.40.171]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 2295C3F67D; Fri, 13 Mar 2020 01:17:07 -0700 (PDT) From: Ruifeng Wang To: aconole@redhat.com, maicolgabriel@hotmail.com, bruce.richardson@intel.com, konstantin.ananyev@intel.com, cristian.dumitrescu@intel.com, yipeng1.wang@intel.com, sameh.gobriel@intel.com Cc: dev@dpdk.org, david.marchand@redhat.com, anatoly.burakov@intel.com, gavin.hu@arm.com, honnappa.nagarahalli@arm.com, juraj.linkes@pantheon.tech, nd@arm.com, Ruifeng Wang Date: Fri, 13 Mar 2020 16:16:12 +0800 Message-Id: <20200313081614.195335-3-ruifeng.wang@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200313081614.195335-1-ruifeng.wang@arm.com> References: <20200225073236.135581-1-ruifeng.wang@arm.com> <20200313081614.195335-1-ruifeng.wang@arm.com> Subject: [dpdk-dev] [PATCH v3 2/4] ci: generate fast-tests suite base on hugepage availability X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 --- app/test/meson.build | 216 ++++++++++++++++++++++++------------------- 1 file changed, 120 insertions(+), 96 deletions(-) diff --git a/app/test/meson.build b/app/test/meson.build index 0a2ce710f..dd121a297 100644 --- a/app/test/meson.build +++ b/app/test/meson.build @@ -154,87 +154,89 @@ test_deps = ['acl', 'timer' ] +# Each test is marked with flag true/false +# to indicate whether it can run in no-huge mode. 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', + ['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_test_names += [['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_test_names += [['event_eth_tx_adapter_autotest', false]] + fast_test_names += [['bitratestats_autotest', true]] + fast_test_names += [['latencystats_autotest', true]] driver_test_names += 'link_bonding_mode4_autotest' - fast_test_names += 'pdump_autotest' + fast_test_names += [['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_test_names += [['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 host_machine.system() == '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 availbility: @0@'.format(has_hugepage)) + # some perf tests (eg: memcpy perf autotest)take very long # to complete, so timeout to 10 minutes timeout_seconds = 600 @@ -407,22 +420,33 @@ test_args = [num_cores_arg] foreach arg : fast_test_names 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 host_machine.system() == 'linux' - test(arg, dpdk_test, - env : ['DPDK_TEST=' + arg], - args : test_args + - ['--file-prefix=@0@'.format(arg)], - timeout : timeout_seconds_fast, - is_parallel : false, - suite : 'fast-tests') + if has_hugepage + test(arg[0], dpdk_test, + env : ['DPDK_TEST=' + arg[0]], + args : test_args + + ['--file-prefix=@0@'.format(arg[0])], + timeout : timeout_seconds_fast, + is_parallel : false, + suite : 'fast-tests') + elif arg[1] + test(arg[0], dpdk_test, + env : ['DPDK_TEST=' + arg[0]], + args : test_args + + ['--no-huge'] + ['-m 2048'] + + ['--file-prefix=@0@'.format(arg[0])], + timeout : timeout_seconds_fast, + is_parallel : false, + suite : 'fast-tests') + endif else - test(arg, dpdk_test, - env : ['DPDK_TEST=' + arg], + test(arg[0], dpdk_test, + env : ['DPDK_TEST=' + arg[0]], args : test_args, timeout : timeout_seconds_fast, is_parallel : false,