diff --git a/src/test/utils/CordTestServer.py b/src/test/utils/CordTestServer.py
index 7b60620..45183d3 100644
--- a/src/test/utils/CordTestServer.py
+++ b/src/test/utils/CordTestServer.py
@@ -19,6 +19,7 @@
 import daemon
 import xmlrpclib
 import os
+import signal
 import json
 import time
 import threading
@@ -53,10 +54,7 @@
         if self.onos_cord:
             self.onos_cord.start(restart = True, network_cfg = config)
         else:
-            if Onos.cluster_mode is True:
-                Onos.restart_cluster(network_cfg = config)
-            else:
-                Onos(restart = True, network_cfg = config, image = Onos.IMAGE, tag = Onos.TAG)
+            Onos(restart = True, network_cfg = config, image = Onos.IMAGE, tag = Onos.TAG)
         return 'DONE'
 
     def restart_onos(self, kwargs):
@@ -109,6 +107,11 @@
         Radius(prefix = Container.IMAGE_PREFIX, restart = True)
         return 'DONE'
 
+    def shutdown(self):
+        print('Shutting down cord test server')
+        os.kill(0, signal.SIGKILL)
+        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):
@@ -201,3 +204,13 @@
     if data == 'DONE':
         return True
     return False
+
+@nottest
+def cord_test_server_shutdown(host, port):
+    '''Shutdown the cord test server'''
+    rpc_server = 'http://{}:{}'.format(host, port)
+    try:
+        xmlrpclib.Server(rpc_server, allow_none = True).shutdown()
+    except: pass
+
+    return True
