On Fri, Oct 15, 2021 at 01:27:59PM +0000, Dmitry Kozlyuk wrote:
> > [...]
> > > +static int
> > > +test_mempool_flag_non_io_set_when_no_iova_contig_set(void)
> > > +{
> > > +     struct rte_mempool *mp;
> > > +     int ret;
> > > +
> > > +     mp = rte_mempool_create_empty("empty", MEMPOOL_SIZE,
> > > +                                   MEMPOOL_ELT_SIZE, 0, 0,
> > > +                                   SOCKET_ID_ANY,
> > MEMPOOL_F_NO_IOVA_CONTIG);
> > > +     RTE_TEST_ASSERT_NOT_NULL(mp, "Cannot create mempool: %s",
> > > +                              rte_strerror(rte_errno));
> > > +     rte_mempool_set_ops_byname(mp, rte_mbuf_best_mempool_ops(), NULL);
> > > +     ret = rte_mempool_populate_default(mp);
> > > +     RTE_TEST_ASSERT(ret > 0, "Failed to populate mempool: %s",
> > > +                     rte_strerror(rte_errno));
> > > +     RTE_TEST_ASSERT(mp->flags & MEMPOOL_F_NON_IO,
> > > +                     "NON_IO flag is not set when NO_IOVA_CONTIG is
> > set");
> > > +     rte_mempool_free(mp);
> > > +     return 0;
> > > +}
> > 
> > One comment that also applies to the previous patch. Using
> > RTE_TEST_ASSERT_*() is convenient to test a condition, display an error
> > message and return on error in one operation. But here it can cause a
> > leak on test failure.
> > 
> > I don't know what is the best approach to solve the issue. Having
> > equivalent test macros that do "goto fail" instead of "return -1" would
> > help here. I mean something like:
> >   RTE_TEST_ASSERT_GOTO_*(cond, label, fmt, ...)
> > 
> > What do you think?
> 
> This can work with existing macros:
> 
>       #define TEST_TRACE_FAILURE(...) goto fail
> 
> Because of "trace" in the name it looks a bit like a hijacking.
> Probably the macro should be named TEST_HANDLE_FAILURE
> to suggest broader usages than just tracing,
> but for now it looks the most neat way.

That would work for me.
What about introducing another macro for this usage, that would
be "return -1" by default and that can be overridden?

Reply via email to