de07d31a4029d3b1140831d3651bbb4074bfb8aa
[lttng-tools.git] / tests / regression / ust / before-after / test_before_after
1 #!/bin/bash
2 #
3 # Copyright (C) 2012 David Goulet <dgoulet@efficios.com>
4 #
5 # SPDX-License-Identifier: LGPL-2.1-only
6
7 TEST_DESC="UST tracer - Start tracing before and after execution"
8
9 CURDIR=$(dirname $0)/
10 TESTDIR=$CURDIR/../../..
11 NR_ITER=100
12 NR_USEC_WAIT=100000
13 TESTAPP_PATH="$TESTDIR/utils/testapp"
14 TESTAPP_NAME="gen-ust-events"
15 TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
16 SESSION_NAME="per-session"
17 EVENT_NAME="tp:tptest"
18 NUM_TESTS=16
19
20 source $TESTDIR/utils/utils.sh
21
22 if [ ! -x "$TESTAPP_BIN" ]; then
23 BAIL_OUT "No UST nevents binary detected."
24 fi
25
26 # MUST set TESTDIR before calling those functions
27
28 function test_before_apps()
29 {
30 # BEFORE application is spawned
31 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
32 enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME
33 start_lttng_tracing_ok $SESSION_NAME
34
35 $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT &
36 wait
37 ok $? "Traced application stopped."
38
39 stop_lttng_tracing_ok $SESSION_NAME
40 destroy_lttng_session_ok $SESSION_NAME
41
42 trace_match_only $EVENT_NAME $NR_ITER $TRACE_PATH
43
44 return $?
45 }
46
47 function test_after_apps()
48 {
49 local out
50 local file_sync_after_first=$(mktemp --tmpdir -u "tmp.${FUNCNAME[0]}_sync_after_first.XXXXXX")
51 local file_sync_before_last=$(mktemp --tmpdir -u "tmp.${FUNCNAME[0]}_sync_before_last.XXXXXX")
52
53 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
54 enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME
55
56 $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT \
57 --sync-after-first-event ${file_sync_after_first} \
58 --sync-before-last-event ${file_sync_before_last} &
59 ok $? "Application started in background."
60
61 start_lttng_tracing_ok $SESSION_NAME
62
63 touch ${file_sync_before_last}
64
65 wait
66
67 stop_lttng_tracing_ok $SESSION_NAME
68 destroy_lttng_session_ok $SESSION_NAME
69
70 rm -f ${file_sync_after_first}
71 rm -f ${file_sync_before_last}
72
73 validate_trace $EVENT_NAME $TRACE_PATH
74 out=$?
75
76 return $out
77 }
78
79 # MUST set TESTDIR before calling those functions
80 plan_tests $NUM_TESTS
81
82 print_test_banner "$TEST_DESC"
83
84 start_lttng_sessiond
85
86 diag "Start tracing BEFORE application is started"
87
88 TRACE_PATH=$(mktemp --tmpdir -d tmp.test_before_after_ust_trace_path.XXXXXX)
89
90 test_before_apps
91 out=$?
92 if [ $out -ne 0 ]; then
93 stop_lttng_sessiond
94 exit $out
95 fi
96
97 rm -rf $TRACE_PATH
98
99 diag "Start tracing AFTER application is started"
100
101 TRACE_PATH=$(mktemp --tmpdir -d tmp.test_before_after_ust_trace_path.XXXXXX)
102
103 test_after_apps
104 out=$?
105 if [ $out -ne 0 ]; then
106 stop_lttng_sessiond
107 exit $out
108 fi
109
110 stop_lttng_sessiond
111
112 rm -rf $TRACE_PATH
This page took 0.031251 seconds and 3 git commands to generate.