Fix: regression tests
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 6 Aug 2015 21:15:45 +0000 (17:15 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 12 Aug 2015 22:04:50 +0000 (18:04 -0400)
Fix racy session/relayd wait-after-kill scheme.
Fix racy live test where application may not have generated events yet
when we attach to the live trace.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
tests/regression/tools/health/test_health.sh
tests/regression/tools/live/test_kernel
tests/regression/tools/live/test_ust
tests/regression/tools/live/test_ust_tracefile_count
tests/regression/tools/save-load/test_load
tests/utils/utils.sh

index ade4b0e9c5c211e425655366324aae1dc8d3a32e..40d2f9e9cfb798381c0a7ac9e7be9bed00b46035 100644 (file)
@@ -146,7 +146,9 @@ function test_health
        fi
 
        if [ ${test_relayd} -eq 1 ]; then
-               stop_lttng_relayd_nocheck
+               # We may fail to stop relayd here, and this is OK, since
+               # it may have been killed volountarily by testpoint.
+               stop_lttng_relayd_notap
        fi
        stop_lttng_sessiond
 
index 4b958dff8ee6761d336b94beb248d2fd9a6a7078..0e542da6a6b76f6010e7e75649a1db0da491f7a6 100755 (executable)
@@ -62,22 +62,8 @@ else
        exit 0
 fi
 
-if [ -z $(pidof lt-$SESSIOND_BIN) ]; then
-       $DIR/../src/bin/lttng-sessiond/$SESSIOND_BIN --background --quiet --consumerd32-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd" --consumerd64-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd"
-       if [ $? -eq 1 ]; then
-               echo "Fail to start lttng-sessiond"
-               exit 1
-       fi
-fi
-
-opt="--background -o $TRACE_PATH"
-if [ -z $(pidof lt-$RELAYD_BIN) ]; then
-       $DIR/../src/bin/lttng-relayd/$RELAYD_BIN $opt >/dev/null 2>&1
-       if [ $? -eq 1 ]; then
-               echo "Fail to start lttng-relayd (opt: $opt)"
-               return 1
-       fi
-fi
+start_lttng_sessiond_notap
+start_lttng_relayd_notap "-o $TRACE_PATH"
 
 setup_live_tracing
 
@@ -86,30 +72,5 @@ $TESTDIR/regression/tools/live/live_test
 
 clean_live_tracing
 
-# Kill the relayd
-PID_RELAYD=`pidof lt-$RELAYD_BIN`
-kill $PID_RELAYD
-if [ $? -eq 1 ]; then
-       echo "Kill lttng-relayd (pid: $PID_RELAYD)"
-       exit 1
-else
-       out=1
-       while [ -n "$out" ]; do
-               out=$(pidof lt-$RELAYD_BIN)
-               sleep 0.5
-       done
-fi
-
-# Kill the sessiond
-PID_SESSIOND=`pidof lt-$SESSIOND_BIN`
-kill $PID_SESSIOND
-if [ $? -eq 1 ]; then
-       echo "Kill sessiond daemon"
-       exit 1
-else
-       out=1
-       while [ -n "$out" ]; do
-               out=$(pidof lt-$SESSIOND_BIN)
-               sleep 0.5
-       done
-fi
+stop_lttng_relayd_notap
+stop_lttng_sessiond_notap
index ae6919585f3d1c377dc8ad432271cf5544bf0e86..0b96858aabac032960f4bebc1ea80b11cf9d1038 100755 (executable)
@@ -59,57 +59,29 @@ function clean_live_tracing()
        rm -rf $TRACE_PATH
 }
 
