From 54060d44446cea023842e2a70ea3aec4857272b7 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 9 Feb 2010 14:57:49 -0600 Subject: Initial proxy files, copying from the properties test. --- tests/test-glib-proxy-client.c | 177 +++++++++++++++++++++++++++++++++++++++++ tests/test-glib-proxy-proxy.c | 0 tests/test-glib-proxy-server.c | 109 +++++++++++++++++++++++++ tests/test-glib-proxy.h | 116 +++++++++++++++++++++++++++ 4 files changed, 402 insertions(+) create mode 100644 tests/test-glib-proxy-client.c create mode 100644 tests/test-glib-proxy-proxy.c create mode 100644 tests/test-glib-proxy-server.c create mode 100644 tests/test-glib-proxy.h (limited to 'tests') diff --git a/tests/test-glib-proxy-client.c b/tests/test-glib-proxy-client.c new file mode 100644 index 0000000..434465a --- /dev/null +++ b/tests/test-glib-proxy-client.c @@ -0,0 +1,177 @@ +/* +A test for libdbusmenu to ensure its quality. + +Copyright 2009 Canonical Ltd. + +Authors: + Ted Gould + +This program is free software: you can redistribute it and/or modify it +under the terms of the GNU General Public License version 3, as published +by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranties of +MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR +PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program. If not, see . +*/ + +#include + +#include +#include + +#include "test-glib-properties.h" + +static guint layouton = 0; +static GMainLoop * mainloop = NULL; +static gboolean passed = TRUE; +static guint death_timer = 0; + +static gboolean +verify_props (DbusmenuMenuitem * mi, gchar ** properties) +{ + if (properties == NULL) { + return TRUE; + } + + /* Verify they're all there and correct */ + guint i; + for (i = 0; properties[i] != NULL; i += 2) { + const gchar * value = dbusmenu_menuitem_property_get(mi, properties[i]); + if (g_strcmp0(value, properties[i + 1])) { + g_debug("\tFailed as property '%s' should be '%s' and is '%s'", properties[i], properties[i+1], value); + return FALSE; + } + } + + /* Verify that we don't have any extras */ + // GList * props = dbusmenu_menuitem_properties_list(mi); + + return TRUE; +} + +static gboolean +verify_root_to_layout(DbusmenuMenuitem * mi, proplayout_t * layout) +{ + g_debug("Verifying ID: %d", layout->id); + + if (layout->id != dbusmenu_menuitem_get_id(mi)) { + if (!dbusmenu_menuitem_get_root(mi)) { + g_debug("\tFailed as ID %d is not equal to %d", layout->id, dbusmenu_menuitem_get_id(mi)); + return FALSE; + } + } + + if (!verify_props(mi, layout->properties)) { + g_debug("\tFailed as unable to verify properties."); + return FALSE; + } + + GList * children = dbusmenu_menuitem_get_children(mi); + + if (children == NULL && layout->submenu == NULL) { + g_debug("\tPassed: %d", layout->id); + return TRUE; + } + if (children == NULL || layout->submenu == NULL) { + if (children == NULL) { + g_debug("\tFailed as there are no children but we have submenus"); + } else { + g_debug("\tFailed as we have children but no submenu"); + } + return FALSE; + } + + guint i = 0; + for (i = 0; children != NULL && layout->submenu[i].id != -1; children = g_list_next(children), i++) { + if (!verify_root_to_layout(DBUSMENU_MENUITEM(children->data), &layout->submenu[i])) { + return FALSE; + } + } + + if (children == NULL && layout->submenu[i].id == -1) { + g_debug("\tPassed: %d", layout->id); + return TRUE; + } + + if (children != NULL) { + g_debug("\tFailed as there are still children but no submenus. (ID: %d)", layout->id); + } else { + g_debug("\tFailed as there are still submenus but no children. (ID: %d)", layout->id); + } + return FALSE; +} + +static gboolean +timer_func (gpointer data) +{ + g_debug("Death timer. Oops. Got to: %d", layouton); + passed = FALSE; + g_main_loop_quit(mainloop); + return FALSE; +} + +static gboolean layout_verify_timer (gpointer data); + +static void +layout_updated (DbusmenuClient * client, gpointer data) +{ + g_debug("Layout Updated"); + g_timeout_add (250, layout_verify_timer, client); + return; +} + +static gboolean +layout_verify_timer (gpointer data) +{ + DbusmenuMenuitem * menuroot = dbusmenu_client_get_root(DBUSMENU_CLIENT(data)); + proplayout_t * layout = &layouts[layouton]; + + if (!verify_root_to_layout(menuroot, layout)) { + g_debug("FAILED LAYOUT: %d", layouton); + passed = FALSE; + } else { + /* Extend our death */ + g_source_remove(death_timer); + death_timer = g_timeout_add_seconds(10, timer_func, data); + } + + layouton++; + + if (layouts[layouton].id == -1) { + g_main_loop_quit(mainloop); + } + + return FALSE; +} + +int +main (int argc, char ** argv) +{ + g_type_init(); + + /* Make sure the server starts up and all that */ + g_usleep(500000); + + DbusmenuClient * client = dbusmenu_client_new(":1.0", "/org/test"); + g_signal_connect(G_OBJECT(client), DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED, G_CALLBACK(layout_updated), NULL); + + death_timer = g_timeout_add_seconds(10, timer_func, client); + + mainloop = g_main_loop_new(NULL, FALSE); + g_main_loop_run(mainloop); + + g_object_unref(G_OBJECT(client)); + + if (passed) { + g_debug("Quiting"); + return 0; + } else { + g_debug("Quiting as we're a failure"); + return 1; + } +} diff --git a/tests/test-glib-proxy-proxy.c b/tests/test-glib-proxy-proxy.c new file mode 100644 index 0000000..e69de29 diff --git a/tests/test-glib-proxy-server.c b/tests/test-glib-proxy-server.c new file mode 100644 index 0000000..091e550 --- /dev/null +++ b/tests/test-glib-proxy-server.c @@ -0,0 +1,109 @@ +/* +A test for libdbusmenu to ensure its quality. + +Copyright 2009 Canonical Ltd. + +Authors: + Ted Gould + +This program is free software: you can redistribute it and/or modify it +under the terms of the GNU General Public License version 3, as published +by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranties of +MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR +PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program. If not, see . +*/ + +#include + +#include +#include +#include + +#include +#include + +#include "test-glib-properties.h" + +static void +set_props (DbusmenuMenuitem * mi, gchar ** props) +{ + if (props == NULL) return; + + guint i; + for (i = 0; props[i] != NULL; i += 2) { + dbusmenu_menuitem_property_set(mi, props[i], props[i+1]); + } + + return; +} + +static DbusmenuMenuitem * +layout2menuitem (proplayout_t * layout) +{ + if (layout == NULL || layout->id == -1) return NULL; + + DbusmenuMenuitem * local = dbusmenu_menuitem_new_with_id(layout->id); + set_props(local, layout->properties); + + if (layout->submenu != NULL) { + guint count; + for (count = 0; layout->submenu[count].id != -1; count++) { + DbusmenuMenuitem * child = layout2menuitem(&layout->submenu[count]); + if (child != NULL) { + dbusmenu_menuitem_child_append(local, child); + } + } + } + + /* g_debug("Layout to menu return: 0x%X", (unsigned int)local); */ + return local; +} + +static guint layouton = 0; +static DbusmenuServer * server = NULL; +static GMainLoop * mainloop = NULL; + +static gboolean +timer_func (gpointer data) +{ + if (layouts[layouton].id == -1) { + g_main_loop_quit(mainloop); + return FALSE; + } + g_debug("Updating to Layout %d", layouton); + + DbusmenuMenuitem * mi = layout2menuitem(&layouts[layouton]); + dbusmenu_server_set_root(server, mi); + g_object_unref(G_OBJECT(mi)); + layouton++; + + return TRUE; +} + +int +main (int argc, char ** argv) +{ + g_type_init(); + + g_debug("DBus ID: %s", dbus_connection_get_server_id(dbus_g_connection_get_connection(dbus_g_bus_get(DBUS_BUS_SESSION, NULL)))); + + server = dbusmenu_server_new("/org/test"); + + timer_func(NULL); + g_timeout_add(2500, timer_func, NULL); + + mainloop = g_main_loop_new(NULL, FALSE); + g_main_loop_run(mainloop); + + g_object_unref(G_OBJECT(server)); + g_debug("Quiting"); + + return 0; +} + diff --git a/tests/test-glib-proxy.h b/tests/test-glib-proxy.h new file mode 100644 index 0000000..c0c929a --- /dev/null +++ b/tests/test-glib-proxy.h @@ -0,0 +1,116 @@ +/* +A test for libdbusmenu to ensure its quality. + +Copyright 2009 Canonical Ltd. + +Authors: + Ted Gould + +This program is free software: you can redistribute it and/or modify it +under the terms of the GNU General Public License version 3, as published +by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranties of +MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR +PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program. If not, see . +*/ + + +#include + +typedef struct _proplayout_t proplayout_t; +struct _proplayout_t { + gint id; + gchar ** properties; + proplayout_t * submenu; +}; + +gchar * props1[] = {"property1", "value1", "property2", "value2", NULL}; +gchar * props2[] = {"property00", "value00", "property01", "value01", "property02", "value02", "property03", "value03", "property04", "value04", + "property05", "value05", "property06", "value06", "property07", "value07", "property08", "value08", "property09", "value09", + "property10", "value10", "property11", "value11", "property12", "value12", "property13", "value13", "property14", "value14", + "property15", "value15", "property16", "value16", "property17", "value17", "property18", "value18", "property19", "value19", + "property20", "value20", "property21", "value21", "property22", "value22", "property23", "value23", "property24", "value24", + "property25", "value25", "property26", "value26", "property27", "value27", "property28", "value28", "property29", "value29", + "property30", "value30", "property31", "value31", "property32", "value32", "property33", "value33", "property34", "value34", + "property35", "value35", "property36", "value36", "property37", "value37", "property38", "value38", "property39", "value39", + "property40", "value40", "property41", "value41", "property42", "value42", "property43", "value43", "property44", "value44", + "property45", "value45", "property46", "value46", "property47", "value47", "property48", "value48", "property49", "value49", + "property50", "value50", "property51", "value51", "property52", "value52", "property53", "value53", "property54", "value54", + "property55", "value55", "property56", "value56", "property57", "value57", "property58", "value58", "property59", "value59", + "property60", "value60", "property61", "value61", "property62", "value62", "property63", "value63", "property64", "value64", + "property65", "value65", "property66", "value66", "property67", "value67", "property68", "value68", "property69", "value69", + "property70", "value70", "property71", "value71", "property72", "value72", "property73", "value73", "property74", "value74", + "property75", "value75", "property76", "value76", "property77", "value77", "property78", "value78", "property79", "value79", + "property80", "value80", "property81", "value81", "property82", "value82", "property83", "value83", "property84", "value84", + "property85", "value85", "property86", "value86", "property87", "value87", "property88", "value88", "property89", "value89", + "property90", "value90", "property91", "value91", "property92", "value92", "property93", "value93", "property94", "value94", + "property95", "value95", "property96", "value96", "property97", "value97", "property98", "value98", "property99", "value99", + NULL}; +gchar * props3[] = {"property name that is really long and will ensure that we can really have long property names, which could be important at some point.", + "And a property name that is really long should have a value that is really long, because well, that's an important part of the yin and yang of software testing.", + NULL}; +gchar * props4[] = {"icon-name", "network-status", "label", "Look at network", "right-column", "10:32", NULL}; + + +proplayout_t submenu_4_1[] = { + {id: 10, properties: props2, submenu: NULL}, + {id: 11, properties: props2, submenu: NULL}, + {id: 12, properties: props2, submenu: NULL}, + {id: 13, properties: props2, submenu: NULL}, + {id: 14, properties: props2, submenu: NULL}, + {id: 15, properties: props2, submenu: NULL}, + {id: 16, properties: props2, submenu: NULL}, + {id: 17, properties: props2, submenu: NULL}, + {id: 18, properties: props2, submenu: NULL}, + {id: 19, properties: props2, submenu: NULL}, + {id: -1, properties: NULL, submenu: NULL} +}; + +proplayout_t submenu_4_2[] = { + {id: 20, properties: props2, submenu: NULL}, + {id: 21, properties: props2, submenu: NULL}, + {id: 22, properties: props2, submenu: NULL}, + {id: 23, properties: props2, submenu: NULL}, + {id: 24, properties: props2, submenu: NULL}, + {id: 25, properties: props2, submenu: NULL}, + {id: 26, properties: props2, submenu: NULL}, + {id: 27, properties: props2, submenu: NULL}, + {id: 28, properties: props2, submenu: NULL}, + {id: 29, properties: props2, submenu: NULL}, + {id: -1, properties: NULL, submenu: NULL} +}; + +proplayout_t submenu_4_3[] = { + {id: 30, properties: props2, submenu: NULL}, + {id: 31, properties: props2, submenu: NULL}, + {id: 32, properties: props2, submenu: NULL}, + {id: 33, properties: props2, submenu: NULL}, + {id: 34, properties: props2, submenu: NULL}, + {id: 35, properties: props2, submenu: NULL}, + {id: 36, properties: props2, submenu: NULL}, + {id: 37, properties: props2, submenu: NULL}, + {id: 38, properties: props2, submenu: NULL}, + {id: 39, properties: props2, submenu: NULL}, + {id: -1, properties: NULL, submenu: NULL} +}; + +proplayout_t submenu_4_0[] = { + {id: 1, properties: props2, submenu: submenu_4_1}, + {id: 2, properties: props2, submenu: submenu_4_2}, + {id: 3, properties: props2, submenu: submenu_4_3}, + {id: -1, properties: NULL, submenu: NULL} +}; + +proplayout_t layouts[] = { + {id: 1, properties: props1, submenu: NULL}, + {id: 10, properties: props2, submenu: NULL}, + {id: 20, properties: props3, submenu: NULL}, + {id: 100, properties: props2, submenu: submenu_4_0}, + {id: -1, properties: NULL, submenu: NULL} +}; + -- cgit v1.2.3 From f8f935ea451c7b102a6b83b72c90d73255dac139 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 9 Feb 2010 15:15:45 -0600 Subject: Setting this stuff up. Woot. --- tests/test-glib-proxy-client.c | 5 +---- tests/test-glib-proxy-server.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) (limited to 'tests') diff --git a/tests/test-glib-proxy-client.c b/tests/test-glib-proxy-client.c index 434465a..7e3541a 100644 --- a/tests/test-glib-proxy-client.c +++ b/tests/test-glib-proxy-client.c @@ -154,10 +154,7 @@ main (int argc, char ** argv) { g_type_init(); - /* Make sure the server starts up and all that */ - g_usleep(500000); - - DbusmenuClient * client = dbusmenu_client_new(":1.0", "/org/test"); + DbusmenuClient * client = dbusmenu_client_new("test.proxy.first_proxy", "/org/test"); g_signal_connect(G_OBJECT(client), DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED, G_CALLBACK(layout_updated), NULL); death_timer = g_timeout_add_seconds(10, timer_func, client); diff --git a/tests/test-glib-proxy-server.c b/tests/test-glib-proxy-server.c index 091e550..2869bfe 100644 --- a/tests/test-glib-proxy-server.c +++ b/tests/test-glib-proxy-server.c @@ -93,6 +93,19 @@ main (int argc, char ** argv) g_debug("DBus ID: %s", dbus_connection_get_server_id(dbus_g_connection_get_connection(dbus_g_bus_get(DBUS_BUS_SESSION, NULL)))); + DBusGProxy * bus_proxy = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); + guint nameret = 0; + + if (!org_freedesktop_DBus_request_name(bus_proxy, "test.proxy.server", 0, &nameret, &error)) { + g_error("Unable to call to request name"); + return 1; + } + + if (nameret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { + g_error("Unable to get name"); + return 1; + } + server = dbusmenu_server_new("/org/test"); timer_func(NULL); -- cgit v1.2.3 From 5bf534342bd9b95193525414b10dcae8dd0b71b2 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 9 Feb 2010 15:22:31 -0600 Subject: Setting up building our little proxy test. --- tests/Makefile.am | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'tests') diff --git a/tests/Makefile.am b/tests/Makefile.am index 746ac23..465f829 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -5,6 +5,7 @@ TESTS = \ test-glib-objects-test \ test-glib-layout \ test-glib-properties \ + test-glib-proxy \ test-glib-simple-items \ test-gtk-label \ test-gtk-reorder @@ -16,6 +17,9 @@ check_PROGRAMS = \ test-glib-layout-server \ test-glib-properties-client \ test-glib-properties-server \ + test-glib-proxy-client \ + test-glib-proxy-server \ + test-glib-proxy-proxy \ test-gtk-label-client \ test-gtk-label-server \ test-glib-simple-items \ @@ -127,6 +131,52 @@ test_glib_properties_client_LDADD = \ ../libdbusmenu-glib/libdbusmenu-glib.la \ $(DBUSMENUGLIB_LIBS) +###################### +# Test Glib Proxy +###################### + +test-glib-proxy: test-glib-proxy-client test-glib-proxy-server test-glib-proxy-proxy Makefile.am + @echo "#!/bin/bash" > $@ + @echo $(DBUS_RUNNER) --task ./test-glib-proxy-client --task-name Client --task ./test-glib-proxy-server --task-name Server --ignore-return \\ >> $@ + @echo --task ./test-glib-proxy-proxy --parameter test.proxy.proxy_first --parameter test.proxy.server --task-name Proxy01 + @chmod +x $@ + +test_glib_proxy_server_SOURCES = \ + test-glib-proxy.h \ + test-glib-proxy-server.c + +test_glib_proxy_server_CFLAGS = \ + -I $(srcdir)/.. \ + $(DBUSMENUGLIB_CFLAGS) -Wall -Werror + +test_glib_proxy_server_LDADD = \ + ../libdbusmenu-glib/libdbusmenu-glib.la \ + $(DBUSMENUGLIB_LIBS) + +test_glib_proxy_client_SOURCES = \ + test-glib-proxy.h \ + test-glib-proxy-client.c + +test_glib_proxy_client_CFLAGS = \ + -I $(srcdir)/.. \ + $(DBUSMENUGLIB_CFLAGS) -Wall -Werror + +test_glib_proxy_client_LDADD = \ + ../libdbusmenu-glib/libdbusmenu-glib.la \ + $(DBUSMENUGLIB_LIBS) + +test_glib_proxy_proxy_SOURCES = \ + test-glib-proxy.h \ + test-glib-proxy-proxy.c + +test_glib_proxy_proxy_CFLAGS = \ + -I $(srcdir)/.. \ + $(DBUSMENUGLIB_CFLAGS) -Wall -Werror + +test_glib_proxy_proxy_LDADD = \ + ../libdbusmenu-glib/libdbusmenu-glib.la \ + $(DBUSMENUGLIB_LIBS) + ######################### # Test Glib Simple Items ######################### -- cgit v1.2.3 From a52f4ea9d88394aca3992f4c9ca8093d7f07993f Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 9 Feb 2010 15:26:06 -0600 Subject: Fixing build --- tests/test-glib-proxy-client.c | 2 +- tests/test-glib-proxy-server.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'tests') diff --git a/tests/test-glib-proxy-client.c b/tests/test-glib-proxy-client.c index 7e3541a..b1caaad 100644 --- a/tests/test-glib-proxy-client.c +++ b/tests/test-glib-proxy-client.c @@ -24,7 +24,7 @@ with this program. If not, see . #include #include -#include "test-glib-properties.h" +#include "test-glib-proxy.h" static guint layouton = 0; static GMainLoop * mainloop = NULL; diff --git a/tests/test-glib-proxy-server.c b/tests/test-glib-proxy-server.c index 2869bfe..4458acf 100644 --- a/tests/test-glib-proxy-server.c +++ b/tests/test-glib-proxy-server.c @@ -24,11 +24,12 @@ with this program. If not, see . #include #include #include +#include #include #include -#include "test-glib-properties.h" +#include "test-glib-proxy.h" static void set_props (DbusmenuMenuitem * mi, gchar ** props) @@ -91,7 +92,10 @@ main (int argc, char ** argv) { g_type_init(); - g_debug("DBus ID: %s", dbus_connection_get_server_id(dbus_g_connection_get_connection(dbus_g_bus_get(DBUS_BUS_SESSION, NULL)))); + GError * error = NULL; + DBusGConnection * connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); + + g_debug("DBus ID: %s", dbus_connection_get_server_id(dbus_g_connection_get_connection(connection))); DBusGProxy * bus_proxy = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); guint nameret = 0; -- cgit v1.2.3 From aeed270838d07165aa76f95ac445e384fbb94ea5 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 9 Feb 2010 15:38:03 -0600 Subject: First setup a server. --- tests/test-glib-proxy-proxy.c | 58 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) (limited to 'tests') diff --git a/tests/test-glib-proxy-proxy.c b/tests/test-glib-proxy-proxy.c index e69de29..781c13c 100644 --- a/tests/test-glib-proxy-proxy.c +++ b/tests/test-glib-proxy-proxy.c @@ -0,0 +1,58 @@ +#include + +#include +#include +#include +#include + +#include +#include + +#include "test-glib-proxy.h" + +static DbusmenuServer * server = NULL; +static GMainLoop * mainloop = NULL; + +int +main (int argc, char ** argv) +{ + g_type_init(); + + if (argc != 3) { + g_error ("Need two params"); + return 1; + } + + gchar * whoami = argv[1]; + gchar * myproxy = argv[2]; + + g_debug("I am '%s' and I'm proxying '%s'", whoami, myproxy); + + GError * error = NULL; + DBusGConnection * connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); + + g_debug("DBus ID: %s", dbus_connection_get_server_id(dbus_g_connection_get_connection(connection))); + + DBusGProxy * bus_proxy = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); + guint nameret = 0; + + if (!org_freedesktop_DBus_request_name(bus_proxy, whoami, 0, &nameret, &error)) { + g_error("Unable to call to request name"); + return 1; + } + + if (nameret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { + g_error("Unable to get name"); + return 1; + } + + server = dbusmenu_server_new("/org/test"); + + mainloop = g_main_loop_new(NULL, FALSE); + g_main_loop_run(mainloop); + + g_object_unref(G_OBJECT(server)); + g_debug("Quiting"); + + return 0; +} -- cgit v1.2.3 From 532e1f0e65e1339b7ba1169065390b2c861e6ac6 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 9 Feb 2010 15:39:43 -0600 Subject: Oops, get that in the script! --- tests/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/Makefile.am b/tests/Makefile.am index 465f829..96e425d 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -138,7 +138,7 @@ test_glib_properties_client_LDADD = \ test-glib-proxy: test-glib-proxy-client test-glib-proxy-server test-glib-proxy-proxy Makefile.am @echo "#!/bin/bash" > $@ @echo $(DBUS_RUNNER) --task ./test-glib-proxy-client --task-name Client --task ./test-glib-proxy-server --task-name Server --ignore-return \\ >> $@ - @echo --task ./test-glib-proxy-proxy --parameter test.proxy.proxy_first --parameter test.proxy.server --task-name Proxy01 + @echo --task ./test-glib-proxy-proxy --parameter test.proxy.proxy_first --parameter test.proxy.server --task-name Proxy01 >> $@ @chmod +x $@ test_glib_proxy_server_SOURCES = \ -- cgit v1.2.3 From 02108a4b99cc120d0543c04e6c0067184ca53889 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 9 Feb 2010 22:14:47 -0600 Subject: Setting up a client, and handling root changes. --- tests/test-glib-proxy-proxy.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'tests') diff --git a/tests/test-glib-proxy-proxy.c b/tests/test-glib-proxy-proxy.c index 781c13c..93a4b7a 100644 --- a/tests/test-glib-proxy-proxy.c +++ b/tests/test-glib-proxy-proxy.c @@ -7,12 +7,28 @@ #include #include +#include #include "test-glib-proxy.h" static DbusmenuServer * server = NULL; +static DbusmenuClient * client = NULL; static GMainLoop * mainloop = NULL; +void +root_changed (DbusmenuClient * client, DbusmenuMenuitem * newroot, gpointer user_data) +{ + if (newroot == NULL) { + g_debug("Root removed, exiting"); + g_main_loop_quit(mainloop); + return; + } + + DbusmenuMenuitem * pmi;// = dbusmenu_menuitem_proxy_new(newroot); + dbusmenu_server_set_root(server, DBUSMENU_MENUITEM(pmi)); + return; +} + int main (int argc, char ** argv) { @@ -47,6 +63,9 @@ main (int argc, char ** argv) } server = dbusmenu_server_new("/org/test"); + client = dbusmenu_client_new(myproxy, "/org/test"); + + g_signal_connect(client, DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED, G_CALLBACK(root_changed), server); mainloop = g_main_loop_new(NULL, FALSE); g_main_loop_run(mainloop); -- cgit v1.2.3 From 999c17083310eb1e144602f62e999aed1203c3a0 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 9 Feb 2010 22:15:18 -0600 Subject: Connecting to the proxy baby. --- tests/test-glib-proxy-proxy.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/test-glib-proxy-proxy.c b/tests/test-glib-proxy-proxy.c index 93a4b7a..79850b0 100644 --- a/tests/test-glib-proxy-proxy.c +++ b/tests/test-glib-proxy-proxy.c @@ -6,6 +6,7 @@ #include #include +#include #include #include @@ -24,7 +25,7 @@ root_changed (DbusmenuClient * client, DbusmenuMenuitem * newroot, gpointer user return; } - DbusmenuMenuitem * pmi;// = dbusmenu_menuitem_proxy_new(newroot); + DbusmenuMenuitemProxy * pmi = dbusmenu_menuitem_proxy_new(newroot); dbusmenu_server_set_root(server, DBUSMENU_MENUITEM(pmi)); return; } -- cgit v1.2.3 From 9fcc7e58982ef73d3cfc620fec98f836eff96464 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 9 Feb 2010 22:26:23 -0600 Subject: Oops, damn dislxeia --- tests/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/Makefile.am b/tests/Makefile.am index 96e425d..72c4919 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -138,7 +138,7 @@ test_glib_properties_client_LDADD = \ test-glib-proxy: test-glib-proxy-client test-glib-proxy-server test-glib-proxy-proxy Makefile.am @echo "#!/bin/bash" > $@ @echo $(DBUS_RUNNER) --task ./test-glib-proxy-client --task-name Client --task ./test-glib-proxy-server --task-name Server --ignore-return \\ >> $@ - @echo --task ./test-glib-proxy-proxy --parameter test.proxy.proxy_first --parameter test.proxy.server --task-name Proxy01 >> $@ + @echo --task ./test-glib-proxy-proxy --parameter test.proxy.first_proxy --parameter test.proxy.server --task-name Proxy01 >> $@ @chmod +x $@ test_glib_proxy_server_SOURCES = \ -- cgit v1.2.3 From 83c4c2b3a38f642b3fd0af7e9685ce3682e178d1 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 10 Feb 2010 14:54:32 -0600 Subject: Making submenus to cause layout changes to queue both sides as the root item isn't changing. --- tests/test-glib-proxy.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/tests/test-glib-proxy.h b/tests/test-glib-proxy.h index c0c929a..4018fdf 100644 --- a/tests/test-glib-proxy.h +++ b/tests/test-glib-proxy.h @@ -108,8 +108,8 @@ proplayout_t submenu_4_0[] = { proplayout_t layouts[] = { {id: 1, properties: props1, submenu: NULL}, - {id: 10, properties: props2, submenu: NULL}, - {id: 20, properties: props3, submenu: NULL}, + {id: 10, properties: props2, submenu: submenu_4_1}, + {id: 20, properties: props3, submenu: submenu_4_2}, {id: 100, properties: props2, submenu: submenu_4_0}, {id: -1, properties: NULL, submenu: NULL} }; -- cgit v1.2.3 From a151474f523c222f508f9164a2e33e29f048ab2e Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 10 Feb 2010 15:09:33 -0600 Subject: Can't verify IDs because the proxy scrambles them (and that's okay). --- tests/test-glib-proxy-client.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) (limited to 'tests') diff --git a/tests/test-glib-proxy-client.c b/tests/test-glib-proxy-client.c index b1caaad..03b850d 100644 --- a/tests/test-glib-proxy-client.c +++ b/tests/test-glib-proxy-client.c @@ -59,13 +59,6 @@ verify_root_to_layout(DbusmenuMenuitem * mi, proplayout_t * layout) { g_debug("Verifying ID: %d", layout->id); - if (layout->id != dbusmenu_menuitem_get_id(mi)) { - if (!dbusmenu_menuitem_get_root(mi)) { - g_debug("\tFailed as ID %d is not equal to %d", layout->id, dbusmenu_menuitem_get_id(mi)); - return FALSE; - } - } - if (!verify_props(mi, layout->properties)) { g_debug("\tFailed as unable to verify properties."); return FALSE; @@ -121,7 +114,7 @@ static void layout_updated (DbusmenuClient * client, gpointer data) { g_debug("Layout Updated"); - g_timeout_add (250, layout_verify_timer, client); + g_timeout_add (500, layout_verify_timer, client); return; } -- cgit v1.2.3 From 4576a04c7fbd5e251d12714c157c1e29f93693f6 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 10 Feb 2010 15:09:50 -0600 Subject: Debug message --- tests/test-glib-proxy-proxy.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'tests') diff --git a/tests/test-glib-proxy-proxy.c b/tests/test-glib-proxy-proxy.c index 79850b0..1059cfd 100644 --- a/tests/test-glib-proxy-proxy.c +++ b/tests/test-glib-proxy-proxy.c @@ -19,6 +19,8 @@ static GMainLoop * mainloop = NULL; void root_changed (DbusmenuClient * client, DbusmenuMenuitem * newroot, gpointer user_data) { + g_debug("New root: %X", (guint)newroot); + if (newroot == NULL) { g_debug("Root removed, exiting"); g_main_loop_quit(mainloop); -- cgit v1.2.3 From d7ff65d6ea4fb13f6b39d4a3d79ede2380711df2 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 10 Feb 2010 16:55:26 -0600 Subject: Making this a little crazy, lots of proxies. --- tests/Makefile.am | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/Makefile.am b/tests/Makefile.am index 72c4919..cfa1399 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -138,7 +138,11 @@ test_glib_properties_client_LDADD = \ test-glib-proxy: test-glib-proxy-client test-glib-proxy-server test-glib-proxy-proxy Makefile.am @echo "#!/bin/bash" > $@ @echo $(DBUS_RUNNER) --task ./test-glib-proxy-client --task-name Client --task ./test-glib-proxy-server --task-name Server --ignore-return \\ >> $@ - @echo --task ./test-glib-proxy-proxy --parameter test.proxy.first_proxy --parameter test.proxy.server --task-name Proxy01 >> $@ + @echo --task ./test-glib-proxy-proxy --parameter test.proxy.first_proxy --parameter test.proxy.second_proxy --task-name Proxy01 --ignore-return \\ >> $@ + @echo --task ./test-glib-proxy-proxy --parameter test.proxy.second_proxy --parameter test.proxy.third_proxy --task-name Proxy02 --ignore-return \\ >> $@ + @echo --task ./test-glib-proxy-proxy --parameter test.proxy.third_proxy --parameter test.proxy.fourth_proxy --task-name Proxy03 --ignore-return \\ >> $@ + @echo --task ./test-glib-proxy-proxy --parameter test.proxy.fourth_proxy --parameter test.proxy.last_proxy --task-name Proxy04 --ignore-return \\ >> $@ + @echo --task ./test-glib-proxy-proxy --parameter test.proxy.last_proxy --parameter test.proxy.server --task-name Proxy05 --ignore-return >> $@ @chmod +x $@ test_glib_proxy_server_SOURCES = \ -- cgit v1.2.3 From 865f4cb66f4d41b3ee15faf27bd4412c8356d7da Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 10 Feb 2010 17:11:07 -0600 Subject: Lengthening the time to make it through all the proxies. --- tests/test-glib-proxy-client.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/test-glib-proxy-client.c b/tests/test-glib-proxy-client.c index 03b850d..0e52aa4 100644 --- a/tests/test-glib-proxy-client.c +++ b/tests/test-glib-proxy-client.c @@ -114,7 +114,7 @@ static void layout_updated (DbusmenuClient * client, gpointer data) { g_debug("Layout Updated"); - g_timeout_add (500, layout_verify_timer, client); + g_timeout_add (1500, layout_verify_timer, client); return; } -- cgit v1.2.3 From 2016dbb8bcacf970d5a4636d922597164cd66704 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Feb 2010 16:00:22 -0600 Subject: Only changing layouts when they're updated. --- tests/test-glib-proxy-client.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'tests') diff --git a/tests/test-glib-proxy-client.c b/tests/test-glib-proxy-client.c index 0e52aa4..b37cd61 100644 --- a/tests/test-glib-proxy-client.c +++ b/tests/test-glib-proxy-client.c @@ -26,7 +26,7 @@ with this program. If not, see . #include "test-glib-proxy.h" -static guint layouton = 0; +static guint layouton = -1; static GMainLoop * mainloop = NULL; static gboolean passed = TRUE; static guint death_timer = 0; @@ -114,6 +114,7 @@ static void layout_updated (DbusmenuClient * client, gpointer data) { g_debug("Layout Updated"); + layouton++; g_timeout_add (1500, layout_verify_timer, client); return; } @@ -121,6 +122,7 @@ layout_updated (DbusmenuClient * client, gpointer data) static gboolean layout_verify_timer (gpointer data) { + g_debug("Verifing Layout: %d", layouton); DbusmenuMenuitem * menuroot = dbusmenu_client_get_root(DBUSMENU_CLIENT(data)); proplayout_t * layout = &layouts[layouton]; @@ -133,9 +135,7 @@ layout_verify_timer (gpointer data) death_timer = g_timeout_add_seconds(10, timer_func, data); } - layouton++; - - if (layouts[layouton].id == -1) { + if (layouts[layouton+1].id == -1) { g_main_loop_quit(mainloop); } -- cgit v1.2.3 From bdbd32b98a1742878aaa26416c11f88a0f09c627 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Feb 2010 16:45:52 -0600 Subject: not setting the IDs as we're not using them on the other side anyway --- tests/test-glib-proxy-server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/test-glib-proxy-server.c b/tests/test-glib-proxy-server.c index 4458acf..cba8ec7 100644 --- a/tests/test-glib-proxy-server.c +++ b/tests/test-glib-proxy-server.c @@ -49,7 +49,7 @@ layout2menuitem (proplayout_t * layout) { if (layout == NULL || layout->id == -1) return NULL; - DbusmenuMenuitem * local = dbusmenu_menuitem_new_with_id(layout->id); + DbusmenuMenuitem * local = dbusmenu_menuitem_new(); set_props(local, layout->properties); if (layout->submenu != NULL) { -- cgit v1.2.3 From fa7cb0d330eff5c22def277b1382d1328ffc40c2 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Feb 2010 21:43:28 -0600 Subject: Ignoring Layout changes when they don't relate to having one. --- tests/test-glib-proxy-client.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'tests') diff --git a/tests/test-glib-proxy-client.c b/tests/test-glib-proxy-client.c index b37cd61..50ad5d3 100644 --- a/tests/test-glib-proxy-client.c +++ b/tests/test-glib-proxy-client.c @@ -114,6 +114,10 @@ static void layout_updated (DbusmenuClient * client, gpointer data) { g_debug("Layout Updated"); + if (dbusmenu_client_get_root(client) == NULL) { + g_debug("\tIgnored, no root"); + return; + } layouton++; g_timeout_add (1500, layout_verify_timer, client); return; -- cgit v1.2.3 From decf0a8c7b80762acfc1d54ecc7c0d2ea1a41ad7 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Sat, 13 Feb 2010 00:41:53 -0600 Subject: Adding a further multi-level test. --- tests/test-glib-proxy.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'tests') diff --git a/tests/test-glib-proxy.h b/tests/test-glib-proxy.h index 4018fdf..bc12df6 100644 --- a/tests/test-glib-proxy.h +++ b/tests/test-glib-proxy.h @@ -106,11 +106,37 @@ proplayout_t submenu_4_0[] = { {id: -1, properties: NULL, submenu: NULL} }; +proplayout_t submenu_5_5[] = { + {id: 205, properties: props3, submenu: NULL}, + {id: -1, properties: NULL, submenu: NULL} +}; + +proplayout_t submenu_5_4[] = { + {id: 204, properties: props3, submenu: submenu_5_5}, + {id: -1, properties: NULL, submenu: NULL} +}; + +proplayout_t submenu_5_3[] = { + {id: 203, properties: props3, submenu: submenu_5_4}, + {id: -1, properties: NULL, submenu: NULL} +}; + +proplayout_t submenu_5_2[] = { + {id: 202, properties: props3, submenu: submenu_5_3}, + {id: -1, properties: NULL, submenu: NULL} +}; + +proplayout_t submenu_5_1[] = { + {id: 201, properties: props3, submenu: submenu_5_2}, + {id: -1, properties: NULL, submenu: NULL} +}; + proplayout_t layouts[] = { {id: 1, properties: props1, submenu: NULL}, {id: 10, properties: props2, submenu: submenu_4_1}, {id: 20, properties: props3, submenu: submenu_4_2}, {id: 100, properties: props2, submenu: submenu_4_0}, + {id: 200, properties: props3, submenu: submenu_5_1}, {id: -1, properties: NULL, submenu: NULL} }; -- cgit v1.2.3