Added test for VOL_1823 & VOL_1824

Change-Id: I79d917ec315c6eb8627d86d899a5839ced5f760b
diff --git a/tests/functional/Voltha_ScaleFunctionalTests.robot b/tests/functional/Voltha_ScaleFunctionalTests.robot
index 06d3ef1..e428cb7 100644
--- a/tests/functional/Voltha_ScaleFunctionalTests.robot
+++ b/tests/functional/Voltha_ScaleFunctionalTests.robot
@@ -13,8 +13,8 @@
 # limitations under the License.
 
 *** Settings ***
-Documentation     Test suite that engages a larger number of ONU at the same time to test scale
-...               It is compatible with either BBSim or real H/W using a configuration file
+Documentation    Test suite that engages a larger number of ONU at the same which makes it a more realistic test
+...    It is addaptable to either BBSim or Real H/W using a configuration file
 Suite Setup       Setup Suite
 Suite Teardown    Teardown Suite
 Library           Collections
@@ -30,10 +30,10 @@
 Resource          ../../variables/variables.robot
 
 *** Variables ***
-${timeout}        60s
-${long_timeout}    420s
-${of_id}          0
-${logical_id}     0
+${timeout}         60s
+${long_timeout}	420
+${of_id}           0
+${logical_id}      0
 ${has_dataplane}    True
 ${external_libs}    True
 ${teardown_device}    False
@@ -50,13 +50,13 @@
     ${olt_device_id}=    Create Device    ${olt_ip}    ${OLT_PORT}
     Set Global Variable    ${olt_device_id}
     #validate olt states
-    Wait Until Keyword Succeeds    ${timeout}    5s
-    ...    Validate OLT Device    PREPROVISIONED    UNKNOWN    UNKNOWN    ${EMPTY}    ${olt_device_id}
+    Wait Until Keyword Succeeds    ${timeout}    5s    Validate OLT Device   PREPROVISIONED    UNKNOWN    UNKNOWN
+    ...	${EMPTY}	${olt_device_id}
     #enable device
     Enable Device    ${olt_device_id}
     #validate olt states
-    Wait Until Keyword Succeeds    ${timeout}    5s
-    ...    Validate OLT Device    ENABLED    ACTIVE    REACHABLE    ${EMPTY}    ${olt_device_id}
+    Wait Until Keyword Succeeds    ${timeout}    5s    Validate OLT Device   ENABLED    ACTIVE    REACHABLE    ${EMPTY}
+    ...    ${olt_device_id}
 
 ONU Discovery
     [Documentation]    Discover lists of ONUS, their Serial Numbers and device id
@@ -65,15 +65,22 @@
     ${List_ONU_Serial}    Create List
     Set Suite Variable    ${List_ONU_Serial}
     Build ONU SN List    ${List_ONU_Serial}
-    Log    ${List_ONU_Serial}
     #validate onu states
-    Wait Until Keyword Succeeds    ${long_timeout}    20s
-    ...    Validate ONU Devices    ENABLED    ACTIVE    REACHABLE    ${List_ONU_Serial}
+    Wait Until Keyword Succeeds    ${long_timeout}    20s    Validate ONU Devices    ENABLED    ACTIVE    REACHABLE
+    ...    ${List_ONU_Serial}
+
+Verify AAA-Users Authentication
+    [Documentation]    Authenticating all AAA-users in onos
+    [Tags]    VOL-1823    active
+    #build onu sn list
+    ${List_ONU_Serial}    Create List
+    Set Suite Variable    ${List_ONU_Serial}
+    Build ONU SN List    ${List_ONU_Serial}
+    Wait Until Keyword Succeeds    ${long_timeout}    60s	Verify Number of AAA-Users	${k8s_node_ip}	${ONOS_SSH_PORT}	16
 
 Validate Device's Ports and Flows
     [Documentation]    Verify Ports and Flows listed for OLT and ONUs
-    ...    For OLT we validate the port types and numbers and for flows we simply
-    ...    verify that their numbers > 0
+    ...    For OLT we validate the port types and numbers and for flows we simply verify that their numbers > 0
     ...    For each ONU, we validate the port types and numbers for each and for flows.
     ...    For flows they should be == 0 at this stage
     [Tags]    active
@@ -84,8 +91,46 @@
     #validate onu port types
     Validate ONU Port Types    ${List_ONU_Serial}    PON_ONU    ETHERNET_UNI
     #validate onu flows
