X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd%2Fsd-bus%2Ftest-bus-match.c;h=713311703832a7e2fbf534fba0a39feba12a3250;hb=fed1e721fd0c81e60c77120539f34e16c2585634;hp=a62de502f94cc4afcbd169fa07a94b1f19829c0a;hpb=19befb2d5fc087f96e40ddc432b2cc9385666209;p=elogind.git diff --git a/src/libsystemd/sd-bus/test-bus-match.c b/src/libsystemd/sd-bus/test-bus-match.c index a62de502f..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; } @@ -80,13 +81,19 @@ static int match_add(sd_bus_slot *slots, struct bus_match_node *root, const char } int main(int argc, char *argv[]) { - struct bus_match_node root; + struct bus_match_node root = { + .type = BUS_MATCH_ROOT, + }; + _cleanup_bus_message_unref_ sd_bus_message *m = 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; - zero(root); - root.type = BUS_MATCH_ROOT; + r = sd_bus_open_system(&bus); + if (r < 0) + return EXIT_TEST_SKIP; assert_se(match_add(slots, &root, "arg2='wal\\'do',sender='foo',type='signal',interface='bar.x',", 1) >= 0); assert_se(match_add(slots, &root, "arg2='wal\\'do2',sender='foo',type='signal',interface='bar.x',", 2) >= 0); @@ -102,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(NULL, &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_new_signal(bus, &m, "/foo/bar", "bar.x", "waldo") >= 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); @@ -120,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];