Fix: tests: add missing wait, document missing synchro
[lttng-tools.git] / tests / regression / ust / periodical-metadata-flush / test_periodical_metadata_flush
index e836956437cff90e1dbab7447c84a054ef334c5d..53db813e1758e0921b02c7a45a496053be769929 100755 (executable)
@@ -28,6 +28,7 @@ EVENT_NAME="tp:tptest"
 BIN_NAME="gen-nevents"
 NUM_TESTS=38
 APP_TMP_FILE="/tmp/lttng_test_ust.42.file"
+APPS_PID=
 
 source $TESTDIR/utils/utils.sh
 
@@ -73,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
@@ -114,7 +107,9 @@ function start_trace_app()
 {
        # Start application with a temporary file.
        $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT $APP_TMP_FILE &
-       ok $? "Start application to trace"
+       ret=$?
+       APPS_PID="${APPS_PID} ${!}"
+       ok $ret "Start application to trace"
 }
 
 function start_check_trace_app()
@@ -123,9 +118,20 @@ function start_check_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"
 
        create_lttng_session $SESSION_NAME $TRACE_PATH
@@ -141,7 +147,9 @@ test_after_app_pid() {
        # 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
+       for p in ${APPS_PID}; do
+               kill -s SIGSTOP ${p}
+       done
 
        # Give time to the consumer to write inflight data.
        sleep 2
@@ -149,11 +157,14 @@ test_after_app_pid() {
        validate_trace
        out=$?
 
+       for p in ${APPS_PID}; do
+               kill -s SIGKILL ${p}
+               wait ${p} 2>/dev/null
+       done
        stop_lttng_tracing $SESSION_NAME
        destroy_lttng_session $SESSION_NAME
 
-       killall -SIGKILL -q $TESTAPP_NAME
-       wait_apps
+       wait_trace_apps
 
        return $out
 }
@@ -162,6 +173,8 @@ test_before_app_pid() {
        local out
        local tmp_file="/tmp/lttng_test_ust.42.file"
 
+       APPS_PID=
+
        diag "Start application BEFORE tracing is started"
 
        start_trace_app
@@ -180,7 +193,9 @@ test_before_app_pid() {
        # 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
+       for p in ${APPS_PID}; do
+               kill -s SIGSTOP ${p}
+       done
 
        # Give time to the consumer to write inflight data.
        sleep 2
@@ -188,11 +203,15 @@ test_before_app_pid() {
        validate_trace
        out=$?
 
+       for p in ${APPS_PID}; do
+               kill -s SIGKILL ${p}
+               wait ${p} 2>/dev/null
+       done
+
        stop_lttng_tracing $SESSION_NAME
        destroy_lttng_session $SESSION_NAME
 
-       killall -SIGKILL -q $TESTAPP_NAME
-       wait_apps
+       wait_trace_apps
 
        return $out
 }
@@ -200,6 +219,8 @@ test_before_app_pid() {
 test_after_app_uid() {
        local out
 
+       APPS_PID=
+
        diag "Start application AFTER tracing is started"
 
        create_lttng_session $SESSION_NAME $TRACE_PATH
@@ -215,7 +236,10 @@ test_after_app_uid() {
        # 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
+       for p in ${APPS_PID}; do
+               kill -s SIGSTOP ${p}
+       done
+
 
        # Give time to the consumer to write inflight data.
        sleep 2
@@ -223,11 +247,14 @@ test_after_app_uid() {
        validate_trace
        out=$?
 
+       for p in ${APPS_PID}; do
+               kill -s SIGKILL ${p}
+               wait ${p} 2>/dev/null
+       done
        stop_lttng_tracing $SESSION_NAME
        destroy_lttng_session $SESSION_NAME
 
-       killall -SIGKILL -q $TESTAPP_NAME
-       wait_apps
+       wait_trace_apps
 
        return $out
 }
@@ -235,6 +262,8 @@ test_after_app_uid() {
 test_before_app_uid() {
        local out
 
+       APPS_PID=
+
        diag "Start application BEFORE tracing is started"
 
        # Start application before tracing
@@ -253,7 +282,9 @@ test_before_app_uid() {
        # 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
+       for p in ${APPS_PID}; do
+               kill -s SIGSTOP ${p}
+       done
 
        # Give time to the consumer to write inflight data.
        sleep 2
@@ -261,11 +292,14 @@ test_before_app_uid() {
        validate_trace
        out=$?
 
+       for p in ${APPS_PID}; do
+               kill -s SIGKILL ${p}
+               wait ${p} 2>/dev/null
+       done
        stop_lttng_tracing $SESSION_NAME
        destroy_lttng_session $SESSION_NAME
 
-       killall -SIGKILL -q $TESTAPP_NAME
-       wait_apps
+       wait_trace_apps
 
        return $out
 }
This page took 0.024991 seconds and 4 git commands to generate.