Autohealing Feature robot test support 66/11966/9
authordhanasekaran <ragavi.d@tataelxsi.co.in>
Thu, 28 Apr 2022 12:56:03 +0000 (12:56 +0000)
committerdhanasekaran <ragavi.d@tataelxsi.co.in>
Tue, 14 Jun 2022 11:11:55 +0000 (13:11 +0200)
Change-Id: I8783986cc922603eda21e2ab500acb2180d941d4
Signed-off-by: dhanasekaran <ragavi.d@tataelxsi.co.in>
robot-systest/lib/openstack_lib.robot
robot-systest/testsuite/heal_04-autohealing.robot [new file with mode: 0644]

index 36e3f1d..c335963 100644 (file)
@@ -114,3 +114,13 @@ Stop Server
     log   ${stdout}
     Should Be Equal As Integers   ${rc}   ${success_return_code}
     [Return]  ${stdout}
+
+Halt Server
+    [Documentation]    Reset a server
+    [Arguments]    ${server_id}
+
+    Should Not Be Empty   ${server_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack server set --state error ${server_id}
+    log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]  ${stdout}
diff --git a/robot-systest/testsuite/heal_04-autohealing.robot b/robot-systest/testsuite/heal_04-autohealing.robot
new file mode 100644 (file)
index 0000000..990b44a
--- /dev/null
@@ -0,0 +1,139 @@
+#   Licensed under the Apache License, Version 2.0 (the "License");\r
+#   you may not use this file except in compliance with the License.\r
+#   You may obtain a copy of the License at\r
+#\r
+#       http://www.apache.org/licenses/LICENSE-2.0\r
+#\r
+#   Unless required by applicable law or agreed to in writing, software\r
+#   distributed under the License is distributed on an "AS IS" BASIS,\r
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+#   See the License for the specific language governing permissions and\r
+#   limitations under the License.\r
+\r
+*** Settings ***\r
+Documentation     [HEAL-04] Autohealing of NS\r
+Suite Teardown    Run Keyword And Ignore Error    Suite Cleanup\r
+Force Tags        heal_04   cluster_main   daily   regression\r
+Library           OperatingSystem\r
+Library           String\r
+Library           Collections\r
+Library           Process\r
+Library           SSHLibrary\r
+Resource          %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot\r
+Resource          %{ROBOT_DEVOPS_FOLDER}/lib/vnf_lib.robot\r
+Resource          %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot\r
+Resource          %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot\r
+Resource          %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot\r
+Resource          %{ROBOT_DEVOPS_FOLDER}/lib/openstack_lib.robot\r
+\r
+*** Variables ***\r
+# NS and VNF descriptor package folder and ids\r
+${vnfd_pkg}   autoheal_vnf\r
+${vnfd_name}   autoheal_vnfd\r
+${vdu_name}   autoheal_vnfd-VM\r
+${vnf_index}   1\r
+${nsd_pkg}   autoheal_ns\r
+${nsd_name}  autoheal_nsd\r
+# NS instance name and configuration\r
+${ns_name}    heal_04\r
+${ns_config}   {vld: [ {name: mgmt, vim-network-name: %{VIM_MGMT_NET}} ] }\r
+\r
+# SSH keys and username to be used\r
+${publickey}   %{HOME}/.ssh/id_rsa.pub\r
+${privatekey}   %{HOME}/.ssh/id_rsa\r
+${username}   ubuntu\r
+${password}   ${EMPTY}\r
+\r
+${success_return_code}   0\r
+\r
+*** Test Cases ***\r
+Create VNF Descriptors\r
+    [Tags]  prepare\r
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'\r
+\r
+\r
+Create NS Descriptor\r
+    [Tags]  prepare\r
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'\r
+\r
+\r
+Network Service Instance Test\r
+    [Tags]  prepare\r
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}\r
+    Set Suite Variable   ${ns_id}   ${id}\r
+\r
+\r
+Get NS Id\r
+    [Tags]   verify   cleanup\r
+    ${variables}   Get Variables\r
+    IF   not "\${ns_id}" in "${variables}"\r
+        ${id}=   Get Ns Id   ${ns_name}\r
+        Set Suite Variable   ${ns_id}   ${id}\r
+    END\r
+\r
+\r
+Get VNF Info\r
+    [Tags]  verify\r
+    Variable Should Exist  ${ns_id}  msg=NS is not available\r
+    ${ip_addr}=  Get Vnf Management Ip Address   ${ns_id}   ${vnf_index}\r
+    log   ${ip_addr}\r
+    Set Suite Variable   ${vnf_ip_addr}   ${ip_addr}\r
+\r
+    ${vnf_id}=  Get Vnf Id   ${ns_id}   ${vnf_index}\r
+    Set Suite Variable   ${vnf_autoheal_id}   ${vnf_id}\r
+    ${id}=  Get VNF VIM ID   ${vnf_id}\r
+    Set Suite Variable   ${vdu_autoheal_id}   ${id}\r
+    log   ${vdu_autoheal_id}\r
+\r
+    @{autoheal_ip_list}=  Get Vnf Vdur IPs   ${vnf_autoheal_id}\r
+    Set Suite Variable   @{autoheal_ip_list}   @{autoheal_ip_list}\r
+    log   @{autoheal_ip_list}\r
+\r
+\r
+Stop Autoheal VDU\r
+    [Tags]  verify\r
+    Variable Should Exist  ${vdu_autoheal_id}  msg=VDU is not available\r
+    Halt Server   ${vdu_autoheal_id}\r
+    Sleep   20\r
+\r
+\r
+Check VNF After Healing\r
+    [Tags]  verify\r
+    FOR    ${Index}    IN RANGE    0    15\r
+        ${server_status}=  Get Server Property   ${vdu_autoheal_id}   status\r
+        ${status}=    Run Keyword And Return Status    Should Be Equal    ${server_status}    ACTIVE\r
+        Run Keyword If  ${status}    Exit For Loop\r
+    ...  ELSE  Sleep    10\r
+    END\r
+    Variable Should Exist  ${vnf_autoheal_id}  msg=VNF is not available\r
+\r
+    @{ip_list}=  Get Vnf Vdur IPs   ${vnf_autoheal_id}\r
+    log   @{ip_list}\r
+    Should Be Equal   ${ip_list}   ${autoheal_ip_list}   IP addresses have changed after healing\r
+\r
+    ${id}=  Get VNF VIM ID   ${vnf_autoheal_id}\r
+    log   ${id}\r
+    Should Not Be Equal   ${id}   ${vdu_autoheal_id}   VDU id has not changed after healing\r
+\r
+\r
+Delete NS Instance\r
+    [Tags]   cleanup\r
+    Delete NS   ${ns_name}\r
+\r
+\r
+Delete NS Descriptor\r
+    [Tags]   cleanup\r
+    Delete NSD   ${nsd_name}\r
+\r
+\r
+Delete VNF Descriptors\r
+    [Tags]   cleanup\r
+    Delete VNFD   ${vnfd_name}\r
+\r
+*** Keywords ***\r
+Suite Cleanup\r
+    [Documentation]  Test Suit Cleanup: Deleting Descriptor, instance and vim\r
+\r
+    Run Keyword If Any Tests Failed  Delete NS   ${ns_name}\r
+    Run Keyword If Any Tests Failed  Delete NSD   ${nsd_name}\r
+    Run Keyword If Any Tests Failed  Delete VNFD   ${vnfd_name}\r