summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy White <jwhite@codeweavers.com>2020-03-19 11:05:11 -0500
committerJeremy White <jwhite@codeweavers.com>2020-04-20 12:19:22 -0500
commitf546e278392cf4460439eaf178f7d7a659870630 (patch)
treebaee3d3f48ada224c67650c6a69ebe092c50b96a
parent99ad9b89a3b60bed46707eb119a167c288665e60 (diff)
Add a new test for a 4k screen, which currently fails.
-rw-r--r--src/tests/expected.grid.3840x2160.ppmbin0 -> 24883217 bytes
-rw-r--r--src/tests/main.c3
-rw-r--r--src/tests/tests.c39
-rw-r--r--src/tests/tests.h2
-rw-r--r--src/tests/x11spice_test.c2
-rw-r--r--src/tests/xdummy.c8
6 files changed, 49 insertions, 5 deletions
diff --git a/src/tests/expected.grid.3840x2160.ppm b/src/tests/expected.grid.3840x2160.ppm
new file mode 100644
index 0000000..434109a
--- /dev/null
+++ b/src/tests/expected.grid.3840x2160.ppm
Binary files differ
diff --git a/src/tests/main.c b/src/tests/main.c
index 97b6b1c..e4e2935 100644
--- a/src/tests/main.c
+++ b/src/tests/main.c
@@ -35,6 +35,9 @@ int main(int argc, char *argv[])
g_test_add("/x11spice/resize", xdummy_t, "resize", start_server, test_resize, stop_server);
+ g_test_add("/x11spice/tallscreen", xdummy_t, "tallscreen", start_server, test_tallscreen,
+ stop_server);
+
g_test_add("/x11spice/x11perf1", xdummy_t, "x11perf1", start_server, test_script, stop_server);
#if defined(SPICEDUMMY)
diff --git a/src/tests/tests.c b/src/tests/tests.c
index cbb957e..e6add93 100644
--- a/src/tests/tests.c
+++ b/src/tests/tests.c
@@ -125,7 +125,7 @@ static void check_screenshot(test_t *test, x11spice_server_t *spice_server, xdum
void test_basic(xdummy_t *xdummy, gconstpointer user_data)
{
- test_t test;
+ test_t test = { };
x11spice_server_t server;
int rc;
char buf[4096];
@@ -152,7 +152,7 @@ void test_basic(xdummy_t *xdummy, gconstpointer user_data)
void test_resize(xdummy_t *xdummy, gconstpointer user_data)
{
- test_t test;
+ test_t test = { };
x11spice_server_t server;
int rc;
char buf[4096];
@@ -185,6 +185,37 @@ void test_resize(xdummy_t *xdummy, gconstpointer user_data)
test_common_stop(&test, &server);
}
+void test_tallscreen(xdummy_t *xdummy, gconstpointer user_data)
+{
+ test_t test = { };
+ x11spice_server_t server;
+ int rc;
+ char buf[4096];
+
+ if (check_binary("xrandr", xdummy->display) || check_binary("spicy-screenshot", NULL))
+ return;
+
+ test.never_trust_damage = 1;
+ rc = test_common_start(&test, &server, xdummy, user_data);
+ if (rc)
+ return;
+
+ snprintf(buf, sizeof(buf), "xrandr --display :%s -s 3840x2160", xdummy->display);
+ system(buf);
+
+ snprintf(buf, sizeof(buf), ":%s", xdummy->display);
+ if (xcb_draw_grid(buf)) {
+ g_warning("Could not draw the grid");
+ g_test_fail();
+ }
+ else {
+ snprintf(buf, sizeof(buf), "%s/expected.grid.3840x2160.ppm", PATH_TO_TEST_SRC);
+ check_screenshot(&test, &server, xdummy, buf);
+ }
+
+ test_common_stop(&test, &server);
+}
+
/*
** The 'script' type test is a special case.
** It is set up to allow us to run any shell script we like.
@@ -196,7 +227,7 @@ void test_resize(xdummy_t *xdummy, gconstpointer user_data)
*/
void test_script(xdummy_t *xdummy, gconstpointer user_data)
{
- test_t test;
+ test_t test = { };
x11spice_server_t server;
xdummy_t client_server;
char buf[4096];
@@ -206,7 +237,7 @@ void test_script(xdummy_t *xdummy, gconstpointer user_data)
gchar *script_out;
gchar *script_dir;
- snprintf(buf, sizeof(buf), "%s/%s", PATH_TO_TEST_SRC, user_data);
+ snprintf(buf, sizeof(buf), "%s/%s", PATH_TO_TEST_SRC, (char *) user_data);
if (access(buf, X_OK | R_OK)) {
g_warning("Could not find client script [%s]", (char *) user_data);
g_test_fail();
diff --git a/src/tests/tests.h b/src/tests/tests.h
index 9da294b..2d497c3 100644
--- a/src/tests/tests.h
+++ b/src/tests/tests.h
@@ -34,6 +34,7 @@ typedef struct
xdummy_t *xserver;
const gchar *logfile;
const gchar *name;
+ int never_trust_damage;
} test_t;
@@ -42,6 +43,7 @@ typedef struct
**--------------------------------------------------------------------------*/
void test_basic(xdummy_t *server, gconstpointer user_data);
void test_resize(xdummy_t *server, gconstpointer user_data);
+void test_tallscreen(xdummy_t *server, gconstpointer user_data);
void test_script(xdummy_t *xdummy, gconstpointer user_data);
#endif
diff --git a/src/tests/x11spice_test.c b/src/tests/x11spice_test.c
index d115ecc..63163ee 100644
--- a/src/tests/x11spice_test.c
+++ b/src/tests/x11spice_test.c
@@ -117,6 +117,8 @@ int x11spice_start(x11spice_server_t *server, test_t *test)
char *config_data = "[spice]\n"
"disable-ticketing=true\n";
fwrite(config_data, 1, strlen(config_data), fp);
+ if (test->never_trust_damage)
+ fprintf(fp, "trust-damage=never\n");
fclose(fp);
}
diff --git a/src/tests/xdummy.c b/src/tests/xdummy.c
index c197578..9b7b079 100644
--- a/src/tests/xdummy.c
+++ b/src/tests/xdummy.c
@@ -67,7 +67,7 @@ static void write_xorg_conf(FILE * fp, xdummy_t *server)
" Identifier \"dummy_monitor\"\n"
" VendorName \"Unknown\"\n"
" ModelName \"Unknown\"\n"
- " HorizSync 30.0 - 130.0\n"
+ " HorizSync 0.0 - 260.0\n"
" VertRefresh 50.0 - 250.0\n"
" Option \"DPMS\"\n"
" Option \"ReducedBlanking\"\n"
@@ -236,6 +236,12 @@ static void configure_xorg_parameters(xdummy_t *server, gconstpointer user_data)
server->vmode = "1920 1080";
}
+ if (strcmp(user_data, "tallscreen") == 0) {
+ server->desired_vram = ((3840 * 2160 * 4) + 1023) / 1024;
+ server->modes = "\"3840x2160\"";
+ server->vmode = "3840 2160";
+ }
+
if (strlen(user_data) > 7 && memcmp(user_data, "client_", 7) == 0) {
server->desired_vram = ((1280 * 1024 * 4) + 1023) / 1024;
server->modes = "\"1280x1024\"";