SEBA-676 Simple E2E multicast test for SiaB

Change-Id: I0450aed5e8abc4404ce821be7c4d90c57f33d8ee
diff --git a/src/test/cord-api/Framework/Subscriber.robot b/src/test/cord-api/Framework/Subscriber.robot
index 7e2937e..ad9bb68 100644
--- a/src/test/cord-api/Framework/Subscriber.robot
+++ b/src/test/cord-api/Framework/Subscriber.robot
@@ -77,6 +77,18 @@
     Run Keyword If    '${auth_pass}' == 'False'    Sleep    20s
     Run Keyword If    '${auth_pass}' == 'False'    Check Remote File Contents    False    /tmp/wpa.log    authentication completed successfully    ${ip}    ${user}    ${pass}    ${container_type}    ${container_name}
 
+Run Multicast Client
+    [Arguments]    ${iface}    ${ip}    ${user}    ${pass}=${None}    ${container_type}=${None}    ${container_name}=${None}
+    [Documentation]    Executes mcjoin (a simple multicast client) on the RG.
+    Login And Run Command On Remote System    rm -f /tmp/mcjoin.log; timeout 10 mcjoin -c 5 -i eth0 > /tmp/mcjoin.log || true    ${ip}    ${user}    ${pass}    ${container_type}    ${container_name}
+
+Validate Multicast
+    [Arguments]    ${auth_pass}    ${iface}    ${ip}    ${user}    ${pass}=${None}    ${container_type}=${None}    ${container_name}=${None}
+    [Documentation]    Executes a particular auth request on the RG and verifies if it succeeds. auth_pass determines if authentication should pass
+    Run Multicast Client    ${iface}    ${ip}    ${user}    ${pass}    ${container_type}    ${container_name}
+    Run Keyword If    '${auth_pass}' == 'True'    Check Remote File Contents    True    /tmp/mcjoin.log    Received total: 5 packets    ${ip}    ${user}    ${pass}    ${container_type}    ${container_name}
+    Run Keyword If    '${auth_pass}' == 'False'    Check Remote File Contents    True    /tmp/mcjoin.log    Received total: 0 packets    ${ip}    ${user}    ${pass}    ${container_type}    ${container_name}
+
 Start DHCP Server on Remote Host
     [Arguments]    ${interface}    ${ip}    ${user}    ${pass}=${None}    ${container_type}=${None}    ${container_name}=${None}
     ${result}=    Login And Run Command On Remote System    dhcpd -cf /etc/dhcp/dhcpd.conf ${interface}    ${ip}    ${user}    ${pass}    ${container_type}    ${container_name}
diff --git a/src/test/cord-api/Tests/WorkflowValidations/SIAB.robot b/src/test/cord-api/Tests/WorkflowValidations/SIAB.robot
index 4c7d057..8d72f1f 100644
--- a/src/test/cord-api/Tests/WorkflowValidations/SIAB.robot
+++ b/src/test/cord-api/Tests/WorkflowValidations/SIAB.robot
@@ -55,7 +55,7 @@
     ...    Configure whitelist with correct ONU location
     ...    Validate successful authentication/DHCP/E2E ping
     [Setup]    None
-    [Tags]    stable    latest    test1
+    [Tags]    stable    latest    test1    multicast
     Subscriber Ready to Authenticate
     Validate Authentication    True    eth0    wpa_supplicant.conf    ${kube_node_ip}     ${local_user}    ${local_pass}    K8S    ${RG_CONTAINER}
     Subscriber Service Chain Created
@@ -270,6 +270,24 @@
     Subscriber Service Chain Created
     Validate DHCP and Ping    True    True    eth0    ${s_tag}    ${c_tag}    ${dst_host_ip}    ${kube_node_ip}    ${local_user}    ${local_pass}    K8S    ${RG_CONTAINER}
 
+Multicast Join Fails -> Authenticate, run DHCP -> Multicast Join Succeeds
+    [Documentation]    Validates Multicast Connectivity and object states for the given scenario:
+    ...    (Assumes multicast server upstream of BNG)
+    ...    (Assumes pimd server running on BNG)
+    ...    Configure whitelist with correct ONU location
+    ...    Run multicast client on RG
+    ...    Validate that no multicast traffic flowing yet
+    ...    Validate successful authentication/DHCP/E2E ping
+    ...    Run multicast client on RG
+    ...    Validate that multicast traffic is flowing E2E
+    [Tags]    latest    test11    multicast
+    Subscriber Ready to Authenticate
+    Validate Multicast    False    eth0    ${kube_node_ip}     ${local_user}    ${local_pass}    K8S    ${RG_CONTAINER}
+    Validate Authentication    True    eth0    wpa_supplicant.conf    ${kube_node_ip}     ${local_user}    ${local_pass}    K8S    ${RG_CONTAINER}
+    Subscriber Service Chain Created
+    Validate DHCP and Ping    True    True    eth0    ${s_tag}    ${c_tag}    ${dst_host_ip}    ${kube_node_ip}    ${local_user}    ${local_pass}    K8S    ${RG_CONTAINER}
+    Validate Multicast    True    eth0    ${kube_node_ip}     ${local_user}    ${local_pass}    K8S    ${RG_CONTAINER}
+
 *** Keywords ***
 Setup
     ${auth} =    Create List    ${XOS_USER}    ${XOS_PASSWD}