3 # Copyright (C) 2014 Jonathan Rajotte <jonathan.r.julien@gmail.com>
5 # SPDX-License-Identifier: LGPL-2.1-only
7 TEST_DESC
="Machine interface testing"
10 TESTDIR
=$CURDIR/..
/..
/..
/
11 XSD_PATH
=$TESTDIR/..
/src
/common
/mi-lttng-4.0.xsd
13 #Test app for ust event
14 TESTAPP_PATH
="$TESTDIR/utils/testapp"
15 TESTAPP_NAME
="gen-ust-events"
16 TESTAPP_BIN
="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
21 OUTPUT_DIR
=$
(mktemp
--tmpdir -d tmp.test_mi_output_dir.XXXXXX
)
22 SESSIOND_LOAD_DIR
=$
(mktemp
--tmpdir -d tmp.test_mi_sessiond_load_dir.XXXXXX
)
23 OUTPUT_FILE
="default.xml"
25 #Path to custom xml utilities
26 XML_UTILS_PATH
="$TESTDIR/utils/xml-utils"
27 XML_VALIDATE
="$XML_UTILS_PATH/validate_xml $XSD_PATH"
28 XML_EXTRACT
="$XML_UTILS_PATH/extract_xml"
29 XML_NODE_CHECK
="$XML_UTILS_PATH/extract_xml -e"
31 XPATH_CMD_OUTPUT
="//lttng:command/lttng:output"
32 XPATH_COMMAND_SUCCESS
="/lttng:command/lttng:success/text()"
33 XPATH_SESSION
="$XPATH_CMD_OUTPUT/lttng:sessions/lttng:session"
34 XPATH_ENABLE_CHANNEL_NAME
="$XPATH_CMD_OUTPUT/lttng:channels/lttng:channel/lttng:name/text()"
35 XPATH_ENABLE_EVENT_SUCCESS
="$XPATH_CMD_OUTPUT/lttng:events/lttng:event/lttng:success/text()"
36 XPATH_DISABLE_EVENT_SUCCESS
="$XPATH_CMD_OUTPUT/lttng:channel/lttng:events/lttng:event/lttng:success/text()"
37 XPATH_LIST_DOMAIN
="$XPATH_CMD_OUTPUT/lttng:sessions/lttng:session/lttng:domains/lttng:domain"
38 XPATH_LIST_CHANNEL
="$XPATH_CMD_OUTPUT/lttng:sessions/lttng:session/lttng:domains/lttng:domain/lttng:channels/lttng:channel"
39 XPATH_LIST_UST_EVENT
="$XPATH_CMD_OUTPUT/lttng:domains/lttng:domain[./lttng:type ='UST']/lttng:pids/lttng:pid/lttng:events/lttng:event"
40 XPATH_SNAPSHOT_ADD_SNAPSHOT
="$XPATH_CMD_OUTPUT/lttng:snapshot_action[./lttng:name = 'add-output']/lttng:output"
41 XPATH_SNAPSHOT_LIST
="$XPATH_CMD_OUTPUT/lttng:snapshot_action[./lttng:name = 'list-output']/lttng:output"
42 XPATH_SNAPSHOT_DEL
="$XPATH_CMD_OUTPUT/lttng:snapshot_action[./lttng:name = 'del-output']/lttng:output"
43 XPATH_TRACK_UNTRACK_VPID
="$XPATH_CMD_OUTPUT/lttng:process_attr_trackers/lttng:vpid_process_attr_tracker/lttng:process_attr_values/lttng:vpid/lttng:type"
44 XPATH_VPID_TRACKER
="$XPATH_CMD_OUTPUT/lttng:sessions/lttng:session/lttng:domains/lttng:domain/lttng:process_attr_trackers/lttng:vpid_process_attr_tracker"
46 DEVNULL
=/dev
/null
2>&1
48 DIR
=$
(readlink
-f $TESTDIR)
52 source $TESTDIR/utils
/utils.sh
54 #Overwrite the lttng_bin to get mi output
55 LTTNG_BIN
="lttng --mi xml"
57 #Global declaration for simplification
58 LTTNG
=$TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN
60 #Overwrite the default output for utils.sh command
62 #MUST set TESTDIR before calling those functions
65 print_test_banner
"$TEST_DESC"
67 function extract_xml
()
73 output
=$
($XML_EXTRACT $xml "$xpath")
74 ok $?
"Extraction of xpath $xpath"
75 eval $__result="'$output'"
78 function node_check_xml
()
84 output
=$
($XML_NODE_CHECK $xml "$xpath")
85 ok $?
"Check of node existence with xpath $xpath"
86 eval $__result="'$output'"
89 # Arg1 is path to xml file
91 # is true if we expected the success element to be false
95 function is_command_success
()
100 local xpath
=$XPATH_COMMAND_SUCCESS
103 #Extract the success element
105 extract_xml
$OUTPUT_DEST $XPATH_COMMAND_SUCCESS result
106 if [[ $expect_false = "true" ]]; then
107 if [[ $result ]]; then
108 pass
"Mi test: $xml command failed as expected"
110 fail
"Mi test: $xml command did not fail as expected"
113 if [[ $result ]]; then
114 pass
"Mi test: $xml command success"
116 fail
"Mi test: $xml command failed"
121 function mi_print_version
()
126 $LTTNG version
$opt > $output_path
127 ok $?
"MI test: Lttng version"
131 function test_version
()
133 OUTPUT_FILE
="version.xml"
134 OUTPUT_DEST
=$OUTPUT_DIR/$OUTPUT_FILE
135 mi_print_version
$OUTPUT_DEST
136 $XML_VALIDATE $OUTPUT_DEST
137 ok $?
"MI test: Version xsd validation"
140 function test_create_session
()
142 local session_name
="testSession"
144 OUTPUT_FILE
="create_session.xml"
145 OUTPUT_DEST
=$OUTPUT_DIR/$OUTPUT_FILE
146 create_lttng_session_ok
$session_name $OUTPUT_DIR
147 $XML_VALIDATE $OUTPUT_DEST
148 ok $?
"MI test: create session xsd validation"
150 #try to recreate a session. Expecting it to fail
151 create_lttng_session_fail
$session_name $OUTPUT_DIR
152 $XML_VALIDATE $OUTPUT_DEST
153 ok $?
"MI test: expecting fail create session xsd validation"
154 is_command_success
$OUTPUT_DEST true
157 destroy_lttng_session_ok
$session_name
160 function test_destroy_session
()
167 OUTPUT_FILE
="destroy_session.xml"
171 for (( i
= 0; i
< 3; i
++ )); do
172 create_lttng_session_ok
${session_name[$i]} $OUTPUT_DIR
175 OUTPUT_DEST
=$OUTPUT_DIR/$OUTPUT_FILE
176 destroy_lttng_session_ok
${session_name[0]}
177 $XML_VALIDATE $OUTPUT_DEST
178 ok $?
"MI test: destroy session ${session_name[0]} xsd validation"
180 #Verify that we destroyed the good session
181 extract_xml
$OUTPUT_DEST $XPATH_SESSION"/lttng:name/text()" result
182 test "$result" = "${session_name[0]}"
183 ok $?
"Mi test: deleted session: $result expected: ${session_name[0]}"
185 #Destroy all and count:should be 2
186 destroy_lttng_sessions
187 $XML_VALIDATE $OUTPUT_DEST
188 ok $?
"MI test: destroy all session xsd validation"
190 #Verify that we destroyed 2 sessions
191 extract_xml
$OUTPUT_DEST $XPATH_SESSION"/lttng:name/text()" result
192 num
=$
(echo "$result" |
wc -l)
194 ok $?
"Mi test: $num / 2 sessions discovered"
196 #Verify that if no session is present command fail and mi report it.
197 destroy_lttng_session_fail
${session_name[0]}
198 $XML_VALIDATE $OUTPUT_DEST
199 ok $?
"MI test: failing destroy session ${session_name[0]} xsd validation"
200 extract_xml
$OUTPUT_DEST $XPATH_COMMAND_SUCCESS result
201 test "$result" = "false"
202 ok $?
"Mi test: destroy command on ${session_name[0]} failed as expected"
206 function test_list_sessions
()
213 OUTPUT_FILE
="list_sessions.xml"
217 for (( i
= 0; i
< 3; i
++ )); do
218 create_lttng_session_ok
${session_name[$i]} $OUTPUT_DIR
221 OUTPUT_DEST
=$OUTPUT_DIR/$OUTPUT_FILE
223 $XML_VALIDATE $OUTPUT_DEST
224 ok $?
"Mi test: list sessions xsd validation"
226 #We should have 3 session
227 extract_xml
$OUTPUT_DEST $XPATH_SESSION"/lttng:name/text()" result
228 num
=$
(echo "$result" |
wc -l)
230 ok $?
"Mi test: $num / 3 sessions discovered"
234 destroy_lttng_sessions
237 function test_list_session_long_path
()
239 local session_name
="session_long_path"
241 output_basedir
=$OUTPUT_DIR/$
(randstring
254 0)
242 mkdir
-p ${output_basedir}
244 OUTPUT_FILE
="list_sessions.xml"
248 create_lttng_session_ok
$session_name ${output_basedir}
250 OUTPUT_DEST
=${output_basedir}/$OUTPUT_FILE
252 $XML_VALIDATE $OUTPUT_DEST
253 ok $?
"Mi test: list session with long path xsd validation"
257 destroy_lttng_sessions
259 function test_ust_channel
()
261 local session_name
="testsession"
262 local channel_name
=("channelUst0"
266 OUTPUT_FILE
="ust_channel.xml"
270 create_lttng_session_ok
$session_name $OUTPUT_DIR
272 #Test the enable_channel command
273 OUTPUT_DEST
=$OUTPUT_DIR/$OUTPUT_FILE
274 enable_ust_lttng_channel_ok
$session_name ${channel_name[0]}
275 $XML_VALIDATE $OUTPUT_DEST
276 ok $?
"Mi test: enable ust channel xsd validation"
277 is_command_success
$OUTPUT_DEST false
279 #Expect the command to fail
280 enable_ust_lttng_channel_fail
$session_name ${channel_name[0]}
281 $XML_VALIDATE $OUTPUT_DEST
282 ok $?
"Mi test: fail enable ust channel xsd validation"
283 is_command_success
$OUTPUT_DEST true
285 #Create two ust channel to test multiple disable
286 for (( i
= 1; i
< 3; i
++ )); do
287 enable_ust_lttng_channel_ok
$session_name ${channel_name[$i]}
290 #Test the disable_channel command
291 disable_ust_lttng_channel
$session_name ${channel_name[0]}
292 $XML_VALIDATE $OUTPUT_DEST
293 ok $?
"Mi test: disable ust channel xsd validation"
294 is_command_success
$OUTPUT_DEST false
295 #Check that we delete the good channel
296 extract_xml
$OUTPUT_DEST $XPATH_ENABLE_CHANNEL_NAME result
297 test "$result" = "${channel_name[0]}"
298 ok $?
"MI test: ${channel_name[0]} disabled"
300 #Test multiple disable_channel;
301 disable_ust_lttng_channel
$session_name ${channel_name[1]},${channel_name[2]}
302 $XML_VALIDATE $OUTPUT_DEST
303 ok $?
"Mi test: multiple disable ust channel xsd validation"
304 is_command_success
$OUTPUT_DEST false
306 #Make sure we have two disabled channel
307 extract_xml
$OUTPUT_DEST $XPATH_ENABLE_CHANNEL_NAME result
308 local num
=$
(echo "$result" |
wc -l)
310 ok $?
"Mi test: disabled ust channel $num/2"
314 destroy_lttng_sessions
318 function test_ust_lttng_event
()
320 local session_name
="testSession"
321 local channel_name
="testChannel"
322 local event
=("ev1" "ev2" "ev3")
324 OUTPUT_FILE
="ust_event.xml"
328 create_lttng_session_ok
$session_name $OUTPUT_DIR
329 enable_ust_lttng_channel_ok
$session_name $channel_name
331 OUTPUT_DEST
=$OUTPUT_DIR/$OUTPUT_FILE
332 #Test the enable event for ust domain
333 enable_ust_lttng_event_ok
$session_name ${event[0]} $channel_name
334 $XML_VALIDATE $OUTPUT_DEST
335 ok $?
"Mi test: Enable_event for ust domain xsd validation"
336 is_command_success
$OUTPUT_DEST false
338 #Try to reenable an enabled event. Should fail
339 enable_ust_lttng_event_fail
$session_name ${event[0]} $channel_name
340 $XML_VALIDATE $OUTPUT_DEST
341 ok $?
"Mi test: Fail enable_event for ust domain xsd validation"
342 is_command_success
$OUTPUT_DEST true
344 #Enable multiple event including the last one command will fail
345 #But 2 events should success
347 #Nice little hack, create a string ev,ev,ev
348 #IFS stand for Internal field separator
349 #Event[*] print all the element inside the array with the IFS in between
350 concat_event
=$
( IFS
=$
','; echo "${event[*]}" )
352 enable_ust_lttng_event_fail
$session_name $concat_event $channel_name
353 $XML_VALIDATE $OUTPUT_DEST
354 ok $?
"Mi test: Multiple enable ust event with inside fail xsd validation"
356 #Check for 2 success = true and 1 success = false
357 extract_xml
$OUTPUT_DEST $XPATH_ENABLE_EVENT_SUCCESS result
358 num_ocur
=$
(grep -o "true" <<< "$result" |
wc -l)
359 test "$num_ocur" -eq "2"
360 ok $?
"Mi test: Enabled event on failing enable command $num_ocur_true/2"
362 extract_xml
$OUTPUT_DEST $XPATH_ENABLE_EVENT_SUCCESS result
363 num_ocur
=$
(grep -o "false" <<< "$result" |
wc -l)
364 test "$num_ocur" -eq "1"
365 ok $?
"Mi test: Enabled event on failing enable command $num_ocur_true/2"
368 disable_ust_lttng_event
$session_name ${event[0]} $channel_name
369 $XML_VALIDATE $OUTPUT_DEST
370 ok $?
"Mi test: Disable ust event xsd validation"
371 is_command_success
$OUTPUT_DEST false
373 #Disable the 3 event combined. Should pass
374 disable_ust_lttng_event
$session_name $concat_event $channel_name
375 $XML_VALIDATE $OUTPUT_DEST
376 ok $?
"Mi test: Disable multiple ust event xsd validation"
377 is_command_success
$OUTPUT_DEST false
379 #Make sure we have 3 inner success
380 extract_xml
$OUTPUT_DEST $XPATH_DISABLE_EVENT_SUCCESS result
381 num_ocur
=$
(grep -o "true" <<< "$result" |
wc -l)
382 test "$num_ocur" -eq "3"
383 ok $?
"Mi test: Disable multiple ust event success $num_ocur/3"
387 destroy_lttng_sessions
390 function test_list_channel
()
392 local session_name
="testSession"
393 local channel_name
="testChannel"
394 local event
=("ev1" "ev2" "ev3")
396 OUTPUT_FILE
="list_channel.xml"
400 create_lttng_session_ok
$session_name $OUTPUT_DIR
401 enable_ust_lttng_channel_ok
$session_name $channel_name
403 #Enable ust and jul events
404 concat_event
=$
( IFS
=$
','; echo "${event[*]}" )
405 enable_ust_lttng_event_ok
$session_name $concat_event $channel_name
408 OUTPUT_DEST
=$OUTPUT_DIR/$OUTPUT_FILE
409 list_lttng_with_opts
"$session_name -c $channel_name"
410 $XML_VALIDATE $OUTPUT_DEST
411 ok $?
"Mi test: list channel xsd validation"
413 #Expect 1 domain: UST
414 extract_xml
$OUTPUT_DEST $XPATH_LIST_DOMAIN"/lttng:type/text()" result
415 num
=$
(echo "$result" |
wc -l)
417 ok $?
"Mi test: $num / 1 domains discovered"
419 #Expect 1 channel: test
420 extract_xml
$OUTPUT_DEST $XPATH_LIST_CHANNEL"/lttng:name/text()" result
421 num
=$
(echo "$result" |
wc -l)
423 ok $?
"Mi test: $num / 1 channel discovered"
425 test "$result" = "$channel_name"
426 ok $?
"Mi test: expected channel: $channel_name found: $result"
428 #Add a channel and make sure we have 2 channel now
430 enable_ust_lttng_channel_ok
$session_name $channel_name"a"
434 destroy_lttng_sessions
437 function test_list_domain
()
439 local session_name
="testSession"
440 local channel_name
="testChannel"
441 local event
=("ev1" "ev2" "ev3")
443 OUTPUT_FILE
="list_domain.xml"
447 create_lttng_session_ok
$session_name $OUTPUT_DIR
448 enable_ust_lttng_channel_ok
$session_name $channel_name
450 #Enable ust and jul events
451 concat_event
=$
( IFS
=$
','; echo "${event[*]}" )
452 enable_ust_lttng_event_ok
$session_name $concat_event $channel_name
453 enable_jul_lttng_event
$session_name $concat_event $channel_name
456 OUTPUT_DEST
=$OUTPUT_DIR/$OUTPUT_FILE
457 list_lttng_with_opts
"$session_name -d"
458 $XML_VALIDATE $OUTPUT_DEST
459 ok $?
"Mi test: list domain xsd validation"
461 #Expect 2 domain: Jul and UST
462 extract_xml
$OUTPUT_DEST $XPATH_LIST_DOMAIN"/lttng:type/text()" result
463 num
=$
(echo "$result" |
wc -l)
465 ok $?
"Mi test: $num / 2 domains discovered"
467 #Test for valid value
468 if [[ "$result" = *"JUL"* ]]; then
469 pass
"Mi test: domains Jul is present"
471 fail
"Mi test: domains Jul is absent"
474 if [[ "$result" = *"UST"* ]]; then
475 pass
"Mi test: domains UST is present"
477 fail
"Mi test: domains UST is absent"
482 destroy_lttng_sessions
485 function test_list_session
()
487 local session_name
="testSession"
488 local channel_name
="testChannel"
489 local event
=("ev1" "ev2" "ev3")
491 OUTPUT_FILE
="list_session.xml"
495 create_lttng_session_ok
$session_name $OUTPUT_DIR
496 enable_ust_lttng_channel_ok
$session_name $channel_name
498 #Enable ust and jul events
499 concat_event
=$
( IFS
=$
','; echo "${event[*]}" )
500 enable_ust_lttng_event_ok
$session_name $concat_event $channel_name
501 enable_jul_lttng_event
$session_name $concat_event $channel_name
504 OUTPUT_DEST
=$OUTPUT_DIR/$OUTPUT_FILE
505 list_lttng_with_opts
$session_name
506 $XML_VALIDATE $OUTPUT_DEST
507 ok $?
"Mi test: list session xsd validation"
509 #Expect 2 domain: Jul and UST
510 extract_xml
$OUTPUT_DEST $XPATH_LIST_DOMAIN"/lttng:type/text()" result
511 num
=$
(echo "$result" |
wc -l)
513 ok $?
"Mi test: $num / 2 domains discovered"
515 #Expect 2 channel: test and lttng_jul_event
516 extract_xml
$OUTPUT_DEST $XPATH_LIST_CHANNEL"/lttng:name/text()" result
517 num
=$
(echo "$result" |
wc -l)
519 ok $?
"Mi test: $num / 2 channel discovered"
523 destroy_lttng_sessions
526 function test_list_ust_event
()
528 local file_sync_after_first
=$
(mktemp
--tmpdir -u "tmp.${FUNCNAME[0]}_sync_after_first.XXXXXX")
529 local file_sync_before_last
=$
(mktemp
--tmpdir -u "tmp.${FUNCNAME[0]}_sync_before_last.XXXXXX")
531 OUTPUT_FILE
="list_ust_event.xml"
534 OUTPUT_DEST
=$OUTPUT_DIR/$OUTPUT_FILE
537 $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT \
538 --sync-after-first-event ${file_sync_after_first} \
539 --sync-before-last-event ${file_sync_before_last} & 2>/dev
/null
541 while [ ! -f "${file_sync_after_first}" ]; do
545 list_lttng_with_opts
"-u -f"
547 touch ${file_sync_before_last}
549 $XML_VALIDATE $OUTPUT_DEST
550 ok $?
"Mi test: list ust event xsd validation"
553 extract_xml
$OUTPUT_DEST "$XPATH_LIST_UST_EVENT""/lttng:name/text()" result
554 num
=$
(echo "$result" |
wc -l)
556 #Since the number of events is prone to change we only look for >= from a
557 #base number. An alternative would be to look for each events but this
558 #is complicated for nothing.
560 ok $?
"Mi test: $num / 5 ust events discovered"
562 #Extract field from tp:tptest event. Expect >= to 12 because number of
563 #field is prone to change.
564 extract_xml
$OUTPUT_DEST "$XPATH_LIST_UST_EVENT""[./lttng:name = 'tp:tptest']/lttng:event_fields/lttng:event_field/lttng:name/text()" result
565 num
=$
(echo "$result" |
wc -l)
567 ok $?
"Mi test: $num / 12 ust event fields discovered"
569 #Wait for all background processes
572 rm -f ${file_sync_after_first}
573 rm -f ${file_sync_before_last}
576 function test_start_stop
() {
577 local session_name
="testStartStopSession"
578 local channel_name
="startStopChannel"
580 OUTPUT_FILE
="list_start_stop.xml"
584 create_lttng_session_ok
$session_name $OUTPUT_DIR
587 #No channel enable start command should return element success false
588 OUTPUT_DEST
=$OUTPUT_DIR/$OUTPUT_FILE
589 start_lttng_tracing_fail
$session_name
590 $XML_VALIDATE $OUTPUT_DEST
591 ok $?
"Mi test: failed start xsd validation"
593 #Expect a false element
594 extract_xml
$OUTPUT_DEST $XPATH_COMMAND_SUCCESS result
595 test "$result" = "false"
596 ok $?
"Mi test: mi report failure on start command as expected"
598 #Enable a channel to test success
600 enable_ust_lttng_channel_ok
$session_name $channel_name
603 OUTPUT_DEST
=$OUTPUT_DIR/$OUTPUT_FILE
604 start_lttng_tracing_ok
$session_name
605 $XML_VALIDATE $OUTPUT_DEST
606 ok $?
"Mi test: start xsd validation"
608 #Expect a true element
609 extract_xml
$OUTPUT_DEST $XPATH_COMMAND_SUCCESS result
610 test "$result" = "true"
611 ok $?
"Mi test: mi report success on start command as expected"
613 #Extract session name from xml
614 extract_xml
$OUTPUT_DEST $XPATH_SESSION"/lttng:name/text()" result
615 test "$result" = "$session_name"
616 ok $?
"Mi test: started $session_name"
618 #Extract enabled expect true
619 extract_xml
$OUTPUT_DEST $XPATH_SESSION"/lttng:enabled/text()" result
620 test "$result" = "true"
621 ok $?
"Mi test: enabled element : $result expected: true"
623 #Test metadata regenerate command
624 regenerate_metadata_ok
$session_name
625 $XML_VALIDATE $OUTPUT_DEST
626 ok $?
"Mi test: regenerate metadata"
629 stop_lttng_tracing_ok
$session_name
630 $XML_VALIDATE $OUTPUT_DEST
631 ok $?
"Mi test: stop xsd validation"
633 #Extract session name from xml
634 extract_xml
$OUTPUT_DEST $XPATH_SESSION"/lttng:name/text()" result
635 test "$result" = "$session_name"
636 ok $?
"Mi test: stopped $session_name"
638 #Extract enabled expect false
639 extract_xml
$OUTPUT_DEST $XPATH_SESSION"/lttng:enabled/text()" result
640 test "$result" = "false"
641 ok $?
"Mi test: enabled element : $result expected: false"
643 #Test failing stop command
644 stop_lttng_tracing_fail
$session_name
645 $XML_VALIDATE $OUTPUT_DEST
646 ok $?
"Mi test: failed stop xsd validation"
648 #Expect a false element
649 extract_xml
$OUTPUT_DEST $XPATH_COMMAND_SUCCESS result
650 test "$result" = "false"
651 ok $?
"Mi test: mi report failure on start command as expected"
655 destroy_lttng_sessions
658 function test_snapshot
() {
659 local session_name
="testSnapshotAdd"
660 local snapshot_path
="$OUTPUT_DIR/snapshotoutput"
661 OUTPUT_FILE
="snapshot.xml"
666 create_lttng_session_no_output
$session_name
669 #No channel enable start command should return element success false
670 OUTPUT_DEST
=$OUTPUT_DIR/$OUTPUT_FILE
671 lttng_snapshot_add_output_ok
$session_name file://$snapshot_path
672 $XML_VALIDATE $OUTPUT_DEST
673 ok $?
"Mi test: snapshot xsd validation"
675 #Expect a true element
676 extract_xml
$OUTPUT_DEST $XPATH_COMMAND_SUCCESS result
677 test "$result" = "true"
678 ok $?
"Mi test: add snapshot is a success"
681 extract_xml
$OUTPUT_DEST "$XPATH_SNAPSHOT_ADD_SNAPSHOT""/lttng:snapshot/lttng:session_name/text()" result
682 test "$result" = "$session_name"
683 ok $?
"Mi test: added snapshot for: $result expected $session_name"
685 #Get name of generated output and id
686 extract_xml
$OUTPUT_DEST "$XPATH_SNAPSHOT_ADD_SNAPSHOT""/lttng:snapshot/lttng:name/text()" snapshot_name
687 extract_xml
$OUTPUT_DEST "$XPATH_SNAPSHOT_ADD_SNAPSHOT""/lttng:snapshot/lttng:id/text()" snapshot_id
690 lttng_snapshot_list
$session_name
691 $XML_VALIDATE $OUTPUT_DEST
692 ok $?
"Mi test: snapshot list xsd validation"
694 #Expect a true element
695 extract_xml
$OUTPUT_DEST $XPATH_COMMAND_SUCCESS result
696 test "$result" = "true"
697 ok $?
"Mi test: add snapshot is a success"
699 extract_xml
$OUTPUT_DEST "$XPATH_SNAPSHOT_LIST""/lttng:session[./lttng:name ='$session_name']/lttng:snapshots/lttng:snapshot/lttng:name/text()" result
700 test "$result" = "$snapshot_name"
701 ok $?
"Mi test: snapshot list extracted snapshot: $result expected: $snapshot_name"
704 lttng_snapshot_del_output_ok
$session_name $snapshot_id
705 $XML_VALIDATE $OUTPUT_DEST
706 ok $?
"Mi test: snapshot delete xsd validation"
709 extract_xml
$OUTPUT_DEST $XPATH_COMMAND_SUCCESS result
710 test "$result" = "true"
711 ok $?
"Mi test: del snapshot is a success"
714 extract_xml
$OUTPUT_DEST "$XPATH_SNAPSHOT_DEL""/lttng:snapshot/lttng:id/text()" result
715 test "$result" = "$snapshot_id"
716 ok $?
"Mi test: snapshot del extracted snapshot id: $result expected: $snapshot_id"
718 extract_xml
$OUTPUT_DEST "$XPATH_SNAPSHOT_DEL""/lttng:snapshot/lttng:session_name/text()" result
719 test "$result" = "$session_name"
720 ok $?
"Mi test: snapshot del extracted snapshot id: $result expected: $session_name"
722 #Test fail on delete command
723 lttng_snapshot_del_output_fail
$session_name $snapshot_id
724 $XML_VALIDATE $OUTPUT_DEST
725 ok $?
"Mi test: snapshot delete xsd validation"
728 extract_xml
$OUTPUT_DEST $XPATH_COMMAND_SUCCESS result
729 test "$result" = "false"
730 ok $?
"Mi test: del snapshot is a success"
733 destroy_lttng_sessions
736 function test_track_untrack
()
738 diag
"Test track/untrack pid"
740 local session_name
="testTrack"
742 OUTPUT_FILE
="track.xml"
746 create_lttng_session_no_output
$session_name
748 OUTPUT_DEST
=$OUTPUT_DIR/$OUTPUT_FILE
749 lttng_track_ok
"-p $pid -u"
750 $XML_VALIDATE $OUTPUT_DEST
751 ok $?
"Mi test: track pid xsd validation"
753 #Expect a true element
754 extract_xml
$OUTPUT_DEST $XPATH_COMMAND_SUCCESS result
755 test "$result" = "true"
756 ok $?
"Mi test: track pid is a success"
758 #Verify that there is 3 process
759 extract_xml
$OUTPUT_DEST $XPATH_TRACK_UNTRACK_VPID"/lttng:id" result
760 num
=$
(echo "$result" |
wc -l)
762 ok $?
"Mi test: track pid expecting 3 processes got $num"
764 #Test the pid_tracker listing
765 list_lttng_with_opts
$session_name
766 $XML_VALIDATE $OUTPUT_DEST
767 ok $?
"Mi test: session list with pid_tracker validate"
769 #Check the good count
770 extract_xml
$OUTPUT_DEST $XPATH_VPID_TRACKER"/lttng:process_attr_values/lttng:vpid/lttng:type/lttng:id" result
771 num
=$
(echo "$result" |
wc -l)
773 ok $?
"Mi test: tracker pid listing expecting 3 target got $num"
776 lttng_untrack_ok
"-p 2,3 -u"
777 $XML_VALIDATE $OUTPUT_DEST
778 ok $?
"Mi test: untrack pid xsd validation"
780 #Expect a true element
781 extract_xml
$OUTPUT_DEST $XPATH_COMMAND_SUCCESS result
782 test "$result" = "true"
783 ok $?
"Mi test: untrack pid is a success"
785 #Verify that there is 2 untracked pids
786 extract_xml
$OUTPUT_DEST $XPATH_TRACK_UNTRACK_VPID"/lttng:id" result
787 num
=$
(echo "$result" |
wc -l)
789 ok $?
"Mi test: untrack pid expecting 2 process got $num"
791 #Check pid_tracker listing
792 list_lttng_with_opts
$session_name
793 $XML_VALIDATE $OUTPUT_DEST
794 ok $?
"Mi test: session list with pid_tracker validate"
796 #Check the good count
797 extract_xml
$OUTPUT_DEST $XPATH_VPID_TRACKER"/lttng:targets/lttng:vpid_target/lttng:type/lttng:pid" result
798 num
=$
(echo "$result" |
wc -l)
800 ok $?
"Mi test: tracker pid listing expecting 1 process got $num"
803 lttng_untrack_ok
"-p -u -a"
804 $XML_VALIDATE $OUTPUT_DEST
805 ok $?
"Mi test: untrack pid xsd validation"
807 #Expect a true element
808 extract_xml
$OUTPUT_DEST $XPATH_COMMAND_SUCCESS result
809 test "$result" = "true"
810 ok $?
"Mi test: untrack all pid is a success"
812 #Verify that there is 1 untracked pid
813 extract_xml
$OUTPUT_DEST $XPATH_TRACK_UNTRACK_VPID"/lttng:all" result
814 num
=$
(echo "$result" |
wc -l)
816 ok $?
"Mi test: untrack pid expecting 1 process got $num"
818 #Test if type "all" is "true" which represent the all argument
819 test "$result" = "true"
820 ok $?
"Mi test: pid expected is true got $result"
822 #Test if pid_tracker is enabled as definied by pid_tracker
823 #behavior. If all pid are untrack than the pid_tracker is still
824 #enabled (pid_tracker node is present).
825 list_lttng_with_opts
$session_name
826 $XML_VALIDATE $OUTPUT_DEST
827 ok $?
"Mi test: session list with pid_tracker validate"
829 #Check the good count
830 extract_xml
$OUTPUT_DEST $XPATH_VPID_TRACKER"/lttng:targets/lttng:vpid_target/lttng:type/lttng:pid" result
831 num
=$
(echo -n "$result" |
wc -l)
833 ok $?
"Mi test: tracker pid listing expecting 0 process got $num"
836 lttng_track_ok
"-p -u -a"
837 $XML_VALIDATE $OUTPUT_DEST
838 ok $?
"Mi test: track pid xsd validation"
840 #Expect a true element
841 extract_xml
$OUTPUT_DEST $XPATH_COMMAND_SUCCESS result
842 test "$result" = "true"
843 ok $?
"Mi test: track all pid is a success"
845 #Verify that there is 1 tracked process
846 extract_xml
$OUTPUT_DEST $XPATH_TRACK_UNTRACK_VPID"/lttng:all" result
847 num
=$
(echo "$result" |
wc -l)
849 ok $?
"Mi test: track pid expecting 1 process got $num"
851 #Test if the id is true wich represent the all argument
852 test "$result" = "true"
853 ok $?
"Mi test: pid expected is true got $result"
855 #Test if pid_tracker is enabled as definied by pid_tracker
856 #behavior. If all pid are untrack thant the pid_tracker is
857 #disabled (node pid_tracker do not exist)
858 list_lttng_with_opts
$session_name
859 $XML_VALIDATE $OUTPUT_DEST
860 ok $?
"Mi test: session list with pid_tracker validate"
862 node_check_xml
$OUTPUT_DEST $XPATH_VPID_TRACKER result
864 ok $?
"Mi test: VPID_tracker node is absent as defined"
867 destroy_lttng_sessions
870 function test_add_context_list
()
872 diag
"Test context listing"
874 OUTPUT_FILE
="list-context.xml"
875 OUTPUT_DEST
=$OUTPUT_DIR/$OUTPUT_FILE
876 lttng_add_context_list
878 $XML_VALIDATE $OUTPUT_DEST
879 ok $?
"Mi test: context listing validation"
882 function test_clear_session
()
884 # Since the session are not started there is no real clear done.
885 # We are testing the MI output only here.
891 OUTPUT_FILE
="clear_session.xml"
895 for (( i
= 0; i
< 3; i
++ )); do
896 create_lttng_session_ok
${session_name[$i]} $OUTPUT_DIR
899 OUTPUT_DEST
=$OUTPUT_DIR/$OUTPUT_FILE
900 lttng_clear_session_ok
${session_name[0]}
901 $XML_VALIDATE $OUTPUT_DEST
902 ok $?
"MI test: clear session ${session_name[0]} xsd validation"
904 #Verify that we cleared the good session
905 extract_xml
$OUTPUT_DEST $XPATH_SESSION"/lttng:name/text()" result
906 test "$result" = "${session_name[0]}"
907 ok $?
"Mi test: cleared session: $result expected: ${session_name[0]}"
909 #Destroy all and count:should be 3
911 $XML_VALIDATE $OUTPUT_DEST
912 ok $?
"MI test: clear all session xsd validation"
914 #Verify that we cleared 3 sessions
915 extract_xml
$OUTPUT_DEST $XPATH_SESSION"/lttng:name/text()" result
916 num
=$
(echo "$result" |
wc -l)
918 ok $?
"Mi test: $num / 3 sessions discovered"
920 destroy_lttng_sessions
922 #Verify that if no session is present command fail and mi report it.
923 lttng_clear_session_fail
${session_name[0]}
924 $XML_VALIDATE $OUTPUT_DEST
925 ok $?
"MI test: failing clear session ${session_name[0]} xsd validation"
926 extract_xml
$OUTPUT_DEST $XPATH_COMMAND_SUCCESS result
927 test "$result" = "false"
928 ok $?
"Mi test: clear command on ${session_name[0]} failed as expected"
932 start_lttng_sessiond
$SESSIOND_LOAD_DIR
947 test_list_session_long_path
948 test_add_context_list
954 for fct_test
in ${TESTS[@]};
957 if [ $?
-ne 0 ]; then
962 rm -rf $SESSIOND_LOAD_DIR
964 OUTPUT_DEST
=/dev
/null
2>&1