[VOL-4724] TIM Workflow Robot Test Setup

Added some configuration to the test enviroment for set up  multiple sanity test for tim workflow

Change-Id: I9cdc88eb278bb48945dd71befec81a7ddea9d312

Added some method to verify the correctness of flow rules genereted by ONOS.

Change-Id: Iba9a11a87070ce1bf4bbd7d06c767e1e2e1cac28

Added some Test Case to do a Sanity-Test for the TIM Workflow Test are x Multi OLT, Multi PON and Multi ONO About the correctness of generation about the ONOS flow rules

Change-Id: Ica62a7720554bb2cbf82597ee861a7149b89e30a

Test file structure to do a single OLT, Single PON and Single ONU Sanity Test for TIM Workflow

Change-Id: I5a1cdf323398055ec41d2dddbf5c842e3b50b393

Test file structure to do a single OLT, Single PON and Multi ONU Sanity Test for TIM Workflow

Change-Id: Ifc74e84da3bafda23c3501e40104624ff98a6007

Test file structure to do a single OLT, Multi PON and Multi ONU Sanity Test for TIM Workflow

Change-Id: I22a812ceac39caeb574feffc64892559f6c0096d

Test file structure to do a Multi OLT, Multi PON and Multi ONU Sanity Test for TIM Workflow

Change-Id: I68745b986cdb94347dff96ffd99608bffdfa8470

Robot Test Code to do TIM Workflow  Sanity Test
Scalability Test in ONOS and in OLTs and ONUs device

Change-Id: I1c21f45751b5502c16fbcadc6f70e50388389d3f
diff --git a/libraries/onos.robot b/libraries/onos.robot
index b6a9cb9..c2c949d 100755
--- a/libraries/onos.robot
+++ b/libraries/onos.robot
@@ -461,6 +461,14 @@
     ${access_flows_added_count}=      Get Line Count      ${access_flows_added}
     Should Be Equal As Integers    ${access_flows_added_count}    ${expected_flows}
 
+Verify Subscriber Access Flows Added Count TIM
+    [Arguments]    ${ip}    ${port}    ${olt_of_id}    ${expected_flows}
+    [Documentation]    Matches for total number of subscriber access flows added for all onus
+    ${access_flows_added}=    Execute ONOS CLI Command use single connection    ${ip}    ${port}
+    ...    flows -s ADDED ${olt_of_id} | grep -v deviceId
+    ${access_flows_added_count}=      Get Line Count      ${access_flows_added}
+    Should Be Equal As Integers    ${access_flows_added_count}    ${expected_flows}
+
 Verify Added Flow Count for OLT TT
     [Arguments]    ${ip}    ${port}    ${olt_of_id}    ${expected_flows}
     [Documentation]    Total number of added flows given OLT with subscriber flows
@@ -494,6 +502,75 @@
     ...    ${downstream_flow_igmp_cmd}
     Should Not Be Empty    ${downstream_flow_igmp_added}
 
