Explorar o código

test(proper): ensure epmd started

JianBo He %!s(int64=4) %!d(string=hai) anos
pai
achega
4a388400a5
Modificáronse 1 ficheiros con 15 adicións e 1 borrados
  1. 15 1
      test/props/prop_emqx_rpc.erl

+ 15 - 1
test/props/prop_emqx_rpc.erl

@@ -88,7 +88,7 @@ prop_nodes_with_key() ->
 %%--------------------------------------------------------------------
 %%--------------------------------------------------------------------
 
 
 do_setup() ->
 do_setup() ->
-    {ok, _} = net_kernel:start([?NODENAME]),
+    ensure_distributed_nodename(),
     ok = logger:set_primary_config(#{level => warning}),
     ok = logger:set_primary_config(#{level => warning}),
     {ok, _Apps} = application:ensure_all_started(gen_rpc),
     {ok, _Apps} = application:ensure_all_started(gen_rpc),
     ok = application:set_env(gen_rpc, call_receive_timeout, 1),
     ok = application:set_env(gen_rpc, call_receive_timeout, 1),
@@ -103,6 +103,20 @@ do_teardown(_) ->
     ok = application:stop(gen_rpc),
     ok = application:stop(gen_rpc),
     ok = meck:unload(gen_rpc).
     ok = meck:unload(gen_rpc).
 
 
+ensure_distributed_nodename() ->
+    case net_kernel:start([?NODENAME]) of
+        {ok, _} ->
+            ok;
+        {error, {already_started, _}} ->
+            net_kernel:stop(),
+            net_kernel:start([?NODENAME]);
+        {error, {{shutdown, {_, _, {'EXIT', nodistribution}}}, _}} ->
+            %% start epmd first
+            spawn_link(fun() -> os:cmd("epmd") end),
+            timer:sleep(100),
+            net_kernel:start([?NODENAME])
+    end.
+
 %%--------------------------------------------------------------------
 %%--------------------------------------------------------------------
 %% Generator
 %% Generator
 %%--------------------------------------------------------------------
 %%--------------------------------------------------------------------