[VOL-2965] DT: Added Functional Scenarios
Change-Id: I415a8cd5d94daf86cb18cf1b7410aff484541770
diff --git a/tests/dt-workflow/Voltha_DT_PODTests.robot b/tests/dt-workflow/Voltha_DT_PODTests.robot
index 3526a5f..24a84bd 100644
--- a/tests/dt-workflow/Voltha_DT_PODTests.robot
+++ b/tests/dt-workflow/Voltha_DT_PODTests.robot
@@ -240,6 +240,157 @@
Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test DT
Run Keyword If ${has_dataplane} Clean Up Linux
+Test Disable and Enable OLT for DT
+ [Documentation] Validates E2E Ping Connectivity and object states for the given scenario:
+ ... Assuming that all the ONUs are DHCP/pingable (i.e. assuming sanityDt test was executed)
+ ... Perform disable on the OLT and validate that the pings do not succeed
+ ... Perform enable on the OLT and validate that the pings are successful
+ # TODO: TBD: Verification: "onu_reason" value: omci-flows-pushed OR discovery-mibsync-complete on OLT ReEnable
+ [Tags] functionalDt DisableEnableOLTDt notready
+ [Setup] Start Logging DisableEnableOLTDt
+ [Teardown] Run Keywords Collect Logs
+ ... AND Stop Logging DisableEnableOLTDt
+ # Disable and Validate OLT Device
+ Disable Device ${olt_device_id}
+ Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s
+ ... Validate OLT Device DISABLED UNKNOWN REACHABLE
+ ... ${olt_serial_number}
+ # Validate ONUs
+ Run Keyword Wait Until Keyword Succeeds ${timeout} 5s Validate ONUs After OLT Disable
+ # Verify ONOS Flows
+ # Number of Access Flows on ONOS equals 4 * the Number of Active ONUs (2 for each downstream and upstream)
+ ${onos_flows_count}= Evaluate 4 * ${num_onus}
+ Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s
+ ... Verify Subscriber Access Flows Added Count DT ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
+ ... ${of_id} ${onos_flows_count}
+ # Verify VOLTHA Flows
+ # Number of per OLT Flows equals Twice the Number of Active ONUs (each for downstream and upstream) + 1 for LLDP
+ ${olt_flows}= Evaluate 2 * ${num_onus} + 1
+ # Number of per ONU Flows equals 2 (one each for downstream and upstream)
+ ${onu_flows}= Set Variable 2
+ Run Keyword Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Flows ${olt_flows}
+ ${List_ONU_Serial} Create List
+ Set Suite Variable ${List_ONU_Serial}
+ Build ONU SN List ${List_ONU_Serial}
+ Log ${List_ONU_Serial}
+ Run Keyword Wait Until Keyword Succeeds ${timeout} 5s Validate ONU Flows
+ ... ${List_ONU_Serial} ${onu_flows}
+ # Enable the OLT back and check ONU, OLT status are back to "ACTIVE"
+ Enable Device ${olt_device_id}
+ Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Device ENABLED ACTIVE REACHABLE
+ ... ${olt_serial_number}
+ Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Port Types
+ ... PON_OLT ETHERNET_NNI
+ FOR ${I} IN RANGE 0 ${num_onus}
+ ${src}= Set Variable ${hosts.src[${I}]}
+ ${dst}= Set Variable ${hosts.dst[${I}]}
+ ${onu_device_id}= Get Device ID From SN ${src['onu']}
+ ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
+ ... ${of_id}
+
+ ## ******** ##
+ Wait Until Keyword Succeeds ${timeout} 10s Validate Device ENABLED ACTIVE
+ ... REACHABLE ${src['onu']} onu=True onu_reason=omci-flows-pushed
+ ## ******** ##
+
+ # Verify that ping works fine again
+ Run Keyword If ${has_dataplane}
+ ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds 60s 2s
+ ... Check Ping True ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
+ ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}}
+ Run Keyword and Ignore Error Collect Logs
+ END
+ # Verify ONOS Flows
+ # Number of Access Flows on ONOS equals 4 * the Number of Active ONUs (2 for each downstream and upstream)
+ ${onos_flows_count}= Evaluate 4 * ${num_onus}
+ Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s
+ ... Verify Subscriber Access Flows Added Count DT ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id}
+ ... ${onos_flows_count}
+ # Verify VOLTHA Flows
+ # Number of per OLT Flows equals Twice the Number of Active ONUs (each for downstream and upstream) + 1 for LLDP
+ ${olt_flows}= Evaluate 2 * ${num_onus} + 1
+ # Number of per ONU Flows equals 2 (one each for downstream and upstream)
+ ${onu_flows}= Set Variable 2
+ Run Keyword Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Flows ${olt_flows}
+ ${List_ONU_Serial} Create List
+ Set Suite Variable ${List_ONU_Serial}
+ Build ONU SN List ${List_ONU_Serial}
+ Log ${List_ONU_Serial}
+ Run Keyword Wait Until Keyword Succeeds ${timeout} 5s Validate ONU Flows
+ ... ${List_ONU_Serial} ${onu_flows}
+
+Test Delete and ReAdd OLT for DT
+ [Documentation] Validates E2E Ping Connectivity and object states for the given scenario:
+ ... Assuming that all the ONUs are DHCP/pingable (i.e. assuming sanityDt test was executed)
+ ... Disable and Delete the OLT
+ ... Create/Enable the same OLT again
+ ... Validate DHCP/E2E pings succeed for all the ONUs connected to the OLT
+ [Tags] functionalDt DeleteReAddOLTDt
+ [Setup] Start Logging DeleteReAddOLTDt
+ [Teardown] Run Keywords Collect Logs
+ ... AND Stop Logging DeleteReAddOLTDt
+ Run Keyword If ${has_dataplane} Clean Up Linux
+ Delete Device and Verify
+ Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s
+ ... Verify Device Flows Removed ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id}
+ Run Keyword and Ignore Error Collect Logs
+ # Recreate the OLT
+ Setup
+ Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test DT
+
+Test Disable ONUs and OLT Then Delete ONUs and OLT for DT
+ [Documentation] On deployed POD, disable the ONU, disable the OLT and then delete ONU and OLT.
+ ... This TC is to confirm that ONU removal is not impacting OLT
+ ... Devices will be removed during the execution of this TC
+ ... so calling setup at the end to add the devices back to avoid the confusion.
+ [Tags] functionalDt DisableDeleteONUOLTDt
+ [Setup] Start Logging DisableDeleteONUOLTDt
+ [Teardown] Run Keywords Collect Logs
+ ... AND Stop Logging DisableDeleteONUOLTDt
+ ${olt_device_id}= Get Device ID From SN ${olt_serial_number}
+ FOR ${I} IN RANGE 0 ${num_onus}
+ ${src}= Set Variable ${hosts.src[${I}]}
+ ${dst}= Set Variable ${hosts.dst[${I}]}
+ ${onu_device_id}= Get Device ID From SN ${src['onu']}
+ Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s
+ ... Validate Device ENABLED ACTIVE
+ ... REACHABLE ${src['onu']} onu=True onu_reason=omci-flows-pushed
+ Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s
+ ... Validate OLT Device ENABLED ACTIVE
+ ... REACHABLE ${olt_serial_number}
+ Disable Device ${onu_device_id}
+ Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s
+ ... Validate Device DISABLED UNKNOWN
+ ... REACHABLE ${src['onu']} onu=false
+ Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s
+ ... Validate OLT Device ENABLED ACTIVE
+ ... REACHABLE ${olt_serial_number}
+ END
+ Disable Device ${olt_device_id}
+ Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s
+ ... Validate OLT Device DISABLED UNKNOWN REACHABLE
+ ... ${olt_serial_number}
+ FOR ${I} IN RANGE 0 ${num_onus}
+ ${src}= Set Variable ${hosts.src[${I}]}
+ ${dst}= Set Variable ${hosts.dst[${I}]}
+ ${onu_device_id}= Get Device ID From SN ${src['onu']}
+ Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s
+ ... Validate Device DISABLED DISCOVERED
+ ... UNREACHABLE ${src['onu']} onu=false
+ Delete Device ${onu_device_id}
+ Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s
+ ... Validate OLT Device DISABLED UNKNOWN
+ ... REACHABLE ${olt_serial_number}
+ END
+ Delete Device ${olt_device_id}
+ Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s Test Empty Device List
+ Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s
+ ... Verify Device Flows Removed ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id}
+ # Re-do Setup (Recreate the OLT) and Perform Sanity Test DT
+ Run Keyword Setup
+ Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test DT
+ Run Keyword If ${has_dataplane} Clean Up Linux
+
*** Keywords ***
Setup Suite
[Documentation] Set up the test suite