-if [ -z $(pidof lt-$SESSIOND_BIN) ]; then
-       $DIR/../src/bin/lttng-sessiond/$SESSIOND_BIN --background --quiet --consumerd32-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd" --consumerd64-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd"
-       if [ $? -eq 1 ]; then
-               echo "Fail to start lttng-sessiond"
-               exit 1
-       fi
-fi
-
-opt="-o $TRACE_PATH --background"
-if [ -z $(pidof lt-$RELAYD_BIN) ]; then
-       $DIR/../src/bin/lttng-relayd/$RELAYD_BIN $opt >/dev/null 2>&1
-       if [ $? -eq 1 ]; then
-               echo "Fail to start lttng-relayd (opt: $opt)"
-               return 1
-       fi
-fi
+file_sync_after_first=$(mktemp -u)
+
+start_lttng_sessiond_notap
+start_lttng_relayd_notap "-o $TRACE_PATH"
 
 setup_live_tracing
 
 # Run app in background
-$TESTAPP_BIN $NR_ITER $NR_USEC_WAIT >/dev/null 2>&1
+$TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} >/dev/null 2>&1
+
+while [ ! -f "${file_sync_after_first}" ]; do
+       sleep 0.5
+done
 
 # Start the live test
 $TESTDIR/regression/tools/live/live_test
 
+# Wait for the applications started in background
+wait
+
 clean_live_tracing
 
-# Kill the relayd
-PID_RELAYD=`pidof lt-$RELAYD_BIN`
-kill $PID_RELAYD
-if [ $? -eq 1 ]; then
-       echo "Kill lttng-relayd (pid: $PID_RELAYD)"
-       exit 1
-else
-       out=1
-       while [ -n "$out" ]; do
-               out=$(pidof lt-$RELAYD_BIN)
-               sleep 0.5
-       done
-fi
-
-# Kill the sessiond
-PID_SESSIOND=`pidof lt-$SESSIOND_BIN`
-kill $PID_SESSIOND
-if [ $? -eq 1 ]; then
-       echo "Kill sessiond daemon"
-       exit 1
-else
-       out=1
-       while [ -n "$out" ]; do
-               out=$(pidof lt-$SESSIOND_BIN)
-               sleep 0.5
-       done
-fi
+rm -f ${file_sync_after_first}
+
+stop_lttng_relayd_notap
+stop_lttng_sessiond_notap
index 68e3722a82f5ea28e3ddd257db31480d804e0359..54d6a528f70c1f50b5ca6d6bbc07e65128185bac 100755 (executable)
@@ -60,57 +60,29 @@ function clean_live_tracing()
        rm -rf $TRACE_PATH
 }
 
-if [ -z $(pidof lt-$SESSIOND_BIN) ]; then
-       $DIR/../src/bin/lttng-sessiond/$SESSIOND_BIN --background --quiet --consumerd32-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd" --consumerd64-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd"
-       if [ $? -eq 1 ]; then
-               echo "Fail to start lttng-sessiond"
-               exit 1
-       fi
-fi
-
-opt="-o $TRACE_PATH --background"
-if [ -z $(pidof lt-$RELAYD_BIN) ]; then
-       $DIR/../src/bin/lttng-relayd/$RELAYD_BIN $opt >/dev/null 2>&1
-       if [ $? -eq 1 ]; then
-               echo "Fail to start lttng-relayd (opt: $opt)"
-               return 1
-       fi
-fi
+file_sync_after_first=$(mktemp -u)
+
+start_lttng_sessiond_notap
+start_lttng_relayd_notap "-o $TRACE_PATH"
 
 setup_live_tracing
 
 # Run app in background
-$TESTAPP_BIN $NR_ITER $NR_USEC_WAIT >/dev/null 2>&1
+$TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} >/dev/null 2>&1
+
+while [ ! -f "${file_sync_after_first}" ]; do
+       sleep 0.5
+done
 
 # Start the live test
 $TESTDIR/regression/tools/live/live_test
 
+# Wait for the applications started in background
+wait
+
 clean_live_tracing
 
