Tests: MI: {add, list, remove}-trigger
[lttng-tools.git] / tests / regression / tools / trigger / test_add_trigger_cli
index a55406c1a80760c735c3b6208fbdca7214467b55..cc873bef3aaae48f21b2c249819678fae574b404 100755 (executable)
@@ -23,7 +23,7 @@ TESTDIR="$CURDIR/../../.."
 # shellcheck source=../../../utils/utils.sh
 source "$TESTDIR/utils/utils.sh"
 
 # shellcheck source=../../../utils/utils.sh
 source "$TESTDIR/utils/utils.sh"
 
-plan_tests 282
+plan_tests 286
 
 FULL_LTTNG_BIN="${TESTDIR}/../src/bin/lttng/${LTTNG_BIN}"
 
 
 FULL_LTTNG_BIN="${TESTDIR}/../src/bin/lttng/${LTTNG_BIN}"
 
@@ -48,8 +48,8 @@ function test_success ()
        diag "${FULL_LTTNG_BIN} add-trigger $*"
        set -x
        "${FULL_LTTNG_BIN}" add-trigger "$@" > "${tmp_stdout}" 2> "${tmp_stderr}"
        diag "${FULL_LTTNG_BIN} add-trigger $*"
        set -x
        "${FULL_LTTNG_BIN}" add-trigger "$@" > "${tmp_stdout}" 2> "${tmp_stderr}"
-       set +x
        ok $? "${test_name}: exit code is 0"
        ok $? "${test_name}: exit code is 0"
+       set +x
 
        diff -u "${tmp_stdout}" <(echo "Trigger registered successfully.")
        ok $? "${test_name}: expected stdout"
 
        diff -u "${tmp_stdout}" <(echo "Trigger registered successfully.")
        ok $? "${test_name}: expected stdout"
@@ -76,6 +76,78 @@ function test_failure ()
        ok $? "${test_name}: expected stderr"
 }
 
        ok $? "${test_name}: expected stderr"
 }
 
+function test_mi ()
+{
+       local tmp_stdout_raw
+       local tmp_expected_stdout
+
+       # Concretely the code used to serialize a trigger object is the same as
+       # the one used by the list command. Here we simply validate that a
+       # simple trigger is correctly generated.
+
+       tmp_stdout_raw=$(mktemp --tmpdir -t "tmp.${FUNCNAME[0]}_stdout.XXXXXX")
+       tmp_expected_stdout=$(mktemp --tmpdir -t "tmp.${FUNCNAME[0]}_expected_stdout.XXXXXX")
+
+       diag "${FULL_LTTNG_BIN} --mi=xml add-trigger"
+
+       cat > "${tmp_expected_stdout}" <<- EOF
+       <?xml version="1.0" encoding="UTF-8"?>
+       <command xmlns="https://lttng.org/xml/ns/lttng-mi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://lttng.org/xml/ns/lttng-mi https://lttng.org/xml/schemas/lttng-mi/4/lttng-mi-4.0.xsd" schemaVersion="4.0">
+         <name>add-trigger</name>
+         <output>
+           <trigger>
+             <name>mi_hohoho</name>
+             <owner_uid>${UID}</owner_uid>
+             <condition>
+               <condition_event_rule_matches>
+                 <event_rule>
+                   <event_rule_user_tracepoint>
+                     <name_pattern>some-event-id</name_pattern>
+                   </event_rule_user_tracepoint>
+                 </event_rule>
+                 <capture_descriptors/>
+               </condition_event_rule_matches>
+             </condition>
+             <action>
+               <action_list>
+                 <action>
+                   <action_notify>
+                     <rate_policy>
+                       <rate_policy_every_n>
+                         <interval>1</interval>
+                       </rate_policy_every_n>
+                     </rate_policy>
+                   </action_notify>
+                 </action>
+               </action_list>
+             </action>
+           </trigger>
+         </output>
+         <success>true</success>
+       </command>
+       EOF
+
+       "${FULL_LTTNG_BIN}" --mi xml add-trigger --name mi_hohoho \
+               --condition event-rule-matches --name=some-event-id --type=user \
+               --action notify > "${tmp_stdout_raw}" 2> "${tmp_stderr}"
+
+       ok $? "add-trigger mi: exit code is 0"
+
+       # Pretty-fy xml before further test.
+       $XML_PRETTY_BIN < "${tmp_stdout_raw}" > "${tmp_stdout}"
+
+       $XML_VALIDATE_BIN "${MI_XSD_PATH}" "${tmp_stdout}"
+       ok $? "add-trigger mi is valid"
+
+       diff -u "${tmp_expected_stdout}" "${tmp_stdout}"
+       ok $? "mi: expected stdout"
+
+       diff -u "${tmp_stderr}" /dev/null
+       ok $? "mi: expected stderr"
+
+       rm -f "${tmp_stdout_raw}"
+}
+
 # top-level options
 test_success "explicit name" \
        --name hohoho \
 # top-level options
 test_success "explicit name" \
        --name hohoho \
@@ -501,6 +573,8 @@ test_failure "snapshot-session action, --name with-net-url-instead-of-path" \
        --condition event-rule-matches --type=user \
        --action snapshot-session ze-session --name hallo --path net://8.8.8.8/
 
        --condition event-rule-matches --type=user \
        --action snapshot-session ze-session --name hallo --path net://8.8.8.8/
 
+test_mi
+
 # Cleanup
 stop_lttng_sessiond_notap
 rm -f "${tmp_stdout}"
 # Cleanup
 stop_lttng_sessiond_notap
 rm -f "${tmp_stdout}"
This page took 0.024674 seconds and 4 git commands to generate.