X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=tests%2Fregression%2Fust%2Fperiodical-metadata-flush%2Ftest_periodical_metadata_flush;h=ad9d33d521ddbbdb022040df5599f9a539777a12;hp=18d8a46c1b7ea213fe8299baabdffaf3c48b1b72;hb=8a251cb8ade9db2f560604fa53b3515ca0d60c22;hpb=b688191f72e58d2b5c317ca52b4c2b1743f2586c 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 18d8a46c1..ad9d33d52 100755 --- a/tests/regression/ust/periodical-metadata-flush/test_periodical_metadata_flush +++ b/tests/regression/ust/periodical-metadata-flush/test_periodical_metadata_flush @@ -41,7 +41,16 @@ 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 >/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" +} + +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 100000 >/dev/null 2>&1 ok $? "Enable channel $channel_name per UID for session $sess_name" } @@ -71,27 +80,60 @@ function wait_apps done } +function validate_trace() +{ + local out + + out=$(babeltrace $TRACE_PATH | grep $EVENT_NAME | wc -l) + if [ $out -eq 0 ]; then + fail "Trace validation" + diag "No event(s) found. We are supposed to have at least one." + out=1 + else + pass "Trace validation" + diag "Found $out event(s). Coherent." + out=0 + fi + + return $out +} + test_after_app_pid() { local out diag "Start application AFTER tracing is started" - # BEFORE application is spawned create_lttng_session $SESSION_NAME $TRACE_PATH enable_metadata_per_pid $SESSION_NAME - enable_ust_lttng_channel $SESSION_NAME "channel0" - enable_ust_lttng_event $SESSION_NAME $EVENT_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 + # Start application after tracing + $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT & ok $? "Start application to trace" + # At least hit one event + 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. + killall -SIGSTOP -q $TESTAPP_NAME + + # Give time to the consumer to write inflight data. + sleep 2 + + validate_trace + out=$? + stop_lttng_tracing $SESSION_NAME destroy_lttng_session $SESSION_NAME - trace_matches $EVENT_NAME $NR_ITER $TRACE_PATH + killall -SIGKILL -q $TESTAPP_NAME + wait_apps - return $? + return $out } test_before_app_pid() { @@ -102,30 +144,31 @@ test_before_app_pid() { $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT & ok $? "Start application to trace" - # BEFORE application is spawned + # Start application before tracing create_lttng_session $SESSION_NAME $TRACE_PATH enable_metadata_per_pid $SESSION_NAME - enable_ust_lttng_channel $SESSION_NAME "channel0" - enable_ust_lttng_event $SESSION_NAME $EVENT_NAME + enable_channel_per_pid $SESSION_NAME "channel0" + enable_ust_lttng_event $SESSION_NAME $EVENT_NAME "channel0" start_lttng_tracing $SESSION_NAME # At least hit one event 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. + killall -SIGSTOP -q $TESTAPP_NAME + + # Give time to the consumer to write inflight data. + sleep 2 + + validate_trace + out=$? + stop_lttng_tracing $SESSION_NAME destroy_lttng_session $SESSION_NAME - out=$(babeltrace $TRACE_PATH | grep $EVENT_NAME | wc -l) - if [ $out -eq 0 ]; then - fail "Trace validation" - diag "No event(s) found. We are supposed to have at least one." - out=1 - else - pass "Trace validation" - diag "Found $out event(s). Coherent." - out=0 - fi - + killall -SIGKILL -q $TESTAPP_NAME wait_apps return $out @@ -136,22 +179,37 @@ test_after_app_uid() { diag "Start application AFTER tracing is started" - # BEFORE application is spawned create_lttng_session $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 + enable_ust_lttng_event $SESSION_NAME $EVENT_NAME "channel0" start_lttng_tracing $SESSION_NAME - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT + # Start application after tracing + $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT & ok $? "Start application to trace" + # At least hit one event + 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. + killall -SIGSTOP -q $TESTAPP_NAME + + # Give time to the consumer to write inflight data. + sleep 2 + + validate_trace + out=$? + stop_lttng_tracing $SESSION_NAME destroy_lttng_session $SESSION_NAME - trace_matches $EVENT_NAME $NR_ITER $TRACE_PATH + killall -SIGKILL -q $TESTAPP_NAME + wait_apps - return $? + return $out } test_before_app_uid() { @@ -159,33 +217,34 @@ test_before_app_uid() { diag "Start application BEFORE tracing is started" + # Start application before tracing $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT & ok $? "Start application to trace" - # BEFORE application is spawned create_lttng_session $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 + enable_ust_lttng_event $SESSION_NAME $EVENT_NAME "channel0" start_lttng_tracing $SESSION_NAME # At least hit one event 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. + killall -SIGSTOP -q $TESTAPP_NAME + + # Give time to the consumer to write inflight data. + sleep 2 + + validate_trace + out=$? + stop_lttng_tracing $SESSION_NAME destroy_lttng_session $SESSION_NAME - out=$(babeltrace $TRACE_PATH | grep $EVENT_NAME | wc -l) - if [ $out -eq 0 ]; then - fail "Trace validation" - diag "No event(s) found. We are supposed to have at least one." - out=1 - else - pass "Trace validation" - diag "Found $out event(s). Coherent." - out=0 - fi - + killall -SIGKILL -q $TESTAPP_NAME wait_apps return $out @@ -211,7 +270,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