← Back to team overview

ayatana-commits team mailing list archive

[Branch ~dbusmenu-team/dbusmenu/trunk] Rev 76: Updates to make the proxy test more reliable

 

Merge authors:
  Ted Gould (ted)
------------------------------------------------------------
revno: 76 [merge]
committer: Ted Gould <ted@xxxxxxxx>
branch nick: trunk
timestamp: Fri 2010-02-19 15:46:04 -0600
message:
  Updates to make the proxy test more reliable
modified:
  tests/test-glib-proxy-client.c
  tests/test-glib-proxy-server.c
  tests/test-glib-proxy.h


--
lp:dbusmenu
https://code.launchpad.net/~dbusmenu-team/dbusmenu/trunk

Your team ayatana-commits is subscribed to branch lp:dbusmenu.
To unsubscribe from this branch go to https://code.launchpad.net/~dbusmenu-team/dbusmenu/trunk/+edit-subscription.
=== modified file 'tests/test-glib-proxy-client.c'
--- tests/test-glib-proxy-client.c	2010-02-13 03:43:28 +0000
+++ tests/test-glib-proxy-client.c	2010-02-19 21:41:56 +0000
@@ -26,10 +26,11 @@
 
 #include "test-glib-proxy.h"
 
-static guint layouton = -1;
+static guint layouton = -2;
 static GMainLoop * mainloop = NULL;
 static gboolean passed = TRUE;
 static guint death_timer = 0;
+static guint verify_timer = 0;
 
 static gboolean
 verify_props (DbusmenuMenuitem * mi, gchar ** properties)
@@ -118,16 +119,22 @@
 		g_debug("\tIgnored, no root");
 		return;
 	}
-	layouton++;
-	g_timeout_add (1500, layout_verify_timer, client);
+	if (verify_timer != 0) {
+		g_source_remove(verify_timer);
+	}
+
+	verify_timer = g_timeout_add (3000, layout_verify_timer, client);
 	return;
 }
 
 static gboolean
 layout_verify_timer (gpointer data)
 {
+	DbusmenuMenuitem * menuroot = dbusmenu_client_get_root(DBUSMENU_CLIENT(data));
+	layouton = dbusmenu_menuitem_property_get_int(menuroot, LAYOUT_ON);
+
 	g_debug("Verifing Layout: %d", layouton);
-	DbusmenuMenuitem * menuroot = dbusmenu_client_get_root(DBUSMENU_CLIENT(data));
+	verify_timer = 0;
 	proplayout_t * layout = &layouts[layouton];
 	
 	if (!verify_root_to_layout(menuroot, layout)) {
@@ -136,13 +143,18 @@
 	} else {
 		/* Extend our death */
 		g_source_remove(death_timer);
-		death_timer = g_timeout_add_seconds(10, timer_func, data);
+		death_timer = g_timeout_add_seconds(4, timer_func, data);
 	}
 
 	if (layouts[layouton+1].id == -1) {
 		g_main_loop_quit(mainloop);
 	}
 
+	GValue value = {0};
+	g_value_init(&value, G_TYPE_INT);
+	g_value_set_int(&value, 0);
+	dbusmenu_menuitem_handle_event(menuroot, "clicked", &value, layouton);
+
 	return FALSE;
 }
 
@@ -154,7 +166,7 @@
 	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);
+	death_timer = g_timeout_add_seconds(4, timer_func, client);
 
 	mainloop = g_main_loop_new(NULL, FALSE);
 	g_main_loop_run(mainloop);

=== modified file 'tests/test-glib-proxy-server.c'
--- tests/test-glib-proxy-server.c	2010-02-12 22:45:52 +0000
+++ tests/test-glib-proxy-server.c	2010-02-19 21:16:29 +0000
@@ -69,22 +69,39 @@
 static guint layouton = 0;
 static DbusmenuServer * server = NULL;
 static GMainLoop * mainloop = NULL;
+static guint death_timer = 0;
 
 static gboolean
 timer_func (gpointer data)
 {
+	g_debug("Death timer.  Oops.  Got to: %d", layouton);
+	g_main_loop_quit(mainloop);
+	return FALSE;
+}
+
+static void
+layout_change (DbusmenuMenuitem * oldroot, guint timestamp, gpointer data)
+{
 	if (layouts[layouton].id == -1) {
 		g_main_loop_quit(mainloop);
-		return FALSE;
+		return;
 	}
 	g_debug("Updating to Layout %d", layouton);
 
 	DbusmenuMenuitem * mi = layout2menuitem(&layouts[layouton]);
+	g_signal_connect(G_OBJECT(mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(layout_change), NULL);
+	dbusmenu_menuitem_property_set_int(mi, LAYOUT_ON, layouton);
 	dbusmenu_server_set_root(server, mi);
 	g_object_unref(G_OBJECT(mi));
 	layouton++;
 
-	return TRUE;
+	/* Extend our death */
+	if (death_timer != 0) {
+		g_source_remove(death_timer);
+	}
+	death_timer = g_timeout_add_seconds(4, timer_func, data);
+
+	return;
 }
 
 int
@@ -111,9 +128,7 @@
 	}
 
 	server = dbusmenu_server_new("/org/test");
-
-	timer_func(NULL);
-	g_timeout_add(2500, timer_func, NULL);
+	layout_change(NULL, 0, NULL);
 
 	mainloop = g_main_loop_new(NULL, FALSE);
 	g_main_loop_run(mainloop);

=== modified file 'tests/test-glib-proxy.h'
--- tests/test-glib-proxy.h	2010-02-13 06:41:53 +0000
+++ tests/test-glib-proxy.h	2010-02-19 21:12:21 +0000
@@ -22,6 +22,8 @@
 
 #include <glib.h>
 
+#define LAYOUT_ON "proxy-layout-on"
+
 typedef struct _proplayout_t proplayout_t;
 struct _proplayout_t {
 	gint id;
@@ -132,7 +134,7 @@
 };
 
 proplayout_t layouts[] = {
-	{id: 1, properties: props1, submenu: NULL},
+	{id: 1, properties: props1, submenu: submenu_5_5},
 	{id: 10, properties: props2, submenu: submenu_4_1},
 	{id: 20, properties: props3, submenu: submenu_4_2},
 	{id: 100, properties: props2, submenu: submenu_4_0},