[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