From a07c2b3216f2cee90802e2cddc4eb06a7eae372c Mon Sep 17 00:00:00 2001 From: Dominik Fleischmann Date: Fri, 31 Jul 2020 15:17:26 +0200 Subject: [PATCH] Add actions to Simple K8s test This commit changes the package used for the test k8s-03. The new package has actions included and uses local k8s charms. This required the additon of the upload-package commands in the robot test libraries and the K8s Ns Action command. Additionally the timeout time for the k8scluster creation has been extended, as it was to short for some test environments. Change-Id: I846733982a7874b3467270d1a1d1fa8a330030f8 Signed-off-by: Dominik Fleischmann --- robot-systest/lib/k8scluster_lib.robot | 2 +- robot-systest/lib/ns_lib.robot | 25 +++++++++ robot-systest/lib/package_lib.robot | 55 +++++++++++++++++++ .../resources/k8s_03-simple_k8s_data.py | 10 ++-- .../testsuite/k8s_03-simple_k8s.robot | 23 +++++++- 5 files changed, 107 insertions(+), 8 deletions(-) create mode 100644 robot-systest/lib/package_lib.robot diff --git a/robot-systest/lib/k8scluster_lib.robot b/robot-systest/lib/k8scluster_lib.robot index 3896941..b663d52 100644 --- a/robot-systest/lib/k8scluster_lib.robot +++ b/robot-systest/lib/k8scluster_lib.robot @@ -14,7 +14,7 @@ *** Variables *** ${success_return_code} 0 -${k8scluster_launch_max_wait_time} 2min +${k8scluster_launch_max_wait_time} 5min ${k8scluster_launch_pol_time} 30sec ${k8scluster_delete_max_wait_time} 2min ${k8scluster_delete_pol_time} 15sec diff --git a/robot-systest/lib/ns_lib.robot b/robot-systest/lib/ns_lib.robot index b1db909..b3c912f 100644 --- a/robot-systest/lib/ns_lib.robot +++ b/robot-systest/lib/ns_lib.robot @@ -152,6 +152,31 @@ Execute NS Action [Return] ${stdout} +Execute NS K8s Action + [Documentation] Execute an action over the desired K8s NS. + ... Parameters are given to this function in key=value format (one argument per key/value pair). + ... Return the ID of the operation associated to the executed action. + ... Examples of execution: + ... \${ns_op_id}= Execute NS Action \${ns_name} \${ns_action} \${vnf_member_index} + ... \${ns_op_id}= Execute NS Action \${ns_name} \${ns_action} \${vnf_member_index} \${param1}=\${value1} \${param2}=\${value2} + + [Arguments] ${ns_name} ${ns_action} ${vnf_member_index} ${kdu_name} @{action_params} + + ${params}= Set Variable ${EMPTY} + FOR ${param} IN @{action_params} + ${match} ${param_name} ${param_value} = Should Match Regexp ${param} (.+)=(.+) msg=Syntax error in parameters + ${params}= Catenate SEPARATOR= ${params} "${param_name}":"${param_value}", + END + ${osm_ns_action_command}= Set Variable osm ns-action --action_name ${ns_action} --vnf_name ${vnf_member_index} --kdu_name ${kdu_name} + ${osm_ns_action_command}= Run Keyword If '${params}'!='${EMPTY}' Catenate ${osm_ns_action_command} --params '{${params}}' + ... ELSE Set Variable ${osm_ns_action_command} + ${osm_ns_action_command}= Catenate ${osm_ns_action_command} ${ns_name} + ${rc} ${stdout}= Run and Return RC and Output ${osm_ns_action_command} + Should Be Equal As Integers ${rc} ${success_return_code} msg=${stdout} values=False + Wait Until Keyword Succeeds ${ns_action_max_wait_time} ${ns_action_pol_time} Check For NS Operation Completed ${stdout} + [Return] ${stdout} + + Execute Manual VNF Scale [Documentation] Execute a manual VNF Scale action. ... The parameter 'scale_type' must be SCALE_IN or SCALE_OUT. diff --git a/robot-systest/lib/package_lib.robot b/robot-systest/lib/package_lib.robot new file mode 100644 index 0000000..7b3cad2 --- /dev/null +++ b/robot-systest/lib/package_lib.robot @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- + +## +# Copyright 2019 Tech Mahindra Limited +# +# All Rights Reserved. +# +# 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. +## + +## Change log: +# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-sep-2019 +## + +*** Settings *** +Library String + + +*** Variables *** +${success_return_code} 0 +${delete_max_wait_time} 1min +${delete_pol_time} 15sec + + +*** Keywords *** +Upload Package + [Documentation] Onboards ("creates") a NF Package into OSM. + ... - Parameters: + ... - pkg: Name (and location) of the NF Package + + [Arguments] ${pkg} + + # Proceedes with the onboarding with the appropriate arguments + ${rc} ${stdout}= Run and Return RC and Output tar -czf ${pkg}.tar.gz -C ${pkg} . + ${rc} ${stdout}= Run and Return RC and Output osm upload-package ${pkg}.tar.gz + log ${stdout} + Should Be Equal As Integers ${rc} ${success_return_code} + [Return] ${stdout} + + +Delete Package + [Arguments] ${pkg} + + # Proceedes with the onboarding with the appropriate arguments + ${rc} ${stdout}= Run and Return RC and Output rm ${pkg}.tar.gz diff --git a/robot-systest/resources/k8s_03-simple_k8s_data.py b/robot-systest/resources/k8s_03-simple_k8s_data.py index f4f99bf..b544eef 100644 --- a/robot-systest/resources/k8s_03-simple_k8s_data.py +++ b/robot-systest/resources/k8s_03-simple_k8s_data.py @@ -18,13 +18,13 @@ home = str(Path.home()) k8scluster_name = 'k8s-test' k8scluster_version = 'v1' # NS and VNF descriptor package files -vnfd_pkg = 'hackfest_simple_k8s_vnf' -nsd_pkg = 'hackfest_simple_k8s_ns' +vnfd_pkg = 'charm-packages/native_k8s_charm_vnf' +nsd_pkg = 'charm-packages/native_k8s_charm_ns' # NS and VNF descriptor package files -vnfd_name = 'hackfest-simple-k8s-vnf' -nsd_name = 'hackfest-simple-k8s-ns' +vnfd_name = 'native_k8s_charm-vnf' +nsd_name = 'native_k8s_charm-ns' # NS instance name -ns_name = 'simple-k8s' +ns_name = 'native-k8s' # SSH keys to be used publickey = home + '/.ssh/id_rsa.pub' privatekey = home + '/.ssh/id_rsa' diff --git a/robot-systest/testsuite/k8s_03-simple_k8s.robot b/robot-systest/testsuite/k8s_03-simple_k8s.robot index f0aa94d..081219d 100644 --- a/robot-systest/testsuite/k8s_03-simple_k8s.robot +++ b/robot-systest/testsuite/k8s_03-simple_k8s.robot @@ -21,6 +21,7 @@ Library Process 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/package_lib.robot Resource %{ROBOT_DEVOPS_FOLDER}/lib/connectivity_lib.robot Resource %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot Resource %{ROBOT_DEVOPS_FOLDER}/lib/k8scluster_lib.robot @@ -34,15 +35,20 @@ Suite Teardown Run Keyword And Ignore Error Test Cleanup ${ns_id} ${EMPTY} ${ns_config} {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] } ${publickey} ${EMPTY} +${vnf_member_index} native_k8s_charm-vnf +${action_name} changecontent +${kdu_name} native-kdu +${application_name} nginx +${customtitle} Day 2 Action *** Test Cases *** Create Simple K8s VNF Descriptor [Tags] simple_k8s charm sanity regression - Create VNFD '%{PACKAGES_FOLDER}/${vnfd_pkg}' + Upload Package '%{PACKAGES_FOLDER}/${vnfd_pkg}' Create Simple K8s Descriptor [Tags] simple_k8s charm sanity regression - Create NSD '%{PACKAGES_FOLDER}/${nsd_pkg}' + Upload Package '%{PACKAGES_FOLDER}/${nsd_pkg}' Add K8s Cluster To OSM [Tags] simple_k8s charm sanity regression @@ -53,6 +59,14 @@ Network Service K8s Instance Test ${id}= Create Network Service ${nsd_name} %{VIM_TARGET} ${ns_name} ${ns_config} ${publickey} Set Suite Variable ${ns_id} ${id} +Execute Day 2 Operations + [Documentation] Performs one Day 2 operation per VNF that creates a new file. + [Tags] simple_k8s charm sanity regression + + Variable Should Exist ${ns_id} msg=Network service instance is not available + ${ns_op_id}= Execute NS K8s Action ${ns_name} ${action_name} ${vnf_member_index} ${kdu_name} application-name=${application_name} customtitle=${customtitle} + + Delete NS K8s Instance Test [Tags] simple_k8s charm sanity regression cleanup Delete NS ${ns_name} @@ -69,6 +83,11 @@ Delete VNF Descriptor Test [Tags] simple_k8s charm sanity regression cleanup Delete VNFD ${vnfd_name} +Delete VNF NS Packages + [Tags] simple_k8s charm sanity regression cleanup + Delete Package '%{PACKAGES_FOLDER}/${vnfd_pkg}' + Delete Package '%{PACKAGES_FOLDER}/${nsd_pkg}' + *** Keywords *** Test Cleanup -- 2.25.1