aboutsummaryrefslogtreecommitdiff
path: root/test/validation
diff options
context:
space:
mode:
authorMatias Elo <matias.elo@nokia.com>2021-11-10 16:28:27 +0200
committerMatias Elo <matias.elo@nokia.com>2021-11-11 11:29:47 +0200
commit4a5afbd09806346370310894584c4ed74b3127c4 (patch)
treefc3b2b1952caa53c2cd20aaf576a83270f8e5c89 /test/validation
parent17198e7402ddc1b3cd68cb41f685153340490ebb (diff)
validation: packet: add test for allocating pool_capa.pkt.max_len packets
Add new test for allocating maximum length packets (pool_capa.pkt.max_len). Signed-off-by: Matias Elo <matias.elo@nokia.com> Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com>
Diffstat (limited to 'test/validation')
-rw-r--r--test/validation/api/packet/packet.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/test/validation/api/packet/packet.c b/test/validation/api/packet/packet.c
index 125355442..976888328 100644
--- a/test/validation/api/packet/packet.c
+++ b/test/validation/api/packet/packet.c
@@ -36,6 +36,9 @@ ODP_STATIC_ASSERT(PACKET_POOL_NUM_SEG > 1 &&
/* Number of preallocated packet vector test packets */
#define PKT_VEC_PACKET_NUM PKT_VEC_NUM
+/* Maximum packet length when 'pool_capa.pkt.max_len == 0' */
+#define DEFAULT_MAX_LEN (32 * 1024)
+
static odp_pool_capability_t pool_capa;
static odp_pool_param_t default_param;
static odp_pool_t default_pool;
@@ -585,6 +588,54 @@ static void packet_test_alloc_segmented(void)
CU_ASSERT(odp_pool_destroy(pool) == 0);
}
+static void packet_test_alloc_max_len(void)
+{
+ const int num = 5;
+ odp_packet_t pkts[num];
+ odp_packet_t pkt;
+ uint32_t max_len;
+ odp_pool_t pool;
+ odp_pool_param_t params;
+ int ret, i, num_alloc;
+
+ max_len = pool_capa.pkt.max_len;
+ if (!max_len)
+ max_len = DEFAULT_MAX_LEN;
+
+ odp_pool_param_init(&params);
+ params.type = ODP_POOL_PACKET;
+ params.pkt.len = max_len;
+ params.pkt.num = num;
+
+ pool = odp_pool_create("pool_alloc_max_len", &params);
+ CU_ASSERT_FATAL(pool != ODP_POOL_INVALID);
+
+ pkt = odp_packet_alloc(pool, max_len);
+ CU_ASSERT_FATAL(pkt != ODP_PACKET_INVALID);
+ CU_ASSERT(odp_packet_len(pkt) == max_len);
+
+ odp_packet_free(pkt);
+
+ num_alloc = 0;
+ for (i = 0; i < num; i++) {
+ ret = odp_packet_alloc_multi(pool, max_len,
+ &pkts[num_alloc], num - num_alloc);
+ CU_ASSERT_FATAL(ret >= 0);
+ num_alloc += ret;
+ if (num_alloc >= num)
+ break;
+ }
+
+ CU_ASSERT(num_alloc == num);
+
+ for (i = 0; i < num_alloc; i++)
+ CU_ASSERT(odp_packet_len(pkts[i]) == max_len);
+
+ odp_packet_free_multi(pkts, num_alloc);
+
+ CU_ASSERT(odp_pool_destroy(pool) == 0);
+}
+
static void packet_test_alloc_align(void)
{
odp_pool_t pool;
@@ -4141,6 +4192,7 @@ odp_testinfo_t packet_suite[] = {
ODP_TEST_INFO(packet_test_alloc_free_multi),
ODP_TEST_INFO(packet_test_free_sp),
ODP_TEST_INFO(packet_test_alloc_segmented),
+ ODP_TEST_INFO(packet_test_alloc_max_len),
ODP_TEST_INFO(packet_test_alloc_align),
ODP_TEST_INFO(packet_test_basic_metadata),
ODP_TEST_INFO(packet_test_debug),