Clean-up: modernize pretty_xml.cpp
[lttng-tools.git] / tests / regression / tools / trigger / test_remove_trigger_cli
index 5f3dffc4e1471855c4596437a16748bf96940908..ded80bb9b06e0d3512facddb5fafc53cc070a3e1 100755 (executable)
@@ -23,13 +23,13 @@ TESTDIR="$CURDIR/../../.."
 # shellcheck source=../../../utils/utils.sh
 source "$TESTDIR/utils/utils.sh"
 
-plan_tests 17
+plan_tests 22
 
 FULL_LTTNG_BIN="${TESTDIR}/../src/bin/lttng/${LTTNG_BIN}"
 
-tmp_stdout=$(mktemp -t test_list_triggers_cli_stdout.XXXXXX)
-tmp_stderr=$(mktemp -t test_list_triggers_cli_stderr.XXXXXX)
-tmp_expected_stdout=$(mktemp -t test_list_triggers_cli_expected_stdout.XXXXXX)
+tmp_stdout=$(mktemp -t test_remove_triggers_cli_stdout.XXXXXX)
+tmp_stderr=$(mktemp -t test_remove_triggers_cli_stderr.XXXXXX)
+tmp_expected_stdout=$(mktemp -t test_remove_triggers_cli_expected_stdout.XXXXXX)
 
 uid=$(id --user)
 gid=$(id --group)
@@ -64,26 +64,102 @@ function remove_trigger ()
        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 on removal for MI.
+
+       tmp_stdout_raw=$(mktemp -t "tmp.${FUNCNAME[0]}_stdout.XXXXXX")
+       tmp_expected_stdout=$(mktemp -t "tmp.${FUNCNAME[0]}_expected_stdout.XXXXXX")
+
+       diag "${FULL_LTTNG_BIN} --mi=xml remove-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/${MI_XSD_MAJOR_VERSION}/lttng-mi-${MI_XSD_MAJOR_VERSION}.${MI_XSD_MINOR_VERSION}.xsd" schemaVersion="${MI_XSD_MAJOR_VERSION}.${MI_XSD_MINOR_VERSION}">
+         <name>remove-trigger</name>
+         <output>
+           <trigger>
+             <name>mi</name>
+             <owner_uid>${UID}</owner_uid>
+             <condition>
+               <condition_event_rule_matches>
+                 <event_rule>
+                   <event_rule_user_tracepoint>
+                     <name_pattern>mi_aa</name_pattern>
+                     <filter_expression>p == 2</filter_expression>
+                   </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
+
+       # Add a trigger
+       lttng_add_trigger_ok "mi" --condition event-rule-matches --name=mi_aa --type=user --filter 'p == 2' --action notify
+
+       # Remove it
+       "${FULL_LTTNG_BIN}" --mi xml remove-trigger mi > "${tmp_stdout_raw}" 2> "${tmp_stderr}"
+       ok $? "remove-trigger mi: exit code is 0"
+
+       # Pretty-fy xml before further test.
+       $XML_PRETTY < "${tmp_stdout_raw}" > "${tmp_stdout}"
+
+       $MI_VALIDATE "${tmp_stdout}"
+       ok $? "remove-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}"
+}
+
 # shellcheck disable=SC2119
 start_lttng_sessiond_notap
 
 # Add a few triggers
-lttng_add_trigger_ok "ABC" --condition event-rule-matches --name=aaa -u --filter 'p == 2' --action notify
-lttng_add_trigger_ok "DEF" --condition event-rule-matches -u --action notify
+lttng_add_trigger_ok "ABC" --condition event-rule-matches --name=aaa --type=user --filter 'p == 2' --action notify
+lttng_add_trigger_ok "DEF" --condition event-rule-matches --type=user --action notify
 
 cat > "${tmp_expected_stdout}" <<- EOF
 - name: ABC
-  user id: ${uid}
-  condition: event rule hit
-    rule: aaa (type: tracepoint, domain: ust, filter: p == 2)
+  owner uid: ${uid}
+  condition: event rule matches
+    rule: aaa (type: user tracepoint, filter: p == 2)
+    errors: none
   actions:
     notify
       errors: none
   errors: none
 - name: DEF
-  user id: ${uid}
-  condition: event rule hit
-    rule: * (type: tracepoint, domain: ust)
+  owner uid: ${uid}
+  condition: event rule matches
+    rule: * (type: user tracepoint)
+    errors: none
   actions:
     notify
       errors: none
@@ -95,9 +171,10 @@ remove_trigger "ABC"
 
 cat > "${tmp_expected_stdout}" <<- EOF
 - name: DEF
-  user id: ${uid}
-  condition: event rule hit
-    rule: * (type: tracepoint, domain: ust)
+  owner uid: ${uid}
+  condition: event rule matches
+    rule: * (type: user tracepoint)
+    errors: none
   actions:
     notify
       errors: none
@@ -109,6 +186,8 @@ remove_trigger "DEF"
 
 list_triggers "no triggers left" "/dev/null"
 
+test_mi
+
 # Cleanup
 stop_lttng_sessiond_notap
 rm -f "${tmp_stdout}"
This page took 0.025611 seconds and 4 git commands to generate.