From c867ec582d445b251ff659ba23f522b5278d5119 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Thu, 20 Aug 2015 14:28:16 +0200 Subject: Add tests and more docs about separate supervisor/connection --- test/acceptor_SUITE.erl | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'test/acceptor_SUITE.erl') diff --git a/test/acceptor_SUITE.erl b/test/acceptor_SUITE.erl index 07d4016..af1ea5e 100644 --- a/test/acceptor_SUITE.erl +++ b/test/acceptor_SUITE.erl @@ -42,6 +42,8 @@ groups() -> ]}, {misc, [ misc_bad_transport ]}, {supervisor, [ + connection_type_supervisor, + connection_type_supervisor_separate_from_connection, supervisor_clean_child_restart, supervisor_clean_conns_sup_restart, supervisor_clean_restart, @@ -298,6 +300,42 @@ tcp_upgrade(_) -> %% Supervisor tests +connection_type_supervisor(_) -> + doc("The supervisor connection type must be reflected in the specifications."), + Name = connection_type_supervisor, + {ok, _} = ranch:start_listener(Name, 1, + ranch_tcp, [{connection_type, supervisor}], + echo_protocol, []), + Port = ranch:get_port(Name), + {ok, Socket} = gen_tcp:connect("localhost", Port, [binary, {active, false}, {packet, raw}]), + ok = gen_tcp:send(Socket, <<"TCP Ranch is working!">>), + {ok, <<"TCP Ranch is working!">>} = gen_tcp:recv(Socket, 21, 1000), + ConnsSup = ranch_server:get_connections_sup(Name), + [{echo_protocol, _, supervisor, [echo_protocol]}] = supervisor:which_children(ConnsSup), + ok = ranch:stop_listener(Name), + {error, closed} = gen_tcp:recv(Socket, 0, 1000), + %% Make sure the listener stopped. + {'EXIT', _} = begin catch ranch:get_port(Name) end, + ok. + +connection_type_supervisor_separate_from_connection(_) -> + doc("The supervisor connection type allows separate supervised and connection processes."), + Name = connection_type_supervisor, + {ok, _} = ranch:start_listener(Name, 1, + ranch_tcp, [{connection_type, supervisor}], + supervisor_separate, []), + Port = ranch:get_port(Name), + {ok, Socket} = gen_tcp:connect("localhost", Port, [binary, {active, false}, {packet, raw}]), + ok = gen_tcp:send(Socket, <<"TCP Ranch is working!">>), + {ok, <<"TCP Ranch is working!">>} = gen_tcp:recv(Socket, 21, 1000), + ConnsSup = ranch_server:get_connections_sup(Name), + [{supervisor_separate, _, supervisor, [supervisor_separate]}] = supervisor:which_children(ConnsSup), + ok = ranch:stop_listener(Name), + {error, closed} = gen_tcp:recv(Socket, 0, 1000), + %% Make sure the listener stopped. + {'EXIT', _} = begin catch ranch:get_port(Name) end, + ok. + supervisor_clean_child_restart(_) -> %% Then we verify that only parts of the supervision tree %% restarted in the case of failure. -- cgit v1.2.3