From a508b336db925fb1ee1523e9171a8a612b8aee84 Mon Sep 17 00:00:00 2001 From: David Reiss Date: Mon, 30 Aug 2010 22:05:41 +0000 Subject: [PATCH] erlang: test_{client,server}: Allow framed_transport to be used git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@990988 13f79535-47bb-0310-9956-ffa450edef68 --- test/erl/src/test_client.erl | 31 +++++++++++++++++++++++++++---- test/erl/src/test_server.erl | 34 +++++++++++++++++++++++++++++++--- 2 files changed, 58 insertions(+), 7 deletions(-) diff --git a/test/erl/src/test_client.erl b/test/erl/src/test_client.erl index ab032bb1..a26467f0 100644 --- a/test/erl/src/test_client.erl +++ b/test/erl/src/test_client.erl @@ -23,11 +23,34 @@ -include("thriftTest_types.hrl"). -start() -> start(["9090"]). -start([PortStr]) -> - Port = list_to_integer(PortStr), +-record(options, {port = 9090, + client_opts = []}). + +parse_args(Args) -> parse_args(Args, #options{}). +parse_args([], Opts) -> Opts; +parse_args([Head | Rest], Opts) -> + NewOpts = + case catch list_to_integer(Head) of + Port when is_integer(Port) -> + Opts#options{port = Port}; + _Else -> + case Head of + "framed" -> + Opts#options{client_opts = [{framed, true} | Opts#options.client_opts]}; + "" -> + Opts; + _Else -> + erlang:error({bad_arg, Head}) + end + end, + parse_args(Rest, NewOpts). + + +start() -> start([]). +start(Args) -> + #options{port = Port, client_opts = ClientOpts} = parse_args(Args), {ok, Client0} = thrift_client_util:new( - "127.0.0.1", Port, thriftTest_thrift, []), + "127.0.0.1", Port, thriftTest_thrift, ClientOpts), DemoXtruct = #xtruct{ string_thing = <<"Zero">>, diff --git a/test/erl/src/test_server.erl b/test/erl/src/test_server.erl index 6797dd81..28d47b16 100644 --- a/test/erl/src/test_server.erl +++ b/test/erl/src/test_server.erl @@ -19,14 +19,42 @@ -module(test_server). --export([start_link/1, handle_function/2]). +-export([go/0, go/1, start_link/2, handle_function/2]). -include("thriftTest_types.hrl"). -start_link(Port) -> +-record(options, {port = 9090, + server_opts = []}). + +parse_args(Args) -> parse_args(Args, #options{}). +parse_args([], Opts) -> Opts; +parse_args([Head | Rest], Opts) -> + NewOpts = + case catch list_to_integer(Head) of + Port when is_integer(Port) -> + Opts#options{port = Port}; + _Else -> + case Head of + "framed" -> + Opts#options{server_opts = [{framed, true} | Opts#options.server_opts]}; + "" -> + Opts; + _Else -> + erlang:error({bad_arg, Head}) + end + end, + parse_args(Rest, NewOpts). + +go() -> go([]). +go(Args) -> + #options{port = Port, server_opts = ServerOpts} = parse_args(Args), + spawn(fun() -> start_link(Port, ServerOpts), receive after infinity -> ok end end). + +start_link(Port, ServerOpts) -> thrift_socket_server:start([{handler, ?MODULE}, {service, thriftTest_thrift}, - {port, Port}]). + {port, Port}] ++ + ServerOpts). handle_function(testVoid, {}) -> -- 2.17.1