From b72faf377dd4f809b9439d5ca9de8b7f03c82ee8 Mon Sep 17 00:00:00 2001 From: Dominik Fleischmann Date: Thu, 23 Jul 2020 12:25:20 +0200 Subject: [PATCH] Add Charm Relations Tests and Tags This commit adds Robot Tests for the following cases: Basic 13 NS Relations Basic 14 VNF Relations It also adds tags to charm tests so that they can be executed by themselves and the charm tag to execute all charm related tests. Change-Id: I2ee5780a8a832c3535d1739b3effa4b57b880be2 Signed-off-by: Dominik Fleischmann --- .../resources/basic_13-ns_relations.py | 29 +++++ .../resources/basic_14-vnf_relations.py | 27 +++++ .../testsuite/basic_06-vnf_with_charm.robot | 22 ++-- .../testsuite/basic_13-ns_relations.robot | 105 ++++++++++++++++++ .../testsuite/basic_14-vnf_relations.robot | 93 ++++++++++++++++ .../testsuite/k8s_03-simple_k8s.robot | 16 +-- .../testsuite/k8s_05-k8s_proxy_charms.robot | 22 ++-- 7 files changed, 284 insertions(+), 30 deletions(-) create mode 100644 robot-systest/resources/basic_13-ns_relations.py create mode 100644 robot-systest/resources/basic_14-vnf_relations.py create mode 100644 robot-systest/testsuite/basic_13-ns_relations.robot create mode 100644 robot-systest/testsuite/basic_14-vnf_relations.robot diff --git a/robot-systest/resources/basic_13-ns_relations.py b/robot-systest/resources/basic_13-ns_relations.py new file mode 100644 index 0000000..ef77561 --- /dev/null +++ b/robot-systest/resources/basic_13-ns_relations.py @@ -0,0 +1,29 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from pathlib import Path + +# Get ${HOME} from local machine +home = str(Path.home()) +# NS and VNF descriptor package folder +vnfd_pkg1 = 'charm-packages/ns_relations_provides_vnf' +vnfd_pkg2 = 'charm-packages/ns_relations_requires_vnf' +nsd_pkg = 'charm-packages/ns_relations_ns' +# NS and VNF descriptor id +vnfd_name1 = 'ns_relations_provides-vnf' +vnfd_name2 = 'ns_relations_requires-vnf' +nsd_name = 'ns_relations-ns' +# NS instance name +ns_name = 'basic_13_ns_relations_test' +# SSH keys to be used +publickey = home + '/.ssh/id_rsa.pub' +privatekey = home + '/.ssh/id_rsa' diff --git a/robot-systest/resources/basic_14-vnf_relations.py b/robot-systest/resources/basic_14-vnf_relations.py new file mode 100644 index 0000000..36deb48 --- /dev/null +++ b/robot-systest/resources/basic_14-vnf_relations.py @@ -0,0 +1,27 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from pathlib import Path + +# Get ${HOME} from local machine +home = str(Path.home()) +# NS and VNF descriptor package folder +vnfd_pkg = 'charm-packages/vnf_relations_vnf' +nsd_pkg = 'charm-packages/vnf_relations_ns' +# NS and VNF descriptor id +vnfd_name = 'vnf_relations-vnf' +nsd_name = 'vnf_relations-ns' +# NS instance name +ns_name = 'basic_14_vnf_relations_test' +# SSH keys to be used +publickey = home + '/.ssh/id_rsa.pub' +privatekey = home + '/.ssh/id_rsa' diff --git a/robot-systest/testsuite/basic_06-vnf_with_charm.robot b/robot-systest/testsuite/basic_06-vnf_with_charm.robot index 25e32c8..b092960 100644 --- a/robot-systest/testsuite/basic_06-vnf_with_charm.robot +++ b/robot-systest/testsuite/basic_06-vnf_with_charm.robot @@ -41,26 +41,26 @@ ${ns_timeout} 15min *** Test Cases *** Create Charm VNF Descriptor - [Tags] charm sanity regression + [Tags] proxy_charm charm sanity regression Create VNFD '%{PACKAGES_FOLDER}/${vnfd_pkg}' Create Charm NS Descriptor - [Tags] charm sanity regression + [Tags] proxy_charm charm sanity regression Create NSD '%{PACKAGES_FOLDER}/${nsd_pkg}' Instantiate Charm Network Service - [Tags] charm sanity regression + [Tags] proxy_charm charm sanity regression ${id}= Create Network Service ${nsd_name} %{VIM_TARGET} ${ns_name} ${ns_config} ${publickey} ${ns_timeout} Set Suite Variable ${ns_id} ${id} Get Management Ip Addresses - [Tags] charm sanity regression + [Tags] proxy_charm charm sanity regression ${ip_addr_1} Get Vnf Management Ip Address ${ns_id} ${vnf_member_index_1} log ${ip_addr_1} @@ -71,7 +71,7 @@ Get Management Ip Addresses Test SSH Access - [Tags] charm sanity regression + [Tags] proxy_charm charm sanity regression Variable Should Exist ${vnf_1_ip_addr} msg=IP address of the management VNF '${vnf_member_index_1}' is not available Variable Should Exist ${vnf_2_ip_addr} msg=IP address of the management VNF '${vnf_member_index_2}' is not available @@ -83,7 +83,7 @@ Test SSH Access Check Remote Files Created Via Day 1 Operations [Documentation] The Charm VNF has a Day 1 operation that creates a file named ${day_1_file_name}. ... This test checks whether that files have been created or not. - [Tags] charm sanity regression + [Tags] proxy_charm charm sanity regression Check If remote File Exists ${vnf_1_ip_addr} ${username} ${password} ${privatekey} ${day_1_file_name} Check If remote File Exists ${vnf_2_ip_addr} ${username} ${password} ${privatekey} ${day_1_file_name} @@ -91,7 +91,7 @@ Check Remote Files Created Via Day 1 Operations Execute Day 2 Operations [Documentation] Performs one Day 2 operation per VNF that creates a new file. - [Tags] charm sanity regression + [Tags] proxy_charm charm sanity regression Variable Should Exist ${ns_id} msg=Network service instance is not available ${ns_op_id_1}= Execute NS Action ${ns_name} ${action_name} ${vnf_member_index_1} filename=${day_2_file_name_1} @@ -100,26 +100,26 @@ Execute Day 2 Operations Check Remote Files Created Via Day 2 Operations [Documentation] Check whether the files created in the previous test via Day 2 operations exist or not. - [Tags] charm sanity regression + [Tags] proxy_charm charm sanity regression Check If remote File Exists ${vnf_1_ip_addr} ${username} ${password} ${privatekey} ${day_2_file_name_1} Check If remote File Exists ${vnf_2_ip_addr} ${username} ${password} ${privatekey} ${day_2_file_name_2} Delete NS Instance - [Tags] charm sanity regression cleanup + [Tags] proxy_charm charm sanity regression cleanup Delete NS ${ns_name} Delete NS Descriptor - [Tags] charm sanity regression cleanup + [Tags] proxy_charm charm sanity regression cleanup Delete NSD ${nsd_name} Delete VNF Descriptor - [Tags] charm sanity regression cleanup + [Tags] proxy_charm charm sanity regression cleanup Delete VNFD ${vnfd_name} diff --git a/robot-systest/testsuite/basic_13-ns_relations.robot b/robot-systest/testsuite/basic_13-ns_relations.robot new file mode 100644 index 0000000..04c0cff --- /dev/null +++ b/robot-systest/testsuite/basic_13-ns_relations.robot @@ -0,0 +1,105 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +Documentation [BASIC-13] NS Relations + +Library OperatingSystem +Library SSHLibrary + +Resource %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_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/juju_lib.robot + +Variables %{ROBOT_DEVOPS_FOLDER}/resources/basic_13-ns_relations.py + +Suite Teardown Run Keyword And Ignore Error Test Cleanup + + +*** Variables *** +${username} ubuntu +${password} ${EMPTY} +${ns_config} {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] } +${action_name} touch +${vnf_member_index_1} 1 +${vnf_member_index_2} 2 +${day_1_file_name} /home/ubuntu/first-touch +${day_2_file_name_1} /home/ubuntu/mytouch1 +${day_2_file_name_2} /home/ubuntu/mytouch2 +${ns_timeout} 15min + + +*** Test Cases *** +Create Charm VNF Descriptor Provides + [Tags] ns_relations charm sanity regression + + Create VNFD '%{PACKAGES_FOLDER}/${vnfd_pkg1}' + + +Create Charm VNF Descriptor Requires + [Tags] ns_relations charm sanity regression + + Create VNFD '%{PACKAGES_FOLDER}/${vnfd_pkg2}' + + +Create Charm NS Descriptor + [Tags] ns_relations charm sanity regression + + Create NSD '%{PACKAGES_FOLDER}/${nsd_pkg}' + + +Instantiate Charm Network Service + [Tags] ns_relations charm sanity regression + + ${id}= Create Network Service ${nsd_name} %{VIM_TARGET} ${ns_name} ${ns_config} ${publickey} ${ns_timeout} + Set Suite Variable ${ns_id} ${id} + + +# TODO Check juju status for relations + + +Delete NS Instance + [Tags] ns_relations charm sanity regression cleanup + + Delete NS ${ns_name} + + +Delete NS Descriptor + [Tags] ns_relations charm sanity regression cleanup + + Delete NSD ${nsd_name} + + +Delete VNF Descriptor Provides + [Tags] ns_relations charm sanity regression cleanup + + Delete VNFD ${vnfd_name1} + + +Delete VNF Descriptor Requires + [Tags] ns_relations charm sanity regression cleanup + + Delete VNFD ${vnfd_name2} + + +*** Keywords *** +Test Cleanup + [Documentation] Test Suite Cleanup: Deleting descriptors and NS instance + + Run Keyword If Test Failed Delete NS ${ns_name} + + Run Keyword If Test Failed Delete NSD ${nsd_name} + + Run Keyword If Test Failed Delete VNFD ${vnfd_name} + diff --git a/robot-systest/testsuite/basic_14-vnf_relations.robot b/robot-systest/testsuite/basic_14-vnf_relations.robot new file mode 100644 index 0000000..adc308d --- /dev/null +++ b/robot-systest/testsuite/basic_14-vnf_relations.robot @@ -0,0 +1,93 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +Documentation [BASIC-14] VNF Relations + +Library OperatingSystem +Library SSHLibrary + +Resource %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_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/juju_lib.robot + +Variables %{ROBOT_DEVOPS_FOLDER}/resources/basic_14-vnf_relations.py + +Suite Teardown Run Keyword And Ignore Error Test Cleanup + + +*** Variables *** +${username} ubuntu +${password} ${EMPTY} +${ns_config} {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] } +${action_name} touch +${vnf_member_index_1} 1 +${vnf_member_index_2} 2 +${day_1_file_name} /home/ubuntu/first-touch +${day_2_file_name_1} /home/ubuntu/mytouch1 +${day_2_file_name_2} /home/ubuntu/mytouch2 +${ns_timeout} 15min + + +*** Test Cases *** +Create Charm VNF Descriptor + [Tags] vnf_relations charm sanity regression + + Create VNFD '%{PACKAGES_FOLDER}/${vnfd_pkg}' + + +Create Charm NS Descriptor + [Tags] vnf_relations charm sanity regression + + Create NSD '%{PACKAGES_FOLDER}/${nsd_pkg}' + + +Instantiate Charm Network Service + [Tags] vnf_relations charm sanity regression + + ${id}= Create Network Service ${nsd_name} %{VIM_TARGET} ${ns_name} ${ns_config} ${publickey} ${ns_timeout} + Set Suite Variable ${ns_id} ${id} + + +# TODO Check juju status for relations + + +Delete NS Instance + [Tags] vnf_relations charm sanity regression cleanup + + Delete NS ${ns_name} + + +Delete NS Descriptor + [Tags] vnf_relations charm sanity regression cleanup + + Delete NSD ${nsd_name} + + +Delete VNF Descriptor Provides + [Tags] vnf_relations charm sanity regression cleanup + + Delete VNFD ${vnfd_name} + + +*** Keywords *** +Test Cleanup + [Documentation] Test Suite Cleanup: Deleting descriptors and NS instance + + Run Keyword If Test Failed Delete NS ${ns_name} + + Run Keyword If Test Failed Delete NSD ${nsd_name} + + Run Keyword If Test Failed Delete VNFD ${vnfd_name} + diff --git a/robot-systest/testsuite/k8s_03-simple_k8s.robot b/robot-systest/testsuite/k8s_03-simple_k8s.robot index 5b0db07..ae882b3 100644 --- a/robot-systest/testsuite/k8s_03-simple_k8s.robot +++ b/robot-systest/testsuite/k8s_03-simple_k8s.robot @@ -35,36 +35,36 @@ ${publickey} ${EMPTY} *** Test Cases *** Create Simple K8s VNF Descriptor - [Tags] simple_k8s sanity regression + [Tags] simple_k8s charm sanity regression Create VNFD '%{PACKAGES_FOLDER}/${vnfd_pkg}' Create Simple K8s Descriptor - [Tags] simple_k8s sanity regression + [Tags] simple_k8s charm sanity regression Create NSD '%{PACKAGES_FOLDER}/${nsd_pkg}' Add K8s Cluster To OSM - [Tags] k8scluster sanity regression + [Tags] k8scluster charm sanity regression Create K8s Cluster %{K8S_CREDENTIALS} ${k8scluster_version} %{VIM_TARGET} %{VIM_MGMT_NET} ${k8scluster_name} Network Service K8s Instance Test - [Tags] simple_k8s sanity regression + [Tags] simple_k8s charm sanity regression ${id}= Create Network Service ${nsd_name} %{VIM_TARGET} ${ns_name} ${ns_config} ${publickey} Set Suite Variable ${ns_id} ${id} Delete NS K8s Instance Test - [Tags] simple_k8s sanity regression cleanup + [Tags] simple_k8s charm sanity regression cleanup Delete NS ${ns_name} Remove K8s Cluster from OSM - [Tags] k8scluster sanity regression + [Tags] k8scluster charm sanity regression Delete K8s Cluster ${k8scluster_name} Delete NS Descriptor Test - [Tags] simple_k8s sanity regression cleanup + [Tags] simple_k8s charm sanity regression cleanup Delete NSD ${nsd_name} Delete VNF Descriptor Test - [Tags] simple_k8s sanity regression cleanup + [Tags] simple_k8s charm sanity regression cleanup Delete VNFD ${vnfd_name} diff --git a/robot-systest/testsuite/k8s_05-k8s_proxy_charms.robot b/robot-systest/testsuite/k8s_05-k8s_proxy_charms.robot index 07e5141..0dccea6 100644 --- a/robot-systest/testsuite/k8s_05-k8s_proxy_charms.robot +++ b/robot-systest/testsuite/k8s_05-k8s_proxy_charms.robot @@ -41,26 +41,26 @@ ${ns_timeout} 15min *** Test Cases *** Create Charm VNF Descriptor - [Tags] charm sanity regression + [Tags] k8s_proxy_charm charm sanity regression Create VNFD '%{PACKAGES_FOLDER}/${vnfd_pkg}' Create Charm NS Descriptor - [Tags] charm sanity regression + [Tags] k8s_proxy_charm charm sanity regression Create NSD '%{PACKAGES_FOLDER}/${nsd_pkg}' Instantiate Charm Network Service - [Tags] charm sanity regression + [Tags] k8s_proxy_charm charm sanity regression ${id}= Create Network Service ${nsd_name} %{VIM_TARGET} ${ns_name} ${ns_config} ${publickey} ${ns_timeout} Set Suite Variable ${ns_id} ${id} Get Management Ip Addresses - [Tags] charm sanity regression + [Tags] k8s_proxy_charm charm sanity regression ${ip_addr_1} Get Vnf Management Ip Address ${ns_id} ${vnf_member_index_1} log ${ip_addr_1} @@ -71,7 +71,7 @@ Get Management Ip Addresses Test SSH Access - [Tags] charm sanity regression + [Tags] k8s_proxy_charm charm sanity regression Variable Should Exist ${vnf_1_ip_addr} msg=IP address of the management VNF '${vnf_member_index_1}' is not available Variable Should Exist ${vnf_2_ip_addr} msg=IP address of the management VNF '${vnf_member_index_2}' is not available @@ -83,7 +83,7 @@ Test SSH Access Check Remote Files Created Via Day 1 Operations [Documentation] The Charm VNF has a Day 1 operation that creates a file named ${day_1_file_name}. ... This test checks whether that files have been created or not. - [Tags] charm sanity regression + [Tags] k8s_proxy_charm charm sanity regression Check If remote File Exists ${vnf_1_ip_addr} ${username} ${password} ${privatekey} ${day_1_file_name} Check If remote File Exists ${vnf_2_ip_addr} ${username} ${password} ${privatekey} ${day_1_file_name} @@ -91,7 +91,7 @@ Check Remote Files Created Via Day 1 Operations Execute Day 2 Operations [Documentation] Performs one Day 2 operation per VNF that creates a new file. - [Tags] charm sanity regression + [Tags] k8s_proxy_charm charm sanity regression Variable Should Exist ${ns_id} msg=Network service instance is not available ${ns_op_id_1}= Execute NS Action ${ns_name} ${action_name} ${vnf_member_index_1} filename=${day_2_file_name_1} @@ -100,26 +100,26 @@ Execute Day 2 Operations Check Remote Files Created Via Day 2 Operations [Documentation] Check whether the files created in the previous test via Day 2 operations exist or not. - [Tags] charm sanity regression + [Tags] k8s_proxy_charm charm sanity regression Check If remote File Exists ${vnf_1_ip_addr} ${username} ${password} ${privatekey} ${day_2_file_name_1} Check If remote File Exists ${vnf_2_ip_addr} ${username} ${password} ${privatekey} ${day_2_file_name_2} Delete NS Instance - [Tags] charm sanity regression cleanup + [Tags] k8s_proxy_charm charm sanity regression cleanup Delete NS ${ns_name} Delete NS Descriptor - [Tags] charm sanity regression cleanup + [Tags] k8s_proxy_charm charm sanity regression cleanup Delete NSD ${nsd_name} Delete VNF Descriptor - [Tags] charm sanity regression cleanup + [Tags] k8s_proxy_charm charm sanity regression cleanup Delete VNFD ${vnfd_name} -- 2.17.1