tnt has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmo-e1d/+/27801
)
Change subject: RIFO: Add a test for bounds checking
......................................................................
RIFO: Add a test for bounds checking
This tests exactly one frame before and one frame after what
should be accepted to make sure those are rejected
Signed-off-by: Sylvain Munaut <tnt(a)246tNt.com>
Change-Id: I048e1b8c2b918f7ca4b4327b89bf04430a2838bc
---
M tests/rifo/rifo_test.c
M tests/rifo/rifo_test.ok
2 files changed, 89 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-e1d refs/changes/01/27801/1
diff --git a/tests/rifo/rifo_test.c b/tests/rifo/rifo_test.c
index 22ffa73..c9500d6 100644
--- a/tests/rifo/rifo_test.c
+++ b/tests/rifo/rifo_test.c
@@ -125,6 +125,46 @@
}
}
+static void bound_check(void)
+{
+ uint8_t frame[32];
+ struct frame_rifo rifo;
+ frame_rifo_init(&rifo);
+ rifo.next_out_fn = init_next_out_fn;
+
+ printf("\nTEST: %s, starting at FN: %u\n", __func__, init_next_out_fn);
+
+ // Put 1 frame and get it
+ memset(frame, 0xa5, sizeof(frame));
+ frame_rifo_in(&rifo, frame, init_next_out_fn);
+ frame_rifo_out(&rifo, frame);
+
+ // Put 11 frames at absolute frame numbers 791-801
+ const uint8_t in[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+ for (int i = 0; i < sizeof(in); i++) {
+ memset(frame, in[i], sizeof(frame));
+ rifo_in(&rifo, frame, init_next_out_fn + in[i] + 791);
+ }
+
+ // Add frame at start offset
+ memset(frame, 0xa5, sizeof(frame));
+ rifo_in(&rifo, frame, init_next_out_fn);
+
+ // Skip the first 790 frames
+ for (int i = 0; i < 790; i++) {
+ memset(frame, 0xff, sizeof(frame));
+ // Note: frame_rifo_out instead of rifo_out
+ // (just to ignore the output)
+ frame_rifo_out(&rifo, frame);
+ }
+
+ // Try to read the 10 real frames
+ for (int i = 0; i < 10; i++) {
+ memset(frame, 0xff, sizeof(frame));
+ rifo_out(&rifo, frame);
+ }
+}
+
void run_all_tests(void)
{
missing_frames(0);
@@ -132,6 +172,7 @@
reordered_in();
correct_order();
too_old_frames();
+ bound_check();
}
int main(int argc, char **argv)
diff --git a/tests/rifo/rifo_test.ok b/tests/rifo/rifo_test.ok
index cf1b778..c578724 100644
--- a/tests/rifo/rifo_test.ok
+++ b/tests/rifo/rifo_test.ok
@@ -99,6 +99,30 @@
RIFO_OUT(ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)=-1
RIFO_OUT(ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)=-1
+TEST: bound_check, starting at FN: 0
+RIFO_IN(0000000000000000000000000000000000000000000000000000000000000000, 791)=0
+RIFO_IN(0101010101010101010101010101010101010101010101010101010101010101, 792)=0
+RIFO_IN(0202020202020202020202020202020202020202020202020202020202020202, 793)=0
+RIFO_IN(0303030303030303030303030303030303030303030303030303030303030303, 794)=0
+RIFO_IN(0404040404040404040404040404040404040404040404040404040404040404, 795)=0
+RIFO_IN(0505050505050505050505050505050505050505050505050505050505050505, 796)=0
+RIFO_IN(0606060606060606060606060606060606060606060606060606060606060606, 797)=0
+RIFO_IN(0707070707070707070707070707070707070707070707070707070707070707, 798)=0
+RIFO_IN(0808080808080808080808080808080808080808080808080808080808080808, 799)=0
+RIFO_IN(0909090909090909090909090909090909090909090909090909090909090909, 800)=0
+RIFO_IN(0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a, 801)=-34
+RIFO_IN(a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5, 0)=-34
+RIFO_OUT(0000000000000000000000000000000000000000000000000000000000000000)=0
+RIFO_OUT(0101010101010101010101010101010101010101010101010101010101010101)=0
+RIFO_OUT(0202020202020202020202020202020202020202020202020202020202020202)=0
+RIFO_OUT(0303030303030303030303030303030303030303030303030303030303030303)=0
+RIFO_OUT(0404040404040404040404040404040404040404040404040404040404040404)=0
+RIFO_OUT(0505050505050505050505050505050505050505050505050505050505050505)=0
+RIFO_OUT(0606060606060606060606060606060606060606060606060606060606060606)=0
+RIFO_OUT(0707070707070707070707070707070707070707070707070707070707070707)=0
+RIFO_OUT(0808080808080808080808080808080808080808080808080808080808080808)=0
+RIFO_OUT(0909090909090909090909090909090909090909090909090909090909090909)=0
+
TEST: missing_frames, starting at FN: 4294967290
RIFO_IN(0000000000000000000000000000000000000000000000000000000000000000, 4294967290)=0
RIFO_IN(0202020202020202020202020202020202020202020202020202020202020202, 4294967292)=0
@@ -198,3 +222,27 @@
RIFO_OUT(ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)=-1
RIFO_OUT(ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)=-1
RIFO_OUT(ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)=-1
+
+TEST: bound_check, starting at FN: 4294967290
+RIFO_IN(0000000000000000000000000000000000000000000000000000000000000000, 785)=0
+RIFO_IN(0101010101010101010101010101010101010101010101010101010101010101, 786)=0
+RIFO_IN(0202020202020202020202020202020202020202020202020202020202020202, 787)=0
+RIFO_IN(0303030303030303030303030303030303030303030303030303030303030303, 788)=0
+RIFO_IN(0404040404040404040404040404040404040404040404040404040404040404, 789)=0
+RIFO_IN(0505050505050505050505050505050505050505050505050505050505050505, 790)=0
+RIFO_IN(0606060606060606060606060606060606060606060606060606060606060606, 791)=0
+RIFO_IN(0707070707070707070707070707070707070707070707070707070707070707, 792)=0
+RIFO_IN(0808080808080808080808080808080808080808080808080808080808080808, 793)=0
+RIFO_IN(0909090909090909090909090909090909090909090909090909090909090909, 794)=0
+RIFO_IN(0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a, 795)=-34
+RIFO_IN(a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5,
4294967290)=-34
+RIFO_OUT(0000000000000000000000000000000000000000000000000000000000000000)=0
+RIFO_OUT(0101010101010101010101010101010101010101010101010101010101010101)=0
+RIFO_OUT(0202020202020202020202020202020202020202020202020202020202020202)=0
+RIFO_OUT(0303030303030303030303030303030303030303030303030303030303030303)=0
+RIFO_OUT(0404040404040404040404040404040404040404040404040404040404040404)=0
+RIFO_OUT(0505050505050505050505050505050505050505050505050505050505050505)=0
+RIFO_OUT(0606060606060606060606060606060606060606060606060606060606060606)=0
+RIFO_OUT(0707070707070707070707070707070707070707070707070707070707070707)=0
+RIFO_OUT(0808080808080808080808080808080808080808080808080808080808080808)=0
+RIFO_OUT(0909090909090909090909090909090909090909090909090909090909090909)=0
--
To view, visit
https://gerrit.osmocom.org/c/osmo-e1d/+/27801
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-e1d
Gerrit-Branch: master
Gerrit-Change-Id: I048e1b8c2b918f7ca4b4327b89bf04430a2838bc
Gerrit-Change-Number: 27801
Gerrit-PatchSet: 1
Gerrit-Owner: tnt <tnt(a)246tNt.com>
Gerrit-MessageType: newchange