diff --git a/src/test/voltha/volthaTest.py b/src/test/voltha/volthaTest.py
index d7a6892..2578521 100644
--- a/src/test/voltha/volthaTest.py
+++ b/src/test/voltha/volthaTest.py
@@ -22,3 +22,230 @@
         log_test.info('Enabling OLT type %s, MAC %s' %(self.OLT_TYPE, self.OLT_MAC))
         status = self.voltha.enable_device(self.OLT_TYPE, self.OLT_MAC)
         assert_equal(status, True)
+
+    def test_subscriber_with_voltha_for_eap_tls_authentication(self):
+        """
+        Test Method:
+        0. Make sure that voltha is up and running on CORD-POD setup.
+        1. OLT and ONU is detected and validated.
+        2. Bring up freeradius server container using CORD TESTER and make sure that ONOS have connectivity to freeradius server.
+        3. Issue  auth request packets from CORD TESTER voltha test module acting as a subscriber..
+        4. Validate that eap tls valid auth packets are being exchanged between subscriber, onos and freeradius.
+        5. Verify that subscriber is authenticated successfully.
+        """
+
+    def test_subscriber_with_voltha_for_eap_tls_authentication_failure(self):
+        """
+        Test Method:
+        0. Make sure that voltha is up and running on CORD-POD setup.
+        1. OLT and ONU is detected and validated.
+        2. Bring up freeradius server container using CORD TESTER and make sure that ONOS have connectivity to freeradius server.
+        3. Issue  tls auth packets from CORD TESTER voltha test module acting as a subscriber..
+        4. Validate that eap tls without cert auth packet is being exchanged between subscriber, onos and freeradius.
+        5. Verify that subscriber authentication is unsuccessful..
+        """
+
+    def test_subscriber_with_voltha_for_eap_tls_authentication_using_invalid_cert(self):
+        """
+        Test Method:
+        0. Make sure that voltha is up and running on CORD-POD setup.
+        1. OLT and ONU is detected and validated.
+        2. Bring up freeradius server container using CORD TESTER and make sure that ONOS have connectivity to freeradius server.
+        3. Issue  tls auth packets and exchange invalid cert from CORD TESTER voltha test module acting as a subscriber..
+        4. Validate that eap tls with invalid cert auth packet is being exchanged between subscriber, onos and freeradius.
+        5. Verify that subscriber authentication is unsuccessful..
+        """
+
+    def test_subscriber_with_voltha_for_eap_tls_authentication_with_aaa_app_deactivation(self):
+        """
+        Test Method:
+        0. Make sure that voltha is up and running on CORD-POD setup.
+        1. OLT and ONU is detected and validated.
+        2. Bring up freeradius server container using CORD TESTER and make sure that ONOS have connectivity to freeradius server.
+        3. Issue  tls auth packets from CORD TESTER voltha test module acting as a subscriber..
+        4. Validate that eap tls without sending client hello, it's not being exchanged between client, onos and freeradius.
+        5. Verify that subscriber authentication is unsuccessful..
+        """
+
+    def test_subscriber_with_voltha_for_eap_tls_authentication_restarting_radius_server(self):
+        """
+        Test Method:
+        0. Make sure that voltha is up and running on CORD-POD setup.
+        1. OLT and ONU is detected and validated.
+        2. Bring up freeradius server container using CORD TESTER and make sure that ONOS have connectivity to freeradius server.
+        3. Issue  tls auth packets from CORD TESTER voltha test module acting as a subscriber..
+        4. Validate that eap tls with restart of radius server and packets are being exchanged between subscriber, onos and freeradius.
+        5. Verify that subscriber authentication is unsuccessful..
+        """
+
+    def test_subscriber_with_voltha_for_eap_tls_authentication_with_disabled_olt(self):
+        """
+        Test Method:
+        0. Make sure that voltha is up and running on CORD-POD setup.
+        1. OLT and ONU is detected and validated.
+        2. Bring up freeradius server container using CORD TESTER and make sure that ONOS have connectivity to freeradius server.
+        3. Issue  tls auth packets from CORD TESTER voltha test module acting as a subscriber..
+        5. Validate that eap tls packets are being exchanged between subscriber, onos and freeradius.
+        6. Verify that subscriber authenticated successfully.
+        7. Disable olt which is seen in voltha and issue tls auth packets from subscriber.
+        8. Validate that eap tls packets are not being exchanged between subscriber, onos and freeradius.
+        9. Verify that subscriber authentication is unsuccessful..
+        """
+
+    def test_subscriber_with_voltha_for_eap_tls_authentication_disabling_uni_port_in_voltha(self):
+        """
+        Test Method:
+        0. Make sure that voltha is up and running on CORD-POD setup.
+        1. OLT and ONU is detected and validated.
+        2. Bring up freeradius server container using CORD TESTER and make sure that ONOS have connectivity to freeradius server.
+        3. Issue  tls auth packets from CORD TESTER voltha test module acting as a subscriber..
+        5. Validate that eap tls packets are being exchanged between subscriber, onos and freeradius.
+        6. Verify that subscriber authenticated successfully.
+        7. Disable uni port which is seen in voltha and issue tls auth packets from subscriber.
+        8. Validate that eap tls packets are not being exchanged between subscriber, onos and freeradius.
+        9. Verify that subscriber authentication is unsuccessful..
+        """
+
+    def test_subscriber_with_voltha_for_eap_tls_authentication_restarting_olt(self):
+        """
+        Test Method:
+        0. Make sure that voltha is up and running on CORD-POD setup.
+        1. OLT and ONU is detected and validated.
+        2. Bring up freeradius server container using CORD TESTER and make sure that ONOS have connectivity to freeradius server.
+        3. Issue  tls auth packets from CORD TESTER voltha test module acting as a subscriber..
+        5. Validate that eap tls packets are being exchanged between subscriber, onos and freeradius.
+        6. Verify that subscriber authenticated successfully.
+        7. Restart olt which is seen in voltha and issue tls auth packets from subscriber.
+        8. Validate that eap tls packets are not being exchanged between subscriber, onos and freeradius.
+        9. Verify that subscriber authentication is unsuccessful..
+        """
+
+    def test_subscriber_with_voltha_for_eap_tls_authentication_restarting_onu(self):
+        """
+        Test Method:
+        0. Make sure that voltha is up and running on CORD-POD setup.
+        1. OLT and ONU is detected and validated.
+        2. Bring up freeradius server container using CORD TESTER and make sure that ONOS have connectivity to freeradius server.
+        3. Issue  tls auth packets from CORD TESTER voltha test module acting as a subscriber..
+        5. Validate that eap tls packets are being exchanged between subscriber, onos and freeradius.
+        6. Verify that subscriber authenticated successfully.
+        7. Restart onu which is seen in voltha and issue tls auth packets from subscriber.
+        8. Validate that eap tls packets are not being exchanged between subscriber, onos and freeradius.
+        9. Verify that subscriber authentication is unsuccessful..
+        """
+
+    def test_two_subscribers_with_voltha_for_eap_tls_authentication(self):
+        """
+        Test Method:
+        0. Make sure that voltha is up and running on CORD-POD setup.
+        1. OLT is detected and ONU ports(nni and 2 uni's) are being seen.
+        2. Bring up freeradius server container using CORD TESTER and make sure that ONOS have connectivity to freeradius server.
+        3. Bring up two Residential subscribers from cord-tester and issue tls auth packets from CORD TESTER voltha test module acting as a subscriber..
+        4. Validate that eap tls valid auth packets are being exchanged between two subscriber, onos and freeradius.
+        5. Verify that two subscribers are authenticated successfully.
+        """
+
+    def test_two_subscribers_with_voltha_for_eap_tls_authentication_using_same_certificates(self):
+        """
+        Test Method:
+        0. Make sure that voltha is up and running on CORD-POD setup.
+        1. OLT is detected and ONU ports(nni and 2 uni's) are being seen.
+        2. Bring up freeradius server container using CORD TESTER and make sure that ONOS have connectivity to freeradius server.
+        3. Bring up two Residential subscribers from cord-tester and issue tls auth packets from CORD TESTER voltha test module acting as a subscriber..
+        4. Validate that two valid certificates are being exchanged between two subscriber, onos and freeradius.
+        5. Verify that two subscribers are not authenticated.
+        """
+
+    def test_two_subscribers_with_voltha_for_eap_tls_authentication_initiating_invalid_tls_packets_for_one_subscriber(self):
+        """
+        Test Method:
+        0. Make sure that voltha is up and running on CORD-POD setup.
+        1. OLT is detected and ONU ports(nni and 2 uni's) are being seen.
+        2. Bring up freeradius server container using CORD TESTER and make sure that ONOS have connectivity to freeradius server.
+        3. Bring up two Residential subscribers from cord-tester and issue tls auth packets from CORD TESTER voltha test module acting as a subscriber..
+        4. Validate that eap tls valid auth packets are being exchanged between valid subscriber, onos and freeradius.
+        5. Validate that eap tls valid auth packets are being exchanged between invalid client, onos and freeradius.
+        6. Verify that valid subscriber authenticated successfully.
+        7. Verify that invalid subscriber are not authenticated successfully.
+        """
+
+    def test_two_subscribers_with_voltha_for_eap_tls_authentication_initiating_invalid_cert_for_one_subscriber(self):
+        """
+        Test Method:
+        0. Make sure that voltha is up and running on CORD-POD setup.
+        1. OLT is detected and ONU ports(nni and 2 uni's) are being seen.
+        2. Bring up freeradius server container using CORD TESTER and make sure that ONOS have connectivity to freeradius server.
+        3. Bring up two Residential subscribers from cord-tester and issue tls auth packets from CORD TESTER voltha test module acting as a subscriber..
+        4. Validate that eap tls valid auth packets are being exchanged between valid subscriber, onos and freeradius.
+        5. Validate that eap tls invalid cert auth packets are being exchanged between invalid subscriber, onos and freeradius.
+        6. Verify that valid subscriber authenticated successfully.
+        7. Verify that invalid subscriber are not authenticated successfully.
+        """
+
+    def test_two_subscribers_with_voltha_for_eap_tls_authentication_with_one_uni_port_disabled(self):
+        """
+        Test Method:
+        0. Make sure that voltha is up and running on CORD-POD setup.
+        1. OLT and ONU is detected and validated.
+        2. Bring up freeradius server container using CORD TESTER and make sure that ONOS have connectivity to freeradius server.
+        3. Bring up two Residential subscribers from cord-tester and issue tls auth packets from CORD TESTER voltha test module acting as a subscriber..
+        5. Validate that eap tls packets are being exchanged between two subscriber, onos and freeradius.
+        6. Verify that subscriber authenticated successfully.
+        7. Disable one of the uni port which is seen in voltha and issue tls auth packets from subscriber.
+        8. Validate that eap tls packets are not being exchanged between one subscriber, onos and freeradius.
+        9. Verify that subscriber authentication is unsuccessful..
+        10. Verify that other subscriber authenticated successfully.
+        """
+
+    def test_subscriber_with_voltha_for_dhcp_request(self):
+        """
+        Test Method:
+        0. Make sure that voltha is up and running on CORD-POD setup.
+        1. OLT and ONU is detected and validated.
+        2. Issue  tls auth packets from CORD TESTER voltha test module acting as a subscriber..
+        3. Send dhcp request from residential subscrber to dhcp server which is running as onos app.
+        4. Verify that subscriber get ip from dhcp server successfully.
+        """
+
+    def test_subscriber_with_voltha_for_dhcp_request_with_invalid_broadcast_source_mac(self):
+        """
+        Test Method:
+        0. Make sure that voltha is up and running on CORD-POD setup.
+        1. OLT and ONU is detected and validated.
+        2. Issue  tls auth packets from CORD TESTER voltha test module acting as a subscriber..
+        3. Send dhcp request with invalid source mac broadcast from residential subscrber to dhcp server which is running as onos app.
+        4. Verify that subscriber should not get ip from dhcp server.
+        """
+
+    def test_subscriber_with_voltha_for_dhcp_request_with_invalid_multicast_source_mac(self):
+        """
+        Test Method:
+        0. Make sure that voltha is up and running on CORD-POD setup.
+        1. OLT and ONU is detected and validated.
+        2. Issue  tls auth packets from CORD TESTER voltha test module acting as a subscriber..
+        3. Send dhcp request with invalid source mac multicast from residential subscrber to dhcp server which is running as onos app.
+        4. Verify that subscriber should not get ip from dhcp server.
+        """
+
+    def test_subscriber_with_voltha_for_dhcp_request_with_invalid_source_mac(self):
+        """
+        Test Method:
+        0. Make sure that voltha is up and running on CORD-POD setup.
+        1. OLT and ONU is detected and validated.
+        2. Issue  tls auth packets from CORD TESTER voltha test module acting as a subscriber..
+        3. Send dhcp request with invalid source mac zero from residential subscrber to dhcp server which is running as onos app.
+        4. Verify that subscriber should not get ip from dhcp server.
+        """
+
+    def test_subscriber_with_voltha_for_dhcp_request_and_release(self):
+        """
+        Test Method:
+        0. Make sure that voltha is up and running on CORD-POD setup.
+        1. OLT and ONU is detected and validated.
+        2. Issue  tls auth packets from CORD TESTER voltha test module acting as a subscriber..
+        3. Send dhcp request from residential subscrber to dhcp server which is running as onos app.
+        4. Verify that subscriber get ip from dhcp server successfully.
+        5. Send dhcp release from residential subscrber to dhcp server which is running as onos app.
+        6  Verify that subscriber should not get ip from dhcp server, ping to gateway.
+        """
+
