diff --git a/src/test/cordSubscriber/cordSubscriberTest.py b/src/test/cordSubscriber/cordSubscriberTest.py
index 27dbc97..0447fcf 100644
--- a/src/test/cordSubscriber/cordSubscriberTest.py
+++ b/src/test/cordSubscriber/cordSubscriberTest.py
@@ -196,7 +196,7 @@
       num_subscribers = 0
       num_channels = 0
       recv_timeout = False
-      onos_restartable = not bool(int(os.getenv('ONOS_RESTART_DISABLED', 0)))
+      onos_restartable = bool(int(os.getenv('ONOS_RESTART', 0)))
 
       INTF_TX_DEFAULT = 'veth2'
       INTF_RX_DEFAULT = 'veth0'
diff --git a/src/test/dhcprelay/dhcprelayTest.py b/src/test/dhcprelay/dhcprelayTest.py
index c9de4e4..a5a7cf6 100644
--- a/src/test/dhcprelay/dhcprelayTest.py
+++ b/src/test/dhcprelay/dhcprelayTest.py
@@ -23,6 +23,7 @@
 from DHCP import DHCPTest
 from OnosCtrl import OnosCtrl, get_mac
 from OltConfig import OltConfig
+from CordTestServer import cord_test_onos_restart
 from portmaps import g_subscriber_port_map
 import threading, random
 from threading import current_thread
@@ -64,6 +65,8 @@
     running_time = 0
     total_success = 0
     total_failure = 0
+    #just in case we want to reset ONOS to default network cfg after relay tests
+    onos_restartable = bool(int(os.getenv('ONOS_RESTART', 0)))
 
     @classmethod
     def setUpClass(cls):
@@ -87,6 +90,7 @@
         except: pass
         cls.onos_ctrl.deactivate()
         cls.dhcpd_stop()
+        cls.dhcp_relay_cleanup()
 
     @classmethod
     def dhcp_relay_setup(cls):
@@ -117,6 +121,13 @@
             cls.onos_interface_load(interface_list)
 
     @classmethod
+    def dhcp_relay_cleanup(cls):
+        ##reset the ONOS port configuration back to default
+        if cls.onos_restartable is True:
+            log.info('Cleaning up dhcp relay config by restarting ONOS with default network cfg')
+            return cord_test_onos_restart(config = {})
+
+    @classmethod
     def onos_load_config(cls, config):
         status, code = OnosCtrl.config(config)
         if status is False:
diff --git a/src/test/setup/cord-test.py b/src/test/setup/cord-test.py
index 31d72ab..4f406e3 100755
--- a/src/test/setup/cord-test.py
+++ b/src/test/setup/cord-test.py
@@ -302,7 +302,7 @@
 
     test_containers = []
     #These tests end up restarting ONOS/quagga/radius
-    tests_exempt = ('vrouter', 'cordSubscriber', 'proxyarp')
+    tests_exempt = ('vrouter', 'cordSubscriber', 'proxyarp', 'dhcprelay')
     if args.test_type.lower() == 'all':
         tests = CordTester.ALL_TESTS
         args.quagga = True
@@ -362,7 +362,7 @@
                      'QUAGGA_IP': test_host,
                      'CORD_TEST_HOST' : test_host,
                      'CORD_TEST_PORT' : test_port,
-                     'ONOS_RESTART_DISABLED' : 1 if args.olt and args.test_controller else 0,
+                     'ONOS_RESTART' : 0 if args.olt and args.test_controller else 1,
                    }
     if args.olt:
         olt_conf_test_loc = os.path.join(CordTester.sandbox_setup, 'olt_config.json')
@@ -398,6 +398,7 @@
         if test_cnt.create and (args.start_switch or not args.olt):
             test_cnt.start_switch()
         if test_cnt.create and test_cnt.olt:
+            print('Test container create with port num: %d' %port_num)
             _, port_num = test_cnt.setup_intfs(port_num = port_num)
 
     thread_pool = ThreadPool(len(test_containers), queue_size = 1, wait_timeout=1)
@@ -504,7 +505,7 @@
                          'QUAGGA_IP': ip,
                          'CORD_TEST_HOST' : ip,
                          'CORD_TEST_PORT' : port,
-                         'ONOS_RESTART_DISABLED' : 1 if args.olt and args.test_controller else 0,
+                         'ONOS_RESTART' : 0 if args.olt and args.test_controller else 1,
                        }
         if args.olt:
             olt_conf_test_loc = os.path.join(CordTester.sandbox_setup, 'olt_config.json')
diff --git a/src/test/utils/OnosCtrl.py b/src/test/utils/OnosCtrl.py
index 22afa56..6083d85 100644
--- a/src/test/utils/OnosCtrl.py
+++ b/src/test/utils/OnosCtrl.py
@@ -52,7 +52,7 @@
 
     @classmethod
     def config(cls, config):
-        if config:
+        if config is not None:
             json_data = json.dumps(config)
             resp = requests.post(cls.cfg_url, auth = cls.auth, data = json_data)
             return resp.ok, resp.status_code
diff --git a/src/test/vrouter/vrouterTest.py b/src/test/vrouter/vrouterTest.py
index 89f11fc..9ca696a 100644
--- a/src/test/vrouter/vrouterTest.py
+++ b/src/test/vrouter/vrouterTest.py
@@ -92,6 +92,7 @@
     def tearDownClass(cls):
         '''Deactivate the vrouter apps'''
         #cls.vrouter_host_unload()
+        cls.start_onos(network_cfg = {})
 
     @classmethod
     def load_device_id(cls):
