@@ -34,6 +34,17 @@ start() ->
3434
3535test_node_no_distribution () ->
3636 nonode@nohost = node (),
37+ nonode@nohost = node (self ()),
38+ nonode@nohost = node (make_ref ()),
39+ LocalPort = open_port ({spawn , " echo" }, []),
40+ nonode@nohost = node (LocalPort ),
41+ port_close (LocalPort ),
42+ nonode@nohost = node (external_port (nonode@nohost , 0 )),
43+ ok = assert_badarg (fun () -> node (test ) end ),
44+ ok = assert_badarg (fun () -> node ({test , nonode@nohost }) end ),
45+ test@test_node = node (external_pid ()),
46+ test@test_node = node (external_ref ()),
47+ test@test_node = node (external_port (test@test_node , 42 )),
3748 ok .
3849
3950test_node_distribution () ->
@@ -49,6 +60,9 @@ test_node_distribution() ->
4960 true = erlang :setnode (test@test_node , 42 ),
5061 42 = get_creation (),
5162 test@test_node = node (),
63+ test@test_node = node (self ()),
64+ test@test_node = node (make_ref ()),
65+ test@test_node = node (external_port (test@test_node , 42 )),
5266 NetKernelPid ! quit ,
5367 ok =
5468 receive
@@ -83,6 +97,33 @@ get_creation() ->
8397 erts_internal :get_creation ()
8498 end .
8599
100+ external_pid () ->
101+ binary_to_term (
102+ <<131 , 88 , 119 , 14 , " test@test_node" , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 42 >>
103+ ).
104+
105+ external_ref () ->
106+ binary_to_term (
107+ <<131 , 90 , 0 , 1 , 119 , 14 , " test@test_node" , 42 :32 , 1 :32 >>
108+ ).
109+
110+ external_port (Node , Creation ) ->
111+ term_from_node (Node , fun (NodeBin ) ->
112+ binary_to_term (<<131 , 120 , NodeBin /binary , 43 :64 , Creation :32 >>)
113+ end ).
114+
115+ term_from_node (Node , Fun ) ->
116+ NodeBin = atom_to_binary (Node , utf8 ),
117+ Fun (<<119 , (byte_size (NodeBin )), NodeBin /binary >>).
118+
119+ assert_badarg (Fun ) ->
120+ try
121+ Fun (),
122+ unexpected_success
123+ catch
124+ error :badarg -> ok
125+ end .
126+
86127sleep (Ms ) ->
87128 receive
88129 after Ms -> ok
0 commit comments