[dpdk-dev] [PATCH 14/14] test: skip tests when missing requirements

David Marchand david.marchand at redhat.com
Sat Jun 8 10:01:20 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> 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>
> > ---
> >  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.

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?



> > -
> >       /* 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?



> > +             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.
Or, we shoot enabled_core_ids[] array :-)


-- 
David Marchand


More information about the dev mailing list