[dpdk-dev] [PATCH 14/14] test: skip tests when missing requirements
Honnappa Nagarahalli
Honnappa.Nagarahalli at arm.com
Tue Jun 11 06:08:02 CEST 2019
(pruning a little bit of the CC: list...)
On Fri, Jun 7, 2019 at 10:55 PM Honnappa Nagarahalli <Honnappa.Nagarahalli at arm.com<mailto:Honnappa.Nagarahalli at arm.com>> wrote:
>
> Let's mark as skipped the tests when they are missing some requirements like a
> number of used cores or specific hardware availability, like compress, crypto or
> eventdev devices.
>
> Signed-off-by: David Marchand <david.marchand at redhat.com<mailto:david.marchand at redhat.com>>
> ---
> app/test/test.c | 24 ++++++++++++++++--------
> app/test/test_compressdev.c | 4 ++--
> app/test/test_cryptodev.c | 4 ++--
> app/test/test_distributor.c | 4 ++--
> app/test/test_distributor_perf.c | 4 ++--
> app/test/test_event_timer_adapter.c | 5 +++--
> app/test/test_eventdev.c | 2 ++
> app/test/test_func_reentrancy.c | 6 +++---
> app/test/test_hash_multiwriter.c | 7 +++----
> app/test/test_hash_readwrite.c | 7 +++----
> app/test/test_hash_readwrite_lf.c | 8 ++++----
> app/test/test_ipsec.c | 4 ++--
> app/test/test_mbuf.c | 13 ++++++-------
> app/test/test_rcu_qsbr.c | 10 +++++-----
> app/test/test_rcu_qsbr_perf.c | 9 +++++----
> app/test/test_service_cores.c | 14 ++++++++++++++
> app/test/test_stack.c | 8 +++++---
> app/test/test_timer.c | 10 +++++-----
> app/test/test_timer_secondary.c | 10 ++++++----
> 19 files changed, 90 insertions(+), 63 deletions(-)
>
<snip>
>
> RTE_LCORE_FOREACH_SLAVE(core_id) {
> diff --git a/app/test/test_hash_readwrite_lf.c
> b/app/test/test_hash_readwrite_lf.c
> index 5644361..2664f51 100644
> --- a/app/test/test_hash_readwrite_lf.c
> +++ b/app/test/test_hash_readwrite_lf.c
> @@ -1254,10 +1254,10 @@ struct {
> int htm;
> int use_jhash = 0;
> int ext_bkt = 0;
> - if (rte_lcore_count() == 1) {
> - printf("More than one lcore is required "
> - "to do read write lock-free concurrency test\n");
> - return -1;
> +
> + if (rte_lcore_count() < 2) {
> + printf("Not enough cores for hash_readwrite_lf_autotest,
> expecting at least 2\n");
> + return TEST_SKIPPED;
> }
Looks good
> diff --git a/app/test/test_rcu_qsbr.c b/app/test/test_rcu_qsbr.c index
> 92ab0c2..725d27d 100644
> --- a/app/test/test_rcu_qsbr.c
> +++ b/app/test/test_rcu_qsbr.c
> @@ -949,14 +949,14 @@
> static int
> test_rcu_qsbr_main(void)
> {
> + if (rte_lcore_count() < 5) {
Should be '4'. 4 cores are enough for the test.
Well, if we make it 4, then there was an issue before.
num_cores < 4 means 'at least 4 slave cores', so with the master core, we are at 5.
[Honnappa] Ok
See:
static inline int
get_enabled_cores_mask(void)
{
uint16_t core_id;
uint32_t max_cores = rte_lcore_count();
if (max_cores > TEST_RCU_MAX_LCORE) {
printf("Number of cores exceed %d\n", TEST_RCU_MAX_LCORE);
return -1;
}
core_id = 0;
num_cores = 0;
RTE_LCORE_FOREACH_SLAVE(core_id) {
enabled_core_ids[num_cores] = core_id;
num_cores++;
}
return 0;
}
> + printf("Not enough cores for rcu_qsbr_autotest, expecting at
> least 5\n");
> + return TEST_SKIPPED;
> + }
> +
> if (get_enabled_cores_mask() != 0)
> return -1;
>
> - if (num_cores < 4) {
> - printf("Test failed! Need 4 or more cores\n");
> - goto test_fail;
> - }
There is another check in 'get_enabled_cores_mask' function. We should convert that as well. Suggest pulling the check in 'get_enabled_cores_mask' to 'test_rcu_qsbr_main'
Already said it before, can't we just shoot this enabled_core_ids[] array?
Is there a real need to enumerate per core rank?
[Honnappa] It is being used in the case where non-contiguous cores are enabled
> -
> /* Error-checking test cases */
> if (test_rcu_qsbr_get_memsize() < 0)
> goto test_fail;
> diff --git a/app/test/test_rcu_qsbr_perf.c b/app/test/test_rcu_qsbr_perf.c
> index 6b1912c..dcdd9da 100644
> --- a/app/test/test_rcu_qsbr_perf.c
> +++ b/app/test/test_rcu_qsbr_perf.c
> @@ -623,6 +623,11 @@
> static int
> test_rcu_qsbr_main(void)
> {
> + if (rte_lcore_count() < 3) {
Should be 2. Minimum 2 cores are required.
Idem num_cores < 2.
Was the check incorrect before?
[Honnappa] It is fine
> + printf("Not enough cores for rcu_qsbr_perf_autotest,
> expecting at least 3\n");
> + return TEST_SKIPPED;
> + }
> +
> rte_atomic64_init(&updates);
> rte_atomic64_init(&update_cycles);
> rte_atomic64_init(&checks);
> @@ -632,10 +637,6 @@
> return -1;
>
> printf("Number of cores provided = %d\n", num_cores);
> - if (num_cores < 2) {
> - printf("Test failed! Need 2 or more cores\n");
> - goto test_fail;
> - }
> if (num_cores > TEST_RCU_MAX_LCORE) {
Should convert this check as well to return TEST_SKIPPED.
Hum, skipped if there is a real issue at running the test with more than 128 cores (I'd like to hear how this value was chosen).
Or, we size this array RTE_MAX_LCORES and there is no check at all.
[Honnappa] We can size it to RTE_MAX_LCORES.
Or, we shoot enabled_core_ids[] array :-)
--
David Marchand
More information about the dev
mailing list