Esempio n. 1
0
static void test_brick_pkts_count_west(void)
{
	TEST_PKTS_COUNT_INIT();
	unsigned int pkts_count;
	int j;

	for (j = 0, pkts_count = NB_PKTS; j < NB_LOOP;
	     ++j, pkts_count += NB_PKTS) {
		pg_brick_burst_to_west(brick, 0, pkts,
				       pg_mask_firsts(NB_PKTS), &error);
		g_assert(!error);
		g_assert(pg_brick_pkts_count_get(collect_east, WEST_SIDE) == 0);
		g_assert(pg_brick_pkts_count_get(collect_east, EAST_SIDE) == 0);
		g_assert(pg_brick_pkts_count_get(collect_west,
					      WEST_SIDE) == pkts_count);
		g_assert(pg_brick_pkts_count_get(collect_west, EAST_SIDE) == 0);
		g_assert(pg_brick_pkts_count_get(brick, WEST_SIDE) == pkts_count);
		g_assert(pg_brick_pkts_count_get(brick, EAST_SIDE) == 0);

		TEST_PKTS_COUNT_CHECK(pg_brick_west_burst_get, collect_west, 0);
		TEST_PKTS_COUNT_CHECK(pg_brick_east_burst_get, collect_west, 3);
		TEST_PKTS_COUNT_CHECK(pg_brick_west_burst_get, collect_east, 0);
		TEST_PKTS_COUNT_CHECK(pg_brick_east_burst_get, collect_east, 0);
	}
	TEST_PKTS_COUNT_DESTROY();
}
Esempio n. 2
0
static void test_diode_west_bad_direction(void)
{
	TEST_DIODE_INIT(EAST_SIDE);

	/* send a burst to the west from the eastest nope brick */
	pg_brick_burst_to_west(node2, 0, pkts, pg_mask_firsts(NB_PKTS),
			    &error);

	/* check no packet ended */
	DIODE_TEST(pg_brick_west_burst_get, collect_east, 0);
	DIODE_TEST(pg_brick_east_burst_get, collect_east, 0);
	DIODE_TEST(pg_brick_west_burst_get, collect_west, 0);
	DIODE_TEST(pg_brick_east_burst_get, collect_west, 0);

	TEST_DIODE_DESTROY();
}
Esempio n. 3
0
static void test_brick_flow_west(void)
{
	struct pg_brick_config *config = pg_brick_config_new("mybrick", 4, 4);
	struct pg_brick *brick1, *brick2, *collect_west, *collect_east;
	struct rte_mbuf mbufs[NB_PKTS];
	struct rte_mbuf **result_pkts;
	struct rte_mbuf *pkts[NB_PKTS];
	uint16_t i;
	uint64_t pkts_mask;
	struct pg_error *error = NULL;

	/* prepare the packets to send */
	for (i = 0; i < NB_PKTS; i++) {
		mbufs[i].udata64 = i;
		pkts[i] = &mbufs[i];
	}

	/* create a chain of a few nop brick with collectors on each sides */
	brick1 = pg_brick_new("nop", config, &error);
	g_assert(!error);
	brick2 = pg_brick_new("nop", config, &error);
	g_assert(!error);
	collect_west = pg_brick_new("collect", config, &error);
	g_assert(!error);
	g_assert(collect_west);
	collect_east = pg_brick_new("collect", config, &error);
	g_assert(!error);
	g_assert(collect_east);

	pg_brick_link(collect_west, brick1, &error);
	g_assert(!error);
	pg_brick_link(brick1, brick2, &error);
	g_assert(!error);
	pg_brick_link(brick2, collect_east, &error);
	g_assert(!error);

	/* send a pkts to the west from the eastest nope brick */
	pg_brick_burst_to_west(brick2, 0, pkts, NB_PKTS,
			       pg_mask_firsts(NB_PKTS), &error);
	g_assert(!error);

	/* check pkts counter */
	g_assert(pg_brick_pkts_count_get(collect_east, WEST_SIDE) == 0);
	g_assert(pg_brick_pkts_count_get(collect_east, EAST_SIDE) == 0);
	g_assert(pg_brick_pkts_count_get(collect_west, WEST_SIDE) == 3);
	g_assert(pg_brick_pkts_count_get(collect_west, EAST_SIDE) == 0);
	g_assert(pg_brick_pkts_count_get(brick1, WEST_SIDE) == 3);
	g_assert(pg_brick_pkts_count_get(brick1, EAST_SIDE) == 0);
	g_assert(pg_brick_pkts_count_get(brick2, WEST_SIDE) == 3);
	g_assert(pg_brick_pkts_count_get(brick2, EAST_SIDE) == 0);

	/* check no packet ended on the east */
	result_pkts = pg_brick_west_burst_get(collect_east, &pkts_mask, &error);
	g_assert(!error);
	g_assert(!pkts_mask);
	g_assert(!result_pkts);
	result_pkts = pg_brick_east_burst_get(collect_east, &pkts_mask, &error);
	g_assert(!error);
	g_assert(!pkts_mask);
	g_assert(!result_pkts);

	/* collect pkts on the west */
	result_pkts = pg_brick_west_burst_get(collect_west, &pkts_mask, &error);
	g_assert(!error);
	g_assert(!pkts_mask);
	g_assert(!result_pkts);

	result_pkts = pg_brick_east_burst_get(collect_west, &pkts_mask, &error);
	g_assert(!error);
	g_assert(pkts_mask == pg_mask_firsts(NB_PKTS));
	g_assert(result_pkts);
	for (i = 0; i < NB_PKTS; i++)
		g_assert(result_pkts[i]->udata64 == i);

	/* break the chain */
	pg_brick_unlink(brick1, &error);
	g_assert(!error);
	pg_brick_unlink(brick2, &error);
	g_assert(!error);
	pg_brick_unlink(collect_west, &error);
	g_assert(!error);
	pg_brick_unlink(collect_east, &error);
	g_assert(!error);

	/* destroy */
	pg_brick_decref(brick1, &error);
	g_assert(!error);
	pg_brick_decref(brick2, &error);
	g_assert(!error);
	pg_brick_decref(collect_west, &error);
	g_assert(!error);
	pg_brick_decref(collect_east, &error);
	g_assert(!error);

	pg_brick_config_free(config);
}