[VOL-2282]
Run robot tests with Python 3
- Remove HTTP and database robot libraries that aren't used
- Make robot lint treat warnings as errors
- Reformat robot tests to pass lint, and other minor fixes
- Lint/reformat of python code
- Add yaml and json linting
- Clean up Makefile
- Assume the KUBECONFIG and VOLTCONFIG env vars are defined
Change-Id: Ibf0a6b525802ed907efc38b34c8e3b99b2044bf1
diff --git a/libraries/utils.robot b/libraries/utils.robot
index c235383..a4ad0f4 100644
--- a/libraries/utils.robot
+++ b/libraries/utils.robot
@@ -11,13 +11,11 @@
# 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.
-
# robot test functions
*** Settings ***
Documentation Library for various utilities
Library SSHLibrary
-Library HttpLibrary.HTTP
Library String
Library DateTime
Library Process
@@ -29,26 +27,26 @@
Check CLI Tools Configured
[Documentation] Tests that use 'voltctl' and 'kubectl' should execute this keyword in suite setup
# check voltctl and kubectl configured
- ${voltctl_rc}= Run And Return RC ${VOLTCTL_CONFIG}; voltctl device list
- ${kubectl_rc}= Run And Return RC ${KUBECTL_CONFIG}; kubectl get pods
+ ${voltctl_rc}= Run And Return RC voltctl device list
+ ${kubectl_rc}= Run And Return RC kubectl get pods
Run Keyword If ${voltctl_rc} != 0 or ${kubectl_rc} != 0 FATAL ERROR
... VOLTCTL and KUBECTL not configured. Please configure before executing tests.
Send File To Onos
- [Documentation] Send the content of the file to Onos to selected section of configuration using Post Request
- [Arguments] ${CONFIG_FILE} ${section}
- ${Headers}= Create Dictionary Content-Type application/json
- ${File_Data}= Get Binary File ${CONFIG_FILE}
- Log ${Headers}
- Log ${File_Data}
- ${resp}= Post Request ONOS /onos/v1/network/configuration/${section} headers=${Headers} data=${File_Data}
- Should Be Equal As Strings ${resp.status_code} 200
+ [Documentation] Send the content of the file to Onos to selected section of configuration
+ ... using Post Request
+ [Arguments] ${CONFIG_FILE} ${section}
+ ${Headers}= Create Dictionary Content-Type application/json
+ ${File_Data}= OperatingSystem.Get File ${CONFIG_FILE}
+ Log ${Headers}
+ Log ${File_Data}
+ ${resp}= Post Request ONOS
+ ... /onos/v1/network/configuration/${section} headers=${Headers} data=${File_Data}
+ Should Be Equal As Strings ${resp.status_code} 200
Common Test Suite Setup
[Documentation] Setup the test suite
# BBSim sanity test doesn't need these imports from other repositories
- Run Keyword If ${external_libs} Import Library
- ... ${CURDIR}/../../voltha/tests/atests/common/testCaseUtils.py
Run Keyword If ${external_libs} Import Resource
... ${CURDIR}/../../cord-tester/src/test/cord-api/Framework/Subscriber.robot
Run Keyword If ${external_libs} Import Resource
@@ -59,7 +57,6 @@
... ${CURDIR}/../../cord-tester/src/test/cord-api/Framework/Kubernetes.robot
Set Global Variable ${KUBECTL_CONFIG} export KUBECONFIG=%{KUBECONFIG}
Set Global Variable ${VOLTCTL_CONFIG} export VOLTCONFIG=%{VOLTCONFIG}
- Set Global Variable ${export_kubeconfig} export KUBECONFIG=%{KUBECONFIG}
${k8s_node_ip}= Evaluate ${nodes}[0].get("ip")
${k8s_node_user}= Evaluate ${nodes}[0].get("user")
${k8s_node_pass}= Evaluate ${nodes}[0].get("pass")
@@ -75,7 +72,7 @@
${num_onus}= Convert to String ${num_onus}
#send sadis file to onos
${sadis_file}= Get Variable Value ${sadis.file}
- Log To Console \nSadis File:${sadis_file}
+ Log To Console \nSadis File:${sadis_file}
Run Keyword Unless '${sadis_file}' is '${None}' Send File To Onos ${sadis_file} apps/
Set Suite Variable ${num_onus}
Set Suite Variable ${olt_serial_number}
@@ -92,45 +89,56 @@
Set Suite Variable ${datetime}
WPA Reassociate
- [Arguments] ${iface} ${ip} ${user} ${pass}=${None} ${container_type}=${None} ${container_name}=${None}
[Documentation] Executes a particular wpa_cli reassociate, which performs force reassociation
+ [Arguments] ${iface} ${ip} ${user} ${pass}=${None}
+ ... ${container_type}=${None} ${container_name}=${None}
#Below for loops are used instead of sleep time, to execute reassociate command and check status
- : FOR ${i} IN RANGE 70
- \ ${output}= Login And Run Command On Remote System wpa_cli -i ${iface} reassociate ${ip} ${user}
- ... ${pass} ${container_type} ${container_name}
- \ ${passed}= Run Keyword And Return Status Should Contain ${output} OK
- \ Run Keyword If ${passed} Exit For Loop
- : FOR ${i} IN RANGE 70
- \ ${output}= Login And Run Command On Remote System wpa_cli status | grep SUCCESS ${ip} ${user}
- ... ${pass} ${container_type} ${container_name}
- \ ${passed}= Run Keyword And Return Status Should Contain ${output} SUCCESS
- \ Run Keyword If ${passed} Exit For Loop
-
+ FOR ${i} IN RANGE 70
+ ${output}= Login And Run Command On Remote System
+ ... wpa_cli -i ${iface} reassociate ${ip} ${user}
+ ... ${pass} ${container_type} ${container_name}
+ ${passed}= Run Keyword And Return Status Should Contain ${output} OK
+ Run Keyword If ${passed} Exit For Loop
+ END
+ FOR ${i} IN RANGE 70
+ ${output}= Login And Run Command On Remote System
+ ... wpa_cli status | grep SUCCESS ${ip} ${user}
+ ... ${pass} ${container_type} ${container_name}
+ ${passed}= Run Keyword And Return Status Should Contain ${output} SUCCESS
+ Run Keyword If ${passed} Exit For Loop
+ END
+
Validate Authentication After Reassociate
- [Arguments] ${auth_pass} ${iface} ${ip} ${user} ${pass}=${None} ${container_type}=${None} ${container_name}=${None}
- [Documentation] Executes a particular reassociate request on the RG using wpa_cli. auth_pass determines if authentication should pass
+ [Arguments] ${auth_pass} ${iface} ${ip} ${user} ${pass}=${None}
+ ... ${container_type}=${None} ${container_name}=${None}
+ [Documentation]
+ ... Executes a particular reassociate request on the RG using wpa_cli.
+ ... auth_pass determines if authentication should pass
WPA Reassociate ${iface} ${ip} ${user} ${pass} ${container_type} ${container_name}
- Run Keyword If '${auth_pass}' == 'True' Wait Until Keyword Succeeds ${timeout} 2s Check Remote File Contents
- ... True /tmp/wpa.log authentication completed successfully ${ip} ${user} ${pass}
- ... ${container_type} ${container_name}
+ Run Keyword If '${auth_pass}' == 'True' Wait Until Keyword Succeeds ${timeout} 2s
+ ... Check Remote File Contents True /tmp/wpa.log authentication completed successfully
+ ... ${ip} ${user} ${pass} ${container_type} ${container_name}
Run Keyword If '${auth_pass}' == 'False' Sleep 20s
- Run Keyword If '${auth_pass}' == 'False' Check Remote File Contents False /tmp/wpa.log
- ... authentication completed successfully ${ip} ${user} ${pass} ${container_type} ${container_name}
+ Run Keyword If '${auth_pass}' == 'False' Check Remote File Contents False /tmp/wpa.log
+ ... authentication completed successfully ${ip} ${user} ${pass}
+ ... ${container_type} ${container_name}
Send Dhclient Request To Release Assigned IP
- [Arguments] ${iface} ${ip} ${user} ${path_dhcpleasefile} ${pass}=${None} ${container_type}=${None}
- ... ${container_name}=${None}
+ [Arguments] ${iface} ${ip} ${user} ${path_dhcpleasefile} ${pass}=${None}
+ ... ${container_type}=${None} ${container_name}=${None}
[Documentation] Executes a dhclient with option to release ip against a particular interface on the RG (src)
- ${result}= Login And Run Command On Remote System dhclient -nw -r ${iface} && rm ${path_dhcpleasefile}/dhclient.* ${ip} ${user}
+ ${result}= Login And Run Command On Remote System
+ ... dhclient -nw -r ${iface} && rm ${path_dhcpleasefile}/dhclient.* ${ip} ${user}
... ${pass} ${container_type} ${container_name}
Log ${result}
#Should Contain ${result} DHCPRELEASE
[Return] ${result}
Check Remote File Contents For WPA Logs
- [Arguments] ${file_should_exist} ${file} ${pattern} ${ip} ${user} ${pass}=${None} ${container_type}=${None}
- ... ${container_name}=${None} ${prompt}=~$
+ [Arguments] ${file_should_exist} ${file} ${pattern} ${ip} ${user} ${pass}=${None}
+ ... ${container_type}=${None} ${container_name}=${None} ${prompt}=~$
[Documentation] Checks for particular pattern count in a file
- ${result}= Login And Run Command On Remote System cat ${file} | grep '${pattern}' | wc -l ${ip} ${user} ${pass}
+ ${result}= Login And Run Command On Remote System
+ ... cat ${file} | grep '${pattern}' | wc -l ${ip} ${user} ${pass}
... ${container_type} ${container_name} ${prompt}
[Return] ${result}