[lttng-dev] [PATCH lttng-tools v2.6 2/2] Fix: regression tests

Jérémie Galarneau jeremie.galarneau at efficios.com
Thu Sep 24 14:45:48 EDT 2015


Merged, thanks!

Jérémie

On Thu, Sep 24, 2015 at 12:23 PM, Mathieu Desnoyers
<mathieu.desnoyers at efficios.com> wrote:
> 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: Jérémie Galarneau <jeremie.galarneau at efficios.com>
> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
> ---
>  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 9b1c872..621db33 100644
> --- a/tests/utils/utils.sh
> +++ b/tests/utils/utils.sh
> @@ -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
> --
> 2.1.4
>



-- 
Jérémie Galarneau
EfficiOS Inc.
http://www.efficios.com



More information about the lttng-dev mailing list