blob: 820515ab61b33ec4395f5433241ac2e036335cda [file] [log] [blame]
Hardik Windlassdd1a9a12021-02-23 15:34:50 +00001# Copyright 2021 - present Open Networking Foundation
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14# FIXME Can we use the same test against BBSim and Hardware?
15
16*** Settings ***
17Documentation Test Voltha Components Software Upgrade
18Suite Setup Setup Suite
19Test Setup Setup
20Test Teardown Teardown
21Suite Teardown Teardown Suite
22Library Collections
23Library String
24Library OperatingSystem
25Library XML
26Library RequestsLibrary
27Library ../../libraries/DependencyLibrary.py
28Resource ../../libraries/onos.robot
29Resource ../../libraries/voltctl.robot
30Resource ../../libraries/voltha.robot
31Resource ../../libraries/utils.robot
32Resource ../../libraries/k8s.robot
33Resource ../../variables/variables.robot
34Resource ../../libraries/power_switch.robot
35
36*** Variables ***
37${POD_NAME} flex-ocp-cord
38${KUBERNETES_CONF} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
39${KUBERNETES_CONFIGS_DIR} ~/pod-configs/kubernetes-configs
40#${KUBERNETES_CONFIGS_DIR} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
41${KUBERNETES_YAML} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.yml
42${HELM_CHARTS_DIR} ~/helm-charts
43${VOLTHA_POD_NUM} 8
44${NAMESPACE} voltha
45# For below variable value, using deployment name as using grep for
46# parsing radius pod name, we can also use full radius pod name
47${RESTART_POD_NAME} radius
48${timeout} 60s
49${of_id} 0
50${logical_id} 0
51${has_dataplane} True
52${teardown_device} False
53${scripts} ../../scripts
54
55# Per-test logging on failure is turned off by default; set this variable to enable
56${container_log_dir} ${None}
57
58${suppressaddsubscriber} True
59
Hardik Windlassd8ecbef2021-10-19 06:12:16 +000060# logging flag to enable Voltha Components Logging, can be passed via the command line too
61# example: -v logging:False
62${logging} True
63
Hardik Windlassdd1a9a12021-02-23 15:34:50 +000064# Voltha Components to Test for Software Upgrade need to be passed in the following variable in format:
Hardik Windlassdc2610f2021-03-09 07:33:51 +000065# <comp-label>,<comp-container>,<comp-image>*<comp-label>,<comp-container>,<comp-image>*
66# Example: adapter-open-olt,adapter-open-olt,voltha/voltha-openolt-adapter:3.1.3*
Hardik Windlassdd1a9a12021-02-23 15:34:50 +000067${voltha_comps_under_test} ${EMPTY}
68
69*** Test Cases ***
70Test Voltha Components Minor Version Upgrade
71 [Documentation] Validates the Voltha Components Minor Version Upgrade doesn't affect the system functionality
72 ... Performs the sanity and verifies all the ONUs are authenticated/DHCP/pingable
73 ... Requirement: Components to test needs to be passed in robot command variable 'voltha_comps_under_test' in the format:
Hardik Windlassdc2610f2021-03-09 07:33:51 +000074 ... <comp-label>,<comp-container>,<comp-image>*<comp-label>,<comp-container>,<comp-image>*
Hardik Windlassdd1a9a12021-02-23 15:34:50 +000075 ... Check [VOL-3843] for more details
76 [Tags] functional VolthaCompMinorVerUpgrade
77 [Setup] Start Logging VolthaCompMinorVerUpgrade
78 [Teardown] Run Keywords Collect Logs
79 ... AND Stop Logging VolthaCompMinorVerUpgrade
80 ... AND Delete All Devices and Verify
81 # Add OLT device
82 Setup
83 # Performing Sanity Test to make sure subscribers are all DHCP and pingable
84 Run Keyword If ${has_dataplane} Clean Up Linux
85 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
86 ${podStatusOutput}= Run kubectl get pods -n ${NAMESPACE}
87 Log ${podStatusOutput}
88 ${countBeforeUpgrade}= Run kubectl get pods -n ${NAMESPACE} | grep Running | wc -l
89 ${num_comps_under_test}= Get Length ${list_voltha_comps_under_test}
90 FOR ${I} IN RANGE 0 ${num_comps_under_test}
91 ${label}= Set Variable ${list_voltha_comps_under_test}[${I}][label]
92 ${container}= Set Variable ${list_voltha_comps_under_test}[${I}][container]
93 ${image}= Set Variable ${list_voltha_comps_under_test}[${I}][image]
Hardik Windlassdc2610f2021-03-09 07:33:51 +000094 ${pod_image} ${app_ver} ${helm_chart} Get Pod Image And App Version And Helm Chart By Label
95 ... ${NAMESPACE} app ${label}
96 Log ${label}: image, app ver & helm chart before upgrade: ${pod_image}, ${app_ver} & ${helm_chart}
Hardik Windlassdd1a9a12021-02-23 15:34:50 +000097 ${deployment}= Wait Until Keyword Succeeds ${timeout} 15s
98 ... Get K8s Deployment by Pod Label ${NAMESPACE} app ${label}
99 Wait Until Keyword Succeeds ${timeout} 15s Deploy Pod New Image ${NAMESPACE} ${deployment}
100 ... ${container} ${image}
101 Wait Until Keyword Succeeds ${timeout} 3s Validate Pods Status By Label ${NAMESPACE}
102 ... app ${label} Running
103 Wait Until Keyword Succeeds ${timeout} 3s Pods Are Ready By Label ${NAMESPACE} app ${label}
104 Wait Until Keyword Succeeds ${timeout} 3s Verify Pod Image ${NAMESPACE} app ${label} ${image}
Hardik Windlassdc2610f2021-03-09 07:33:51 +0000105 ${pod_image_1} ${app_ver_1} ${helm_chart_1} Get Pod Image And App Version And Helm Chart By Label
106 ... ${NAMESPACE} app ${label}
107 Log ${label}: image, app ver & helm chart after upgrade: ${pod_image_1}, ${app_ver_1} & ${helm_chart_1}
Matteo Scandolo2769d2b2021-04-14 10:29:24 -0700108 Restart VOLTHA Port Forward voltha-api
Hardik Windlassdd1a9a12021-02-23 15:34:50 +0000109 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test ${suppressaddsubscriber}
110 END
111 ${podStatusOutput}= Run kubectl get pods -n ${NAMESPACE}
112 Log ${podStatusOutput}
113 ${countAfterUpgrade}= Run kubectl get pods -n ${NAMESPACE} | grep Running | wc -l
114 Should Be Equal As Strings ${countAfterUpgrade} ${countBeforeUpgrade}
115 # Additional Verification
116 Wait Until Keyword Succeeds ${timeout} 2s Delete All Devices and Verify
117 Setup
118 Run Keyword If ${has_dataplane} Clean Up Linux
119 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
120
121*** Keywords ***
122Setup Suite
123 [Documentation] Set up the test suite
124 Common Test Suite Setup
125 Create Voltha Comp Under Test List
126
127Teardown Suite
128 [Documentation] Tear down steps for the suite
129 Run Keyword If ${has_dataplane} Clean Up Linux
TorstenThieme4e2168e2021-06-22 14:01:47 +0000130 Close All ONOS SSH Connections
Hardik Windlassdd1a9a12021-02-23 15:34:50 +0000131
132Create Voltha Comp Under Test List
133 [Documentation] Creates a list of Voltha Components to Test from the input variable string
134 ... The input string is expected to be in format:
Hardik Windlassdc2610f2021-03-09 07:33:51 +0000135 ... <comp-label>,<comp-container>,<comp-image>*<comp-label>,<comp-container>,<comp-image>*
Hardik Windlassdd1a9a12021-02-23 15:34:50 +0000136 ${list_voltha_comps_under_test} Create List
137 @{comps_under_test_arr}= Split String ${voltha_comps_under_test} *
138 ${num_comps_under_test}= Get Length ${comps_under_test_arr}
Hardik Windlassdc2610f2021-03-09 07:33:51 +0000139 FOR ${I} IN RANGE 0 ${num_comps_under_test}-1
Hardik Windlassdd1a9a12021-02-23 15:34:50 +0000140 @{comp_under_test_arr}= Split String ${comps_under_test_arr[${I}]} ,
141 ${label}= Set Variable ${comp_under_test_arr[0]}
142 ${container}= Set Variable ${comp_under_test_arr[1]}
143 ${image}= Set Variable ${comp_under_test_arr[2]}
144 ${comp_under_test} Create Dictionary label ${label} container ${container} image ${image}
145 Append To List ${list_voltha_comps_under_test} ${comp_under_test}
146 END
Hardik Windlassdc2610f2021-03-09 07:33:51 +0000147 Log ${list_voltha_comps_under_test}
Hardik Windlassdd1a9a12021-02-23 15:34:50 +0000148 Set Suite Variable ${list_voltha_comps_under_test}