-    Wait Until Keyword Succeeds    ${timeout}    5s
-    ...    Validate ONU Flows    ${List_ONU_Serial}    ${num_onu_flows}
+    Wait Until Keyword Succeeds    ${timeout}    5s    Validate ONU Flows    ${List_ONU_Serial}    ${num_onu_flows}
+
+Verify Total Number Of Eapol Flows
+    [Documentation]    Verify Flows listed for ONUs
+    ...    For 16 ONUs we validate the number of flows to be 16 eapol flows
+    [Tags]    VOL-1823    active
+    #verify eapol flows added
+    Wait Until Keyword Succeeds    ${long_timeout}    5s    Verify Eapol Flows Added	${k8s_node_ip}	${ONOS_SSH_PORT}	16
+
+Allocate DHCP To All ONU Devices
+    [Documentation]    DHCP Allocation for all ONUs
+    [Tags]    VOL-1824    active
+    ${of_id}=    Wait Until Keyword Succeeds    ${timeout}    15s    Validate OLT Device in ONOS    ${olt_serial_number}
+    Set Global Variable    ${of_id}
+    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}=    Run Keyword And Continue On Failure    Wait Until Keyword Succeeds	${timeout}    2s
+        ...	Get ONU Port in ONOS    ${src['onu']}    ${of_id}
+        Run Keyword And Continue On Failure    Wait Until Keyword Succeeds    ${timeout}    2
+        ...	Execute ONOS CLI Command	${k8s_node_ip}    ${ONOS_SSH_PORT}	volt-add-subscriber-access ${of_id} ${onu_port}
+    END
+
+Validate Total Number Of DHCP Allocations
+    [Documentation]    Verify dhcp allocation for multiple ONU user
+    [Tags]    VOL-1824    active
+    #validate total number of DHCP allocations
+    Wait Until Keyword Succeeds  ${long_timeout}  20s  Validate DHCP Allocations  ${k8s_node_ip}
+    ...	${ONOS_SSH_PORT}        16
+    #validate DHCP allocation for each port
+    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}=    Run Keyword And Continue On Failure    Wait Until Keyword Succeeds	${timeout}    2s
+	...	Get ONU Port in ONOS    ${src['onu']}    ${of_id}
+	Wait Until Keyword Succeeds  ${long_timeout}  20s  Validate Subscriber DHCP Allocation	${k8s_node_ip}
+	...	${ONOS_SSH_PORT}	${onu_port}
+    END
 
 Validate Logical Device
     [Documentation]    Verify that logical device exists and then verify its ports and flows
@@ -120,8 +165,7 @@
     ...    kills processes and cleans up interfaces on src+dst servers
     Run Keyword If    ${external_libs}    Get ONOS Status    ${k8s_node_ip}
     Run Keyword If    ${has_dataplane}    Clean Up Linux
-    Run Keyword If    ${external_libs}
-    ...    Log Kubernetes Containers Logs Since Time    ${datetime}    ${container_list}
+    Run Keyword If    ${external_libs}    Log Kubernetes Containers Logs Since Time    ${datetime}    ${container_list}
     Run Keyword If    ${teardown_device}    Delete Device and Verify
     Run Keyword If    ${teardown_device}    Test Empty Device List
     Run Keyword If    ${teardown_device}    Execute ONOS CLI Command    ${k8s_node_ip}    ${ONOS_SSH_PORT}
@@ -148,12 +192,10 @@
 
 Delete Device and Verify
     [Documentation]    Disable -> Delete devices via voltctl and verify its removed
-    ${rc}    ${output}=    Run and Return Rc and Output
-    ...    ${VOLTCTL_CONFIG}; voltctl device disable ${olt_device_id}
+    ${rc}    ${output}=    Run and Return Rc and Output    ${VOLTCTL_CONFIG}; voltctl device disable ${olt_device_id}
     Should Be Equal As Integers    ${rc}    0
-    Wait Until Keyword Succeeds    ${timeout}    5s
-    ...    Validate OLT Device    DISABLED    UNKNOWN    REACHABLE    ${olt_serial_number}
-    ${rc}    ${output}=    Run and Return Rc and Output
-    ...    ${VOLTCTL_CONFIG}; voltctl device delete ${olt_device_id}
+    Wait Until Keyword Succeeds    ${timeout}    5s    Validate OLT Device    DISABLED    UNKNOWN    REACHABLE
+    ...    ${olt_serial_number}
+    ${rc}    ${output}=    Run and Return Rc and Output    ${VOLTCTL_CONFIG}; voltctl device delete ${olt_device_id}
     Should Be Equal As Integers    ${rc}    0
-    Wait Until Keyword Succeeds    ${long_timeout}    5s    Validate Device Removed    ${olt_device_id}
+    Wait Until Keyword Succeeds    ${timeout}    5s    Validate Device Removed    ${olt_device_id}