MCPcopy Create free account
hub / github.com/F-Stack/f-stack / test_mempool_events

Function test_mempool_events

dpdk/app/test/test_mempool.c:511–635  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

509}
510
511static int
512test_mempool_events(int (*populate)(struct rte_mempool *mp))
513{
514#pragma push_macro("RTE_TEST_TRACE_FAILURE")
515#undef RTE_TEST_TRACE_FAILURE
516#define RTE_TEST_TRACE_FAILURE(...) do { goto fail; } while (0)
517
518 static const size_t callback_num = 3;
519 static const size_t mempool_num = 2;
520 static const unsigned int mempool_elt_size = 64;
521 static const unsigned int mempool_size = 64;
522
523 struct test_mempool_events_data data[callback_num];
524 struct rte_mempool *mp[mempool_num], *freed;
525 char name[RTE_MEMPOOL_NAMESIZE];
526 size_t i, j;
527 int ret;
528
529 memset(mp, 0, sizeof(mp));
530 for (i = 0; i < callback_num; i++) {
531 ret = rte_mempool_event_callback_register
532 (test_mempool_events_cb, &data[i]);
533 RTE_TEST_ASSERT_EQUAL(ret, 0, "Failed to register the callback %zu: %s",
534 i, rte_strerror(rte_errno));
535 }
536 ret = rte_mempool_event_callback_unregister(test_mempool_events_cb, mp);
537 RTE_TEST_ASSERT_NOT_EQUAL(ret, 0, "Unregistered a non-registered callback");
538 /* NULL argument has no special meaning in this API. */
539 ret = rte_mempool_event_callback_unregister(test_mempool_events_cb,
540 NULL);
541 RTE_TEST_ASSERT_NOT_EQUAL(ret, 0, "Unregistered a non-registered callback with NULL argument");
542
543 /* Create mempool 0 that will be observed by all callbacks. */
544 memset(&data, 0, sizeof(data));
545 strcpy(name, "empty0");
546 mp[0] = rte_mempool_create_empty(name, mempool_size,
547 mempool_elt_size, 0, 0,
548 SOCKET_ID_ANY, 0);
549 RTE_TEST_ASSERT_NOT_NULL(mp[0], "Cannot create mempool %s: %s",
550 name, rte_strerror(rte_errno));
551 for (j = 0; j < callback_num; j++)
552 RTE_TEST_ASSERT_EQUAL(data[j].invoked, false,
553 "Callback %zu invoked on %s mempool creation",
554 j, name);
555
556 rte_mempool_set_ops_byname(mp[0], rte_mbuf_best_mempool_ops(), NULL);
557 ret = populate(mp[0]);
558 RTE_TEST_ASSERT_EQUAL(ret, (int)mp[0]->size, "Failed to populate mempool %s: %s",
559 name, rte_strerror(-ret));
560 for (j = 0; j < callback_num; j++) {
561 RTE_TEST_ASSERT_EQUAL(data[j].invoked, true,
562 "Callback %zu not invoked on mempool %s population",
563 j, name);
564 RTE_TEST_ASSERT_EQUAL(data[j].event,
565 RTE_MEMPOOL_EVENT_READY,
566 "Wrong callback invoked, expected READY");
567 RTE_TEST_ASSERT_EQUAL(data[j].mp, mp[0],
568 "Callback %zu invoked for a wrong mempool instead of %s",

Callers 1

test_mempoolFunction · 0.85

Calls 9

memsetFunction · 0.85
rte_strerrorFunction · 0.85
rte_mempool_create_emptyFunction · 0.85
sprintfFunction · 0.85
rte_mempool_freeFunction · 0.85

Tested by

no test coverage detected