tests/src.ctf.fs/test_fail: test with both autodiscovery and explicit component insta...
authorSimon Marchi <simon.marchi@efficios.com>
Tue, 16 Aug 2022 13:38:26 +0000 (09:38 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Tue, 23 Aug 2022 16:06:16 +0000 (12:06 -0400)
Specifying a path to a failing trace like this:

  babeltrace2 mytrace

vs

  babeltrace2 -c src.ctf.fs -p 'inputs=["mytrace"]'

... exercises different code paths.  If the failure is due to bad
metadata, the first one will error out during the support-info query
phrase, whereas the second one will error out in the component
initialization.  I think it would be good to exercise both in the test
with failing traces.

Rename the test_fail function to test_fail_method, and add a parameter
indicating which method of passing the trace path to use (autodisc vs
component).  Add a new test_fail function that tries with both methods.

Change-Id: Ieb65504a773b0915946f8ef543a7d0930ca0a7d7

tests/plugins/src.ctf.fs/fail/test_fail

index 7713d5285fcd9deadd0f0fda2939cb2db1427226..0b9b5d929db1619f93162d2a58a5486a8f3b74f7 100755 (executable)
@@ -31,36 +31,60 @@ fail_trace_path() {
        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=[\"$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
        # Babeltrace CLI finishes gracefully by checking that the error stream
        # contains an error stack printed by the CLI.
        grep --silent "^CAUSED BY " "${stderr_file}"
-       ok $? "Trace ${name}: babeltrace produces an error stack"
+       ok $? "Trace ${name}: method $method: babeltrace produces an error stack"
 
        grep --silent "${expected_error_msg}" "${stderr_file}"
-       ok $? "Trace ${name}: babeltrace produces the expected error message"
+       ok $? "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 12
+plan_tests 24
 
 test_fail \
        "invalid-packet-size/trace" \
@@ -69,7 +93,7 @@ test_fail \
        "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."
This page took 0.031522 seconds and 5 git commands to generate.