| -module(multiplexing_test). |
| |
| -include_lib("eunit/include/eunit.hrl"). |
| |
| -export([ |
| handle_function/2 |
| ,handle_error/2 |
| ]). |
| |
| start_multiplexed_server_test() -> |
| |
| Port = 9090, |
| Services = [ |
| {"Multiplexing_Calculator", multiplexing__calculator_thrift}, |
| {"Multiplexing_WeatherReport", multiplexing__weather_report_thrift} |
| ], |
| |
| {ok, Pid} = thrift_socket_server:start([ |
| {ip, "127.0.0.1"}, |
| {port, Port}, |
| {name, ?MODULE}, |
| {service, Services}, |
| {handler, [ |
| {"error_handler", ?MODULE}, |
| {"Multiplexing_Calculator", ?MODULE}, |
| {"Multiplexing_WeatherReport", ?MODULE} |
| ]} |
| ]), |
| |
| {ok, [{"Multiplexing_Calculator", CalculatorClient0}, |
| {"Multiplexing_WeatherReport", WeatherReportClient0}]} = thrift_client_util:new_multiplexed("127.0.0.1", Port, Services, []), |
| |
| ?assertMatch({_, {error, {bad_args, _, _}}}, thrift_client:call(WeatherReportClient0, getTemperature, [1])), |
| ?assertMatch({_, {error, {bad_args, _, _}}}, thrift_client:call(CalculatorClient0, add, [1])), |
| ?assertMatch({_, {error, {bad_args, _, _}}}, thrift_client:call(CalculatorClient0, add, [1,1,1])), |
| |
| ?assertMatch({_, {error, {no_function, _}}}, thrift_client:call(CalculatorClient0, getTemperature, [])), |
| ?assertMatch({_, {error, {no_function, _}}}, thrift_client:call(WeatherReportClient0, add, [41, 1])), |
| |
| ?assertMatch({_, {ok, 42}}, thrift_client:call(CalculatorClient0, add, [41, 1])), |
| ?assertMatch({_, {ok, 42.0}}, thrift_client:call(WeatherReportClient0, getTemperature, [])), |
| |
| thrift_socket_server:stop(Pid). |
| |
| %% HANDLE FUNCTIONS |
| |
| %% Calculator handles |
| handle_function(add, {X, Y}) -> |
| {reply, X + Y}; |
| |
| %% WeatherReport handles |
| handle_function(getTemperature, {}) -> |
| {reply, 42.0}. |
| |
| handle_error(_F, _Reason) -> |
| %% ?debugHere, ?debugVal({_F, _Reason}), |
| ok. |