From e8526e3f78384fdb3b72860dc4a8f180100e0c85 Mon Sep 17 00:00:00 2001 From: Jonathan Rajotte Date: Wed, 13 Feb 2019 21:37:56 -0500 Subject: [PATCH] Gen-ust-events: use options instead of arguments Remove argument dependency and ease usage of feature individually. Signed-off-by: Jonathan Rajotte --- src/bin/lttng-sessiond/main.c | 10 ++ tests/destructive/metadata-regeneration | 8 +- tests/perf/test_perf_raw.in | 2 +- tests/regression/tools/crash/test_crash | 8 +- .../regression/tools/exclusion/test_exclusion | 2 +- tests/regression/tools/live/test_lttng_ust | 2 +- tests/regression/tools/live/test_ust | 2 +- .../tools/live/test_ust_tracefile_count | 2 +- tests/regression/tools/mi/test_mi | 4 +- .../notification/test_notification_multi_app | 2 +- .../tools/notification/test_notification_ust | 2 +- .../regression/tools/regen-metadata/test_ust | 16 ++- .../regression/tools/regen-statedump/test_ust | 4 +- .../tools/snapshots/test_ust_streaming | 2 +- tests/regression/tools/snapshots/ust_test | 2 +- .../streaming/test_high_throughput_limits | 2 +- tests/regression/tools/streaming/test_ust | 7 +- .../tracefile-limits/test_tracefile_count | 2 +- .../tracefile-limits/test_tracefile_size | 4 +- .../tools/wildcard/test_event_wildcard | 2 +- .../ust/before-after/test_before_after | 6 +- tests/regression/ust/blocking/test_blocking | 2 +- .../ust/buffers-pid/test_buffers_pid | 14 +- .../ust/clock-override/test_clock_override | 2 +- .../ust/getcpu-override/test_getcpu_override | 4 +- .../regression/ust/nprocesses/test_nprocesses | 4 +- .../test_periodical_metadata_flush | 2 +- .../test_rotation_destroy_flush | 2 +- tests/regression/ust/test_event_perf | 2 +- tests/stress/launch_ust_app | 2 +- .../testapp/gen-ust-events/gen-ust-events.c | 129 +++++++++++++----- 31 files changed, 172 insertions(+), 82 deletions(-) diff --git a/src/bin/lttng-sessiond/main.c b/src/bin/lttng-sessiond/main.c index fa6fa4830..670ebc747 100644 --- a/src/bin/lttng-sessiond/main.c +++ b/src/bin/lttng-sessiond/main.c @@ -77,6 +77,7 @@ #include "agent.h" #include "ht-cleanup.h" #include "sessiond-config.h" +#include "clear.h" static const char *help_msg = #ifdef LTTNG_EMBED_HELP @@ -2929,6 +2930,7 @@ static int process_client_msg(struct command_ctx *cmd_ctx, int sock, case LTTNG_REGENERATE_STATEDUMP: case LTTNG_REGISTER_TRIGGER: case LTTNG_UNREGISTER_TRIGGER: + case LTTNG_CLEAR_SESSION: need_domain = 0; break; default: @@ -4059,6 +4061,14 @@ error_add_context: notification_thread_handle); break; } + case LTTNG_CLEAR_SESSION: + { + ret = cmd_clear_session(cmd_ctx->session); + if (ret != LTTNG_OK) { + goto error; + } + break; + } default: ret = LTTNG_ERR_UND; break; diff --git a/tests/destructive/metadata-regeneration b/tests/destructive/metadata-regeneration index d4e632a11..9dedca1e0 100755 --- a/tests/destructive/metadata-regeneration +++ b/tests/destructive/metadata-regeneration @@ -134,7 +134,9 @@ function test_ust_local () create_lttng_session_ok $SESSION_NAME $TRACE_PATH enable_ust_lttng_event_ok $SESSION_NAME $UST_EVENT_NAME - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT \ + --sync-after-first-event ${file_sync_after_first} \ + --sync-before-last-event ${file_sync_before_last} /dev/null 2>&1 & start_lttng_tracing_ok $SESSION_NAME @@ -170,7 +172,9 @@ function test_ust_streaming () lttng_create_session_uri enable_ust_lttng_event_ok $SESSION_NAME $UST_EVENT_NAME - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT \ + --sync-after-first-event ${file_sync_after_first} \ + --sync-before-last-event ${file_sync_before_last} /dev/null 2>&1 & start_lttng_tracing_ok $SESSION_NAME diff --git a/tests/perf/test_perf_raw.in b/tests/perf/test_perf_raw.in index 9fab2cd79..671dcc423 100644 --- a/tests/perf/test_perf_raw.in +++ b/tests/perf/test_perf_raw.in @@ -69,7 +69,7 @@ function test_ust_raw() start_lttng_tracing_ok - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT >/dev/null 2>&1 + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT >/dev/null 2>&1 stop_lttng_tracing_ok diff --git a/tests/regression/tools/crash/test_crash b/tests/regression/tools/crash/test_crash index 8c62c513d..97b94a8a9 100755 --- a/tests/regression/tools/crash/test_crash +++ b/tests/regression/tools/crash/test_crash @@ -48,7 +48,7 @@ function start_test_app() local tmp_file=$(mktemp -u) # Start application with a temporary file. - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT $tmp_file & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT --sync-after-first-event $tmp_file & ret=$? APPS_PID="${APPS_PID} ${!}" ok $ret "Start application to trace" @@ -232,7 +232,7 @@ function test_lttng_crash() start_lttng_tracing_ok $session_name # Generate 10 events - $TESTAPP_BIN 10 0 + $TESTAPP_BIN -i 10 -w 0 stop_lttng_tracing crash_recup_count=$($LTTNG_CRASH $shm_path | wc -l) @@ -270,7 +270,7 @@ function test_lttng_crash_extraction() start_lttng_tracing_ok $session_name # Generate 10 events - $TESTAPP_BIN 10 0 + $TESTAPP_BIN -i 10 -w 0 stop_lttng_tracing $LTTNG_CRASH -x $extraction_path $shm_path @@ -366,7 +366,7 @@ function test_lttng_crash_extraction_sigkill() start_lttng_tracing_ok $session_name # Generate 10 events - $TESTAPP_BIN 10 0 + $TESTAPP_BIN -i 10 -w 0 sigstop_lttng_sessiond sigstop_lttng_consumerd diff --git a/tests/regression/tools/exclusion/test_exclusion b/tests/regression/tools/exclusion/test_exclusion index 949cd41df..fae072ca8 100755 --- a/tests/regression/tools/exclusion/test_exclusion +++ b/tests/regression/tools/exclusion/test_exclusion @@ -40,7 +40,7 @@ function enable_ust_lttng_all_event_exclusion() function run_apps { - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT >/dev/null 2>&1 } function test_exclusion diff --git a/tests/regression/tools/live/test_lttng_ust b/tests/regression/tools/live/test_lttng_ust index 06017d01d..9fadeeecf 100755 --- a/tests/regression/tools/live/test_lttng_ust +++ b/tests/regression/tools/live/test_lttng_ust @@ -74,7 +74,7 @@ start_lttng_relayd "-o $TRACE_PATH" setup_live_tracing # Run app in background -$TESTAPP_BIN $NR_ITER $NR_USEC_WAIT >/dev/null 2>&1 +$TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT >/dev/null 2>&1 clean_live_tracing diff --git a/tests/regression/tools/live/test_ust b/tests/regression/tools/live/test_ust index 0384a706f..2c35665b1 100755 --- a/tests/regression/tools/live/test_ust +++ b/tests/regression/tools/live/test_ust @@ -63,7 +63,7 @@ start_lttng_relayd_notap "-o $TRACE_PATH" setup_live_tracing # Run app in background -$TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} >/dev/null 2>&1 +$TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT --sync-after-first-event ${file_sync_after_first} >/dev/null 2>&1 while [ ! -f "${file_sync_after_first}" ]; do sleep 0.5 diff --git a/tests/regression/tools/live/test_ust_tracefile_count b/tests/regression/tools/live/test_ust_tracefile_count index 6da368fc6..77a925c61 100755 --- a/tests/regression/tools/live/test_ust_tracefile_count +++ b/tests/regression/tools/live/test_ust_tracefile_count @@ -64,7 +64,7 @@ start_lttng_relayd_notap "-o $TRACE_PATH" setup_live_tracing # Run app in background -$TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} >/dev/null 2>&1 +$TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT --sync-after-first-event ${file_sync_after_first} >/dev/null 2>&1 while [ ! -f "${file_sync_after_first}" ]; do sleep 0.5 diff --git a/tests/regression/tools/mi/test_mi b/tests/regression/tools/mi/test_mi index 48dda7da6..f6bc9b36f 100755 --- a/tests/regression/tools/mi/test_mi +++ b/tests/regression/tools/mi/test_mi @@ -544,7 +544,9 @@ function test_list_ust_event () OUTPUT_DEST=$OUTPUT_DIR/$OUTPUT_FILE #Begin testing - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} & 2>/dev/null + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT \ + --sync-after-first-event ${file_sync_after_first} \ + --sync-before-last-event ${file_sync_before_last} & 2>/dev/null while [ ! -f "${file_sync_after_first}" ]; do sleep 0.5 diff --git a/tests/regression/tools/notification/test_notification_multi_app b/tests/regression/tools/notification/test_notification_multi_app index 0a05ea6a0..ff3c82d6d 100755 --- a/tests/regression/tools/notification/test_notification_multi_app +++ b/tests/regression/tools/notification/test_notification_multi_app @@ -97,7 +97,7 @@ function ust_event_generator if [[ -f $state_file ]]; then rm $state_file 2> /dev/null fi - taskset -c 0 $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT > /dev/null 2>&1 + taskset -c 0 $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT > /dev/null 2>&1 fi done } diff --git a/tests/regression/tools/notification/test_notification_ust b/tests/regression/tools/notification/test_notification_ust index 8941e476d..fd6fd43ca 100755 --- a/tests/regression/tools/notification/test_notification_ust +++ b/tests/regression/tools/notification/test_notification_ust @@ -65,7 +65,7 @@ function ust_event_generator if [[ -f $state_file ]]; then rm -rf $state_file 2> /dev/null fi - taskset -c 0 $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT > /dev/null 2>&1 + taskset -c 0 $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT > /dev/null 2>&1 fi done } diff --git a/tests/regression/tools/regen-metadata/test_ust b/tests/regression/tools/regen-metadata/test_ust index b7f1af1d8..1057a5fe7 100755 --- a/tests/regression/tools/regen-metadata/test_ust +++ b/tests/regression/tools/regen-metadata/test_ust @@ -71,7 +71,9 @@ function test_ust_streaming () lttng_create_session_uri enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT \ + --sync-after-first-event ${file_sync_after_first} \ + --sync-before-last-event ${file_sync_before_last} >/dev/null 2>&1 & start_lttng_tracing_ok $SESSION_NAME @@ -102,7 +104,9 @@ function test_ust_local () create_lttng_session_ok $SESSION_NAME $TRACE_PATH enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT \ + --sync-after-first-event ${file_sync_after_first} \ + --sync-before-last-event ${file_sync_before_last} > /dev/null 2>&1 & start_lttng_tracing_ok $SESSION_NAME @@ -134,7 +138,9 @@ function test_ust_pid () enable_channel_per_pid $SESSION_NAME "channel0" enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME "channel0" - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT \ + --sync-after-first-event ${file_sync_after_first} \ + --sync-before-last-event ${file_sync_before_last} >/dev/null 2>&1 & start_lttng_tracing_ok $SESSION_NAME @@ -165,7 +171,9 @@ function test_ust_live () lttng_create_session_uri_live $SESSION_NAME $TRACE_PATH enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT \ + --sync-after-first-event ${file_sync_after_first} \ + --sync-before-last-event ${file_sync_before_last} >/dev/null 2>&1 & start_lttng_tracing_ok $SESSION_NAME diff --git a/tests/regression/tools/regen-statedump/test_ust b/tests/regression/tools/regen-statedump/test_ust index 486b9a560..a63620d57 100755 --- a/tests/regression/tools/regen-statedump/test_ust +++ b/tests/regression/tools/regen-statedump/test_ust @@ -46,7 +46,9 @@ function test_ust_local () create_lttng_session_ok $SESSION_NAME $TRACE_PATH enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT \ + --sync-after-first-event ${file_sync_after_first} \ + --sync-before-last-event ${file_sync_before_last} >/dev/null 2>&1 & start_lttng_tracing_ok $SESSION_NAME diff --git a/tests/regression/tools/snapshots/test_ust_streaming b/tests/regression/tools/snapshots/test_ust_streaming index 93b0957f3..b986a9fde 100755 --- a/tests/regression/tools/snapshots/test_ust_streaming +++ b/tests/regression/tools/snapshots/test_ust_streaming @@ -61,7 +61,7 @@ function start_test_app() local tmp_file=$(mktemp -u) # Start application with a temporary file. - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT $tmp_file & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT --sync-after-first-event $tmp_file & ret=$? APPS_PID="${APPS_PID} ${!}" ok $ret "Start application to trace" diff --git a/tests/regression/tools/snapshots/ust_test b/tests/regression/tools/snapshots/ust_test index 755cef9e0..54b7d8691 100755 --- a/tests/regression/tools/snapshots/ust_test +++ b/tests/regression/tools/snapshots/ust_test @@ -50,7 +50,7 @@ function start_test_app() local tmp_file=$(mktemp -u) # Start application with a temporary file. - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT $tmp_file & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT --sync-after-first-event $tmp_file & ret=$? APPS_PID="${APPS_PID} ${!}" ok $ret "Start application to trace" diff --git a/tests/regression/tools/streaming/test_high_throughput_limits b/tests/regression/tools/streaming/test_high_throughput_limits index 32c3f1f2b..276e1a96c 100755 --- a/tests/regression/tools/streaming/test_high_throughput_limits +++ b/tests/regression/tools/streaming/test_high_throughput_limits @@ -91,7 +91,7 @@ function run_apps # due to very slow communication between the consumer and relayd making # the status reply from the consumer quite slow thus delaying the # registration done message. - LTTNG_UST_REGISTER_TIMEOUT=-1 $TESTAPP_BIN $NR_ITER & >/dev/null 2>&1 + LTTNG_UST_REGISTER_TIMEOUT=-1 $TESTAPP_BIN -i $NR_ITER & >/dev/null 2>&1 done } diff --git a/tests/regression/tools/streaming/test_ust b/tests/regression/tools/streaming/test_ust index a5d5b5e92..bda8ffafb 100755 --- a/tests/regression/tools/streaming/test_ust +++ b/tests/regression/tools/streaming/test_ust @@ -49,7 +49,6 @@ function lttng_create_session_uri function test_ust_before_start () { - local file_sync_after_first=$(mktemp -u) local file_sync_before_last=$(mktemp -u) diag "Test UST streaming BEFORE tracing starts" @@ -57,7 +56,7 @@ function test_ust_before_start () enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME # Run 5 times with a 1 second delay - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT --sync-before-last-event ${file_sync_before_last} > /dev/null 2>&1 & start_lttng_tracing_ok $SESSION_NAME @@ -68,7 +67,6 @@ function test_ust_before_start () stop_lttng_tracing_ok $SESSION_NAME destroy_lttng_session_ok $SESSION_NAME - rm -f ${file_sync_after_first} rm -f ${file_sync_before_last} } @@ -82,7 +80,8 @@ function test_ust_after_start () start_lttng_tracing_ok $SESSION_NAME # Run 5 times with a 1 second delay - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} >/dev/null 2>&1 + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT \ + --sync-after-first-event ${file_sync_after_first} >/dev/null 2>&1 while [ ! -f "${file_sync_after_first}" ]; do sleep 0.5 diff --git a/tests/regression/tools/tracefile-limits/test_tracefile_count b/tests/regression/tools/tracefile-limits/test_tracefile_count index 6ada8580f..e446d3f3e 100755 --- a/tests/regression/tools/tracefile-limits/test_tracefile_count +++ b/tests/regression/tools/tracefile-limits/test_tracefile_count @@ -119,7 +119,7 @@ function test_tracefile_count_limit () start_lttng_tracing_ok $session_name - $TESTAPP_BIN $num_iter >/dev/null 2>&1 + $TESTAPP_BIN -i $num_iter >/dev/null 2>&1 stop_lttng_tracing_ok $session_name diff --git a/tests/regression/tools/tracefile-limits/test_tracefile_size b/tests/regression/tools/tracefile-limits/test_tracefile_size index 3dddbe613..de263bbfb 100755 --- a/tests/regression/tools/tracefile-limits/test_tracefile_size +++ b/tests/regression/tools/tracefile-limits/test_tracefile_size @@ -113,7 +113,7 @@ function test_tracefile_size_limit () start_lttng_tracing_ok $session_name - $TESTAPP_BIN $NR_ITER >/dev/null 2>&1 + $TESTAPP_BIN -i $NR_ITER >/dev/null 2>&1 stop_lttng_tracing_ok $session_name @@ -152,7 +152,7 @@ function test_tracefile_size_limit_pagesize () start_lttng_tracing_ok $session_name - $TESTAPP_BIN $NR_ITER >/dev/null 2>&1 + $TESTAPP_BIN -i $NR_ITER >/dev/null 2>&1 stop_lttng_tracing_ok $session_name diff --git a/tests/regression/tools/wildcard/test_event_wildcard b/tests/regression/tools/wildcard/test_event_wildcard index 61ea67a72..d0116722e 100755 --- a/tests/regression/tools/wildcard/test_event_wildcard +++ b/tests/regression/tools/wildcard/test_event_wildcard @@ -34,7 +34,7 @@ source $TESTDIR/utils/utils.sh function run_ust { - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT } function run_kernel diff --git a/tests/regression/ust/before-after/test_before_after b/tests/regression/ust/before-after/test_before_after index 45ef48fc3..237e21b91 100755 --- a/tests/regression/ust/before-after/test_before_after +++ b/tests/regression/ust/before-after/test_before_after @@ -42,7 +42,7 @@ function test_before_apps() enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME start_lttng_tracing_ok $SESSION_NAME - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT & wait ok $? "Traced application stopped." @@ -63,7 +63,9 @@ function test_after_apps() create_lttng_session_ok $SESSION_NAME $TRACE_PATH enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT \ + --sync-after-first-event ${file_sync_after_first} \ + --sync-before-last-event ${file_sync_before_last} & ok $? "Application started in background." start_lttng_tracing_ok $SESSION_NAME diff --git a/tests/regression/ust/blocking/test_blocking b/tests/regression/ust/blocking/test_blocking index b1c3f2d09..a19de08d8 100755 --- a/tests/regression/ust/blocking/test_blocking +++ b/tests/regression/ust/blocking/test_blocking @@ -35,7 +35,7 @@ source $TESTDIR/utils/utils.sh # Run app on CPU 0 to ensure we only write in a single ring buffer. function run_app() { - taskset 0x00000001 $TESTAPP_BIN $NUM_EVENT + taskset 0x00000001 $TESTAPP_BIN -i $NUM_EVENT ok $? "Application done" } diff --git a/tests/regression/ust/buffers-pid/test_buffers_pid b/tests/regression/ust/buffers-pid/test_buffers_pid index 94e6fe45f..2ca4a0297 100755 --- a/tests/regression/ust/buffers-pid/test_buffers_pid +++ b/tests/regression/ust/buffers-pid/test_buffers_pid @@ -58,7 +58,7 @@ test_after_multiple_apps() { start_lttng_tracing_ok $SESSION_NAME for i in `seq 1 5`; do - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT >/dev/null 2>&1 & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT >/dev/null 2>&1 & ok $? "Start application $i for tracing" done wait @@ -80,7 +80,9 @@ 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 ${file_sync_after_first}_${i} ${file_sync_before_last}_${i} >/dev/null 2>&1 & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT \ + --sync-after-first-event ${file_sync_after_first}_${i} \ + --sync-before-last-event ${file_sync_before_last}_${i} >/dev/null 2>&1 & ok $? "Start application $i for tracing" done @@ -131,7 +133,7 @@ test_after_app() { enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME "channel0" start_lttng_tracing_ok $SESSION_NAME - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT & ok $? "Start application to trace" wait @@ -156,7 +158,9 @@ test_before_app() { enable_channel_per_pid $SESSION_NAME "channel0" enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME "channel0" - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT \ + --sync-after-first-event ${file_sync_after_first} \ + --sync-before-last-event ${file_sync_before_last} & ok $? "Start application to trace" start_lttng_tracing_ok $SESSION_NAME @@ -210,7 +214,7 @@ test_multiple_channels() { ok $? "Enable event $EVENT_NAME for session $SESSION_NAME in channel4" start_lttng_tracing_ok $SESSION_NAME - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT & ok $? "Start application to trace" wait diff --git a/tests/regression/ust/clock-override/test_clock_override b/tests/regression/ust/clock-override/test_clock_override index d63ec8bcb..ce5d9687a 100755 --- a/tests/regression/ust/clock-override/test_clock_override +++ b/tests/regression/ust/clock-override/test_clock_override @@ -52,7 +52,7 @@ source $TESTDIR/utils/utils.sh # MUST set TESTDIR before calling those functions function run_app() { - $TESTAPP_BIN $NUM_EVENT + $TESTAPP_BIN -i $NUM_EVENT ok $? "Application done" } diff --git a/tests/regression/ust/getcpu-override/test_getcpu_override b/tests/regression/ust/getcpu-override/test_getcpu_override index 4ca385aeb..75a3d6d4d 100755 --- a/tests/regression/ust/getcpu-override/test_getcpu_override +++ b/tests/regression/ust/getcpu-override/test_getcpu_override @@ -55,14 +55,14 @@ num_cpus=$(conf_proc_count) run_app() { diag "Launching app without getcpu-plugin wrapper" - $TESTAPP_BIN $NUM_EVENT $EVENT_WAIT_USEC + $TESTAPP_BIN -i $NUM_EVENT -w $EVENT_WAIT_USEC ok $? "Application without wrapper done" } run_getcpu_plugin_app() { diag "Launching app with getcpu-plugin wrapper" - $CURDIR/$TESTAPP_WRAPPER $TESTAPP_BIN $NUM_EVENT $EVENT_WAIT_USEC + $CURDIR/$TESTAPP_WRAPPER $TESTAPP_BIN -i $NUM_EVENT -w $EVENT_WAIT_USEC ok $? "Application with wrapper done" } diff --git a/tests/regression/ust/nprocesses/test_nprocesses b/tests/regression/ust/nprocesses/test_nprocesses index 7677cc6cc..8b64e621a 100755 --- a/tests/regression/ust/nprocesses/test_nprocesses +++ b/tests/regression/ust/nprocesses/test_nprocesses @@ -52,7 +52,9 @@ file_sync_before_last=$(mktemp -u) diag "Starting $NUM_PROCESS test applications" for i in `seq 1 $NUM_PROCESS` do - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} >/dev/null 2>&1 & + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT \ + --sync-after-first-event ${file_sync_after_first} \ + --sync-before-last-event ${file_sync_before_last} >/dev/null 2>&1 & APPS_PID="${APPS_PID} ${!}" done 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 ea6b93838..bfc3b2091 100755 --- a/tests/regression/ust/periodical-metadata-flush/test_periodical_metadata_flush +++ b/tests/regression/ust/periodical-metadata-flush/test_periodical_metadata_flush @@ -106,7 +106,7 @@ function check_app_tmp_file() function start_trace_app() { # Start application with a temporary file. - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT $APP_TMP_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" diff --git a/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush b/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush index a7a93771a..275e65ec4 100755 --- a/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush +++ b/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush @@ -41,7 +41,7 @@ source $TESTDIR/utils/utils.sh # MUST set TESTDIR before calling those functions function run_app() { - $TESTAPP_BIN $NUM_EVENT + $TESTAPP_BIN -i $NUM_EVENT ok $? "Application done" } diff --git a/tests/regression/ust/test_event_perf b/tests/regression/ust/test_event_perf index 4e665e65e..7dda8e6f9 100755 --- a/tests/regression/ust/test_event_perf +++ b/tests/regression/ust/test_event_perf @@ -86,7 +86,7 @@ function test_event_basic() start_lttng_tracing_ok - $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT >/dev/null 2>&1 + $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT >/dev/null 2>&1 stop_lttng_tracing_ok diff --git a/tests/stress/launch_ust_app b/tests/stress/launch_ust_app index 2bb8e4f66..9442ee22c 100755 --- a/tests/stress/launch_ust_app +++ b/tests/stress/launch_ust_app @@ -52,7 +52,7 @@ fi # Infinite loop. Spawns NR_APP apps for NR_USEC_WAIT doing NR_APP_LOOP. while :; do for j in `seq 1 $NR_APP`; do - $TESTAPP_BIN $NR_APP_LOOP $NR_USEC_WAIT >/dev/null 2>&1 & + $TESTAPP_BIN -i $NR_APP_LOOP -w $NR_USEC_WAIT >/dev/null 2>&1 & done # Wait before the next round of applications. sleep 3 diff --git a/tests/utils/testapp/gen-ust-events/gen-ust-events.c b/tests/utils/testapp/gen-ust-events/gen-ust-events.c index c5dd31a35..2000a01ff 100644 --- a/tests/utils/testapp/gen-ust-events/gen-ust-events.c +++ b/tests/utils/testapp/gen-ust-events/gen-ust-events.c @@ -16,6 +16,7 @@ */ #define _LGPL_SOURCE +#include #include #include #include @@ -37,83 +38,123 @@ #define TRACEPOINT_DEFINE #include "tp.h" -void create_file(const char *path) +static +int create_file(const char *path) { - static bool file_created = false; int ret; - if (!path || file_created) { - return; + if (!path) { + return -1; } ret = creat(path, S_IRWXU); if (ret < 0) { - fprintf(stderr, "Failed to create file %s\n", path); - return; + perror("creat"); + return -1; + } + + ret = close(ret); + if (ret < 0) { + perror("close"); + return -1; } - (void) close(ret); - file_created = true; + return 0; } static -void wait_on_file(const char *path) +int wait_on_file(const char *path) { + int ret; + struct stat buf; + if (!path) { - return; + return -1; } - for (;;) { - int ret; - struct stat buf; + for (;;) { ret = stat(path, &buf); if (ret == -1 && errno == ENOENT) { - (void) poll(NULL, 0, 10); /* 10 ms delay */ + ret = poll(NULL, 0, 10); /* 10 ms delay */ + /* Should return 0 everytime */ + if (ret) { + if (ret < 0) { + perror("perror"); + } else { + fprintf(stderr, + "poll return value is larger than zero\n"); + } + return -1; + } continue; /* retry */ } if (ret) { perror("stat"); - exit(EXIT_FAILURE); + return -1; } break; /* found */ } + + return 0; } +static struct option long_options[] = +{ + /* These options set a flag. */ + {"iter", required_argument, 0, 'i'}, + {"wait", required_argument, 0, 'w'}, + {"sync-after-first-event", required_argument, 0, 'a'}, + {"sync-before-last-event", required_argument, 0, 'b'}, + {0, 0, 0, 0} +}; + int main(int argc, char **argv) { unsigned int i, netint; + int option_index; + char option_char; long values[] = { 1, 2, 3 }; char text[10] = "test"; double dbl = 2.0; float flt = 2222.0; - int nr_iter = 100, ret = 0; + int nr_iter = 100, ret = 0, first_event_file_created = 0; useconds_t nr_usec = 0; char *after_first_event_file_path = NULL; char *before_last_event_file_path = NULL; - if (set_signal_handler()) { - ret = -1; - goto end; - } - - if (argc >= 2) { - /* - * If nr_iter is negative, do an infinite tracing loop. - */ - nr_iter = atoi(argv[1]); + while((option_char = getopt_long(argc, argv, "i:w:a:b:c:d:", long_options, &option_index)) != -1) { + switch (option_char) { + case 'a': + after_first_event_file_path = strdup(optarg); + break; + case 'b': + before_last_event_file_path = strdup(optarg); + break; + case 'i': + nr_iter = atoi(optarg); + break; + case 'w': + nr_usec = atoi(optarg); + break; + case '?': + /* getopt_long already printed an error message. */ + break; + default: + ret = -1; + goto end; + } } - if (argc >= 3) { - /* By default, don't wait unless user specifies. */ - nr_usec = atoi(argv[2]); + if (optind != argc) { + fprintf(stderr, "Error: takes long options only."); + ret = -1; + goto end; } - if (argc >= 4) { - after_first_event_file_path = argv[3]; - } - if (argc >= 5) { - before_last_event_file_path = argv[4]; + if (set_signal_handler()) { + ret = -1; + goto end; } for (i = 0; nr_iter < 0 || i < nr_iter; i++) { @@ -122,7 +163,12 @@ int main(int argc, char **argv) * Wait on synchronization before writing last * event. */ - wait_on_file(before_last_event_file_path); + if (before_last_event_file_path) { + ret = wait_on_file(before_last_event_file_path); + if (ret != 0) { + goto end; + } + } } netint = htonl(i); tracepoint(tp, tptest, i, netint, values, text, @@ -132,7 +178,16 @@ int main(int argc, char **argv) * First loop we create the file if asked to indicate * that at least one tracepoint has been hit. */ - create_file(after_first_event_file_path); + if (after_first_event_file_path && first_event_file_created == 0) { + ret = create_file(after_first_event_file_path); + + if (ret != 0) { + goto end; + } else { + first_event_file_created = 1; + } + } + if (nr_usec) { if (usleep_safe(nr_usec)) { ret = -1; @@ -145,5 +200,7 @@ int main(int argc, char **argv) } end: + free(after_first_event_file_path); + free(before_last_event_file_path); exit(!ret ? EXIT_SUCCESS : EXIT_FAILURE); } -- 2.34.1