X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=csit%2Flibraries%2FKarafKeywords.robot;h=9cec844567313a02a4a98c433db1057abe441990;hb=63342e0454b82783a6ef7a9b19e1698b9b5cd621;hp=87f2f05818fda412a6481cd3f3d9caf573c1217d;hpb=776255eefda71fa0233b9cc4efe8d63f7d7ea305;p=integration%2Ftest.git diff --git a/csit/libraries/KarafKeywords.robot b/csit/libraries/KarafKeywords.robot index 87f2f05818..9cec844567 100644 --- a/csit/libraries/KarafKeywords.robot +++ b/csit/libraries/KarafKeywords.robot @@ -10,30 +10,16 @@ ${BUNDLEFOLDER} distribution-karaf-0.3.0-SNAPSHOT ${KarafKeywords__karaf_connection_index} -1 *** Keywords *** -Check Karaf Log File Does Not Have Messages - [Arguments] ${ip} ${message} ${user}=${CONTROLLER_USER} ${password}=${CONTROLLER_PASSWORD} ${prompt}=${DEFAULT_LINUX_PROMPT} ${log_file}=${WORKSPACE}/${BUNDLEFOLDER}/data/log/karaf.log - [Documentation] Fails if the provided ${message} is found in the karaf.log file. Uses grep to search. The - ... karaf.log file can be overridden with ${log_file} to be any file on the given system @ ${ip} - ${output}= Run Command On Controller ${ip} grep ${message} ${log_file} user=${user} password=${password} prompt=${prompt} - Should Not Contain ${output} ${message} - Verify Feature Is Installed - [Arguments] ${feature_name} ${controller}=${CONTROLLER} ${karaf_port}=${KARAF_SHELL_PORT} + [Arguments] ${feature_name} ${controller}=${ODL_SYSTEM_IP} ${karaf_port}=${KARAF_SHELL_PORT} [Documentation] Will Succeed if the given ${feature_name} is found in the output of "feature:list -i" ${output}= Issue Command On Karaf Console feature:list -i | grep ${feature_name} ${controller} ${karaf_port} Should Contain ${output} ${feature_name} [Return] ${output} -Verify Feature Is Not Installed - [Arguments] ${feature_name} ${controller}=${CONTROLLER} ${karaf_port}=${KARAF_SHELL_PORT} - [Documentation] Will Succeed if the given ${feature_name} is NOT found in the output of "feature:list -i" - ${output}= Issue Command On Karaf Console feature:list -i | grep ${feature_name} ${controller} ${karaf_port} - Should Not Contain ${output} ${feature_name} - [Return] ${output} - Issue Command On Karaf Console - [Arguments] ${cmd} ${controller}=${CONTROLLER} ${karaf_port}=${KARAF_SHELL_PORT} ${timeout}=5 - [Documentation] Will execute the given ${cmd} by ssh'ing to the karaf console running on ${CONTROLLER} + [Arguments] ${cmd} ${controller}=${ODL_SYSTEM_IP} ${karaf_port}=${KARAF_SHELL_PORT} ${timeout}=5 + [Documentation] Will execute the given ${cmd} by ssh'ing to the karaf console running on ${ODL_SYSTEM_IP} ... Note that this keyword will open&close new SSH connection, without switching back to previously current session. Open Connection ${controller} port=${karaf_port} prompt=${KARAF_PROMPT} timeout=${timeout} Login ${KARAF_USER} ${KARAF_PASSWORD} @@ -43,15 +29,23 @@ Issue Command On Karaf Console Log ${output} [Return] ${output} +Check For Elements On Karaf Command Output Message + [Arguments] ${cmd} ${elements} ${controller}=${ODL_SYSTEM_IP} ${karaf_port}=${KARAF_SHELL_PORT} ${timeout}=5 + [Documentation] Will execute the command using Issue Command On Karaf Console then check for the given elements + ... in the command output message + ${output} Issue Command On Karaf Console ${cmd} ${controller} ${karaf_port} ${timeout} + : FOR ${i} IN @{elements} + \ Should Contain ${output} ${i} + Verify Bundle Is Installed - [Arguments] ${bundle_name} ${controller}=${CONTROLLER} ${karaf_port}=${KARAF_SHELL_PORT} + [Arguments] ${bundle_name} ${controller}=${ODL_SYSTEM_IP} ${karaf_port}=${KARAF_SHELL_PORT} [Documentation] Will succeed if the given ${bundle name} is present in the output of "bundle:list -s " ${output}= Issue Command On Karaf Console bundle:list -s | grep ${bundle_name} ${controller} ${karaf_port} Should Contain ${output} ${bundle_name} [Return] ${output} Verify Bundle Is Not Installed - [Arguments] ${bundle_name} ${controller}=${CONTROLLER} ${karaf_port}=${KARAF_SHELL_PORT} + [Arguments] ${bundle_name} ${controller}=${ODL_SYSTEM_IP} ${karaf_port}=${KARAF_SHELL_PORT} [Documentation] Will succeed if the given ${bundle_name} is NOT found in the output of "bundle:list -s" ${output}= Issue Command On Karaf Console bundle:list -i | grep ${bundle_name} ${controller} ${karaf_port} Should Not Contain ${output} ${bundle_name} @@ -65,8 +59,15 @@ Check Karaf Log Has Messages \ Should Contain ${output} ${message} [Return] ${output} +Check Karaf Log File Does Not Have Messages + [Arguments] ${ip} ${message} ${user}=${ODL_SYSTEM_USER} ${password}=${ODL_SYSTEM_PASSWORD} ${prompt}=${DEFAULT_LINUX_PROMPT} ${log_file}=${WORKSPACE}/${BUNDLEFOLDER}/data/log/karaf.log + [Documentation] Fails if the provided ${message} is found in the karaf.log file. Uses grep to search. The + ... karaf.log file can be overridden with ${log_file} to be any file on the given system @ ${ip} + ${output}= Run Command On Controller ${ip} grep -c '${message}' ${log_file} user=${user} password=${password} prompt=${prompt} + Should Be Equal As Strings ${output} 0 + Install a Feature - [Arguments] ${feature_name} ${controller}=${CONTROLLER} ${karaf_port}=${KARAF_SHELL_PORT} ${timeout}=15 + [Arguments] ${feature_name} ${controller}=${ODL_SYSTEM_IP} ${karaf_port}=${KARAF_SHELL_PORT} ${timeout}=180 [Documentation] Will Install the given ${feature_name} Log ${timeout} ${output}= Issue Command On Karaf Console feature:install ${feature_name} ${controller} ${karaf_port} ${timeout} @@ -74,7 +75,7 @@ Install a Feature [Return] ${output} Uninstall a Feature - [Arguments] ${feature_name} ${controller}=${CONTROLLER} ${karaf_port}=${KARAF_SHELL_PORT} ${timeout}=15 + [Arguments] ${feature_name} ${controller}=${ODL_SYSTEM_IP} ${karaf_port}=${KARAF_SHELL_PORT} ${timeout}=180 [Documentation] Will UnInstall the given ${feature_name} ${output}= Issue Command On Karaf Console feature:uninstall ${feature_name} ${controller} ${karaf_port} ${timeout} Log ${output} @@ -110,12 +111,20 @@ Restore Current SSH Connection From Index Open Controller Karaf Console On Background [Documentation] Connect to the controller's karaf console, but do not switch to it. ${current_ssh_connection}= SSHLibrary.Get Connection - SSHLibrary.Open Connection ${CONTROLLER} port=${KARAF_SHELL_PORT} prompt=${KARAF_DETAILED_PROMPT} + SSHLibrary.Open Connection ${ODL_SYSTEM_IP} port=${KARAF_SHELL_PORT} prompt=${KARAF_DETAILED_PROMPT} ${karaf_connection}= SSHLibrary.Get Connection SSHLibrary.Login ${KARAF_USER} ${KARAF_PASSWORD} 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. @@ -130,10 +139,20 @@ Execute Controller Karaf Command On Background 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 @@ -150,3 +169,13 @@ Set Bgpcep Log Levels # FIXME: Move to appropriate Resource Execute Controller Karaf Command On Background log:set ${bgpcep_level} org.opendaylight.bgpcep Execute Controller Karaf Command On Background log:set ${protocol_level} org.opendaylight.protocol + +Wait For Karaf Log + [Arguments] ${message} ${timeout}=60 + [Documentation] Read karaf logs until message appear + Log Waiting for '${message}' in karaf log + Open Connection ${ODL_SYSTEM_IP} port=${KARAF_SHELL_PORT} prompt=${KARAF_PROMPT} timeout=${timeout} + Flexible SSH Login ${KARAF_USER} ${KARAF_PASSWORD} + Write log:tail + Read Until ${message} + Close Connection