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>
--- /dev/null
+/* 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;
+ };
+};
done
}
-plan_tests 56
+plan_tests 64
test_fail \
"invalid-packet-size/trace" \
"/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 \