Commit | Line | Data |
---|---|---|
e02b109b DG |
1 | #!/bin/bash |
2 | # | |
3 | # Copyright (C) - 2014 David Goulet <dgoulet@efficios.com> | |
4 | # | |
5 | # This library is free software; you can redistribute it and/or modify it under | |
6 | # the terms of the GNU Lesser General Public License as published by the Free | |
7 | # Software Foundation; version 2.1 of the License. | |
8 | # | |
9 | # This library is distributed in the hope that it will be useful, but WITHOUT | |
10 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | |
11 | # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more | |
12 | # details. | |
13 | # | |
14 | # You should have received a copy of the GNU Lesser General Public License | |
15 | # along with this library; if not, write to the Free Software Foundation, Inc., | |
16 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
17 | ||
18 | TEST_DESC="Load session(s)" | |
19 | ||
20 | CURDIR=$(dirname $0)/ | |
21 | TESTDIR=$CURDIR/../../../ | |
22 | SESSIOND_BIN="lttng-sessiond" | |
23 | RELAYD_BIN="lttng-relayd" | |
24 | LTTNG_BIN="lttng" | |
742e5f18 | 25 | export LTTNG_SESSION_CONFIG_XSD_PATH=$(readlink -m ${TESTDIR}../src/common/config/) |
e02b109b DG |
26 | |
27 | SESSION_NAME="load-42" | |
28 | EVENT_NAME="tp:tptest" | |
29 | ||
30 | DIR=$(readlink -f $TESTDIR) | |
31 | ||
26313f02 | 32 | NUM_TESTS=30 |
e02b109b DG |
33 | |
34 | source $TESTDIR/utils/utils.sh | |
35 | ||
36 | # MUST set TESTDIR before calling those functions | |
37 | plan_tests $NUM_TESTS | |
38 | ||
39 | print_test_banner "$TEST_DESC" | |
40 | ||
e02b109b DG |
41 | function test_basic_load() |
42 | { | |
43 | diag "Test basic load" | |
44 | ||
83b7c3bf | 45 | lttng_load "-i $CURDIR/$SESSION_NAME.lttng" |
e02b109b | 46 | |
67b4c664 | 47 | destroy_lttng_session_ok $SESSION_NAME |
e02b109b DG |
48 | } |
49 | ||
50 | function test_complex_load() | |
51 | { | |
52 | local sess="$SESSION_NAME-complex" | |
26313f02 JR |
53 | local mi_result="" |
54 | local ret=1 | |
e02b109b DG |
55 | diag "Test complex load" |
56 | ||
57 | # Start relayd with localhost binding. The complex session uses those | |
58 | # custom values. | |
59 | start_lttng_relayd "-C tcp://localhost:8172 -D tcp://localhost:9817" | |
60 | ||
83b7c3bf | 61 | lttng_load "-i $CURDIR/$sess.lttng" |
e02b109b DG |
62 | |
63 | # Once loaded, we are suppose to be able to disable certain events/channels | |
64 | # thus having a confirmation that it's valid | |
722f854b JR |
65 | disable_ust_lttng_event $sess uevent1 chan1 |
66 | disable_ust_lttng_event $sess uevent2 chan2 | |
67 | disable_ust_lttng_event $sess uevent3* chan3 | |
e02b109b DG |
68 | |
69 | disable_ust_lttng_channel $sess chan1 | |
70 | disable_ust_lttng_channel $sess chan2 | |
71 | disable_ust_lttng_channel $sess chan3 | |
72 | ||
ea05d84b JG |
73 | # Confirm that an event stored as disabled is restored in its disabled state |
74 | local mi_output_file=$(mktemp) | |
75 | if [ $? -ne 0 ]; then | |
76 | break; | |
77 | fi | |
373ff56c | 78 | $TESTDIR/../src/bin/lttng/$LTTNG_BIN --mi XML list $sess -c chan2 > $mi_output_file |
272ba89a | 79 | mi_result=$($CURDIR/../mi/extract_xml $mi_output_file "//lttng:command/lttng:output/lttng:sessions/lttng:session/lttng:domains/lttng:domain[lttng:type='UST']/lttng:channels/lttng:channel[lttng:name='chan2']/lttng:events/lttng:event[lttng:name='uevent_disabled']/lttng:enabled/text()") |
ea05d84b JG |
80 | if [[ $mi_result = "false" ]]; then |
81 | ok 0 "Disabled event is loaded in disabled state" | |
82 | else | |
83 | fail "Disabled event is loaded in disabled state" | |
84 | fi | |
26313f02 JR |
85 | |
86 | mi_result=$($CURDIR/../mi/extract_xml $mi_output_file "//lttng:command/lttng:output/lttng:sessions/lttng:session/lttng:domains/lttng:domain/lttng:channels/lttng:channel[lttng:name='chan2']/lttng:events/lttng:event[lttng:name='uevent_disabled']/lttng:enabled/text()") | |
87 | test $mi_result = "false" | |
88 | ok $? "Disabled event is loaded in disabled state" | |
89 | ||
90 | # Check that uevent_same_name_diff_llevel with log level 6 (TRACE_INFO) is enabled | |
91 | # This ensure that the state of events with similar name but not same | |
92 | # descriptor tuple (exclusion,filter,loglevel) is restored correctly. | |
93 | mi_result=$($CURDIR/../mi/extract_xml $mi_output_file "//lttng:command/lttng:output/lttng:sessions/lttng:session/lttng:domains/lttng:domain/lttng:channels/lttng:channel[lttng:name='chan2']/lttng:events/lttng:event[lttng:name='uevent_same_name_diff_llevel' and lttng:loglevel='TRACE_INFO']/lttng:enabled/text()") | |
94 | test $mi_result = "true" | |
95 | ok $? "Enabled event with same name but different loglevel is in disabled state" | |
96 | ||
67b4c664 | 97 | destroy_lttng_session_ok $sess |
e02b109b | 98 | |
05aa48da | 99 | stop_lttng_relayd |
e02b109b DG |
100 | } |
101 | ||
102 | function test_all_load() | |
103 | { | |
104 | diag "Test load all sessions" | |
105 | ||
106 | # Start relayd with localhost binding. The complex session uses those | |
107 | # custom values. | |
108 | start_lttng_relayd "-C tcp://localhost:8172 -D tcp://localhost:9817" | |
109 | ||
110 | lttng_load "-a -i $CURDIR" | |
111 | ||
67b4c664 JR |
112 | destroy_lttng_session_ok $SESSION_NAME |
113 | destroy_lttng_session_ok "$SESSION_NAME-complex" | |
722f854b | 114 | destroy_lttng_session_ok "$SESSION_NAME-trackers" |
e02b109b | 115 | |
05aa48da | 116 | stop_lttng_relayd |
e02b109b DG |
117 | } |
118 | ||
119 | function test_overwrite() | |
120 | { | |
121 | diag "Test load overwrite" | |
122 | ||
83b7c3bf | 123 | lttng_load "-i $CURDIR/$SESSION_NAME.lttng" |
e02b109b DG |
124 | |
125 | # This one should succeed | |
11143783 | 126 | lttng_load "-f -i $CURDIR $SESSION_NAME" |
e02b109b | 127 | |
67b4c664 | 128 | destroy_lttng_session_ok $SESSION_NAME |
e02b109b DG |
129 | } |
130 | ||
722f854b JR |
131 | function test_trackers() |
132 | { | |
133 | diag "Test trackers loading" | |
134 | ||
135 | lttng_load "-i $CURDIR/$SESSION_NAME-trackers.lttng" | |
136 | ||
137 | diag "Test pid tracker" | |
138 | local mi_output_file=$(mktemp) | |
139 | if [ $? -ne 0 ]; then | |
140 | break; | |
141 | fi | |
142 | $TESTDIR/../src/bin/lttng/$LTTNG_BIN --mi XML list "$SESSION_NAME-trackers" > $mi_output_file | |
67df60e9 | 143 | mi_result=$($CURDIR/../mi/extract_xml -e $mi_output_file "//lttng:command/lttng:output/lttng:sessions/lttng:session/lttng:domains/lttng:domain/lttng:trackers/lttng:pid_tracker/lttng:targets/lttng:pid_target") |
722f854b JR |
144 | if [[ $mi_result = "true" ]]; then |
145 | ok 0 "Pid target is present" | |
146 | else | |
147 | fail "Pid target missing" | |
148 | fi | |
149 | ||
150 | # Test to remove the target just to make sure | |
151 | lttng_untrack_ok "-p 666 -u -s $SESSION_NAME-trackers" | |
152 | ||
153 | destroy_lttng_session_ok "$SESSION_NAME-trackers" | |
154 | } | |
155 | ||
e02b109b DG |
156 | start_lttng_sessiond |
157 | ||
158 | TESTS=( | |
159 | test_basic_load | |
160 | test_complex_load | |
161 | test_all_load | |
162 | test_overwrite | |
722f854b | 163 | test_trackers |
e02b109b DG |
164 | ) |
165 | ||
166 | for fct_test in ${TESTS[@]}; | |
167 | do | |
168 | TRACE_PATH=$(mktemp -d) | |
169 | ||
170 | ${fct_test} | |
171 | if [ $? -ne 0 ]; then | |
172 | break; | |
173 | fi | |
174 | # Only delete if successful | |
175 | rm -rf $TRACE_PATH | |
176 | done | |
177 | ||
178 | stop_lttng_sessiond |