From bde6780a9608369aaf84501af5e6098d7ac6d7aa Mon Sep 17 00:00:00 2001 From: aguilard Date: Fri, 18 Mar 2022 14:15:17 +0000 Subject: [PATCH] BASIC21 test: added persistent volume checking Added check on the presence of the persistent volume in Openstack. Created new keywords in openstack_lib.robot for that. Fix bug in vnf_lib.robot. Change-Id: I0b4cc8f81d2f1cddcd90d1664a69dafae23e70cb Signed-off-by: aguilard --- robot-systest/lib/openstack_lib.robot | 33 +++++++++ robot-systest/lib/vnf_lib.robot | 2 +- .../basic_21-support_of_volumes.robot | 71 +++++++++++++------ 3 files changed, 84 insertions(+), 22 deletions(-) diff --git a/robot-systest/lib/openstack_lib.robot b/robot-systest/lib/openstack_lib.robot index c72892e..884ec4f 100644 --- a/robot-systest/lib/openstack_lib.robot +++ b/robot-systest/lib/openstack_lib.robot @@ -58,3 +58,36 @@ Get Project Quota Should Be Equal As Integers ${rc} ${success_return_code} [Return] ${stdout} + +Get Server Property + [Documentation] Get a field (flavor, image, volumes_attached, etc.) from a server. + [Arguments] ${server_id} ${field} + + Should Not Be Empty ${server_id} + Should Not Be Empty ${field} + ${rc} ${stdout}= Run and Return RC and Output openstack server show ${server_id} -c ${field} -f value + log ${stdout} + Should Be Equal As Integers ${rc} ${success_return_code} + [Return] ${stdout} + + +Check If Volume Exists + [Documentation] Checks if a volume id exists + [Arguments] ${volume_id} + + Should Not Be Empty ${volume_id} + ${rc} ${stdout}= Run and Return RC and Output openstack volume list | grep ${volume_id} | wc -l + log ${stdout} + Should Be Equal As Integers ${rc} ${success_return_code} + [Return] ${stdout} + + +Delete Volume + [Documentation] Delete a volume by its identifier + [Arguments] ${volume_id} + + Should Not Be Empty ${volume_id} + ${rc} ${stdout}= Run and Return RC and Output openstack volume delete ${volume_id} + log ${stdout} + Should Be Equal As Integers ${rc} ${success_return_code} + [Return] ${stdout} diff --git a/robot-systest/lib/vnf_lib.robot b/robot-systest/lib/vnf_lib.robot index eda7ff4..12f44bc 100644 --- a/robot-systest/lib/vnf_lib.robot +++ b/robot-systest/lib/vnf_lib.robot @@ -19,7 +19,7 @@ Get VNF VIM ID [Arguments] ${vnf_id} Should Not Be Empty ${vnf_id} - ${rc} ${stdout}= Run and Return RC and Output osm vnf-show ${vnf_id} --literal | grep vim_id | awk '{print $2}' + ${rc} ${stdout}= Run and Return RC and Output osm vnf-show ${vnf_id} --literal | grep vim-id | awk '{print $2}' log ${stdout} Should Be Equal As Integers ${rc} ${success_return_code} [Return] ${stdout} diff --git a/robot-systest/testsuite/basic_21-support_of_volumes.robot b/robot-systest/testsuite/basic_21-support_of_volumes.robot index f9cfabb..feb17a2 100644 --- a/robot-systest/testsuite/basic_21-support_of_volumes.robot +++ b/robot-systest/testsuite/basic_21-support_of_volumes.robot @@ -20,9 +20,11 @@ Library Process Library SSHLibrary Resource %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot +Resource %{ROBOT_DEVOPS_FOLDER}/lib/vnf_lib.robot Resource %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot Resource %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot Resource %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot +Resource %{ROBOT_DEVOPS_FOLDER}/lib/openstack_lib.robot Force Tags basic_21 cluster_main daily regression @@ -47,48 +49,63 @@ ${privatekey} %{HOME}/.ssh/id_rsa ${username} ubuntu ${password} ${EMPTY} -${ns_id} ${EMPTY} ${vnf_member_index} vnf-several-volumes -${vnf_ip_addr} ${EMPTY} ${success_return_code} 0 *** Test Cases *** Create VNF Descriptor - + [Tags] prepare Create VNFD '%{PACKAGES_FOLDER}/${vnfd_pkg}' -Get Volumes From VNF - - ${rc} ${stdout}= Run and Return RC and Output osm vnfpkg-show ${vnfd_name} --literal | yq '.vdu[0]."virtual-storage-desc" | length' - Should Be Equal As Integers ${rc} ${success_return_code} msg=${stdout} values=False - ${num_virtual_storage}= Convert To Integer ${stdout} - Set Suite Variable ${vnf_num_volumes} ${num_virtual_storage} - log ${vnf_num_volumes} - - Create NS Descriptor - + [Tags] prepare Create NSD '%{PACKAGES_FOLDER}/${nsd_pkg}' Network Service Instance Test - + [Tags] prepare ${id}= Create Network Service ${nsd_name} %{VIM_TARGET} ${ns_name} ${ns_config} ${publickey} Set Suite Variable ${ns_id} ${id} +Get NS Id + [Tags] verify cleanup + ${variables} Get Variables + IF not "\${ns_id}" in "${variables}" + ${id}= Get Ns Id ${ns_name} + Set Suite Variable ${ns_id} ${id} + END + +Get Volumes From VNFD + [Tags] verify + ${rc} ${stdout}= Run and Return RC and Output osm vnfpkg-show ${vnfd_name} --literal | yq '.vdu[0]."virtual-storage-desc" | length' + Should Be Equal As Integers ${rc} ${success_return_code} msg=${stdout} values=False + ${num_virtual_storage}= Convert To Integer ${stdout} + Set Suite Variable ${vnf_num_volumes} ${num_virtual_storage} + log ${vnf_num_volumes} -Get Vnf Ip Address +Get VNF IP Address + [Tags] verify Variable Should Exist ${ns_id} msg=NS is not available - ${ip_addr} Get Vnf Management Ip Address ${ns_id} ${vnf_member_index} + ${ip_addr}= Get Vnf Management Ip Address ${ns_id} ${vnf_member_index} log ${ip_addr} Set Suite Variable ${vnf_ip_addr} ${ip_addr} -Check Vdu disks +Get Persistent Volume Id + [Tags] cleanup + Variable Should Exist ${ns_id} msg=NS is not available + ${vnfs_list}= Get Ns Vnf List ${ns_id} + ${vim_id}= Get VNF VIM ID ${vnfs_list}[0] + ${volumes_attached}= Get Server Property ${vim_id} volumes_attached + ${match}= Get Regexp Matches ${volumes_attached} '([0-9a-f\-]+)' 1 + Set Suite Variable ${volume_id} ${match}[0] + +Check VDU disks + [Tags] verify Variable Should Exist ${vnf_ip_addr} msg=VNF is not available Sleep 30 seconds Wait for SSH daemon to be up ${stdout}= Execute Remote Command Check Rc Return Output ${vnf_ip_addr} ${username} ${password} ${privatekey} sudo lsblk -l @@ -100,19 +117,31 @@ Check Vdu disks Delete NS Instance Test [Tags] cleanup - Delete NS ${ns_name} -Delete NS Descriptor Test +Check Persistent Volume Was Deleted [Tags] cleanup + Variable Should Exist ${volume_id} msg=Volume is not available + ${exists}= Check If Volume Exists ${volume_id} + log ${exists} + IF ${exists}==0 + Fail msg=Persistent volume was deleted + Set Suite Variable ${volume_id} ${EMPTY}} + ELSE + log Persistent volume still exists, deleting... + Delete Volume ${volume_id} + Set Suite Variable ${volume_id} ${EMPTY}} + END + +Delete NS Descriptor Test + [Tags] cleanup Delete NSD ${nsd_name} Delete VNF Descriptor Test [Tags] cleanup - Delete VNFD ${vnfd_name} @@ -126,4 +155,4 @@ Suite Cleanup Run Keyword If Any Tests Failed Delete VNFD ${vnfd_name} - + Run Keyword If Any Tests Failed Check Volume Was Deleted -- 2.17.1