-# Kill the relayd
-PID_RELAYD=`pidof lt-$RELAYD_BIN`
-kill $PID_RELAYD
-if [ $? -eq 1 ]; then
-       echo "Kill lttng-relayd (pid: $PID_RELAYD)"
-       exit 1
-else
-       out=1
-       while [ -n "$out" ]; do
-               out=$(pidof lt-$RELAYD_BIN)
-               sleep 0.5
-       done
-fi
-
-# Kill the sessiond
-PID_SESSIOND=`pidof lt-$SESSIOND_BIN`
-kill $PID_SESSIOND
-if [ $? -eq 1 ]; then
-       echo "Kill sessiond daemon"
-       exit 1
-else
-       out=1
-       while [ -n "$out" ]; do
-               out=$(pidof lt-$SESSIOND_BIN)
-               sleep 0.5
-       done
-fi
+rm -f ${file_sync_after_first}
+
+stop_lttng_relayd_notap
+stop_lttng_sessiond_notap
index 35955b5387e486d26a33e48ef4b6030c5ee7771a..da1e6c6c3ac1dfa20be923316c6f1f4e7820dcff 100755 (executable)
@@ -29,7 +29,7 @@ EVENT_NAME="tp:tptest"
 
 DIR=$(readlink -f $TESTDIR)
 
-NUM_TESTS=26
+NUM_TESTS=28
 
 source $TESTDIR/utils/utils.sh
 
@@ -82,7 +82,7 @@ function test_complex_load()
        fi
        destroy_lttng_session_ok $sess
 
-       stop_lttng_relayd_nocheck
+       stop_lttng_relayd
 }
 
 function test_all_load()
@@ -99,7 +99,7 @@ function test_all_load()
        destroy_lttng_session_ok "$SESSION_NAME-complex"
        destroy_lttng_session_ok "$SESSION_NAME-trackers"
 
-       stop_lttng_relayd_nocheck
+       stop_lttng_relayd
 }
 
 function test_overwrite()
index 7ed0ebc734f561d80953380564b311fac768d0af..1e1e7910dfe4d60938f829e14f00b1071217be0d 100644 (file)
@@ -239,9 +239,10 @@ function lttng_disable_kernel_channel_fail()
        lttng_disable_kernel_channel 1 "$@"
 }
 
-function start_lttng_relayd
+function start_lttng_relayd_opt()
 {
-       local opt=$1
+       local withtap=$1
+       local opt=$2
 
        DIR=$(readlink -f $TESTDIR)
 
@@ -249,52 +250,77 @@ function start_lttng_relayd
                $DIR/../src/bin/lttng-relayd/$RELAYD_BIN -b $opt 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
                #$DIR/../src/bin/lttng-relayd/$RELAYD_BIN $opt -vvv >>/tmp/relayd.log 2>&1 &
                if [ $? -eq 1 ]; then
-                       fail "Start lttng-relayd (opt: $opt)"
+                       if [ $withtap -eq "1" ]; then
+                               fail "Start lttng-relayd (opt: $opt)"
+                       fi
                        return 1
                else
-                       pass "Start lttng-relayd (opt: $opt)"
+                       if [ $withtap -eq "1" ]; then
+                               pass "Start lttng-relayd (opt: $opt)"
+                       fi
                fi
        else
                pass "Start lttng-relayd (opt: $opt)"
        fi
 }
 
-function stop_lttng_relayd_nocheck
+function start_lttng_relayd()
 {
+       start_lttng_relayd_opt 1 "$@"
+}
+
+function start_lttng_relayd_notap()
+{
+       start_lttng_relayd_opt 0 "$@"
+}
+
+function stop_lttng_relayd_opt()
+{
+       local withtap=$1
+
        PID_RELAYD=`pidof lt-$RELAYD_BIN`
 
-       diag "Killing lttng-relayd (pid: $PID_RELAYD)"
+       if [ $withtap -eq "1" ]; then
+               diag "Killing lttng-relayd (pid: $PID_RELAYD)"
+       fi
        kill $PID_RELAYD 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
        retval=$?
 
-       if [ $retval -eq 1 ]; then
+       if [ $? -eq 1 ]; then
+               if [ $withtap -eq "1" ]; then
+                       fail "Kill relay daemon"
+               fi
+               return 1
+       else
                out=1
                while [ -n "$out" ]; do
                        out=$(pidof lt-$RELAYD_BIN)
                        sleep 0.5
                done
+               if [ $withtap -eq "1" ]; then
+                       pass "Kill relay daemon"
+               fi
        fi
        return $retval
 }
 
