[PATCH 5/6] msgb/test: Add tests for msgb_resize_area and msgb_copy

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.

Jacob Erlbeck jerlbeck at sysmocom.de
Tue Nov 17 09:37:48 UTC 2015


Sponsored-by: On-Waves ehf
---
 tests/msgb/msgb_test.c  | 53 +++++++++++++++++++++++++++++++++++++++++++++++--
 tests/msgb/msgb_test.ok |  2 ++
 2 files changed, 53 insertions(+), 2 deletions(-)

diff --git a/tests/msgb/msgb_test.c b/tests/msgb/msgb_test.c
index 412e8bb..08d9857 100644
--- a/tests/msgb/msgb_test.c
+++ b/tests/msgb/msgb_test.c
@@ -87,6 +87,7 @@ static void test_msgb_api()
 	msg->l3h = msg->head - 1;
 	printf("Buffer: %s\n", msgb_hexdump(msg));
 
+
 #if 0
 extern void msgb_reset(struct msgb *m);
 #define msgb_l1(m)	((void *)(MSGB_CHECK2(m)->l1h))
@@ -97,15 +98,61 @@ static inline unsigned int msgb_l1len(const struct msgb *msgb)
 	static inline unsigned char *msgb_get(struct msgb *msgb, unsigned int len)
 	static inline unsigned char *msgb_push(struct msgb *msgb, unsigned int len)
 	static inline unsigned char *msgb_pull(struct msgb *msgb, unsigned int len)
-	
+
 	static inline unsigned char *msgb_pull_to_l3(struct msgb *msg)
 	static inline int msgb_trim(struct msgb *msg, int len)
 	static inline int msgb_l3trim(struct msgb *msg, int l3len)
 	uint8_t *msgb_data(const struct msgb *msg);
-	return;
+return;
 #endif
 }
 
+static void test_msgb_copy()
+{
+	struct msgb *msg = msgb_alloc_headroom(4096, 128, "data");
+	struct msgb *msg2;
+
+	printf("Testing msgb_copy\n");
+
+	msg->l1h = msgb_put(msg, 20);
+	msg->l2h = msgb_put(msg, 20);
+	msg->l3h = msgb_put(msg, 20);
+	msg->l4h = msgb_put(msg, 20);
+
+	msg2 = msgb_copy(msg, "copy");
+
+	OSMO_ASSERT(msgb_length(msg) == msgb_length(msg2));
+	OSMO_ASSERT(msgb_l1len(msg) == msgb_l1len(msg2));
+	OSMO_ASSERT(msgb_l2len(msg) == msgb_l2len(msg2));
+	OSMO_ASSERT(msgb_l3len(msg) == msgb_l3len(msg2));
+	OSMO_ASSERT(msg->tail - msg->l4h == msg2->tail - msg2->l4h);
+}
+
+static void test_msgb_resize_area()
+{
+	struct msgb *msg = msgb_alloc_headroom(4096, 128, "data");
+	int rc;
+
+	printf("Testing msgb_resize_area\n");
+
+	msg->l1h = msgb_put(msg, 20);
+	msg->l2h = msgb_put(msg, 20);
+	msg->l3h = msgb_put(msg, 20);
+	msg->l4h = msgb_put(msg, 20);
+
+	rc = msgb_resize_area(msg, msg->l2h, 20, 20 + 30);
+
+	OSMO_ASSERT(rc >= 0);
+	OSMO_ASSERT(msgb_length(msg) == 80 + 30);
+	OSMO_ASSERT(msgb_l1len(msg) == 80 + 30);
+	OSMO_ASSERT(msgb_l2len(msg) == 60 + 30);
+	OSMO_ASSERT(msgb_l3len(msg) == 40);
+	OSMO_ASSERT(msg->tail - msg->l4h == 20);
+
+	rc = msgb_resize_area(msg, msg->l2h, 50, 8000);
+	OSMO_ASSERT(rc == -1);
+}
+
 static struct log_info info = {};
 
 int main(int argc, char **argv)
@@ -113,6 +160,8 @@ int main(int argc, char **argv)
 	osmo_init_logging(&info);
 
 	test_msgb_api();
+	test_msgb_copy();
+	test_msgb_resize_area();
 
 	printf("Success.\n");
 
diff --git a/tests/msgb/msgb_test.ok b/tests/msgb/msgb_test.ok
index f8de0cd..3ace5be 100644
--- a/tests/msgb/msgb_test.ok
+++ b/tests/msgb/msgb_test.ok
@@ -18,4 +18,6 @@ Test msgb_hexdump
 Buffer: (L1=data-124) 00 00 00 00 00 00 00 00 [L2]> 00 00 00 00 [L3]> (L4=tail+4) 
 Buffer: (L1=data-124) 00 00 00 00 00 00 00 00 [L2]> (L3+8) 00 00 00 00 (L4=tail+4) 
 Buffer: (L1=data-124) 00 00 00 00 00 00 00 00 [L2]> 00 00 00 00 (L3 out of range) (L4=tail+4) 
+Testing msgb_copy
+Testing msgb_resize_area
 Success.
-- 
1.9.1




More information about the OpenBSC mailing list