aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAshwin Sekhar T K <asekhar@marvell.com>2022-01-03 18:32:16 +0530
committerMatias Elo <matias.elo@nokia.com>2022-01-07 08:45:51 +0200
commit39aabf1929d4617bb128e601b4530d6c2c3ad947 (patch)
tree828d7e6d44dc45d5586811073891b080e22d727e
parentc4e248f41e8f7a1cdc6414296878a8cc27dc04cf (diff)
validation: packet: add new test for user area testing
Add a new test which creates multiple pools with different user area sizes and validates that memset of the user area does not affect the packet validity. Signed-off-by: Ashwin Sekhar T K <asekhar@marvell.com> Reviewed-by: Matias Elo <matias.elo@nokia.com>
-rw-r--r--test/validation/api/packet/packet.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/test/validation/api/packet/packet.c b/test/validation/api/packet/packet.c
index 4a9b7cdc5..23e36d773 100644
--- a/test/validation/api/packet/packet.c
+++ b/test/validation/api/packet/packet.c
@@ -3271,6 +3271,52 @@ static void packet_test_max_pools(void)
CU_ASSERT(odp_pool_destroy(pool[i]) == 0);
}
+static void packet_test_user_area(void)
+{
+ odp_pool_param_t param;
+ odp_packet_t pkt;
+ odp_pool_t pool;
+
+ memcpy(&param, &default_param, sizeof(odp_pool_param_t));
+
+ param.pkt.uarea_size = 0;
+ pool = odp_pool_create("zero_uarea", &param);
+ CU_ASSERT_FATAL(pool != ODP_POOL_INVALID);
+ pkt = odp_packet_alloc(pool, param.pkt.len);
+ CU_ASSERT_FATAL(pkt != ODP_PACKET_INVALID);
+ CU_ASSERT(odp_packet_user_area(pkt) == NULL);
+ CU_ASSERT(odp_packet_user_area_size(pkt) == 0);
+ odp_packet_free(pkt);
+ CU_ASSERT(odp_pool_destroy(pool) == 0);
+
+ param.pkt.uarea_size = 1;
+ pool = odp_pool_create("one_uarea", &param);
+ CU_ASSERT_FATAL(pool != ODP_POOL_INVALID);
+ pkt = odp_packet_alloc(pool, param.pkt.len);
+ CU_ASSERT_FATAL(pkt != ODP_PACKET_INVALID);
+ CU_ASSERT_FATAL(odp_packet_user_area(pkt) != NULL);
+ CU_ASSERT(odp_packet_user_area_size(pkt) == 1);
+ *(char *)odp_packet_user_area(pkt) = 0;
+ CU_ASSERT_FATAL(odp_packet_is_valid(pkt) == 1);
+ odp_packet_free(pkt);
+ CU_ASSERT(odp_pool_destroy(pool) == 0);
+
+ if (pool_capa.pkt.max_uarea_size)
+ param.pkt.uarea_size = pool_capa.pkt.max_uarea_size;
+ else
+ param.pkt.uarea_size = 512;
+ pool = odp_pool_create("max_uarea", &param);
+ CU_ASSERT_FATAL(pool != ODP_POOL_INVALID);
+ pkt = odp_packet_alloc(pool, param.pkt.len);
+ CU_ASSERT_FATAL(pkt != ODP_PACKET_INVALID);
+ CU_ASSERT_FATAL(odp_packet_user_area(pkt) != NULL);
+ CU_ASSERT(odp_packet_user_area_size(pkt) == param.pkt.uarea_size);
+ memset(odp_packet_user_area(pkt), 0, param.pkt.uarea_size);
+ CU_ASSERT_FATAL(odp_packet_is_valid(pkt) == 1);
+ odp_packet_free(pkt);
+ CU_ASSERT(odp_pool_destroy(pool) == 0);
+}
+
static int packet_parse_suite_init(void)
{
int num_test_pkt, i;
@@ -4260,6 +4306,7 @@ odp_testinfo_t packet_suite[] = {
ODP_TEST_INFO(packet_test_offset),
ODP_TEST_INFO(packet_test_ref),
ODP_TEST_INFO(packet_test_max_pools),
+ ODP_TEST_INFO(packet_test_user_area),
ODP_TEST_INFO_NULL,
};