[Spice-devel] [PATCH spice-server] test-display-base: Avoid spurious errors due to listen failures
Frediano Ziglio
fziglio at redhat.com
Thu Nov 8 09:43:05 UTC 2018
ping
>
> 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 at redhat.com>
> ---
> 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
>
>
More information about the Spice-devel
mailing list