Commit d38d634f authored by József Gyürüsi's avatar József Gyürüsi
Browse files

[incident #1878954] test created: DTE in CLL:...


[incident #1878954] test created: DTE in CLL: EPTF_CLL_CLI_Functions.ttcn:531(function:f_EPTF_CLI_executeCommand) Dynamic test case error: Index overflow

Change-Id: Ida5a22acaa4b42404874dd1b3ba5b73d9a966050
Signed-off-by: József Gyürüsi's avatarJózsef Gyürüsi <jozsef.gyurusi@ericsson.com>
parent 9eccc619
......@@ -36,6 +36,7 @@ import from EPTF_CLL_Base_Definitions all;
import from EPTF_CLL_Base_Functions all;
import from EPTF_CLL_Common_Definitions all;
//import from TELNETasp_PortType all;
import from EPTF_CLL_Semaphore_Functions all;
import from EPTF_CLI_Test_Definitions all;
import from EPTF_CLI_Test_Functions all;
modulepar charstring tsp_EPTF_CLI_Test_prompt :="TTCN> "
......@@ -526,6 +527,76 @@ group ExecuteParallelCommands {
} //~group ExecuteParallelCommands
group ExecuteCommand_During_Semaphore_Timeout {
// Wait for a semaphore, but response does not unlock the semaphore in time => waitForUnlock returns with timeout
// After the semaphore timeouts, execute CLI command (with slow response).
// (In case of bug: it gets the same semaphore ID as timedOut.)
// Before the CLI command resonse arrives, the response for the original semaphore arrives which deletes the semaphore
// (In case of bug, this semaphore ID will be the same as for the CLI command)
// After that, the response of the CLI command arrives, but the semaphore it uses is deleted by the semaphore handler
// (In case of bug: DTE happens: "Dynamic test case error: Index overflow in a value of type @PreGenRecordOf.PREGEN_RECORD_OF_CHARSTRING: The index is 0, but the value has only 0 elements.")
type component EPTF_CLI_Test_executeCommand_During_Semaphore_Timeout_CT extends EPTF_CLI_Test_CT {
timer t_trigger_cli_command := 0.0;
timer t_trigger_semaphore_response := 0.5;
var integer v_semaphoreId := -1;
}
altstep as_EPTF_CLI_Test_executeCommand_During_Semaphore_Timeout() runs on EPTF_CLI_Test_executeCommand_During_Semaphore_Timeout_CT {
// triggers the CLI command execution
[] t_trigger_cli_command.timeout {
// start the echo command with 2 sec timeout
log(">echo -t 1 AAA: ", f_EPTF_CLI_executeCommand("echo -t 2 AAA"));
repeat;
}
[] t_trigger_semaphore_response.timeout {
// the response arrives:
f_EPTF_Semaphore_delete(v_semaphoreId);
log("Answer arrived late, semaphore deleted: ", v_semaphoreId);
repeat;
}
}
testcase tc_EPTF_CLI_Test_executeCommand_During_Semaphore_Timeout() runs on EPTF_CLI_Test_executeCommand_During_Semaphore_Timeout_CT {
f_EPTF_CLI_init_CT("CLI_Test");
f_EPTF_CLI_Client_init_CT("CLI_Test", self);
f_EPTF_Semaphore_init_CT("CLI_Test");
activate(as_EPTF_CLI_Test_executeCommand_During_Semaphore_Timeout());
// this should be successful
if(not registerOK==f_EPTF_CLI_Client_registerCommand(
"echo",
"echoes its arguments",
refers(f_EPTF_CLI_Client_echoHandler)
)) {
setverdict(fail,"Test FAILED: Command echo cannot be registered!");
}
v_semaphoreId := f_EPTF_Semaphore_new();
// wait for the semaphore with timeout
if (f_EPTF_Semaphore_waitForUnlock(v_semaphoreId, 0.10)) {
// max wait time expired before response received:
log(log2str(%definitionId&": Semaphore timed out before answer received: ",v_semaphoreId));
}
// trigger the echo command instantly with 2 sec timeout
t_trigger_cli_command.start;
// trigger semaphore response after 0.5 sec:
t_trigger_semaphore_response.start(0.5);
timer t_wait_for_CLI := 2.5;
t_wait_for_CLI.start; t_wait_for_CLI.timeout;
// DTE should not happen, so this line should be reached:
f_EPTF_Base_stop(pass);
}
} //~group ExecuteCommand_During_Semaphore_Timeout
testcase tc_EPTF_CLI_Test_stopCommand() runs on EPTF_CLI_Test_Parallel_CT {
f_EPTF_CLI_init_CT("CLI_Test");
......@@ -1211,6 +1282,8 @@ control {
execute(tc_EPTF_CLI_Test_executeCustomCommand());
execute(tc_EPTF_CLI_Test_executeCommandSetCommands());
execute(tc_EPTF_CLI_Test_executeParallelCommands());
execute(tc_EPTF_CLI_Test_executeCommand_During_Semaphore_Timeout());
execute(tc_EPTF_CLI_Test_splitString());
execute(tc_EPTF_CLI_Test_stopCommand());
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment