]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: try system bus if user bus cannot be opened
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 30 Sep 2018 08:30:45 +0000 (17:30 +0900)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 1 Oct 2018 08:15:54 +0000 (10:15 +0200)
src/libsystemd/sd-bus/test-bus-cleanup.c
src/libsystemd/sd-bus/test-bus-gvariant.c
src/libsystemd/sd-bus/test-bus-marshal.c
src/libsystemd/sd-bus/test-bus-match.c
src/libsystemd/sd-bus/test-bus-track.c

index 975d3f97dd9d03bf9956cadb48b26c27b6e70123..bea722ba06ed3edb3a079b360ab047136ef62a38 100644 (file)
@@ -10,6 +10,8 @@
 #include "refcnt.h"
 #include "tests.h"
 
+static bool use_system_bus = false;
+
 static void test_bus_new(void) {
         _cleanup_(sd_bus_unrefp) sd_bus *bus = NULL;
 
@@ -22,8 +24,12 @@ static int test_bus_open(void) {
         int r;
 
         r = sd_bus_open_user(&bus);
-        if (IN_SET(r, -ECONNREFUSED, -ENOENT))
-                return r;
+        if (IN_SET(r, -ECONNREFUSED, -ENOENT)) {
+                r = sd_bus_open_system(&bus);
+                if (IN_SET(r, -ECONNREFUSED, -ENOENT))
+                        return r;
+                use_system_bus = true;
+        }
 
         assert_se(r >= 0);
         printf("after open: refcount %u\n", REFCNT_GET(bus->n_ref));
@@ -35,7 +41,7 @@ static void test_bus_new_method_call(void) {
         sd_bus *bus = NULL;
         _cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
 
-        assert_se(sd_bus_open_user(&bus) >= 0);
+        assert_se(use_system_bus ? sd_bus_open_system(&bus) >= 0 : sd_bus_open_user(&bus) >= 0);
 
         assert_se(sd_bus_message_new_method_call(bus, &m, "a.service.name", "/an/object/path", "an.interface.name", "AMethodName") >= 0);
 
@@ -49,7 +55,7 @@ static void test_bus_new_signal(void) {
         sd_bus *bus = NULL;
         _cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
 
-        assert_se(sd_bus_open_user(&bus) >= 0);
+        assert_se(use_system_bus ? sd_bus_open_system(&bus) >= 0 : sd_bus_open_user(&bus) >= 0);
 
         assert_se(sd_bus_message_new_signal(bus, &m, "/an/object/path", "an.interface.name", "Name") >= 0);
 
index ae418efa8b34c6fb3f3b69cb1a252ac4c55b1526..92324bff29283d359aefc61c70ca2409a8a1d7bf 100644 (file)
@@ -122,6 +122,8 @@ static int test_marshal(void) {
         int r;
 
         r = sd_bus_open_user(&bus);
+        if (r < 0)
+                r = sd_bus_open_system(&bus);
         if (r < 0)
                 return log_tests_skipped_errno(r, "Failed to connect to bus");
 
index 7e113b179e0e06e274731cca9f99ab4dd3bd41ca..020a5e51e57d854d21ffa46a801f07176246a90f 100644 (file)
@@ -124,6 +124,8 @@ int main(int argc, char *argv[]) {
         test_setup_logging(LOG_INFO);
 
         r = sd_bus_default_user(&bus);
+        if (r < 0)
+                r = sd_bus_default_system(&bus);
         if (r < 0)
                 return log_tests_skipped("Failed to connect to bus");
 
index c56b39437bccf89352bcb86763c95a373ea169fc..0949d8dee67bf80fdbeb67569706de330e020d7b 100644 (file)
@@ -81,6 +81,8 @@ int main(int argc, char *argv[]) {
         test_setup_logging(LOG_INFO);
 
         r = sd_bus_open_user(&bus);
+        if (r < 0)
+                r = sd_bus_open_system(&bus);
         if (r < 0)
                 return log_tests_skipped("Failed to connect to bus");
 
index a2782cd1d50a330c29eb403de8bf955aef21fb1d..68a0010368833fc55180ee6795cc5ba807616872 100644 (file)
@@ -45,6 +45,7 @@ int main(int argc, char *argv[]) {
         _cleanup_(sd_event_unrefp) sd_event *event = NULL;
         _cleanup_(sd_bus_track_unrefp) sd_bus_track *x = NULL, *y = NULL;
         _cleanup_(sd_bus_unrefp) sd_bus *a = NULL, *b = NULL;
+        bool use_system_bus = false;
         const char *unique;
         int r;
 
@@ -54,14 +55,21 @@ int main(int argc, char *argv[]) {
         assert_se(r >= 0);
 
         r = sd_bus_open_user(&a);
-        if (IN_SET(r, -ECONNREFUSED, -ENOENT))
-                return log_tests_skipped("Failed to connect to bus");
+        if (IN_SET(r, -ECONNREFUSED, -ENOENT)) {
+                r = sd_bus_open_system(&a);
+                if (IN_SET(r, -ECONNREFUSED, -ENOENT))
+                        return log_tests_skipped("Failed to connect to bus");
+                use_system_bus = true;
+        }
         assert_se(r >= 0);
 
         r = sd_bus_attach_event(a, event, SD_EVENT_PRIORITY_NORMAL);
         assert_se(r >= 0);
 
-        r = sd_bus_open_user(&b);
+        if (use_system_bus)
+                r = sd_bus_open_system(&b);
+        else
+                r = sd_bus_open_user(&b);
         assert_se(r >= 0);
 
         r = sd_bus_attach_event(b, event, SD_EVENT_PRIORITY_NORMAL);