File 0383-Fix-ei_accpet_SUITE-ei_threaded_accept-testcase.patch of Package erlang

From abe8950d1487138653e4654cc95d9c4c6e5555fb Mon Sep 17 00:00:00 2001
From: Rickard Green <rickard@erlang.org>
Date: Tue, 9 Jun 2020 22:45:47 +0200
Subject: [PATCH] Fix ei_accpet_SUITE:ei_threaded_accept testcase

---
 lib/erl_interface/test/ei_accept_SUITE.erl    | 22 +++++++++++++++++++
 .../test/ei_accept_SUITE_data/eiaccnode.c     |  7 ++++--
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/lib/erl_interface/test/ei_accept_SUITE.erl b/lib/erl_interface/test/ei_accept_SUITE.erl
index 943fdd72ca..612d6e1b81 100644
--- a/lib/erl_interface/test/ei_accept_SUITE.erl
+++ b/lib/erl_interface/test/ei_accept_SUITE.erl
@@ -98,6 +98,7 @@ ei_threaded_accept(Config) when is_list(Config) ->
 
 ei_threaded_accept_do(Einode, SockImpl) ->
     N = 3,
+    wait_unreg_nodename(["eiacc0", "eiacc1", "eiacc2"], 10),
     start_einode(Einode, N, SockImpl),
     io:format("started eiaccnode"),
     TestServerPid = self(),
@@ -148,6 +149,27 @@ monitor_ei_process(Config) when is_list(Config) ->
     [] = flush(0, 1000),
     ok.
 
+wait_unreg_nodename([], _) ->
+    ok;
+wait_unreg_nodename(Names, 0) ->
+    ct:fail({name_not_unregistered, Names});
+wait_unreg_nodename(Names, N) ->
+    Registered = [X || {X,_} <- element(2,erl_epmd:names())],
+    case lists:foldl(fun (Name, Acc) ->
+                             case lists:member(Name, Registered) of
+                                 true -> [Name | Acc];
+                                 false -> Acc
+                             end
+                     end,
+                     [],
+                     Names) of
+        [] ->
+            ok;
+        NewNames ->
+            timer:sleep(1000),
+            waitfornode(NewNames,N-1)
+    end.
+
 waitfornode(String,0) ->
     io:format("~s never published itself.~n",[String]),
     false;
diff --git a/lib/erl_interface/test/ei_accept_SUITE_data/eiaccnode.c b/lib/erl_interface/test/ei_accept_SUITE_data/eiaccnode.c
index 5d5be7c532..ef1ab96d41 100644
--- a/lib/erl_interface/test/ei_accept_SUITE_data/eiaccnode.c
+++ b/lib/erl_interface/test/ei_accept_SUITE_data/eiaccnode.c
@@ -91,14 +91,17 @@ static void*
                                  &my_ussi, sizeof(my_ussi), NULL);
     else
         r = ei_connect_init(&ec, myname, cookie, 0);
+    fprintf(file, "r=%d\n", r); fflush(file);
     port = 0;
     listen = ei_listen(&ec, &port, 5);
     if (listen <= 0) {
 	fprintf(file, "listen err\n"); fflush(file);
 	exit(7);
     }
-    fprintf(file, "thread %d (%s:%s) listening on port %d\n", n, myname, destname, port);
-    if (ei_publish(&ec, port) == -1) {
+    fprintf(file, "thread %d (%s:%s) listening on port %d\n", n, myname, destname, port); fflush(file);
+    r = ei_publish(&ec, port);
+    fprintf(file, "r=%d\n", r); fflush(file);
+    if (r == -1) {
 	fprintf(file, "ei_publish port %d\n", port+n); fflush(file);
 	exit(8);
     }
-- 
2.26.2

openSUSE Build Service is sponsored by