aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAwais Belal <awais_belal@mentor.com>2016-04-11 00:29:17 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-04-11 22:01:54 +0100
commit7c5fbfc13a541e904022e19eff8251f1cdf764f5 (patch)
tree21b4f7e8f2f58962202b09536c74b9beb143777f
parentd64047b2e28f89b0efbfbced48149e1a86babc61 (diff)
downloadopenembedded-core-contrib-7c5fbfc13a541e904022e19eff8251f1cdf764f5.tar.gz
lttng-tools: fix regression tests hang
Some of the lttng fast_regression ptests have race conditions which end up in a deadlock so the test case never returns and the only way around is to kill the process. This is fixed by picking up relevant patches from lttng-tools mainstream that fix up the behavior of these tests. Signed-off-by: Awais Belal <awais_belal@mentor.com> Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools/Fix-regression-tests.patch480
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools_2.6.0.bb1
2 files changed, 481 insertions, 0 deletions
diff --git a/meta/recipes-kernel/lttng/lttng-tools/Fix-regression-tests.patch b/meta/recipes-kernel/lttng/lttng-tools/Fix-regression-tests.patch
new file mode 100644
index 0000000000..42f2074f95
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-tools/Fix-regression-tests.patch
@@ -0,0 +1,480 @@
+From 971c0ba5c008735b3c5013ca6e0e2e96ab63db90 Mon Sep 17 00:00:00 2001
+From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+Date: Thu, 24 Sep 2015 12:23:58 -0400
+Subject: [PATCH] Fix: regression tests
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+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>
+
+Conflicts:
+ tests/utils/utils.sh
+
+Upstream-Status: Backport
+---
+ tests/regression/tools/health/test_health.sh | 4 +-
+ tests/regression/tools/live/test_kernel | 47 +---------
+ tests/regression/tools/live/test_ust | 60 ++++--------
+ .../regression/tools/live/test_ust_tracefile_count | 60 ++++--------
+ tests/regression/tools/save-load/test_load | 6 +-
+ tests/utils/utils.sh | 103 ++++++++++++++++-----
+ 6 files changed, 120 insertions(+), 160 deletions(-)
+
+diff --git a/tests/regression/tools/health/test_health.sh b/tests/regression/tools/health/test_health.sh
+index 6ae8885..ddc104c 100644
+--- a/tests/regression/tools/health/test_health.sh
++++ b/tests/regression/tools/health/test_health.sh
+@@ -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
+
+diff --git a/tests/regression/tools/live/test_kernel b/tests/regression/tools/live/test_kernel
+index 4b958df..0e542da 100755
+--- a/tests/regression/tools/live/test_kernel
++++ b/tests/regression/tools/live/test_kernel
+@@ -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
+diff --git a/tests/regression/tools/live/test_ust b/tests/regression/tools/live/test_ust
+index ae69195..0b96858 100755
+--- a/tests/regression/tools/live/test_ust
++++ b/tests/regression/tools/live/test_ust
+@@ -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
+diff --git a/tests/regression/tools/live/test_ust_tracefile_count b/tests/regression/tools/live/test_ust_tracefile_count
+index 68e3722..54d6a52 100755
+--- a/tests/regression/tools/live/test_ust_tracefile_count
++++ b/tests/regression/tools/live/test_ust_tracefile_count
+@@ -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
+diff --git a/tests/regression/tools/save-load/test_load b/tests/regression/tools/save-load/test_load
+index 6b892cf..fc07924 100755
+--- a/tests/regression/tools/save-load/test_load
++++ b/tests/regression/tools/save-load/test_load
+@@ -29,7 +29,7 @@ EVENT_NAME="tp:tptest"
+
+ DIR=$(readlink -f $TESTDIR)
+
+-NUM_TESTS=21
++NUM_TESTS=23
+
+ source $TESTDIR/utils/utils.sh
+
+@@ -92,7 +92,7 @@ function test_complex_load()
+ fi
+ destroy_lttng_session $sess
+
+- stop_lttng_relayd_nocheck
++ stop_lttng_relayd
+ }
+
+ function test_all_load()
+@@ -108,7 +108,7 @@ function test_all_load()
+ destroy_lttng_session $SESSION_NAME
+ destroy_lttng_session "$SESSION_NAME-complex"
+
+- stop_lttng_relayd_nocheck
++ stop_lttng_relayd
+ }
+
+ function test_overwrite()
+diff --git a/tests/utils/utils.sh b/tests/utils/utils.sh
+index 2510da5..1d19e64 100644
+--- a/tests/utils/utils.sh
++++ b/tests/utils/utils.sh
+@@ -233,9 +233,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)
+
+@@ -243,52 +244,77 @@ function start_lttng_relayd
+ $DIR/../src/bin/lttng-relayd/$RELAYD_BIN -b $opt >$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 >$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
+@@ -306,19 +332,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
+@@ -329,8 +369,9 @@ function stop_lttng_sessiond ()
+ kill $PID_SESSIOND >$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
+@@ -342,10 +383,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
+--
+1.9.1
+
diff --git a/meta/recipes-kernel/lttng/lttng-tools_2.6.0.bb b/meta/recipes-kernel/lttng/lttng-tools_2.6.0.bb
index 909acc37a7..175c889e84 100644
--- a/meta/recipes-kernel/lttng/lttng-tools_2.6.0.bb
+++ b/meta/recipes-kernel/lttng/lttng-tools_2.6.0.bb
@@ -29,6 +29,7 @@ SRC_URI = "git://git.lttng.org/lttng-tools.git;branch=stable-2.6 \
file://run-ptest \
file://lttng-tools-Fix-live-timer-calculation-error.patch \
file://0001-Fix-sessiond-disable-match-app-event-by-name.patch \
+ file://Fix-regression-tests.patch \
"
S = "${WORKDIR}/git"