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>
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
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
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
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
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
DIR=$(readlink -f $TESTDIR)
-NUM_TESTS=26
+NUM_TESTS=28
source $TESTDIR/utils/utils.sh
fi
destroy_lttng_session_ok $sess
- stop_lttng_relayd_nocheck
+ stop_lttng_relayd
}
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()
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)
$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
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
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
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