chiark / gitweb /
bus: fix test-bus-kerne-bloom.c to match properly
authorDavid Herrmann <dh.herrmann@gmail.com>
Wed, 10 Jun 2015 16:47:31 +0000 (18:47 +0200)
committerSven Eden <yamakuzure@gmx.net>
Tue, 14 Mar 2017 09:01:49 +0000 (10:01 +0100)
Make sure we actually verify our match-rules are executed properly. Right
now all we test is the bloom-matches, which are non-reliable as they leave
through false-positives.

src/libelogind/sd-bus/test-bus-kernel-bloom.c

index b11c43bd7b0fa0c010d4ea82d5833b278ab7a8c7..8ebbbfaaac3e161af5cf43edfa43f3bd1508e2be 100644 (file)
 #include "bus-kernel.h"
 #include "bus-util.h"
 
+static int test_match(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) {
+        int *found = userdata;
+
+        *found = 1;
+
+        return 0;
+}
+
 static void test_one(
                 const char *path,
                 const char *interface,
@@ -39,7 +47,7 @@ static void test_one(
         _cleanup_free_ char *name = NULL, *bus_name = NULL, *address = NULL;
         _cleanup_bus_message_unref_ sd_bus_message *m = NULL;
         sd_bus *a, *b;
-        int r;
+        int r, found = 0;
 
         assert_se(asprintf(&name, "deine-mutter-%u", (unsigned) getpid()) >= 0);
 
@@ -71,7 +79,7 @@ static void test_one(
         assert_se(r >= 0);
 
         log_debug("match");
-        r = sd_bus_add_match(b, NULL, match, NULL, NULL);
+        r = sd_bus_add_match(b, NULL, match, test_match, &found);
         assert_se(r >= 0);
 
         log_debug("signal");
@@ -83,7 +91,7 @@ static void test_one(
         assert_se(r >= 0);
 
         r = sd_bus_process(b, &m);
-        assert_se(r >= 0 && (good == !!m));
+        assert_se(r >= 0 && good == !!found);
 
         sd_bus_unref(a);
         sd_bus_unref(b);