[PATCH spice-server] test-display-base: Avoid spurious errors due to listen failures

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



To set up a listening socket usually you call in sequence:
- socket;
- bind;
- listen.
Usually if you try to listen to a post already in listening state
the bind will fail. However is possible that the listen will fail,
like in this sequence:
- socket 1;
- bind 1;
- socket 2;
- bind 2;
- listen 1;
- listen 2 <-- failure.
Our tests may attempt to reuse the port however we handle this problem
trying to detect bind errors. Catch also listen errors to avoid the
sequence above to trigger the problem. This happened some commit ago
in our CI.

Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx>
---
 server/tests/test-display-base.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/server/tests/test-display-base.c b/server/tests/test-display-base.c
index ea3a23ba..f58f76d3 100644
--- a/server/tests/test-display-base.c
+++ b/server/tests/test-display-base.c
@@ -894,10 +894,10 @@ void test_set_command_list(Test *test, Command *commands, int num_commands)
     test->num_commands = num_commands;
 }
 
-static gboolean ignore_bind_failures(const gchar *log_domain,
-                                     GLogLevelFlags log_level,
-                                     const gchar *message,
-                                     gpointer user_data)
+static gboolean ignore_in_use_failures(const gchar *log_domain,
+                                       GLogLevelFlags log_level,
+                                       const gchar *message,
+                                       gpointer user_data)
 {
     if (!g_str_equal (log_domain, G_LOG_DOMAIN)) {
         return true;
@@ -905,7 +905,8 @@ static gboolean ignore_bind_failures(const gchar *log_domain,
     if ((log_level & G_LOG_LEVEL_WARNING) == 0)  {
         return true;
     }
-    if (strstr(message, "reds_init_socket: binding socket to ") == NULL) {
+    if (strstr(message, "reds_init_socket: binding socket to ") == NULL || // bind failure
+        strstr(message, "reds_init_socket: listen: ") == NULL) { // listen failure
         g_print("XXX [%s]\n", message);
         return true;
     }
@@ -929,7 +930,7 @@ Test* test_new(SpiceCoreInterface* core)
     // some common initialization for all display tests
     port = BASE_PORT;
 
-    g_test_log_set_fatal_handler(ignore_bind_failures, NULL);
+    g_test_log_set_fatal_handler(ignore_in_use_failures, NULL);
     for (port = BASE_PORT; port < BASE_PORT + 10; port++) {
         SpiceServer* server = spice_server_new();
         spice_server_set_noauth(server);
-- 
2.17.2

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux Virtualization]     [Linux Virtualization]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]