blob: d5fd158d7b8335d733b585b8a2e8c3c57559a7af [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
15*** Settings ***
16Documentation Test ONOS Apps Software Upgrade
17Suite Setup Setup Suite
18Test Setup Setup
19Test Teardown Teardown
20Suite Teardown Teardown Suite
21Library Collections
22Library String
23Library OperatingSystem
24Library XML
25Library RequestsLibrary
26Library ../../libraries/DependencyLibrary.py
27Resource ../../libraries/onos.robot
28Resource ../../libraries/voltctl.robot
29Resource ../../libraries/voltha.robot
30Resource ../../libraries/utils.robot
31Resource ../../libraries/k8s.robot
32Resource ../../variables/variables.robot
33Resource ../../libraries/power_switch.robot
34
35*** Variables ***
36${POD_NAME} flex-ocp-cord
37${KUBERNETES_CONF} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
38${KUBERNETES_CONFIGS_DIR} ~/pod-configs/kubernetes-configs
39#${KUBERNETES_CONFIGS_DIR} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
40${KUBERNETES_YAML} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.yml
41${HELM_CHARTS_DIR} ~/helm-charts
42${VOLTHA_POD_NUM} 8
43${NAMESPACE} voltha
Hardik Windlass4288c6a2021-09-28 07:22:06 +000044${INFRA_NAMESPACE} default
Hardik Windlassdd1a9a12021-02-23 15:34:50 +000045# 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${uprate} 0
52${dnrate} 0
53${has_dataplane} True
54${teardown_device} False
55${scripts} ../../scripts
56
57# Per-test logging on failure is turned off by default; set this variable to enable
58${container_log_dir} ${None}
59
Matteo Scandoloda1c64b2021-07-20 10:14:49 -070060# logging flag to enable Collect Logs, 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# ONOS Apps to Test for Software Upgrade need to be passed in the following variable in format:
Hardik Windlassdc2610f2021-03-09 07:33:51 +000065# <app-name>,<version>,<oar-url>*<app-name>,<version>,<oar-url>*
Hardik Windlassdd1a9a12021-02-23 15:34:50 +000066# Example: org.opencord.aaa,2.3.0.SNAPSHOT,
Hardik Windlassdc2610f2021-03-09 07:33:51 +000067# https://oss.sonatype.org/content/groups/public/org/opencord/aaa-app/2.3.0-SNAPSHOT/aaa-app-2.3.0-20201210.223737-1.oar*
Hardik Windlassdd1a9a12021-02-23 15:34:50 +000068${onos_apps_under_test} ${EMPTY}
69
70*** Test Cases ***
71Test ONOS App Minor Version Upgrade
72 [Documentation] Validates the ONOS App Minor Version Upgrade doesn't affect the system functionality
73 ... Performs the sanity and verifies all the ONUs are authenticated/DHCP/pingable
74 ... Requirement: Apps to test needs to be passed in robot command variable 'onos_apps_under_test' in the format:
Hardik Windlassdc2610f2021-03-09 07:33:51 +000075 ... <app-name>,<version>,<oar-url>*<app-name>,<version>,<oar-url>*
Hardik Windlassdd1a9a12021-02-23 15:34:50 +000076 ... Check [VOL-3844] for more details
77 [Tags] functional ONOSAppMinorVerUpgrade
78 [Setup] Run Keywords Start Logging ONOSAppMinorVerUpgrade
79 ... AND Setup
80 [Teardown] Run Keywords Collect Logs
81 ... AND Stop Logging ONOSAppMinorVerUpgrade
82 ... AND Delete All Devices and Verify
83 Run Keyword If ${has_dataplane} Clean Up Linux
84 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
85 ${onos_url}= Set Variable http://karaf:karaf@${ONOS_REST_IP}:${ONOS_REST_PORT}
86 ${num_apps_under_test}= Get Length ${list_onos_apps_under_test}
Hardik Windlassf7a7b1e2021-03-16 07:55:20 +000087 # Set log level to DEBUG for all apps under test
88 FOR ${J} IN RANGE 0 ${num_apps_under_test}
89 ${app_ut}= Set Variable ${list_onos_apps_under_test}[${J}][app]
90 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
TorstenThieme731a7592021-07-01 14:26:54 +000091 ... Execute ONOS CLI Command use single connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
Hardik Windlassf7a7b1e2021-03-16 07:55:20 +000092 ... log:set DEBUG ${app_ut}
93 END
Hardik Windlassdd1a9a12021-02-23 15:34:50 +000094 FOR ${I} IN RANGE 0 ${num_apps_under_test}
95 ${app}= Set Variable ${list_onos_apps_under_test}[${I}][app]
96 ${version}= Set Variable ${list_onos_apps_under_test}[${I}][version]
97 ${url}= Set Variable ${list_onos_apps_under_test}[${I}][url]
98 ${oar_file}= Set Variable ${CURDIR}/../../tests/data/onos-files/${app}-${version}.oar
99 Download App OAR File ${url} ${oar_file}
Hardik Windlassdc2610f2021-03-09 07:33:51 +0000100 ${app_details} Get ONOS App Details ${onos_url} ${app}
101 Log ${app}: before upgrade: ${app_details}
Hardik Windlassdd1a9a12021-02-23 15:34:50 +0000102 Delete ONOS App ${onos_url} ${app}
Andrea Campanella01d40cb2021-03-24 20:19:58 +0100103 Sleep 10s
Hardik Windlassdd1a9a12021-02-23 15:34:50 +0000104 Verify ONOS Apps Active Except App Under Test ${onos_url} ${app}
105 Install And Activate ONOS App ${onos_url} ${oar_file}
106 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
107 ... Verify ONOS App Active ${onos_url} ${app} ${version}
Hardik Windlassdc2610f2021-03-09 07:33:51 +0000108 ${app_details_1} Get ONOS App Details ${onos_url} ${app}
109 Log ${app}: after upgrade: ${app_details_1}
Hardik Windlassdd1a9a12021-02-23 15:34:50 +0000110 Verify ONOS Pod Restart False
111 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test True
112 END
113 # Additional Verification
114 Wait Until Keyword Succeeds ${timeout} 2s Delete All Devices and Verify
115 Setup
116 Run Keyword If ${has_dataplane} Clean Up Linux
117 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
118
119*** Keywords ***
120Setup Suite
121 [Documentation] Set up the test suite
122 Common Test Suite Setup
123 Create ONOS Apps Under Test List
Hardik Windlassf7a7b1e2021-03-16 07:55:20 +0000124
125Teardown Suite
126 [Documentation] Replaces the Suite Teardown in utils.robot.
127 ... Cleans up and checks all ONU ports disabled in ONOS.
128 Close All ONOS SSH Connections
Hardik Windlassdd1a9a12021-02-23 15:34:50 +0000129
130Verify ONOS Apps Active Except App Under Test
131 [Documentation] Verifies all the apps defined in input yaml are active except for the app under test
132 [Arguments] ${onos_url} ${app_under_test}
133 ${num_onos_apps}= Get Length ${onos_apps}
134 FOR ${I} IN RANGE 0 ${num_onos_apps}
135 Continue For Loop If '${app_under_test}'=='${onos_apps}[${I}]'
136 Verify ONOS App Active ${onos_url} ${onos_apps}[${I}]
137 END
138
139Download App OAR File
140 [Documentation] This keyword downloads the app oar file from the given url to the specified location
141 [Arguments] ${oar_url} ${oar_file}
Matteo Scandolo2769d2b2021-04-14 10:29:24 -0700142 ${rc} Run And Return Rc curl --fail -sSL ${oar_url} > ${oar_file}
143 Should Be Equal As Integers ${rc} 0 Can't download ONOS app from ${oar_url}
Hardik Windlassdd1a9a12021-02-23 15:34:50 +0000144
145Create ONOS Apps Under Test List
146 [Documentation] Creates a list of ONOS Apps to Test from the input variable string
147 ... The input string is expected to be in format:
Hardik Windlassdc2610f2021-03-09 07:33:51 +0000148 ... <app-name>,<version>,<oar-url>*<app-name>,<version>,<oar-url>*
Hardik Windlassdd1a9a12021-02-23 15:34:50 +0000149 ${list_onos_apps_under_test} Create List
150 @{apps_under_test_arr}= Split String ${onos_apps_under_test} *
151 ${num_apps_under_test}= Get Length ${apps_under_test_arr}
Hardik Windlassdc2610f2021-03-09 07:33:51 +0000152 FOR ${I} IN RANGE 0 ${num_apps_under_test}-1
Hardik Windlassdd1a9a12021-02-23 15:34:50 +0000153 @{app_under_test_arr}= Split String ${apps_under_test_arr[${I}]} ,
154 ${app}= Set Variable ${app_under_test_arr[0]}
155 ${version}= Set Variable ${app_under_test_arr[1]}
156 ${url}= Set Variable ${app_under_test_arr[2]}
157 ${app_under_test} Create Dictionary app ${app} version ${version} url ${url}
158 Append To List ${list_onos_apps_under_test} ${app_under_test}
159 END
Hardik Windlassdc2610f2021-03-09 07:33:51 +0000160 Log ${list_onos_apps_under_test}
Hardik Windlassdd1a9a12021-02-23 15:34:50 +0000161 Set Suite Variable ${list_onos_apps_under_test}