+Verify Downstream Flows for Single OLT NNI Port TIM
+    [Arguments]    ${ip}    ${port}    ${olt_of_id}    ${nni_port}
+    [Documentation]    Verifies if the downstream flows from the NNI port to the CONTROLLER port are added in ONOS for the OLT
+
+    # Verify PPPoE downstream flow form NNI to CONTROLLER port
+    ${downstream_pppoed_cmd}=     Catenate    SEPARATOR=
+    ...    flows -s ADDED ${olt_of_id} | grep IN_PORT:${nni_port} | grep ETH_TYPE:pppoed | grep OUTPUT:CONTROLLER
+    ${downstream_pppoed}=    Execute ONOS CLI Command use single connection    ${ip}    ${port}
+    ...    ${downstream_pppoed_cmd}
+    Should Not Be Empty    ${downstream_pppoed}
+
+    # Verify IGMP downstream flow form NNI to CONTROLLER port
+    ${downstream_igmp_cmd}=     Catenate    SEPARATOR=
+    ...    flows -s ADDED ${olt_of_id} | grep IN_PORT:${nni_port} | grep ETH_TYPE:ipv4 | grep IP_PROTO:2 | grep OUTPUT:CONTROLLER
+    ${downstream_igmp}=    Execute ONOS CLI Command use single connection    ${ip}    ${port}
+    ...    ${downstream_igmp_cmd}
+    Should Not Be Empty    ${downstream_igmp}
+
+    # Verify LLDP downstream flow form NNI to CONTROLLER port
+    ${downstream_lldp_cmd}=     Catenate    SEPARATOR=
+    ...    flows -s ADDED ${olt_of_id} | grep IN_PORT:${nni_port} | grep ETH_TYPE:lldp | grep OUTPUT:CONTROLLER
+    ${downstream_lldp}=    Execute ONOS CLI Command use single connection    ${ip}    ${port}
+    ...    ${downstream_lldp_cmd}
+    Should Not Be Empty    ${downstream_lldp}
+
+Verify Subscriber Access Flows Added for Single ONU Port TIM
+    [Arguments]    ${ip}    ${port}    ${olt_of_id}    ${onu_port}    ${nni_port}    ${c_tag}   ${uni_tag}
+    [Documentation]    Verifies if the Subscriber Access Flows are added in ONOS for the ONU
+
+    # Verify upstream pppoed flow from UNI port to CONTROLLER
+    ${upstream_flow_pppoed_added_cmd}=   Catenate    SEPARATOR=
+    ...     flows -s ADDED ${olt_of_id} | grep IN_PORT:${onu_port} | grep ETH_TYPE:pppoed |
+    ...     grep VLAN_VID:${uni_tag} | grep OUTPUT:CONTROLLER
+    ${upstream_flow_pppoed_added}=    Execute ONOS CLI Command use single connection    ${ip}    ${port}
+    ...    ${upstream_flow_pppoed_added_cmd}
+    Should Not Be Empty    ${upstream_flow_pppoed_added}
+
+    # Verify upstream table=0 flow, from UNI to TABLE 1
+    ${upstream_flow_0_added_cmd}=     Catenate    SEPARATOR=
+    ...     flows -s ADDED ${olt_of_id} | grep IN_PORT:${onu_port} | grep VLAN_VID:${uni_tag} |
+    ...     grep VLAN_ID:${c_tag}  | grep transition=TABLE:1
+    ${upstream_flow_0_added}=    Execute ONOS CLI Command use single connection    ${ip}    ${port}
+    ...    ${upstream_flow_0_added_cmd}
+    Should Not Be Empty    ${upstream_flow_0_added}
+
+    # Verify upstream table=1 flow, from UNI to NNI
+    ${flow_vlan_UNI_to_NNI_cmd}=     Catenate    SEPARATOR=
+    ...    flows -s ADDED ${olt_of_id} | grep table=1 | grep IN_PORT:${onu_port} | grep VLAN_VID:${c_tag} |
+    ...    grep OUTPUT:${nni_port}
+    ${flow_vlan_UNI_to_NNI}=    Execute ONOS CLI Command use single connection    ${ip}    ${port}
+    ...    ${flow_vlan_UNI_to_NNI_cmd}
+    Should Not Be Empty    ${flow_vlan_UNI_to_NNI}
+
+    # Verify downstream table=0 flow, from NNI to TABLE 1
+    ${downstream_flow_0_added_cmd}=     Catenate    SEPARATOR=
+    ...    flows -s ADDED ${olt_of_id} | grep IN_PORT:${nni_port} | grep VLAN_VID:Any |
+    ...    grep transition=TABLE:1
+    ${downstream_flow_0_added}=    Execute ONOS CLI Command use single connection    ${ip}    ${port}
+    ...    ${downstream_flow_0_added_cmd}
+    Should Not Be Empty    ${downstream_flow_0_added}
+
+    # Verify downstream table=1 flow, from NNI to UNI
+    ${downstream_form_NNI_to_UNI_in_table_1_cmd}=     Catenate    SEPARATOR=
+    ...    flows -s ADDED ${olt_of_id} | grep table=1 | grep IN_PORT:${nni_port} | grep VLAN_VID:${c_tag} |
+    ...    grep VLAN_ID:${uni_tag} | grep OUTPUT:${onu_port}
+    ${downstream_form_NNI_to_UNI_in_table_1}=    Execute ONOS CLI Command use single connection    ${ip}    ${port}
+    ...    ${downstream_form_NNI_to_UNI_in_table_1_cmd}
+    Should Not Be Empty    ${downstream_form_NNI_to_UNI_in_table_1}
+
 Get Programmed Subscribers
     [Arguments]    ${ip}    ${port}    ${olt_of_id}    ${onu_port}    ${filter}=${EMPTY}
     [Documentation]    Retrieves the subscriber details at a given location