-module(ping_test).
-compile(export_all).
ping() ->
Pid = spawn_link(fun pong/0),
Pid ! {ping, self()},
ping_loop(Pid).
ping_loop(Pid) ->
receive
{pong, Pid} ->
io:format("received pong~n"),
timer:sleep(random:uniform(1200)),
Pid ! {ping, self()},
ping_loop(Pid)
after 1000 ->
io:format("pong timed out~n"),
erlang:error(pong_timeout)
end.
pong() ->
receive
{ping, Pid} ->
io:format("received ping~n"),
timer:sleep(random:uniform(1200)),
Pid ! {pong, self()},
pong()
after 1000 ->
io:format("ping timed out~n"),
erlang:error(ping_timeout)
end.