[VOL-4320] OpenOnuAdapter sw-upgrade extend test suite by further (abort) tests
Change-Id: I23a78bc66bcfeb3b5d1c194ca117c2b1192a3c40
diff --git a/Makefile b/Makefile
index ef68b1e..9302a06 100755
--- a/Makefile
+++ b/Makefile
@@ -535,6 +535,13 @@
onu-upgrade-test: ROBOT_CONFIG_FILE := $(ROBOT_SW_UPGRADE_FILE)
onu-upgrade-test: software-upgrade-test
+# Requirement: Pass ONU image details in following parameters
+# image_version, image_url, image_vendor, image_activate_on_success, image_commit_on_success, image_crc
+onu-upgrade-test-multiolt-kind-att: ROBOT_MISC_ARGS += -e notready -i functionalMultipleONUs
+onu-upgrade-test-multiolt-kind-att: ROBOT_FILE := ONU_Upgrade.robot
+onu-upgrade-test-multiolt-kind-att: ROBOT_CONFIG_FILE := $(ROBOT_SANITY_MULTIPLE_OLT_FILE)
+onu-upgrade-test-multiolt-kind-att: software-upgrade-test
+
software-upgrade-test: vst_venv
source ./$</bin/activate ; set -u ;\
cd tests/software-upgrades ;\
diff --git a/libraries/bbsim.robot b/libraries/bbsim.robot
index 34d8a72..bc13d4d 100755
--- a/libraries/bbsim.robot
+++ b/libraries/bbsim.robot
@@ -106,3 +106,12 @@
... bbsimctl onu list | grep ${onu} | awk '{print $5}'
Should Be Equal as Integers ${rc} 0
Should Be Equal ${res} ${internal_state}
+
+Get Images Count
+ [Documentation] Validates the state of ONU in case of Image Upgrade
+ [Arguments] ${webserver_port}=50074
+ ${rc} ${output}= Run and Return Rc and Output curl localhost:${webserver_port}/images-count 2>/dev/null
+ Should Be Equal as Integers ${rc} 0 Could not access images-count of bbsim
+ ${value}= Fetch From Right ${output} :
+ ${count}= Fetch From Left ${value} }
+ [Return] ${count}
diff --git a/libraries/voltctl.robot b/libraries/voltctl.robot
index 2814990..c9f5ca3 100755
--- a/libraries/voltctl.robot
+++ b/libraries/voltctl.robot
@@ -741,6 +741,18 @@
... Append To List ${serial_numbers} ${onu_sn}
END
+Build ONU Device Id List
+ [Arguments] ${device_ids} ${olt_serial_number}=${EMPTY} ${num_onus}=${num_all_onus}
+ [Documentation] Appends all ONU Device IDs for the given OLT to the ${serial_numbers} list
+ FOR ${INDEX} IN RANGE 0 ${num_onus}
+ ${onu_device_id}= Get Device ID From SN ${hosts.src[${INDEX}]['onu']}
+ # skip if we have already append this ONU
+ ${onu_id}= Get Index From List ${device_ids} ${onu_device_id}
+ Continue For Loop If -1 != ${onu_id}
+ Run Keyword IF "${olt_serial_number}"=="${hosts.src[${INDEX}].olt}" or "${olt_serial_number}"=="${EMPTY}"
+ ... Append To List ${device_ids} ${onu_device_id}
+ END
+
Get SN From Device ID
[Arguments] ${device_id}
[Documentation] Gets the device id by matching for ${device_id}
@@ -871,25 +883,26 @@
[Arguments] ${data} ${image_version} ${dev_id} ${download_state} ${expected_reason} ${image_status}
${jsondata}= To Json ${data}
${length}= Get Length ${jsondata}
- Should Be Equal As Integers ${length} 1 No record found for ${dev_id} to validate device image
- ${value}= Get From List ${jsondata} 0
- Log ${value}
- ${deviceId}= Get From Dictionary ${value} deviceId
- Should Be Equal '${deviceId}' '${dev_id}' No match found for ${dev_id} to validate device image
- ... values=False
- ${imageState}= Get From Dictionary ${value} imageState
- ${version}= Get From Dictionary ${imageState} version
- ${dwlState}= Get From Dictionary ${imageState} downloadState
- ${reason}= Get From Dictionary ${imageState} reason
- ${imgStatus}= Get From Dictionary ${imageState} imageState
- Should Be Equal '${version}' '${image_version}' Device ${dev_id}: '${version}' != '${image_version}'
- ... values=False
- Should Be Equal '${dwlState}' '${download_state}' Device ${dev_id}: '${dwlState}' != '${download_state}'
- ... values=False
- Should Be Equal '${reason}' '${expected_reason}' Device ${dev_id}: '${reason}' != '${expected_reason}'
- ... values=False
- Should Be Equal '${imgStatus}' '${image_status}' Device ${dev_id}: '${imgStatus}' != '${image_status}'
- ... values=False
+ Should Not Be Equal As Integers ${length} 0 No record to validate device image
+ FOR ${J} IN RANGE 0 ${length}
+ ${value}= Get From List ${jsondata} ${J}
+ Log ${value}
+ ${deviceId}= Get From Dictionary ${value} deviceId
+ Should Contain ${dev_id} ${deviceId} No match found for ${deviceId} to validate device image!
+ ${imageState}= Get From Dictionary ${value} imageState
+ ${version}= Get From Dictionary ${imageState} version
+ ${dwlState}= Get From Dictionary ${imageState} downloadState
+ ${reason}= Get From Dictionary ${imageState} reason
+ ${imgStatus}= Get From Dictionary ${imageState} imageState
+ Should Be Equal '${version}' '${image_version}' Device ${dev_id}: '${version}' != '${image_version}'
+ ... values=False
+ Should Be Equal '${dwlState}' '${download_state}' Device ${dev_id}: '${dwlState}' != '${download_state}'
+ ... values=False
+ Should Be Equal '${reason}' '${expected_reason}' Device ${dev_id}: '${reason}' != '${expected_reason}'
+ ... values=False
+ Should Be Equal '${imgStatus}' '${image_status}' Device ${dev_id}: '${imgStatus}' != '${image_status}'
+ ... values=False
+ END
Download ONU Device Image
[Documentation] Downloads the given ONU software image
@@ -935,6 +948,14 @@
... voltctl -c ${VOLTCTL_CONFIG} device onuimage abort ${ver} ${id} -o json
Log ${output}
+Remove Adapter Image from ONUs
+ [Documentation] Aborts the upgrade processing for a given ONU software image and thus removes the image from adapter
+ ... for the passed ONUs
+ [Arguments] ${ver} ${onu_id_list}
+ FOR ${onu_device_id} IN @{onu_id_list}
+ Remove Adapter Image ${ver} ${onu_device_id}
+ END
+
Verify ONU Device Image Status
[Documentation] Verfies the ONU device image state
[Arguments] ${image_version} ${dev_id} ${download_state} ${expected_reason} ${image_state}
diff --git a/tests/software-upgrades/ONU_Upgrade.robot b/tests/software-upgrades/ONU_Upgrade.robot
index 28d5a0b..0f98522 100755
--- a/tests/software-upgrades/ONU_Upgrade.robot
+++ b/tests/software-upgrades/ONU_Upgrade.robot
@@ -76,6 +76,20 @@
${image_crc} ${EMPTY}
# Example value: 0
+# when voltha is running in k8s port forwarding is needed
+# example: -v PORT_FORWARDING:False
+${PORT_FORWARDING} True
+
+# Next values are default values for port forward, do not need to be passed, will be overwritten by values taken from image-url
+# bbsim webserver port
+# example: -v BBSIM_WEBSERVER_PORT:50074
+${BBSIM_WEBSERVER_PORT} 50074
+# bbsim instance
+# example: -v BBSIM_INSTANCE:bbsim0
+${BBSIM_INSTANCE} bbsim0
+# port forward handle
+${portFwdHandle} None
+
*** Test Cases ***
Test ONU Upgrade
[Documentation] Validates the ONU Upgrade doesn't affect the system functionality
@@ -90,7 +104,7 @@
... AND Delete All Devices and Verify
... AND Restart And Check BBSIM ${NAMESPACE}
... AND Stop Logging ONUUpgrade
- Test ONU Upgrade All OLTs
+ Do ONU Upgrade All OLTs
Test ONU Upgrade All Activate and Commit Combinations
[Documentation] Validates the ONU Upgrade doesn't affect the system functionality by use all combinations of
@@ -112,7 +126,7 @@
${true_true}= Create Dictionary activate true commit true
${flag_list}= Create List ${false_false} ${true_false} ${false_true} ${true_true}
FOR ${item} IN @{flag_list}
- Test ONU Upgrade All OLTs ${item['activate']} ${item['commit']}
+ Do ONU Upgrade All OLTs ${item['activate']} ${item['commit']}
Delete All Devices and Verify
Restart And Check BBSIM ${NAMESPACE}
END
@@ -137,7 +151,7 @@
${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
${bbsim_rel}= Catenate SEPARATOR= bbsim ${J}
${bbsim_pod}= Get Pod Name By Label ${NAMESPACE} release ${bbsim_rel}
- Test ONU Upgrade Download Failure Per OLT ${bbsim_pod} ${olt_serial_number}
+ Do ONU Upgrade Download Failure Per OLT ${bbsim_pod} ${olt_serial_number}
... url=http://bbsim0:50074/images/wrong-image.img$
... dwl_dwlstate=DOWNLOAD_FAILED dwl_reason=INVALID_URL dwl_imgstate=IMAGE_UNKNOWN
... dwlstate=DOWNLOAD_UNKNOWN reason=NO_ERROR imgstate=IMAGE_UNKNOWN
@@ -169,7 +183,7 @@
${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
${bbsim_rel}= Catenate SEPARATOR= bbsim ${J}
${bbsim_pod}= Get Pod Name By Label ${NAMESPACE} release ${bbsim_rel}
- Test ONU Upgrade Download Failure Per OLT ${bbsim_pod} ${olt_serial_number}
+ Do ONU Upgrade Download Failure Per OLT ${bbsim_pod} ${olt_serial_number}
... dwlstate=DOWNLOAD_FAILED reason=CANCELLED_ON_ONU_STATE imgstate=IMAGE_UNKNOWN
List ONUs ${NAMESPACE} ${bbsim_pod}
END
@@ -179,17 +193,17 @@
Run Keyword If ${has_dataplane} Clean Up Linux
Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
-Test ONU Upgrade Correct Indication of Download Abort
- [Documentation] Validates the ONU Upgrade download abort will be indicated correctly and
+Test ONU Upgrade Correct Indication of Downloading Abort
+ [Documentation] Validates the ONU Upgrade downloading abort will be indicated correctly and
... doesn't affect the system functionality
... Performs the sanity and verifies all the ONUs are authenticated/DHCP/pingable
... Check [VOL-4318] for more details
- [Tags] functional ONUUpgradeDownloadAbort
- [Setup] Start Logging ONUUpgradeDownloadAbort
+ [Tags] functional ONUUpgradeDownloadingAbort
+ [Setup] Start Logging ONUUpgradeDownloadingAbort
[Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
... AND Delete All Devices and Verify
... AND Restart And Check BBSIM ${NAMESPACE}
- ... AND Stop Logging ONUUpgradeDownloadAbort
+ ... AND Stop Logging ONUUpgradeDownloadingAbort
# Add OLT device
Setup
# Performing Sanity Test to make sure subscribers are all DHCP and pingable
@@ -199,7 +213,7 @@
${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
${bbsim_rel}= Catenate SEPARATOR= bbsim ${J}
${bbsim_pod}= Get Pod Name By Label ${NAMESPACE} release ${bbsim_rel}
- Test ONU Upgrade Download Abort Per OLT ${bbsim_pod} ${olt_serial_number}
+ Do ONU Upgrade Downloading Abort Per OLT ${bbsim_pod} ${olt_serial_number}
List ONUs ${NAMESPACE} ${bbsim_pod}
END
# Additional Verification
@@ -208,17 +222,17 @@
Run Keyword If ${has_dataplane} Clean Up Linux
Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
-Test ONU Upgrade Correct Indication of Activate Abort
- [Documentation] Validates the ONU Upgrade activate abort will be indicated correctly and
+Test ONU Upgrade Correct Indication of Downloaded Abort
+ [Documentation] Validates the ONU Upgrade downloaded abort will be indicated correctly and
... doesn't affect the system functionality
... Performs the sanity and verifies all the ONUs are authenticated/DHCP/pingable
- ... Check [VOL-4319] for more details
- [Tags] functional ONUUpgradeActivateAbort
- [Setup] Start Logging ONUUpgradeActivateAbort
+ ... Check [VOL-4320] for more details
+ [Tags] functional ONUUpgradeDownloadedAbort
+ [Setup] Start Logging ONUUpgradeDownloadedAbort
[Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
... AND Delete All Devices and Verify
... AND Restart And Check BBSIM ${NAMESPACE}
- ... AND Stop Logging ONUUpgradeActivateAbort
+ ... AND Stop Logging ONUUpgradeDownloadedAbort
# Add OLT device
Setup
# Performing Sanity Test to make sure subscribers are all DHCP and pingable
@@ -228,7 +242,7 @@
${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
${bbsim_rel}= Catenate SEPARATOR= bbsim ${J}
${bbsim_pod}= Get Pod Name By Label ${NAMESPACE} release ${bbsim_rel}
- Test ONU Upgrade Activate Abort Per OLT ${bbsim_pod} ${olt_serial_number}
+ Do ONU Upgrade Downloaded Abort Per OLT ${bbsim_pod} ${olt_serial_number}
List ONUs ${NAMESPACE} ${bbsim_pod}
END
# Additional Verification
@@ -237,8 +251,180 @@
Run Keyword If ${has_dataplane} Clean Up Linux
Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
+Test ONU Upgrade Correct Indication of Activating Abort
+ [Documentation] Validates the ONU Upgrade activating abort will be indicated correctly and
+ ... doesn't affect the system functionality
+ ... Performs the sanity and verifies all the ONUs are authenticated/DHCP/pingable
+ ... Check [VOL-4319] for more details
+ [Tags] functional ONUUpgradeActivatingAbort
+ [Setup] Start Logging ONUUpgradeActivatingAbort
+ [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
+ ... AND Delete All Devices and Verify
+ ... AND Restart And Check BBSIM ${NAMESPACE}
+ ... AND Stop Logging ONUUpgradeActivatingAbort
+ # Add OLT device
+ Setup
+ # Performing Sanity Test to make sure subscribers are all DHCP and pingable
+ Run Keyword If ${has_dataplane} Clean Up Linux
+ Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
+ FOR ${J} IN RANGE 0 ${num_olts}
+ ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
+ ${bbsim_rel}= Catenate SEPARATOR= bbsim ${J}
+ ${bbsim_pod}= Get Pod Name By Label ${NAMESPACE} release ${bbsim_rel}
+ Do ONU Upgrade Activating Abort Per OLT ${bbsim_pod} ${olt_serial_number}
+ List ONUs ${NAMESPACE} ${bbsim_pod}
+ END
+ # Additional Verification
+ Wait Until Keyword Succeeds ${timeout} 2s Delete All Devices and Verify
+ Setup
+ Run Keyword If ${has_dataplane} Clean Up Linux
+ Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
+
+Test ONU Upgrade Correct Indication of Active Abort
+ [Documentation] Validates the ONU Upgrade active abort will be indicated correctly and
+ ... doesn't affect the system functionality
+ ... Performs the sanity and verifies all the ONUs are authenticated/DHCP/pingable
+ ... Check [VOL-4320] for more details
+ [Tags] functional ONUUpgradeActiveAbort
+ [Setup] Start Logging ONUUpgradeActiveAbort
+ [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
+ ... AND Delete All Devices and Verify
+ ... AND Restart And Check BBSIM ${NAMESPACE}
+ ... AND Stop Logging ONUUpgradeActiveAbort
+ # Add OLT device
+ Setup
+ # Performing Sanity Test to make sure subscribers are all DHCP and pingable
+ Run Keyword If ${has_dataplane} Clean Up Linux
+ Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
+ FOR ${J} IN RANGE 0 ${num_olts}
+ ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
+ ${bbsim_rel}= Catenate SEPARATOR= bbsim ${J}
+ ${bbsim_pod}= Get Pod Name By Label ${NAMESPACE} release ${bbsim_rel}
+ Do ONU Upgrade Active Abort Per OLT ${bbsim_pod} ${olt_serial_number}
+ List ONUs ${NAMESPACE} ${bbsim_pod}
+ END
+ # Additional Verification
+ Wait Until Keyword Succeeds ${timeout} 2s Delete All Devices and Verify
+ Setup
+ Run Keyword If ${has_dataplane} Clean Up Linux
+ Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
+
+Test ONU Upgrade Correct Indication of Committed Abort
+ [Documentation] Validates the ONU Upgrade committed abort will be indicated correctly and
+ ... doesn't affect the system functionality. Check BBSIM server transfer image counter after further download,
+ ... counter should be incremented.
+ ... Performs the sanity and verifies all the ONUs are authenticated/DHCP/pingable
+ ... Check [VOL-4320] for more details
+ [Tags] functional ONUUpgradeCommittedAbort
+ [Setup] Start Logging ONUUpgradeCommittedAbort
+ [Teardown] Run Keywords Run Keyword If ${portFwdHandle}!=None Terminate Process ${portFwdHandle} kill=true
+ ... AND Set Suite Variable ${portFwdHandle} None
+ ... AND Run Keyword If ${logging} Collect Logs
+ ... AND Delete All Devices and Verify
+ ... AND Restart And Check BBSIM ${NAMESPACE}
+ ... AND Stop Logging ONUUpgradeCommittedAbort
+ # Add OLT device
+ Setup
+ # Performing Sanity Test to make sure subscribers are all DHCP and pingable
+ Run Keyword If ${has_dataplane} Clean Up Linux
+ Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
+ # in case of bbsim is running in k8s port forwarding of WEBSERVER is needed
+ ${BBSIM_INSTANCE} ${BBSIM_WEBSERVER_PORT}= Run Keyword If '${image_url}'!='${EMPTY}' Get BBSIM Svc and Webserver Port
+ ${cmd} Catenate
+ ... kubectl port-forward --address 0.0.0.0 -n ${NAMESPACE} svc/${BBSIM_INSTANCE}
+ ... ${BBSIM_WEBSERVER_PORT}:${BBSIM_WEBSERVER_PORT} &
+ ${portFwdHandle}= Run Keyword If ${PORT_FORWARDING} Start Process ${cmd} shell=true
+ Set Suite Variable ${portFwdHandle}
+ Sleep 5s
+ FOR ${J} IN RANGE 0 ${num_olts}
+ ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
+ ${bbsim_rel}= Catenate SEPARATOR= bbsim ${J}
+ ${bbsim_pod}= Get Pod Name By Label ${NAMESPACE} release ${bbsim_rel}
+ Do ONU Upgrade Committed Abort Per OLT ${bbsim_pod} ${olt_serial_number}
+ List ONUs ${NAMESPACE} ${bbsim_pod}
+ END
+ # Additional Verification
+ Wait Until Keyword Succeeds ${timeout} 2s Delete All Devices and Verify
+ Setup
+ Run Keyword If ${has_dataplane} Clean Up Linux
+ Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
+
+Test ONU Upgrade Correct Indication Multiple Image Download
+ [Documentation] Validates the ONU Upgrade multiple Image Download will be indicated correctly,
+ ... In case of (re-) download the same image without aborting the cached one in openonu-adapter should taken,
+ ... no further download from server has executed. Check BBSIM server transfer image counter after further download,
+ ... counter should NOT be incremented.
+ ... Performs the sanity and verifies all the ONUs are authenticated/DHCP/pingable
+ ... Check [VOL-4320] for more details
+ [Tags] functional ONUUpgradeMultipleImageDownload
+ [Setup] Start Logging ONUUpgradeMultipleImageDownload
+ [Teardown] Run Keywords Run Keyword If ${portFwdHandle}!=None Terminate Process ${portFwdHandle} kill=true
+ ... AND Set Suite Variable ${portFwdHandle} None
+ ... AND Run Keyword If ${logging} Collect Logs
+ ... AND Delete All Devices and Verify
+ ... AND Restart And Check BBSIM ${NAMESPACE}
+ ... AND Stop Logging ONUUpgradeMultipleImageDownload
+ # Add OLT device
+ Setup
+ # Performing Sanity Test to make sure subscribers are all DHCP and pingable
+ Run Keyword If ${has_dataplane} Clean Up Linux
+ Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
+ # in case of bbsim is running in k8s port forwarding of WEBSERVER is needed
+ ${BBSIM_INSTANCE} ${BBSIM_WEBSERVER_PORT}= Run Keyword If '${image_url}'!='${EMPTY}' Get BBSIM Svc and Webserver Port
+ ${cmd} Catenate
+ ... kubectl port-forward --address 0.0.0.0 -n ${NAMESPACE} svc/${BBSIM_INSTANCE}
+ ... ${BBSIM_WEBSERVER_PORT}:${BBSIM_WEBSERVER_PORT} &
+ ${portFwdHandle}= Run Keyword If ${PORT_FORWARDING} Start Process ${cmd} shell=true
+ Set Suite Variable ${portFwdHandle}
+ Sleep 5s
+ FOR ${J} IN RANGE 0 ${num_olts}
+ ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
+ ${bbsim_rel}= Catenate SEPARATOR= bbsim ${J}
+ ${bbsim_pod}= Get Pod Name By Label ${NAMESPACE} release ${bbsim_rel}
+ Do ONU Upgrade Multiple Image Download Per OLT ${bbsim_pod} ${olt_serial_number}
+ List ONUs ${NAMESPACE} ${bbsim_pod}
+ END
+ # Additional Verification
+ Wait Until Keyword Succeeds ${timeout} 2s Delete All Devices and Verify
+ Setup
+ Run Keyword If ${has_dataplane} Clean Up Linux
+ Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
+
+Test ONU Upgrade Image Download Simultaneously
+ [Documentation] Validates the ONU Upgrade Image Download to all ONUs simultaneously.
+ ... Test case should executed in multiple ONU (OLT) environment!
+ ... Performs the sanity and verifies all the ONUs are authenticated/DHCP/pingable
+ ... Check [VOL-4320] for more details
+ [Tags] functionalMultipleONUs ONUUpgradeImageDownloadSimultaneously
+ [Setup] Start Logging ONUUpgradeImageDownloadSimultaneously
+ [Teardown] Run Keywords Run Keyword If ${portFwdHandle}!=None Terminate Process ${portFwdHandle} kill=true
+ ... AND Set Suite Variable ${portFwdHandle} None
+ ... AND Run Keyword If ${logging} Collect Logs
+ ... AND Delete All Devices and Verify
+ ... AND Restart And Check BBSIM ${NAMESPACE}
+ ... AND Stop Logging ONUUpgradeImageDownloadSimultaneously
+ # Add OLT device
+ Setup
+ # Performing Sanity Test to make sure subscribers are all DHCP and pingable
+ Run Keyword If ${has_dataplane} Clean Up Linux
+ Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
+ # in case of bbsim is running in k8s port forwarding of WEBSERVER is needed
+ ${BBSIM_INSTANCE} ${BBSIM_WEBSERVER_PORT}= Run Keyword If '${image_url}'!='${EMPTY}' Get BBSIM Svc and Webserver Port
+ ${cmd} Catenate
+ ... kubectl port-forward --address 0.0.0.0 -n ${NAMESPACE} svc/${BBSIM_INSTANCE}
+ ... ${BBSIM_WEBSERVER_PORT}:${BBSIM_WEBSERVER_PORT} &
+ ${portFwdHandle}= Run Keyword If ${PORT_FORWARDING} Start Process ${cmd} shell=true
+ Set Suite Variable ${portFwdHandle}
+ Sleep 5s
+ Do ONU Upgrade Image Download Simultaneously
+ # Additional Verification
+ Wait Until Keyword Succeeds ${timeout} 2s Delete All Devices and Verify
+ Setup
+ Run Keyword If ${has_dataplane} Clean Up Linux
+ Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
+
*** Keywords ***
-Test ONU Upgrade All OLTs
+Do ONU Upgrade All OLTs
[Documentation] This keyword performs the ONU Upgrade test on all OLTs
[Arguments] ${activate_on_success}=${image_activate_on_success} ${commit_on_success}=${image_commit_on_success}
# Add OLT device
@@ -250,7 +436,7 @@
${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
${bbsim_rel}= Catenate SEPARATOR= bbsim ${J}
${bbsim_pod}= Get Pod Name By Label ${NAMESPACE} release ${bbsim_rel}
- Test ONU Upgrade Per OLT ${bbsim_pod} ${olt_serial_number} ${activate_on_success} ${commit_on_success}
+ Do ONU Upgrade Per OLT ${bbsim_pod} ${olt_serial_number} ${activate_on_success} ${commit_on_success}
List ONUs ${NAMESPACE} ${bbsim_pod}
END
# Additional Verification
@@ -259,10 +445,11 @@
Run Keyword If ${has_dataplane} Clean Up Linux
Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
-Test ONU Upgrade Per OLT
+Do ONU Upgrade Per OLT
[Documentation] This keyword performs the ONU Upgrade test on single OLT
[Arguments] ${bbsim_pod} ${olt_serial_number} ${activate_on_success}=${image_activate_on_success}
... ${commit_on_success}=${image_commit_on_success}
+ [Teardown] Run Keyword If '${KEYWORD STATUS}'=='FAIL' Remove Adapter Image ${image_version} ${onu_device_id}
FOR ${I} IN RANGE 0 ${num_all_onus}
${src}= Set Variable ${hosts.src[${I}]}
${dst}= Set Variable ${hosts.dst[${I}]}
@@ -307,11 +494,12 @@
Remove Adapter Image ${image_version} ${onu_device_id}
END
-Test ONU Upgrade Download Failure Per OLT
+Do ONU Upgrade Download Failure Per OLT
[Documentation] This keyword performs the ONU Upgrade Dowload Failure test on single OLT
[Arguments] ${bbsim_pod} ${olt_serial_number} ${url}=${image_url}
... ${dwl_dwlstate}=DOWNLOAD_STARTED ${dwl_reason}=NO_ERROR ${dwl_imgstate}=IMAGE_UNKNOWN
... ${dwlstate}=DOWNLOAD_SUCCEEDED ${reason}=NO_ERROR ${imgstate}=IMAGE_INACTIVE
+ [Teardown] Run Keyword If '${KEYWORD STATUS}'=='FAIL' Remove Adapter Image INVALID_IMAGE ${onu_device_id}
FOR ${I} IN RANGE 0 ${num_all_onus}
${src}= Set Variable ${hosts.src[${I}]}
${dst}= Set Variable ${hosts.dst[${I}]}
@@ -328,9 +516,10 @@
Remove Adapter Image INVALID_IMAGE ${onu_device_id}
END
-Test ONU Upgrade Download Abort Per OLT
- [Documentation] This keyword performs the ONU Upgrade Download Abort test on single OLT
+Do ONU Upgrade Downloading Abort Per OLT
+ [Documentation] This keyword performs the ONU Upgrade Downloading Abort test on single OLT
[Arguments] ${bbsim_pod} ${olt_serial_number} ${url}=${image_url}
+ [Teardown] Run Keyword If '${KEYWORD STATUS}'=='FAIL' Remove Adapter Image ${image_version} ${onu_device_id}
FOR ${I} IN RANGE 0 ${num_all_onus}
${src}= Set Variable ${hosts.src[${I}]}
${dst}= Set Variable ${hosts.dst[${I}]}
@@ -349,9 +538,10 @@
Wait Until Keyword Succeeds ${timeout} 5s Perform Sanity Test ${suppressaddsubscriber}
END
-Test ONU Upgrade Activate Abort Per OLT
- [Documentation] This keyword performs the ONU Upgrade Activate Abort test on single OLT
+Do ONU Upgrade Downloaded Abort Per OLT
+ [Documentation] This keyword performs the ONU Upgrade Downloaded Abort test on single OLT
[Arguments] ${bbsim_pod} ${olt_serial_number} ${url}=${image_url}
+ [Teardown] Run Keyword If '${KEYWORD STATUS}'=='FAIL' Remove Adapter Image ${image_version} ${onu_device_id}
FOR ${I} IN RANGE 0 ${num_all_onus}
${src}= Set Variable ${hosts.src[${I}]}
${dst}= Set Variable ${hosts.dst[${I}]}
@@ -362,7 +552,31 @@
... false false ${image_crc} ${onu_device_id}
Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image Status ${image_version}
... ${onu_device_id} DOWNLOAD_SUCCEEDED NO_ERROR IMAGE_INACTIVE
- Activate ONU Device Image ${image_version} true ${onu_device_id}
+ Abort ONU Device Image ${image_version} ${onu_device_id}
+ ... DOWNLOAD_SUCCEEDED CANCELLED_ON_REQUEST IMAGE_INACTIVE
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image Status ${image_version}
+ ... ${onu_device_id} DOWNLOAD_SUCCEEDED CANCELLED_ON_REQUEST IMAGE_INACTIVE
+ # !!! Expected is image is not visible in list !!!
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image List ${onu_device_id}
+ ... ${image_version} False False True
+ Wait Until Keyword Succeeds ${timeout} 5s Perform Sanity Test ${suppressaddsubscriber}
+ END
+
+Do ONU Upgrade Activating Abort Per OLT
+ [Documentation] This keyword performs the ONU Upgrade Activating Abort test on single OLT
+ [Arguments] ${bbsim_pod} ${olt_serial_number} ${url}=${image_url}
+ [Teardown] Run Keyword If '${KEYWORD STATUS}'=='FAIL' Remove Adapter Image ${image_version} ${onu_device_id}
+ FOR ${I} IN RANGE 0 ${num_all_onus}
+ ${src}= Set Variable ${hosts.src[${I}]}
+ ${dst}= Set Variable ${hosts.dst[${I}]}
+ Continue For Loop If "${olt_serial_number}"!="${src['olt']}"
+ ${onu_device_id}= Get Device ID From SN ${src['onu']}
+ # Download Image
+ Download ONU Device Image ${image_version} ${url} ${image_vendor}
+ ... false false ${image_crc} ${onu_device_id}
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image Status ${image_version}
+ ... ${onu_device_id} DOWNLOAD_SUCCEEDED NO_ERROR IMAGE_INACTIVE
+ Activate ONU Device Image ${image_version} false ${onu_device_id}
Abort ONU Device Image ${image_version} ${onu_device_id}
... DOWNLOAD_SUCCEEDED CANCELLED_ON_REQUEST IMAGE_ACTIVATING
Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image Status ${image_version}
@@ -373,6 +587,156 @@
Wait Until Keyword Succeeds ${timeout} 5s Perform Sanity Test ${suppressaddsubscriber}
END
+Do ONU Upgrade Active Abort Per OLT
+ [Documentation] This keyword performs the ONU Upgrade Active Abort test on single OLT
+ [Arguments] ${bbsim_pod} ${olt_serial_number} ${url}=${image_url}
+ [Teardown] Run Keyword If '${KEYWORD STATUS}'=='FAIL' Remove Adapter Image ${image_version} ${onu_device_id}
+ FOR ${I} IN RANGE 0 ${num_all_onus}
+ ${src}= Set Variable ${hosts.src[${I}]}
+ ${dst}= Set Variable ${hosts.dst[${I}]}
+ Continue For Loop If "${olt_serial_number}"!="${src['olt']}"
+ ${onu_device_id}= Get Device ID From SN ${src['onu']}
+ # Download Image
+ Download ONU Device Image ${image_version} ${url} ${image_vendor}
+ ... false false ${image_crc} ${onu_device_id}
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image Status ${image_version}
+ ... ${onu_device_id} DOWNLOAD_SUCCEEDED NO_ERROR IMAGE_INACTIVE
+ Activate ONU Device Image ${image_version} false ${onu_device_id}
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image Status ${image_version}
+ ... ${onu_device_id} DOWNLOAD_SUCCEEDED NO_ERROR IMAGE_ACTIVE
+ Abort ONU Device Image ${image_version} ${onu_device_id}
+ ... DOWNLOAD_SUCCEEDED CANCELLED_ON_REQUEST IMAGE_ACTIVE
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image Status ${image_version}
+ ... ${onu_device_id} DOWNLOAD_SUCCEEDED CANCELLED_ON_REQUEST IMAGE_ACTIVE
+ # !!! Expected is image is not visible in list !!!
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image List ${onu_device_id}
+ ... ${image_version} False True True
+ Wait Until Keyword Succeeds ${timeout} 5s Perform Sanity Test ${suppressaddsubscriber}
+ END
+
+Do ONU Upgrade Committed Abort Per OLT
+ [Documentation] This keyword performs the ONU Upgrade Committed Abort test on single OLT
+ [Arguments] ${bbsim_pod} ${olt_serial_number} ${url}=${image_url}
+ [Teardown] Run Keyword If '${KEYWORD STATUS}'=='FAIL' Remove Adapter Image ${image_version} ${onu_device_id}
+ FOR ${I} IN RANGE 0 ${num_all_onus}
+ ${src}= Set Variable ${hosts.src[${I}]}
+ ${dst}= Set Variable ${hosts.dst[${I}]}
+ Continue For Loop If "${olt_serial_number}"!="${src['olt']}"
+ ${onu_device_id}= Get Device ID From SN ${src['onu']}
+ ${Images_Count_Start}= Get Images Count
+ # Download Image
+ Download ONU Device Image ${image_version} ${url} ${image_vendor}
+ ... false false ${image_crc} ${onu_device_id}
+ # After download of image, check image counter of BBSIM, has to be incremented by 2, because bbsim increments counter
+ # whenever openonu adapter touch the image, so one increment for check image is available and one for downloading
+ ${Images_Count_First}= Get Images Count
+ ${Images_Count_Start}= Evaluate ${Images_Count_Start}+2
+ Should Be Equal as Integers ${Images_Count_First} ${Images_Count_Start} Count of image download not correct!
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image Status ${image_version}
+ ... ${onu_device_id} DOWNLOAD_SUCCEEDED NO_ERROR IMAGE_INACTIVE
+ Activate ONU Device Image ${image_version} false ${onu_device_id}
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image Status ${image_version}
+ ... ${onu_device_id} DOWNLOAD_SUCCEEDED NO_ERROR IMAGE_ACTIVE
+ Commit ONU Device Image ${image_version} ${onu_device_id}
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image Status ${image_version}
+ ... ${onu_device_id} DOWNLOAD_SUCCEEDED NO_ERROR IMAGE_COMMITTED
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image List ${onu_device_id}
+ ... ${image_version} True True True
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image On BBSim ${NAMESPACE} ${bbsim_pod}
+ ... ${src['onu']} software_image_committed
+ Abort ONU Device Image ${image_version} ${onu_device_id}
+ ... DOWNLOAD_UNKNOWN NO_ERROR IMAGE_UNKNOWN
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image Status ${image_version}
+ ... ${onu_device_id} DOWNLOAD_UNKNOWN NO_ERROR IMAGE_UNKNOWN
+ # !!! Expected is image is not visible in list !!!
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image List ${onu_device_id}
+ ... ${image_version} True True True
+ Wait Until Keyword Succeeds ${timeout} 5s Perform Sanity Test ${suppressaddsubscriber}
+ ${Images_Count_Intermediate}= Get Images Count
+ # Repeat download of aborted image, check image counter of BBSIM, has to be incremented by 2, because bbsim increments
+ # whenever openonu adapter touch the image, so one increment for check image is available and one for downloading
+ Download ONU Device Image ${image_version} ${url} ${image_vendor}
+ ... false false ${image_crc} ${onu_device_id}
+ ${Images_Count_End}= Get Images Count
+ ${Images_Count_Intermediate}= Evaluate ${Images_Count_Intermediate}+2
+ Should Be Equal as Integers ${Images_Count_End} ${Images_Count_Intermediate} Count of image download not correct!
+ Remove Adapter Image ${image_version} ${onu_device_id}
+ END
+
+Do ONU Upgrade Multiple Image Download Per OLT
+ [Documentation] This keyword performs the ONU Upgrade Image Download test on single OLT
+ [Arguments] ${bbsim_pod} ${olt_serial_number} ${url}=${image_url}
+ [Teardown] Run Keyword If '${KEYWORD STATUS}'=='FAIL' Remove Adapter Image ${image_version} ${onu_device_id}
+ FOR ${I} IN RANGE 0 ${num_all_onus}
+ ${src}= Set Variable ${hosts.src[${I}]}
+ ${dst}= Set Variable ${hosts.dst[${I}]}
+ Continue For Loop If "${olt_serial_number}"!="${src['olt']}"
+ ${onu_device_id}= Get Device ID From SN ${src['onu']}
+ ${Images_Count_Start}= Get Images Count
+ # Download Image
+ Download ONU Device Image ${image_version} ${url} ${image_vendor}
+ ... true true ${image_crc} ${onu_device_id}
+ # After download of image, check image counter of BBSIM, has to be incremented by 2, because bbsim increments counter
+ # whenever openonu adapter touch the image, so one increment for check image is available and one for downloading
+ ${Images_Count_First}= Get Images Count
+ ${Images_Count_Start}= Evaluate ${Images_Count_Start}+2
+ Should Be Equal as Integers ${Images_Count_First} ${Images_Count_Start} Count of image download not correct!
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image Status ${image_version}
+ ... ${onu_device_id} DOWNLOAD_SUCCEEDED NO_ERROR IMAGE_COMMITTED
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image List ${onu_device_id}
+ ... ${image_version} True True True
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image On BBSim ${NAMESPACE} ${bbsim_pod}
+ ... ${src['onu']} software_image_committed
+ Wait Until Keyword Succeeds ${timeout} 5s Perform Sanity Test ${suppressaddsubscriber}
+ ${Images_Count_Intermediate}= Get Images Count
+ # Repeat download of same image, check image counter of BBSIM, has to be not incremented, because no download from
+ # server will be executed, the cached one from openonu-adapter will taken
+ Download ONU Device Image ${image_version} ${url} ${image_vendor}
+ ... false false ${image_crc} ${onu_device_id}
+ ${Images_Count_End}= Get Images Count
+ Should Be Equal as Integers ${Images_Count_End} ${Images_Count_Intermediate} Count of image download not correct!
+ Remove Adapter Image ${image_version} ${onu_device_id}
+ END
+
+Do ONU Upgrade Image Download Simultaneously
+ [Documentation] This keyword performs the ONU Upgrade Image Download Simultaneously on all ONUs test
+ [Arguments] ${url}=${image_url}
+ [Teardown] Remove Adapter Image from ONUs ${image_version} ${list_onus}
+ # collect all ONU's device ids
+ ${list_onus} Create List
+ Build ONU Device Id List ${list_onus}
+ # prepare OLT-SN BBSIM-POD releation dictionary for later fast access
+ ${olt_bbsim_dict}= Create Dictionary
+ FOR ${J} IN RANGE 0 ${num_olts}
+ ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
+ ${bbsim_rel}= Catenate SEPARATOR= bbsim ${J}
+ ${bbsim_pod}= Get Pod Name By Label ${NAMESPACE} release ${bbsim_rel}
+ Set To Dictionary ${olt_bbsim_dict} ${olt_serial_number} ${bbsim_pod}
+ END
+ ${Images_Count_Start}= Get Images Count
+ # Download Image to all ONUs simultaneously
+ ${onu_device_ids} = Catenate @{list_onus}
+ Download ONU Device Image ${image_version} ${url} ${image_vendor}
+ ... true true ${image_crc} ${onu_device_ids}
+ # do all the check stuff
+ FOR ${onu_device_id} IN @{list_onus}
+ Log ${onu_device_id}
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image Status ${image_version}
+ ... ${onu_device_id} DOWNLOAD_SUCCEEDED NO_ERROR IMAGE_COMMITTED
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image List ${onu_device_id}
+ ... ${image_version} True True True
+ END
+ # last but not least check bbsim
+ FOR ${I} IN RANGE 0 ${num_all_onus}
+ ${src}= Set Variable ${hosts.src[${I}]}
+ ${bbsim_pod}= Get From Dictionary ${olt_bbsim_dict} ${src['olt']}
+ Wait Until Keyword Succeeds ${timeout} 2s Verify ONU Device Image On BBSim ${NAMESPACE} ${bbsim_pod}
+ ... ${src['onu']} software_image_committed
+ END
+ ${Images_Count_End}= Get Images Count
+ ${Images_Count_Start}= Evaluate ${Images_Count_Start}+2
+ Should Be Equal as Integers ${Images_Count_End} ${Images_Count_Start} Count of image download not correct!
+
Restart And Check BBSIM
[Documentation] This keyword restarts bbsim and waits for it to come up again
... Following steps will be executed:
@@ -386,11 +750,28 @@
Sleep 5s
Wait For Pods Ready ${namespace} ${bbsim_apps}
+Get BBSIM Svc and Webserver Port
+ [Documentation] This keyword gets bbsim instance and bbsim webserver port from image url
+ @{words}= Split String ${image_url} /
+ ${SvcAndPort} Set Variable @{words}[2]
+ ${bbsim_svc} ${webserver_port}= Split String ${SvcAndPort} : 1
+ ${svc_return} Set Variable If '${bbsim_svc}'!='${EMPTY}' ${bbsim_svc} ${BBSIM_INSTANCE}
+ ${port_return} Set Variable If '${webserver_port}'!='${EMPTY}' ${webserver_port} ${BBSIM_WEBSERVER_PORT}
+ [Return] ${svc_return} ${port_return}
+
Setup Suite
[Documentation] Set up the test suite
+ Start Logging Setup or Teardown Setup-${SUITE NAME}
Common Test Suite Setup
+ Run Keyword If ${logging} Collect Logs
+ Stop Logging Setup or Teardown Setup-${SUITE NAME}
Teardown Suite
[Documentation] Tear down steps for the suite
+ Start Logging Setup or Teardown Teardown-${SUITE NAME}
+ # stop port forwarding if still running
+ Run Keyword If ${portFwdHandle}!=None Terminate Process ${portFwdHandle} kill=true
Run Keyword If ${has_dataplane} Clean Up Linux
+ Run Keyword If ${logging} Collect Logs
+ Stop Logging Setup or Teardown Teardown-${SUITE NAME}
Close All ONOS SSH Connections