detect VTY TELNET port connection failures (attempt #2)

Pass the CTRL_DETECT_CONNECTION_ESTABLISHMENT_RESULT parameter to
the TELNET port by default. This allows tests to make progress
into an error handling path if they are started while the osmo-*
program they want to connect on VTY is not running.

Observed with osmo-ggsn tests, where if the one test runs
into a VTY connection failure the subsequent test would get
stuck forever in a map() call on the VTY TELNET port.

Teach the function f_vty_wait_for_prompt() about connection
reports by the TELNET module. We may now receive an integer which
represents the socket file descriptor for the telnet connection.
This case was not handled by the previous change made in
commit cb111b21ab. As a result,
BSC tests started failing with "VTY Timeout for prompt" because
the alt-statement in f_vty_wait_for_prompt() would not progress
past the integer sitting on the VTY port's receive queue.

Change-Id: I56925f93af6c55e93f3f417099db135744da6a40
Related: OS#3149
This commit is contained in:
Stefan Sperling 2018-07-27 17:20:38 +02:00
parent b0970093dd
commit 23b45974ce
9 changed files with 17 additions and 0 deletions

View File

@ -15,6 +15,7 @@ mtc.FileMask := LOG_ALL | TTCN_DEBUG | TTCN_MATCHING | DEBUG_ENCDEC;
*.BSCVTY.CTRL_DETECT_SERVER_DISCONNECTED := "yes"
*.BSCVTY.CTRL_READMODE := "buffered"
*.BSCVTY.CTRL_CLIENT_CLEANUP_LINEFEED := "yes"
*.BSCVTY.CTRL_DETECT_CONNECTION_ESTABLISHMENT_RESULT := "yes"
*.BSCVTY.PROMPT1 := "OsmoBSC> "
[MODULE_PARAMETERS]

View File

@ -12,6 +12,7 @@ mtc.FileMask := LOG_ALL | TTCN_DEBUG | TTCN_MATCHING | DEBUG_ENCDEC;
*.BTSVTY.CTRL_DETECT_SERVER_DISCONNECTED := "yes"
*.BTSVTY.CTRL_READMODE := "buffered"
*.BTSVTY.CTRL_CLIENT_CLEANUP_LINEFEED := "yes"
*.BTSVTY.CTRL_DETECT_CONNECTION_ESTABLISHMENT_RESULT := "yes"
*.BTSVTY.PROMPT1 := "OsmoBTS> "
*.PCU.socket_type := "SEQPACKET"

View File

@ -8,6 +8,7 @@
*.GGSNVTY.CTRL_DETECT_SERVER_DISCONNECTED := "yes"
*.GGSNVTY.CTRL_READMODE := "buffered"
*.GGSNVTY.CTRL_CLIENT_CLEANUP_LINEFEED := "yes"
*.GGSNVTY.CTRL_DETECT_CONNECTION_ESTABLISHMENT_RESULT := "yes"
*.GGSNVTY.PROMPT1 := "OsmoGGSN> "
[MODULE_PARAMETERS]

View File

@ -9,6 +9,7 @@ mtc.FileMask := LOG_ALL | TTCN_DEBUG | TTCN_MATCHING; // | DEBUG_ENCDEC;
*.VTY.CTRL_DETECT_SERVER_DISCONNECTED := "yes"
*.VTY.CTRL_READMODE := "buffered"
*.VTY.CTRL_CLIENT_CLEANUP_LINEFEED := "yes"
*.VTY.CTRL_DETECT_CONNECTION_ESTABLISHMENT_RESULT := "yes"
*.VTY.PROMPT1 := "OsmoHLR> "
[MODULE_PARAMETERS]

View File

@ -46,6 +46,7 @@ module Osmocom_VTY_Functions {
/* wait for any of the permitted prompts; buffer + return all intermediate output */
function f_vty_wait_for_prompt(TELNETasp_PT pt) return charstring {
var charstring rx, buf := "";
var integer fd;
timer T := 2.0;
T.start;
@ -57,6 +58,14 @@ module Osmocom_VTY_Functions {
testcase.stop(fail, "VTY: Unknown Command");
};
[] pt.receive(charstring:?) -> value rx { buf := buf & rx; repeat };
[] pt.receive(integer:?) -> value fd {
if (fd == -1) {
setverdict(fail, "VTY Telnet Connection Failure");
mtc.stop;
} else {
repeat; /* telnet connection succeeded */
}
}
[] T.timeout {
setverdict(fail, "VTY Timeout for prompt");
mtc.stop;

View File

@ -20,6 +20,7 @@ mtc.FileMask := ERROR | WARNING | PARALLEL | VERDICTOP;
*.MSCVTY.CTRL_DETECT_SERVER_DISCONNECTED := "yes"
*.MSCVTY.CTRL_READMODE := "buffered"
*.MSCVTY.CTRL_CLIENT_CLEANUP_LINEFEED := "yes"
*.MSCVTY.CTRL_DETECT_CONNECTION_ESTABLISHMENT_RESULT := "yes"
*.MSCVTY.PROMPT1 := "OsmoMSC> "

View File

@ -15,6 +15,7 @@ mtc.FileMask := ERROR | WARNING;
*.SCCP_DEMO_USER_VTY.CTRL_DETECT_SERVER_DISCONNECTED := "yes"
*.SCCP_DEMO_USER_VTY.CTRL_READMODE := "buffered"
*.SCCP_DEMO_USER_VTY.CTRL_CLIENT_CLEANUP_LINEFEED := "yes"
*.SCCP_DEMO_USER_VTY.CTRL_DETECT_CONNECTION_ESTABLISHMENT_RESULT := "yes"
*.SCCP_DEMO_USER_VTY.PROMPT1 := "sccp-demo-user> "
[MODULE_PARAMETERS]

View File

@ -15,6 +15,7 @@ FileMask := LOG_ALL | TTCN_MATCHING;
*.SGSNVTY.CTRL_DETECT_SERVER_DISCONNECTED := "yes"
*.SGSNVTY.CTRL_READMODE := "buffered"
*.SGSNVTY.CTRL_CLIENT_CLEANUP_LINEFEED := "yes"
*.SGSNVTY.CTRL_DETECT_CONNECTION_ESTABLISHMENT_RESULT := "yes"
*.SGSNVTY.PROMPT1 := "OsmoSGSN> "

View File

@ -13,6 +13,7 @@ mtc.FileMask := ERROR | WARNING | PARALLEL | VERDICTOP;
*.SIPVTY.CTRL_DETECT_SERVER_DISCONNECTED := "yes"
*.SIPVTY.CTRL_READMODE := "buffered"
*.SIPVTY.CTRL_CLIENT_CLEANUP_LINEFEED := "yes"
*.SIPVTY.CTRL_DETECT_CONNECTION_ESTABLISHMENT_RESULT := "yes"
*.SIPVTY.PROMPT1 := "OsmoSIPcon> "
*.SIP.local_sip_port := "5060"