summaryrefslogtreecommitdiff
path: root/src/libsystemd/sd-bus/test-bus-match.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2014-11-28 19:16:37 +0100
committerLennart Poettering <lennart@poettering.net>2014-11-28 20:29:44 +0100
commit198b158f4941b817f26f8eb0ff75809bf5436496 (patch)
tree22672296fa38696687a99fd701cebda86b5e8555 /src/libsystemd/sd-bus/test-bus-match.c
parentd9fba533169b271d0e803016fea86fb57bc3f5ca (diff)
sd-bus: add support for matches against arrays of strings in messages
Diffstat (limited to 'src/libsystemd/sd-bus/test-bus-match.c')
-rw-r--r--src/libsystemd/sd-bus/test-bus-match.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/libsystemd/sd-bus/test-bus-match.c b/src/libsystemd/sd-bus/test-bus-match.c
index 6c5d35b3d..713311703 100644
--- a/src/libsystemd/sd-bus/test-bus-match.c
+++ b/src/libsystemd/sd-bus/test-bus-match.c
@@ -33,8 +33,9 @@
static bool mask[32];
static int filter(sd_bus *b, sd_bus_message *m, void *userdata, sd_bus_error *ret_error) {
- log_info("Ran %i", PTR_TO_INT(userdata));
- mask[PTR_TO_INT(userdata)] = true;
+ log_info("Ran %u", PTR_TO_UINT(userdata));
+ assert(PTR_TO_UINT(userdata) < ELEMENTSOF(mask));
+ mask[PTR_TO_UINT(userdata)] = true;
return 0;
}
@@ -85,9 +86,9 @@ int main(int argc, char *argv[]) {
};
_cleanup_bus_message_unref_ sd_bus_message *m = NULL;
- _cleanup_bus_unref_ sd_bus *bus = NULL;
+ _cleanup_bus_close_unref_ sd_bus *bus = NULL;
enum bus_match_node_type i;
- sd_bus_slot slots[15];
+ sd_bus_slot slots[19];
int r;
r = sd_bus_open_system(&bus);
@@ -108,16 +109,20 @@ int main(int argc, char *argv[]) {
assert_se(match_add(slots, &root, "arg1='two'", 12) >= 0);
assert_se(match_add(slots, &root, "member='waldo',arg2path='/prefix/'", 13) >= 0);
assert_se(match_add(slots, &root, "member=waldo,path='/foo/bar',arg3namespace='prefix'", 14) >= 0);
+ assert_se(match_add(slots, &root, "arg4='pi'", 15) >= 0);
+ assert_se(match_add(slots, &root, "arg4='pa'", 16) >= 0);
+ assert_se(match_add(slots, &root, "arg4='po'", 17) >= 0);
+ assert_se(match_add(slots, &root, "arg4='pu'", 18) >= 0);
bus_match_dump(&root, 0);
assert_se(sd_bus_message_new_signal(bus, &m, "/foo/bar", "bar.x", "waldo") >= 0);
- assert_se(sd_bus_message_append(m, "ssss", "one", "two", "/prefix/three", "prefix.four") >= 0);
+ assert_se(sd_bus_message_append(m, "ssssas", "one", "two", "/prefix/three", "prefix.four", 3, "pi", "pa", "po") >= 0);
assert_se(bus_message_seal(m, 1, 0) >= 0);
zero(mask);
assert_se(bus_match_run(NULL, &root, m) == 0);
- assert_se(mask_contains((unsigned[]) { 9, 8, 7, 5, 10, 12, 13, 14 }, 8));
+ assert_se(mask_contains((unsigned[]) { 9, 8, 7, 5, 10, 12, 13, 14, 15, 16, 17 }, 11));
assert_se(bus_match_remove(&root, &slots[8].match_callback) >= 0);
assert_se(bus_match_remove(&root, &slots[13].match_callback) >= 0);
@@ -126,7 +131,7 @@ int main(int argc, char *argv[]) {
zero(mask);
assert_se(bus_match_run(NULL, &root, m) == 0);
- assert_se(mask_contains((unsigned[]) { 9, 5, 10, 12, 14, 7 }, 6));
+ assert_se(mask_contains((unsigned[]) { 9, 5, 10, 12, 14, 7, 15, 16, 17 }, 9));
for (i = 0; i < _BUS_MATCH_NODE_TYPE_MAX; i++) {
char buf[32];