-function stop_lttng_relayd
+function stop_lttng_relayd()
 {
-       stop_lttng_relayd_nocheck
+       stop_lttng_relayd_opt 1 "$@"
+}
 
-       if [ $? -eq 1 ]; then
-               fail "Killed lttng-relayd (pid: $PID_RELAYD)"
-               return 1
-       else
-               pass "Killed lttng-relayd (pid: $PID_RELAYD)"
-               return 0
-       fi
+function stop_lttng_relayd_notap()
+{
+       stop_lttng_relayd_opt 0 "$@"
 }
 
-#First argument: load path for automatic loading
-function start_lttng_sessiond()
+#First arg: show tap output
+#Second argument: load path for automatic loading
+function start_lttng_sessiond_opt()
 {
+       local withtap=$1
+       local load_path=$2
 
-       local load_path="$1"
        if [ -n $TEST_NO_SESSIOND ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
                # Env variable requested no session daemon
                return
@@ -312,19 +338,33 @@ function start_lttng_sessiond()
 
        if [ -z $(pidof lt-$SESSIOND_BIN) ]; then
                # Have a load path ?
-               if [ -n "$1" ]; then
+               if [ -n "$load_path" ]; then
                        $DIR/../src/bin/lttng-sessiond/$SESSIOND_BIN --load "$1" --background --consumerd32-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd" --consumerd64-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd"
                else
                        $DIR/../src/bin/lttng-sessiond/$SESSIOND_BIN --background --consumerd32-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd" --consumerd64-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd"
                fi
                #$DIR/../src/bin/lttng-sessiond/$SESSIOND_BIN --background --consumerd32-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd" --consumerd64-path="$DIR/../src/bin/lttng-consumerd/lttng-consumerd" --verbose-consumer >>/tmp/sessiond.log 2>&1
                status=$?
-               ok $status "Start session daemon"
+               if [ $withtap -eq "1" ]; then
+                       ok $status "Start session daemon"
+               fi
        fi
 }
 
-function stop_lttng_sessiond ()
+function start_lttng_sessiond()
+{
+       start_lttng_sessiond_opt 1 "$@"
+}
+
+function start_lttng_sessiond_notap()
 {
+       start_lttng_sessiond_opt 0 "$@"
+}
+
+function stop_lttng_sessiond_opt()
+{
+       local withtap=$1
+
        if [ -n $TEST_NO_SESSIOND ] && [ "$TEST_NO_SESSIOND" == "1" ]; then
                # Env variable requested no session daemon
                return
@@ -335,8 +375,9 @@ function stop_lttng_sessiond ()
        kill $PID_SESSIOND 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
 
        if [ $? -eq 1 ]; then
-               fail "Kill sessions daemon"
-               return 1
+               if [ $withtap -eq "1" ]; then
+                       fail "Kill sessions daemon"
+               fi
        else
                out=1
                while [ -n "$out" ]; do
@@ -348,10 +389,22 @@ function stop_lttng_sessiond ()
                        out=$(pidof $CONSUMERD_BIN)
                        sleep 0.5
                done
-               pass "Kill session daemon"
+               if [ $withtap -eq "1" ]; then
+                       pass "Kill session daemon"
+               fi
        fi
 }
 
+function stop_lttng_sessiond()
+{
+       stop_lttng_sessiond_opt 1 "$@"
+}
+
+function stop_lttng_sessiond_notap()
+{
+       stop_lttng_sessiond_opt 0 "$@"
+}
+
 function list_lttng_with_opts ()
 {
        local opts=$1
This page took 0.030984 seconds and 4 git commands to generate.