X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=tests%2Fregression%2Ftools%2Fmi%2Ftest_mi;h=5ae71c745f0911ef59155d1f7bf48462f4250313;hp=e690822b5661ad3938c3ba43fe6ec3cdbc8fdc07;hb=a4c305246c4b8021fa1681076326731349a1cd17;hpb=5402fe870e6bef22826ebf74d8828aa3da86ef57 diff --git a/tests/regression/tools/mi/test_mi b/tests/regression/tools/mi/test_mi index e690822b5..5ae71c745 100755 --- a/tests/regression/tools/mi/test_mi +++ b/tests/regression/tools/mi/test_mi @@ -19,51 +19,52 @@ TEST_DESC="Machine interface testing" CURDIR=$(dirname $0)/ TESTDIR=$CURDIR/../../../ -XSD_PATH=$TESTDIR/../src/common/mi_lttng.xsd -SESSIOND_BIN="lttng-sessiond" -RELAYD_BIN="lttng-relayd" +XSD_PATH=$TESTDIR/../src/common/mi-lttng-3.0.xsd #Test app for ust event TESTAPP_PATH="$TESTDIR/utils/testapp" TESTAPP_NAME="gen-ust-events" TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" -NR_USEC_WAIT=10000 - +NR_USEC_WAIT=0 +NR_ITER=10000 #Temp file output OUTPUT_DIR=$(mktemp -d) -FOO_LOAD_DIR=$(mktemp -d) +SESSIOND_LOAD_DIR=$(mktemp -d) OUTPUT_FILE="default.xml" #Path to custom xml utilities XML_VALIDATE="$CURDIR/validate_xml $XSD_PATH" XML_EXTRACT="$CURDIR/extract_xml" - -XPATH_CMD_OUTPUT="//command/output" -XPATH_COMMAND_SUCCESS="/command/success/text()" -XPATH_SESSION="$XPATH_CMD_OUTPUT/sessions/session" -XPATH_ENABLE_CHANNEL_NAME="$XPATH_CMD_OUTPUT/channels/channel/name/text()" -XPATH_ENABLE_EVENT_SUCCESS="$XPATH_CMD_OUTPUT/events/event/success/text()" -XPATH_DISABLE_EVENT_SUCCESS="$XPATH_CMD_OUTPUT/channel/events/event/success/text()" -XPATH_LIST_DOMAIN="$XPATH_CMD_OUTPUT/sessions/session/domains/domain" -XPATH_LIST_CHANNEL="$XPATH_CMD_OUTPUT/sessions/session/domains/domain/channels/channel" -XPATH_LIST_UST_EVENT="$XPATH_CMD_OUTPUT/domains/domain[./type = 'UST']/pids/pid/events/event" -XPATH_SNAPSHOT_ADD_SNAPSHOT="$XPATH_CMD_OUTPUT/snapshot_action[./name = 'add-output']/output" -XPATH_SNAPSHOT_LIST="$XPATH_CMD_OUTPUT/snapshot_action[./name = 'list-output']/output" -XPATH_SNAPSHOT_DEL="$XPATH_CMD_OUTPUT/snapshot_action[./name = 'del-output']/output" +XML_NODE_CHECK="$CURDIR/extract_xml -e" + +XPATH_CMD_OUTPUT="//lttng:command/lttng:output" +XPATH_COMMAND_SUCCESS="/lttng:command/lttng:success/text()" +XPATH_SESSION="$XPATH_CMD_OUTPUT/lttng:sessions/lttng:session" +XPATH_ENABLE_CHANNEL_NAME="$XPATH_CMD_OUTPUT/lttng:channels/lttng:channel/lttng:name/text()" +XPATH_ENABLE_EVENT_SUCCESS="$XPATH_CMD_OUTPUT/lttng:events/lttng:event/lttng:success/text()" +XPATH_DISABLE_EVENT_SUCCESS="$XPATH_CMD_OUTPUT/lttng:channel/lttng:events/lttng:event/lttng:success/text()" +XPATH_LIST_DOMAIN="$XPATH_CMD_OUTPUT/lttng:sessions/lttng:session/lttng:domains/lttng:domain" +XPATH_LIST_CHANNEL="$XPATH_CMD_OUTPUT/lttng:sessions/lttng:session/lttng:domains/lttng:domain/lttng:channels/lttng:channel" +XPATH_LIST_UST_EVENT="$XPATH_CMD_OUTPUT/lttng:domains/lttng:domain[./lttng:type ='UST']/lttng:pids/lttng:pid/lttng:events/lttng:event" +XPATH_SNAPSHOT_ADD_SNAPSHOT="$XPATH_CMD_OUTPUT/lttng:snapshot_action[./lttng:name = 'add-output']/lttng:output" +XPATH_SNAPSHOT_LIST="$XPATH_CMD_OUTPUT/lttng:snapshot_action[./lttng:name = 'list-output']/lttng:output" +XPATH_SNAPSHOT_DEL="$XPATH_CMD_OUTPUT/lttng:snapshot_action[./lttng:name = 'del-output']/lttng:output" +XPATH_TRACK_UNTRACK_PID="$XPATH_CMD_OUTPUT/lttng:targets/lttng:pid_target" +XPATH_PID_TRACKER="$XPATH_CMD_OUTPUT/lttng:sessions/lttng:session/lttng:domains/lttng:domain/lttng:trackers/lttng:pid_tracker" DEVNULL=/dev/null 2>&1 DIR=$(readlink -f $TESTDIR) -NUM_TESTS=178 +NUM_TESTS=230 source $TESTDIR/utils/utils.sh #Overwrite the lttng_bin to get mi output LTTNG_BIN="lttng --mi xml" -#Global devlaration for simplification +#Global declaration for simplification LTTNG=$TESTDIR/../src/bin/lttng/$LTTNG_BIN #Overwrite the default output for utils.sh command @@ -84,6 +85,17 @@ function extract_xml () eval $__result="'$output'" } +function node_check_xml () +{ + local xml=$1 + local xpath=$2 + local __result=$3 + local output + output=$($XML_NODE_CHECK $xml "$xpath") + ok $? "Check of node existence with xpath $xpath" + eval $__result="'$output'" +} + # Arg1 is path to xml file # Arg2: # is true if we expected the success element to be false @@ -97,6 +109,7 @@ function is_command_success () local xpath=$XPATH_COMMAND_SUCCESS + echo $xml #Extract the success element #expect false extract_xml $OUTPUT_DEST $XPATH_COMMAND_SUCCESS result @@ -117,10 +130,10 @@ function is_command_success () function mi_print_version () { - local opt=$2 local output_path=$1 + local opt=$2 - $LTTNG version $opt > $1 + $LTTNG version $opt > $output_path ok $? "MI test: Lttng version" } @@ -140,18 +153,18 @@ function test_create_session () OUTPUT_FILE="create_session.xml" OUTPUT_DEST=$OUTPUT_DIR/$OUTPUT_FILE - create_lttng_session $session_name $OUTPUT_DIR + create_lttng_session_ok $session_name $OUTPUT_DIR $XML_VALIDATE $OUTPUT_DEST ok $? "MI test: create session xsd validation" #try to recreate a session. Expecting it to fail - create_lttng_session $session_name $OUTPUT_DIR true + create_lttng_session_fail $session_name $OUTPUT_DIR $XML_VALIDATE $OUTPUT_DEST ok $? "MI test: expecting fail create session xsd validation" is_command_success $OUTPUT_DEST true OUTPUT_DEST=$DEVNULL - destroy_lttng_session $session_name + destroy_lttng_session_ok $session_name } function test_destroy_session () @@ -166,16 +179,16 @@ function test_destroy_session () #Test build up OUTPUT_DEST=$DEVNULL for (( i = 0; i < 3; i++ )); do - create_lttng_session ${session_name[$i]} $OUTPUT_DIR + create_lttng_session_ok ${session_name[$i]} $OUTPUT_DIR done OUTPUT_DEST=$OUTPUT_DIR/$OUTPUT_FILE - destroy_lttng_session ${session_name[0]} + destroy_lttng_session_ok ${session_name[0]} $XML_VALIDATE $OUTPUT_DEST ok $? "MI test: destroy session ${session_name[0]} xsd validation" #Verify that we destroyed the good session - extract_xml $OUTPUT_DEST $XPATH_SESSION"/name/text()" result + extract_xml $OUTPUT_DEST $XPATH_SESSION"/lttng:name/text()" result test "$result" = "${session_name[0]}" ok $? "Mi test: deleted session: $result expected: ${session_name[0]}" @@ -185,13 +198,13 @@ function test_destroy_session () ok $? "MI test: destroy all session xsd validation" #Verify that we destroyed 2 sessions - extract_xml $OUTPUT_DEST $XPATH_SESSION"/name/text()" result + extract_xml $OUTPUT_DEST $XPATH_SESSION"/lttng:name/text()" result num=$(echo "$result" | wc -l) test "$num" -eq "2" ok $? "Mi test: $num / 2 sessions discovered" #Verify that if no session is present command fail and mi report it. - destroy_lttng_session ${session_name[0]} 1 + destroy_lttng_session_fail ${session_name[0]} $XML_VALIDATE $OUTPUT_DEST ok $? "MI test: failing destroy session ${session_name[0]} xsd validation" extract_xml $OUTPUT_DEST $XPATH_COMMAND_SUCCESS result @@ -212,7 +225,7 @@ function test_list_sessions () #Test buid up OUTPUT_DEST=$DEVNULL for (( i = 0; i < 3; i++ )); do - create_lttng_session ${session_name[$i]} $OUTPUT_DIR + create_lttng_session_ok ${session_name[$i]} $OUTPUT_DIR done OUTPUT_DEST=$OUTPUT_DIR/$OUTPUT_FILE @@ -221,7 +234,7 @@ function test_list_sessions () ok $? "Mi test: list sessions xsd validation" #We should have 3 session - extract_xml $OUTPUT_DEST $XPATH_SESSION"/name/text()" result + extract_xml $OUTPUT_DEST $XPATH_SESSION"/lttng:name/text()" result num=$(echo "$result" | wc -l) test "$num" -eq "3" ok $? "Mi test: $num / 3 sessions discovered" @@ -231,6 +244,28 @@ function test_list_sessions () destroy_lttng_sessions } +function test_list_session_long_path () +{ + local session_name="session_long_path" + + output_basedir=$OUTPUT_DIR/$(randstring 254 0) + mkdir -p ${output_basedir} + + OUTPUT_FILE="list_sessions.xml" + + #Test build up + OUTPUT_DEST=$DEVNULL + create_lttng_session_ok $session_name ${output_basedir} + + OUTPUT_DEST=${output_basedir}/$OUTPUT_FILE + list_lttng_with_opts + $XML_VALIDATE $OUTPUT_DEST + ok $? "Mi test: list session with long path xsd validation" + + #Teardown + OUTPUT_DEST=$DEVNULL + destroy_lttng_sessions +} function test_ust_channel () { local session_name="testsession" @@ -242,24 +277,24 @@ function test_ust_channel () #Test buil up OUTPUT_DEST=$DEVNULL - create_lttng_session $session_name $OUTPUT_DIR + create_lttng_session_ok $session_name $OUTPUT_DIR #Test the enable_channel command OUTPUT_DEST=$OUTPUT_DIR/$OUTPUT_FILE - enable_ust_lttng_channel $session_name ${channel_name[0]} + enable_ust_lttng_channel_ok $session_name ${channel_name[0]} $XML_VALIDATE $OUTPUT_DEST ok $? "Mi test: enable ust channel xsd validation" is_command_success $OUTPUT_DEST false #Expect the command to fail - enable_ust_lttng_channel $session_name ${channel_name[0]} true + enable_ust_lttng_channel_fail $session_name ${channel_name[0]} $XML_VALIDATE $OUTPUT_DEST ok $? "Mi test: fail enable ust channel xsd validation" is_command_success $OUTPUT_DEST true #Create two ust channel to test multiple disable for (( i = 1; i < 3; i++ )); do - enable_ust_lttng_channel $session_name ${channel_name[$i]} + enable_ust_lttng_channel_ok $session_name ${channel_name[$i]} done #Test the disable_channel command @@ -300,18 +335,18 @@ function test_ust_lttng_event () #Test build up OUTPUT_DEST=$DEVNULL - create_lttng_session $session_name $OUTPUT_DIR - enable_ust_lttng_channel $session_name $channel_name + create_lttng_session_ok $session_name $OUTPUT_DIR + enable_ust_lttng_channel_ok $session_name $channel_name OUTPUT_DEST=$OUTPUT_DIR/$OUTPUT_FILE #Test the enable event for ust domain - enable_ust_lttng_event $session_name ${event[0]} $channel_name + enable_ust_lttng_event_ok $session_name ${event[0]} $channel_name $XML_VALIDATE $OUTPUT_DEST ok $? "Mi test: Enable_event for ust domain xsd validation" is_command_success $OUTPUT_DEST false #Try to reenable an enabled event. Should fail - enable_ust_lttng_event $session_name ${event[0]} $channel_name true + enable_ust_lttng_event_fail $session_name ${event[0]} $channel_name $XML_VALIDATE $OUTPUT_DEST ok $? "Mi test: Fail enable_event for ust domain xsd validation" is_command_success $OUTPUT_DEST true @@ -324,11 +359,11 @@ function test_ust_lttng_event () #Event[*] print all the element inside the array with the IFS in between concat_event=$( IFS=$','; echo "${event[*]}" ) - enable_ust_lttng_event $session_name $concat_event $channel_name true + enable_ust_lttng_event_fail $session_name $concat_event $channel_name $XML_VALIDATE $OUTPUT_DEST ok $? "Mi test: Multiple enable ust event with inside fail xsd validation" - #Check for 2 success = true et 1 false + #Check for 2 success = true and 1 success = false extract_xml $OUTPUT_DEST $XPATH_ENABLE_EVENT_SUCCESS result num_ocur=$(grep -o "true" <<< "$result" | wc -l) test "$num_ocur" -eq "2" @@ -372,12 +407,12 @@ function test_list_channel () #Test buid up OUTPUT_DEST=$DEVNULL - create_lttng_session $session_name $OUTPUT_DIR - enable_ust_lttng_channel $session_name $channel_name + create_lttng_session_ok $session_name $OUTPUT_DIR + enable_ust_lttng_channel_ok $session_name $channel_name #Enable ust and jul events concat_event=$( IFS=$','; echo "${event[*]}" ) - enable_ust_lttng_event $session_name $concat_event $channel_name + enable_ust_lttng_event_ok $session_name $concat_event $channel_name #Begin testing OUTPUT_DEST=$OUTPUT_DIR/$OUTPUT_FILE @@ -386,13 +421,13 @@ function test_list_channel () ok $? "Mi test: list channel xsd validation" #Expect 1 domain: UST - extract_xml $OUTPUT_DEST $XPATH_LIST_DOMAIN"/type/text()" result + extract_xml $OUTPUT_DEST $XPATH_LIST_DOMAIN"/lttng:type/text()" result num=$(echo "$result" | wc -l) test "$num" -eq "1" ok $? "Mi test: $num / 1 domains discovered" #Expect 1 channel: test - extract_xml $OUTPUT_DEST $XPATH_LIST_CHANNEL"/name/text()" result + extract_xml $OUTPUT_DEST $XPATH_LIST_CHANNEL"/lttng:name/text()" result num=$(echo "$result" | wc -l) test "$num" -eq "1" ok $? "Mi test: $num / 1 channel discovered" @@ -402,7 +437,7 @@ function test_list_channel () #Add a channel and make sure we have 2 channel now OUTPUT_DEST=$DEVNULL - enable_ust_lttng_channel $session_name $channel_name"a" + enable_ust_lttng_channel_ok $session_name $channel_name"a" #Teardown OUTPUT_DEST=$DEVNULL @@ -419,12 +454,12 @@ function test_list_domain () #Test buid up OUTPUT_DEST=$DEVNULL - create_lttng_session $session_name $OUTPUT_DIR - enable_ust_lttng_channel $session_name $channel_name + create_lttng_session_ok $session_name $OUTPUT_DIR + enable_ust_lttng_channel_ok $session_name $channel_name #Enable ust and jul events concat_event=$( IFS=$','; echo "${event[*]}" ) - enable_ust_lttng_event $session_name $concat_event $channel_name + enable_ust_lttng_event_ok $session_name $concat_event $channel_name enable_jul_lttng_event $session_name $concat_event $channel_name #Begin testing @@ -434,7 +469,7 @@ function test_list_domain () ok $? "Mi test: list domain xsd validation" #Expect 2 domain: Jul and UST - extract_xml $OUTPUT_DEST $XPATH_LIST_DOMAIN"/type/text()" result + extract_xml $OUTPUT_DEST $XPATH_LIST_DOMAIN"/lttng:type/text()" result num=$(echo "$result" | wc -l) test "$num" -eq "2" ok $? "Mi test: $num / 2 domains discovered" @@ -467,12 +502,12 @@ function test_list_session () #Test buid up OUTPUT_DEST=$DEVNULL - create_lttng_session $session_name $OUTPUT_DIR - enable_ust_lttng_channel $session_name $channel_name + create_lttng_session_ok $session_name $OUTPUT_DIR + enable_ust_lttng_channel_ok $session_name $channel_name #Enable ust and jul events concat_event=$( IFS=$','; echo "${event[*]}" ) - enable_ust_lttng_event $session_name $concat_event $channel_name + enable_ust_lttng_event_ok $session_name $concat_event $channel_name enable_jul_lttng_event $session_name $concat_event $channel_name #Begin testing @@ -482,13 +517,13 @@ function test_list_session () ok $? "Mi test: list session xsd validation" #Expect 2 domain: Jul and UST - extract_xml $OUTPUT_DEST $XPATH_LIST_DOMAIN"/type/text()" result + extract_xml $OUTPUT_DEST $XPATH_LIST_DOMAIN"/lttng:type/text()" result num=$(echo "$result" | wc -l) test "$num" -eq "2" ok $? "Mi test: $num / 2 domains discovered" #Expect 2 channel: test and lttng_jul_event - extract_xml $OUTPUT_DEST $XPATH_LIST_CHANNEL"/name/text()" result + extract_xml $OUTPUT_DEST $XPATH_LIST_CHANNEL"/lttng:name/text()" result num=$(echo "$result" | wc -l) test "$num" -eq "2" ok $? "Mi test: $num / 2 channel discovered" @@ -500,31 +535,52 @@ function test_list_session () function test_list_ust_event () { + local file_sync_after_first=$(mktemp -u) + local file_sync_before_last=$(mktemp -u) + OUTPUT_FILE="list_ust_event.xml" #Test buid up OUTPUT_DEST=$OUTPUT_DIR/$OUTPUT_FILE #Begin testing - $TESTAPP_BIN $NR_USEC_WAIT & 2>/dev/null + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT \ + --sync-after-first-event ${file_sync_after_first} \ + --sync-before-last-event ${file_sync_before_last} & 2>/dev/null + + while [ ! -f "${file_sync_after_first}" ]; do + sleep 0.5 + done + list_lttng_with_opts "-u -f" + + touch ${file_sync_before_last} + $XML_VALIDATE $OUTPUT_DEST ok $? "Mi test: list ust event xsd validation" - #Extract events 3 events should be present - extract_xml $OUTPUT_DEST "$XPATH_LIST_UST_EVENT""/name/text()" result + #Extract events + extract_xml $OUTPUT_DEST "$XPATH_LIST_UST_EVENT""/lttng:name/text()" result num=$(echo "$result" | wc -l) - test "$num" -eq "3" - ok $? "Mi test: $num / 3 ust events discovered" - #Extract field from tp:tptest event. Expect 12 - extract_xml $OUTPUT_DEST "$XPATH_LIST_UST_EVENT""[./name = 'tp:tptest']/event_fields/event_field/name/text()" result + #Since the number of events is prone to change we only look for >= from a + #base number. An alternative would be to look for each events but this + #is complicated for nothing. + test "$num" -ge "5" + ok $? "Mi test: $num / 5 ust events discovered" + + #Extract field from tp:tptest event. Expect >= to 12 because number of + #field is prone to change. + extract_xml $OUTPUT_DEST "$XPATH_LIST_UST_EVENT""[./lttng:name = 'tp:tptest']/lttng:event_fields/lttng:event_field/lttng:name/text()" result num=$(echo "$result" | wc -l) - test "$num" -eq "12" + test "$num" -ge "12" ok $? "Mi test: $num / 12 ust event fields discovered" #Wait for all background processes wait + + rm -f ${file_sync_after_first} + rm -f ${file_sync_before_last} } function test_start_stop () { @@ -535,12 +591,12 @@ function test_start_stop () { #Test buid up OUTPUT_DEST=$DEVNULL - create_lttng_session $session_name $OUTPUT_DIR + create_lttng_session_ok $session_name $OUTPUT_DIR #Test fail command #No channel enable start command should return element success false OUTPUT_DEST=$OUTPUT_DIR/$OUTPUT_FILE - start_lttng_tracing $session_name 1 + start_lttng_tracing_fail $session_name $XML_VALIDATE $OUTPUT_DEST ok $? "Mi test: failed start xsd validation" @@ -551,11 +607,11 @@ function test_start_stop () { #Enable a channel to test success OUTPUT_DEST=$DEVNULL - enable_ust_lttng_channel $session_name $channel_name + enable_ust_lttng_channel_ok $session_name $channel_name #Start tracing OUTPUT_DEST=$OUTPUT_DIR/$OUTPUT_FILE - start_lttng_tracing $session_name + start_lttng_tracing_ok $session_name $XML_VALIDATE $OUTPUT_DEST ok $? "Mi test: start xsd validation" @@ -565,32 +621,37 @@ function test_start_stop () { ok $? "Mi test: mi report success on start command as expected" #Extract session name from xml - extract_xml $OUTPUT_DEST $XPATH_SESSION"/name/text()" result + extract_xml $OUTPUT_DEST $XPATH_SESSION"/lttng:name/text()" result test "$result" = "$session_name" ok $? "Mi test: started $session_name" #Extract enabled expect true - extract_xml $OUTPUT_DEST $XPATH_SESSION"/enabled/text()" result + extract_xml $OUTPUT_DEST $XPATH_SESSION"/lttng:enabled/text()" result test "$result" = "true" ok $? "Mi test: enabled element : $result expected: true" + #Test metadata regenerate command + regenerate_metadata_ok $session_name + $XML_VALIDATE $OUTPUT_DEST + ok $? "Mi test: regenerate metadata" + #Test stop command - stop_lttng_tracing $session_name + stop_lttng_tracing_ok $session_name $XML_VALIDATE $OUTPUT_DEST ok $? "Mi test: stop xsd validation" #Extract session name from xml - extract_xml $OUTPUT_DEST $XPATH_SESSION"/name/text()" result + extract_xml $OUTPUT_DEST $XPATH_SESSION"/lttng:name/text()" result test "$result" = "$session_name" - ok $? "Mi test: stoped $session_name" + ok $? "Mi test: stopped $session_name" #Extract enabled expect false - extract_xml $OUTPUT_DEST $XPATH_SESSION"/enabled/text()" result + extract_xml $OUTPUT_DEST $XPATH_SESSION"/lttng:enabled/text()" result test "$result" = "false" ok $? "Mi test: enabled element : $result expected: false" #Test failing stop command - stop_lttng_tracing $session_name 1 + stop_lttng_tracing_fail $session_name $XML_VALIDATE $OUTPUT_DEST ok $? "Mi test: failed stop xsd validation" @@ -617,7 +678,7 @@ function test_snapshot () { #Test fail command #No channel enable start command should return element success false OUTPUT_DEST=$OUTPUT_DIR/$OUTPUT_FILE - lttng_snapshot_add_output $session_name $snapshot_path + lttng_snapshot_add_output_ok $session_name $snapshot_path $XML_VALIDATE $OUTPUT_DEST ok $? "Mi test: snapshot xsd validation" @@ -627,13 +688,13 @@ function test_snapshot () { ok $? "Mi test: add snapshot is a success" #Get data - extract_xml $OUTPUT_DEST "$XPATH_SNAPSHOT_ADD_SNAPSHOT""/snapshot/session_name/text()" result + extract_xml $OUTPUT_DEST "$XPATH_SNAPSHOT_ADD_SNAPSHOT""/lttng:snapshot/lttng:session_name/text()" result test "$result" = "$session_name" ok $? "Mi test: added snapshot for: $result expected $session_name" #Get name of generated output and id - extract_xml $OUTPUT_DEST "$XPATH_SNAPSHOT_ADD_SNAPSHOT""/snapshot/name/text()" snapshot_name - extract_xml $OUTPUT_DEST "$XPATH_SNAPSHOT_ADD_SNAPSHOT""/snapshot/id/text()" snapshot_id + extract_xml $OUTPUT_DEST "$XPATH_SNAPSHOT_ADD_SNAPSHOT""/lttng:snapshot/lttng:name/text()" snapshot_name + extract_xml $OUTPUT_DEST "$XPATH_SNAPSHOT_ADD_SNAPSHOT""/lttng:snapshot/lttng:id/text()" snapshot_id #Test list output lttng_snapshot_list $session_name @@ -645,12 +706,12 @@ function test_snapshot () { test "$result" = "true" ok $? "Mi test: add snapshot is a success" - extract_xml $OUTPUT_DEST "$XPATH_SNAPSHOT_LIST""/session[./name ='$session_name']/snapshots/snapshot/name/text()" result + extract_xml $OUTPUT_DEST "$XPATH_SNAPSHOT_LIST""/lttng:session[./lttng:name ='$session_name']/lttng:snapshots/lttng:snapshot/lttng:name/text()" result test "$result" = "$snapshot_name" ok $? "Mi test: snapshot list extracted snapshot: $result expected: $snapshot_name" #Test del output - lttng_snapshot_del_output $session_name $snapshot_id + lttng_snapshot_del_output_ok $session_name $snapshot_id $XML_VALIDATE $OUTPUT_DEST ok $? "Mi test: snapshot delete xsd validation" @@ -660,16 +721,16 @@ function test_snapshot () { ok $? "Mi test: del snapshot is a success" #Test data - extract_xml $OUTPUT_DEST "$XPATH_SNAPSHOT_DEL""/snapshot/id/text()" result + extract_xml $OUTPUT_DEST "$XPATH_SNAPSHOT_DEL""/lttng:snapshot/lttng:id/text()" result test "$result" = "$snapshot_id" ok $? "Mi test: snapshot del extracted snapshot id: $result expected: $snapshot_id" - extract_xml $OUTPUT_DEST "$XPATH_SNAPSHOT_DEL""/snapshot/session_name/text()" result + extract_xml $OUTPUT_DEST "$XPATH_SNAPSHOT_DEL""/lttng:snapshot/lttng:session_name/text()" result test "$result" = "$session_name" ok $? "Mi test: snapshot del extracted snapshot id: $result expected: $session_name" #Test fail on delete command - lttng_snapshot_del_output $session_name $snapshot_id 1 + lttng_snapshot_del_output_fail $session_name $snapshot_id $XML_VALIDATE $OUTPUT_DEST ok $? "Mi test: snapshot delete xsd validation" @@ -682,7 +743,153 @@ function test_snapshot () { destroy_lttng_sessions } -start_lttng_sessiond $FOO_LOAD_DIR +function test_track_untrack () +{ + diag "Test track/untrack pid" + + local session_name="testTrack" + local pid="1,2,3" + OUTPUT_FILE="track.xml" + + #Test buid up + OUTPUT_DEST=$DEVNULL + create_lttng_session_no_output $session_name + + OUTPUT_DEST=$OUTPUT_DIR/$OUTPUT_FILE + lttng_track_ok "-p $pid -u" + $XML_VALIDATE $OUTPUT_DEST + ok $? "Mi test: track pid xsd validation" + + #Expect a true element + extract_xml $OUTPUT_DEST $XPATH_COMMAND_SUCCESS result + test "$result" = "true" + ok $? "Mi test: track pid is a success" + + #Verify that there is 3 process + extract_xml $OUTPUT_DEST $XPATH_TRACK_UNTRACK_PID"/lttng:pid" result + num=$(echo "$result" | wc -l) + test "$num" -eq "3" + ok $? "Mi test: track pid expecting 3 processes got $num" + + #Test the pid_tracker listing + list_lttng_with_opts $session_name + $XML_VALIDATE $OUTPUT_DEST + ok $? "Mi test: session list with pid_tracker validate" + + #Check the good count + extract_xml $OUTPUT_DEST $XPATH_PID_TRACKER"/lttng:targets/lttng:pid_target/lttng:pid" result + num=$(echo "$result" | wc -l) + test "$num" -eq "3" + ok $? "Mi test: tracker pid listing expecting 3 target got $num" + + #Untrack pid 2,3 + lttng_untrack_ok "-p 2,3 -u" + $XML_VALIDATE $OUTPUT_DEST + ok $? "Mi test: untrack pid xsd validation" + + #Expect a true element + extract_xml $OUTPUT_DEST $XPATH_COMMAND_SUCCESS result + test "$result" = "true" + ok $? "Mi test: untrack pid is a success" + + #Verify that there is 2 untracked pids + extract_xml $OUTPUT_DEST $XPATH_TRACK_UNTRACK_PID"/lttng:pid" result + num=$(echo "$result" | wc -l) + test "$num" -eq "2" + ok $? "Mi test: untrack pid expecting 2 process got $num" + + #Check pid_tracker listing + list_lttng_with_opts $session_name + $XML_VALIDATE $OUTPUT_DEST + ok $? "Mi test: session list with pid_tracker validate" + + #Check the good count + extract_xml $OUTPUT_DEST $XPATH_PID_TRACKER"/lttng:targets/lttng:pid_target/lttng:pid" result + num=$(echo "$result" | wc -l) + test "$num" -eq "1" + ok $? "Mi test: tracker pid listing expecting 1 process got $num" + + #Untrack all + lttng_untrack_ok "-p -u -a" + $XML_VALIDATE $OUTPUT_DEST + ok $? "Mi test: untrack pid xsd validation" + + #Expect a true element + extract_xml $OUTPUT_DEST $XPATH_COMMAND_SUCCESS result + test "$result" = "true" + ok $? "Mi test: untrack all pid is a success" + + #Verify that there is 1 untracked pid + extract_xml $OUTPUT_DEST $XPATH_TRACK_UNTRACK_PID"/lttng:pid" result + num=$(echo "$result" | wc -l) + test "$num" -eq "1" + ok $? "Mi test: untrack pid expecting 1 process got $num" + + #Test if the id is * which represent the all argument + test "$result" = "*" + ok $? "Mi test: pid expected is * got $result" + + #Test if pid_tracker is enabled as definied by pid_tracker + #behavior. If all pid are untrack than the pid_tracker is still + #enabled (pid_tracker node is present). + list_lttng_with_opts $session_name + $XML_VALIDATE $OUTPUT_DEST + ok $? "Mi test: session list with pid_tracker validate" + + #Check the good count + extract_xml $OUTPUT_DEST $XPATH_PID_TRACKER"/lttng:targets/lttng:pid_target/lttng:pid" result + num=$(echo -n "$result" | wc -l) + test "$num" -eq "0" + ok $? "Mi test: tracker pid listing expecting 0 process got $num" + + #Test track all + lttng_track_ok "-p -u -a" + $XML_VALIDATE $OUTPUT_DEST + ok $? "Mi test: track pid xsd validation" + + #Expect a true element + extract_xml $OUTPUT_DEST $XPATH_COMMAND_SUCCESS result + test "$result" = "true" + ok $? "Mi test: track all pid is a success" + + #Verify that there is 1 tracked process + extract_xml $OUTPUT_DEST $XPATH_TRACK_UNTRACK_PID"/lttng:pid" result + num=$(echo "$result" | wc -l) + test "$num" -eq "1" + ok $? "Mi test: track pid expecting 1 process got $num" + + #Test if the id is * wich represent the all argument + test "$result" = "*" + ok $? "Mi test: pid expected is * got $result" + + #Test if pid_tracker is enabled as definied by pid_tracker + #behavior. If all pid are untrack thant the pid_tracker is + #disabled (node pid_tracker do not exist) + list_lttng_with_opts $session_name + $XML_VALIDATE $OUTPUT_DEST + ok $? "Mi test: session list with pid_tracker validate" + + node_check_xml $OUTPUT_DEST $XPATH_PID_TRACKER result + test "$result" = "" + ok $? "Mi test: Pid_tracker node is absent as defined" + + OUTPUT_DEST=$DEVNULL + destroy_lttng_sessions +} + +function test_add_context_list() +{ + diag "Test context listing" + + OUTPUT_FILE="list-context.xml" + OUTPUT_DEST=$OUTPUT_DIR/$OUTPUT_FILE + lttng_add_context_list + + $XML_VALIDATE $OUTPUT_DEST + ok $? "Mi test: context listing validation" +} + +start_lttng_sessiond $SESSIOND_LOAD_DIR TESTS=( test_version test_create_session @@ -696,6 +903,9 @@ TESTS=( test_list_ust_event test_start_stop test_snapshot + test_track_untrack + test_list_session_long_path + test_add_context_list ) @@ -708,6 +918,7 @@ do fi done rm -rf $OUTPUT_DIR +rm -rf $FOO_LOAD_DIR OUTPUT_DEST=/dev/null 2>&1 stop_lttng_sessiond