X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=tests%2Fregression%2Fust%2Fperiodical-metadata-flush%2Ftest_periodical_metadata_flush;h=bfc3b2091de8bb158914e5a8c596f4753dc7dfe3;hp=fe4550bf3db4e4f41638689996655006fe3f556c;hb=a4c305246c4b8021fa1681076326731349a1cd17;hpb=447e8ad9216e708f1698e05dabfdaacc7b3196cf diff --git a/tests/regression/ust/periodical-metadata-flush/test_periodical_metadata_flush b/tests/regression/ust/periodical-metadata-flush/test_periodical_metadata_flush index fe4550bf3..bfc3b2091 100755 --- a/tests/regression/ust/periodical-metadata-flush/test_periodical_metadata_flush +++ b/tests/regression/ust/periodical-metadata-flush/test_periodical_metadata_flush @@ -27,6 +27,8 @@ SESSION_NAME="periodical-flush" EVENT_NAME="tp:tptest" BIN_NAME="gen-nevents" NUM_TESTS=38 +APP_TMP_FILE=$(mktemp -u) +APPS_PID= source $TESTDIR/utils/utils.sh @@ -41,7 +43,7 @@ function enable_channel_per_uid() local sess_name=$1 local channel_name=$2 - $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel --buffers-uid -u $channel_name -s $sess_name --switch-timer 1000000 >/dev/null 2>&1 + $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel --buffers-uid -u $channel_name -s $sess_name --switch-timer 100000 >/dev/null 2>&1 ok $? "Enable channel $channel_name per UID for session $sess_name" } @@ -50,7 +52,7 @@ function enable_channel_per_pid() local sess_name=$1 local channel_name=$2 - $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel --buffers-pid -u $channel_name -s $sess_name --switch-timer 1000000 >/dev/null 2>&1 + $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel --buffers-pid -u $channel_name -s $sess_name --switch-timer 100000 >/dev/null 2>&1 ok $? "Enable channel $channel_name per UID for session $sess_name" } @@ -72,14 +74,6 @@ function enable_metadata_per_pid() ok $? "Enable channel $channel_name per PID for session $sess_name" } -function wait_apps -{ - diag "Waiting for applications to end..." - while [ -n "$(pidof $TESTAPP_NAME)" ]; do - sleep 1 - done -} - function validate_trace() { local out @@ -98,56 +92,126 @@ function validate_trace() return $out } +function check_app_tmp_file() +{ + # Wait for the application file to appear indicating that at least one + # tracepoint has been fired. + while [ ! -f "$APP_TMP_FILE" ]; do + sleep 0.5 + done + diag "Removing test app temporary file $APP_TMP_FILE" + rm -f $APP_TMP_FILE +} + +function start_trace_app() +{ + # Start application with a temporary file. + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT --sync-after-first-event $APP_TMP_FILE & + ret=$? + APPS_PID="${APPS_PID} ${!}" + ok $ret "Start application to trace" +} + +function start_check_trace_app() +{ + start_trace_app + check_app_tmp_file +} + + +function wait_trace_apps() +{ + for p in ${APPS_PID}; do + wait ${p} 2>/dev/null + done + APPS_PID= +} + test_after_app_pid() { local out + APPS_PID= + diag "Start application AFTER tracing is started" - # BEFORE application is spawned - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH enable_metadata_per_pid $SESSION_NAME enable_channel_per_pid $SESSION_NAME "channel0" - enable_ust_lttng_event $SESSION_NAME $EVENT_NAME "channel0" - start_lttng_tracing $SESSION_NAME - - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT - ok $? "Start application to trace" + enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME "channel0" + start_lttng_tracing_ok $SESSION_NAME + + # Start application after tracing + start_check_trace_app + # After this point we are sure that at least one event has been hit. + + # Make sure the application does not generate any more data, + # thus ensuring that we are not flushing a packet concurrently + # with validate_trace. + for p in ${APPS_PID}; do + kill -s SIGSTOP ${p} + done - # At least hit one event + # Give time to the consumer to write inflight data. sleep 2 + validate_trace out=$? - stop_lttng_tracing $SESSION_NAME - destroy_lttng_session $SESSION_NAME + for p in ${APPS_PID}; do + kill -s SIGKILL ${p} + wait ${p} 2>/dev/null + done + stop_lttng_tracing_ok $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME + + wait_trace_apps return $out } test_before_app_pid() { local out + local tmp_file="/tmp/lttng_test_ust.42.file" + + APPS_PID= diag "Start application BEFORE tracing is started" - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT & - ok $? "Start application to trace" + start_trace_app - # BEFORE application is spawned - create_lttng_session $SESSION_NAME $TRACE_PATH + # Start application before tracing + create_lttng_session_ok $SESSION_NAME $TRACE_PATH enable_metadata_per_pid $SESSION_NAME enable_channel_per_pid $SESSION_NAME "channel0" - enable_ust_lttng_event $SESSION_NAME $EVENT_NAME "channel0" - start_lttng_tracing $SESSION_NAME + enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME "channel0" + start_lttng_tracing_ok $SESSION_NAME - # At least hit one event + check_app_tmp_file + # Let the application at least perform a flush! sleep 2 + + # Make sure the application does not generate any more data, + # thus ensuring that we are not flushing a packet concurrently + # with validate_trace. + for p in ${APPS_PID}; do + kill -s SIGSTOP ${p} + done + + # Give time to the consumer to write inflight data. + sleep 2 + validate_trace out=$? - stop_lttng_tracing $SESSION_NAME - destroy_lttng_session $SESSION_NAME + for p in ${APPS_PID}; do + kill -s SIGKILL ${p} + wait ${p} 2>/dev/null + done - wait_apps + stop_lttng_tracing_ok $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME + + wait_trace_apps return $out } @@ -155,25 +219,42 @@ test_before_app_pid() { test_after_app_uid() { local out + APPS_PID= + diag "Start application AFTER tracing is started" - # BEFORE application is spawned - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH enable_metadata_per_uid $SESSION_NAME enable_channel_per_uid $SESSION_NAME "channel0" - enable_ust_lttng_event $SESSION_NAME $EVENT_NAME "channel0" - start_lttng_tracing $SESSION_NAME + enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME "channel0" + start_lttng_tracing_ok $SESSION_NAME + + # Start application after tracing + start_check_trace_app + # After this point we are sure that at least one event has been hit. + + # Make sure the application does not generate any more data, + # thus ensuring that we are not flushing a packet concurrently + # with validate_trace. + for p in ${APPS_PID}; do + kill -s SIGSTOP ${p} + done - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT - ok $? "Start application to trace" - # At least hit one event + # Give time to the consumer to write inflight data. sleep 2 + validate_trace out=$? - stop_lttng_tracing $SESSION_NAME - destroy_lttng_session $SESSION_NAME + for p in ${APPS_PID}; do + kill -s SIGKILL ${p} + wait ${p} 2>/dev/null + done + stop_lttng_tracing_ok $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME + + wait_trace_apps return $out } @@ -181,27 +262,44 @@ test_after_app_uid() { test_before_app_uid() { local out + APPS_PID= + diag "Start application BEFORE tracing is started" - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT & - ok $? "Start application to trace" + # Start application before tracing + start_trace_app - # BEFORE application is spawned - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH enable_metadata_per_uid $SESSION_NAME enable_channel_per_uid $SESSION_NAME "channel0" - enable_ust_lttng_event $SESSION_NAME $EVENT_NAME "channel0" - start_lttng_tracing $SESSION_NAME + enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME "channel0" + start_lttng_tracing_ok $SESSION_NAME - # At least hit one event + check_app_tmp_file + # Let the application at least perform a flush! sleep 2 + + # Make sure the application does not generate any more data, + # thus ensuring that we are not flushing a packet concurrently + # with validate_trace. + for p in ${APPS_PID}; do + kill -s SIGSTOP ${p} + done + + # Give time to the consumer to write inflight data. + sleep 2 + validate_trace out=$? - stop_lttng_tracing $SESSION_NAME - destroy_lttng_session $SESSION_NAME + for p in ${APPS_PID}; do + kill -s SIGKILL ${p} + wait ${p} 2>/dev/null + done + stop_lttng_tracing_ok $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME - wait_apps + wait_trace_apps return $out } @@ -226,7 +324,7 @@ start_lttng_sessiond while [ $i -lt $TEST_COUNT ]; do TRACE_PATH=$(mktemp -d) ${TESTS[$i]} - #rm -rf $TRACE_PATH + rm -rf $TRACE_PATH let "i++" done