chiark / gitweb /
bus: add kdbus test for name registry
[elogind.git] / src / libsystemd-bus / test-bus-kernel.c
index 4c599788fe579e47a162eaa76d42edc724a79b7f..19fae1dd72f4287a71742894a8c935e22899eae9 100644 (file)
@@ -35,6 +35,9 @@ int main(int argc, char *argv[]) {
         int r;
 
         bus_ref = bus_kernel_create("deine-mutter", &bus_name);
+        if (bus_ref == -ENOENT)
+                return EXIT_TEST_SKIP;
+
         assert_se(bus_ref >= 0);
 
         address = strappend("kernel:path=", bus_name);
@@ -75,10 +78,42 @@ int main(int argc, char *argv[]) {
         assert_se(r > 0);
         assert_se(m);
 
+        bus_message_dump(m);
+        assert_se(sd_bus_message_rewind(m, true) >= 0);
+
         r = sd_bus_message_read(m, "s", &the_string);
         assert_se(r >= 0);
         assert_se(streq(the_string, "I am a string"));
 
+        sd_bus_message_unref(m);
+        m = NULL;
+
+        r = sd_bus_request_name(a, "net.0pointer.foobar", 0);
+        assert_se(r >= 0);
+
+        r = sd_bus_message_new_method_call(b, "net.0pointer.foobar", "/a/path", "an.inter.face", "AMethod", &m);
+        assert_se(r >= 0);
+
+        r = sd_bus_send(b, m, NULL);
+        assert_se(r >= 0);
+
+        for (;;) {
+                sd_bus_message_unref(m);
+                m = NULL;
+                r = sd_bus_process(a, &m);
+                assert_se(r > 0);
+                assert_se(m);
+
+                bus_message_dump(m);
+                assert_se(sd_bus_message_rewind(m, true) >= 0);
+        }
+
+        r = sd_bus_release_name(a, "net.0pointer.foobar");
+        assert_se(r >= 0);
+
+        r = sd_bus_release_name(a, "net.0pointer.foobar");
+        assert_se(r == -ENXIO);
+
         sd_bus_unref(a);
         sd_bus_unref(b);