Test-VSG: Adding test scenarios for vsg.
    It covers multiple scenarios related
    to vcpe restarting , new configuration, connectivity to net,
    vlan tagging, multiple containers being launched etc.

Change-Id: Ic63323905d31d5c11f7f876389b81a10cc1ade94
diff --git a/src/test/vsg/vsgTest.py b/src/test/vsg/vsgTest.py
index 975e11c..483b6fd 100644
--- a/src/test/vsg/vsgTest.py
+++ b/src/test/vsg/vsgTest.py
@@ -185,8 +185,608 @@
     def test_vsg_for_snat(self):
         pass
 
+    def test_vsg_for_ping_from_vsg_to_external_network(self):
+	"""
+	Algo:
+	1.Create a vSG VM in compute node
+	2.Ensure VM created properly
+	3.Verify login to VM success
+	4.Do ping to external network from vSG VM
+	5.Verify that ping gets success
+	6.Verify ping success flows added in OvS
+	"""
+    def test_vsg_for_ping_from_vcpe_to_external_network(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create a vCPE container inside VM
+	3.Verify both VM and Container created properly
+        4.Verify login to vCPE container success
+        5.Do ping to external network from vCPE container
+        6.Verify that ping gets success
+        7.Verify ping success flows added in OvS
+        """
+
     def test_vsg_for_dns_service(self):
-        pass
+	"""
+	Algo:
+	1. Create a test client  in Prod VM
+	2. Create a vCPE container in vSG VM inside compute Node
+	3. Ensure vSG VM and vCPE container created properly
+	4. Enable dns service in vCPE ( if not by default )
+	5. Send ping request from test client to valid domain  address say, 'www.google'com
+	6. Verify that dns should resolve ping should success
+	7. Now  send ping request to invalid domain address say 'www.invalidaddress'.com'
+	8. Verify that dns resolve should fail and hence ping
+        """
+    def test_vsg_for_10_subscribers_for_same_service(self):
+	"""
+	Algo:
+	1.Create a vSG VM in compute node
+	2.Create 10 vCPE containers for 10 subscribers, in vSG VM
+	3.Ensure vSG VM and vCPE container created properly
+	4.From each of the subscriber, with same s-tag and different c-tag, send a ping to valid external public IP
+	5.Verify that ping success for all 10 subscribers
+	"""
+    def test_vsg_for_10_subscribers_for_same_service_ping_invalid_ip(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute Node
+	2.Create 10 vCPE containers for 10 subscribers, in vSG VM
+	3.Ensure vSG VM and vCPE container created properly
+        4.From each of the subscriber, with same s-tag and different c-tag, send a ping to invalid IP
+        5.Verify that ping fails for all 10 subscribers
+        """
+    def test_vsg_for_10_subscribers_for_same_service_ping_valid_and_invalid_ip(self):
+        """
+        Algo:
+        1.Create a vSG VM in VM
+	2.Create 10 vCPE containers for 10 subscribers, in vSG VM
+	3.Ensure vSG VM and vCPE container created properly
+        4.From first 5 subscribers, with same s-tag and different c-tag, send a ping to valid IP
+        5.Verify that ping success for all 5 subscribers
+        6.From next 5 subscribers, with same s-tag and different c-tag, send a ping to invalid IP
+        7.Verify that ping fails for all 5 subscribers
+        """
+    def test_vsg_for_100_subscribers_for_same_service(self):
+	"""
+	Algo:
+	1.Create a vSG VM in compute node
+	2.Create 100 vCPE containers for 100 subscribers, in vSG VM
+	3.Ensure vSG VM and vCPE container created properly
+	4.From each of the subscriber, with same s-tag and different c-tag, send a ping to valid external public IP
+	5.Verify that ping success for all 100 subscribers
+	"""
+    def test_vsg_for_100_subscribers_for_same_service_ping_invalid_ip(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute Node
+	2.Create 10 vCPE containers for 100 subscribers, in vSG VM
+	3.Ensure vSG VM and vCPE container created properly
+        4.From each of the subscriber, with same s-tag and different c-tag, send a ping to invalid IP
+        5.Verify that ping fails for all 100 subscribers
+        """
+    def test_vsg_for_100_subscribers_for_same_service_ping_valid_and_invalid_ip(self):
+        """
+        Algo:
+        1.Create a vSG VM in VM
+	2.Create 10 vCPE containers for 100 subscribers, in vSG VM
+	3.Ensure vSG VM and vCPE container created properly
+        4.From first 5 subscribers, with same s-tag and different c-tag, send a ping to valid IP
+        5.Verify that ping success for all 5 subscribers
+        6.From next 5 subscribers, with same s-tag and different c-tag, send a ping to invalid IP
+        7.Verify that ping fails for all 5 subscribers
+        """
+    def test_vsg_for_packet_received_with_invalid_ip_fields(self):
+	"""
+	Algo:
+	1.Create a vSG VM in compute node
+	2.Create a vCPE container in vSG VM
+	3.Ensure vSG VM and vCPE container created properly
+	4.From subscriber, send a ping packet with invalid ip fields
+	5.Verify that vSG drops the packet
+	6.Verify ping fails
+	"""
+    def test_vsg_for_packet_received_with_invalid_mac_fields(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create a vCPE container in vSG VM
+        3.Ensure vSG VM and vCPE container created properly
+        4.From subscriber, send a ping packet with invalid mac fields
+        5.Verify that vSG drops the packet
+        6.Verify ping fails
+        """
+    def test_vsg_for_vlan_id_mismatch_in_stag(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute Node
+	2.Create a vCPE container in vSG VM
+	3.Ensure vSG VM and vCPE container created properly
+        4.Send a ping request to external valid IP from subscriber, with incorrect vlan id in  s-tag and valid c-tag
+        5.Verify that ping fails as the packet drops at VM entry
+        6.Repeat step 4 with correct s-tag
+	7.Verify that ping success
+        """
+    def test_vsg_for_vlan_id_mismatch_in_ctag(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+	2.Create a vCPE container in vSG VM
+	3.Ensure vSG VM and vCPE container created properly
+        4.Send a ping request to external valid IP from subscriber, with valid s-tag and incorrect vlan id in c-tag
+        5.Verify that ping fails as the packet drops at vCPE container entry
+        6.Repeat step 4 with valid s-tag and c-tag
+        7.Verify that ping success
+        """
+    def test_vsg_for_matching_and_mismatching_vlan_id_in_stag(self):
+        """
+        Algo:
+        1.Create two vSG VMs in compute node
+	2.Create a vCPE container in each vSG VM
+	3.Ensure vSG VM and vCPE container created properly
+        4.From subscriber one, send ping request with valid s and c tags
+        5.From subscriber two, send ping request with vlan id mismatch in s-tag and valid c tags
+        6.Verify that ping success for only subscriber one and fails for two.
+        """
+    def test_vsg_for_matching_and_mismatching_vlan_id_in_ctag(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+	2.Create two vCPE containers in vSG VM
+	3.Ensure vSG VM and vCPE container created properly
+        4.From subscriber one, send ping request with valid s and c tags
+        5.From subscriber two, send ping request with valid s-tag and vlan id mismatch in c-tag
+        6.Verify that ping success for only subscriber one and fails for two
+        """
+    def test_vsg_for_out_of_range_vlanid_in_ctag(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+	2.Create a vCPE container in vSG VM
+	3.Ensure vSG VM and vCPE container created properly
+        4.From subscriber, send ping request with valid stag and vlan id in c-tag is an out of range value ( like 0,4097 )
+        4.Verify that ping fails as the ping packets drops at vCPE container entry
+        """
+    def test_vsg_for_out_of_range_vlanid_in_stag(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+	2.Create a vCPE container in vSG VM
+	3.Ensure vSG VM and vCPE container created properly
+        2.From subscriber, send ping request with vlan id in s-tag is an out of range value ( like 0,4097 ), with valid c-tag
+        4.Verify that ping fails as the ping packets drops at vSG VM entry
+        """
+    def test_vsg_without_creating_vcpe_instance(self):
+	"""
+	Algo:
+	1.Create a vSG VM in compute Node
+	2.Ensure vSG VM created properly
+	3.Do not create vCPE container inside vSG VM
+	4.From a subscriber, send ping to external valid IP
+	5.Verify that ping fails as the ping packet drops at vSG VM entry itself.
+	"""
+    def test_vsg_for_remove_vcpe_instance(self):
+	"""
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create a vCPE container in vSG VM
+        3.Ensure vSG VM and vCPE container created properly
+        4.From subscriber, send ping request with valid s-tag and c-tag
+        5.Verify that ping success
+	6.Verify ping success flows in OvS switch in compute node
+	7.Now remove the vCPE container in vSG VM
+	8.Ensure that the container removed properly
+	9.Repeat step 4
+	10.Verify that now, ping fails
+        """
+    def test_vsg_for_restart_vcpe_instance(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create a vCPE container in vSG VM
+        3.Ensure vSG VM and vCPE container created properly
+        4.From subscriber, send ping request with valid s-tag and c-tag
+        5.Verify that ping success
+        6.Verify ping success flows in OvS switch in compute node
+        7.Now restart the vCPE container in vSG VM
+        8.Ensure that the container came up after restart
+        9.Repeat step 4
+        10.Verify that now,ping gets success and flows added in OvS
+        """
+    def test_vsg_for_restart_vsg_vm(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create a vCPE container in vSG VM
+        3.Ensure vSG VM and vCPE container created properly
+        4.From subscriber, send ping request with valid s-tag and c-tag
+        5.Verify that ping success
+        6.Verify ping success flows in OvS switch in compute node
+        7.Now restart the vSG VM
+        8.Ensure that the vSG comes up properly after restart
+	9.Verify that vCPE container comes up after vSG restart
+        10.Repeat step 4
+        11.Verify that now,ping gets success and flows added in OvS
+        """
+    def test_vsg_for_pause_vcpe_instance(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create a vCPE container in vSG VM
+        3.Ensure vSG VM and vCPE container created properly
+        4.From subscriber, send ping request with valid s-tag and c-tag
+        5.Verify that ping success
+        6.Verify ping success flows in OvS switch in compute node
+        7.Now pause vCPE container in vSG VM for a while
+        8.Ensure that the container state is pause
+        9.Repeat step 4
+        10.Verify that now,ping fails now and verify flows in OvS
+	11.Now  resume the container
+	12.Now repeat step 4 again
+	13.Verify that now, ping gets success
+	14.Verify ping success flows in OvS
+        """
+    def test_vsg_for_extract_all_compute_stats_from_all_vcpe_containers(self):
+	"""
+	Algo:
+	1.Create a vSG VM in compute node
+	2.Create 10 vCPE containers in VM
+	3.Ensure vSG VM and vCPE containers created properly
+	4.Login to all vCPE containers
+	4.Get all compute stats from all vCPE containers
+	5.Verify the stats # verification method need to add
+	"""
+    def test_vsg_for_extract_dns_stats_from_all_vcpe_containers(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create 10 vCPE containers in VM
+        3.Ensure vSG VM and vCPE containers created properly
+	4.From  10 subscribers, send ping to valid and invalid dns hosts
+        5.Verify dns resolves and ping success for valid dns hosts
+	6.Verify ping fails for invalid dns hosts
+        7.Verify dns host name resolve flows in OvS
+	8.Login to all 10 vCPE containers
+	9.Extract all dns stats
+	10.Verify dns stats for queries sent, queries received for dns host resolve success and failed scenarios
+        """
+    def test_vsg_for_subscriber_access_two_vsg_services(self):
+	"""
+	# Intention is to verify if subscriber can reach internet via two vSG VMs
+	Algo:
+	1.Create two vSG VMs for two services in compute node
+	2.Create one vCPE container in each VM for one subscriber
+	3.Ensure VMs and containers created properly
+	4.From subscriber end, send ping to public IP with stag corresponds to vSG-1 VM and ctag
+	5.Verify ping gets success
+	6.Verify ping success flows in OvS
+	7.Now repeat step 4 with stag corresponds to vSG-2 VM
+	8.Verify that ping again success
+	9.Verify ping success flows in OvS
+	"""
+    def test_vsg_for_subscriber_access_service2_if_service1_goes_down(self):
+	"""
+	# Intention is to verify if subscriber can reach internet via vSG2 if vSG1 goes down
+        Algo:
+        1.Create two vSG VMs for two services in compute node
+        2.Create one vCPE container in each VM for one subscriber
+        3.Ensure VMs and containers created properly
+        4.From subscriber end, send ping to public IP with stag corresponds to vSG-1 VM and ctag
+        5.Verify ping gets success
+        6.Verify ping success flows in OvS
+	7.Down the vSG-1 VM
+        8.Now repeat step 4
+	9.Verify that ping fails as vSG-1 is down
+        10.Repeat step 4 with stag corresponding to vSG-2
+        9.Verify ping success and flows added in OvS
+        """
+    def test_vsg_for_subscriber_access_service2_if_service1_goes_restart(self):
+        """
+        # Intention is to verify if subscriber can reach internet via vSG2 if vSG1 restarts
+        Algo:
+        1.Create two vSG VMs for two services in compute node
+        2.Create one vCPE container in each VM for one subscriber
+        3.Ensure VMs and containers created properly
+        4.From subscriber end, send ping to public IP with stag corresponds to vSG-1 VM and ctag
+        5.Verify ping gets success
+        6.Verify ping success flows added in OvS
+        7.Now restart vSG-1 VM
+        8.Now repeat step 4 while vSG-1 VM restarts
+        9.Verify that ping fails as vSG-1 is restarting
+        10.Repeat step 4 with stag corresponding to vSG-2 while vSG-1 VM restarts
+        11.Verify ping success and flows added in OvS
+        """
+    def test_vsg_for_multiple_vcpes_in_vsg_vm_with_one_vcpe_goes_down(self):
+        """
+        # Intention is to verify if subscriber can reach internet via vSG2 if vSG1 goes down
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create two vCPE containers corresponds to two subscribers in vSG VM
+        3.Ensure VM and containers created properly
+        4.From subscriber-1 end, send ping to public IP with ctag corresponds to vCPE-1 and stag
+        5.Verify ping gets success
+        6.Verify ping success flows added in OvS
+        7.Now stop vCPE-1 container
+        8.Now repeat step 4
+        9.Verify that ping fails as vCPE-1 container is down
+        10.Repeat step 4 with ctag corresponding to vCPE-2 container
+        11.Verify ping success and flows added in OvS
+        """
+    def test_vsg_for_multiple_vcpes_in_vsg_vm_with_one_vcpe_restart(self):
+        """
+        # Intention is to verify if subscriber can reach internet via vSG2 if vSG1 restarts
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create two vCPE containers corresponds to two subscribers in vSG VM
+        3.Ensure VM and containers created properly
+        4.From subscriber-1 end, send ping to public IP with ctag corresponds to vCPE-1 and stag
+        5.Verify ping gets success
+        6.Verify ping success flows added in OvS
+        7.Now restart vCPE-1 container
+        8.Now repeat step 4 while vCPE-1 restarts
+        9.Verify that ping fails as vCPE-1 container is restarts
+        10.Repeat step 4 with ctag corresponding to vCPE-2 container while vCPE-1 restarts
+        11..Verify ping success and flows added in OvS
+        """
+    def test_vsg_for_multiple_vcpes_in_vsg_vm_with_one_vcpe_pause(self):
+        """
+        # Intention is to verify if subscriber can reach internet via vSG2 if vSG1 paused
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create two vCPE containers corresponds to two subscribers in vSG VM
+        3.Ensure VM and containers created properly
+        4.From subscriber-1 end, send ping to public IP with ctag corresponds to vCPE-1 and stag
+        5.Verify ping gets success
+        6.Verify ping success flows added in OvS
+        7.Now pause vCPE-1 container
+        8.Now repeat step 4 while vCPE-1 in pause state
+        9.Verify that ping fails as vCPE-1 container in pause state
+        10.Repeat step 4 with ctag corresponding to vCPE-2 container while vCPE-1 in pause state
+        11.Verify ping success and flows added in OvS
+        """
+    def test_vsg_for_multiple_vcpes_in_vsg_vm_with_one_vcpe_removed(self):
+        """
+        # Intention is to verify if subscriber can reach internet via vSG2 if vSG1 removed
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create two vCPE containers corresponds to two subscribers in vSG VM
+        3.Ensure VM and containers created properly
+        4.From subscriber-1 end, send ping to public IP with ctag corresponds to vCPE-1 and stag
+        5.Verify ping gets success
+        6.Verify ping success flows added in OvS
+        7.Now remove vCPE-1 container
+        8.Now repeat step 4
+        9.Verify that ping fails as vCPE-1 container removed
+        10.Repeat step 4 with ctag corresponding to vCPE-2 container
+        11.Verify ping success and flows added in OvS
+        """
+    def test_vsg_for_vcpe_instance_removed_and_added_again(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create a vCPE container in vSG VM
+        3.Ensure VM and containers created properly
+        4.From subscriber end, send ping to public IP
+        5.Verify ping gets success
+        6.Verify ping success flows added in OvS
+        7.Now remove vCPE container in vSG VM
+        8.Now repeat step 4
+        9.Verify that ping fails as vCPE container removed
+	10.Create the vCPE container again for the same subscriber
+	11.Ensure that vCPE created now
+        12.Now repeat step 4
+        13.Verify ping success and flows added in OvS
+        """
+    def test_vsg_for_vsg_vm_removed_and_added_again(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create a vCPE container in vSG VM
+        3.Ensure VM and containers created properly
+        4.From subscriber end, send ping to public IP
+        5.Verify ping gets success
+        6.Verify ping success flows added in OvS
+        7.Now remove vSG VM
+        8.Now repeat step 4
+        9.Verify that ping fails as vSG VM not exists
+        10.Create the vSG VM and vCPE  container in VM again
+        11.Ensure that vSG and vCPE created
+        12.Now repeat step 4
+        13.Verify ping success and flows added in OvS
+        """
+
+    #Test vSG - Subscriber Configuration
+    def test_vsg_for_configuring_new_subscriber_in_vcpe(self):
+	"""
+	Algo:
+	1.Create a vSG VM in compute node
+        2.Create a vCPE container in vSG VM
+        3.Ensure VM and containers created properly
+	4.Configure a subscriber in XOS and assign a service id
+	5.Set the admin privileges to the subscriber
+	6.Verify subscriber configuration is success
+	"""
+    def test_vsg_for_adding_subscriber_devices_in_vcpe(self):
+	"""
+	Algo:
+	1.Create a vSG VM in compute node
+        2.Create a vCPE container in vSG VM
+        3.Ensure VM and containers created properly
+        4.Configure a subscriber in XOS and assign a service id
+	5.Verify subscriber successfully configured in vCPE
+	6.Now add devices( Mac addresses ) under the subscriber admin group
+	7.Verify all devices ( Macs ) added successfully
+	"""
+    def test_vsg_for_removing_subscriber_devices_in_vcpe(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create a vCPE container in vSG VM
+        3.Ensure VM and containers created properly
+        4.Configure a subscriber in XOS and assign a service id
+        5.Verify subscriber successfully configured
+        6.Now add devices( Mac addresses ) under the subscriber admin group
+        7.Verify all devices ( Macs ) added successfully
+	8.Now remove All the added devices in XOS
+	9.Verify all the devices removed
+        """
+    def test_vsg_for_modify_subscriber_devices_in_vcpe(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create a vCPE container in vSG VM
+        3.Ensure VM and containers created properly
+        4.Configure a user in XOS and assign a service id
+        5.Verify subscriber successfully configured in vCPE.
+        6.Now add devices( Mac addresses ) under the subscriber admin group
+        7.Verify all devices ( Macs ) added successfully
+        8.Now remove few devices in XOS
+        9.Verify devices removed successfully
+	10.Now add few additional devices in XOS  under the same subscriber admin group
+	11.Verify newly added devices successfully added
+        """
+    def test_vsg_for_vcpe_login_fails_with_incorrect_subscriber_credentials(self):
+	"""
+	Algo:
+        1.Create a vSG VM in compute node
+        2.Create a vCPE container in vSG VM
+        3.Ensure VM and containers created properly
+        4.Configure a subscriber in XOS and assign a service id
+        5.Verify subscriber successfully configured
+        6.Now add devices( Mac addresses ) under the subscriber admin group
+        7.Verify all devices ( Macs ) added successfully
+	8.Login vCPE with credentials with which subscriber configured
+	9.Verify subscriber successfully logged in
+	10.Logout and login again with incorrect credentials ( either user name or password )
+	11.Verify login attempt to vCPE fails wtih incorrect credentials
+	"""
+    def test_vsg_for_subscriber_configuration_in_vcpe_retain_after_vcpe_restart(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create a vCPE container in vSG VM
+        3.Ensure VM and containers created properly
+        4.Configure a subscriber in XOS  and assign a service id
+        5.Verify subscriber successfully configured
+        6.Now add devices( Mac addresses ) under the subscriber admin group
+        7.Verify all devices ( Macs ) added successfully
+        8.Restart vCPE ( locate backup config path while restart )
+        9.Verify subscriber details in vCPE after restart should be same as before the restart
+        """
+    def test_vsg_for_create_multiple_vcpe_instances_and_configure_subscriber_in_each_instance(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create 2 vCPE containers in vSG VM
+        3.Ensure VM and containers created properly
+        4.Configure a subscriber in XOS for each vCPE instance and assign a service id
+        5.Verify subscribers successfully configured
+	6.Now login vCPE-2 with subscriber-1 credentials
+	7.Verify login fails
+	8.Now login vCPE-1 with subscriber-2 credentials
+	9.Verify login fails
+	10.Now login vCPE-1 with subscriber-1 and vCPE-2 with  subscriber-2 credentials
+	11.Verify that both the subscribers able to login to their respective vCPE containers
+	"""
+    def test_vsg_for_same_subscriber_can_be_configured_for_multiple_services(self):
+        """
+        Algo:
+        1.Create 2 vSG VMs in compute node
+        2.Create a vCPE container in each vSG VM
+        3.Ensure VMs and containers created properly
+        4.Configure same subscriber in XOS for each vCPE instance and assign a service id
+        5.Verify subscriber successfully configured
+        6.Now login vCPE-1 with subscriber credentials
+        7.Verify login success
+        8.Now login vCPE-2 with the same subscriber credentials
+        9.Verify login success
+        """
+
+    #Test Example Service
+    def test_vsg_for_subcriber_avail_example_service_running_in_apache_server(self):
+	"""
+	Algo:
+        1.Create a vSG VM in compute node
+        2.Create a vCPE container in each vSG VM
+        3.Ensure VM and container created properly
+        4.Configure a subscriber in XOS for the vCPE instance and assign a service id
+	5.On-board an example service into cord pod
+	6.Create a VM in compute node and run the example service ( Apache server )
+	7.Configure the example service with service specific and subscriber specific messages
+	8.Verify example service on-boarded successfully
+	9.Verify example service running in VM
+	10.Run a curl command from subscriber to reach example service
+	11.Verify subscriber can successfully reach example service via vSG
+	12.Verify that service specific and subscriber specific messages
+	"""
+    def test_vsg_for_subcriber_avail_example_service_running_in_apache_server_after_service_restart(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create a vCPE container in each vSG VM
+        3.Ensure VM and container created properly
+        4.Configure a subscriber in XOS for the vCPE instance and assign a service id
+        5.On-board an example service into cord pod
+        6.Create a VM in compute node and run the example service ( Apache server )
+        7.Configure the example service with service specific and subscriber specific messages
+        8.Verify example service on-boarded successfully
+        9.Verify example service running in VM
+        10.Run a curl command from subscriber to reach example service
+        11.Verify subscriber can successfully reach example service via vSG
+        12.Verify that service specific and subscriber specific messages
+	13.Restart example service running in VM
+	14.Repeat step 10
+	15.Verify the same results as mentioned in steps 11, 12
+        """
+
+    #vCPE Firewall Functionality
+    def test_vsg_firewall_for_creating_acl_rule_based_on_source_ip(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create vCPE container in the VM
+        3.Ensure vSG VM and vCPE container created properly
+        4.Configure ac acl rule in vCPE to deny IP traffic from a source IP
+        5.Bound the acl rule to WAN interface of  vCPE
+        6.Verify configuration in vCPE is success
+        8.Verify flows added in OvS
+        """
+    def test_vsg_firewall_for_creating_acl_rule_based_on_destination_ip(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create vCPE container in the VM
+        3.Ensure vSG VM and vCPE container created properly
+        4.Configure ac acl rule in vCPE to deny IP traffic to a destination ip
+        5.Bound the acl rule to WAN interface of  vCPE
+        6.Verify configuration in vCPE is success
+        8.Verify flows added in OvS
+        """
+    def test_vsg_firewall_for_acl_deny_rule_based_on_source_ip_traffic(self):
+	"""
+	Algo:
+	1.Create a vSG VM in compute node
+	2.Create vCPE container in the VM
+	3.Ensure vSG VM and vCPE container created properly
+	4.Configure ac acl rule in vCPE to deny IP traffic from a source IP
+	5.Bound the acl rule to WAN interface of  vCPE
+	6.From subscriber, send ping to the denied IP address
+	7.Verify that ping fails as vCPE denies ping response
+	8.Verify flows added in OvS
+	"""
+    def test_vsg_firewall_for_acl_deny_rule_based_on_destination_ip_traffic(self):
+        """
+        Algo:
+        1.Create a vSG VM in compute node
+        2.Create vCPE container in the VM
+        3.Ensure vSG VM and vCPE container created properly
+        4.Configure ac acl rule in vCPE to deny IP traffic to a destination IP
+        5.Bound the acl rule to WAN interface of  vCPE
+        6.From subscriber, send ping to the denied IP address
+        7.Verify that ping fails as vCPE drops the ping request at WAN interface
+        8.Verify flows added in OvS
+        """
 
     def test_vsg_dnsmasq(self):
         pass