echo "$BT_CTF_TRACES_PATH/$ctf_version/fail/$name"
}
-# Parameters: <trace-name> <ctf-version> <expected-stdout-file> <expected-error-msg>
-test_fail() {
+# Parameters: <trace-name> <ctf-version> <method> <expected-stdout-file> <expected-error-msg>
+#
+# <method> can be either "autodisc" or "component". "autodisc" passes the trace
+# path directly to babeltrace2, making it use the auto-discovery mechanism.
+# "component" instantiates a `src.ctf.fs` component explicitly.
+test_fail_method() {
local name="$1"
- local ctf_version=$2
- local expected_stdout_file="$3"
- local expected_error_msg="$4"
+ local ctf_version="$2"
+ local method="$3"
+ local expected_stdout_file="$4"
+ local expected_error_msg="$5"
local trace_path
trace_path=$(fail_trace_path "$name" "$ctf_version")
- bt_cli "${stdout_file}" "${stderr_file}" \
- -c sink.text.details -p "with-trace-name=no,with-stream-name=no" "$trace_path"
- isnt $? 0 "Trace ${name}: babeltrace exits with an error"
+ if [ "$method" = "autodisc" ]; then
+ bt_cli "${stdout_file}" "${stderr_file}" \
+ -c sink.text.details -p "with-trace-name=no,with-stream-name=no" "$trace_path"
+ elif [ "$method" = "component" ]; then
+ bt_cli "${stdout_file}" "${stderr_file}" \
+ -c sink.text.details -p "with-trace-name=no,with-stream-name=no" -c src.ctf.fs -p "inputs=[\"$(bt_maybe_cygpath_m "$trace_path")\"]"
+ else
+ echo "invalid method: $method"
+ exit 1
+ fi
+ isnt $? 0 "Trace ${name}: method $method: babeltrace exits with an error"
bt_diff "${expected_stdout_file}" "${stdout_file}"
- ok $? "Trace ${name}: babeltrace produces the expected stdout"
+ ok $? "Trace ${name}: method $method: babeltrace produces the expected stdout"
# The expected error message will likely be found in the error stream
# even if Babeltrace aborts (e.g. hits an assert). Check that the
bt_grep_ok \
"^CAUSED BY " \
"$stderr_file" \
- "Trace $name: babeltrace produces an error stack"
+ "Trace ${name}: method $method: babeltrace produces an error stack"
bt_grep_ok \
"$expected_error_msg" \
"$stderr_file" \
- "Trace $name: babeltrace produces the expected error message"
+ "Trace ${name}: method $method: babeltrace produces the expected error message"
}
+# Parameters: <trace-name> <ctf-version> <expected-stdout-file> <expected-error-msg>
+test_fail() {
+ local name="$1"
+ local ctf_version="$2"
+ local expected_stdout_file="$3"
+ local expected_error_msg="$4"
+ for method in autodisc component; do
+ test_fail_method "$name" "$ctf_version" "$method" \
+ "$expected_stdout_file" "$expected_error_msg"
+ done
+}
-plan_tests 20
+plan_tests 40
test_fail \
"invalid-packet-size/trace" \
"Failed to index CTF stream file '.*channel0_3'"
test_fail \
- "valid-events-then-invalid-events" \
+ "valid-events-then-invalid-events/trace" \
1 \
"${data_dir}/valid-events-then-invalid-events.expect" \
"At 24 bits: no event record class exists with ID 255 within the data stream class with ID 0."