[lttng-dev] [PATCH lttng-tools 2/2] Test kernel wildcards

Jérémie Galarneau jeremie.galarneau at efficios.com
Sun Sep 6 15:15:02 EDT 2015


Seems to be fixed by upgrading to the latest liburcu... I'll see if I
can track down what caused this hang.

Merged and added to root_regression test list.

Thanks!
Jérémie

On Sat, Sep 5, 2015 at 5:08 PM, Jérémie Galarneau
<jeremie.galarneau at efficios.com> wrote:
> This test hangs here on the latest lttng-modules (89406ecda) and Linux 4.1.6.
>
> $ sudo ./tests/regression/tools/wildcard/test_event_wildcard
> 1..76
> # LTTng - Event wildcard test
> ok 1 - Start session daemon
> # Test UST wildcard
> ok 2 - Create session wildcard in /tmp/tmp.bMYvA8LmhA
> ok 3 - Enable event tp:tp* for session wildcard
> ok 4 - Start tracing for session
> ok 5 - Traced application stopped.
> ok 6 - Stop lttng tracing for session
> ok 7 - Destroy session wildcard
> ok 8 - Trace match
> ok 9 - Create session wildcard in /tmp/tmp.40lme2ZfE2
> ok 10 - Enable event * for session wildcard
> ok 11 - Start tracing for session
> ok 12 - Traced application stopped.
> ok 13 - Stop lttng tracing for session
> ok 14 - Destroy session wildcard
> ok 15 - Trace match
> ok 16 - Create session wildcard in /tmp/tmp.Px1eQtqdJX
> ok 17 - Enable event tp:tptest* for session wildcard
> ok 18 - Start tracing for session
> ok 19 - Traced application stopped.
> ok 20 - Stop lttng tracing for session
> ok 21 - Destroy session wildcard
> ok 22 - Trace match
> ok 23 - Create session wildcard in /tmp/tmp.UExqHOU7iV
> ok 24 - Enable event tp:abc* for session wildcard
> ok 25 - Start tracing for session
> ok 26 - Traced application stopped.
> ok 27 - Stop lttng tracing for session
> ok 28 - Destroy session wildcard
> ok 29 - Validate empty trace
> ok 30 - Create session wildcard in /tmp/tmp.Rvxoa79wgE
> ok 31 - Enable ust event tp:*tp for session  on channel  failed as expected
> ok 32 - Destroy session wildcard
> ok 33 - Create session wildcard in /tmp/tmp.kQ9mPvTWXL
> ok 34 - Enable ust event tp:tp** for session  on channel  failed as expected
> ok 35 - Destroy session wildcard
> ok 36 - Create session wildcard in /tmp/tmp.FBm6SWo0ov
> ok 37 - Enable ust event *tp:tp* for session  on channel  failed as expected
> ok 38 - Destroy session wildcard
> # Test kernel wildcards
> ok 39 - Create session wildcard in /tmp/tmp.BDcvQm9jEG
>
> ^ Hangs here.
>
> It eventually times out with:
> Error: Condition timed out. The consumer thread was never ready. Killing it
> Error: Fatal error spawning consumer control thread
> PERROR - 17:07:40.767365 [6552/6555]: sendmsg: Broken pipe (in
> lttcomm_send_unix_sock() at unix.c:219)
> Error: Failed to send data back to client
>
> Any idea?
>
> Jérémie
>
> On Fri, Sep 4, 2015 at 7:53 PM, Mathieu Desnoyers
> <mathieu.desnoyers at efficios.com> wrote:
>> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
>> ---
>>  .../regression/tools/wildcard/test_event_wildcard  | 87 ++++++++++++++++------
>>  tests/utils/utils.sh                               | 37 +++++++--
>>  2 files changed, 96 insertions(+), 28 deletions(-)
>>
>> diff --git a/tests/regression/tools/wildcard/test_event_wildcard b/tests/regression/tools/wildcard/test_event_wildcard
>> index 7fbfc18..126bdae 100755
>> --- a/tests/regression/tools/wildcard/test_event_wildcard
>> +++ b/tests/regression/tools/wildcard/test_event_wildcard
>> @@ -16,37 +16,47 @@
>>  # this program; if not, write to the Free Software Foundation, Inc., 51
>>  # Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
>>
>> -TEST_DESC="UST tracer - Event wildcard"
>> +TEST_DESC="LTTng - Event wildcard test"
>>
>>  CURDIR=$(dirname $0)/
>> -TESTDIR=$CURDIR/../..
>> +TESTDIR=$CURDIR/../../..
>>  LTTNG_BIN="lttng"
>>  TESTAPP_PATH="$TESTDIR/utils/testapp"
>>  TESTAPP_NAME="gen-ust-events"
>>  TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
>>  SESSION_NAME="wildcard"
>> -EVENT_NAME="tp:tptest"
>> -NUM_TESTS=39
>>  NR_ITER=100
>> +NUM_GLOBAL_TESTS=2
>> +NUM_UST_TESTS=37
>> +NUM_KERNEL_TESTS=37
>> +NUM_TESTS=$(($NUM_UST_TESTS+$NUM_KERNEL_TESTS+$NUM_GLOBAL_TESTS))
>>
>>  source $TESTDIR/utils/utils.sh
>>
>> -if [ ! -x "$TESTAPP_BIN" ]; then
>> -       BAIL_OUT "No UST nevents binary detected."
>> -fi
>> +function run_ust
>> +{
>> +       $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT
>> +}
>> +
>> +function run_kernel
>> +{
>> +       # Trigger the event for 100 iterations
>> +       echo -n "100" > /proc/lttng-test-filter-event
>> +}
>>
>>  function test_event_wildcard()
>>  {
>>         TRACE_PATH=$(mktemp -d)
>> -       FIND="${1}"
>> -       WILDCARD="${2}"
>> +       DOMAIN="$1"
>> +       FIND="$2"
>> +       WILDCARD="$3"
>>
>>         create_lttng_session_ok $SESSION_NAME $TRACE_PATH
>> -       enable_ust_lttng_event_ok $SESSION_NAME "$WILDCARD"
>> +       enable_${DOMAIN}_lttng_event_ok $SESSION_NAME "$WILDCARD"
>>
>>         start_lttng_tracing_ok
>>
>> -       $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT
>> +       run_${DOMAIN}
>>         ok $? "Traced application stopped."
>>
>>         stop_lttng_tracing_ok
>> @@ -64,16 +74,16 @@ function test_event_wildcard()
>>  function test_event_wildcard_fail()
>>  {
>>         TRACE_PATH=$(mktemp -d)
>> -       WILDCARD="${1}"
>> +       DOMAIN="$1"
>> +       WILDCARD="$2"
>>
>>         create_lttng_session_ok $SESSION_NAME $TRACE_PATH
>> -       enable_ust_lttng_event_fail $SESSION_NAME "$WILDCARD"
>> +       enable_${DOMAIN}_lttng_event_fail $SESSION_NAME "$WILDCARD"
>>         destroy_lttng_session_ok $SESSION_NAME
>>
>>         rm -rf $TRACE_PATH
>>  }
>>
>> -
>>  # MUST set TESTDIR before calling those functions
>>  plan_tests $NUM_TESTS
>>
>> @@ -81,13 +91,48 @@ print_test_banner "$TEST_DESC"
>>
>>  start_lttng_sessiond
>>
>> -test_event_wildcard 1 'tp:tp*'
>> -test_event_wildcard 1 '*'
>> -test_event_wildcard 1 'tp:tptest*'
>> -test_event_wildcard 0 'tp:abc*'
>> +diag "Test UST wildcard"
>> +
>> +if [ ! -x "$TESTAPP_BIN" ]; then
>> +       BAIL_OUT "No UST nevents binary detected."
>> +fi
>> +
>> +EVENT_NAME="tp:tptest"
>> +
>> +test_event_wildcard ust 1 'tp:tp*'
>> +test_event_wildcard ust 1 '*'
>> +test_event_wildcard ust 1 'tp:tptest*'
>> +test_event_wildcard ust 0 'tp:abc*'
>> +
>> +test_event_wildcard_fail ust 'tp:*tp'
>> +test_event_wildcard_fail ust 'tp:tp**'
>> +test_event_wildcard_fail ust '*tp:tp*'
>> +
>> +
>> +if [ "$(id -u)" == "0" ]; then
>> +       isroot=1
>> +else
>> +       isroot=0
>> +fi
>>
>> -test_event_wildcard_fail 'tp:*tp'
>> -test_event_wildcard_fail 'tp:tp**'
>> -test_event_wildcard_fail '*tp:tp*'
>> +skip $isroot "Root access is needed. Skipping all kernel wildcard tests." $NUM_KERNEL_TESTS ||
>> +{
>> +       diag "Test kernel wildcards"
>> +
>> +       modprobe lttng-test
>> +
>> +       EVENT_NAME="lttng_test_filter_event"
>> +
>> +       test_event_wildcard kernel 1 'lttng_test_*'
>> +       test_event_wildcard kernel 1 '*'
>> +       test_event_wildcard kernel 1 'lttng_test_filter_event*'
>> +       test_event_wildcard kernel 0 'lttng_test_asdfasdf*'
>> +
>> +       test_event_wildcard_fail kernel 'tp_*tp'
>> +       test_event_wildcard_fail kernel 'tp_tp**'
>> +       test_event_wildcard_fail kernel '*tp_tp*'
>> +
>> +       rmmod lttng-test
>> +}
>>
>>  stop_lttng_sessiond
>> diff --git a/tests/utils/utils.sh b/tests/utils/utils.sh
>> index 1e1e791..d466ee6 100644
>> --- a/tests/utils/utils.sh
>> +++ b/tests/utils/utils.sh
>> @@ -86,18 +86,19 @@ function randstring()
>>         echo
>>  }
>>
>> -function lttng_enable_kernel_event
>> +function enable_kernel_lttng_event
>>  {
>> -       local sess_name=$1
>> -       local event_name=$2
>> -       local channel_name=$3
>> +       local expected_to_fail="$1"
>> +       local sess_name="$2"
>> +       local event_name="$3"
>> +       local channel_name="$4"
>>
>> -       if [ -z $event_name ]; then
>> +       if [ -z "$event_name" ]; then
>>                 # Enable all event if no event name specified
>>                 event_name="-a"
>>         fi
>>
>> -       if [ -z $channel_name ]; then
>> +       if [ -z "$channel_name" ]; then
>>                 # default channel if none specified
>>                 chan=""
>>         else
>> @@ -105,7 +106,29 @@ function lttng_enable_kernel_event
>>         fi
>>
>>         $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" $chan -s $sess_name -k 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
>> -       ok $? "Enable kernel event $event_name for session $sess_name"
>> +       ret=$?
>> +       if [[ $expected_to_fail -eq "1" ]]; then
>> +               test $ret -ne "0"
>> +               ok $? "Enable kernel event $event_name for session $session_name on channel $channel_name failed as expected"
>> +       else
>> +               ok $ret "Enable kernel event $event_name for session $sess_name"
>> +       fi
>> +}
>> +
>> +function enable_kernel_lttng_event_ok ()
>> +{
>> +       enable_kernel_lttng_event 0 "$@"
>> +}
>> +
>> +function enable_kernel_lttng_event_fail ()
>> +{
>> +       enable_kernel_lttng_event 1 "$@"
>> +}
>> +
>> +# Old interface
>> +function lttng_enable_kernel_event
>> +{
>> +       enable_kernel_lttng_event_ok "$@"
>>  }
>>
>>  function lttng_enable_kernel_syscall()
>> --
>> 2.1.4
>>
>
>
>
> --
> Jérémie Galarneau
> EfficiOS Inc.
> http://www.efficios.com



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



More information about the lttng-dev mailing list