X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flibsystemd-bus%2Ftest-bus-objects.c;h=0ab7a148d30d2f48e6d97756161410ae01c857d3;hp=543063f36191ead8c2ac39bb8e71af39d6d9a4fb;hb=c1b9d935725103e95901f347b8981647ce4dd546;hpb=68313d3dfa2082dae8a06643d639e0200afc19fc diff --git a/src/libsystemd-bus/test-bus-objects.c b/src/libsystemd-bus/test-bus-objects.c index 543063f36..0ab7a148d 100644 --- a/src/libsystemd-bus/test-bus-objects.c +++ b/src/libsystemd-bus/test-bus-objects.c @@ -33,6 +33,8 @@ #include "sd-bus.h" #include "bus-internal.h" #include "bus-message.h" +#include "bus-util.h" +#include "bus-dump.h" struct context { int fds[2]; @@ -42,7 +44,7 @@ struct context { uint32_t automatic_integer_property; }; -static int something_handler(sd_bus *bus, sd_bus_message *m, void *userdata) { +static int something_handler(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bus_error *error) { struct context *c = userdata; const char *s; char *n = NULL; @@ -59,13 +61,16 @@ static int something_handler(sd_bus *bus, sd_bus_message *m, void *userdata) { log_info("AlterSomething() called, got %s, returning %s", s, n); - r = sd_bus_reply_method_return(bus, m, "s", n); + /* This should fail, since the return type doesn't match */ + assert_se(sd_bus_reply_method_return(m, "u", 4711) == -ENOMSG); + + r = sd_bus_reply_method_return(m, "s", n); assert_se(r >= 0); return 1; } -static int exit_handler(sd_bus *bus, sd_bus_message *m, void *userdata) { +static int exit_handler(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bus_error *error) { struct context *c = userdata; int r; @@ -73,17 +78,17 @@ static int exit_handler(sd_bus *bus, sd_bus_message *m, void *userdata) { log_info("Exit called"); - r = sd_bus_reply_method_return(bus, m, ""); + r = sd_bus_reply_method_return(m, ""); assert_se(r >= 0); return 1; } -static int get_handler(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, sd_bus_error *error, void *userdata) { +static int get_handler(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, void *userdata, sd_bus_error *error) { struct context *c = userdata; int r; - log_info("property get for %s called", property); + log_info("property get for %s called, returning \"%s\".", property, c->something); r = sd_bus_message_append(reply, "s", c->something); assert_se(r >= 0); @@ -91,7 +96,7 @@ static int get_handler(sd_bus *bus, const char *path, const char *interface, con return 1; } -static int set_handler(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *value, sd_bus_error *error, void *userdata) { +static int set_handler(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *value, void *userdata, sd_bus_error *error) { struct context *c = userdata; const char *s; char *n; @@ -111,7 +116,7 @@ static int set_handler(sd_bus *bus, const char *path, const char *interface, con return 1; } -static int value_handler(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, sd_bus_error *error, void *userdata) { +static int value_handler(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, void *userdata, sd_bus_error *error) { _cleanup_free_ char *s = NULL; const char *x; int r; @@ -127,34 +132,34 @@ static int value_handler(sd_bus *bus, const char *path, const char *interface, c return 1; } -static int notify_test(sd_bus *bus, sd_bus_message *m, void *userdata) { +static int notify_test(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bus_error *error) { int r; assert_se(sd_bus_emit_properties_changed(bus, m->path, "org.freedesktop.systemd.ValueTest", "Value", NULL) >= 0); - r = sd_bus_reply_method_return(bus, m, NULL); + r = sd_bus_reply_method_return(m, NULL); assert_se(r >= 0); return 1; } -static int emit_interfaces_added(sd_bus *bus, sd_bus_message *m, void *userdata) { +static int emit_interfaces_added(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bus_error *error) { int r; assert_se(sd_bus_emit_interfaces_added(bus, m->path, "org.freedesktop.systemd.test", NULL) >= 0); - r = sd_bus_reply_method_return(bus, m, NULL); + r = sd_bus_reply_method_return(m, NULL); assert_se(r >= 0); return 1; } -static int emit_interfaces_removed(sd_bus *bus, sd_bus_message *m, void *userdata) { +static int emit_interfaces_removed(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bus_error *error) { int r; assert_se(sd_bus_emit_interfaces_removed(bus, m->path, "org.freedesktop.systemd.test", NULL) >= 0); - r = sd_bus_reply_method_return(bus, m, NULL); + r = sd_bus_reply_method_return(m, NULL); assert_se(r >= 0); return 1; @@ -180,7 +185,7 @@ static const sd_bus_vtable vtable2[] = { SD_BUS_VTABLE_END }; -static int enumerator_callback(sd_bus *b, const char *path, char ***nodes, void *userdata) { +static int enumerator_callback(sd_bus *b, const char *path, void *userdata, char ***nodes, sd_bus_error *error) { if (object_path_startswith("/value", path)) assert_se(*nodes = strv_new("/value/a", "/value/b", "/value/c", NULL)); @@ -269,13 +274,13 @@ static int client(struct context *c) { r = sd_bus_call_method(bus, "org.freedesktop.systemd.test", "/foo", "org.freedesktop.systemd.test", "Doesntexist", &error, &reply, ""); assert_se(r < 0); - assert_se(sd_bus_error_has_name(&error, "org.freedesktop.DBus.Error.UnknownMethod")); + assert_se(sd_bus_error_has_name(&error, SD_BUS_ERROR_UNKNOWN_METHOD)); sd_bus_error_free(&error); r = sd_bus_call_method(bus, "org.freedesktop.systemd.test", "/foo", "org.freedesktop.systemd.test", "AlterSomething", &error, &reply, "as", 1, "hallo"); assert_se(r < 0); - assert_se(sd_bus_error_has_name(&error, "org.freedesktop.DBus.Error.InvalidArgs")); + assert_se(sd_bus_error_has_name(&error, SD_BUS_ERROR_INVALID_ARGS)); sd_bus_error_free(&error); @@ -365,25 +370,25 @@ static int client(struct context *c) { r = sd_bus_call_method(bus, "org.freedesktop.systemd.test", "/foo", "org.freedesktop.DBus.Properties", "GetAll", &error, &reply, "s", ""); assert_se(r >= 0); - bus_message_dump(reply); + bus_message_dump(reply, stdout, true); sd_bus_message_unref(reply); reply = NULL; r = sd_bus_call_method(bus, "org.freedesktop.systemd.test", "/value/a", "org.freedesktop.DBus.Properties", "GetAll", &error, &reply, "s", "org.freedesktop.systemd.ValueTest2"); assert_se(r < 0); - assert_se(sd_bus_error_has_name(&error, "org.freedesktop.DBus.Error.UnknownInterface")); + assert_se(sd_bus_error_has_name(&error, SD_BUS_ERROR_UNKNOWN_INTERFACE)); sd_bus_error_free(&error); r = sd_bus_call_method(bus, "org.freedesktop.systemd.test", "/foo", "org.freedesktop.DBus.ObjectManager", "GetManagedObjects", &error, &reply, ""); assert_se(r < 0); - assert_se(sd_bus_error_has_name(&error, "org.freedesktop.DBus.Error.UnknownMethod")); + assert_se(sd_bus_error_has_name(&error, SD_BUS_ERROR_UNKNOWN_METHOD)); sd_bus_error_free(&error); r = sd_bus_call_method(bus, "org.freedesktop.systemd.test", "/value", "org.freedesktop.DBus.ObjectManager", "GetManagedObjects", &error, &reply, ""); assert_se(r >= 0); - bus_message_dump(reply); + bus_message_dump(reply, stdout, true); sd_bus_message_unref(reply); reply = NULL; @@ -395,7 +400,7 @@ static int client(struct context *c) { assert_se(r > 0); assert_se(sd_bus_message_is_signal(reply, "org.freedesktop.DBus.Properties", "PropertiesChanged")); - bus_message_dump(reply); + bus_message_dump(reply, stdout, true); sd_bus_message_unref(reply); reply = NULL; @@ -407,7 +412,7 @@ static int client(struct context *c) { assert_se(r > 0); assert_se(sd_bus_message_is_signal(reply, "org.freedesktop.DBus.ObjectManager", "InterfacesAdded")); - bus_message_dump(reply); + bus_message_dump(reply, stdout, true); sd_bus_message_unref(reply); reply = NULL; @@ -419,7 +424,7 @@ static int client(struct context *c) { assert_se(r > 0); assert_se(sd_bus_message_is_signal(reply, "org.freedesktop.DBus.ObjectManager", "InterfacesRemoved")); - bus_message_dump(reply); + bus_message_dump(reply, stdout, true); sd_bus_message_unref(reply); reply = NULL; @@ -433,7 +438,7 @@ static int client(struct context *c) { } int main(int argc, char *argv[]) { - struct context c; + struct context c = {}; pthread_t s; void *p; int r, q;