aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/llc/LlcTest.cpp80
1 files changed, 44 insertions, 36 deletions
diff --git a/tests/llc/LlcTest.cpp b/tests/llc/LlcTest.cpp
index 8163f34e..d6dd5fb6 100644
--- a/tests/llc/LlcTest.cpp
+++ b/tests/llc/LlcTest.cpp
@@ -34,6 +34,7 @@ extern "C" {
#include <osmocom/core/msgb.h>
#include <osmocom/core/talloc.h>
#include <osmocom/core/utils.h>
+#include <osmocom/core/timer.h>
#include <osmocom/vty/vty.h>
}
@@ -43,7 +44,7 @@ int16_t spoof_mnc = 0, spoof_mcc = 0;
bool spoof_mnc_3_digits = false;
static void enqueue_data(gprs_llc_queue *queue, const uint8_t *data, size_t len,
- gprs_llc_queue::MetaInfo *info = 0)
+ const struct timeval *expire_time)
{
struct timeval *tv;
uint8_t *msg_data;
@@ -54,11 +55,11 @@ static void enqueue_data(gprs_llc_queue *queue, const uint8_t *data, size_t len,
memcpy(msg_data, data, len);
- queue->enqueue(llc_msg, info);
+ queue->enqueue(llc_msg, expire_time);
}
static void dequeue_and_check(gprs_llc_queue *queue, const uint8_t *exp_data,
- size_t len, const gprs_llc_queue::MetaInfo *exp_info = 0)
+ size_t len, const gprs_llc_queue::MetaInfo *exp_info)
{
struct msgb *llc_msg;
const gprs_llc_queue::MetaInfo *info_res;
@@ -72,16 +73,17 @@ static void dequeue_and_check(gprs_llc_queue *queue, const uint8_t *exp_data,
if (!msgb_eq_data_print(llc_msg, exp_data, len))
fprintf(stderr, "check failed!\n");
- if (exp_info)
- OSMO_ASSERT(memcmp(exp_info, info_res, sizeof(*exp_info)) == 0);
-
+ if (exp_info) {
+ OSMO_ASSERT(memcmp(&exp_info->recv_time, &info_res->recv_time, sizeof(info_res->recv_time)) == 0);
+ OSMO_ASSERT(memcmp(&exp_info->expire_time, &info_res->expire_time, sizeof(info_res->expire_time)) == 0);
+ }
msgb_free(llc_msg);
}
static void enqueue_data(gprs_llc_queue *queue, const char *message,
- gprs_llc_queue::MetaInfo *info = 0)
+ const struct timeval *expire_time)
{
- enqueue_data(queue, (uint8_t *)(message), strlen(message), info);
+ enqueue_data(queue, (uint8_t *)(message), strlen(message), expire_time);
}
static void dequeue_and_check(gprs_llc_queue *queue, const char *exp_message,
@@ -94,6 +96,7 @@ static void dequeue_and_check(gprs_llc_queue *queue, const char *exp_message,
static void test_llc_queue()
{
gprs_llc_queue queue;
+ struct timeval expire_time = {0};
printf("=== start %s ===\n", __func__);
@@ -101,11 +104,11 @@ static void test_llc_queue()
OSMO_ASSERT(queue.size() == 0);
OSMO_ASSERT(queue.octets() == 0);
- enqueue_data(&queue, "LLC message");
+ enqueue_data(&queue, "LLC message", &expire_time);
OSMO_ASSERT(queue.size() == 1);
OSMO_ASSERT(queue.octets() == 11);
- enqueue_data(&queue, "other LLC message");
+ enqueue_data(&queue, "other LLC message", &expire_time);
OSMO_ASSERT(queue.size() == 2);
OSMO_ASSERT(queue.octets() == 28);
@@ -117,7 +120,7 @@ static void test_llc_queue()
OSMO_ASSERT(queue.size() == 0);
OSMO_ASSERT(queue.octets() == 0);
- enqueue_data(&queue, "LLC");
+ enqueue_data(&queue, "LLC", &expire_time);
OSMO_ASSERT(queue.size() == 1);
OSMO_ASSERT(queue.octets() == 3);
@@ -131,18 +134,8 @@ static void test_llc_queue()
static void test_llc_meta()
{
gprs_llc_queue queue;
- gprs_llc_queue::MetaInfo info1;
- gprs_llc_queue::MetaInfo info2;
-
- info1.recv_time.tv_sec = 123456777;
- info1.recv_time.tv_usec = 123456;
- info1.expire_time.tv_sec = 123456789;
- info1.expire_time.tv_usec = 987654;
-
- info2.recv_time.tv_sec = 987654321;
- info2.recv_time.tv_usec = 547352;
- info2.expire_time.tv_sec = 987654327;
- info2.expire_time.tv_usec = 867252;
+ gprs_llc_queue::MetaInfo info1 = {0};
+ gprs_llc_queue::MetaInfo info2 = {0};
printf("=== start %s ===\n", __func__);
@@ -150,8 +143,19 @@ static void test_llc_meta()
OSMO_ASSERT(queue.size() == 0);
OSMO_ASSERT(queue.octets() == 0);
- enqueue_data(&queue, "LLC message 1", &info1);
- enqueue_data(&queue, "LLC message 2", &info2);
+ info1.recv_time.tv_sec = 123456777;
+ info1.recv_time.tv_usec = 123456;
+ info1.expire_time.tv_sec = 123456789;
+ info1.expire_time.tv_usec = 987654;
+ osmo_gettimeofday_override_time = info1.recv_time;
+ enqueue_data(&queue, "LLC message 1", &info1.expire_time);
+
+ info2.recv_time.tv_sec = 987654321;
+ info2.recv_time.tv_usec = 547352;
+ info2.expire_time.tv_sec = 987654327;
+ info2.expire_time.tv_usec = 867252;
+ osmo_gettimeofday_override_time = info2.recv_time;
+ enqueue_data(&queue, "LLC message 2", &info2.expire_time);
dequeue_and_check(&queue, "LLC message 1", &info1);
dequeue_and_check(&queue, "LLC message 2", &info2);
@@ -167,27 +171,27 @@ static void test_llc_merge()
{
gprs_llc_queue queue1;
gprs_llc_queue queue2;
- gprs_llc_queue::MetaInfo info = {0};
+ struct timeval expire_time = {0};
printf("=== start %s ===\n", __func__);
queue1.init();
queue2.init();
- info.recv_time.tv_sec += 1;
- enqueue_data(&queue1, "*A*", &info);
+ osmo_gettimeofday_override_time.tv_sec += 1;
+ enqueue_data(&queue1, "*A*", &expire_time);
- info.recv_time.tv_sec += 1;
- enqueue_data(&queue1, "*B*", &info);
+ osmo_gettimeofday_override_time.tv_sec += 1;
+ enqueue_data(&queue1, "*B*", &expire_time);
- info.recv_time.tv_sec += 1;
- enqueue_data(&queue2, "*C*", &info);
+ osmo_gettimeofday_override_time.tv_sec += 1;
+ enqueue_data(&queue2, "*C*", &expire_time);
- info.recv_time.tv_sec += 1;
- enqueue_data(&queue1, "*D*", &info);
+ osmo_gettimeofday_override_time.tv_sec += 1;
+ enqueue_data(&queue1, "*D*", &expire_time);
- info.recv_time.tv_sec += 1;
- enqueue_data(&queue2, "*E*", &info);
+ osmo_gettimeofday_override_time.tv_sec += 1;
+ enqueue_data(&queue2, "*E*", &expire_time);
OSMO_ASSERT(queue1.size() == 3);
OSMO_ASSERT(queue1.octets() == 9);
@@ -231,6 +235,10 @@ int main(int argc, char **argv)
vty_init(&pcu_vty_info);
pcu_vty_init();
+ osmo_gettimeofday_override = true;
+ osmo_gettimeofday_override_time.tv_sec = 123456777;
+ osmo_gettimeofday_override_time.tv_usec = 123456;
+
test_llc_queue();
test_llc_meta();
test_llc_merge();