From: David Marchand <david.marchand@redhat.com>
To: dev@dpdk.org
Cc: aconole@redhat.com, ruifeng.wang@arm.com,
maicolgabriel@hotmail.com, bruce.richardson@intel.com,
Gavin Hu <gavin.hu@arm.com>
Subject: [dpdk-dev] [PATCH v4 3/5] test: allow no-huge mode for fast-tests
Date: Mon, 23 Mar 2020 20:59:24 +0100 [thread overview]
Message-ID: <20200323195926.12182-4-david.marchand@redhat.com> (raw)
In-Reply-To: <20200323195926.12182-1-david.marchand@redhat.com>
From: Ruifeng Wang <ruifeng.wang@arm.com>
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 <aconole@redhat.com>
Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
Acked-by: Aaron Conole <aconole@redhat.com>
---
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.23.0
next prev parent reply other threads:[~2020-03-23 20:00 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-23 19:59 [dpdk-dev] [PATCH v4 0/5] no-huge unit test David Marchand
2020-03-23 19:59 ` [dpdk-dev] [PATCH v4 1/5] test: load drivers when required David Marchand
2020-03-23 21:01 ` Aaron Conole
2020-03-23 19:59 ` [dpdk-dev] [PATCH v4 2/5] test: skip subtests in no-huge mode David Marchand
2020-03-23 19:59 ` David Marchand [this message]
2020-03-23 19:59 ` [dpdk-dev] [PATCH v4 4/5] ci: run tests even without hugepage David Marchand
2020-03-23 19:59 ` [dpdk-dev] [PATCH v4 5/5] ci: enable unit test for aarch64 David Marchand
2020-03-24 10:06 ` [dpdk-dev] [PATCH v4 0/5] no-huge unit test David Marchand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200323195926.12182-4-david.marchand@redhat.com \
--to=david.marchand@redhat.com \
--cc=aconole@redhat.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=gavin.hu@arm.com \
--cc=maicolgabriel@hotmail.com \
--cc=ruifeng.wang@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).