laforge has submitted this change. ( https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/35591?usp=email )
Change subject: diameter: Make diameter_watchdog_config configurable ......................................................................
diameter: Make diameter_watchdog_config configurable
This allows tweaking values in config file of TTCN3 tests to speed up test setup.
Change-Id: I99b5e02264c2c35a3fbfcd2d6083a07e2cfea566 --- M config/sys.config M src/aaa_diameter_s6b.erl M src/epdg_diameter_swx.erl 3 files changed, 30 insertions(+), 6 deletions(-)
Approvals: daniel: Looks good to me, but someone else must approve Jenkins Builder: Verified laforge: Looks good to me, approved
diff --git a/config/sys.config b/config/sys.config index 35e1492..b3ce69f 100755 --- a/config/sys.config +++ b/config/sys.config @@ -11,6 +11,9 @@ {diameter_proto, sctp}, {diameter_connect_timer, 30000}, {diameter_watchdog_timer, 30000}, + {diameter_watchdog_config, + [{okay, 3}, + {suspect, 1}]}, {vendor_id, 0}, {origin_host, "epdg.localdomain"}, {origin_realm, "localdomain"}, @@ -21,6 +24,9 @@ {dia_s6b_proto, sctp}, {dia_s6b_connect_timer, 30000}, {dia_s6b_watchdog_timer, 30000}, + {dia_s6b_watchdog_config, + [{okay, 3}, + {suspect, 1}]}, {dia_s6b_vendor_id, 0}, {dia_s6b_origin_host, "aaa.localdomain"}, {dia_s6b_origin_realm, "localdomain"}, diff --git a/src/aaa_diameter_s6b.erl b/src/aaa_diameter_s6b.erl index e4fff31..59b9679 100644 --- a/src/aaa_diameter_s6b.erl +++ b/src/aaa_diameter_s6b.erl @@ -69,6 +69,7 @@ -define(ENV_DEFAULT_DIAMETER_REMOTE_PORT, 3868). -define(ENV_DEFAULT_DIAMETER_CONNECT_TIMER_MS, 30000). -define(ENV_DEFAULT_DIAMETER_WATCHDOG_TIMER_MS, 30000). +-define(ENV_DEFAULT_DIAMETER_WATCHDOG_CFG, [{okay, 3}, {suspect, 1}]).
-define(VENDOR_ID_3GPP, 10415). -define(VENDOR_ID_3GPP2, 5535). @@ -125,9 +126,10 @@ Port = application:get_env(?ENV_APP_NAME, dia_s6b_local_port, ?ENV_DEFAULT_DIAMETER_REMOTE_PORT), ConnectTimer = application:get_env(?ENV_APP_NAME, dia_s6b_connect_timer, ?ENV_DEFAULT_DIAMETER_CONNECT_TIMER_MS), WatchdogTimer = application:get_env(?ENV_APP_NAME, dia_s6b_watchdog_timer, ?ENV_DEFAULT_DIAMETER_WATCHDOG_TIMER_MS), + WatchdogConfig = application:get_env(?ENV_APP_NAME, diameter_watchdog_config, ?ENV_DEFAULT_DIAMETER_WATCHDOG_CFG), ok = diameter:start_service(?MODULE, ?SERVICE), % lager:info("DiaServices is ~p~n", [DiaServ]), - {ok, _} = listen({address, Proto, Ip, Port}, {timer, ConnectTimer, WatchdogTimer}), + {ok, _} = listen({address, Proto, Ip, Port}, {timer, ConnectTimer, WatchdogTimer, WatchdogConfig}), {ok, State}.
test() -> @@ -180,7 +182,7 @@ %% Internal Function Definitions %% ------------------------------------------------------------------
-listen(Name, {address, Protocol, IPAddr, Port}, {timer, ConnectTimer, WatchdogTimer}) -> +listen(Name, {address, Protocol, IPAddr, Port}, {timer, ConnectTimer, WatchdogTimer, WatchdogConfig}) -> lager:notice("~s Listening on IP ~s port ~p~n", [Name, IPAddr, Port]), {ok, IP} = inet_parse:address(IPAddr), TransportOpts = @@ -193,7 +195,8 @@ %%{rport, Port} ]}, {connect_timer, ConnectTimer}, - {watchdog_timer, WatchdogTimer}], + {watchdog_timer, WatchdogTimer}, + {watchdog_config, WatchdogConfig}], diameter:add_transport(Name, {listen, TransportOpts}).
listen(Address, Timers) -> diff --git a/src/epdg_diameter_swx.erl b/src/epdg_diameter_swx.erl index ada8555..a2a040c 100644 --- a/src/epdg_diameter_swx.erl +++ b/src/epdg_diameter_swx.erl @@ -69,6 +69,7 @@ -define(ENV_DEFAULT_DIAMETER_REMOTE_PORT, 3868). -define(ENV_DEFAULT_DIAMETER_CONNECT_TIMER_MS, 30000). -define(ENV_DEFAULT_DIAMETER_WATCHDOG_TIMER_MS, 30000). +-define(ENV_DEFAULT_DIAMETER_WATCHDOG_CFG, [{okay, 3}, {suspect, 1}]).
-define(VENDOR_ID_3GPP, 10415). -define(VENDOR_ID_3GPP2, 5535). @@ -125,9 +126,10 @@ Port = application:get_env(?ENV_APP_NAME, diameter_remote_port, ?ENV_DEFAULT_DIAMETER_REMOTE_PORT), ConnectTimer = application:get_env(?ENV_APP_NAME, diameter_connect_timer, ?ENV_DEFAULT_DIAMETER_CONNECT_TIMER_MS), WatchdogTimer = application:get_env(?ENV_APP_NAME, diameter_watchdog_timer, ?ENV_DEFAULT_DIAMETER_WATCHDOG_TIMER_MS), + WatchdogConfig = application:get_env(?ENV_APP_NAME, diameter_watchdog_config, ?ENV_DEFAULT_DIAMETER_WATCHDOG_CFG), ok = diameter:start_service(?MODULE, ?SERVICE), % lager:info("DiaServices is ~p~n", [DiaServ]), - {ok, _} = connect({address, Proto, Ip, Port}, {timer, ConnectTimer, WatchdogTimer}), + {ok, _} = connect({address, Proto, Ip, Port}, {timer, ConnectTimer, WatchdogTimer, WatchdogConfig}), {ok, State}.
test() -> @@ -261,7 +263,7 @@ %% ------------------------------------------------------------------
%% connect/3 -connect(Name, {address, Protocol, IPAddr, Port}, {timer, ConnectTimer, WatchdogTimer}) -> +connect(Name, {address, Protocol, IPAddr, Port}, {timer, ConnectTimer, WatchdogTimer, WatchdogConfig}) -> lager:notice("~s connecting to IP ~s port ~p~n", [Name, IPAddr, Port]), {ok, IP} = inet_parse:address(IPAddr), TransportOpts = @@ -271,7 +273,8 @@ {raddr, IP}, {rport, Port}]}, {connect_timer, ConnectTimer}, - {watchdog_timer, WatchdogTimer}], + {watchdog_timer, WatchdogTimer}, + {watchdog_config, WatchdogConfig}], diameter:add_transport(Name, {connect, TransportOpts}).
connect(Address, Timers) ->