aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2022-04-04 16:03:25 +0200
committerpespin <pespin@sysmocom.de>2022-04-05 11:16:17 +0000
commit2f94b77d8e5c0601e97733a6de5cc7a42d7d6b4a (patch)
tree90464707cea7f17e54805fc379fe5303734d3c0a /tests
parent6b1e9515c9e82f8e99128a4de051889e82e25892 (diff)
tests/llc: Add test_llc_meta_pdu_life_expire
Diffstat (limited to 'tests')
-rw-r--r--tests/llc/LlcTest.cpp41
-rw-r--r--tests/llc/LlcTest.err1
-rw-r--r--tests/llc/LlcTest.ok2
3 files changed, 44 insertions, 0 deletions
diff --git a/tests/llc/LlcTest.cpp b/tests/llc/LlcTest.cpp
index dd4c80ca..3dabeed3 100644
--- a/tests/llc/LlcTest.cpp
+++ b/tests/llc/LlcTest.cpp
@@ -184,6 +184,46 @@ static void test_llc_meta()
TALLOC_FREE(the_pcu);
}
+/* Test PDU lifetime is taken into account and packet is dropped if dequeued too
+ * late */
+static void test_llc_meta_pdu_life_expire()
+{
+ gprs_llc_queue *queue = prepare_queue();
+ MetaInfo info1 = {0};
+ MetaInfo info2 = {0};
+
+ printf("=== start %s ===\n", __func__);
+
+ OSMO_ASSERT(llc_queue_size(queue) == 0);
+ OSMO_ASSERT(llc_queue_octets(queue) == 0);
+
+ info1.recv_time.tv_sec = 123456777;
+ info1.recv_time.tv_nsec = 123456000;
+ info1.expire_time.tv_sec = 123456789;
+ info1.expire_time.tv_nsec = 987654000;
+ *clk_mono_override_time = info1.recv_time;
+ enqueue_data(queue, "LLC message 1", &info1.expire_time);
+
+ info2.recv_time.tv_sec = 123458000;
+ info2.recv_time.tv_nsec = 547352000;
+ info2.expire_time.tv_sec = 123458006;
+ info2.expire_time.tv_nsec = 867252000;
+ *clk_mono_override_time = info2.recv_time;
+ enqueue_data(queue, "LLC message 2", &info2.expire_time);
+
+ clk_mono_override_time->tv_sec = info1.expire_time.tv_sec + 1;
+ clk_mono_override_time->tv_nsec = info1.expire_time.tv_nsec;
+
+ dequeue_and_check(queue, "LLC message 2", &info2);
+
+ OSMO_ASSERT(llc_queue_size(queue) == 0);
+ OSMO_ASSERT(llc_queue_octets(queue) == 0);
+ llc_queue_clear(queue, NULL);
+
+ printf("=== end %s ===\n", __func__);
+ TALLOC_FREE(the_pcu);
+}
+
static void test_llc_merge()
{
gprs_llc_queue *queue1 = prepare_queue();
@@ -258,6 +298,7 @@ int main(int argc, char **argv)
test_llc_queue();
test_llc_meta();
+ test_llc_meta_pdu_life_expire();
test_llc_merge();
if (getenv("TALLOC_REPORT_FULL"))
diff --git a/tests/llc/LlcTest.err b/tests/llc/LlcTest.err
index f2c5cab8..32ca3913 100644
--- a/tests/llc/LlcTest.err
+++ b/tests/llc/LlcTest.err
@@ -2,6 +2,7 @@ dequeued msg, length 11 (expected 11), data 4c 4c 43 20 6d 65 73 73 61 67 65
dequeued msg, length 17 (expected 17), data 6f 74 68 65 72 20 4c 4c 43 20 6d 65 73 73 61 67 65
dequeued msg, length 13 (expected 13), data 4c 4c 43 20 6d 65 73 73 61 67 65 20 31
dequeued msg, length 13 (expected 13), data 4c 4c 43 20 6d 65 73 73 61 67 65 20 32
+dequeued msg, length 13 (expected 13), data 4c 4c 43 20 6d 65 73 73 61 67 65 20 32
dequeued msg, length 3 (expected 3), data 2a 41 2a
dequeued msg, length 3 (expected 3), data 2a 42 2a
dequeued msg, length 3 (expected 3), data 2a 43 2a
diff --git a/tests/llc/LlcTest.ok b/tests/llc/LlcTest.ok
index 311f37cd..3db88d07 100644
--- a/tests/llc/LlcTest.ok
+++ b/tests/llc/LlcTest.ok
@@ -2,5 +2,7 @@
=== end test_llc_queue ===
=== start test_llc_meta ===
=== end test_llc_meta ===
+=== start test_llc_meta_pdu_life_expire ===
+=== end test_llc_meta_pdu_life_expire ===
=== start test_llc_merge ===
=== end test_llc_merge ===