aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatias Elo <matias.elo@nokia.com>2024-04-26 14:44:52 +0300
committerMatias Elo <matias.elo@nokia.com>2024-04-30 18:22:33 +0300
commitdc674f133b7293b365c85e2770788506ea665fb4 (patch)
tree4a9384d2ee75ae96ae5af5c95fc8aeef868afcd6
parentd550a3d0a39782ff2c78b37c8fb8f09a762bf280 (diff)
validation: packet: improve odp_packet_reset() testing coverage
Use new odp_packet_reset_max_len() function and test that user area content is maintained. Signed-off-by: Matias Elo <matias.elo@nokia.com> Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com>
-rw-r--r--test/validation/api/packet/packet.c40
1 files changed, 33 insertions, 7 deletions
diff --git a/test/validation/api/packet/packet.c b/test/validation/api/packet/packet.c
index 86bde020c..33d63f618 100644
--- a/test/validation/api/packet/packet.c
+++ b/test/validation/api/packet/packet.c
@@ -1,11 +1,9 @@
/* SPDX-License-Identifier: BSD-3-Clause
* Copyright (c) 2014-2018 Linaro Limited
- * Copyright (c) 2019-2023 Nokia
+ * Copyright (c) 2019-2024 Nokia
* Copyright (c) 2020 Marvell
*/
-#include <stdlib.h>
-
#include <odp_api.h>
#include <odp_cunit_common.h>
#include <test_packet_ipv4.h>
@@ -14,6 +12,9 @@
#include <odp/helper/odph_api.h>
+#include <stdint.h>
+#include <stdlib.h>
+
/* Reserve some tailroom for tests */
#define TAILROOM_RESERVE 4
/* Number of packets in the test packet pool */
@@ -906,14 +907,24 @@ static void packet_test_length(void)
static void packet_test_reset(void)
{
- uint32_t len, headroom;
+ uint32_t len, max_len, headroom;
+ uint32_t uarea_size = default_param.pkt.uarea_size;
uintptr_t ptr_len;
void *data, *new_data, *tail, *new_tail;
+ struct udata_struct *udat;
odp_packet_t pkt;
pkt = odp_packet_alloc(default_pool, packet_len);
CU_ASSERT_FATAL(pkt != ODP_PACKET_INVALID);
+ if (uarea_size) {
+ udat = odp_packet_user_area(pkt);
+
+ CU_ASSERT_FATAL(udat != NULL);
+ CU_ASSERT_FATAL(odp_packet_user_area_size(pkt) >= uarea_size);
+ memcpy(udat, &test_packet_udata, uarea_size);
+ }
+
len = odp_packet_len(pkt);
CU_ASSERT(len == packet_len);
@@ -944,8 +955,10 @@ static void packet_test_reset(void)
ptr_len = (uintptr_t)odp_packet_data(pkt) -
(uintptr_t)odp_packet_head(pkt);
CU_ASSERT(ptr_len == (headroom + 1));
- CU_ASSERT(odp_packet_reset(pkt, len) == 0);
- CU_ASSERT(odp_packet_len(pkt) == len);
+ max_len = odp_packet_reset_max_len(pkt);
+ CU_ASSERT(max_len >= len);
+ CU_ASSERT(odp_packet_reset(pkt, max_len) == 0);
+ CU_ASSERT(odp_packet_len(pkt) == max_len);
CU_ASSERT(odp_packet_headroom(pkt) == headroom);
ptr_len = (uintptr_t)odp_packet_data(pkt) -
(uintptr_t)odp_packet_head(pkt);
@@ -954,7 +967,7 @@ static void packet_test_reset(void)
tail = odp_packet_tail(pkt);
new_tail = odp_packet_pull_tail(pkt, 1);
- CU_ASSERT(odp_packet_len(pkt) == len - 1);
+ CU_ASSERT(odp_packet_len(pkt) == max_len - 1);
CU_ASSERT((uintptr_t)new_tail == ((uintptr_t)tail - 1));
CU_ASSERT(odp_packet_reset(pkt, len) == 0);
CU_ASSERT(odp_packet_len(pkt) == len);
@@ -971,6 +984,19 @@ static void packet_test_reset(void)
CU_ASSERT(odp_packet_reset(pkt, len) == 0);
CU_ASSERT(odp_packet_len(pkt) == len);
+ if (odp_packet_reset_max_len(pkt) < UINT32_MAX) {
+ CU_ASSERT(odp_packet_reset(pkt, odp_packet_reset_max_len(pkt) + 1) < 0);
+ CU_ASSERT(odp_packet_len(pkt) == len);
+ }
+
+ if (uarea_size) {
+ udat = odp_packet_user_area(pkt);
+
+ CU_ASSERT_FATAL(udat != NULL);
+ CU_ASSERT_FATAL(odp_packet_user_area_size(pkt) >= uarea_size);
+ CU_ASSERT(memcmp(udat, &test_packet_udata, uarea_size) == 0);
+ }
+
odp_packet_free(pkt);
}