[dpdk-dev] [PATCH v7 10/17] test: test single and burst distributor API
David Hunt
david.hunt at intel.com
Tue Feb 21 04:17:46 CET 2017
Signed-off-by: David Hunt <david.hunt at intel.com>
---
app/test/test_distributor.c | 115 +++++++++++++++++++++++++++++++-------------
1 file changed, 82 insertions(+), 33 deletions(-)
diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c
index 8866e31..c345382 100644
--- a/app/test/test_distributor.c
+++ b/app/test/test_distributor.c
@@ -543,16 +543,25 @@ static
int test_error_distributor_create_name(void)
{
struct rte_distributor *d = NULL;
+ struct rte_distributor *db = NULL;
char *name = NULL;
d = rte_distributor_create(name, rte_socket_id(),
rte_lcore_count() - 1,
- RTE_DIST_ALG_BURST);
+ RTE_DIST_ALG_SINGLE);
if (d != NULL || rte_errno != EINVAL) {
printf("ERROR: No error on create() with NULL name param\n");
return -1;
}
+ db = rte_distributor_create(name, rte_socket_id(),
+ rte_lcore_count() - 1,
+ RTE_DIST_ALG_BURST);
+ if (db != NULL || rte_errno != EINVAL) {
+ printf("ERROR: No error on create() with NULL param\n");
+ return -1;
+ }
+
return 0;
}
@@ -560,15 +569,25 @@ int test_error_distributor_create_name(void)
static
int test_error_distributor_create_numworkers(void)
{
- struct rte_distributor *d = NULL;
+ struct rte_distributor *ds = NULL;
+ struct rte_distributor *db = NULL;
- d = rte_distributor_create("test_numworkers", rte_socket_id(),
+ ds = rte_distributor_create("test_numworkers", rte_socket_id(),
RTE_MAX_LCORE + 10,
- RTE_DIST_ALG_BURST);
- if (d != NULL || rte_errno != EINVAL) {
+ RTE_DIST_ALG_SINGLE);
+ if (ds != NULL || rte_errno != EINVAL) {
printf("ERROR: No error on create() with num_workers > MAX\n");
return -1;
}
+
+ db = rte_distributor_create("test_numworkers", rte_socket_id(),
+ RTE_MAX_LCORE + 10,
+ RTE_DIST_ALG_BURST);
+ if (db != NULL || rte_errno != EINVAL) {
+ printf("ERROR: No error on create() num_workers > MAX\n");
+ return -1;
+ }
+
return 0;
}
@@ -601,26 +620,43 @@ quit_workers(struct worker_params *wp, struct rte_mempool *p)
static int
test_distributor(void)
{
- static struct rte_distributor *d;
+ static struct rte_distributor *ds;
+ static struct rte_distributor *db;
+ static struct rte_distributor *dist[2];
static struct rte_mempool *p;
+ int i;
if (rte_lcore_count() < 2) {
printf("ERROR: not enough cores to test distributor\n");
return -1;
}
- if (d == NULL) {
- d = rte_distributor_create("Test_dist_burst",
+ if (db == NULL) {
+ db = rte_distributor_create("Test_dist_burst",
rte_socket_id(),
rte_lcore_count() - 1,
RTE_DIST_ALG_BURST);
- if (d == NULL) {
+ if (db == NULL) {
printf("Error creating burst distributor\n");
return -1;
}
} else {
- rte_distributor_flush(d);
- rte_distributor_clear_returns(d);
+ rte_distributor_flush(db);
+ rte_distributor_clear_returns(db);
+ }
+
+ if (ds == NULL) {
+ ds = rte_distributor_create("Test_dist_single",
+ rte_socket_id(),
+ rte_lcore_count() - 1,
+ RTE_DIST_ALG_SINGLE);
+ if (ds == NULL) {
+ printf("Error creating single distributor\n");
+ return -1;
+ }
+ } else {
+ rte_distributor_flush(ds);
+ rte_distributor_clear_returns(ds);
}
const unsigned nb_bufs = (511 * rte_lcore_count()) < BIG_BATCH ?
@@ -634,37 +670,50 @@ test_distributor(void)
}
}
- worker_params.dist = d;
- sprintf(worker_params.name, "burst");
+ dist[0] = ds;
+ dist[1] = db;
- rte_eal_mp_remote_launch(handle_work, &worker_params, SKIP_MASTER);
- if (sanity_test(&worker_params, p) < 0)
- goto err;
- quit_workers(&worker_params, p);
+ for (i = 0; i < 2; i++) {
- rte_eal_mp_remote_launch(handle_work_with_free_mbufs, &worker_params,
- SKIP_MASTER);
- if (sanity_test_with_mbuf_alloc(&worker_params, p) < 0)
- goto err;
- quit_workers(&worker_params, p);
+ worker_params.dist = dist[i];
+ if (i)
+ sprintf(worker_params.name, "burst");
+ else
+ sprintf(worker_params.name, "single");
- if (rte_lcore_count() > 2) {
- rte_eal_mp_remote_launch(handle_work_for_shutdown_test,
- &worker_params,
- SKIP_MASTER);
- if (sanity_test_with_worker_shutdown(&worker_params, p) < 0)
+ rte_eal_mp_remote_launch(handle_work,
+ &worker_params, SKIP_MASTER);
+ if (sanity_test(&worker_params, p) < 0)
goto err;
quit_workers(&worker_params, p);
- rte_eal_mp_remote_launch(handle_work_for_shutdown_test,
- &worker_params,
- SKIP_MASTER);
- if (test_flush_with_worker_shutdown(&worker_params, p) < 0)
+ rte_eal_mp_remote_launch(handle_work_with_free_mbufs,
+ &worker_params, SKIP_MASTER);
+ if (sanity_test_with_mbuf_alloc(&worker_params, p) < 0)
goto err;
quit_workers(&worker_params, p);
- } else {
- printf("Not enough cores to run tests for worker shutdown\n");
+ if (rte_lcore_count() > 2) {
+ rte_eal_mp_remote_launch(handle_work_for_shutdown_test,
+ &worker_params,
+ SKIP_MASTER);
+ if (sanity_test_with_worker_shutdown(&worker_params,
+ p) < 0)
+ goto err;
+ quit_workers(&worker_params, p);
+
+ rte_eal_mp_remote_launch(handle_work_for_shutdown_test,
+ &worker_params,
+ SKIP_MASTER);
+ if (test_flush_with_worker_shutdown(&worker_params,
+ p) < 0)
+ goto err;
+ quit_workers(&worker_params, p);
+
+ } else {
+ printf("Too few cores to run worker shutdown test\n");
+ }
+
}
if (test_error_distributor_create_numworkers() == -1 ||
--
2.7.4
More information about the dev
mailing list