Fix: tests: add missing wait, document missing synchro
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 19 Nov 2014 21:40:28 +0000 (22:40 +0100)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 26 Nov 2014 17:48:36 +0000 (12:48 -0500)
Move all wait ${!} that target a single process to "wait", to minimize
the chances to forget some background process in the future.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
tests/regression/tools/snapshots/test_ust_streaming
tests/regression/tools/snapshots/ust_test
tests/regression/tools/streaming/test_ust
tests/regression/ust/before-after/test_before_after
tests/regression/ust/buffers-pid/test_buffers_pid
tests/regression/ust/high-throughput/test_high_throughput
tests/regression/ust/java-jul/test_java_jul
tests/regression/ust/java-log4j/test_java_log4j
tests/regression/ust/multi-session/test_multi_session
tests/regression/ust/nprocesses/test_nprocesses
tests/regression/ust/periodical-metadata-flush/test_periodical_metadata_flush

index 52330a5c9f8362b1625cbe05f17b71a257c5edbf..ad0c56b19c36550d48ce2afe2b0e954d30341532 100755 (executable)
@@ -82,6 +82,7 @@ function stop_test_apps()
                kill ${p}
                wait ${p} 2>&1
        done
+       APPS_PID=
 }
 
 # Test a snapshot using a default name for the output destination.
index 4ef9f5848cffb7ccd4f33171ac33305194b19414..69feb9494a35b0e39e1f424b509f4d4011e6e0ad 100755 (executable)
@@ -73,6 +73,7 @@ function stop_test_apps()
                kill ${p}
                wait ${p} 2>&1
        done
+       APPS_PID=
 }
 
 function snapshot_add_output ()
index 4c7ac976f870abc8029b4ddc5d5bbb1b076de6b9..480717515b49d3add63d213adee981ecfd06a053 100755 (executable)
@@ -56,9 +56,11 @@ function test_ust_before_start ()
        # Run 5 times with a 1 second delay
        $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT >/dev/null 2>&1 &
 
+       #FIXME: racy missing synchro
+
        start_lttng_tracing $SESSION_NAME
        # Wait for the applications started in background
-       wait ${!}
+       wait
 
        stop_lttng_tracing $SESSION_NAME
        destroy_lttng_session $SESSION_NAME
@@ -74,8 +76,13 @@ function test_ust_after_start ()
        # Run 5 times with a 1 second delay
        $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT >/dev/null 2>&1
 
+       #FIXME: racy missing synchro
+
        stop_lttng_tracing $SESSION_NAME
        destroy_lttng_session $SESSION_NAME
+
+       # Wait for the applications started in background
+       wait
 }
 
 plan_tests $NUM_TESTS
index 112f41a577b55b6c1e038efff28ba03a504d1da3..1535f3627bbd25855573901e69de69bf4b2bf9ed 100755 (executable)
@@ -42,7 +42,8 @@ function test_before_apps()
        enable_ust_lttng_event $SESSION_NAME $EVENT_NAME
        start_lttng_tracing $SESSION_NAME
 
-       $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT
+       $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT &
+       wait
        ok $? "Traced application stopped."
 
        stop_lttng_tracing $SESSION_NAME
@@ -63,9 +64,11 @@ function test_after_apps()
        $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT &
        ok $? "Application started in background."
 
+       #FIXME: racy missing synchronization
+
        start_lttng_tracing $SESSION_NAME
 
-       wait ${!}
+       wait
 
        stop_lttng_tracing $SESSION_NAME
        destroy_lttng_session $SESSION_NAME
