[Spice-devel] [PATCH 2/2] server/tests: add resolution changes tester

Alon Levy alevy at redhat.com
Wed Mar 21 15:16:25 PDT 2012


---
 server/tests/Makefile.am                       |   20 ++++---
 server/tests/test_display_resolution_changes.c |   66 ++++++++++++++++++++++++
 2 files changed, 80 insertions(+), 6 deletions(-)
 create mode 100644 server/tests/test_display_resolution_changes.c

diff --git a/server/tests/Makefile.am b/server/tests/Makefile.am
index 61fad75..52e55a8 100644
--- a/server/tests/Makefile.am
+++ b/server/tests/Makefile.am
@@ -24,13 +24,14 @@ COMMON_BASE =					\
 	test_util.h				\
 	$(NULL)
 
-noinst_PROGRAMS =				\
-	test_display_no_ssl			\
-	test_display_streaming			\
-	test_empty_success			\
+noinst_PROGRAMS =						\
+	test_display_no_ssl					\
+	test_display_streaming				\
+	test_empty_success					\
 	test_fail_on_null_core_interface	\
-	test_just_sockets_no_ssl		\
-	test_playback				\
+	test_just_sockets_no_ssl			\
+	test_playback						\
+	test_display_resolution_changes		\
 	$(NULL)
 
 test_display_streaming_SOURCES =		\
@@ -47,6 +48,13 @@ test_display_no_ssl_SOURCES =			\
 	test_display_no_ssl.c 			\
 	$(NULL)
 
+test_display_resolution_changes_SOURCES = \
+	$(COMMON_BASE)				\
+	test_display_base.c			\
+	test_display_base.h			\
+	test_display_resolution_changes.c	 \
+	$(NULL)
+
 test_just_sockets_no_ssl_SOURCES =		\
 	$(COMMON_BASE)				\
 	test_just_sockets_no_ssl.c		\
diff --git a/server/tests/test_display_resolution_changes.c b/server/tests/test_display_resolution_changes.c
new file mode 100644
index 0000000..edf7fb2
--- /dev/null
+++ b/server/tests/test_display_resolution_changes.c
@@ -0,0 +1,66 @@
+/**
+ * Recreate the primary surface endlessly.
+ */
+
+#include <math.h>
+#include <config.h>
+#include <stdlib.h>
+#include "test_display_base.h"
+
+SpiceServer *server;
+SpiceCoreInterface *core;
+SpiceTimer *ping_timer;
+
+void show_channels(SpiceServer *server);
+
+int ping_ms = 100;
+
+void pinger(void *opaque)
+{
+    // show_channels is not thread safe - fails if disconnections / connections occur
+    //show_channels(server);
+
+    core->timer_start(ping_timer, ping_ms);
+}
+
+void set_primary_params(void *cb_opaque, uint64_t *arg1, uint64_t *arg2)
+{
+#if 0
+    static int toggle = 0;
+
+    if (toggle) {
+        *arg1 = 800;
+        *arg2 = 600;
+    } else {
+        *arg1 = 1024;
+        *arg2 = 768;
+    }
+    toggle = 1 - toggle;
+#endif
+    static int count = 0;
+
+    *arg1 = 800 + sin((float)count / 6) * 200;
+    *arg2 = 600 + cos((float)count / 6) * 200;
+    count++;
+}
+
+static Command commands[] = {
+    {DESTROY_PRIMARY, 0, 0, NULL, NULL},
+    {CREATE_PRIMARY, 0, 0, set_primary_params, NULL},
+};
+
+int main(void)
+{
+    core = basic_event_loop_init();
+    server = test_init(core);
+    //spice_server_set_image_compression(server, SPICE_IMAGE_COMPRESS_OFF);
+    test_add_display_interface(server);
+    test_set_command_list(commands, COUNT(commands));
+
+    ping_timer = core->timer_add(pinger, NULL);
+    core->timer_start(ping_timer, ping_ms);
+
+    basic_event_loop_mainloop();
+
+    return 0;
+}
-- 
1.7.9.3



More information about the Spice-devel mailing list