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.deSponsored-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