index 974fb71d333b0441bc36a0c048f1deb20ea89ecf..0258e890cd4bb02b4c6b9400ff98ffaf74f30dc0 100755 (executable)
@@ -58,9 +58,10 @@ test_after_multiple_apps() {
        start_lttng_tracing $SESSION_NAME
 
        for i in `seq 1 5`; do
-               $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT >/dev/null 2>&1
+               $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT >/dev/null 2>&1 &
                ok $? "Start application $i for tracing"
        done
+       wait
 
        stop_lttng_tracing $SESSION_NAME
        destroy_lttng_session $SESSION_NAME
@@ -77,10 +78,12 @@ test_before_multiple_apps() {
        diag "Start multiple applications BEFORE tracing is started"
 
        for i in `seq 1 5`; do
-               $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT & >/dev/null 2>&1
+               $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT >/dev/null 2>&1 &
                ok $? "Start application $i for tracing"
        done
 
+       #FIXME: racy missing synchronization
+
        # BEFORE application is spawned
        create_lttng_session $SESSION_NAME $TRACE_PATH
        enable_channel_per_pid $SESSION_NAME "channel0"
@@ -119,8 +122,9 @@ test_after_app() {
        enable_ust_lttng_event $SESSION_NAME $EVENT_NAME "channel0"
        start_lttng_tracing $SESSION_NAME
 
-       $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT
+       $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT &
        ok $? "Start application to trace"
+       wait
 
        stop_lttng_tracing $SESSION_NAME
        destroy_lttng_session $SESSION_NAME
@@ -144,9 +148,11 @@ test_before_app() {
        $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT &
        ok $? "Start application to trace"
 
+       #FIXME: racy missing synchronization
+
        start_lttng_tracing $SESSION_NAME
 
-       wait ${!}
+       wait
 
        stop_lttng_tracing $SESSION_NAME
        destroy_lttng_session $SESSION_NAME
@@ -190,8 +196,9 @@ test_multiple_channels() {
        ok $? "Enable event $EVENT_NAME for session $SESSION_NAME in channel4"
        start_lttng_tracing $SESSION_NAME
 
-       $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT
+       $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT &
        ok $? "Start application to trace"
+       wait
 
        stop_lttng_tracing $SESSION_NAME
        trace_match_only $EVENT_NAME $[NR_ITER * 5] $TRACE_PATH
index 101a2c0a62250369876d30d73856279d002d4c5d..1ee0ec10f6f1857dae35dfd909816aa0009db52e 100755 (executable)
@@ -46,7 +46,7 @@ enable_ust_lttng_event $SESSION_NAME $EVENT_NAME
 start_lttng_tracing $SESSION_NAME
 
 for i in `seq 1 $NR_APP`; do
-       ./$CURDIR/$BIN_NAME & >/dev/null 2>&1
+       ./$CURDIR/$BIN_NAME >/dev/null 2>&1 &
 done
 
 diag "Waiting for applications to end"
index 359fe0536bb0a059fa45142c5a91081ab71722eb..d16880f277aa77ad9da5d10d8630340be3957c5a 100755 (executable)
@@ -96,6 +96,8 @@ function test_jul_before_start ()
        # Run 5 times with a 1 second delay
        run_app_background
 
+       #FIXME: racy missing synchronization
+
        start_lttng_tracing $SESSION_NAME
 
        # Wait for the applications started in background
index 173d50811705bcce7e3c688f45c428f812e3a640..11845a0bbf049324e18ca9b27e96c406171440b5 100755 (executable)
@@ -97,6 +97,8 @@ function test_log4j_before_start ()
        # Run 5 times with a 1 second delay
        run_app_background
 
+       #FIXME: racy missing synchronization
+
        start_lttng_tracing $SESSION_NAME
 
        # Wait for the applications started in background
index 19f8d4288ed8c7a50ad0ade87202b04feda38a44..e1ff9b09124c93f27868b24f0302e702b400ca9c 100755 (executable)
@@ -44,7 +44,7 @@ test_multi_session() {
        ./$CURDIR/gen-nevents $NR_ITER &
        ok $? "Start application to generate $NR_ITER events"
 
-       wait ${!}
+       wait
        pass "Wait for events to record"
 
        for i in `seq 0 3`; do
index 396dab0d8a026fbdb3a38f1846918c077dc9bbfc..ca0f9d416cba74e08eafecf04d598d867474fa46 100755 (executable)
@@ -53,6 +53,8 @@ do
        APPS_PID="${APPS_PID} ${!}"
 done
 
+#FIXME: racy missing synchronization
+
 diag "Waiting for applications to be registered to sessiond"
 
 reg_app_count=0
@@ -76,6 +78,8 @@ start_lttng_tracing $SESSION_NAME
 stop_lttng_tracing $SESSION_NAME
 destroy_lttng_session $SESSION_NAME
 
+#FIXME/TODO: add validation after fixing racy synchroniaation
+
 rm -rf $TRACE_PATH
 
 diag "Stopping all spawned applications"
@@ -83,6 +87,7 @@ for p in ${APPS_PID}; do
        kill ${p}
        wait ${p} 2>/dev/null
 done
+APPS_PID=
 pass "Stopped all spawned applications"
 
 stop_lttng_sessiond
index e4199652bce1a456333ca0d88cbe869a5b590f96..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
 
@@ -106,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()
@@ -115,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
@@ -133,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
@@ -141,11 +157,14 @@ test_after_app_pid() {
        validate_trace
        out=$?
 
-       killall -SIGKILL -q $TESTAPP_NAME
+       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
 
-       wait
+       wait_trace_apps
 
        return $out
 }
@@ -154,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
@@ -172,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
@@ -180,11 +203,15 @@ test_before_app_pid() {
        validate_trace
        out=$?
 
-       killall -SIGKILL -q $TESTAPP_NAME
+       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
 
-       wait
+       wait_trace_apps
 
        return $out
 }
@@ -192,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
@@ -207,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
@@ -215,11 +247,14 @@ test_after_app_uid() {
        validate_trace
        out=$?
 
-       killall -SIGKILL -q $TESTAPP_NAME
+       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
 
-       wait
+       wait_trace_apps
 
        return $out
 }
@@ -227,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
@@ -245,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
@@ -253,11 +292,14 @@ test_before_app_uid() {
        validate_trace
        out=$?
 
-       killall -SIGKILL -q $TESTAPP_NAME
+       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
 
-       wait
+       wait_trace_apps
 
        return $out
 }
This page took 0.03538 seconds and 4 git commands to generate.