diff options
8 files changed, 1334 insertions, 1 deletions
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch new file mode 100644 index 0000000000..df18dc842b --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | From 7244eac44be929fabd6ed1333f96929ef8da564f Mon Sep 17 00:00:00 2001 | ||
2 | From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> | ||
3 | Date: Tue, 19 Mar 2019 17:56:49 +0000 | ||
4 | Subject: [PATCH] fix: tests: link libpause_consumer on liblttng-ctl | ||
5 | |||
6 | This preload test library uses symbols from liblttng-ctl which are | ||
7 | resolved when preloaded by GLIBC but not by MUSL. | ||
8 | |||
9 | Upstream-Status: Accepted [f667fbd7f8b9512f9943edb2597c226fcc424ee9] | ||
10 | Backported to 2.11 and 2.10. | ||
11 | |||
12 | Signed-off-by: Michael Jeanson <mjeanson@efficios.com> | ||
13 | --- | ||
14 | tests/regression/tools/notification/Makefile.am | 5 ++++- | ||
15 | 1 file changed, 4 insertions(+), 1 deletion(-) | ||
16 | |||
17 | diff --git a/tests/regression/tools/notification/Makefile.am b/tests/regression/tools/notification/Makefile.am | ||
18 | index 41adc69..a352bb8 100644 | ||
19 | --- a/tests/regression/tools/notification/Makefile.am | ||
20 | +++ b/tests/regression/tools/notification/Makefile.am | ||
21 | @@ -20,7 +20,10 @@ FORCE_SHARED_LIB_OPTIONS = -module -shared -avoid-version \ | ||
22 | -rpath $(abs_builddir) | ||
23 | |||
24 | libpause_consumer_la_SOURCES = consumer_testpoints.c | ||
25 | -libpause_consumer_la_LIBADD = $(top_builddir)/src/common/libcommon.la $(DL_LIBS) | ||
26 | +libpause_consumer_la_LIBADD = \ | ||
27 | + $(top_builddir)/src/common/libcommon.la \ | ||
28 | + $(top_builddir)/src/lib/lttng-ctl/liblttng-ctl.la \ | ||
29 | + $(DL_LIBS) | ||
30 | libpause_consumer_la_LDFLAGS = $(FORCE_SHARED_LIB_OPTIONS) | ||
31 | noinst_LTLIBRARIES = libpause_consumer.la | ||
32 | |||
33 | -- | ||
34 | 2.17.1 | ||
35 | |||
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch b/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch new file mode 100644 index 0000000000..5bb88d21e5 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch | |||
@@ -0,0 +1,52 @@ | |||
1 | From e7db27668a9d7fd279d45bc43f3a2d5847374e7b Mon Sep 17 00:00:00 2001 | ||
2 | From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> | ||
3 | Date: Tue, 12 Mar 2019 12:04:58 -0400 | ||
4 | Subject: [PATCH lttng-tools 1/2] Fix: test: skip test_getcpu_override on | ||
5 | single thread system | ||
6 | |||
7 | There is no value in performing this test on single thread system | ||
8 | since the only valid value for the cpu field is 0. | ||
9 | |||
10 | This test currently fails on single thread system (i.e yocto runquemu) | ||
11 | on the test_getcpu_override_fail test case. | ||
12 | |||
13 | Upstream-Status: Accepted [f87d0ca370c17b597762f5ee218f0e821ed2452d] | ||
14 | Backported to 2.11 and 2.10 | ||
15 | |||
16 | Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> | ||
17 | --- | ||
18 | .../ust/getcpu-override/test_getcpu_override | 16 +++++++++++----- | ||
19 | 1 file changed, 11 insertions(+), 5 deletions(-) | ||
20 | |||
21 | diff --git a/tests/regression/ust/getcpu-override/test_getcpu_override b/tests/regression/ust/getcpu-override/test_getcpu_override | ||
22 | index 4ca385aeb..ee3e31953 100755 | ||
23 | --- a/tests/regression/ust/getcpu-override/test_getcpu_override | ||
24 | +++ b/tests/regression/ust/getcpu-override/test_getcpu_override | ||
25 | @@ -157,13 +157,19 @@ plan_tests $NUM_TESTS | ||
26 | |||
27 | print_test_banner "$TEST_DESC" | ||
28 | |||
29 | -if [ -x "$CURDIR/.libs/lttng-ust-getcpu-override-test.so" ]; then | ||
30 | - foundobj=1 | ||
31 | -else | ||
32 | - foundobj=0 | ||
33 | +if [ ! -x "$CURDIR/.libs/lttng-ust-getcpu-override-test.so" ]; then | ||
34 | + skip 0 "No shared object generated. Skipping all tests." $NUM_TESTS && exit 0 | ||
35 | +fi | ||
36 | + | ||
37 | +if [ "$num_cpus" -eq "1" ]; then | ||
38 | + # Skip the test since we cannot perform it as designed since N mod 1 | ||
39 | + # is always equals to zero. There is no point testing this on a system | ||
40 | + # with a single thread. LTTng-UST limits the get_cpu function to return | ||
41 | + # value inside the [0, NUM_CPU - 1] range for a valid event (present in | ||
42 | + # trace). | ||
43 | + skip 0 "Test system only have a single thread. Skipping all tests." $NUM_TESTS && exit 0 | ||
44 | fi | ||
45 | |||
46 | -skip $foundobj "No shared object generated. Skipping all tests." $NUM_TESTS && exit 0 | ||
47 | |||
48 | TESTS=( | ||
49 | test_getcpu_override_fail | ||
50 | -- | ||
51 | 2.17.1 | ||
52 | |||
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch b/meta/recipes-kernel/lttng/lttng-tools/0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch new file mode 100644 index 0000000000..822b26a367 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-tools/0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch | |||
@@ -0,0 +1,80 @@ | |||
1 | From 83d165442d1c3658b6bafa28ddade8ffee7092ad Mon Sep 17 00:00:00 2001 | ||
2 | From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> | ||
3 | Date: Wed, 6 Mar 2019 16:46:49 -0500 | ||
4 | Subject: [PATCH lttng-tools 2/2] Fix: test: unit: the tree origin can be a | ||
5 | symlink itself | ||
6 | |||
7 | Problem: | ||
8 | |||
9 | The base tree is defined as "/tmp/.....XXXXXX". | ||
10 | On systems where "/tmp/" is itself a symlink utils_expand_path will | ||
11 | expand the tree origin itself. | ||
12 | |||
13 | For example on a base core-image-minimal Yocto build /tmp is a symlink | ||
14 | to "/var/tmp", which is a symlink to "/var/volatile". | ||
15 | |||
16 | utils_expand_path will return something like this for the symlink test: | ||
17 | "/var/volative/.....XXXXXX/...." which is the valid result. | ||
18 | |||
19 | Solution: | ||
20 | |||
21 | Simply use realpath on the tree_origin and use this path to perform the | ||
22 | test validation. | ||
23 | |||
24 | This work was performed in the effort to support yocto fully and be able | ||
25 | to run the test suite to detect problem as early as possible. | ||
26 | |||
27 | |||
28 | Upstream-Status: Accepted [f66e964a2e0c75f5e1a55fbcc963b1c5e2b4519d] | ||
29 | Backported to 2.11 and 2.10 | ||
30 | |||
31 | Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> | ||
32 | --- | ||
33 | tests/unit/test_utils_expand_path.c | 18 ++++++++++++++---- | ||
34 | 1 file changed, 14 insertions(+), 4 deletions(-) | ||
35 | |||
36 | diff --git a/tests/unit/test_utils_expand_path.c b/tests/unit/test_utils_expand_path.c | ||
37 | index d5cab002e..d047c207d 100644 | ||
38 | --- a/tests/unit/test_utils_expand_path.c | ||
39 | +++ b/tests/unit/test_utils_expand_path.c | ||
40 | @@ -281,8 +281,8 @@ error: | ||
41 | static void test_utils_expand_path(void) | ||
42 | { | ||
43 | char *result; | ||
44 | - char name[100], tmppath[PATH_MAX]; | ||
45 | - int i; | ||
46 | + char name[100], tmppath[PATH_MAX], real_tree_origin[PATH_MAX]; | ||
47 | + int i, treelen; | ||
48 | |||
49 | /* Test valid cases */ | ||
50 | for (i = 0; i < num_valid_tests; i++) { | ||
51 | @@ -295,14 +295,24 @@ static void test_utils_expand_path(void) | ||
52 | free(result); | ||
53 | } | ||
54 | |||
55 | + /* | ||
56 | + * Get the realpath for the tree_origin since it can itself be a | ||
57 | + * symlink. | ||
58 | + */ | ||
59 | + result = realpath(tree_origin, real_tree_origin); | ||
60 | + if (!result) { | ||
61 | + fail("realpath failed."); | ||
62 | + return; | ||
63 | + } | ||
64 | + | ||
65 | /* Test symlink tree cases */ | ||
66 | - int treelen = strlen(tree_origin) + 1; | ||
67 | + treelen = strlen(real_tree_origin) + 1; | ||
68 | for (i = 0; i < num_symlink_tests; i++) { | ||
69 | sprintf(name, "symlink tree test case: [tmppath/]%s", | ||
70 | symlink_tests_inputs[i].input); | ||
71 | |||
72 | snprintf(tmppath, PATH_MAX, "%s/%s", | ||
73 | - tree_origin, symlink_tests_inputs[i].input); | ||
74 | + real_tree_origin, symlink_tests_inputs[i].input); | ||
75 | result = utils_expand_path(tmppath); | ||
76 | ok(result != NULL && strcmp(result + treelen, | ||
77 | symlink_tests_inputs[i].expected_result) == 0, name); | ||
78 | -- | ||
79 | 2.17.1 | ||
80 | |||
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0004-Skip-when-testapp-is-not-present.patch b/meta/recipes-kernel/lttng/lttng-tools/0004-Skip-when-testapp-is-not-present.patch new file mode 100644 index 0000000000..6c9f7e462c --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-tools/0004-Skip-when-testapp-is-not-present.patch | |||
@@ -0,0 +1,610 @@ | |||
1 | From 95c27e6acceaeda55c729b9e92e594322adef13f Mon Sep 17 00:00:00 2001 | ||
2 | From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> | ||
3 | Date: Wed, 3 Apr 2019 16:31:18 -0400 | ||
4 | Subject: [PATCH lttng-tools] Skip when testapp is not present | ||
5 | |||
6 | We expect lttng-ust do be present, this is a wrong assumptions. | ||
7 | |||
8 | This is a quick fix. The real fix is to either detect at runtime | ||
9 | lttng-ust support or at build time (HAVE_LIBLTTNG_UST_CTL). | ||
10 | |||
11 | This prevent hang for make check done on a build configured with | ||
12 | --without-lttng-ust. | ||
13 | |||
14 | Upstream-Status: Inappropriate [other] | ||
15 | Reason: This patch is inappropriate for upstream for 2.10 stable release | ||
16 | since we do not backport "superficial" fix to the test suite. We do | ||
17 | backport when a test is broken. The fact that on --without-lttng-ust | ||
18 | hang is not a "broken" test per-see. Still, a variation of this fix will | ||
19 | be upstreamed in our master branch and possibly 2.11. The upstreamed | ||
20 | version will split the test in kernel/ust test and skip them at the | ||
21 | build system level. This patch is more succinct. | ||
22 | |||
23 | Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> | ||
24 | --- | ||
25 | tests/regression/tools/crash/test_crash | 4 ++ | ||
26 | .../regression/tools/exclusion/test_exclusion | 4 ++ | ||
27 | .../tools/filtering/test_valid_filter | 21 ++++-- | ||
28 | tests/regression/tools/health/test_thread_ok | 29 +++++--- | ||
29 | tests/regression/tools/live/Makefile.am | 2 - | ||
30 | tests/regression/tools/live/test_lttng_ust | 4 ++ | ||
31 | tests/regression/tools/live/test_ust | 4 ++ | ||
32 | .../tools/live/test_ust_tracefile_count | 4 ++ | ||
33 | tests/regression/tools/mi/test_mi | 4 ++ | ||
34 | .../notification/test_notification_multi_app | 18 +++-- | ||
35 | .../tools/notification/test_notification_ust | 4 ++ | ||
36 | .../regression/tools/regen-metadata/test_ust | 2 +- | ||
37 | .../regression/tools/regen-statedump/test_ust | 2 +- | ||
38 | .../regression/tools/save-load/test_autoload | 7 ++ | ||
39 | tests/regression/tools/save-load/test_load | 8 +++ | ||
40 | tests/regression/tools/save-load/test_save | 7 ++ | ||
41 | .../regression/tools/snapshots/test_ust_fast | 2 +- | ||
42 | .../regression/tools/snapshots/test_ust_long | 2 +- | ||
43 | .../tools/snapshots/test_ust_streaming | 2 +- | ||
44 | tests/regression/tools/snapshots/ust_test | 2 +- | ||
45 | .../streaming/test_high_throughput_limits | 2 +- | ||
46 | tests/regression/tools/streaming/test_ust | 2 +- | ||
47 | .../tracefile-limits/test_tracefile_count | 2 +- | ||
48 | .../tracefile-limits/test_tracefile_size | 2 +- | ||
49 | .../tools/wildcard/test_event_wildcard | 67 ++++++++++--------- | ||
50 | 25 files changed, 147 insertions(+), 60 deletions(-) | ||
51 | |||
52 | diff --git a/tests/regression/tools/crash/test_crash b/tests/regression/tools/crash/test_crash | ||
53 | index 8c62c513d..3cbe97688 100755 | ||
54 | --- a/tests/regression/tools/crash/test_crash | ||
55 | +++ b/tests/regression/tools/crash/test_crash | ||
56 | @@ -35,6 +35,10 @@ NUM_TESTS=77 | ||
57 | |||
58 | source $TESTDIR/utils/utils.sh | ||
59 | |||
60 | +if [ ! -x "$TESTAPP_BIN" ]; then | ||
61 | + plan_skip_all "No UST events binary detected." | ||
62 | +fi | ||
63 | + | ||
64 | # Global declaration for simplification | ||
65 | LTTNG_CRASH=$TESTDIR/../src/bin/lttng-crash/$CRASH_BIN | ||
66 | |||
67 | diff --git a/tests/regression/tools/exclusion/test_exclusion b/tests/regression/tools/exclusion/test_exclusion | ||
68 | index 949cd41df..42e4d72fb 100755 | ||
69 | --- a/tests/regression/tools/exclusion/test_exclusion | ||
70 | +++ b/tests/regression/tools/exclusion/test_exclusion | ||
71 | @@ -30,6 +30,10 @@ NUM_TESTS=149 | ||
72 | |||
73 | source $TESTDIR/utils/utils.sh | ||
74 | |||
75 | +if [ ! -x "$TESTAPP_BIN" ]; then | ||
76 | + plan_skip_all "No UST events binary detected." | ||
77 | +fi | ||
78 | + | ||
79 | function enable_ust_lttng_all_event_exclusion() | ||
80 | { | ||
81 | sess_name="$1" | ||
82 | diff --git a/tests/regression/tools/filtering/test_valid_filter b/tests/regression/tools/filtering/test_valid_filter | ||
83 | index 163b32182..1e8da630b 100755 | ||
84 | --- a/tests/regression/tools/filtering/test_valid_filter | ||
85 | +++ b/tests/regression/tools/filtering/test_valid_filter | ||
86 | @@ -418,12 +418,18 @@ issue_356_filter+="intfield > 4 && intfield > 5 && " | ||
87 | issue_356_filter+="intfield > 6 && intfield > 7 && " | ||
88 | issue_356_filter+="intfield > 8 || intfield > 0" | ||
89 | |||
90 | +BIN_NAME="gen-ust-events" | ||
91 | + | ||
92 | +skip_ust=1 | ||
93 | +if [ ! -x "$CURDIR/$BIN_NAME" ]; then | ||
94 | + skip_ust=0 | ||
95 | + skip 0 "No UST nevents binary detected." $NUM_UST_TESTS | ||
96 | +fi | ||
97 | + | ||
98 | start_lttng_sessiond | ||
99 | |||
100 | ### UST TESTS | ||
101 | |||
102 | -BIN_NAME="gen-ust-events" | ||
103 | - | ||
104 | KIRK_KRAUSS_TESTS=( | ||
105 | # the tests below were written by Kirk Krauss in this article: | ||
106 | # http://www.drdobbs.com/architecture-and-design/matching-wildcards-an-empirical-way-to-t/240169123 | ||
107 | @@ -897,9 +903,6 @@ UST_STR_FILTERS=( | ||
108 | END | ||
109 | ) | ||
110 | |||
111 | -if [ ! -x "$CURDIR/$BIN_NAME" ]; then | ||
112 | - BAIL_OUT "No UST nevents binary detected." | ||
113 | -fi | ||
114 | |||
115 | IFS="$OLDIFS" | ||
116 | |||
117 | @@ -910,6 +913,10 @@ i=0 | ||
118 | while true; do | ||
119 | validator="${UST_FILTERS[$i]}" | ||
120 | |||
121 | + if [ $skip_ust -eq 0 ]; then | ||
122 | + break | ||
123 | + fi | ||
124 | + | ||
125 | if [ "$validator" = END ]; then | ||
126 | break | ||
127 | fi | ||
128 | @@ -929,6 +936,10 @@ i=0 | ||
129 | while true; do | ||
130 | validator="${UST_STR_FILTERS[$i]}" | ||
131 | |||
132 | + if [ $skip_ust -eq 0 ]; then | ||
133 | + break | ||
134 | + fi | ||
135 | + | ||
136 | if [ "$validator" = END ]; then | ||
137 | break | ||
138 | fi | ||
139 | diff --git a/tests/regression/tools/health/test_thread_ok b/tests/regression/tools/health/test_thread_ok | ||
140 | index e81d6ed24..849b7e71f 100755 | ||
141 | --- a/tests/regression/tools/health/test_thread_ok | ||
142 | +++ b/tests/regression/tools/health/test_thread_ok | ||
143 | @@ -27,6 +27,9 @@ CHANNEL_NAME="testchan" | ||
144 | HEALTH_CHECK_BIN="health_check" | ||
145 | NUM_TESTS=17 | ||
146 | SLEEP_TIME=30 | ||
147 | +TESTAPP_PATH="$TESTDIR/utils/testapp" | ||
148 | +TESTAPP_NAME="gen-ust-events" | ||
149 | +TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" | ||
150 | |||
151 | source $TESTDIR/utils/utils.sh | ||
152 | |||
153 | @@ -76,15 +79,19 @@ function test_thread_ok | ||
154 | $CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH} | ||
155 | report_errors | ||
156 | |||
157 | - diag "With UST consumer daemons" | ||
158 | - create_lttng_session_no_output $SESSION_NAME | ||
159 | - enable_ust_lttng_event_ok $SESSION_NAME $UST_EVENT_NAME $CHANNEL_NAME | ||
160 | - start_lttng_tracing_ok $SESSION_NAME | ||
161 | - destroy_lttng_session_ok $SESSION_NAME | ||
162 | + skip $skip_ust "Ust does not seems to be supported" "5" || | ||
163 | + { | ||
164 | + diag "With UST consumer daemons" | ||
165 | + create_lttng_session_no_output $SESSION_NAME | ||
166 | + enable_ust_lttng_event_ok $SESSION_NAME $UST_EVENT_NAME $CHANNEL_NAME | ||
167 | + start_lttng_tracing_ok $SESSION_NAME | ||
168 | + destroy_lttng_session_ok $SESSION_NAME | ||
169 | |||
170 | - # Check health status | ||
171 | - $CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH} | ||
172 | - report_errors | ||
173 | + | ||
174 | + # Check health status | ||
175 | + $CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH} | ||
176 | + report_errors | ||
177 | + } | ||
178 | |||
179 | skip $isroot "Root access is needed. Skipping kernel consumer health check test." "5" || | ||
180 | { | ||
181 | @@ -141,6 +148,12 @@ else | ||
182 | isroot=0 | ||
183 | fi | ||
184 | |||
185 | +if [ ! -x "$TESTAPP_BIN" ]; then | ||
186 | + skip_ust=0 | ||
187 | +else | ||
188 | + skip_ust=1 | ||
189 | +fi | ||
190 | + | ||
191 | test_thread_ok | ||
192 | |||
193 | rm -rf ${HEALTH_PATH} | ||
194 | diff --git a/tests/regression/tools/live/Makefile.am b/tests/regression/tools/live/Makefile.am | ||
195 | index 46186d383..db74de8d5 100644 | ||
196 | --- a/tests/regression/tools/live/Makefile.am | ||
197 | +++ b/tests/regression/tools/live/Makefile.am | ||
198 | @@ -16,9 +16,7 @@ LIVE=$(top_builddir)/src/bin/lttng-sessiond/session.$(OBJEXT) \ | ||
199 | noinst_PROGRAMS = live_test | ||
200 | EXTRA_DIST = test_kernel test_lttng_kernel | ||
201 | |||
202 | -if HAVE_LIBLTTNG_UST_CTL | ||
203 | EXTRA_DIST += test_ust test_ust_tracefile_count test_lttng_ust | ||
204 | -endif | ||
205 | |||
206 | live_test_SOURCES = live_test.c | ||
207 | live_test_LDADD = $(LIBTAP) $(LIBCOMMON) $(LIBRELAYD) $(LIBSESSIOND_COMM) \ | ||
208 | diff --git a/tests/regression/tools/live/test_lttng_ust b/tests/regression/tools/live/test_lttng_ust | ||
209 | index 06017d01d..be9b3d7f7 100755 | ||
210 | --- a/tests/regression/tools/live/test_lttng_ust | ||
211 | +++ b/tests/regression/tools/live/test_lttng_ust | ||
212 | @@ -38,6 +38,10 @@ NUM_TESTS=12 | ||
213 | |||
214 | source $TESTDIR/utils/utils.sh | ||
215 | |||
216 | +if [ ! -x "$TESTAPP_BIN" ]; then | ||
217 | + plan_skip_all "No UST events binary detected." | ||
218 | +fi | ||
219 | + | ||
220 | # MUST set TESTDIR before calling those functions | ||
221 | plan_tests $NUM_TESTS | ||
222 | |||
223 | diff --git a/tests/regression/tools/live/test_ust b/tests/regression/tools/live/test_ust | ||
224 | index 0384a706f..add521bfc 100755 | ||
225 | --- a/tests/regression/tools/live/test_ust | ||
226 | +++ b/tests/regression/tools/live/test_ust | ||
227 | @@ -36,6 +36,10 @@ DIR=$(readlink -f $TESTDIR) | ||
228 | |||
229 | source $TESTDIR/utils/utils.sh | ||
230 | |||
231 | +if [ ! -x "$TESTAPP_BIN" ]; then | ||
232 | + plan_skip_all "No UST events binary detected." | ||
233 | +fi | ||
234 | + | ||
235 | echo "$TEST_DESC" | ||
236 | |||
237 | function setup_live_tracing() | ||
238 | diff --git a/tests/regression/tools/live/test_ust_tracefile_count b/tests/regression/tools/live/test_ust_tracefile_count | ||
239 | index 6da368fc6..10504f8c6 100755 | ||
240 | --- a/tests/regression/tools/live/test_ust_tracefile_count | ||
241 | +++ b/tests/regression/tools/live/test_ust_tracefile_count | ||
242 | @@ -36,6 +36,10 @@ DIR=$(readlink -f $TESTDIR) | ||
243 | |||
244 | source $TESTDIR/utils/utils.sh | ||
245 | |||
246 | +if [ ! -x "$TESTAPP_BIN" ]; then | ||
247 | + plan_skip_all "No UST events binary detected." | ||
248 | +fi | ||
249 | + | ||
250 | echo "$TEST_DESC" | ||
251 | |||
252 | function setup_live_tracing() | ||
253 | diff --git a/tests/regression/tools/mi/test_mi b/tests/regression/tools/mi/test_mi | ||
254 | index 48dda7da6..2cc30b29a 100755 | ||
255 | --- a/tests/regression/tools/mi/test_mi | ||
256 | +++ b/tests/regression/tools/mi/test_mi | ||
257 | @@ -61,6 +61,10 @@ NUM_TESTS=228 | ||
258 | |||
259 | source $TESTDIR/utils/utils.sh | ||
260 | |||
261 | +if [ ! -x "$TESTAPP_BIN" ]; then | ||
262 | + plan_skip_all "No UST events binary detected." | ||
263 | +fi | ||
264 | + | ||
265 | #Overwrite the lttng_bin to get mi output | ||
266 | LTTNG_BIN="lttng --mi xml" | ||
267 | |||
268 | diff --git a/tests/regression/tools/notification/test_notification_multi_app b/tests/regression/tools/notification/test_notification_multi_app | ||
269 | index 0a05ea6a0..29b0f62fa 100755 | ||
270 | --- a/tests/regression/tools/notification/test_notification_multi_app | ||
271 | +++ b/tests/regression/tools/notification/test_notification_multi_app | ||
272 | @@ -52,6 +52,11 @@ plan_tests $NUM_TESTS | ||
273 | |||
274 | print_test_banner "$TEST_DESC" | ||
275 | |||
276 | +skip_ust=1 | ||
277 | +if [ ! -x "$TESTAPP_BIN" ]; then | ||
278 | + skip_ust=0 | ||
279 | +fi | ||
280 | + | ||
281 | app_pids=() | ||
282 | |||
283 | function kernel_event_generator_toogle_state | ||
284 | @@ -468,10 +473,15 @@ function test_on_register_evaluation () | ||
285 | } | ||
286 | |||
287 | |||
288 | -TESTS=( | ||
289 | - test_multi_app_ust | ||
290 | - test_on_register_evaluation_ust | ||
291 | -) | ||
292 | +TESTS=() | ||
293 | +if [ $skip_ust -eq "1" ]; then | ||
294 | + TESTS+=( | ||
295 | + test_multi_app_ust | ||
296 | + test_on_register_evaluation_ust | ||
297 | + ) | ||
298 | +else | ||
299 | + skip 0 "No UST events binary detected." $NUM_TEST_UST | ||
300 | +fi | ||
301 | |||
302 | if [ "$(id -u)" == "0" ]; then | ||
303 | TESTS+=( | ||
304 | diff --git a/tests/regression/tools/notification/test_notification_ust b/tests/regression/tools/notification/test_notification_ust | ||
305 | index 8941e476d..eb2e15cad 100755 | ||
306 | --- a/tests/regression/tools/notification/test_notification_ust | ||
307 | +++ b/tests/regression/tools/notification/test_notification_ust | ||
308 | @@ -46,6 +46,10 @@ DIR=$(readlink -f $TESTDIR) | ||
309 | |||
310 | source $TESTDIR/utils/utils.sh | ||
311 | |||
312 | +if [ ! -x "$TESTAPP_BIN" ]; then | ||
313 | + plan_skip_all "No UST events binary detected." | ||
314 | +fi | ||
315 | + | ||
316 | function ust_event_generator_toogle_state | ||
317 | { | ||
318 | ust_event_generator_suspended=$((ust_event_generator_suspended==0)) | ||
319 | diff --git a/tests/regression/tools/regen-metadata/test_ust b/tests/regression/tools/regen-metadata/test_ust | ||
320 | index b7f1af1d8..312c8a40d 100755 | ||
321 | --- a/tests/regression/tools/regen-metadata/test_ust | ||
322 | +++ b/tests/regression/tools/regen-metadata/test_ust | ||
323 | @@ -34,7 +34,7 @@ NUM_TESTS=33 | ||
324 | source $TESTDIR/utils/utils.sh | ||
325 | |||
326 | if [ ! -x "$TESTAPP_BIN" ]; then | ||
327 | - BAIL_OUT "No UST events binary detected." | ||
328 | + plan_skip_all "No UST events binary detected." | ||
329 | fi | ||
330 | |||
331 | function lttng_create_session_uri | ||
332 | diff --git a/tests/regression/tools/regen-statedump/test_ust b/tests/regression/tools/regen-statedump/test_ust | ||
333 | index 486b9a560..8d455b26a 100755 | ||
334 | --- a/tests/regression/tools/regen-statedump/test_ust | ||
335 | +++ b/tests/regression/tools/regen-statedump/test_ust | ||
336 | @@ -34,7 +34,7 @@ NUM_TESTS=11 | ||
337 | source $TESTDIR/utils/utils.sh | ||
338 | |||
339 | if [ ! -x "$TESTAPP_BIN" ]; then | ||
340 | - BAIL_OUT "No UST events binary detected." | ||
341 | + plan_skip_all "No UST events binary detected." | ||
342 | fi | ||
343 | |||
344 | function test_ust_local () | ||
345 | diff --git a/tests/regression/tools/save-load/test_autoload b/tests/regression/tools/save-load/test_autoload | ||
346 | index 7ee5e9906..ec376cfb3 100755 | ||
347 | --- a/tests/regression/tools/save-load/test_autoload | ||
348 | +++ b/tests/regression/tools/save-load/test_autoload | ||
349 | @@ -21,6 +21,9 @@ CURDIR=$(dirname $0)/ | ||
350 | CONFIG_DIR="${CURDIR}/configuration" | ||
351 | TESTDIR=$CURDIR/../../../ | ||
352 | export LTTNG_SESSION_CONFIG_XSD_PATH=$(readlink -m ${TESTDIR}../src/common/config/) | ||
353 | +TESTAPP_PATH="$TESTDIR/utils/testapp" | ||
354 | +TESTAPP_NAME="gen-ust-events" | ||
355 | +TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" | ||
356 | |||
357 | DIR=$(readlink -f $TESTDIR) | ||
358 | |||
359 | @@ -28,6 +31,10 @@ NUM_TESTS=9 | ||
360 | |||
361 | source $TESTDIR/utils/utils.sh | ||
362 | |||
363 | +if [ ! -x "$TESTAPP_BIN" ]; then | ||
364 | + plan_skip_all "No UST events binary detected." | ||
365 | +fi | ||
366 | + | ||
367 | # MUST set TESTDIR before calling those functions | ||
368 | plan_tests $NUM_TESTS | ||
369 | |||
370 | diff --git a/tests/regression/tools/save-load/test_load b/tests/regression/tools/save-load/test_load | ||
371 | index 5e38b46b6..b6fdd8192 100755 | ||
372 | --- a/tests/regression/tools/save-load/test_load | ||
373 | +++ b/tests/regression/tools/save-load/test_load | ||
374 | @@ -20,6 +20,10 @@ TEST_DESC="Load session(s)" | ||
375 | CURDIR=$(dirname $0)/ | ||
376 | CONFIG_DIR="${CURDIR}/configuration" | ||
377 | TESTDIR=$CURDIR/../../../ | ||
378 | +TESTAPP_PATH="$TESTDIR/utils/testapp" | ||
379 | +TESTAPP_NAME="gen-ust-events" | ||
380 | +TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" | ||
381 | + | ||
382 | export LTTNG_SESSION_CONFIG_XSD_PATH=$(readlink -m ${TESTDIR}../src/common/config/) | ||
383 | |||
384 | SESSION_NAME="load-42" | ||
385 | @@ -31,6 +35,10 @@ NUM_TESTS=67 | ||
386 | |||
387 | source $TESTDIR/utils/utils.sh | ||
388 | |||
389 | +if [ ! -x "$TESTAPP_BIN" ]; then | ||
390 | + plan_skip_all "No UST events binary detected." | ||
391 | +fi | ||
392 | + | ||
393 | # MUST set TESTDIR before calling those functions | ||
394 | plan_tests $NUM_TESTS | ||
395 | |||
396 | diff --git a/tests/regression/tools/save-load/test_save b/tests/regression/tools/save-load/test_save | ||
397 | index c5f6b1341..cfaf67b7a 100755 | ||
398 | --- a/tests/regression/tools/save-load/test_save | ||
399 | +++ b/tests/regression/tools/save-load/test_save | ||
400 | @@ -23,6 +23,9 @@ TESTDIR=$CURDIR/../../../ | ||
401 | SESSION_NAME="save-42" | ||
402 | CHANNEL_NAME="chan-save" | ||
403 | EVENT_NAME="tp:tptest" | ||
404 | +TESTAPP_PATH="$TESTDIR/utils/testapp" | ||
405 | +TESTAPP_NAME="gen-ust-events" | ||
406 | +TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" | ||
407 | |||
408 | DIR=$(readlink -f $TESTDIR) | ||
409 | |||
410 | @@ -30,6 +33,10 @@ NUM_TESTS=41 | ||
411 | |||
412 | source $TESTDIR/utils/utils.sh | ||
413 | |||
414 | +if [ ! -x "TESTAPP_BIN" ]; then | ||
415 | + plan_skip_all "No UST events binary detected." | ||
416 | +fi | ||
417 | + | ||
418 | # MUST set TESTDIR before calling those functions | ||
419 | plan_tests $NUM_TESTS | ||
420 | |||
421 | diff --git a/tests/regression/tools/snapshots/test_ust_fast b/tests/regression/tools/snapshots/test_ust_fast | ||
422 | index edb435c52..5a68ec56d 100755 | ||
423 | --- a/tests/regression/tools/snapshots/test_ust_fast | ||
424 | +++ b/tests/regression/tools/snapshots/test_ust_fast | ||
425 | @@ -23,7 +23,7 @@ TEST_BIN="ust_test" | ||
426 | source $TESTDIR/utils/utils.sh | ||
427 | |||
428 | if [ ! -x "$CURDIR/$TEST_BIN" ]; then | ||
429 | - BAIL_OUT "No UST test found: $TEST_BIN" | ||
430 | + plan_skip_all "No UST test found: $TEST_BIN" | ||
431 | fi | ||
432 | |||
433 | ./$CURDIR/$TEST_BIN $NR_SNAPSHOT | ||
434 | diff --git a/tests/regression/tools/snapshots/test_ust_long b/tests/regression/tools/snapshots/test_ust_long | ||
435 | index 9e1a0c262..afa019f6a 100755 | ||
436 | --- a/tests/regression/tools/snapshots/test_ust_long | ||
437 | +++ b/tests/regression/tools/snapshots/test_ust_long | ||
438 | @@ -23,7 +23,7 @@ TEST_BIN="ust_test" | ||
439 | source $TESTDIR/utils/utils.sh | ||
440 | |||
441 | if [ ! -x "$CURDIR/$TEST_BIN" ]; then | ||
442 | - BAIL_OUT "No UST test found: $TEST_BIN" | ||
443 | + plan_skip_all "No UST test found: $TEST_BIN" | ||
444 | fi | ||
445 | |||
446 | ./$CURDIR/$TEST_BIN $NR_SNAPSHOT | ||
447 | diff --git a/tests/regression/tools/snapshots/test_ust_streaming b/tests/regression/tools/snapshots/test_ust_streaming | ||
448 | index 93b0957f3..69291ab4d 100755 | ||
449 | --- a/tests/regression/tools/snapshots/test_ust_streaming | ||
450 | +++ b/tests/regression/tools/snapshots/test_ust_streaming | ||
451 | @@ -37,7 +37,7 @@ NUM_TESTS=75 | ||
452 | source $TESTDIR/utils/utils.sh | ||
453 | |||
454 | if [ ! -x "$TESTAPP_BIN" ]; then | ||
455 | - BAIL_OUT "No UST events binary detected." | ||
456 | + plan_skip_all "No UST events binary detected." | ||
457 | fi | ||
458 | |||
459 | function snapshot_add_output () | ||
460 | diff --git a/tests/regression/tools/snapshots/ust_test b/tests/regression/tools/snapshots/ust_test | ||
461 | index 755cef9e0..92f9f6cff 100755 | ||
462 | --- a/tests/regression/tools/snapshots/ust_test | ||
463 | +++ b/tests/regression/tools/snapshots/ust_test | ||
464 | @@ -34,7 +34,7 @@ TRACE_PATH=$(mktemp -d) | ||
465 | source $TESTDIR/utils/utils.sh | ||
466 | |||
467 | if [ ! -x "$TESTAPP_BIN" ]; then | ||
468 | - BAIL_OUT "No UST events binary detected." | ||
469 | + plan_skip_all "No UST events binary detected." | ||
470 | fi | ||
471 | |||
472 | # Need the number of snapshot to do. | ||
473 | diff --git a/tests/regression/tools/streaming/test_high_throughput_limits b/tests/regression/tools/streaming/test_high_throughput_limits | ||
474 | index 32c3f1f2b..f54178923 100755 | ||
475 | --- a/tests/regression/tools/streaming/test_high_throughput_limits | ||
476 | +++ b/tests/regression/tools/streaming/test_high_throughput_limits | ||
477 | @@ -38,7 +38,7 @@ NUM_TESTS=104 | ||
478 | source $TESTDIR/utils/utils.sh | ||
479 | |||
480 | if [ ! -x "$TESTAPP_BIN" ]; then | ||
481 | - BAIL_OUT "No UST events binary detected." | ||
482 | + plan_skip_all "No UST events binary detected." | ||
483 | fi | ||
484 | |||
485 | function set_bw_limit | ||
486 | diff --git a/tests/regression/tools/streaming/test_ust b/tests/regression/tools/streaming/test_ust | ||
487 | index a5d5b5e92..e1dd98ee7 100755 | ||
488 | --- a/tests/regression/tools/streaming/test_ust | ||
489 | +++ b/tests/regression/tools/streaming/test_ust | ||
490 | @@ -34,7 +34,7 @@ NUM_TESTS=16 | ||
491 | source $TESTDIR/utils/utils.sh | ||
492 | |||
493 | if [ ! -x "$TESTAPP_BIN" ]; then | ||
494 | - BAIL_OUT "No UST events binary detected." | ||
495 | + plan_skip_all "No UST events binary detected." | ||
496 | fi | ||
497 | |||
498 | function lttng_create_session_uri | ||
499 | diff --git a/tests/regression/tools/tracefile-limits/test_tracefile_count b/tests/regression/tools/tracefile-limits/test_tracefile_count | ||
500 | index 6ada8580f..7553c7d1f 100755 | ||
501 | --- a/tests/regression/tools/tracefile-limits/test_tracefile_count | ||
502 | +++ b/tests/regression/tools/tracefile-limits/test_tracefile_count | ||
503 | @@ -33,7 +33,7 @@ PAGE_SIZE=$(getconf PAGE_SIZE) | ||
504 | source $TESTDIR/utils/utils.sh | ||
505 | |||
506 | if [ ! -x "$TESTAPP_BIN" ]; then | ||
507 | - BAIL_OUT "No UST events binary detected." | ||
508 | + plan_skip_all "No UST events binary detected." | ||
509 | fi | ||
510 | |||
511 | function enable_lttng_channel_count_limit () | ||
512 | diff --git a/tests/regression/tools/tracefile-limits/test_tracefile_size b/tests/regression/tools/tracefile-limits/test_tracefile_size | ||
513 | index 3dddbe613..1089487ff 100755 | ||
514 | --- a/tests/regression/tools/tracefile-limits/test_tracefile_size | ||
515 | +++ b/tests/regression/tools/tracefile-limits/test_tracefile_size | ||
516 | @@ -33,7 +33,7 @@ NUM_TESTS=66 | ||
517 | source $TESTDIR/utils/utils.sh | ||
518 | |||
519 | if [ ! -x "$TESTAPP_BIN" ]; then | ||
520 | - BAIL_OUT "No UST events binary detected." | ||
521 | + plan_skip_all "No UST events binary detected." | ||
522 | fi | ||
523 | |||
524 | function enable_lttng_channel_size_limit () | ||
525 | diff --git a/tests/regression/tools/wildcard/test_event_wildcard b/tests/regression/tools/wildcard/test_event_wildcard | ||
526 | index 61ea67a72..921a2301d 100755 | ||
527 | --- a/tests/regression/tools/wildcard/test_event_wildcard | ||
528 | +++ b/tests/regression/tools/wildcard/test_event_wildcard | ||
529 | @@ -97,42 +97,47 @@ print_test_banner "$TEST_DESC" | ||
530 | |||
531 | start_lttng_sessiond | ||
532 | |||
533 | -diag "Test UST wildcard" | ||
534 | - | ||
535 | if [ ! -x "$TESTAPP_BIN" ]; then | ||
536 | - BAIL_OUT "No UST nevents binary detected." | ||
537 | + skip_ust=0 | ||
538 | +else | ||
539 | + skip_ust=1 | ||
540 | fi | ||
541 | |||
542 | -EVENT_NAME="tp:tptest" | ||
543 | +skip $skip_ust "No UST nevents binary detected." $NUM_UST_TESTS || | ||
544 | +{ | ||
545 | + diag "Test UST wildcard" | ||
546 | |||
547 | -# non-matching | ||
548 | -test_event_wildcard ust 0 'tp:abc*' | ||
549 | -test_event_wildcard ust 0 '*abc' | ||
550 | -test_event_wildcard ust 0 '*z*' | ||
551 | -test_event_wildcard ust 0 '*\**' | ||
552 | -test_event_wildcard ust 0 '*\*' | ||
553 | -test_event_wildcard ust 0 '\**' | ||
554 | -test_event_wildcard ust 0 '*:*tpte*s' | ||
555 | -test_event_wildcard ust 0 'tp**tpTest' | ||
556 | + EVENT_NAME="tp:tptest" | ||
557 | |||
558 | -# matching | ||
559 | -test_event_wildcard ust 1 'tp:tp*' | ||
560 | -test_event_wildcard ust 1 '*' | ||
561 | -test_event_wildcard ust 1 'tp:tptest*' | ||
562 | -test_event_wildcard ust 1 '**' | ||
563 | -test_event_wildcard ust 1 '***' | ||
564 | -test_event_wildcard ust 1 '*tptest' | ||
565 | -test_event_wildcard ust 1 '**tptest' | ||
566 | -test_event_wildcard ust 1 '*tpte*' | ||
567 | -test_event_wildcard ust 1 '*tp*' | ||
568 | -test_event_wildcard ust 1 '*tp**' | ||
569 | -test_event_wildcard ust 1 '*:*tptest' | ||
570 | -test_event_wildcard ust 1 '*:*tpte*t' | ||
571 | -test_event_wildcard ust 1 't*p*:*t*e*s*t' | ||
572 | -test_event_wildcard ust 1 '*t*p*:*t*e*s*t*' | ||
573 | -test_event_wildcard ust 1 'tp*tptest' | ||
574 | -test_event_wildcard ust 1 'tp**tptest' | ||
575 | -test_event_wildcard ust 1 'tp*test' | ||
576 | + # non-matching | ||
577 | + test_event_wildcard ust 0 'tp:abc*' | ||
578 | + test_event_wildcard ust 0 '*abc' | ||
579 | + test_event_wildcard ust 0 '*z*' | ||
580 | + test_event_wildcard ust 0 '*\**' | ||
581 | + test_event_wildcard ust 0 '*\*' | ||
582 | + test_event_wildcard ust 0 '\**' | ||
583 | + test_event_wildcard ust 0 '*:*tpte*s' | ||
584 | + test_event_wildcard ust 0 'tp**tpTest' | ||
585 | + | ||
586 | + # matching | ||
587 | + test_event_wildcard ust 1 'tp:tp*' | ||
588 | + test_event_wildcard ust 1 '*' | ||
589 | + test_event_wildcard ust 1 'tp:tptest*' | ||
590 | + test_event_wildcard ust 1 '**' | ||
591 | + test_event_wildcard ust 1 '***' | ||
592 | + test_event_wildcard ust 1 '*tptest' | ||
593 | + test_event_wildcard ust 1 '**tptest' | ||
594 | + test_event_wildcard ust 1 '*tpte*' | ||
595 | + test_event_wildcard ust 1 '*tp*' | ||
596 | + test_event_wildcard ust 1 '*tp**' | ||
597 | + test_event_wildcard ust 1 '*:*tptest' | ||
598 | + test_event_wildcard ust 1 '*:*tpte*t' | ||
599 | + test_event_wildcard ust 1 't*p*:*t*e*s*t' | ||
600 | + test_event_wildcard ust 1 '*t*p*:*t*e*s*t*' | ||
601 | + test_event_wildcard ust 1 'tp*tptest' | ||
602 | + test_event_wildcard ust 1 'tp**tptest' | ||
603 | + test_event_wildcard ust 1 'tp*test' | ||
604 | +} | ||
605 | |||
606 | if [ "$(id -u)" == "0" ]; then | ||
607 | isroot=1 | ||
608 | -- | ||
609 | 2.17.1 | ||
610 | |||
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch b/meta/recipes-kernel/lttng/lttng-tools/0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch new file mode 100644 index 0000000000..16df3e610a --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-tools/0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch | |||
@@ -0,0 +1,176 @@ | |||
1 | From 9bc81a446d0a3ea9a884739eee48d3f14db3283c Mon Sep 17 00:00:00 2001 | ||
2 | From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> | ||
3 | Date: Wed, 28 Mar 2018 15:21:26 -0400 | ||
4 | Subject: [PATCH lttng-tools] Tests: use modprobe to test for the presence of | ||
5 | lttng-modules | ||
6 | MIME-Version: 1.0 | ||
7 | Content-Type: text/plain; charset=UTF-8 | ||
8 | Content-Transfer-Encoding: 8bit | ||
9 | |||
10 | Upstream-Status: Backport [28702730192ae1ded06105c54c5dc] | ||
11 | |||
12 | Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> | ||
13 | Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com> | ||
14 | --- | ||
15 | tests/regression/tools/regen-metadata/test_kernel | 8 ++------ | ||
16 | tests/regression/tools/regen-statedump/test_kernel | 7 +------ | ||
17 | tests/regression/tools/snapshots/test_kernel | 9 +++------ | ||
18 | tests/regression/tools/snapshots/test_kernel_streaming | 8 ++------ | ||
19 | tests/regression/tools/streaming/test_kernel | 8 ++------ | ||
20 | tests/utils/utils.sh | 10 ++++++++++ | ||
21 | 6 files changed, 20 insertions(+), 30 deletions(-) | ||
22 | |||
23 | diff --git a/tests/regression/tools/regen-metadata/test_kernel b/tests/regression/tools/regen-metadata/test_kernel | ||
24 | index fd139aeef..1849b9cd0 100755 | ||
25 | --- a/tests/regression/tools/regen-metadata/test_kernel | ||
26 | +++ b/tests/regression/tools/regen-metadata/test_kernel | ||
27 | @@ -28,12 +28,6 @@ NUM_TESTS=18 | ||
28 | |||
29 | source $TESTDIR/utils/utils.sh | ||
30 | |||
31 | -# LTTng kernel modules check | ||
32 | -out=`ls /lib/modules/$(uname -r)/extra | grep lttng` | ||
33 | -if [ -z "$out" ]; then | ||
34 | - BAIL_OUT "LTTng modules not detected." | ||
35 | -fi | ||
36 | - | ||
37 | function lttng_create_session_uri | ||
38 | { | ||
39 | # Create session with default path | ||
40 | @@ -91,6 +85,8 @@ fi | ||
41 | |||
42 | skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || | ||
43 | { | ||
44 | + validate_lttng_modules_present | ||
45 | + | ||
46 | start_lttng_relayd "-o $TRACE_PATH" | ||
47 | start_lttng_sessiond | ||
48 | modprobe lttng-test | ||
49 | diff --git a/tests/regression/tools/regen-statedump/test_kernel b/tests/regression/tools/regen-statedump/test_kernel | ||
50 | index 85afe76a1..50054eb07 100755 | ||
51 | --- a/tests/regression/tools/regen-statedump/test_kernel | ||
52 | +++ b/tests/regression/tools/regen-statedump/test_kernel | ||
53 | @@ -29,12 +29,6 @@ NUM_TESTS=11 | ||
54 | |||
55 | source $TESTDIR/utils/utils.sh | ||
56 | |||
57 | -# LTTng kernel modules check | ||
58 | -out=`ls /lib/modules/$(uname -r)/extra | grep lttng` | ||
59 | -if [ -z "$out" ]; then | ||
60 | - BAIL_OUT "LTTng modules not detected." | ||
61 | -fi | ||
62 | - | ||
63 | function test_kernel_local () | ||
64 | { | ||
65 | diag "Test kernel local with statedump regeneration" | ||
66 | @@ -64,6 +58,7 @@ fi | ||
67 | |||
68 | skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || | ||
69 | { | ||
70 | + validate_lttng_modules_present | ||
71 | start_lttng_sessiond | ||
72 | modprobe lttng-test | ||
73 | |||
74 | diff --git a/tests/regression/tools/snapshots/test_kernel b/tests/regression/tools/snapshots/test_kernel | ||
75 | index 886c4557a..ff563100b 100755 | ||
76 | --- a/tests/regression/tools/snapshots/test_kernel | ||
77 | +++ b/tests/regression/tools/snapshots/test_kernel | ||
78 | @@ -29,12 +29,6 @@ NUM_TESTS=2060 | ||
79 | |||
80 | source $TESTDIR/utils/utils.sh | ||
81 | |||
82 | -# LTTng kernel modules check | ||
83 | -out=`ls /lib/modules/$(uname -r)/extra | grep lttng` | ||
84 | -if [ -z "$out" ]; then | ||
85 | - BAIL_OUT "LTTng modules not detected." | ||
86 | -fi | ||
87 | - | ||
88 | function test_kernel_local_snapshot () | ||
89 | { | ||
90 | diag "Test local kernel snapshots" | ||
91 | @@ -241,6 +235,9 @@ fi | ||
92 | |||
93 | skip $isroot "Root access is needed. Skipping all kernel snapshot tests." $NUM_TESTS || | ||
94 | { | ||
95 | + | ||
96 | + validate_lttng_modules_present | ||
97 | + | ||
98 | start_lttng_sessiond | ||
99 | |||
100 | #tests=( test_kernel_1000_local_snapshots ) | ||
101 | diff --git a/tests/regression/tools/snapshots/test_kernel_streaming b/tests/regression/tools/snapshots/test_kernel_streaming | ||
102 | index 7b96ef270..1d97519aa 100755 | ||
103 | --- a/tests/regression/tools/snapshots/test_kernel_streaming | ||
104 | +++ b/tests/regression/tools/snapshots/test_kernel_streaming | ||
105 | @@ -29,12 +29,6 @@ NUM_TESTS=61 | ||
106 | |||
107 | source $TESTDIR/utils/utils.sh | ||
108 | |||
109 | -# LTTng kernel modules check | ||
110 | -out=`ls /lib/modules/$(uname -r)/extra | grep lttng` | ||
111 | -if [ -z "$out" ]; then | ||
112 | - BAIL_OUT "LTTng modules not detected." | ||
113 | -fi | ||
114 | - | ||
115 | function snapshot_add_output () | ||
116 | { | ||
117 | local sess_name=$1 | ||
118 | @@ -169,6 +163,8 @@ fi | ||
119 | |||
120 | skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || | ||
121 | { | ||
122 | + validate_lttng_modules_present | ||
123 | + | ||
124 | start_lttng_relayd "-o $TRACE_PATH" | ||
125 | start_lttng_sessiond | ||
126 | |||
127 | diff --git a/tests/regression/tools/streaming/test_kernel b/tests/regression/tools/streaming/test_kernel | ||
128 | index d54bcedf5..6bb23d9f5 100755 | ||
129 | --- a/tests/regression/tools/streaming/test_kernel | ||
130 | +++ b/tests/regression/tools/streaming/test_kernel | ||
131 | @@ -28,12 +28,6 @@ NUM_TESTS=10 | ||
132 | |||
133 | source $TESTDIR/utils/utils.sh | ||
134 | |||
135 | -# LTTng kernel modules check | ||
136 | -out=`ls /lib/modules/$(uname -r)/extra | grep lttng` | ||
137 | -if [ -z "$out" ]; then | ||
138 | - BAIL_OUT "LTTng modules not detected." | ||
139 | -fi | ||
140 | - | ||
141 | function lttng_create_session_uri | ||
142 | { | ||
143 | # Create session with default path | ||
144 | @@ -80,6 +74,8 @@ fi | ||
145 | |||
146 | skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || | ||
147 | { | ||
148 | + validate_lttng_modules_present | ||
149 | + | ||
150 | start_lttng_relayd "-o $TRACE_PATH" | ||
151 | start_lttng_sessiond | ||
152 | |||
153 | diff --git a/tests/utils/utils.sh b/tests/utils/utils.sh | ||
154 | index af63824ce..26e59e383 100644 | ||
155 | --- a/tests/utils/utils.sh | ||
156 | +++ b/tests/utils/utils.sh | ||
157 | @@ -125,6 +125,16 @@ function conf_proc_count() | ||
158 | echo | ||
159 | } | ||
160 | |||
161 | +# Check if base lttng-modules are present. | ||
162 | +# Bail out on failure | ||
163 | +function validate_lttng_modules_present () | ||
164 | +{ | ||
165 | + modprobe -n lttng-tracer 2>/dev/null | ||
166 | + if [ $? -ne 0 ]; then | ||
167 | + BAIL_OUT "LTTng modules not detected." | ||
168 | + fi | ||
169 | +} | ||
170 | + | ||
171 | function enable_kernel_lttng_event | ||
172 | { | ||
173 | local withtap="$1" | ||
174 | -- | ||
175 | 2.17.1 | ||
176 | |||
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0006-Tests-check-for-lttng-modules-presence.patch b/meta/recipes-kernel/lttng/lttng-tools/0006-Tests-check-for-lttng-modules-presence.patch new file mode 100644 index 0000000000..e07c227f46 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-tools/0006-Tests-check-for-lttng-modules-presence.patch | |||
@@ -0,0 +1,28 @@ | |||
1 | From 92f93238f1df005aadc98e105c0dd0e04a5955a7 Mon Sep 17 00:00:00 2001 | ||
2 | From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> | ||
3 | Date: Mon, 25 Mar 2019 14:24:51 -0400 | ||
4 | Subject: [2/2] tests: check for lttng-modules presence | ||
5 | |||
6 | Upstream-status: Accepted [5da3fc8579a9f93ea4767729a107784bf2d034ae] | ||
7 | Backported to 2.11 and 2.10 | ||
8 | |||
9 | Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> | ||
10 | --- | ||
11 | tests/regression/tools/notification/test_notification_kernel | 1 + | ||
12 | 1 file changed, 1 insertion(+) | ||
13 | |||
14 | diff --git a/tests/regression/tools/notification/test_notification_kernel b/tests/regression/tools/notification/test_notification_kernel | ||
15 | index 6d7f256ae..e7368df26 100755 | ||
16 | --- a/tests/regression/tools/notification/test_notification_kernel | ||
17 | +++ b/tests/regression/tools/notification/test_notification_kernel | ||
18 | @@ -108,6 +108,7 @@ function kernel_test | ||
19 | } | ||
20 | |||
21 | if [ "$(id -u)" == "0" ]; then | ||
22 | + validate_lttng_modules_present | ||
23 | kernel_test | ||
24 | else | ||
25 | # Kernel tests are skipped. | ||
26 | -- | ||
27 | 2.17.1 | ||
28 | |||
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch b/meta/recipes-kernel/lttng/lttng-tools/0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch new file mode 100644 index 0000000000..5437de26e8 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-tools/0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch | |||
@@ -0,0 +1,345 @@ | |||
1 | From 10e8001ad876d8cb3b5a17c7492e713bbc047975 Mon Sep 17 00:00:00 2001 | ||
2 | From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> | ||
3 | Date: Thu, 28 Mar 2019 18:31:29 -0400 | ||
4 | Subject: [PATCH] Fix: getgrnam is not MT-Safe, use getgrnam_r | ||
5 | |||
6 | Running the test suite under a Yocto musl build resulted in musl | ||
7 | coredump due to double freeing. | ||
8 | |||
9 | We get the following backtraces: | ||
10 | |||
11 | 0 a_crash () at ./arch/x86_64/atomic_arch.h:108 | ||
12 | 1 unmap_chunk (self=<optimized out>) at src/malloc/malloc.c:515 | ||
13 | 2 free (p=<optimized out>) at src/malloc/malloc.c:526 | ||
14 | 3 0x00007f46d9dc3849 in __getgrent_a (f=f@entry=0x7f46d9d1f7e0, gr=gr@entry=0x7f46d9e24460 <gr>, line=line@entry=0x7f46d9e26058 <line>, size=size@entry=0x7f46d92db550, mem=mem@entry=0x7f46d9e26050 <mem>, nmem=nmem@entry=0x7f46d92db558, res=0x7f46d92db548) at src/passwd/getgrent_a.c:45 | ||
15 | 4 0x00007f46d9dc2e6b in __getgr_a (name=0x487242 "tracing", gid=gid@entry=0, gr=gr@entry=0x7f46d9e24460 <gr>, buf=buf@entry=0x7f46d9e26058 <line>, size=size@entry=0x7f46d92db550, mem=mem@entry=0x7f46d9e26050 <mem>, nmem=0x7f46d92db558, res=0x7f46d92db548) at src/passwd/getgr_a.c:30 | ||
16 | 5 0x00007f46d9dc3733 in getgrnam (name=<optimized out>) at src/passwd/getgrent.c:37 | ||
17 | 6 0x0000000000460b29 in utils_get_group_id (name=<optimized out>) at ../../../lttng-tools-2.10.6/src/common/utils.c:1241 | ||
18 | 7 0x000000000044ee69 in thread_manage_health (data=<optimized out>) at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/main.c:4115 | ||
19 | 8 0x00007f46d9de1541 in start (p=<optimized out>) at src/thread/pthread_create.c:195 | ||
20 | 9 0x00007f46d9dee661 in __clone () at src/thread/x86_64/clone.s:22 | ||
21 | |||
22 | From another run: | ||
23 | |||
24 | 0 a_crash () at ./arch/x86_64/atomic_arch.h:108 | ||
25 | 1 unmap_chunk (self=<optimized out>) at src/malloc/malloc.c:515 | ||
26 | 2 free (p=<optimized out>) at src/malloc/malloc.c:526 | ||
27 | 3 0x00007f5abc210849 in __getgrent_a (f=f@entry=0x7f5abc2733e0, gr=gr@entry=0x7f5abc271460 <gr>, line=line@entry=0x7f5abc273058 <line>, size=size@entry=0x7f5abaef5510, mem=mem@entry=0x7f5abc273050 <mem>, nmem=nmem@entry=0x7f5abaef5518, res=0x7f5abaef5508) at src/passwd/getgrent_a.c:45 | ||
28 | 4 0x00007f5abc20fe6b in __getgr_a (name=0x487242 "tracing", gid=gid@entry=0, gr=gr@entry=0x7f5abc271460 <gr>, buf=buf@entry=0x7f5abc273058 <line>, size=size@entry=0x7f5abaef5510, mem=mem@entry=0x7f5abc273050 <mem>, nmem=0x7f5abaef5518, res=0x7f5abaef5508) at src/passwd/getgr_a.c:30 | ||
29 | 5 0x00007f5abc210733 in getgrnam (name=<optimized out>) at src/passwd/getgrent.c:37 | ||
30 | 6 0x0000000000460b29 in utils_get_group_id (name=<optimized out>) at ../../../lttng-tools-2.10.6/src/common/utils.c:1241 | ||
31 | 7 0x000000000042dee4 in notification_channel_socket_create () at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/notification-thread.c:238 | ||
32 | 8 init_thread_state (state=0x7f5abaef5560, handle=0x7f5abbf9be40) at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/notification-thread.c:375 | ||
33 | 9 thread_notification (data=0x7f5abbf9be40) at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/notification-thread.c:495 | ||
34 | 10 0x00007f5abc22e541 in start (p=<optimized out>) at src/thread/pthread_create.c:195 | ||
35 | 11 0x00007f5abc23b661 in __clone () at src/thread/x86_64/clone.s:22 | ||
36 | |||
37 | The problem was easily reproducible (~6 crash on ~300 runs). A prototype fix | ||
38 | using mutex around the getgrnam yielded no crash in over 1000 runs. This | ||
39 | patch yielded the same results as the prototype fix. | ||
40 | |||
41 | Unfortunately we cannot rely on a mutex in liblttng-ctl since we cannot | ||
42 | enforce the locking for the application using the lib. | ||
43 | |||
44 | Use getgrnam_r instead. | ||
45 | |||
46 | The previous implementation of utils_get_group_id returned the gid of | ||
47 | the root group (0) on error/not found. lttng_check_tracing_group needs | ||
48 | to know if an error/not found occured, returning the root group is not | ||
49 | enough. We now return the gid via the passed parameter. The caller is | ||
50 | responsible for either defaulting to the root group or propagating the | ||
51 | error. | ||
52 | |||
53 | We also do not want to warn when used in liblttng-ctl context. We might | ||
54 | want to move the warning elsewhere in the future. For now, pass a bool | ||
55 | if we need to warn or not. | ||
56 | |||
57 | Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> | ||
58 | --- | ||
59 | src/bin/lttng-consumerd/health-consumerd.c | 10 ++- | ||
60 | src/bin/lttng-relayd/health-relayd.c | 20 ++++-- | ||
61 | src/bin/lttng-sessiond/main.c | 24 +++++-- | ||
62 | src/bin/lttng-sessiond/notification-thread.c | 10 ++- | ||
63 | src/common/utils.c | 75 +++++++++++++++++--- | ||
64 | src/common/utils.h | 4 +- | ||
65 | src/lib/lttng-ctl/lttng-ctl.c | 8 +-- | ||
66 | 7 files changed, 122 insertions(+), 29 deletions(-) | ||
67 | |||
68 | diff --git a/src/bin/lttng-consumerd/health-consumerd.c b/src/bin/lttng-consumerd/health-consumerd.c | ||
69 | index 1e2f31e4..6045401a 100644 | ||
70 | --- a/src/bin/lttng-consumerd/health-consumerd.c | ||
71 | +++ b/src/bin/lttng-consumerd/health-consumerd.c | ||
72 | @@ -184,8 +184,14 @@ void *thread_manage_health(void *data) | ||
73 | is_root = !getuid(); | ||
74 | if (is_root) { | ||
75 | /* lttng health client socket path permissions */ | ||
76 | - ret = chown(health_unix_sock_path, 0, | ||
77 | - utils_get_group_id(tracing_group_name)); | ||
78 | + gid_t gid; | ||
79 | + | ||
80 | + ret = utils_get_group_id(tracing_group_name, true, &gid); | ||
81 | + if (ret) { | ||
82 | + gid = 0; /* Default to root group. */ | ||
83 | + } | ||
84 | + | ||
85 | + ret = chown(health_unix_sock_path, 0, gid); | ||
86 | if (ret < 0) { | ||
87 | ERR("Unable to set group on %s", health_unix_sock_path); | ||
88 | PERROR("chown"); | ||
89 | diff --git a/src/bin/lttng-relayd/health-relayd.c b/src/bin/lttng-relayd/health-relayd.c | ||
90 | index ba996621..962e88c4 100644 | ||
91 | --- a/src/bin/lttng-relayd/health-relayd.c | ||
92 | +++ b/src/bin/lttng-relayd/health-relayd.c | ||
93 | @@ -105,8 +105,14 @@ static int create_lttng_rundir_with_perm(const char *rundir) | ||
94 | int is_root = !getuid(); | ||
95 | |||
96 | if (is_root) { | ||
97 | - ret = chown(rundir, 0, | ||
98 | - utils_get_group_id(tracing_group_name)); | ||
99 | + gid_t gid; | ||
100 | + | ||
101 | + ret = utils_get_group_id(tracing_group_name, true, &gid); | ||
102 | + if (ret) { | ||
103 | + gid = 0; /* Default to root group.*/ | ||
104 | + } | ||
105 | + | ||
106 | + ret = chown(rundir, 0, gid); | ||
107 | if (ret < 0) { | ||
108 | ERR("Unable to set group on %s", rundir); | ||
109 | PERROR("chown"); | ||
110 | @@ -256,8 +262,14 @@ void *thread_manage_health(void *data) | ||
111 | is_root = !getuid(); | ||
112 | if (is_root) { | ||
113 | /* lttng health client socket path permissions */ | ||
114 | - ret = chown(health_unix_sock_path, 0, | ||
115 | - utils_get_group_id(tracing_group_name)); | ||
116 | + gid_t gid; | ||
117 | + | ||
118 | + ret = utils_get_group_id(tracing_group_name, true, &gid); | ||
119 | + if (ret) { | ||
120 | + gid = 0; /* Default to root group */ | ||
121 | + } | ||
122 | + | ||
123 | + ret = chown(health_unix_sock_path, 0, gid); | ||
124 | if (ret < 0) { | ||
125 | ERR("Unable to set group on %s", health_unix_sock_path); | ||
126 | PERROR("chown"); | ||
127 | diff --git a/src/bin/lttng-sessiond/main.c b/src/bin/lttng-sessiond/main.c | ||
128 | index fa6fa483..49307064 100644 | ||
129 | --- a/src/bin/lttng-sessiond/main.c | ||
130 | +++ b/src/bin/lttng-sessiond/main.c | ||
131 | @@ -4112,8 +4112,14 @@ static void *thread_manage_health(void *data) | ||
132 | |||
133 | if (is_root) { | ||
134 | /* lttng health client socket path permissions */ | ||
135 | - ret = chown(config.health_unix_sock_path.value, 0, | ||
136 | - utils_get_group_id(config.tracing_group_name.value)); | ||
137 | + gid_t gid; | ||
138 | + | ||
139 | + ret = utils_get_group_id(config.tracing_group_name.value, true, &gid); | ||
140 | + if (ret) { | ||
141 | + gid = 0; /* Default to root group */ | ||
142 | + } | ||
143 | + | ||
144 | + ret = chown(config.health_unix_sock_path.value, 0, &gid); | ||
145 | if (ret < 0) { | ||
146 | ERR("Unable to set group on %s", config.health_unix_sock_path.value); | ||
147 | PERROR("chown"); | ||
148 | @@ -5238,7 +5244,10 @@ static int set_permissions(char *rundir) | ||
149 | int ret; | ||
150 | gid_t gid; | ||
151 | |||
152 | - gid = utils_get_group_id(config.tracing_group_name.value); | ||
153 | + ret = utils_get_group_id(config.tracing_group_name.value, true, &gid); | ||
154 | + if (ret) { | ||
155 | + gid = 0; /* Default to root group */ | ||
156 | + } | ||
157 | |||
158 | /* Set lttng run dir */ | ||
159 | ret = chown(rundir, 0, gid); | ||
160 | @@ -5349,7 +5358,14 @@ static int set_consumer_sockets(struct consumer_data *consumer_data) | ||
161 | goto error; | ||
162 | } | ||
163 | if (is_root) { | ||
164 | - ret = chown(path, 0, utils_get_group_id(config.tracing_group_name.value)); | ||
165 | + gid_t gid; | ||
166 | + | ||
167 | + ret = utils_get_group_id(config.tracing_group_name.value, true, &gid); | ||
168 | + if (ret) { | ||
169 | + gid = 0; /* Default to root group */ | ||
170 | + } | ||
171 | + | ||
172 | + ret = chown(path, 0, gid); | ||
173 | if (ret < 0) { | ||
174 | ERR("Unable to set group on %s", path); | ||
175 | PERROR("chown"); | ||
176 | diff --git a/src/bin/lttng-sessiond/notification-thread.c b/src/bin/lttng-sessiond/notification-thread.c | ||
177 | index 92ac597f..18a264d9 100644 | ||
178 | --- a/src/bin/lttng-sessiond/notification-thread.c | ||
179 | +++ b/src/bin/lttng-sessiond/notification-thread.c | ||
180 | @@ -235,8 +235,14 @@ int notification_channel_socket_create(void) | ||
181 | } | ||
182 | |||
183 | if (getuid() == 0) { | ||
184 | - ret = chown(sock_path, 0, | ||
185 | - utils_get_group_id(config.tracing_group_name.value)); | ||
186 | + gid_t gid; | ||
187 | + | ||
188 | + ret = utils_get_group_id(config.tracing_group_name.value, true, &gid); | ||
189 | + if (ret) { | ||
190 | + gid = 0; /* Default to root group. */ | ||
191 | + } | ||
192 | + | ||
193 | + ret = chown(sock_path, 0, gid); | ||
194 | if (ret) { | ||
195 | ERR("Failed to set the notification channel socket's group"); | ||
196 | ret = -1; | ||
197 | diff --git a/src/common/utils.c b/src/common/utils.c | ||
198 | index c0bb031e..778bc00f 100644 | ||
199 | --- a/src/common/utils.c | ||
200 | +++ b/src/common/utils.c | ||
201 | @@ -1231,24 +1231,77 @@ size_t utils_get_current_time_str(const char *format, char *dst, size_t len) | ||
202 | } | ||
203 | |||
204 | /* | ||
205 | - * Return the group ID matching name, else 0 if it cannot be found. | ||
206 | + * Return 0 on success and set *gid to the group_ID matching the passed name. | ||
207 | + * Else -1 if it cannot be found or an error occurred. | ||
208 | */ | ||
209 | LTTNG_HIDDEN | ||
210 | -gid_t utils_get_group_id(const char *name) | ||
211 | +int utils_get_group_id(const char *name, bool warn, gid_t *gid) | ||
212 | { | ||
213 | - struct group *grp; | ||
214 | + static volatile int warn_once; | ||
215 | |||
216 | - grp = getgrnam(name); | ||
217 | - if (!grp) { | ||
218 | - static volatile int warn_once; | ||
219 | + int ret; | ||
220 | + long sys_len; | ||
221 | + size_t len; | ||
222 | + struct group grp; | ||
223 | + struct group *result; | ||
224 | + char *buffer = NULL; | ||
225 | |||
226 | - if (!warn_once) { | ||
227 | - WARN("No tracing group detected"); | ||
228 | - warn_once = 1; | ||
229 | + /* Get the system limit if it exists */ | ||
230 | + sys_len = sysconf(_SC_GETGR_R_SIZE_MAX); | ||
231 | + if (sys_len == -1) { | ||
232 | + len = 1024; | ||
233 | + } else { | ||
234 | + len = (size_t) sys_len; | ||
235 | + } | ||
236 | + | ||
237 | + buffer = malloc(len); | ||
238 | + if (!buffer) { | ||
239 | + PERROR("getgrnam_r malloc"); | ||
240 | + ret = -1; | ||
241 | + goto error; | ||
242 | + } | ||
243 | + | ||
244 | + while ((ret = getgrnam_r(name, &grp, buffer, len, &result)) == ERANGE) | ||
245 | + { | ||
246 | + /* Buffer is not big enough, increase its size. */ | ||
247 | + size_t new_len = 2 * len; | ||
248 | + char *new_buffer = NULL; | ||
249 | + if (new_len < len) { | ||
250 | + ERR("getgrnam_r buffer size overflow"); | ||
251 | + ret = -1; | ||
252 | + goto error; | ||
253 | + } | ||
254 | + len = new_len; | ||
255 | + new_buffer = realloc(buffer, len); | ||
256 | + if (!new_buffer) { | ||
257 | + PERROR("getgrnam_r realloc"); | ||
258 | + ret = -1; | ||
259 | + goto error; | ||
260 | } | ||
261 | - return 0; | ||
262 | + buffer = new_buffer; | ||
263 | + } | ||
264 | + if (ret != 0) { | ||
265 | + PERROR("getgrnam_r"); | ||
266 | + ret = -1; | ||
267 | + goto error; | ||
268 | + } | ||
269 | + | ||
270 | + /* Group not found. */ | ||
271 | + if (!result) { | ||
272 | + ret = -1; | ||
273 | + goto error; | ||
274 | + } | ||
275 | + | ||
276 | + *gid = result->gr_gid; | ||
277 | + ret = 0; | ||
278 | + | ||
279 | +error: | ||
280 | + free(buffer); | ||
281 | + if (ret && warn && !warn_once) { | ||
282 | + WARN("No tracing group detected"); | ||
283 | + warn_once = 1; | ||
284 | } | ||
285 | - return grp->gr_gid; | ||
286 | + return ret; | ||
287 | } | ||
288 | |||
289 | /* | ||
290 | diff --git a/src/common/utils.h b/src/common/utils.h | ||
291 | index 18f19ef1..9c72431d 100644 | ||
292 | --- a/src/common/utils.h | ||
293 | +++ b/src/common/utils.h | ||
294 | @@ -22,6 +22,8 @@ | ||
295 | #include <unistd.h> | ||
296 | #include <stdint.h> | ||
297 | #include <getopt.h> | ||
298 | +#include <stdbool.h> | ||
299 | +#include <sys/types.h> | ||
300 | |||
301 | #define KIBI_LOG2 10 | ||
302 | #define MEBI_LOG2 20 | ||
303 | @@ -52,7 +54,7 @@ int utils_get_count_order_u64(uint64_t x); | ||
304 | char *utils_get_home_dir(void); | ||
305 | char *utils_get_user_home_dir(uid_t uid); | ||
306 | size_t utils_get_current_time_str(const char *format, char *dst, size_t len); | ||
307 | -gid_t utils_get_group_id(const char *name); | ||
308 | +int utils_get_group_id(const char *name, bool warn, gid_t *gid); | ||
309 | char *utils_generate_optstring(const struct option *long_options, | ||
310 | size_t opt_count); | ||
311 | int utils_create_lock_file(const char *filepath); | ||
312 | diff --git a/src/lib/lttng-ctl/lttng-ctl.c b/src/lib/lttng-ctl/lttng-ctl.c | ||
313 | index 2d84aad9..561b0bcf 100644 | ||
314 | --- a/src/lib/lttng-ctl/lttng-ctl.c | ||
315 | +++ b/src/lib/lttng-ctl/lttng-ctl.c | ||
316 | @@ -208,15 +208,13 @@ end: | ||
317 | LTTNG_HIDDEN | ||
318 | int lttng_check_tracing_group(void) | ||
319 | { | ||
320 | - struct group *grp_tracing; /* no free(). See getgrnam(3) */ | ||
321 | - gid_t *grp_list; | ||
322 | + gid_t *grp_list, tracing_gid; | ||
323 | int grp_list_size, grp_id, i; | ||
324 | int ret = -1; | ||
325 | const char *grp_name = tracing_group; | ||
326 | |||
327 | /* Get GID of group 'tracing' */ | ||
328 | - grp_tracing = getgrnam(grp_name); | ||
329 | - if (!grp_tracing) { | ||
330 | + if (utils_get_group_id(grp_name, false, &tracing_gid)) { | ||
331 | /* If grp_tracing is NULL, the group does not exist. */ | ||
332 | goto end; | ||
333 | } | ||
334 | @@ -241,7 +239,7 @@ int lttng_check_tracing_group(void) | ||
335 | } | ||
336 | |||
337 | for (i = 0; i < grp_list_size; i++) { | ||
338 | - if (grp_list[i] == grp_tracing->gr_gid) { | ||
339 | + if (grp_list[i] == tracing_gid) { | ||
340 | ret = 1; | ||
341 | break; | ||
342 | } | ||
343 | -- | ||
344 | 2.17.1 | ||
345 | |||
diff --git a/meta/recipes-kernel/lttng/lttng-tools_2.10.6.bb b/meta/recipes-kernel/lttng/lttng-tools_2.10.6.bb index 86418f14c0..b720b84afa 100644 --- a/meta/recipes-kernel/lttng/lttng-tools_2.10.6.bb +++ b/meta/recipes-kernel/lttng/lttng-tools_2.10.6.bb | |||
@@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=01d7fc4496aacf37d90df90b90b0cac1 \ | |||
11 | 11 | ||
12 | DEPENDS = "liburcu popt libxml2 util-linux" | 12 | DEPENDS = "liburcu popt libxml2 util-linux" |
13 | RDEPENDS_${PN} = "libgcc" | 13 | RDEPENDS_${PN} = "libgcc" |
14 | RDEPENDS_${PN}-ptest += "make perl bash gawk ${PN} babeltrace procps perl-module-overloading coreutils util-linux" | 14 | RDEPENDS_${PN}-ptest += "make perl bash gawk ${PN} babeltrace procps perl-module-overloading coreutils util-linux kmod" |
15 | RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils" | 15 | RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils" |
16 | RDEPENDS_${PN}-ptest_append_libc-musl = " musl-utils" | 16 | RDEPENDS_${PN}-ptest_append_libc-musl = " musl-utils" |
17 | # babelstats.pl wants getopt-long | 17 | # babelstats.pl wants getopt-long |
@@ -33,6 +33,13 @@ SRC_URI = "https://lttng.org/files/lttng-tools/lttng-tools-${PV}.tar.bz2 \ | |||
33 | file://x32.patch \ | 33 | file://x32.patch \ |
34 | file://run-ptest \ | 34 | file://run-ptest \ |
35 | file://lttng-sessiond.service \ | 35 | file://lttng-sessiond.service \ |
36 | file://0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch \ | ||
37 | file://0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch \ | ||
38 | file://0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch \ | ||
39 | file://0004-Skip-when-testapp-is-not-present.patch\ | ||
40 | file://0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch \ | ||
41 | file://0006-Tests-check-for-lttng-modules-presence.patch \ | ||
42 | file://0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch \ | ||
36 | " | 43 | " |
37 | 44 | ||
38 | SRC_URI[md5sum] = "e88c521b5da6bb48a8187af633336ecc" | 45 | SRC_URI[md5sum] = "e88c521b5da6bb48a8187af633336ecc" |