blob: 0f2d616b84a028e7549476855fedf0a61dca411d [file] [log] [blame]
-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.