tests: add test with incomplete packet header
authorSimon Marchi <simon.marchi@efficios.com>
Mon, 15 Aug 2022 18:02:39 +0000 (14:02 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Wed, 4 Sep 2024 19:05:14 +0000 (15:05 -0400)
During developement we hit a problem where src.ctf.fs's medium returned
less data than the `minSize` parameter, when reading a faulty trace.
The trace added in this patch reproduces the problem.  It consists of a
full packet, followed by a single byte.  When trying to read a second
packet, the ItemSeqIter instance would ask the medium for at least two
bytes, but the medium would return a buffer with a single byte (the data
available until the end of file).  The fix was to make the medium
generate an error in this case.

Change-Id: I9a79360b18091f517846ca2be94fbf10fb9af349
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/12753
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
tests/data/ctf-traces/1/fail/incomplete-packet-header/metadata [new file with mode: 0644]
tests/data/ctf-traces/1/fail/incomplete-packet-header/stream [new file with mode: 0644]
tests/plugins/src.ctf.fs/fail/test-fail.sh

diff --git a/tests/data/ctf-traces/1/fail/incomplete-packet-header/metadata b/tests/data/ctf-traces/1/fail/incomplete-packet-header/metadata
new file mode 100644 (file)
index 0000000..de600fd
--- /dev/null
@@ -0,0 +1,21 @@
+/* CTF 1.8 */
+
+trace {
+       major = 1;
+       minor = 8;
+       byte_order = be;
+};
+
+stream {
+       packet.context := struct {
+               integer { size = 16; } packet_size;
+               integer { size = 16; } meow_mix;
+       };
+};
+
+event {
+       name = coucou;
+       fields := struct {
+               string lel;
+       };
+};
diff --git a/tests/data/ctf-traces/1/fail/incomplete-packet-header/stream b/tests/data/ctf-traces/1/fail/incomplete-packet-header/stream
new file mode 100644 (file)
index 0000000..2a770b2
Binary files /dev/null and b/tests/data/ctf-traces/1/fail/incomplete-packet-header/stream differ
index 6967292512be4ee654d3d25a75b41c38f90e8095..5b90dcb90e08d6b2d1e88d30877e2be8d854b181 100755 (executable)
@@ -88,7 +88,7 @@ test_fail() {
        done
 }
 
-plan_tests 56
+plan_tests 64
 
 test_fail \
        "invalid-packet-size/trace" \
@@ -120,6 +120,12 @@ test_fail \
        "/dev/null" \
        "Variant field class's tag field class is not an enumeration field class: "
 
+test_fail \
+       "incomplete-packet-header" \
+       1 \
+       "/dev/null" \
+       "Insufficient data in file to fulfill request"
+
 test_fail \
        "meta-no-trace-cls-no-stream-cls" \
        2 \
This page took 0.02544 seconds and 4 git commands to generate.