[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/tests/tim-workflow/Voltha_TIM_PODTests.robot b/tests/tim-workflow/Voltha_TIM_PODTests.robot
new file mode 100755
index 0000000..ebd2ed5
--- /dev/null
+++ b/tests/tim-workflow/Voltha_TIM_PODTests.robot
@@ -0,0 +1,119 @@
+#Copyright 2022 - present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# 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.
+# FIXME Can we use the same test against BBSim and Hardware?
+
+*** Settings ***
+Documentation     Test various end-to-end scenarios
+Suite Setup       Setup Suite
+Test Setup        Setup
+Test Teardown     Teardown
+Suite Teardown    Teardown Suite
+Library           Collections
+Library           String
+Library           OperatingSystem
+Library           XML
+Library           RequestsLibrary
+Library           ../../libraries/DependencyLibrary.py
+Resource          ../../libraries/onos.robot
+Resource          ../../libraries/voltctl.robot
+Resource          ../../libraries/voltha.robot
+Resource          ../../libraries/utils.robot
+Resource          ../../libraries/k8s.robot
+Resource          ../../variables/variables.robot
+Resource          ../../libraries/power_switch.robot
+
+*** Variables ***
+${POD_NAME}       flex-ocp-cord
+${KUBERNETES_CONF}    ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
+${KUBERNETES_CONFIGS_DIR}    ~/pod-configs/kubernetes-configs
+#${KUBERNETES_CONFIGS_DIR}    ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
+${KUBERNETES_YAML}    ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.yml
+${HELM_CHARTS_DIR}    ~/helm-charts
+${VOLTHA_POD_NUM}    8
+${NAMESPACE}      voltha
+${INFRA_NAMESPACE}      default
+# For below variable value, using deployment name as using grep for
+# parsing radius pod name, we can also use full radius pod name
+${RESTART_POD_NAME}    radius
+${timeout}        60s
+${of_id}          0
+${logical_id}     0
+${has_dataplane}    True
+${teardown_device}    True
+${scripts}        ../../scripts
+
+
+# Per-test logging on failure is turned off by default; set this variable to enable
+${container_log_dir}    ${None}
+
+# logging flag to enable Collect Logs, can be passed via the command line too
+# example: -v logging:False
+${logging}    True
+
+# Flag specific to Soak Jobs
+${SOAK_TEST}    False
+${bbsim_port}    50060
+
+#Test the actual on board configuration (Not yet used but it is a placeholder)
+#${testonboardconfiguration}     False
+
+#Suppress the subscribe phase
+${suppressaddsubscriber}     False
+
+#Enable or Disable the MacLearning verifier for MacLearning ONOS APP
+${maclearningenabled}   False   #Not yet used but it is a placeholder
+
+*** Test Cases ***
+Sanity E2E Test for TIM (HSIA)
+    [Documentation]     Validate the correct construction of the flow rules in ONOS and in the devices:
+    ...    Flow rules in accordance with TIM Workflow.
+    ...    Set up the clean TIM test environment.
+    ...    Make subscriptions of all possible subscribers described in the test case.
+    ...    Verify the correctness of the flow rules generated by ONOS and written in
+    ...    the respective devices (OLT and ONU), about PPPoE, IGMP and LLDP Flows.
+    ...    We use a Transparent VLAN approach
+    ...    Perform a scalability test both for flow rules in ONOS and in devices.
+    [Tags]    sanityTIM
+    [Setup]    Start Logging    SanityTestTIM
+    [Teardown]    Run Keywords    Run Keyword If    ${logging}    Collect Logs
+    ...           AND             Stop Logging    SanityTestTIM
+    Run Keyword     Setup    ${SOAK_TEST}
+    Run Keyword If    ${has_dataplane}    Clean Up Linux
+    Perform Sanity Test TIM     supress_add_subscriber=${suppressaddsubscriber}
+    ...     maclearning_enabled=${maclearningenabled}
+
+Sanity E2E Test for TIM (MCAST)
+    [Documentation]    Validate the correct construction of the flow rules in ONOS and in the devices:
+    ...    Flow rules in accordance with TIM Workflow.
+    ...    Verify the correctness of the flow/group rules generated by ONOS and written in
+    ...    the respective devices (OLT and ONU), about IGMP.
+    ...    We use a Transparent VLAN approach.
+    ...    Perform a scalability test both for flow rules in ONOS and in devices.
+    [Tags]    sanityTIM-MCast    notready
+    [Setup]    Start Logging    sanityTIM-MCast
+    [Teardown]    Run Keywords    Run Keyword If    ${logging}    Collect Logs
+    ...           AND             Stop Logging    sanityTIM-MCast
+    Run Keyword If    ${has_dataplane}    Clean Up Linux
+    TODO: Yet to Implement below keyword
+    Perform Sanity Test TIM MCAST     supress_add_subscriber=${suppressaddsubscriber}
+    ...     maclearning_enabled=${maclearningenabled}
+
+*** Keywords ***
+Setup Suite
+    [Documentation]    Set up the test suite
+    Common Test Suite Setup
+    #power_switch.robot needs it to support different vendor's power switch
+    ${switch_type}=    Get Variable Value    ${web_power_switch.type}
+    Run Keyword If  "${switch_type}"!=""    Set Global Variable    ${powerswitch_type}    ${switch_type}
+