Skip to content

Commit ecfc698

Browse files
committed
test: add negative test for same port but different address
1 parent c8b88f6 commit ecfc698

1 file changed

Lines changed: 38 additions & 0 deletions

File tree

test/gen_rpc_port_check_tests.erl

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,33 @@ check_server_ports_available_manual_conflict_ipv6_test() ->
8484
end
8585
).
8686

87+
check_server_ports_available_manual_different_ipv4_ip_no_conflict_test() ->
88+
with_ipv4_alias_support(
89+
{127, 0, 0, 2},
90+
fun() ->
91+
{ok, Blocker} = gen_tcp:listen(
92+
0,
93+
[binary, {reuseaddr, true}, {active, false}, {ip, {127, 0, 0, 2}}]
94+
),
95+
{ok, {_, Port}} = inet:sockname(Blocker),
96+
try
97+
with_env(
98+
#{
99+
port_discovery => manual,
100+
tcp_server_port => Port,
101+
ssl_server_port => false,
102+
socket_ip => {127, 0, 0, 1}
103+
},
104+
fun() ->
105+
?assertEqual(ok, gen_rpc:check_server_ports_available())
106+
end
107+
)
108+
after
109+
ok = gen_tcp:close(Blocker)
110+
end
111+
end
112+
).
113+
87114
maybe_with_blocker(Port, Fun) ->
88115
case gen_tcp:listen(Port, [binary, {reuseaddr, true}, {active, false}, {ip, {127, 0, 0, 1}}]) of
89116
{ok, Blocker} ->
@@ -142,3 +169,14 @@ with_ipv6_support(Fun) ->
142169
{error, Reason} ->
143170
error({unexpected_ipv6_probe_error, Reason})
144171
end.
172+
173+
with_ipv4_alias_support(IP, Fun) ->
174+
case gen_tcp:listen(0, [binary, {reuseaddr, true}, {active, false}, {ip, IP}]) of
175+
{ok, Probe} ->
176+
ok = gen_tcp:close(Probe),
177+
Fun();
178+
{error, eaddrnotavail} ->
179+
ok;
180+
{error, Reason} ->
181+
error({unexpected_ipv4_alias_probe_error, IP, Reason})
182+
end.

0 commit comments

Comments
 (0)