*** Settings ***
+Documentation Karaf library. This library is useful to deal with controller Karaf console.
Library SSHLibrary
Library OperatingSystem
Variables ../variables/Variables.py
BuiltIn.Set Suite Variable ${KarafKeywords__karaf_connection_index} ${karaf_connection.index}
Restore Current SSH Connection From Index ${current_ssh_connection.index}
+Configure Timeout For Karaf Console
+ [Arguments] ${timeout}
+ [Documentation] Configure a different timeout for the Karaf console
+ BuiltIn.Run Keyword If ${KarafKeywords__karaf_connection_index} == -1 Fail Need to connect to a Karaf Console first
+ ${current_connection_index}= SSHLibrary.Switch Connection ${KarafKeywords__karaf_connection_index}
+ SSHLibrary.Set_Client_Configuration timeout=${timeout}
+ Restore Current SSH Connection From Index ${current_connection_index}
+
Execute Controller Karaf Command On Background
[Arguments] ${command}
[Documentation] Send command to karaf without affecting current SSH connection. Read, log and return response.
BuiltIn.Run Keyword If '${status_wait}' != 'PASS' BuiltIn.Fail Failed to see prompt after sending the command: ${command}
[Return] ${message_wait}
+Execute Controller Karaf Command With Retry On Background
+ [Arguments] ${command}
+ [Documentation] Attemp to send command to karaf, if fail then open connection and try again.
+ ${status} ${message}= BuiltIn.Run Keyword And Ignore Error Execute Controller Karaf Command On Background ${command}
+ BuiltIn.Return_From_Keyword_If '${status}' == 'PASS' ${message}
+ # TODO: Verify this does not leak connections indices.
+ Open Controller Karaf Console On Background
+ ${message}= Execute Controller Karaf Command On Background ${command}
+ [Return] ${message}
+
Log Message To Controller Karaf
[Arguments] ${message}
[Documentation] Send a message into the controller's karaf log file. Do not change current SSH connection.
- ${reply}= Execute Controller Karaf Command On Background log:log "ROBOT MESSAGE: ${message}"
+ ${reply}= Execute Controller Karaf Command With Retry On Background log:log "ROBOT MESSAGE: ${message}"
[Return] ${reply}
Log Test Suite Start To Controller Karaf