diff --git a/src/test/utils/CordTestServer.py b/src/test/utils/CordTestServer.py
index c882f58..fe676fe 100644
--- a/src/test/utils/CordTestServer.py
+++ b/src/test/utils/CordTestServer.py
@@ -123,8 +123,11 @@
         return 'DONE'
 
 @nottest
-def cord_test_server_start(daemonize = True, cord_test_host = CORD_TEST_HOST,
-                           cord_test_port = CORD_TEST_PORT, onos_cord = None):
+def cord_test_server_start(daemonize = True,
+                           cord_test_host = CORD_TEST_HOST,
+                           cord_test_port = CORD_TEST_PORT,
+                           onos_cord = None,
+                           foreground=False):
     server = SimpleXMLRPCServer( (cord_test_host, cord_test_port) )
     server.register_instance(CordTestServer())
     CordTestServer.onos_cord = onos_cord
@@ -135,10 +138,16 @@
             reinitContainerClients()
             server.serve_forever()
     else:
-        task = threading.Thread(target = server.serve_forever)
-        ##terminate when main thread exits
-        task.daemon = True
-        task.start()
+        if foreground:
+            try:
+                server.serve_forever()
+            except KeyboardInterrupt:
+                return server
+        else:
+            task = threading.Thread(target = server.serve_forever)
+            ##terminate when main thread exits
+            task.daemon = True
+            task.start()
     return server
 
 @nottest
diff --git a/src/test/utils/OnosCtrl.py b/src/test/utils/OnosCtrl.py
index 5e6dcdf..83cdedc 100644
--- a/src/test/utils/OnosCtrl.py
+++ b/src/test/utils/OnosCtrl.py
@@ -56,7 +56,7 @@
         self.auth = ('karaf', 'karaf')
 
     @classmethod
-    def config(cls, config,controller=None):
+    def config(cls, config, controller=None):
         if config is not None:
             json_data = json.dumps(config)
 	    if controller is None:
@@ -69,6 +69,20 @@
             return resp.ok, resp.status_code
         return False, 400
 
+    @classmethod
+    def delete(cls, config, controller=None):
+        if config:
+            json_data = json.dumps(config)
+	    if controller is None:
+	        print('default Onos config url is %s'%cls.cfg_url)
+                resp = requests.delete(cls.cfg_url, auth = cls.auth, data = json_data)
+	    else:
+		cfg_url = 'http://%s:8181/onos/v1/network/configuration/' %(controller)
+		print('non-default Onos config url is %s'%cfg_url)
+	        resp = requests.delete(cfg_url, auth = cls.auth, data = json_data)
+            return resp.ok, resp.status_code
+        return False, 400
+
     def activate(self):
         resp = requests.post(self.app_url + '/active', auth = self.auth)
         return resp.ok, resp.status_code
