Add Charm Relations Tests and Tags 15/9515/2
authorDominik Fleischmann <dominik.fleischmann@canonical.com>
Thu, 23 Jul 2020 10:25:20 +0000 (12:25 +0200)
committerDominik Fleischmann <dominik.fleischmann@canonical.com>
Thu, 23 Jul 2020 13:36:16 +0000 (15:36 +0200)
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 <dominik.fleischmann@canonical.com>
robot-systest/resources/basic_13-ns_relations.py [new file with mode: 0644]
robot-systest/resources/basic_14-vnf_relations.py [new file with mode: 0644]
robot-systest/testsuite/basic_06-vnf_with_charm.robot
robot-systest/testsuite/basic_13-ns_relations.robot [new file with mode: 0644]
robot-systest/testsuite/basic_14-vnf_relations.robot [new file with mode: 0644]
robot-systest/testsuite/k8s_03-simple_k8s.robot
robot-systest/testsuite/k8s_05-k8s_proxy_charms.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 (file)
index 0000000..ef77561
--- /dev/null
@@ -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 (file)
index 0000000..36deb48
--- /dev/null
@@ -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'
index 25e32c8..b092960 100644 (file)
@@ -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 (file)
index 0000000..04c0cff
--- /dev/null
@@ -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 (file)
index 0000000..adc308d
--- /dev/null
@@ -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}
+
index 5b0db07..ae882b3 100644 (file)
@@ -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}
 
 
index 07e5141..0dccea6 100644 (file)
@@ -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}