From fad60657a3b64894b56b56f7c23b2dcfa8cf4647 Mon Sep 17 00:00:00 2001 From: David Reiss Date: Thu, 4 Jun 2009 02:01:35 +0000 Subject: [PATCH] THRIFT-211. erlang: Modify test_tether to test protocol error handling as well git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@781637 13f79535-47bb-0310-9956-ffa450edef68 --- test/erl/src/test_tether.erl | 48 +++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/test/erl/src/test_tether.erl b/test/erl/src/test_tether.erl index 3088cbdc..c5051455 100644 --- a/test/erl/src/test_tether.erl +++ b/test/erl/src/test_tether.erl @@ -5,11 +5,21 @@ -compile(export_all). + t() -> + io:format("Beginning transport error test.~n"), + Pid1 = erlang:spawn(?MODULE, t_sub, [2]), + wait_for(Pid1), + io:format("Beginning protocol error test.~n"), + Pid2 = erlang:spawn(?MODULE, t_sub, [22]), + wait_for(Pid2), + ok. + +t_sub(Port) -> io:format("Starting.~n", []), register(tester, self()), - Pid1 = erlang:spawn(?MODULE, test_start, []), + Pid1 = erlang:spawn(?MODULE, test_start, [Port]), receive after 200 -> ok end, % Wait for completion. case is_up(Pid1) of true -> @@ -18,7 +28,7 @@ t() -> io:format("FAIL. Unlinked owner is dead.~n") end, - Pid2 = erlang:spawn(?MODULE, test_linked, []), + Pid2 = erlang:spawn(?MODULE, test_linked, [Port]), receive after 200 -> ok end, % Wait for completion. case is_up(Pid2) of true -> @@ -27,7 +37,7 @@ t() -> io:format("PASS. Linked owner is dead.~n") end, - Pid3 = erlang:spawn(?MODULE, test_tethered, []), + Pid3 = erlang:spawn(?MODULE, test_tethered, [Port]), receive after 200 -> ok end, % Wait for completion. case is_up(Pid3) of true -> @@ -36,9 +46,7 @@ t() -> io:format("FAIL. Tethered owner is dead.~n") end, - check_extras(3), - - erlang:halt(). + check_extras(3). is_up(Pid) -> MonitorRef = erlang:monitor(process, Pid), @@ -51,6 +59,13 @@ is_up(Pid) -> true end. +wait_for(Pid) -> + MonitorRef = erlang:monitor(process, Pid), + receive + {'DOWN', MonitorRef, process, Pid, _Info} -> + ok + end. + check_extras(0) -> ok; check_extras(N) -> receive @@ -88,14 +103,15 @@ make_protocol_factory(Port) -> ProtocolFactory. -test_start() -> +test_start(Port) -> {ok, Client1} = make_thrift_client([{connect, false}]), tester ! {client, unlinked, Client1}, {ok, Client2} = make_thrift_client([{connect, false}]), io:format("PASS. Unlinked clients created.~n"), try - gen_server:call(Client2, {connect, make_protocol_factory(2)}), - io:format("FAIL. Unlinked client connected.~n", []) + gen_server:call(Client2, {connect, make_protocol_factory(Port)}), + thrift_client:call(Client2, testVoid, []), + io:format("FAIL. Unlinked client connected and called.~n", []) catch Kind:Info -> io:format("PASS. Caught unlinked error. ~p:~p~n", [Kind, Info]) @@ -108,14 +124,15 @@ test_start() -> %% Exit abnormally to not kill our unlinked extra client. exit(die). -test_linked() -> +test_linked(Port) -> {ok, Client1} = make_thrift_client([{connect, false}, {monitor, link}]), tester ! {client, linked, Client1}, {ok, Client2} = make_thrift_client([{connect, false}, {monitor, link}]), io:format("PASS. Linked clients created.~n"), try - gen_server:call(Client2, {connect, make_protocol_factory(2)}), - io:format("FAIL. Linked client connected.~n", []) + gen_server:call(Client2, {connect, make_protocol_factory(Port)}), + thrift_client:call(Client2, testVoid, []), + io:format("FAIL. Linked client connected and called.~n", []) catch Kind:Info -> io:format("FAIL. Caught linked error. ~p:~p~n", [Kind, Info]) @@ -129,14 +146,15 @@ test_linked() -> %% But we should never get here. exit(die). -test_tethered() -> +test_tethered(Port) -> {ok, Client1} = make_thrift_client([{connect, false}, {monitor, tether}]), tester ! {client, tethered, Client1}, {ok, Client2} = make_thrift_client([{connect, false}, {monitor, tether}]), io:format("PASS. Tethered clients created.~n"), try - gen_server:call(Client2, {connect, make_protocol_factory(2)}), - io:format("FAIL. Tethered client connected.~n", []) + gen_server:call(Client2, {connect, make_protocol_factory(Port)}), + thrift_client:call(Client2, testVoid, []), + io:format("FAIL. Tethered client connected and called.~n", []) catch Kind:Info -> io:format("PASS. Caught tethered error. ~p:~p~n", [Kind, Info]) -- 2.17.1