Refactor ONOS Drivers
Changes include:
        Include component handle in log messages
        Replace carriage returns with new line characters
        Remove static IP addresses and passwords
        Add exception handling to prevent TestON crashes
        Delete old tests and duplicate files

Onoscli driver
        Remove assert from isup()
        Parameterize REST port and set default to 8080
        Add ONOS home directory, default to ~/ONOS
        Merge onosrestapidriver.py into onosclidriver.py
        Remove ctrl_one and ctrl_none functions
        Improve git_pull() error checking
        Parameterize the interface for tcpdump
        Print more information in get_version
        Parameterize the scp source username and password for add_flow
        Remove Link_up and Link_down - see link() in mininet driver

Mininet Driver
        assign_sw_controller takes COUNT to indicate how many controllers to assign to a switch - requires change to each test that uses this function to assign more than 1 controller to a switch
        remove static password
        doubled timeout for cleanup(larger networks can take longer to clean)

Zookeeper Driver
        Remove start() call from connect()
        add Zookeeper home directory, with default as ~/zookeeper-3.4.5

Cassandra Driver
        Improve logic of status function
        Check if self is up in isup instead of 4 instances running
diff --git a/TestON/drivers/common/api/onosrestapidriver.py b/TestON/drivers/common/api/onosrestapidriver.py
deleted file mode 100644
index 39c649c..0000000
--- a/TestON/drivers/common/api/onosrestapidriver.py
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/usr/bin/env python
-'''
-Created on 4-Jun-2013
-
-@author: Anil Kumar (anilkumar.s@paxterrasolutions.com)
-
-
-    TestON is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 2 of the License, or
-    (at your option) any later version.
-
-    TestON is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with TestON.  If not, see <http://www.gnu.org/licenses/>.        
-
-
-onosrestapidriver is the basic driver which will handle the onorestapi functions
-'''
-
-import struct
-import fcntl
-import os
-import signal
-import re
-import sys
-import time 
-import json
-
-sys.path.append("../")
-from drivers.common.apidriver import API
-import urllib
-import __builtin__
-
-
-class OnosRestApiDriver(API):
-
-    def __init__(self):
-        super(API, self).__init__()
-                                                
-
-    def connect(self,**connectargs):
-        for key in connectargs:
-            vars(self)[key] = connectargs[key]
-        
-        self.name = self.options['name']
-        self.handle = super(OnosRestApiDriver,self).connect()
-        main.log.info(self.options['topology_url'])
-        try :
-            self.handle = urllib.urlopen(self.options['topology_url'])
-        except Exception,e:
-            main.log.error(e)
-            
-        self.logFileName = main.logdir+"/"+self.name+".session"
-        
-        if self.handle:
-            return self.handle
-        else :
-            return main.FALSE
-
-    def execute(self):
-        main.log.info(self.options['topology_url'])
-        response = main.FALSE
-        for i in [1,2] :
-            time.sleep(2)
-            response = self.http_request()
-        return response
-        
-    def http_request(self):
-        try :
-            self.handle = urllib.urlopen(self.options['topology_url'])
-
-            resonse_lines = self.handle.readlines()
-            print resonse_lines
-            return resonse_lines
-        except Exception,e:
-            main.log.error(e)
-            return "url error"
-   
-    def disconnect(self,handle):
-        response = ''
-        '''
-        if self.handle:
-            self.handle = handle
-            response = self.execute(cmd="exit",prompt="(.*)",timeout=120)
-        else :
-            main.log.error("Connection failed to the host")
-            response = main.FALSE
-        '''
-        return response  
-    
-    def find_host(self,RestIP,RestPort,RestAPI,hostIP):
-	retcode = 0
-        retswitch = []
-        retport = []
-        retmac = []
-        foundIP = []
-	##### device rest API is: 'host:8080/wm/core/topology/switches/all/json' ###
-	url ="http://%s:%s%s" %(RestIP,RestPort,RestAPI)
-		
-	try:
-	    command = "curl -s %s" % (url)
-	    result = os.popen(command).read()
-	    parsedResult = json.loads(result)
-            # print parsedResult
-	except:
-	    print "REST IF %s has issue" % command
-	    parsedResult = ""  
-
-    	if parsedResult == "":
-	    return (retcode, "Rest API has an error")	
-	else:
-            for switch in enumerate(parsedResult):
-                for port in enumerate(switch[1]['ports']):
-                    if ( port[1]['devices'] != [] ):
-                        try:
-                            foundIP =  port[1]['devices'][0]['ipv4addresses'][0]['ipv4']
-                        except:
-                            print "Error in detecting IP address."
-                        if foundIP == hostIP:
-	                    retswitch.append(switch[1]['dpid'])
-                            retport.append(port[1]['desc'])
-                            retmac.append(port[1]['devices'][0]['mac'])
-                            retcode = retcode +1
-                            foundIP =''
-        return(retcode, retswitch, retport, retmac)
-
diff --git a/TestON/drivers/common/api/onosrestapidriver.py_bak b/TestON/drivers/common/api/onosrestapidriver.py_bak
deleted file mode 100644
index 4af2603..0000000
--- a/TestON/drivers/common/api/onosrestapidriver.py_bak
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/usr/bin/env python
-'''
-Created on 4-Jun-2013
-
-@author: Anil Kumar (anilkumar.s@paxterrasolutions.com)
-
-
-    TestON is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 2 of the License, or
-    (at your option) any later version.
-
-    TestON is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with TestON.  If not, see <http://www.gnu.org/licenses/>.        
-
-
-onosrestapidriver is the basic driver which will handle the onorestapi functions
-'''
-
-import struct
-import fcntl
-import os
-import signal
-import re
-import sys
-import time 
-import json
-
-sys.path.append("../")
-from drivers.common.apidriver import API
-import urllib
-import __builtin__
-
-
-class OnosRestApiDriver(API):
-
-    def __init__(self):
-        super(API, self).__init__()
-                                                
-
-    def connect(self,**connectargs):
-        for key in connectargs:
-            vars(self)[key] = connectargs[key]
-        
-        self.name = self.options['name']
-        self.handle = super(OnosRestApiDriver,self).connect()
-        main.log.info(self.options['topology_url'])
-        try :
-            self.handle = urllib.urlopen(self.options['topology_url'])
-        except Exception,e:
-            main.log.error(e)
-            
-        self.logFileName = main.logdir+"/"+self.name+".session"
-        
-        if self.handle:
-            return self.handle
-        else :
-            return main.FALSE
-
-    def execute(self):
-        main.log.info(self.options['topology_url'])
-        response = main.FALSE
-        for i in [1,2] :
-            time.sleep(2)
-            response = self.http_request()
-        return response
-        
-    def http_request(self):
-        try :
-            self.handle = urllib.urlopen(self.options['topology_url'])
-
-            resonse_lines = self.handle.readlines()
-            print resonse_lines
-            return resonse_lines
-        except Exception,e:
-            main.log.error(e)
-            return "url error"
-   
-    def disconnect(self,handle):
-        response = ''
-        '''
-        if self.handle:
-            self.handle = handle
-            response = self.execute(cmd="exit",prompt="(.*)",timeout=120)
-        else :
-            main.log.error("Connection failed to the host")
-            response = main.FALSE
-        '''
-        return response  
-    
-    def find_host(self,RestIP,RestPort,RestAPI,hostIP):
-	retcode = 0
-        retswitch = ''
-        retport = ''
-        retmac = ''
-        foundIP = ''
-	##### device rest API is: 'host:8080/wm/core/topology/switches/all/json' ###
-	url ="http://%s:%s%s" %(RestIP,RestPort,RestAPI)
-		
-	try:
-	    command = "curl -s %s" % (url)
-	    result = os.popen(command).read()
-	    parsedResult = json.loads(result)
-            # print parsedResult
-	except:
-	    print "REST IF %s has issue" % command
-	    parsedResult = ""  
-
-    	if parsedResult == "":
-	    return (retcode, "Rest API has an error")	
-	else:
-            for switch in enumerate(parsedResult):
-                for port in enumerate(switch[1]['ports']):
-                    if ( port[1]['devices'] != [] ):
-                        try:
-                            foundIP =  port[1]['devices'][0]['ipv4addresses'][0]['ipv4']
-                        except:
-                            print "Error in detecting IP address."
-                        if foundIP == hostIP:
-                            retcode = retcode +1
-	                    retswitch = switch[1]['dpid']
-                            retport = port[1]['desc']
-                            retmac = port[1]['devices'][0]['mac']
-                            foundIP =''
-        return(retcode, retswitch, retport, retmac)
-
diff --git a/TestON/drivers/common/cli/cassandraclidriver.py b/TestON/drivers/common/cli/cassandraclidriver.py
index 6a961ee..bad8c4e 100644
--- a/TestON/drivers/common/cli/cassandraclidriver.py
+++ b/TestON/drivers/common/cli/cassandraclidriver.py
@@ -58,8 +58,8 @@
             #self.start()
             return main.TRUE
         else :
-            main.log.error("Connection failed to the host "+self.user_name+"@"+self.ip_address) 
-            main.log.error("Failed to connect to the Onos system")
+            main.log.error(self.name + ": Connection failed to the host "+self.user_name+"@"+self.ip_address) 
+            main.log.error(self.name + ": Failed to connect to the Onos system")
             return main.FALSE
    
  
@@ -67,7 +67,7 @@
         '''
         This Function will start the Cassandra
         '''
-        main.log.info( "Starting Cassandra" )
+        main.log.info(self.name + ": Starting Cassandra" )
         self.handle.sendline("")
         self.handle.expect("\$")
         self.handle.sendline("~/ONOS/start-cassandra.sh start")
@@ -76,10 +76,10 @@
         response = self.handle.before + self.handle.after
         time.sleep(5)
         if re.search("Starting\scassandra(.*)", response):
-            main.log.info("Cassandra Started ")
+            main.log.info(self.name + ": Cassandra Started ")
             return main.TRUE
         else:
-            main.log.error("Failed to start Cassandra"+ response)
+            main.log.error(self.name + ": Failed to start Cassandra"+ response)
             return main.FALSE
         
     def status(self):
@@ -87,33 +87,40 @@
         This Function will return the Status of the Cassandra
         '''
         time.sleep(5)
-        self.execute(cmd="\r",prompt="\$",timeout=10)
+        self.execute(cmd="\n",prompt="\$",timeout=10)
         response = self.execute(cmd="~/ONOS/start-cassandra.sh status ",prompt="\d+\sinstance\sof\scassandra\srunning(.*)",timeout=10)
         
 
-        self.execute(cmd="\r",prompt="\$",timeout=10)
-        return response
+        #self.execute(cmd="\n",prompt="\$",timeout=10)
+        #return response
         
-        if re.search("0\sinstance\sof\scassandra\srunning(.*)") :
-            main.log.info("Cassandra not running")
+        if re.search("0\sinstance\sof\scassandra\srunning(.*)",response) :
+            main.log.info(self.name + ": Cassandra not running")
+            return main.FALSE
+        elif re.search("1\sinstance\sof\scassandra\srunning(.*)",response):
+            main.log.warn(self.name + ": Cassandra Running")
             return main.TRUE
-        elif re.search("1\sinstance\sof\scassandra\srunning(.*)"):
-            main.log.warn("Cassandra Running")
+        elif re.search("\sinstance\sof\scassandra\srunning(.*)",response):
+            main.log.warn(self.name + ": Multiple instances of Cassandra Running on the same machine!")
+            #Known bug: Once ONOS starts the script shows 2 instances
             return main.TRUE
+	else: 
+	    main.log.warn(self.name + ": Cannot determine cassandra status")
+	    return main.False
             
     def stop(self):
         '''
         This Function will stop the Cassandra if it is Running
         ''' 
-        self.execute(cmd="\r",prompt="\$",timeout=10)
+        self.execute(cmd="\n",prompt="\$",timeout=10)
         time.sleep(5)
         response = self.execute(cmd="~/ONOS/start-cassandra.sh stop ",prompt="Killed\sexisting\sprosess(.*)",timeout=10)
-        self.execute(cmd="\r",prompt="\$",timeout=10)
+        self.execute(cmd="\n",prompt="\$",timeout=10)
         if re.search("Killed\sexisting\sprosess(.*)",response):
-            main.log.info("Cassandra Stopped")
+            main.log.info(self.name + ": Cassandra Stopped")
             return main.TRUE
         else:
-            main.log.warn("Cassndra is not Running")
+            main.log.warn(self.name + ": Cassndra is not Running")
             return main.FALSE
             
     def disconnect(self):
@@ -125,7 +132,7 @@
             self.handle.sendline("exit")
             self.handle.expect("closed")
         else :
-            main.log.error("Connection failed to the host")
+            main.log.error(self.name + ": Connection failed to the host")
             response = main.FALSE
         return response 
 
@@ -136,16 +143,17 @@
         returns TRUE if it sees four occurances of both Up, and Normal 
         '''
         tries = 5
-        main.log.info("trying %i times" % tries )
+        main.log.info(self.name + ": trying %i times" % tries )
         for i in range(tries):
-            self.execute(cmd="\r",prompt="\$",timeout=10)
+            self.execute(cmd="\n",prompt="\$",timeout=10)
             self.handle.sendline("")
             self.handle.expect("\$") 
             self.handle.sendline("~/ONOS/start-cassandra.sh status")
             self.handle.expect("sh status") 
             self.handle.expect("\$") 
             result = self.handle.before + self.handle.after 
-            pattern = '(.*)Up(.*)Normal(.*)\n(.*)Up(.*)Normal(.*)\n(.*)Up(.*)Normal(.*)\n(.*)Up(.*)Normal(.*)'
+            #pattern = '(.*)Up(.*)Normal(.*)\n(.*)Up(.*)Normal(.*)\n(.*)Up(.*)Normal(.*)\n(.*)Up(.*)Normal(.*)'
+	    pattern = '(' + self.ip_address.replace('.', '\\.') + '.*)Up(.*)Normal(.*)'
             if re.search(pattern, result): 
                 return main.TRUE
         return main.FALSE
diff --git a/TestON/drivers/common/cli/emulator/flowvisordriver.py b/TestON/drivers/common/cli/emulator/flowvisordriver.py
index 8df7338..66946bd 100644
--- a/TestON/drivers/common/cli/emulator/flowvisordriver.py
+++ b/TestON/drivers/common/cli/emulator/flowvisordriver.py
@@ -91,7 +91,7 @@
         else :
             self.execute(cmd="clear",prompt="\$",timeout=10)
             self.execute(cmd="./fvctl.sh removeFlowSpace "+id,prompt="passwd:",timeout=10)
-            self.execute(cmd="\r",prompt="\$",timeout=10)
+            self.execute(cmd="\n",prompt="\$",timeout=10)
             main.log.info("Removed flowSpace which is having id :"+id)
             
         return main.TRUE
@@ -129,7 +129,7 @@
 
         #self.execute(cmd="clear",prompt="\$",timeout=10)
         self.execute(cmd="./fvctl.sh addFlowSpace "+flowspace,prompt="passwd:",timeout=10)
-        self.execute(cmd="\r",prompt="\$",timeout=10)
+        self.execute(cmd="\n",prompt="\$",timeout=10)
         sucess_match = re.search("success\:\s+(\d+)", main.last_response)
         if sucess_match :
             main.log.info("Added flow Space and id is "+sucess_match.group(1))
@@ -142,7 +142,7 @@
     def listFlowSpace(self):
         self.execute(cmd="clear",prompt="\$",timeout=10)
         self.execute(cmd="./fvctl.sh listFlowSpace ",prompt="passwd:",timeout=10)
-        self.execute(cmd="\r",prompt="\$",timeout=10)
+        self.execute(cmd="\n",prompt="\$",timeout=10)
         flow_space = main.last_response
         flow_space = self.remove_contol_chars( flow_space)
         flow_space = re.sub("rule\s(\d+)\:", "\nrule "+r'\1'+":",flow_space)
@@ -153,7 +153,7 @@
     def listDevices(self):
         #self.execute(cmd="clear",prompt="\$",timeout=10)
         #self.execute(cmd="./fvctl.sh listDevices ",prompt="passwd:",timeout=10)
-        #self.execute(cmd="\r",prompt="\$",timeout=10)
+        #self.execute(cmd="\n",prompt="\$",timeout=10)
         devices_list = ''
         last_response = re.findall("(Device\s\d+\:\s((\d|[a-z])(\d|[a-z])\:)+(\d|[a-z])(\d|[a-z]))", main.last_response)
         
diff --git a/TestON/drivers/common/cli/emulator/mininetclidriver.py b/TestON/drivers/common/cli/emulator/mininetclidriver.py
index 59fae79..34e5841 100644
--- a/TestON/drivers/common/cli/emulator/mininetclidriver.py
+++ b/TestON/drivers/common/cli/emulator/mininetclidriver.py
@@ -61,11 +61,11 @@
             main.log.info("Clearing any residual state or processes")
             self.handle.sendline("sudo mn -c")
 
-            i=self.handle.expect(['password\sfor\sadmin','Cleanup\scomplete',pexpect.EOF,pexpect.TIMEOUT],60)
+            i=self.handle.expect(['password\sfor\sadmin','Cleanup\scomplete',pexpect.EOF,pexpect.TIMEOUT],120)
             if i==0:
                 main.log.info("sending sudo password")
-                self.handle.sendline('onos_test')
-                i=self.handle.expect(['admin:','\$',pexpect.EOF,pexpect.TIMEOUT],60)
+                self.handle.sendline(pwd)
+                i=self.handle.expect(['admin:','\$',pexpect.EOF,pexpect.TIMEOUT],120)
             if i==1:
                 main.log.info("Clean")
 
@@ -77,7 +77,6 @@
             #cmdString = "sudo mn --topo "+self.options['topo']+","+self.options['topocount']+" --mac --switch "+self.options['switch']+" --controller "+self.options['controller']
             #cmdString = "sudo mn --custom ~/mininet/custom/topo-2sw-2host.py --controller remote --ip 192.168.56.102 --port 6633 --topo mytopo"
             main.log.info("building fresh mininet") 
-
             #### for reactive/PARP enabled tests
             cmdString = "sudo mn " + self.options['arg1'] + " " + self.options['arg2'] +  " --mac --controller " + self.options['controller']
             #### for proactive flow with static ARP entries
@@ -154,8 +153,9 @@
         
         args = utilities.parse_args(["SRC","TARGET"],**pingParams)
         #command = args["SRC"] + " ping -" + args["CONTROLLER"] + " " +args ["TARGET"]
-        command = args["SRC"] + " ping "+args ["TARGET"]+" -c 1 -i .2"
+        command = args["SRC"] + " ping "+args ["TARGET"]+" -c 1 -i 1"
         response = self.execute(cmd=command,prompt="mininet",timeout=10 )
+        main.log.info("Ping Response: "+ response )
         if utilities.assert_matches(expect=',\s0\%\spacket\sloss',actual=response,onpass="No Packet loss",onfail="Host is not reachable"):
             main.log.info("NO PACKET LOSS, HOST IS REACHABLE")
             main.last_result = main.TRUE 
@@ -164,7 +164,6 @@
             main.log.error("PACKET LOST, HOST IS NOT REACHABLE")
             main.last_result = main.FALSE
             return main.FALSE
-        
     
     def checkIP(self,host):
         '''
@@ -334,40 +333,29 @@
         main.log.info(self.execute(cmd=command,prompt="mininet>",timeout=10))
 
     def assign_sw_controller(self,**kwargs):
-        args = utilities.parse_args(["SW","IP1","PORT1","IP2","PORT2","IP3","PORT3","IP4","PORT4","IP5","PORT5","IP6","PORT6","IP7","PORT7","IP8","PORT8"],**kwargs)
+        '''
+        count is only needed if there is more than 1 controller
+        '''
+        args = utilities.parse_args(["COUNT"],**kwargs)
+        count = args["COUNT"] if args!={} else 1
+
+        argstring = "SW"
+        for j in range(count):
+            argstring = argstring + ",IP" + str(j+1) + ",PORT" + str(j+1)
+        args = utilities.parse_args(argstring.split(","),**kwargs)
+
         sw = args["SW"] if args["SW"] != None else ""
-        ip1 = args["IP1"] if args["IP1"] != None else ""
-        ip2 = args["IP2"] if args["IP2"] != None else ""
-        ip3 = args["IP3"] if args["IP3"] != None else ""
-        ip4 = args["IP4"] if args["IP4"] != None else ""
-        ip5 = args["IP5"] if args["IP5"] != None else ""
-        ip6 = args["IP6"] if args["IP6"] != None else ""
-        ip7 = args["IP7"] if args["IP7"] != None else ""
-        ip8 = args["IP8"] if args["IP8"] != None else ""
-       # master = args["MASTER"] if args["MASTER"] != None else ""
-        port1 = args["PORT1"] if args["PORT1"] != None else ""
-        port2 = args["PORT2"] if args["PORT2"] != None else ""
-        port3 = args["PORT3"] if args["PORT3"] != None else ""
-        port4 = args["PORT4"] if args["PORT4"] != None else ""
-        port5 = args["PORT5"] if args["PORT5"] != None else ""
-        port6 = args["PORT6"] if args["PORT6"] != None else ""
-        port7 = args["PORT7"] if args["PORT7"] != None else ""
-        port8 = args["PORT8"] if args["PORT8"] != None else ""
         ptcpA = int(args["PORT1"])+int(sw) if args["PORT1"] != None else ""
-        ptcpB = "ptcp:"+str(ptcpA) if ip1 != "" else ""
-        tcp1 = "tcp:"+str(ip1)+":"+str(port1) if ip1 != "" else ""
-        tcp2 = "tcp:"+str(ip2)+":"+str(port2) if ip2 != "" else ""
-        tcp3 = "tcp:"+str(ip3)+":"+str(port3) if ip3 != "" else ""
-        tcp4 = "tcp:"+str(ip4)+":"+str(port4) if ip4 != "" else ""
-        tcp5 = "tcp:"+str(ip5)+":"+str(port5) if ip5 != "" else ""
-        tcp6 = "tcp:"+str(ip6)+":"+str(port6) if ip6 != "" else ""
-        tcp7 = "tcp:"+str(ip7)+":"+str(port7) if ip7 != "" else ""
-        tcp8 = "tcp:"+str(ip8)+":"+str(port8) if ip8 != "" else ""
-       # master1 = tcp1+" role master " if args["MASTER"] == 1 else ""
-       # master2 = tcp2+" role master " if args["MASTER"] == 2 else ""
-       # master3 = tcp3+" role master " if args["MASTER"] == 3 else ""
-       # master4 = tcp4+" role master " if args["MASTER"] == 4 else ""
-        command = "sh ovs-vsctl set-controller s"+str(sw)+" "+ptcpB+" "+tcp1+" "+tcp2+" "+tcp3+" "+tcp4+" "+tcp5+" "+tcp6+" "+tcp7+" "+tcp8
+        ptcpB = "ptcp:"+str(ptcpA) if ptcpA != "" else ""
+        
+        command = "sh ovs-vsctl set-controller s" + str(sw) + " " + ptcpB + " "
+        for j in range(count):
+            i=j+1
+            args = utilities.parse_args(["IP"+str(i),"PORT"+str(i)],**kwargs)
+            ip = args["IP"+str(i)] if args["IP"+str(i)] != None else ""
+            port = args["PORT" + str(i)] if args["PORT" + str(i)] != None else ""
+            tcp = "tcp:" + str(ip) + ":" + str(port) + " " if ip != "" else ""
+            command = command + tcp
         self.execute(cmd=command,prompt="mininet>",timeout=5)
 
     def disconnect(self):
diff --git a/TestON/drivers/common/cli/onoscli/__init__.py b/TestON/drivers/common/cli/onoscli/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/TestON/drivers/common/cli/onoscli/__init__.py
+++ /dev/null
diff --git a/TestON/drivers/common/cli/onosclidriver.py b/TestON/drivers/common/cli/onosclidriver.py
index dadaf67..b43b9f4 100644
--- a/TestON/drivers/common/cli/onosclidriver.py
+++ b/TestON/drivers/common/cli/onosclidriver.py
@@ -22,9 +22,9 @@
 import time
 import pexpect
 import struct, fcntl, os, sys, signal
-import sys
 import re
 import json
+import traceback
 sys.path.append("../")
 from drivers.common.clidriver import CLI
 
@@ -37,110 +37,129 @@
 	'''
         Creates ssh handle for ONOS. 
         '''
-        for key in connectargs:
-           vars(self)[key] = connectargs[key]
+        try:
+            for key in connectargs:
+               vars(self)[key] = connectargs[key]
+            self.home = "~/ONOS"
+            for key in self.options:
+               if key == "home":
+                   self.home = self.options['home']
+                   break
 
-        
-        self.name = self.options['name']
-        self.handle = super(OnosCliDriver,self).connect(user_name = self.user_name, ip_address = self.ip_address,port = self.port, pwd = self.pwd)
+            
+            self.name = self.options['name']
+            self.handle = super(OnosCliDriver,self).connect(user_name = self.user_name, ip_address = self.ip_address,port = self.port, pwd = self.pwd, home = self.home)
 
-        if self.handle:
-            #self.start()
-            #self.start_rest()
-            return self.handle
-        else :
-            main.log.info("NO HANDLE")
-            return main.FALSE
+            if self.handle:
+                #self.start()
+                #self.start_rest()
+                return self.handle
+            else :
+                main.log.info("NO ONOS HANDLE")
+                return main.FALSE
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
         
     def start(self):
         '''
         Starts ONOS on remote machine.
         Returns false if any errors were encountered. 
         '''
-        self.handle.sendline("")
-        self.handle.expect("\$")
-        self.handle.sendline("~/ONOS/start-onos.sh start")
-        self.handle.expect("onos.sh start")
-        i=self.handle.expect(["Starting\sONOS\scontroller","Cassandra\sis\snot\srunning"])
-        if i==0:
-            try: 
-                self.handle.expect("\$", timeout=60)
-                main.log.info("ONOS Started ") 
-            except:  
-                main.log.info("ONOS NOT Started, stuck while waiting for it to start ") 
+        try: 
+            self.handle.sendline("")
+            self.handle.expect("\$")
+            self.handle.sendline(self.home + "/start-onos.sh start")
+            self.handle.expect("onos.sh start")
+            i=self.handle.expect(["Starting\sONOS\scontroller","Cassandra\sis\snot\srunning"])
+            if i==0:
+                try:
+                    self.handle.expect("\$", timeout=60)
+                    main.log.info(self.name + ": ONOS Started ")
+                except:
+                    main.log.info(self.name + ": ONOS NOT Started, stuck while waiting for it to start ")
+                    return main.FALSE
+                return main.TRUE
+            elif i==1:
+                main.log.error(self.name + ": ONOS didn't start because cassandra wasn't running.")
                 return main.FALSE
-            return main.TRUE
-        elif i==1:
-            main.log.error("ONOS didn't start because cassandra wasn't running.") 
+                raise
+            main.log.error(self.name + ": ONOS expect script missed something... ") 
             return main.FALSE
-        
-        main.log.error("ONOS expect script missed something... ") 
-        return main.FALSE
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
  
     def start_embedded(self):
-        self.handle.sendline("")
-        self.handle.expect("\$")
-        self.handle.sendline("~/ONOS/start-onos-embedded.sh start")
+        '''
+        Starts ONOS on remote machine with cassandra embedded.
+        Returns false if any errors were encountered.
+        '''
         try:
-            self.handle.expect("start...")
-            main.log.info("Embedded ONOS started")
+            self.handle.sendline("")
+            self.handle.expect("\$")
+            self.handle.sendline("~/ONOS/start-onos-embedded.sh start")
+            try:
+                self.handle.expect("start...")
+                main.log.info(self.name + ": Embedded ONOS started")
+            except:
+                main.log.info(self.name + ": Embedded ONOS failed to start")
+                return main.FALSE
         except:
-            main.log.info("Embedded ONOS failed to start")
-
-    def link_down(self, **linkParams):
-        '''
-        Specifically used for the ONOS demo on the HW.
-        Should be replaced by actual switch drivers in the future.
-        '''
-        args = utilities.parse_args(["SDPID","SPORT","DDPID","DPORT"], **linkParams)
-        sdpid = args["SDPID"] if args["SDPID"] != None else "00:00:00:00:ba:5e:ba:13"
-        sport = args["SPORT"] if args["SPORT"] != None else "22"
-        ddpid = args["DDPID"] if args["DDPID"] != None else "00:00:20:4e:7f:51:8a:35"
-        dport = args["DPORT"] if args["DPORT"] != None else "22"
-       
-        cmd = "curl -s  10.128.4.11:9000/gui/link/down/" + sdpid + "/" + sport + "/" + ddpid + "/" + dport + " > /tmp/log &"
-        os.popen( cmd ) 
-
-    def link_up(self, **linkParams):
-        '''
-        Specifically used for the ONOS demo on the HW.
-        Should be replaced by actual switch drivers in the future.
-        '''
-        args = utilities.parse_args(["SDPID","SPORT","DDPID","DPORT"], **linkParams)
-        sdpid = args["SDPID"] if args["SDPID"] != None else "00:00:00:00:ba:5e:ba:13"
-        sport = args["SPORT"] if args["SPORT"] != None else "22"
-        ddpid = args["DDPID"] if args["DDPID"] != None else "00:00:20:4e:7f:51:8a:35"
-        dport = args["DPORT"] if args["DPORT"] != None else "22"
-       
-        cmd = "curl -s  10.128.4.11:9000/gui/link/up/" + sdpid + "/" + sport + "/" + ddpid + "/" + dport + " > /tmp/log &"
-        os.popen( cmd ) 
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
 
     def start_rest(self):
         '''
         Starts the rest server on ONOS.
-        '''
-        response = self.execute(cmd="~/ONOS/start-rest.sh start",prompt="\$",timeout=10)
-        if re.search("admin",response):
-            main.log.info("Rest Server Started Successfully")
-            time.sleep(5)
-            return main.TRUE
-        else :
-            main.log.warn("Failed to start Rest Server")   
-            return main.FALSE     
-        
+        ''' 
+        try:
+            response = self.execute(cmd= self.home + "/start-rest.sh start",prompt="\$",timeout=10)
+            if re.search("admin",response):
+                main.log.info(self.name + ": Rest Server Started Successfully")
+                time.sleep(5)
+                return main.TRUE
+            else :
+                main.log.warn(self.name + ": Failed to start Rest Server")   
+                return main.FALSE     
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
+    
     def status(self):
         '''
         Called start-onos.sh status and returns TRUE/FALSE accordingly 
         '''
-        self.execute(cmd="\r",prompt="\$",timeout=10)
-        response = self.execute(cmd="~/ONOS/start-onos.sh status ",prompt="\d+\sinstance\sof\sonos\srunning",timeout=10)
-        self.execute(cmd="\r",prompt="\$",timeout=10)
-        if re.search("1\sinstance\sof\sonos\srunning",response):
-            return main.TRUE
-        elif re.search("0\sinstance\sof\sonos\srunning",response):
-            return main.FALSE
-        else :
-            return main.FALSE
+        try:
+            self.execute(cmd="\n",prompt="\$",timeout=10)
+            response = self.execute(cmd= self.home + "/start-onos.sh status ",prompt="\d+\sinstance\sof\sonos\srunning",timeout=10)
+            self.execute(cmd="\n",prompt="\$",timeout=10)
+            if re.search("1\sinstance\sof\sonos\srunning",response):
+                return main.TRUE
+            elif re.search("0\sinstance\sof\sonos\srunning",response):
+                return main.FALSE
+            else :
+                main.log.info( self.name + " WARNING: status recieved unknown response")
+                return main.FALSE
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
+
 
     def isup(self):
         '''
@@ -150,77 +169,113 @@
         Third, it makes sure the logs are actually moving. 
         returns TRUE/FALSE accordingly.
         '''
-        self.execute(cmd="\r",prompt="\$",timeout=10)
-        response = self.execute(cmd="~/ONOS/start-onos.sh status ",prompt="running",timeout=10)
-        self.execute(cmd="\r",prompt="\$",timeout=10)
-        tail1 = self.execute(cmd="tail ~/ONOS/onos-logs/onos.*.log",prompt="\$",timeout=10)
-        time.sleep(30)
-        self.execute(cmd="\r",prompt="\$",timeout=10)
-        tail2 = self.execute(cmd="tail ~/ONOS/onos-logs/onos.*.log",prompt="\$",timeout=10)
-        pattern = '(.*)1 instance(.*)'
-        pattern2 = '(.*)Exception: Connection refused(.*)'
-        if utilities.assert_matches(expect=pattern,actual=response,onpass="ONOS process is running...",onfail="ONOS process not running..."):
-            if tail1 == tail2:
-                main.log.error("ONOS is frozen...")
-                return main.FALSE
-            elif re.search( pattern2,tail1 ):
-                main.log.info("Connection Refused found in onos log") 
-                return main.FALSE
-            elif re.search( pattern2,tail2 ):
-                main.log.info("Connection Refused found in onos log") 
-                return main.FALSE
+        try:
+            self.execute(cmd="\n",prompt="\$",timeout=10)
+            response = self.execute(cmd= self.home + "/start-onos.sh status ",prompt="running",timeout=10)
+            self.execute(cmd="\n",prompt="\$",timeout=10)
+            tail1 = self.execute(cmd="tail " + self.home + "/onos-logs/onos.*.log",prompt="\$",timeout=10)
+            time.sleep(30)
+            self.execute(cmd="\n",prompt="\$",timeout=10)
+            tail2 = self.execute(cmd="tail " + self.home + "/onos-logs/onos.*.log",prompt="\$",timeout=10)
+            pattern = '(.*)1 instance(.*)'
+            pattern2 = '(.*)Exception: Connection refused(.*)'
+           # if utilities.assert_matches(expect=pattern,actual=response,onpass="ONOS process is running...",onfail="ONOS process not running..."):
+            
+            if re.search(pattern, response):
+                main.log.info(self.name + ": ONOS process is running...")
+                if tail1 == tail2:
+                    main.log.error(self.name + ": ONOS is frozen...")#logs aren't moving
+                    return main.FALSE
+                elif re.search( pattern2,tail1 ):
+                    main.log.info(self.name + ": Connection Refused found in onos log") 
+                    return main.FALSE
+                elif re.search( pattern2,tail2 ):
+                    main.log.info(self.name + ": Connection Refused found in onos log") 
+                    return main.FALSE
+                else:
+                    main.log.info(self.name + ": Onos log is moving! It's looking good!")
+                    return main.TRUE
             else:
-                main.log.info("Onos log is moving! It's looking good!")
-                return main.TRUE
-        else:
-            return main.FALSE
+                main.log.error(self.name + ": ONOS process not running...")
+                return main.FALSE
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
 
-    
+
+        
     def rest_status(self): 
         '''
         Checks if the rest server is running. 
         '''
-        response = self.execute(cmd="~/ONOS/start-rest.sh status ",prompt="running",timeout=10)
-        if re.search("rest\sserver\sis\srunning",response):
-            main.log.info("Rest Server is running")
-        elif re.search("rest\sserver\sis\snot\srunning",response):
-            main.log.warn("Rest Server is not Running")
-        else :
-            main.log.error("No response" +response)
-        self.execute(cmd="\r",prompt="\$",timeout=10)
-        
-        return response
-    
+        try:
+            response = self.execute(cmd= self.home + "/start-rest.sh status ",prompt="running",timeout=10)
+            if re.search("rest\sserver\sis\srunning",response):
+                main.log.info(self.name + ": Rest Server is running")
+            elif re.search("rest\sserver\sis\snot\srunning",response):
+                main.log.warn(self.name + ": Rest Server is not Running")
+            else :
+                main.log.error(self.name + ": No response" +response)
+            self.execute(cmd="\n",prompt="\$",timeout=10)
+            
+            return response
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
+       
+
     def stop(self):
         '''
         Runs ./start-onos.sh stop to stop ONOS
         '''
-        self.handle.sendline("")
-        self.handle.expect("\$")
-        self.handle.sendline("~/ONOS/start-onos.sh stop")
-        self.handle.expect("stop", 2)
-        result = self.handle.before 
-        self.handle.expect("\$", 60)
-        if re.search("Killed", result):
-            main.log.info("ONOS Killed Successfully")
-            return main.TRUE
-        else :
-            main.log.warn("ONOS wasn't running")
-            return main.FALSE
+        try:
+            self.handle.sendline("")
+            self.handle.expect("\$")
+            self.handle.sendline(self.home + "/start-onos.sh stop")
+            self.handle.expect("stop", 2)
+            result = self.handle.before 
+            self.handle.expect("\$", 60)
+            if re.search("Killed", result):
+                main.log.info(self.name + ": ONOS Killed Successfully")
+                return main.TRUE
+            else :
+                main.log.warn(self.name + ": ONOS wasn't running")
+                return main.FALSE
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
+    
     
     def rest_stop(self):
         '''
         Runs ./start-rest.sh stop to stop ONOS rest server
         '''
-        response = self.execute(cmd="~/ONOS/start-rest.sh stop ",prompt="killing",timeout=10)
-        self.execute(cmd="\r",prompt="\$",timeout=10)
-        if re.search("killing", response):
-            main.log.info("Rest Server Stopped")
-            return main.TRUE
-        else :
-            main.log.error("Failed to Stop, Rest Server is not Running")
-            return main.FALSE
-        
+        try:
+            response = self.execute(cmd= self.home + "/start-rest.sh stop ",prompt="killing",timeout=10)
+            self.execute(cmd="\n",prompt="\$",timeout=10)
+            if re.search("killing", response):
+                main.log.info(self.name + ": Rest Server Stopped")
+                return main.TRUE
+            else :
+                main.log.error(self.name + ": Failed to Stop, Rest Server is not Running")
+                return main.FALSE
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
+
+
     def disconnect(self):
         '''
         Called when Test is complete to disconnect the ONOS handle.  
@@ -230,7 +285,7 @@
             self.handle.sendline("exit")
             self.handle.expect("closed")
         except: 
-            main.log.error("Connection failed to the host")
+            main.log.error(self.name + ": Connection failed to the host")
             response = main.FALSE
         return response
  
@@ -238,56 +293,98 @@
         ''' 
         Writes the COMMIT number to the report to be parsed by Jenkins data collecter.  
         '''
-        self.handle.sendline("export TERM=xterm-256color")
-        self.handle.expect("xterm-256color")
-        self.handle.expect("\$") 
-        self.handle.sendline("cd ONOS; git log -1 | grep -A 3 \"commit\"; cd \.\.")
-        self.handle.expect("cd ..")
-        self.handle.expect("\$")
-        main.log.report( str(self.handle.before + self.handle.after))
+        try:
+            self.handle.sendline("export TERM=xterm-256color")
+            self.handle.expect("xterm-256color")
+            self.handle.expect("\$") 
+            self.handle.sendline("cd " + self.home + "; git log -1 --pretty=fuller; cd \.\.")
+            self.handle.expect("cd ..")
+            self.handle.expect("\$")
+            main.log.report(self.name +": \n"+ str(self.handle.before + self.handle.after))
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
 
-    def add_flow(self, path):
+    def add_flow(self, testONip, user, password, flowDef):
         ''' 
         Copies the flowdef file from TestStation -> ONOS machine
         Then runs ./add_flow.py to add the flows to ONOS
         ''' 
-        main.log.info("Adding Flows...")
-        self.handle.sendline("scp admin@10.128.7.7:%s /tmp/flowtmp" % path) 
-        self.handle.expect("100%")
-        self.handle.expect("\$", 30)
-        self.handle.sendline("~/ONOS/web/add_flow.py -m onos -f /tmp/flowtmp") 
-        self.handle.expect("add_flow")
-        self.handle.expect("\$", 1000)
-        main.log.info("Flows added")
+        try:
+            main.log.info("Adding Flows...")
+            self.handle.sendline("scp %s@%s:%s /tmp/flowtmp" %(user,testONip,flowDef))
+            i=self.handle.expect(['[pP]assword:', '100%', pexpect.TIMEOUT],30)
+            if(i==0):
+                    self.handle.sendline("%s" %(password))
+                    self.handle.sendline("")
+                    self.handle.expect("100%")
+                    self.handle.expect("\$", 30)
+                    self.handle.sendline(self.home + "/web/add_flow.py -m onos -f /tmp/flowtmp")
+                    self.handle.expect("\$", 1000)
+                    main.log.info("Flows added")
+                    return main.TRUE
+
+            elif(i==1):
+                    self.handle.sendline("")
+                    self.handle.expect("\$", 10)
+                    self.handle.sendline( self.home + "/web/add_flow.py -m onos -f /tmp/flowtmp")
+                    self.handle.expect("\$", 1000)
+                    main.log.info("Flows added")
+                    return main.TRUE
+
+            elif(i==2):
+                    main.log.error("Flow Def file SCP Timed out...")
+                    return main.FALSE
+
+            else:
+                    main.log.error("Failed to add flows...")
+                    return main.FALSE            
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
+
 
     def delete_flow(self, *delParams):
         '''
         Deletes a specific flow, a range of flows, or all flows.
         '''
-        if len(delParams)==1:
-             if str(delParams[0])=="all":
-                  main.log.info("Deleting ALL flows...")
-                  #self.execute(cmd="~/ONOS/scripts/TestON_delete_flow.sh all",prompt="done",timeout=150)
-                  self.handle.sendline("~/ONOS/web/delete_flow.py all")
-                  self.handle.expect("delete_flow")
-                  self.handle.expect("\$",1000)
-                  main.log.info("Flows deleted")
-             else:
-                  main.log.info("Deleting flow "+str(delParams[0])+"...")
-                  #self.execute(cmd="~/ONOS/scripts/TestON_delete_flow.sh "+str(delParams[0]),prompt="done",timeout=150)
-                  #self.execute(cmd="\n",prompt="\$",timeout=60)
-                  self.handle.sendline("~/ONOS/web/delete_flow.py %d" % int(delParams[0]))
-                  self.handle.expect("delete_flow")
-                  self.handle.expect("\$",60)
-                  main.log.info("Flow deleted")
-        elif len(delParams)==2:
-             main.log.info("Deleting flows "+str(delParams[0])+" through "+str(delParams[1])+"...")
-             #self.execute(cmd="~/ONOS/scripts/TestON_delete_flow.sh "+str(delParams[0])+" "+str(delParams[1]),prompt="done",timeout=150)
-             #self.execute(cmd="\n",prompt="\$",timeout=60)
-             self.handle.sendline("~/ONOS/web/delete_flow.py %d %d" % (int(delParams[0]), int(delParams[1])))
-             self.handle.expect("delete_flow")
-             self.handle.expect("\$",600)
-             main.log.info("Flows deleted")
+        try:
+            if len(delParams)==1:
+                if str(delParams[0])=="all":
+                    main.log.info(self.name + ": Deleting ALL flows...")
+                    #self.execute(cmd="~/ONOS/scripts/TestON_delete_flow.sh all",prompt="done",timeout=150)
+                    self.handle.sendline(self.home + "/web/delete_flow.py all")
+                    self.handle.expect("delete_flow")
+                    self.handle.expect("\$",1000)
+                    main.log.info(self.name + ": Flows deleted")
+                else:
+                    main.log.info(self.name + ": Deleting flow "+str(delParams[0])+"...")
+                    #self.execute(cmd="~/ONOS/scripts/TestON_delete_flow.sh "+str(delParams[0]),prompt="done",timeout=150)
+                    #self.execute(cmd="\n",prompt="\$",timeout=60)
+                    self.handle.sendline(self.home +"/web/delete_flow.py %d" % int(delParams[0]))
+                    self.handle.expect("delete_flow")
+                    self.handle.expect("\$",60)
+                    main.log.info(self.name + ": Flow deleted")
+            elif len(delParams)==2:
+                 main.log.info(self.name + ": Deleting flows "+str(delParams[0])+" through "+str(delParams[1])+"...")
+                 #self.execute(cmd="~/ONOS/scripts/TestON_delete_flow.sh "+str(delParams[0])+" "+str(delParams[1]),prompt="done",timeout=150)
+                 #self.execute(cmd="\n",prompt="\$",timeout=60)
+                 self.handle.sendline(self.home + "/web/delete_flow.py %d %d" % (int(delParams[0]), int(delParams[1])))
+                 self.handle.expect("delete_flow")
+                 self.handle.expect("\$",600)
+                 main.log.info(self.name + ": Flows deleted")
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
 
     def check_flow(self):
         '''
@@ -296,64 +393,78 @@
           - That there are no "NOT"s found
         returns TRUE/FALSE 
         '''
-        flowEntryDetect = 1
-        count = 0
-        self.handle.sendline("clear")
-        time.sleep(1)
-        self.handle.sendline("~/ONOS/web/get_flow.py all")
-        self.handle.expect("get_flow")
-        while 1:
-            i=self.handle.expect(['FlowPath','FlowEntry','NOT','\$',pexpect.TIMEOUT],timeout=180)
-            if i==0:
-                count = count + 1
-                if flowEntryDetect == 0:
-                    main.log.info("FlowPath without FlowEntry")
+        try:
+            flowEntryDetect = 1
+            count = 0
+            self.handle.sendline("clear")
+            time.sleep(1)
+            self.handle.sendline(self.home + "/web/get_flow.py all")
+            self.handle.expect("get_flow")
+            while 1:
+                i=self.handle.expect(['FlowPath','FlowEntry','NOT','\$',pexpect.TIMEOUT],timeout=180)
+                if i==0:
+                    count = count + 1
+                    if flowEntryDetect == 0:
+                        main.log.info(self.name + ": FlowPath without FlowEntry")
+                        return main.FALSE
+                    else:
+                        flowEntryDetect = 0
+                elif i==1:
+                    flowEntryDetect = 1
+                elif i==2:
+                    main.log.error(self.name + ": Found a NOT")
                     return main.FALSE
-                else:
-                    flowEntryDetect = 0
-            elif i==1:
-                flowEntryDetect = 1
-            elif i==2:
-                main.log.error("Found a NOT")
-                return main.FALSE
-            elif i==3:
-                if count == 0:
-                    main.log.info("There don't seem to be any flows here...")
-                    return main.FALSE
-                else:
-                    main.log.info("All flows pass")
-                    main.log.info("Number of FlowPaths: "+str(count))
-                    return main.TRUE
-            elif i==4:
-                main.log.error("Command Timeout!")
-                return main.FALSE
+                elif i==3:
+                    if count == 0:
+                        main.log.info(self.name + ": There don't seem to be any flows here...")
+                        return main.FALSE
+                    else:
+                        main.log.info(self.name + ": All flows pass")
+                        main.log.info(self.name + ": Number of FlowPaths: "+str(count))
+                        return main.TRUE
+                elif i==4:
+                    main.log.error(self.name + ":Check_flow() -  Command Timeout!")
+            return main.FALSE
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
 
     def get_flow(self, *flowParams):
          '''
          Returns verbose output of ./get_flow.py
          '''
-         if len(flowParams)==1:
-              if str(flowParams[0])=="all":
-                   self.execute(cmd="\n",prompt="\$",timeout=60)
-                   main.log.info("Getting all flow data...")
-                   data = self.execute(cmd="~/ONOS/scripts/TestON_get_flow.sh all",prompt="done",timeout=150)
-                   self.execute(cmd="\n",prompt="\$",timeout=60)
-                   return data
-              else:
-                   main.log.info("Retrieving flow "+str(flowParams[0])+" data...")
-                   data = self.execute(cmd="~/ONOS/scripts/TestON_get_flow.sh "+str(flowParams[0]),prompt="done",timeout=150)
-                   self.execute(cmd="\n",prompt="\$",timeout=60)
-                   return data
-         elif len(flowParams)==5:
-              main.log.info("Retrieving flow installer data...")
-              data = self.execute(cmd="~/ONOS/scripts/TestON_get_flow.sh "+str(flowParams[0])+" "+str(flowParams[1])+" "+str(flowParams[2])+" "+str(flowParams[3])+" "+str(flowParams[4]),prompt="done",timeout=150)
-              self.execute(cmd="\n",prompt="\$",timeout=60)
-              return data
-         elif len(flowParams)==4:
-              main.log.info("Retrieving flow endpoints...")
-              data = self.execute(cmd="~/ONOS/scripts/TestON_get_flow.sh "+str(flowParams[0])+" "+str(flowParams[1])+" "+str(flowParams[2])+" "+str(flowParams[3]),prompt="done",timeout=150)
-              self.execute(cmd="\n",prompt="\$",timeout=60)
-              return data
+         try:
+             if len(flowParams)==1:
+                  if str(flowParams[0])=="all":
+                       self.execute(cmd="\n",prompt="\$",timeout=60)
+                       main.log.info(self.name + ": Getting all flow data...")
+                       data = self.execute(cmd=self.home + "/scripts/TestON_get_flow.sh all",prompt="done",timeout=150)
+                       self.execute(cmd="\n",prompt="\$",timeout=60)
+                       return data
+                  else:
+                       main.log.info(self.name + ": Retrieving flow "+str(flowParams[0])+" data...")
+                       data = self.execute(cmd=self.home +"/scripts/TestON_get_flow.sh "+str(flowParams[0]),prompt="done",timeout=150)
+                       self.execute(cmd="\n",prompt="\$",timeout=60)
+                       return data
+             elif len(flowParams)==5:
+                  main.log.info(self.name + ": Retrieving flow installer data...")
+                  data = self.execute(cmd=self.home + "/scripts/TestON_get_flow.sh "+str(flowParams[0])+" "+str(flowParams[1])+" "+str(flowParams[2])+" "+str(flowParams[3])+" "+str(flowParams[4]),prompt="done",timeout=150)
+                  self.execute(cmd="\n",prompt="\$",timeout=60)
+                  return data
+             elif len(flowParams)==4:
+                  main.log.info(self.name + ": Retrieving flow endpoints...")
+                  data = self.execute(cmd=self.home + "/scripts/TestON_get_flow.sh "+str(flowParams[0])+" "+str(flowParams[1])+" "+str(flowParams[2])+" "+str(flowParams[3]),prompt="done",timeout=150)
+                  self.execute(cmd="\n",prompt="\$",timeout=60)
+                  return data
+         except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
 
 
 # http://localhost:8080/wm/core/topology/switches/all/json
@@ -366,257 +477,351 @@
         Helper functions used to parse the json output of a rest call 
         '''
         try:
-            command = "curl -s %s" % (url)
-            result = os.popen(command).read()
-            parsedResult = json.loads(result)
+            try:
+                command = "curl -s %s" % (url)
+                result = os.popen(command).read()
+                parsedResult = json.loads(result)
+            except:
+                print "REST IF %s has issue" % command
+                parsedResult = ""
+        
+            if type(parsedResult) == 'dict' and parsedResult.has_key('code'):
+                print "REST %s returned code %s" % (command, parsedResult['code'])
+                parsedResult = ""
+            return parsedResult 
         except:
-            print "REST IF %s has issue" % command
-            parsedResult = ""
-    
-        if type(parsedResult) == 'dict' and parsedResult.has_key('code'):
-            print "REST %s returned code %s" % (command, parsedResult['code'])
-            parsedResult = ""
-        return parsedResult 
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
 
-    def check_switch(self,RestIP,correct_nr_switch ):
+    def check_switch(self,RestIP,correct_nr_switch, RestPort ="8080" ):
         ''' 
         Used by check_status 
         ''' 
-        buf = ""
-        retcode = 0
-        RestPort="8080"
-        url="http://%s:%s/wm/onos/topology/switches/all/json" % (RestIP, RestPort)
-        parsedResult = self.get_json(url)
-        if parsedResult == "":
-            retcode = 1
-            return (retcode, "Rest API has an issue")
-        url = "http://%s:%s/wm/onos/registry/switches/json" % (RestIP, RestPort)
-        registry = self.get_json(url)
-    
-        if registry == "":
-            retcode = 1
-            return (retcode, "Rest API has an issue")
-    
-        cnt = 0
-        active = 0
+        try:
+            buf = ""
+            retcode = 0
+            #RestPort="8080"
+            url="http://%s:%s/wm/onos/topology/switches/all/json" % (RestIP, RestPort)
+            parsedResult = self.get_json(url)
+            if parsedResult == "":
+                retcode = 1
+                return (retcode, "Rest API has an issue")
+            url = "http://%s:%s/wm/onos/registry/switches/json" % (RestIP, RestPort)
+            registry = self.get_json(url)
+        
+            if registry == "":
+                retcode = 1
+                return (retcode, "Rest API has an issue")
+        
+            cnt = 0
+            active = 0
 
-        for s in parsedResult:
-            cnt += 1
-            if s['state']  == "ACTIVE":
-               active += 1
+            for s in parsedResult:
+                cnt += 1
+                if s['state']  == "ACTIVE":
+                   active += 1
 
-        buf += "switch: network %d : %d switches %d active\n" % (0+1, cnt, active)
-        if correct_nr_switch != cnt:
-            buf += "switch fail: network %d should have %d switches but has %d\n" % (1, correct_nr_switch, cnt)
-            retcode = 1
+            buf += "switch: network %d : %d switches %d active\n" % (0+1, cnt, active)
+            if correct_nr_switch != cnt:
+                buf += "switch fail: network %d should have %d switches but has %d\n" % (1, correct_nr_switch, cnt)
+                retcode = 1
 
-        if correct_nr_switch != active:
-            buf += "switch fail: network %d should have %d active switches but has %d\n" % (1, correct_nr_switch, active)
-            retcode = 1
-    
-        return (retcode, buf)
+            if correct_nr_switch != active:
+                buf += "switch fail: network %d should have %d active switches but has %d\n" % (1, correct_nr_switch, active)
+                retcode = 1
+        
+            return (retcode, buf)
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
 
-    def check_link(self,RestIP, nr_links):
+    def check_link(self,RestIP, nr_links, RestPort = "8080"):
         ''' 
         Used by check_status 
         ''' 
-        RestPort = "8080"
-        buf = ""
-        retcode = 0
-    
-        url = "http://%s:%s/wm/onos/topology/links/json" % (RestIP, RestPort)
-        parsedResult = self.get_json(url)
-    
-        if parsedResult == "":
-            retcode = 1
-            return (retcode, "Rest API has an issue")
-    
-        buf += "link: total %d links (correct : %d)\n" % (len(parsedResult), nr_links)
-        intra = 0
-        interlink=0
-    
-        for s in parsedResult:
-            intra = intra + 1 
-    
-        if intra != nr_links:
-            buf += "link fail\n"
-            retcode = 1
-    
-        return (retcode, buf)
+        try:
+            buf = ""
+            retcode = 0
+        
+            url = "http://%s:%s/wm/onos/topology/links/json" % (RestIP, RestPort)
+            parsedResult = self.get_json(url)
+        
+            if parsedResult == "":
+                retcode = 1
+                return (retcode, "Rest API has an issue")
+        
+            buf += "link: total %d links (correct : %d)\n" % (len(parsedResult), nr_links)
+            intra = 0
+            interlink=0
+        
+            for s in parsedResult:
+                intra = intra + 1 
+        
+            if intra != nr_links:
+                buf += "link fail\n"
+                retcode = 1
+        
+            return (retcode, buf)
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
 
-    def check_status_report(self, ip, numoswitch, numolink):
+    def check_status_report(self, ip, numoswitch, numolink, port="8080"):
         ''' 
         Checks the number of swithes & links that ONOS sees against the supplied values.
         Writes to the report log.  
-        ''' 
-        main.log.info("Making some rest calls...") 
-        switch = self.check_switch(ip, int(numoswitch))
-        link = self.check_link(ip, int(numolink))
-        value = switch[0]
-        value += link[0]
-        main.log.report( "\n-----\n%s%s-----\n" % ( switch[1], link[1]) )
-        if value != 0:
-            return 0
-        else: 
-            # "PASS"
-            return 1
+        '''
+        try:
+            main.log.info(self.name + ": Making some rest calls...") 
+            switch = self.check_switch(ip, int(numoswitch), port)
+            link = self.check_link(ip, int(numolink), port)
+            value = switch[0]
+            value += link[0]
+            main.log.report( self.name + ": \n-----\n%s%s-----\n" % ( switch[1], link[1]) )
+            if value != 0:
+                return main.FALSE
+            else: 
+                # "PASS"
+                return main.TRUE
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
 
-    def check_status(self, ip, numoswitch, numolink):
+    def check_status(self, ip, numoswitch, numolink, port = "8080"):
         ''' 
         Checks the number of swithes & links that ONOS sees against the supplied values.
         Writes to the main log.  
         ''' 
-        main.log.info("Making some rest calls...") 
-        switch = self.check_switch(ip, int(numoswitch))
-        link = self.check_link(ip, int(numolink))
-        value = switch[0]
-        value += link[0]
-        main.log.info( "\n-----\n%s%s-----\n" % ( switch[1], link[1]) )
-        if value != 0:
-            return 0
-        else: 
-            # "PASS"
-            return 1
+        try:
+            main.log.info(self.name + ": Making some rest calls...") 
+            switch = self.check_switch(ip, int(numoswitch), port)
+            link = self.check_link(ip, int(numolink), port)
+            value = switch[0]
+            value += link[0]
+            main.log.info(self.name + ": \n-----\n%s%s-----\n" % ( switch[1], link[1]) )
+            if value != 0:
+                return main.FALSE
+            else: 
+                # "PASS"
+                return main.TRUE
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
  
     def drop_keyspace(self):
         '''
         Drops the ONOS keyspace
         '''
-        self.handle.sendline("~/ONOS/scripts/test-drop-keyspace.sh")
-        self.handle.expect("keyspace")
-        self.handle.sendline("")
-        self.handle.expect("\$")
-        self.handle.expect("\$")
-        main.log.info("Keyspace dropped")
+        try:
+            self.handle.sendline(self.home + "/scripts/drop-keyspace.sh")
+            self.handle.expect("keyspace")
+            self.handle.sendline("")
+            self.handle.expect("\$")
+            self.handle.expect("\$")
+            main.log.info(self.name + ": Keyspace dropped")
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
 
-    def ctrl_none(self):
-        '''
-        Points all the mininet swithces to no controllers 
-        *NOTE will only work if CLUSTER is set up on ONOS nodes
-        '''
-        self.execute(cmd="switch none", prompt="\$",timeout=10)
-
-    def ctrl_one(self, ip):
-        '''
-        Points all the mininet swithces to all controllers 
-        *NOTE will only work if CLUSTER is set up on ONOS nodes
-        '''
-        self.execute(cmd="switch one", prompt="\$",timeout=10)
-
+    
     def check_for_no_exceptions(self):
         '''
+        TODO: Rewrite
         Used by CassndraCheck.py to scan ONOS logs for Exceptions
         '''
-        self.handle.sendline("dsh 'grep Exception ~/ONOS/onos-logs/onos.*.log'")
-        self.handle.expect("\$ dsh") 
-        self.handle.expect("\$")
-        output = self.handle.before
-        main.log.info( output ) 
-        if re.search("Exception",output):
-            return main.FALSE
-        else :
-            return main.TRUE
- 
+        try:
+            self.handle.sendline("dsh 'grep Exception ~/ONOS/onos-logs/onos.*.log'")
+            self.handle.expect("\$ dsh") 
+            self.handle.expect("\$")
+            output = self.handle.before
+            main.log.info(self.name + ": " + output ) 
+            if re.search("Exception",output):
+                return main.FALSE
+            else :
+                return main.TRUE
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
+
+
     def git_pull(self):
         '''
         Stops the ONOS, pulls the latest code, and builds with mvn. 
         Assumes that "git pull" works without login 
         '''
-        main.log.info("Stopping onos") 
-        self.stop()
-        self.handle.sendline("cd ~/ONOS") 
-        self.handle.expect("ONOS\$")
-        self.handle.sendline("git pull")
-       
-        uptodate = 0 
-        i=self.handle.expect(['fatal','Username\sfor\s(.*):\s','Unpacking\sobjects',pexpect.TIMEOUT,'Already up-to-date','Aborting'],timeout=180)
-        if i==0:
-            main.log.error("Git pull had some issue...") 
-            return main.FALSE
-        elif i==1:
-            main.log.error("Asking for username!!! BADD!") 
-            return false 
-            
-            self.handle.expect('Password\sfor\s(.*):\s')
-            j = self.handle.expect(['Unpacking\sobjects','Already up-to-date'])
-            if j == 0:
-                main.log.info("pulling repository now")
-            elif j == 1:
-                main.log.info("Up to date!")
+        try:
+            main.log.info(self.name + ": Stopping ONOS") 
+            self.stop()
+            self.handle.sendline("cd " + self.home)
+            self.handle.expect("ONOS\$")
+            self.handle.sendline("git pull")
+           
+            uptodate = 0 
+            i=self.handle.expect(['fatal','Username\sfor\s(.*):\s','Unpacking\sobjects',pexpect.TIMEOUT,'Already up-to-date','Aborting'],timeout=180)
+            #debug
+           #main.log.report(self.name +": \n"+"git pull response: " +  str(self.handle.before) + str(self.handle.after))
+            if i==0:
+                main.log.error(self.name + ": Git pull had some issue...") 
+                return main.FALSE
+            elif i==1:
+                main.log.error(self.name + ": Git Pull Asking for username!!! BADD!") 
+                return main.FALSE 
+            elif i==2:
+                main.log.info(self.name + ": Git Pull - pulling repository now")
+                self.handle.expect("ONOS\$", 120)
+            elif i==3:
+                main.log.error(self.name + ": Git Pull - TIMEOUT")
+                return main.FALSE
+            elif i==4:
+                main.log.info(self.name + ": Git Pull - Already up to date")
+                uptodate = 1 
+            elif i==5:
+                main.log.info(self.name + ": Git Pull - Aborting... Are there conflicting git files?")
+                return main.FALSE
             else:
-                main.log.error("something went wrong")
+                main.log.error(self.name + ": Git Pull - Unexpected response, check for pull errors")
                 return main.FALSE
-            self.handle.expect("ONOS\$", 120)
-        elif i==2:
-            main.log.info("pulling repository now")
-            self.handle.expect("ONOS\$", 120)
-        elif i==3:
-            main.log.error("TIMEOUT")
-            return main.FALSE
-        elif i==4:
-            main.log.info("Already up to date")
-            uptodate = 1 
-        elif i==5:
-            main.log.info("Aborting... Are there conflicting git files?")
-            return main.FALSE
-        
-        '''        
-        main.log.info("./setup-local-maven.sh")
-        self.handle.sendline("./setup-local-maven.sh")
-        self.handle.expect("local-maven.sh")
-        while 1: 
-            i=self.handle.expect(['BUILD\sFAILURE','BUILD\sSUCCESS','ONOS\$',pexpect.TIMEOUT],timeout=90)
-            if i == 0:
-                main.log.error("Build failure!")
-                return main.FALSE
-            elif i == 1:
-                main.log.info("Build success!")
-            elif i == 2:
-                main.log.info("Build complete") 
-                break;
-            elif i == 3:
-                main.log.error("TIMEOUT!")
-                return main.FALSE
-        '''      
-        if uptodate == 0:
-            main.log.info("mvn clean") 
-            self.handle.sendline("mvn clean")
-            while 1: 
-                i=self.handle.expect(['BUILD\sFAILURE','BUILD\sSUCCESS','ONOS\$',pexpect.TIMEOUT],timeout=30)
-                if i == 0:
-                    main.log.error("Build failure!")
-                    return main.FALSE
-                elif i == 1:
-                    main.log.info("Build success!")
-                elif i == 2:
-                    main.log.info("Build complete") 
-                    break;
-                elif i == 3:
-                    main.log.error("TIMEOUT!")
-                    return main.FALSE
-        
-            main.log.info("mvn compile") 
-            self.handle.sendline("mvn compile")
-            while 1: 
-                i=self.handle.expect(['BUILD\sFAILURE','BUILD\sSUCCESS','ONOS\$',pexpect.TIMEOUT],timeout=30)
-                if i == 0:
-                    main.log.error("Build failure!")
-                    return main.FALSE
-                elif i == 1:
-                    main.log.info("Build success!")
-                elif i == 2:
-                    main.log.info("Build complete") 
-                    break;
-                elif i == 3:
-                    main.log.error("TIMEOUT!")
-                    return main.FALSE
+            
+            if uptodate == 0:
+                main.log.info(self.name + ": mvn clean") 
+                self.handle.sendline("mvn clean")
+                while 1: 
+                    i=self.handle.expect(['BUILD\sFAILURE','BUILD\sSUCCESS','ONOS\$',pexpect.TIMEOUT],timeout=30)
+                    if i == 0:
+                        main.log.error(self.name + ": Build failure!")
+                        return main.FALSE
+                    elif i == 1:
+                        main.log.info(self.name + ": Build success!")
+                    elif i == 2:
+                        main.log.info(self.name + ": Build complete") 
+                        break;
+                    elif i == 3:
+                        main.log.error(self.name + ": mvn clean TIMEOUT!")
+                        return main.FALSE
+            
+                main.log.info(self.name + ": mvn compile") 
+                self.handle.sendline("mvn compile")
+                while 1: 
+                    i=self.handle.expect(['BUILD\sFAILURE','BUILD\sSUCCESS','ONOS\$',pexpect.TIMEOUT],timeout=60)
+                    if i == 0:
+                        main.log.error(self.name + ": Build failure!")
+                        return main.FALSE
+                    elif i == 1:
+                        main.log.info(self.name + ": Build success!")
+                        return main.TRUE
+                    elif i == 2:
+                        main.log.info(self.name + ": Build complete") 
+                        return main.TRUE
+                    elif i == 3:
+                        main.log.error(self.name + ": mvn compile TIMEOUT!")
+                        return main.FALSE
+                    else:
+                        pass
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
 
-    def tcpdump(self):
-        self.handle.sendline("")
-        self.handle.expect("\$")
-        self.handle.sendline("sudo tcpdump -n -i eth0 -s0 -w onos-logs/tcpdump &")
-  
+
+    def tcpdump(self, intf = "eth0"):
+        try:
+            self.handle.sendline("")
+            self.handle.expect("\$")
+            self.handle.sendline("sudo tcpdump -n -i "+ intf + " -s0 -w onos-logs/tcpdump &")
+            i=self.handle.expect(['No\ssuch\device','listening\son',pexpect.TIMEOUT],timeout=10)
+            if i == 0:
+                main.log.error(self.name + ": tcpdump - No such device exists. tcpdump attempted on: " + intf)
+                return main.FALSE
+            elif i == 1: 
+                main.log.info(self.name + ": tcpdump started on " + intf)
+                return main.TRUE
+            elif i == 2: 
+                main.log.error(self.name + ": tcpdump command timed out! Check interface name, given interface was: " + intf)
+                return main.FALSE
+            else:
+                main.log.error(self.name + ": tcpdump - unexpected response")
+            return main.FALSE
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
+
     def kill_tcpdump(self):
-        self.handle.sendline("")
-        self.handle.expect("\$")
-        self.handle.sendline("sudo kill -9 `ps -ef | grep \"tcpdump -n\" | grep -v grep | awk '{print $2}'`")
+        try:
+            self.handle.sendline("")
+            self.handle.expect("\$")
+            self.handle.sendline("sudo kill -9 `ps -ef | grep \"tcpdump -n\" | grep -v grep | awk '{print $2}'`")
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
+
+    def find_host(self,RestIP,RestPort,RestAPI,hostIP):
+        retcode = 0
+        retswitch = []
+        retport = []
+        retmac = []
+        foundIP = []
+        try:
+            ##### device rest API is: 'host:8080/wm/core/topology/switches/all/json' ###
+            url ="http://%s:%s%s" %(RestIP,RestPort,RestAPI)
+
+            try:
+                command = "curl -s %s" % (url)
+                result = os.popen(command).read()
+                parsedResult = json.loads(result)
+                # print parsedResult
+            except:
+                print "REST IF %s has issue" % command
+                parsedResult = ""
+
+            if parsedResult == "":
+                return (retcode, "Rest API has an error")
+            else:
+                for switch in enumerate(parsedResult):
+                    for port in enumerate(switch[1]['ports']):
+                        if ( port[1]['devices'] != [] ):
+                            try:
+                                foundIP =  port[1]['devices'][0]['ipv4addresses'][0]['ipv4']
+                            except:
+                                print "Error in detecting IP address."
+                            if foundIP == hostIP:
+                                retswitch.append(switch[1]['dpid'])
+                                retport.append(port[1]['desc'])
+                                retmac.append(port[1]['devices'][0]['mac'])
+                                retcode = retcode +1
+                                foundIP =''
+            return(retcode, retswitch, retport, retmac)
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+            main.exit()
diff --git a/TestON/drivers/common/cli/remotesysdriver.py b/TestON/drivers/common/cli/remotesysdriver.py
index ab11f6a..374e502 100644
--- a/TestON/drivers/common/cli/remotesysdriver.py
+++ b/TestON/drivers/common/cli/remotesysdriver.py
@@ -40,13 +40,13 @@
         self.handle = super(RemoteSysDriver,self).connect(user_name = self.user_name, ip_address = self.ip_address,port = self.port, pwd = self.pwd)
         '''
         if self.handle:
-            self.execute(cmd= "\r",prompt= "\$|>|#",timeout= 10)
+            self.execute(cmd= "\n",prompt= "\$|>|#",timeout= 10)
             self.execute(cmd= "ssh -l paxterra 10.128.4.1",prompt= "paxterra@10.128.4.1's password:",timeout= 10)
-            self.execute(cmd= "\r",prompt= "paxterra@10.128.4.1's password:",timeout= 10)
+            self.execute(cmd= "\n",prompt= "paxterra@10.128.4.1's password:",timeout= 10)
             self.execute(cmd = "0nLab_gu3st",prompt = "\$",timeout = 10)
             self.execute(cmd = "cd TestON/bin/",prompt = "\$",timeout = 10)
             self.execute(cmd = "./cli.py run Assert example 1",prompt = "\$",timeout = 10)
-            self.execute(cmd= "\r",prompt= "$",timeout= 10)
+            self.execute(cmd= "\n",prompt= "$",timeout= 10)
             #self.execute(cmd = "help",prompt = ">",timeout = 10)
             
             #self.execute(cmd = "~.",prompt= ".*",timeout= 10)
diff --git a/TestON/drivers/common/cli/remotetestbeddriver.py b/TestON/drivers/common/cli/remotetestbeddriver.py
index 5ade2ec..79fbf1c 100644
--- a/TestON/drivers/common/cli/remotetestbeddriver.py
+++ b/TestON/drivers/common/cli/remotetestbeddriver.py
@@ -45,12 +45,12 @@
                                                               port = remote_port, pwd = remote_pwd)
         
         if self.handle:
-            self.execute(cmd= "\r",prompt= "\$|>|#",timeout= 10)
+            self.execute(cmd= "\n",prompt= "\$|>|#",timeout= 10)
             self.execute(cmd= "SET CYGWIN=notty",prompt= "\$|>|#",timeout= 10)
-            self.execute(cmd= "\r",prompt= "\$|>|#",timeout= 10)
+            self.execute(cmd= "\n",prompt= "\$|>|#",timeout= 10)
             main.log.info("ssh "+self.vm_user_name+'@'+self.vm_ip_address)
             self.execute(cmd= "ssh "+self.vm_user_name+'@'+self.vm_ip_address,prompt= "(.*)",timeout= 10)
-            self.execute(cmd= "\r",prompt= "assword:",timeout= 10)
+            self.execute(cmd= "\n",prompt= "assword:",timeout= 10)
             self.execute(cmd = self.vm_pwd,prompt = "\$",timeout = 10)
             
             return self.handle
diff --git a/TestON/drivers/common/cli/zookeeperclidriver.py b/TestON/drivers/common/cli/zookeeperclidriver.py
index 2a575ae..b7fe4ba 100644
--- a/TestON/drivers/common/cli/zookeeperclidriver.py
+++ b/TestON/drivers/common/cli/zookeeperclidriver.py
@@ -49,17 +49,21 @@
         self.port = None
         for key in connectargs:
             vars(self)[key] = connectargs[key]       
+        self.home = "~/zookeeper-3.4.5"
+        for key in self.options:
+            if key == "home":
+                self.home = self.options['home']
+                break
         
         self.name = self.options['name']
-        self.handle = super(ZookeeperCliDriver, self).connect(user_name = self.user_name, ip_address = self.ip_address,port = self.port, pwd = self.pwd)
+        self.handle = super(ZookeeperCliDriver, self).connect(user_name = self.user_name, ip_address = self.ip_address,port = self.port, pwd = self.pwd, home = self.home)
         
         self.ssh_handle = self.handle
         if self.handle :
-            self.start()
             return main.TRUE
         else :
             main.log.error("Connection failed to the host "+self.user_name+"@"+self.ip_address) 
-            main.log.error("Failed to connect to the Onos system")
+            main.log.error(self.name + ": Failed to connect to Zookeeper")
             return main.FALSE
    
  
@@ -67,20 +71,21 @@
         '''
         This Function will start the Zookeeper
         '''
-        main.log.info( "Starting Zookeeper" )
+        main.log.info(self.name + ": Starting Zookeeper" )
         self.handle.sendline("")
         self.handle.expect("\$")
-        self.handle.sendline("~/zookeeper-3.4.5/bin/zkServer.sh start")
+        self.handle.sendline(self.home + "/bin/zkServer.sh start")
         self.handle.expect("zkServer.sh start") 
         self.handle.expect("\$")
         response = self.handle.before + self.handle.after 
         if re.search("STARTED", response):
-            main.log.info("Zookeeper Started ")
+            main.log.info(self.name + ": Zookeeper Started ")
             return main.TRUE
         elif re.search("running", response):
-            main.log.warn("zookeeper ... already running")
+            main.log.warn(self.name +": zookeeper ... already running")
+            return main.TRUE
         else:
-            main.log.error("Failed to start Zookeeper"+ response)
+            main.log.error(self.name + ": Failed to start Zookeeper"+ response)
             return main.FALSE
         
     def status(self):
@@ -88,25 +93,25 @@
         This Function will return the Status of the Zookeeper 
         '''
         time.sleep(5)
-        self.execute(cmd="\r",prompt="\$",timeout=10)
-        response = self.execute(cmd="~/zookeeper-3.4.5/bin/zkServer.sh status ",prompt="JMX",timeout=10)
-        
-        self.execute(cmd="\r",prompt="\$",timeout=10)
+        self.execute(cmd="\n",prompt="\$",timeout=10)
+        response = self.execute(cmd=self.home + "/bin/zkServer.sh status ",prompt="JMX",timeout=10)
+       
+        self.execute(cmd="\n",prompt="\$",timeout=10)
         return response
         
     def stop(self):
         '''
         This Function will stop the Zookeeper if it is Running
         ''' 
-        self.execute(cmd="\r",prompt="\$",timeout=10)
+        self.execute(cmd="\n",prompt="\$",timeout=10)
         time.sleep(5)
-        response = self.execute(cmd="~/zookeeper-3.4.5/bin/zkServer.sh stop ",prompt="STOPPED",timeout=10)
-        self.execute(cmd="\r",prompt="\$",timeout=10)
+        response = self.execute(cmd=self.home + "/bin/zkServer.sh stop ",prompt="STOPPED",timeout=10)
+        self.execute(cmd="\n",prompt="\$",timeout=10)
         if re.search("STOPPED",response):
-            main.log.info("Zookeeper Stopped")
+            main.log.info(self.name + ": Zookeeper Stopped")
             return main.TRUE
         else:
-            main.log.warn("No zookeeper to stop")
+            main.log.warn(self.name + ": No zookeeper to stop")
             return main.FALSE
             
     def disconnect(self):
@@ -118,7 +123,7 @@
             self.handle.sendline("exit")
             self.handle.expect("closed")
         else :
-            main.log.error("Connection failed to the host")
+            main.log.error(self.name + ": Connection failed to the host")
             response = main.FALSE
         return response 
 
@@ -127,11 +132,13 @@
         Calls the zookeeper status and returns TRUE if it has an assigned Mode to it. 
         '''
         self.execute(cmd="\n",prompt="\$",timeout=10)
-        response = self.execute(cmd="~/zookeeper-3.4.5/bin/zkServer.sh status ",prompt="Mode",timeout=10)
+        response = self.execute(cmd=self.home + "/bin/zkServer.sh status ",prompt="Mode",timeout=10)
         pattern = '(.*)Mode(.*)'
-        if re.search(pattern, response):  
+        if re.search(pattern, response): 
+	    main.log.info(self.name + ": Zookeeper is up.") 
             return main.TRUE
         else:
+	    main.log.info(self.name + ": Zookeeper is down.") 
             return main.FALSE
 
 
diff --git a/TestON/tests/OnosCHO4nodes/OnosCHO4nodes.py b/TestON/tests/OnosCHO4nodes/OnosCHO4nodes.py
index 6eada76..8f30b10 100644
--- a/TestON/tests/OnosCHO4nodes/OnosCHO4nodes.py
+++ b/TestON/tests/OnosCHO4nodes/OnosCHO4nodes.py
@@ -9,6 +9,10 @@
 #Tests the startup of Zookeeper1, Cassandra1, and ONOS1 to be certain that all started up successfully
     def CASE1(self,main) :  #Check to be sure ZK, Cass, and ONOS are up, then get ONOS version
         import time
+        main.Zookeeper1.start()
+        main.Zookeeper2.start()
+        main.Zookeeper3.start()
+        main.Zookeeper4.start()
         main.ONOS1.stop()
         main.ONOS2.stop()
         main.ONOS3.stop()
@@ -95,22 +99,22 @@
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             elif i >= 3 and i < 5:
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip2'],port1=main.params['CTRL']['port2'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             elif i >= 5 and i < 15:
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip3'],port1=main.params['CTRL']['port3'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             else:
                 j=i+16
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip4'],port1=main.params['CTRL']['port4'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
         main.Mininet1.get_sw_controller("s1")       
 
         for i in range(9):
@@ -255,10 +259,10 @@
         for i in range(25):
             if i < 15:
                 j=i+1
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             else:
                 j=i+16
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
       
         strtTime = time.time() 
         result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
@@ -395,7 +399,6 @@
 
     def CASE21(self,main) :
         import json
-        from drivers.common.api.onosrestapidriver import *
         main.log.report("Test device discovery function, by attach/detach/move host h1 from s1->s6->s1.")
         main.log.report("Check initially hostMAC exist on the mininet...")
         host = main.params['YANK']['hostname']
@@ -408,8 +411,7 @@
         
         main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
         ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
-        restcall = OnosRestApiDriver()
-        Reststatus, Hoststatus = restcall.find_host(RestIP1,RestPort,url,mac)
+        Reststatus, Hoststatus =main.ONOS1.find_host(RestIP1,RestPort,url,mac)
         try:
             attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
             ip_found = Hoststatus[0]['ipv4'][0]
@@ -436,7 +438,7 @@
         time.sleep(3)
         utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Yank command suceeded",onfail="Yank command failed...")
         ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
-        Reststatus, Hoststatus = restcall.find_host(RestIP1,RestPort,url,mac)
+        Reststatus, Hoststatus = main.ONOS1.find_host(RestIP1,RestPort,url,mac)
         try:
             attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
         except:
@@ -455,7 +457,7 @@
         time.sleep(3)
         utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Plug command suceeded",onfail="Plug command failed...")
         ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
-        Reststatus, Hoststatus = restcall.find_host(RestIP2,RestPort,url,mac)
+        Reststatus, Hoststatus =main.ONOS1.find_host(RestIP2,RestPort,url,mac)
         try:
             attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
             ip_found = Hoststatus[0]['ipv4'][0]
@@ -484,7 +486,7 @@
         retult = main.Mininet1.plug(SW=main.params['PLUG']['sw1'],INTF=main.params['PLUG']['intf'])
         utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Yank/Plug command suceeded",onfail="Yank/Plug command failed...")
         ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
-        Reststatus, Hoststatus = restcall.find_host(RestIP1,RestPort,url,mac)
+        Reststatus, Hoststatus = main.ONOS1.find_host(RestIP1,RestPort,url,mac)
         try:
             attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
             ip_found = Hoststatus[0]['ipv4'][0]
diff --git a/TestON/tests/OnosCHO8nodes/OnosCHO8nodes.py b/TestON/tests/OnosCHO8nodes/OnosCHO8nodes.py
index a183aa3..52089f7 100644
--- a/TestON/tests/OnosCHO8nodes/OnosCHO8nodes.py
+++ b/TestON/tests/OnosCHO8nodes/OnosCHO8nodes.py
@@ -11,6 +11,14 @@
         main.log.report("Startup check Zookeeper1, Cassandra1, and ONOS1 connections")
         import time
         main.case("Checking if the startup was clean...") 
+        main.Zookeeper1.start()
+        main.Zookeeper2.start()
+        main.Zookeeper3.start()
+        main.Zookeeper4.start()
+        main.Zookeeper5.start()
+        main.Zookeeper6.start()
+        main.Zookeeper7.start()
+        main.Zookeeper8.start()
         main.step("Testing startup Zookeeper")   
         data =  main.Zookeeper1.isup()
         utilities.assert_equals(expect=main.TRUE,actual=data,onpass="Zookeeper is up!",onfail="Zookeeper is down...")
@@ -52,25 +60,25 @@
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])
                 time.sleep(3)
-                main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
+                main.Mininet1.assign_sw_controller(sw="s"+str(j),count=8,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
                 time.sleep(3)
             elif i >= 3 and i < 5:
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip2'],port1=main.params['CTRL']['port2'])
                 time.sleep(3)
-                main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
+                main.Mininet1.assign_sw_controller(sw="s"+str(j),count=8,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
                 time.sleep(3)
             elif i >= 5 and i < 15:
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip3'],port1=main.params['CTRL']['port3'])
                 time.sleep(3)
-                main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
+                main.Mininet1.assign_sw_controller(sw="s"+str(j),count=8,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
                 time.sleep(3)
             else:
                 j=i+16
                 main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip4'],port1=main.params['CTRL']['port4'])
                 time.sleep(3)
-                main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
+                main.Mininet1.assign_sw_controller(sw="s"+str(j),count=8,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
                 time.sleep(3)
         main.Mininet1.get_sw_controller("s1")       
  
@@ -165,11 +173,11 @@
         for i in range(25):
             if i < 15:
                 j=i+1
-                main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
+                main.Mininet1.assign_sw_controller(sw="s"+str(j),count=8,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
                 time.sleep(3)
             else:
                 j=i+16
-                main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
+                main.Mininet1.assign_sw_controller(sw="s"+str(j),count=8,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
                 time.sleep(3)
         strtTime = time.time()
         count = 1
diff --git a/TestON/tests/OnosDD_PARP/.OnosSanity4nodes.py.swn b/TestON/tests/OnosDD_PARP/.OnosSanity4nodes.py.swn
deleted file mode 100644
index cb578ac..0000000
--- a/TestON/tests/OnosDD_PARP/.OnosSanity4nodes.py.swn
+++ /dev/null
Binary files differ
diff --git a/TestON/tests/OnosDD_PARP/.OnosSanity4nodes.py.swo b/TestON/tests/OnosDD_PARP/.OnosSanity4nodes.py.swo
deleted file mode 100644
index 5389b47..0000000
--- a/TestON/tests/OnosDD_PARP/.OnosSanity4nodes.py.swo
+++ /dev/null
Binary files differ
diff --git a/TestON/tests/OnosDD_PARP/OnosDD_PARP.params b/TestON/tests/OnosDD_PARP/OnosDD_PARP.params
deleted file mode 100644
index 03e9886..0000000
--- a/TestON/tests/OnosDD_PARP/OnosDD_PARP.params
+++ /dev/null
@@ -1,45 +0,0 @@
-<PARAMS>
-    <testcases>1,2,21,3</testcases>
-    <FLOWDEF>~/flowdef_files/Center_Triangle/flowdef_20.txt</FLOWDEF>
-    <CASE1>       
-        <destination>h6</destination>
-    </CASE1>       
-    <PING>
-        <source1>h6</source1>
-        <target1>h31</target1>
-        <source2>h8</source2>
-        <target2>h33</target2>
-    </PING>
-    <LINK>
-        <begin>s1</begin>
-        <end>s2</end>
-    </LINK>
-    <YANK>
-        <hostname>h1</hostname>
-        <hostmac>00:00:00:00:00:01</hostmac>
-	<sw1>s1</sw1>
-        <sw6>s6</sw6>
-        <intf>s1-eth1</intf>
-    </YANK>
-    <PLUG>
-        <intf>s1-eth1</intf>
-	<sw6>s6</sw6>
-	<sw1>s1</sw1>
-    </PLUG>
-    <CTRL>
-        <ip1>10.128.100.1</ip1>
-        <port1>6633</port1>
-        <ip2>10.128.100.4</ip2>
-        <port2>6633</port2>
-        <ip3>10.128.100.5</ip3>
-        <port3>6633</port3>
-        <ip4>10.128.100.6</ip4>
-        <port4>6633</port4>
-    </CTRL>
-    <RESTCALL>
-	<restIP1>10.128.100.1</restIP1>
-	<restIP2>10.128.100.5</restIP2>
-	<restPort>8080</restPort>
-	<restURL>/wm/device/</restURL>
-    </RESTCALL>
-</PARAMS>      
diff --git a/TestON/tests/OnosDD_PARP/OnosDD_PARP.py b/TestON/tests/OnosDD_PARP/OnosDD_PARP.py
deleted file mode 100644
index 01c1169..0000000
--- a/TestON/tests/OnosDD_PARP/OnosDD_PARP.py
+++ /dev/null
@@ -1,378 +0,0 @@
-
-class OnosDD_PARP :
-
-    def __init__(self) :
-        self.default = ''
-
-#**********************************************************************************************************************************************************************************************
-#Test startup
-#Tests the startup of Zookeeper1, Cassandra1, and ONOS1 to be certain that all started up successfully
-    def CASE1(self,main) :  #Check to be sure ZK, Cass, and ONOS are up, then get ONOS version
-        import time
-        main.log.report("Pulling latest code from github to all nodes")
-        main.ONOS1.git_pull()
-        main.ONOS2.git_pull()
-        main.ONOS3.git_pull()
-        main.ONOS4.git_pull()
-        main.ONOS1.drop_keyspace()
-        main.ONOS1.start()
-        time.sleep(10)
-        main.ONOS2.start()
-        main.ONOS3.start()
-        main.ONOS4.start()
-        main.ONOS1.start_rest()
-        main.ONOS1.get_version()
-        main.log.report("Startup check Zookeeper1, Cassandra1, and ONOS1 connections")
-        main.case("Checking if the startup was clean...")
-        main.step("Testing startup Zookeeper")   
-        data =  main.Zookeeper1.isup()
-        utilities.assert_equals(expect=main.TRUE,actual=data,onpass="Zookeeper is up!",onfail="Zookeeper is down...")
-        main.step("Testing startup Cassandra")   
-        data =  main.Cassandra1.isup()
-        utilities.assert_equals(expect=main.TRUE,actual=data,onpass="Cassandra is up!",onfail="Cassandra is down...")
-        main.step("Testing startup ONOS")   
-        data = main.ONOS1.isup()
-        if data == main.FALSE: 
-            main.log.report("Something is funny... restarting ONOS")
-            main.ONOS1.stop()
-            time.sleep(3)
-            main.ONOS1.start()
-            time.sleep(5) 
-            data = main.ONOS1.isup()
-        utilities.assert_equals(expect=main.TRUE,actual=data,onpass="ONOS is up and running!",onfail="ONOS didn't start...")
-           
-#**********************************************************************************************************************************************************************************************
-#Assign Controllers
-#This test first checks the ip of a mininet host, to be certain that the mininet exists(Host is defined in Params as <CASE1><destination>).
-#Then the program assignes each ONOS instance a single controller to a switch(To be the initial master), then assigns all controllers.
-#NOTE: The reason why all four controllers are assigned although one was already assigned as the master is due to the 'ovs-vsctl set-controller' command erases all present controllers if
-#      the controllers already assigned to the switch are not specified.
-
-    def CASE2(self,main) :    #Make sure mininet exists, then assign controllers to switches
-        import time
-        main.log.report("Check if mininet started properly, then assign controllers ONOS 1,2,3 and 4")
-        main.case("Checking if one MN host exists")
-        main.step("Host IP Checking using checkIP")
-        result = main.Mininet1.checkIP(main.params['CASE1']['destination'])
-        main.step("Verifying the result")
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Host IP address configured",onfail="Host IP address not configured")
-        main.step("assigning ONOS controllers to switches")
-        for i in range(25): 
-            if i < 3:
-                j=i+1
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])
-                time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
-                time.sleep(1)
-            elif i >= 3 and i < 5:
-                j=i+1
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip2'],port1=main.params['CTRL']['port2'])
-                time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
-                time.sleep(1)
-            elif i >= 5 and i < 15:
-                j=i+1
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip3'],port1=main.params['CTRL']['port3'])
-                time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
-                time.sleep(1)
-            else:
-                j=i+16
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip4'],port1=main.params['CTRL']['port4'])
-                time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
-                time.sleep(1)
-        main.Mininet1.get_sw_controller("s1")       
- 
-# **********************************************************************************************************************************************************************************************
-#Add Flows
-#Deletes any remnant flows from any previous test, add flows from the file labeled <FLOWDEF>, then runs the check flow test
-#NOTE: THE FLOWDEF FILE MUST BE PRESENT ON TESTON VM!!! TestON will copy the file from its home machine into /tmp/flowtmp on the machine the ONOS instance is present on
-
-    def CASE3(self,main) :    #Delete any remnant flows, then add flows, and time how long it takes flow tables to update
-        main.log.report("Delete any flows from previous tests, then add flows from FLOWDEF file, then wait for switch flow tables to update")
-        import time
-        main.case("Taking care of these flows!") 
-        main.step("Cleaning out any leftover flows...")
-        main.ONOS1.delete_flow("all")
-        time.sleep(5)
-        strtTime = time.time()
-        main.ONOS1.add_flow(main.params['FLOWDEF'])
-        main.case("Checking flows")
-        tmp = main.FALSE
-        count = 1
-        main.log.info("Wait for flows to settle, then check")
-        while tmp == main.FALSE:
-            main.step("Waiting")
-            time.sleep(10)
-            main.step("Checking")
-            tmp = main.ONOS1.check_flow()
-            if tmp == main.FALSE and count < 6:
-                count = count + 1
-                main.log.report("Flow failed, waiting 10 seconds then making attempt number "+str(count))
-            elif tmp == main.FALSE and count == 6:
-                result = main.FALSE
-                break
-            else:
-                result = main.TRUE
-                break
-        endTime = time.time()
-        if result == main.TRUE:
-            main.log.report("\n\t\t\t\tTime to add flows: "+str(round(endTime-strtTime,2))+" seconds")
-        else:
-            main.log.report("\tFlows failed check")
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Flow check PASS",onfail="Flow check FAIL")
-
-#**********************************************************************************************************************************************************************************************
-#This test case removes Controllers 2,3, and 4 then performs a ping test.
-#The assign controller is used because the ovs-vsctl module deletes all current controllers when a new controller is assigned.
-#The ping test performs single pings on hosts from opposite sides of the topology. If one ping fails, the test waits 10 seconds before trying again.
-#If the ping test fails 6 times, then the test case will return false
-
-    def CASE4(self,main) :
-        main.log.report("Remove ONOS 2,3,4 then ping until all hosts are reachable or fail after 3 attempts")
-        import time
-        for i in range(25):
-            if i < 15:
-                j=i+1
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])  #Assigning a single controller removes all other controllers
-                time.sleep(1)
-            else:
-                j=i+16
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])
-                time.sleep(1)
-        strtTime = time.time()
-        count = 1
-        i = 6
-        while i < 16 :
-            main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
-            ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
-            if ping == main.FALSE and count < 3:
-                count = count + 1
-                i = 6
-                main.log.info("Ping failed, making attempt number "+str(count)+" in 10 seconds")
-                time.sleep(10)
-            elif ping == main.FALSE and count ==3:
-                main.log.error("Ping test failed")
-                i = 17
-                result = main.FALSE
-            elif ping == main.TRUE:
-                i = i + 1
-                result = main.TRUE
-        endTime = time.time() 
-        if result == main.TRUE:
-            main.log.report("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
-        else:
-            main.log.report("\tPING TEST FAIL")
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE")
-
-# **********************************************************************************************************************************************************************************************
-#This test case restores the controllers removed by Case 4 then performs a ping test.
-
-    def CASE5(self,main) :
-        main.log.report("Restore ONOS 2,3,4 then ping until all hosts are reachable or fail after 3 attempts")
-        import time
-        for i in range(25):
-            if i < 15:
-                j=i+1
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
-                time.sleep(1)
-            else:
-                j=i+16
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
-                time.sleep(1)
-        strtTime = time.time()
-        count = 1
-        i = 6
-        while i < 16 :
-            main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
-            ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
-            if ping == main.FALSE and count < 3:
-                count = count + 1
-                i = 6
-                main.log.info("Ping failed, making attempt number "+str(count)+" in 10 seconds")
-                time.sleep(10)
-            elif ping == main.FALSE and count ==3:
-                main.log.error("Ping test failed")
-                i = 17
-                result = main.FALSE
-            elif ping == main.TRUE:
-                i = i + 1
-                result = main.TRUE
-        endTime = time.time()
-        if result == main.TRUE:
-            main.log.report("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
-        else:
-            main.log.report("\tPING TEST FAILED")
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE")
-
-# **********************************************************************************************************************************************************************************************
-#Brings a link that all flows pass through in the mininet down, then runs a ping test to view reroute time
-
-    def CASE6(self,main) :
-        main.log.report("Bring Link between s1 and s2 down, wait 20 seconds, then ping until all hosts are reachable or fail after 3 attempts")
-        import time
-        main.case("Bringing Link down... ")
-        result = main.Mininet1.link(END1=main.params['LINK']['begin'],END2=main.params['LINK']['end'],OPTION="down")
-        time.sleep(20)
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Link DOWN!",onfail="Link not brought down...")
-        strtTime = time.time()
-        count = 1
-        i = 6
-        while i < 16 :
-            main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
-            ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
-            if ping == main.FALSE and count < 3:
-                count = count + 1
-                main.log.info("Ping failed, making attempt number "+str(count)+" in 10 seconds")
-                i = 6
-                time.sleep(10)
-            elif ping == main.FALSE and count ==3:
-                main.log.error("Ping test failed")
-                i = 17
-                result = main.FALSE
-            elif ping == main.TRUE:
-                i = i + 1
-                result = main.TRUE
-        endTime = time.time()
-        if result == main.TRUE:
-            main.log.report("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
-        else:
-            main.log.report("\tPING TEST FAILED")
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE")
-
-# **********************************************************************************************************************************************************************************************
-#Brings the link that Case 6 took down  back up, then runs a ping test to view reroute time
-
-    def CASE7(self,main) :
-        main.log.report("Bring Link between s1 and s2 up, wait 20 seconds, then ping until all hosts are reachable or fail after 3 attempts")
-        import time
-        main.case("Bringing Link up... ")
-        result = main.Mininet1.link(END1=main.params['LINK']['begin'],END2=main.params['LINK']['end'],OPTION="up")
-        time.sleep(20)
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Link UP!",onfail="Link not brought up...")
-        strtTime = time.time()
-        count = 1
-        i = 6
-        while i < 16 :
-            main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
-            ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
-            if ping == main.FALSE and count < 3:
-                count = count + 1
-                main.log.info("Ping failed, making attempt number "+str(count)+" in 10 seconds")
-                i = 6
-                time.sleep(10)
-            elif ping == main.FALSE and count ==3:
-                main.log.error("Ping test failed")
-                i = 17
-                result = main.FALSE
-            elif ping == main.TRUE:
-                i = i + 1
-                result = main.TRUE
-        endTime = time.time()
-        if result == main.TRUE:
-            main.log.report("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
-        else:
-            main.log.report("\tPING TESTS FAILED")
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE")
-
-
-
-# **********************************************************************************************************************************************************************************************
-# Test Device Discovery function by yanking s6:s6-eth0 interface and re-plug it into a switch
-
-    def CASE21(self,main) :
-        import json
-        from drivers.common.api.onosrestapidriver import *
-        main.log.report("Test device discovery function, by attach/detach/move host h1 from s1->s6->s1.")
-        main.log.report("Check initially hostMAC exist on the mininet...")
-        host = main.params['YANK']['hostname']
-        mac = main.params['YANK']['hostmac']
-        RestIP1 = main.params['RESTCALL']['restIP1']
-        RestIP2 = main.params['RESTCALL']['restIP2']
-        RestPort = main.params['RESTCALL']['restPort']
-        url = main.params['RESTCALL']['restURL']
-        #print "host=" + host + ";  RestIP=" + RestIP1 + ";  RestPort=" + str(RestPort)
-        
-        main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
-        ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
-        restcall = OnosRestApiDriver()
-        Reststatus, Hoststatus = restcall.find_host(RestIP1,RestPort,url,mac)
-        try:
-            attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
-        except IndexError:
-            Reststatus = 0
-        if Reststatus == 1:
-            main.log.report("\tFound host " + host + " attached to switchDPID = " + attachedSW)
-            result = main.TRUE
-        else:
-            main.log.report("\t Host " + host + " with MAC:" + str(mac) + " does not exist. FAILED")
-            result = main.FALSE
-
-        ##### Step to yank out "s1-eth1" from s1, which is on autoONOS1 #####
-
-        main.log.report("Yank out s1-eth1")
-        main.case("Yankout s6-eth1 (link to h1) from s1")
-        result = main.Mininet1.yank(SW=main.params['YANK']['sw1'],INTF=main.params['YANK']['intf'])
-        time.sleep(3)
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Yank command suceeded",onfail="Yank command failed...")
-        ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
-        Reststatus, Hoststatus = restcall.find_host(RestIP1,RestPort,url,mac)
-        try:
-            attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
-        except IndexError:
-            Reststatus = 0
-        if Reststatus == 0:
-            main.log.report("Attemp to yank out s1-eth1 from s1 sucessfully")
-            result = main.TRUE
-        else:
-            main.log.report("Attemp to yank out s1-eht1 from s1 failed.")
-            result = main.FALSE
-        
-        ##### Step to plug "s1-eth1" to s6, which is on autoONOS3  ######
-        main.log.report("Plug s1-eth1 into s6")
-        main.case("Plug s1-eth1 to s6")
-        result = main.Mininet1.plug(SW=main.params['PLUG']['sw6'],INTF=main.params['PLUG']['intf'])
-        time.sleep(3)
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Plug command suceeded",onfail="Plug command failed...")
-        ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
-        Reststatus, Hoststatus = restcall.find_host(RestIP2,RestPort,url,mac)
-        try:
-            attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
-        except IndexError:
-            Reststatus = 0
-        if Reststatus == 0:
-            main.log.report("Attemp to plug s1-eth1 to s6 FAILED")
-            result = main.FALSE
-        elif attachedSW == "00:00:00:00:00:00:00:06":
-            main.log.report("Attemp to plug s1-eht1 to s6 succeded.")
-            result = main.TRUE
-        else:
-            main.log.report( "FAILED to attach s1-eth1 to s6 correctly!")
-            result = main.FALSE
-
-	###### Step to put interface "s1-eth1" back to s1"#####
-        main.log.report("Move s1-eth1 back on to s1")
-        main.case("Move s1-eth1 back to s1")
-        result = main.Mininet1.yank(SW=main.params['YANK']['sw6'],INTF=main.params['YANK']['intf'])
-        time.sleep(3)
-        retult = main.Mininet1.plug(SW=main.params['PLUG']['sw1'],INTF=main.params['PLUG']['intf'])
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Yank/Plug command suceeded",onfail="Yank/Plug command failed...")
-        ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
-        Reststatus, Hoststatus = restcall.find_host(RestIP1,RestPort,url,mac)
-        try:
-            attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
-        except IndexError:
-            Reststatus = 0
-        if Reststatus == 0:
-            main.log.report("Attemp to plug s1-eth1 back to s1 FAILED")
-            result = main.FALSE
-        elif attachedSW == "00:00:00:00:00:00:00:01":
-            main.log.report("Attemp to plug s1-eht1 back to s1 succeded.")
-            result = main.TRUE
-        else:
-            main.log.report( "FAIL to attach s1-eth1 to s1 correctly!")
-            result = main.FALSE
-
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="DEVICE DISCOVERY TEST PASSED PLUG/UNPLUG/MOVE TEST",onfail="DIVICE DISCOVERY TEST FAILED")
-
diff --git a/TestON/tests/OnosDD_PARP/OnosDD_PARP.topo b/TestON/tests/OnosDD_PARP/OnosDD_PARP.topo
deleted file mode 100644
index 0c77a3b..0000000
--- a/TestON/tests/OnosDD_PARP/OnosDD_PARP.topo
+++ /dev/null
@@ -1,139 +0,0 @@
-<TOPOLOGY>
-
-    <COMPONENT>
-        <Zookeeper1>
-            <host>10.128.100.1</host>
-            <user>admin</user>
-            <password></password>
-            <type>ZookeeperCliDriver</type>
-            <connect_order>1</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </Zookeeper1>
-
-        <Zookeeper2>
-            <host>10.128.100.4</host>
-            <user>admin</user>
-            <password></password>
-            <type>ZookeeperCliDriver</type>
-            <connect_order>2</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </Zookeeper2>
-
-        <Zookeeper3>
-            <host>10.128.100.5</host>
-            <user>admin</user>
-            <password></password>
-            <type>ZookeeperCliDriver</type>
-            <connect_order>3</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </Zookeeper3>
-       
-        <Zookeeper4>
-            <host>10.128.100.6</host>
-            <user>admin</user>
-            <password></password>
-            <type>ZookeeperCliDriver</type>
-            <connect_order>4</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </Zookeeper4>
-
-        <Cassandra1>
-            <host>10.128.100.1</host>
-            <user>admin</user>
-            <password></password>
-            <type>CassandraCliDriver</type>
-            <connect_order>5</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </Cassandra1>
-
-        <Cassandra2>
-            <host>10.128.100.4</host>
-            <user>admin</user>
-            <password></password>
-            <type>CassandraCliDriver</type>
-            <connect_order>6</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </Cassandra2>
-       
-        <Cassandra3>
-            <host>10.128.100.5</host>
-            <user>admin</user>
-            <password></password>
-            <type>CassandraCliDriver</type>
-            <connect_order>7</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </Cassandra3>
-       
-        <Cassandra4>
-            <host>10.128.100.6</host>
-            <user>admin</user>
-            <password></password>
-            <type>CassandraCliDriver</type>
-            <connect_order>8</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </Cassandra4>
-
-        <ONOS1>
-            <host>10.128.100.1</host>
-            <user>admin</user>
-            <password></password>
-            <type>OnosCliDriver</type>
-            <connect_order>9</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </ONOS1>
-
-        <ONOS2>
-            <host>10.128.100.4</host>
-            <user>admin</user>
-            <password></password>
-            <type>OnosCliDriver</type>
-            <connect_order>10</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </ONOS2>
-
-        <ONOS3>
-            <host>10.128.100.5</host>
-            <user>admin</user>
-            <password></password>
-            <type>OnosCliDriver</type>
-            <connect_order>11</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </ONOS3>
-       
-        <ONOS4>
-            <host>10.128.100.6</host>
-            <user>admin</user>
-            <password></password>
-            <type>OnosCliDriver</type>
-            <connect_order>12</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </ONOS4>
-
-        <Mininet1>
-            <host>10.128.100.11</host>
-            <user>admin</user>
-            <password></password>
-            <type>MininetCliDriver</type>
-            <connect_order>13</connect_order>
-            <COMPONENTS>
-                # Specify the Option for mininet
-                <arg1> --custom ~/mininet/custom/topo-onos4node.py </arg1>
-                <arg2> --topo mytopo</arg2>
-                <controller> remote </controller>
-             </COMPONENTS>
-        </Mininet1>
-
-    </COMPONENT>
-</TOPOLOGY>
diff --git a/TestON/tests/OnosDD_PARP/__init__.py b/TestON/tests/OnosDD_PARP/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/TestON/tests/OnosDD_PARP/__init__.py
+++ /dev/null
diff --git a/TestON/tests/OnosPerf4nodes/OnosPerf4nodes.py b/TestON/tests/OnosPerf4nodes/OnosPerf4nodes.py
index dcc2162..0557929 100644
--- a/TestON/tests/OnosPerf4nodes/OnosPerf4nodes.py
+++ b/TestON/tests/OnosPerf4nodes/OnosPerf4nodes.py
@@ -98,22 +98,22 @@
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             elif i >= 3 and i < 5:
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip2'],port1=main.params['CTRL']['port2'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             elif i >= 5 and i < 15:
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip3'],port1=main.params['CTRL']['port3'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             else:
                 j=i+16
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip4'],port1=main.params['CTRL']['port4'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
         main.Mininet1.get_sw_controller("s1")
         time.sleep(5)        
 
diff --git a/TestON/tests/OnosPerfTest/OnosPerfTest.py b/TestON/tests/OnosPerfTest/OnosPerfTest.py
index 70a3955..a5e95bd 100644
--- a/TestON/tests/OnosPerfTest/OnosPerfTest.py
+++ b/TestON/tests/OnosPerfTest/OnosPerfTest.py
@@ -78,22 +78,22 @@
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             elif i >= 3 and i < 5:
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip2'],port1=main.params['CTRL']['port2'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             elif i >= 5 and i < 15:
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip3'],port1=main.params['CTRL']['port3'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             else:
                 j=i+16
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip4'],port1=main.params['CTRL']['port4'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
         main.Mininet1.get_sw_controller("s1")
 
     def CASE3(self,main) :
diff --git a/TestON/tests/OnosPerfTest/OnosPerfTest.topo b/TestON/tests/OnosPerfTest/OnosPerfTest.topo
index eb6130f..d7bf736 100644
--- a/TestON/tests/OnosPerfTest/OnosPerfTest.topo
+++ b/TestON/tests/OnosPerfTest/OnosPerfTest.topo
@@ -3,7 +3,7 @@
         <Zookeeper1>
             <host>10.128.100.1</host>
             <user>admin</user>
-            <password>onos_test</password>
+            <password></password>
             <type>ZookeeperCliDriver</type>
             <connect_order>1</connect_order>
         </Zookeeper1>
@@ -11,28 +11,28 @@
         <Cassandra1>
             <host>10.128.100.1</host>
             <user>admin</user>
-            <password>onos_test</password>
+            <password></password>
             <type>CassandraCliDriver</type>
             <connect_order>2</connect_order>
         </Cassandra1>
         <Cassandra2>
             <host>10.128.100.4</host>
             <user>admin</user>
-            <password>onos_test</password>
+            <password></password>
             <type>CassandraCliDriver</type>
             <connect_order>3</connect_order>
         </Cassandra2>
         <Cassandra3>
             <host>10.128.100.5</host>
             <user>admin</user>
-            <password>onos_test</password>
+            <password></password>
             <type>CassandraCliDriver</type>
             <connect_order>4</connect_order>
         </Cassandra3>
         <Cassandra4>
             <host>10.128.100.6</host>
             <user>admin</user>
-            <password>onos_test</password>
+            <password></password>
             <type>CassandraCliDriver</type>
             <connect_order>5</connect_order>
         </Cassandra4>
@@ -40,28 +40,28 @@
         <ONOS1>
             <host>10.128.100.1</host>
             <user>admin</user>
-            <password>onos_test</password>
+            <password></password>
             <type>OnosCliDriver</type>
             <connect_order>6</connect_order>
         </ONOS1>
         <ONOS2>
             <host>10.128.100.4</host>
             <user>admin</user>
-            <password>onos_test</password>
+            <password></password>
             <type>OnosCliDriver</type>
             <connect_order>7</connect_order>
         </ONOS2>
         <ONOS3>
             <host>10.128.100.5</host>
             <user>admin</user>
-            <password>onos_test</password>
+            <password></password>
             <type>OnosCliDriver</type>
             <connect_order>8</connect_order>
         </ONOS3>
         <ONOS4>
             <host>10.128.100.6</host>
             <user>admin</user>
-            <password>onos_test</password>
+            <password></password>
             <type>OnosCliDriver</type>
             <connect_order>9</connect_order>
         </ONOS4>
@@ -69,7 +69,7 @@
         <Mininet1>
             <host>10.128.100.11</host>
             <user>admin</user>
-            <password>onos_test</password>
+            <password></password>
             <type>MininetCliDriver</type>
             <connect_order>10</connect_order>
             <COMPONENTS>
@@ -83,14 +83,14 @@
         <Mininet4>
             <host>10.128.100.11</host>
             <user>admin</user>
-            <password>onos_test</password>
+            <password></password>
             <type>RemoteMininetDriver</type>
             <connect_order>11</connect_order>
         </Mininet4>
         <Mininet8>
             <host>10.128.100.11</host>
             <user>admin</user>
-            <password>onos_test</password>
+            <password></password>
             <type>RemoteMininetDriver</type>
             <connect_order>12</connect_order>
         </Mininet8>
diff --git a/TestON/tests/OnosSanity/OnosSanity.params b/TestON/tests/OnosSanity/OnosSanity.params
deleted file mode 100644
index 85b626a..0000000
--- a/TestON/tests/OnosSanity/OnosSanity.params
+++ /dev/null
@@ -1,17 +0,0 @@
-<PARAMS>
-    <testcases>1</testcases>
-    <FLOWDEF>~/tmp</FLOWDEF>
-    <CASE1>       
-        <destination>h6</destination>
-    </CASE1>       
-    <PING>
-        <source1>h6</source1>
-        <target1>h31</target1>
-        <source2>h8</source2>
-        <target2>h33</target2>
-    </PING>
-    <LINK>
-        <begin>s1</begin>
-        <end>s2</end>
-    </LINK>
-</PARAMS>      
diff --git a/TestON/tests/OnosSanity/OnosSanity.py b/TestON/tests/OnosSanity/OnosSanity.py
deleted file mode 100644
index baaec06..0000000
--- a/TestON/tests/OnosSanity/OnosSanity.py
+++ /dev/null
@@ -1,130 +0,0 @@
-
-class OnosSanity :
-
-    def __init__(self) :
-        self.default = ''
-
-    def CASE1(self,main) :
-        import time
-        main.case("Checking if the startup was clean...") 
-        main.step("Testing startup Zookeeper")   
-        data =  main.Zookeeper1.isup()
-        utilities.assert_equals(expect=main.TRUE,actual=data,onpass="Zookeeper is up!",onfail="Zookeeper is down...")
-        main.step("Testing startup Cassandra")   
-        data =  main.Cassandra1.isup()
-        utilities.assert_equals(expect=main.TRUE,actual=data,onpass="Cassandra is up!",onfail="Cassandra is down...")
-        main.step("Testing startup ONOS")   
-        data = main.ONOS1.isup()
-        if data == main.FALSE: 
-            main.log.info("Something is funny... restarting ONOS")
-            main.ONOS1.stop()
-            time.sleep(3)
-            main.ONOS1.start()
-            time.sleep(5) 
-            data = main.ONOS1.isup()
-        main.log.info("\n\n\t\t\t\t ONOS VERSION")
-        main.ONOS1.get_version()
-        main.log.info("\n\n")
-        utilities.assert_equals(expect=main.TRUE,actual=data,onpass="ONOS is up and running!",onfail="ONOS didn't start...")
-            
-    def CASE2(self,main) :
-        main.case("Checking if one MN host exists")
-        main.step("Host IP Checking using checkIP")
-        result = main.Mininet1.checkIP(main.params['CASE1']['destination'])
-        main.step("Verifying the result")
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Host IP address configured",onfail="Host IP address not configured")
-        
-    def CASE3(self,main) :
-        import time
-        main.case("Taking care of these flows!") 
-        main.step("Cleaning out any leftover flows...")
-        main.ONOS1.delete_flow("all")
-        time.sleep(5)
-        strtTime = time.time()
-        main.ONOS1.add_flow(main.params['FLOWDEF'])
-        main.case("Checking flows")
-        result = main.FALSE
-        count = 1
-        main.log.info("Wait for flows to settle, then check")
-        while result == main.FALSE:
-            main.step("Waiting")
-            time.sleep(10)
-            main.step("Checking")
-            result = main.ONOS1.check_flow()
-            if result== main.FALSE and count < 6:
-                count = count + 1
-                main.log.info("Flow failed, waiting 10 seconds then making attempt number "+str(count))
-            elif result == main.FALSE and count == 6:
-                success = main.FALSE
-                break
-            else:
-                success = main.TRUE
-                break
-        endTime = time.time()
-        main.log.info("\n\t\t\t\tTime to add flows: "+str(endTime-strtTime)+" seconds")
-        utilities.assert_equals(expect=main.TRUE,actual=success,onpass="Flow check PASS",onfail="Flow check FAIL")
-        #time.sleep(10)
-        #data = main.ONOS1.get_flow("all")   
-
-    def CASE4(self,main) :
-        main.case("Testing ping...")
-        ping_result = main.Mininet1.pingHost(src=main.params['PING']['source1'],target=main.params['PING']['target1'])
-        utilities.assert_equals(expect=main.TRUE,actual=ping_result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE") 
-
-    def CASE5(self,main) :
-        import time
-        main.case("Bringing Link down... ")
-        result = main.Mininet1.link(END1=main.params['LINK']['begin'],END2=main.params['LINK']['end'],OPTION="down")
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Link DOWN!",onfail="Link not brought down...")
-        time.sleep(10)
-
-    def CASE6(self,main) :
-        import time
-        main.case("Checking flows")
-        result = main.FALSE
-        count = 1
-        main.log.info("Wait for flows to settle, then check")
-        while result == main.FALSE:
-            main.step("Waiting")
-            time.sleep(10)
-            main.step("Checking")
-            result = main.ONOS1.check_flow()
-            if result== main.FALSE and count < 6:
-                count = count + 1
-                main.log.info("Flow failed, waiting 10 seconds then making attempt number "+str(count))
-            elif result == main.FALSE and count == 6:
-                success = main.FALSE
-                break
-            else:
-                success = main.TRUE
-                break
-        utilities.assert_equals(expect=main.TRUE,actual=success,onpass="Flow check PASS",onfail="Flow check FAIL")
-   
-    def CASE7(self,main) :
-        main.case("Pinging EVERYTHINGGG!!!")
-        import time
-        strtTime = time.time()
-        result = main.TRUE
-        exit = main.FALSE
-        count = 1
-        while 1:
-            for i in range(6, 16) :
-                main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
-                ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
-                if ping == main.FALSE and count < 6:
-                    count = count + 1
-                    main.log.info("Ping failed, making attempt number "+str(count)+" in 10 seconds")
-                    time.sleep(10)
-                    break
-                elif ping == main.FALSE and count ==6:
-                    main.log.error("Ping test failed")
-                    exit = main.TRUE
-                    break
-                elif ping == main.TRUE:
-                    exit = main.TRUE
-            if exit == main.TRUE:
-               endTime = time.time() 
-               break
-        main.log.info("\n\t\t\t\tTime to complete ping test: "+str(endTime-strtTime)+" seconds")
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE")
-
diff --git a/TestON/tests/OnosSanity/OnosSanity.topo b/TestON/tests/OnosSanity/OnosSanity.topo
deleted file mode 100644
index 1ee0ac3..0000000
--- a/TestON/tests/OnosSanity/OnosSanity.topo
+++ /dev/null
@@ -1,50 +0,0 @@
-<TOPOLOGY>
-
-    <COMPONENT>
-        <Zookeeper1>
-            <host>10.128.4.26</host>
-            <user>admin</user>
-            <password></password>
-            <type>ZookeeperCliDriver</type>
-            <connect_order>1</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </Zookeeper1>
-
-        <Cassandra1>
-            <host>10.128.4.26</host>
-            <user>admin</user>
-            <password></password>
-            <type>CassandraCliDriver</type>
-            <connect_order>2</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </Cassandra1>
-
-        <ONOS1>
-            <host>10.128.4.26</host>
-            <user>admin</user>
-            <password></password>
-            <type>OnosCliDriver</type>
-            <connect_order>3</connect_order>
-            <COMPONENTS>
-
-             </COMPONENTS>
-        </ONOS1>
-
-        <Mininet1>
-            <host>10.128.4.26</host>
-            <user>admin</user>
-            <password></password>
-            <type>MininetCliDriver</type>
-            <connect_order>4</connect_order>
-            <COMPONENTS>
-                # Specify the Option for mininet
-                <arg1> --custom ~/mininet/custom/topo-2sw-2host.py </arg1>
-                <arg2> --topo mytopo</arg2>
-                <controller> remote </controller>
-             </COMPONENTS>
-        </Mininet1>
-
-    </COMPONENT>
-</TOPOLOGY>
diff --git a/TestON/tests/OnosSanity/OnosSanity.topo.back b/TestON/tests/OnosSanity/OnosSanity.topo.back
deleted file mode 100644
index 9561597..0000000
--- a/TestON/tests/OnosSanity/OnosSanity.topo.back
+++ /dev/null
@@ -1,42 +0,0 @@
-<TOPOLOGY>
-
-    <COMPONENT>
-        <Zookeeper1>
-            <host>10.128.4.26</host>
-            <user>admin</user>
-            <password>onos_test</password>
-            <type>ZookeeperCliDriver</type>
-            <COMPONENTS>
-             </COMPONENTS>   
-        </Zookeeper1>     
-        <Cassandra1>
-            <host>10.128.4.26</host>
-            <user>admin</user>
-            <password>onos_test</password>
-            <type>CassandraCliDriver</type>
-            <COMPONENTS>
-             </COMPONENTS>   
-        </Cassandra1>   
-        <ONOS1>
-            <host>10.128.4.26</host>
-            <user>admin</user>
-            <password>onos_test</password>
-            <type>OnosCliDriver</type>
-            <COMPONENTS>
-            
-             </COMPONENTS>   
-        </ONOS1> 
-        
-        
-         <ONOSRESTAPI1>
-            <host>10.128.4.26</host>
-            <user>admin</user>
-            <password>onos_test</password>
-            <type>OnosRestApiDriver</type>
-            <COMPONENTS>
-            <topology_url>http://10.128.4.26:9000/topology</topology_url>
-             </COMPONENTS>   
-        </ONOSRESTAPI1> 
-        
-    </COMPONENT>
-</TOPOLOGY>
diff --git a/TestON/tests/OnosSanity/__init__.py b/TestON/tests/OnosSanity/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/TestON/tests/OnosSanity/__init__.py
+++ /dev/null
diff --git a/TestON/tests/OnosSanity4ARP/OnosSanity4ARP.py b/TestON/tests/OnosSanity4ARP/OnosSanity4ARP.py
index 1f50245..e9049c7 100644
--- a/TestON/tests/OnosSanity4ARP/OnosSanity4ARP.py
+++ b/TestON/tests/OnosSanity4ARP/OnosSanity4ARP.py
@@ -9,6 +9,10 @@
 #Tests the startup of Zookeeper1, Cassandra1, and ONOS1 to be certain that all started up successfully
     def CASE1(self,main) :  #Check to be sure ZK, Cass, and ONOS are up, then get ONOS version
         import time
+        main.Zookeeper1.start()
+        main.Zookeeper2.start()
+        main.Zookeeper3.start()
+        main.Zookeeper4.start()
         main.log.report("Pulling latest code from github to all nodes")
         main.ONOS1.git_pull()
         main.ONOS2.git_pull()
@@ -83,22 +87,22 @@
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             elif i >= 3 and i < 5:
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip2'],port1=main.params['CTRL']['port2'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             elif i >= 5 and i < 15:
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip3'],port1=main.params['CTRL']['port3'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             else:
                 j=i+16
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip4'],port1=main.params['CTRL']['port4'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
         main.Mininet1.get_sw_controller("s1")       
  
 # **********************************************************************************************************************************************************************************************
@@ -202,10 +206,10 @@
         for i in range(25):
             if i < 15:
                 j=i+1
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             else:
                 j=i+16
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
       
         strtTime = time.time() 
         result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
diff --git a/TestON/tests/OnosSanity4ARP/OnosSanity4node_testDD.py b/TestON/tests/OnosSanity4ARP/OnosSanity4node_testDD.py
index a0c9f98..d6192fb 100644
--- a/TestON/tests/OnosSanity4ARP/OnosSanity4node_testDD.py
+++ b/TestON/tests/OnosSanity4ARP/OnosSanity4node_testDD.py
@@ -9,6 +9,10 @@
 #Tests the startup of Zookeeper1, Cassandra1, and ONOS1 to be certain that all started up successfully
     def CASE1(self,main) :  #Check to be sure ZK, Cass, and ONOS are up, then get ONOS version
         import time
+        main.Zookeeper1.start()
+        main.Zookeeper2.start()
+        main.Zookeeper3.start()
+        main.Zookeeper4.start()
         main.log.report("Pulling latest code from github to all nodes")
         main.ONOS1.git_pull()
         main.ONOS2.git_pull()
@@ -83,22 +87,22 @@
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             elif i >= 3 and i < 5:
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip2'],port1=main.params['CTRL']['port2'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             elif i >= 5 and i < 15:
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip3'],port1=main.params['CTRL']['port3'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             else:
                 j=i+16
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip4'],port1=main.params['CTRL']['port4'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
         main.Mininet1.get_sw_controller("s1")       
  
 # **********************************************************************************************************************************************************************************************
@@ -226,10 +230,10 @@
         for i in range(25):
             if i < 15:
                 j=i+1
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             else:
                 j=i+16
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
       
         strtTime = time.time() 
         result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
diff --git a/TestON/tests/OnosSanity4nodes.tar.gz b/TestON/tests/OnosSanity4nodes.tar.gz
deleted file mode 100644
index 197f5a3..0000000
--- a/TestON/tests/OnosSanity4nodes.tar.gz
+++ /dev/null
Binary files differ
diff --git a/TestON/tests/OnosSanity4nodes/OnosSanity4nodes.py b/TestON/tests/OnosSanity4nodes/OnosSanity4nodes.py
index 3b5397b..0a757a6 100644
--- a/TestON/tests/OnosSanity4nodes/OnosSanity4nodes.py
+++ b/TestON/tests/OnosSanity4nodes/OnosSanity4nodes.py
@@ -9,6 +9,10 @@
 #Tests the startup of Zookeeper1, Cassandra1, and ONOS1 to be certain that all started up successfully
     def CASE1(self,main) :  #Check to be sure ZK, Cass, and ONOS are up, then get ONOS version
         import time
+        main.Zookeeper1.start()
+        main.Zookeeper2.start()
+        main.Zookeeper3.start()
+        main.Zookeeper4.start()
         main.log.report("Pulling latest code from github to all nodes")
         main.ONOS1.git_pull()
         main.ONOS2.git_pull()
@@ -87,22 +91,22 @@
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             elif i >= 3 and i < 5:
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip2'],port1=main.params['CTRL']['port2'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             elif i >= 5 and i < 15:
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip3'],port1=main.params['CTRL']['port3'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             else:
                 j=i+16
                 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip4'],port1=main.params['CTRL']['port4'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
         main.Mininet1.get_sw_controller("s1")       
  
 # **********************************************************************************************************************************************************************************************
@@ -206,10 +210,10 @@
         for i in range(25):
             if i < 15:
                 j=i+1
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
             else:
                 j=i+16
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
+                main.Mininet1.assign_sw_controller(sw=str(j),count=4,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
       
         strtTime = time.time() 
         result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
@@ -337,7 +341,6 @@
 
     def CASE21(self,main) :
         import json
-        from drivers.common.api.onosrestapidriver import *
         main.log.report("Test device discovery function, by attach, detach, move host h1 from s1->s6->s1. Per mininet naming, switch port the host attaches will remain as 's1-eth1' throughout the test.")
         main.log.report("Check initially hostMAC/IP exist on the mininet...")
         host = main.params['YANK']['hostname']
@@ -356,8 +359,7 @@
         main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
         ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
         time.sleep(t_restwait)
-        restcall = OnosRestApiDriver()
-        Reststatus, Switch, Port, MAC = restcall.find_host(RestIP1,RestPort,url, hostip)
+        Reststatus, Switch, Port, MAC = main.ONOS1.find_host(RestIP1,RestPort,url, hostip)
         main.log.report("Number of host with IP=10.0.0.1 found by ONOS is: " + str(Reststatus))
         if Reststatus == 1:
             main.log.report("\t PASSED - Found host IP = " + hostip + "; MAC = " + "".join(MAC) + "; attached to switchDPID = " + "".join(Switch) + "; at port = " + "".join(Port))
@@ -376,7 +378,7 @@
         ##### Step to yank out "s1-eth1" from s1, which is on autoONOS1 #####
 
         main.log.report("Yank out s1-eth1")
-        main.case("Yankout s6-eth1 (link to h1) from s1")
+        main.step("Yankout s6-eth1 (link to h1) from s1")
         result = main.Mininet1.yank(SW=main.params['YANK']['sw1'],INTF=main.params['YANK']['intf'])
         time.sleep(t_topowait)
         utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Yank command suceeded",onfail="Yank command failed...")
@@ -384,8 +386,7 @@
         main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
         ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
         time.sleep(t_restwait)
-        restcall = OnosRestApiDriver()
-        Reststatus, Switch, Port, MAC = restcall.find_host(RestIP1,RestPort,url, hostip)
+        Reststatus, Switch, Port, MAC = main.ONOS1.find_host(RestIP1,RestPort,url, hostip)
 
         main.log.report("Number of host with IP=10.0.0.1 found by ONOS is: " + str(Reststatus))
         if Reststatus == 1:
@@ -403,7 +404,7 @@
          
         ##### Step to plug "s1-eth1" to s6, which is on autoONOS3  ######
         main.log.report("Plug s1-eth1 into s6")
-        main.case("Plug s1-eth1 to s6")
+        main.step("Plug s1-eth1 to s6")
         result = main.Mininet1.plug(SW=main.params['PLUG']['sw6'],INTF=main.params['PLUG']['intf'])
         time.sleep(t_topowait)
         utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Plug command suceeded",onfail="Plug command failed...")
@@ -411,8 +412,7 @@
 
         ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
         time.sleep(t_restwait)
-        restcall = OnosRestApiDriver()
-        Reststatus, Switch, Port, MAC = restcall.find_host(RestIP1,RestPort,url, hostip)
+        Reststatus, Switch, Port, MAC = main.ONOS1.find_host(RestIP1,RestPort,url, hostip)
 
         main.log.report("Number of host with IP=10.0.0.1 found by ONOS is: " + str(Reststatus))
         if Reststatus == 1:
@@ -430,17 +430,16 @@
 
         ###### Step to put interface "s1-eth1" back to s1"#####
         main.log.report("Move s1-eth1 back on to s1")
-        main.case("Move s1-eth1 back to s1")
+        main.step("Move s1-eth1 back to s1")
         result = main.Mininet1.yank(SW=main.params['YANK']['sw6'],INTF=main.params['YANK']['intf'])
         time.sleep(t_topowait)
-        retult = main.Mininet1.plug(SW=main.params['PLUG']['sw1'],INTF=main.params['PLUG']['intf'])
+        result = main.Mininet1.plug(SW=main.params['PLUG']['sw1'],INTF=main.params['PLUG']['intf'])
         utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Yank/Plug command suceeded",onfail="Yank/Plug command failed...")
         main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
 
         ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
         time.sleep(t_restwait)
-        restcall = OnosRestApiDriver()
-        Reststatus, Switch, Port, MAC = restcall.find_host(RestIP1,RestPort,url, hostip)
+        Reststatus, Switch, Port, MAC = main.ONOS1.find_host(RestIP1,RestPort,url, hostip)
 
         main.log.report("Number of host with IP=10.0.0.1 found by ONOS is: " + str(Reststatus))
         if Reststatus == 1:
diff --git a/TestON/tests/OnosSanity8nodes/OnosSanity8nodes.py b/TestON/tests/OnosSanity8nodes/OnosSanity8nodes.py
index f849aaf..b5afc02 100644
--- a/TestON/tests/OnosSanity8nodes/OnosSanity8nodes.py
+++ b/TestON/tests/OnosSanity8nodes/OnosSanity8nodes.py
@@ -10,6 +10,14 @@
     def CASE1(self,main) :  #Check to be sure ZK, Cass, and ONOS are up, then get ONOS version
         main.log.report("Startup check Zookeeper1, Cassandra1, and ONOS1 connections")
         import time
+        main.Zookeeper1.start()
+        main.Zookeeper2.start()
+        main.Zookeeper3.start()
+        main.Zookeeper4.start()
+        main.Zookeeper5.start()
+        main.Zookeeper6.start()
+        main.Zookeeper7.start()
+        main.Zookeeper8.start()
         main.case("Checking if the startup was clean...") 
         main.step("Testing startup Zookeeper")   
         data =  main.Zookeeper1.isup()
@@ -52,25 +60,25 @@
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
+                main.Mininet1.assign_sw_controller(sw="s"+str(j),count=8,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
                 time.sleep(1)
             elif i >= 3 and i < 5:
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip2'],port1=main.params['CTRL']['port2'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
+                main.Mininet1.assign_sw_controller(sw="s"+str(j),count=8,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
                 time.sleep(1)
             elif i >= 5 and i < 15:
                 j=i+1
                 main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip3'],port1=main.params['CTRL']['port3'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
+                main.Mininet1.assign_sw_controller(sw="s"+str(j),count=8,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
                 time.sleep(1)
             else:
                 j=i+16
                 main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip4'],port1=main.params['CTRL']['port4'])
                 time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
+                main.Mininet1.assign_sw_controller(sw="s"+str(j),count=8,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
                 time.sleep(1)
         main.Mininet1.get_sw_controller("s1")       
  
@@ -165,11 +173,11 @@
         for i in range(25):
             if i < 15:
                 j=i+1
-                main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
+                main.Mininet1.assign_sw_controller(sw="s"+str(j),count=8,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
                 time.sleep(1)
             else:
                 j=i+16
-                main.Mininet1.assign_sw_controller(sw="s"+str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
+                main.Mininet1.assign_sw_controller(sw="s"+str(j),count=8,ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'],ip5=main.params['CTRL']['ip5'],port5=main.params['CTRL']['port5'],ip6=main.params['CTRL']['ip6'],port6=main.params['CTRL']['port6'],ip7=main.params['CTRL']['ip7'],port7=main.params['CTRL']['port7'],ip8=main.params['CTRL']['ip8'],port8=main.params['CTRL']['port8'])
                 time.sleep(1)
         strtTime = time.time()
         count = 1
diff --git a/TestON/tests/OnosScale4nodes/OnosScale4nodes.py b/TestON/tests/OnosScale4nodes/OnosScale4nodes.py
index 570ae71..bae4b5c 100644
--- a/TestON/tests/OnosScale4nodes/OnosScale4nodes.py
+++ b/TestON/tests/OnosScale4nodes/OnosScale4nodes.py
@@ -12,6 +12,10 @@
         The test will only pass if ONOS is running properly, and has a full view of all topology elements.
         '''
         import time
+        main.Zookeeper1.start()
+        main.Zookeeper2.start()
+        main.Zookeeper3.start()
+        main.Zookeeper4.start()
         main.ONOS1.stop()
         main.ONOS2.stop()
         main.ONOS3.stop()
diff --git a/TestON/tests/OnosTest/OnosTest.ospk b/TestON/tests/OnosTest/OnosTest.ospk
deleted file mode 100644
index 0e46e5c..0000000
--- a/TestON/tests/OnosTest/OnosTest.ospk
+++ /dev/null
@@ -1,23 +0,0 @@
-CASE 1
-    NAME "Testing the ONOS sanity"
-    STEP "Testing the ONOS sanity"
-
-    STORE ON Zookeeper1 DO status IN Zookeeper1_status
-    INFO <Zookeeper1_status>
-    
-    STORE ON Cassandra1 DO status IN Cassandra1_status
-    INFO <Cassandra1_status>
-    
-    STORE ON ONOS1 DO status IN ONOS1_status
-    INFO <ONOS1_status>
-    
-    STORE ON ONOS1 DO rest_status IN ONOS1_rest_status
-    INFO <ONOS1_rest_status>
-    
-    STORE ON ONOSRESTAPI1 DO execute IN Response
-    INFO <Response>
-    
-    ON ONOS1 DO stop
-    ON ONOS1 DO rest_stop
-    ON Cassandra1 DO stop
-    ON Zookeeper1 DO stop
diff --git a/TestON/tests/OnosTest/OnosTest.params b/TestON/tests/OnosTest/OnosTest.params
deleted file mode 100644
index 74cf664..0000000
--- a/TestON/tests/OnosTest/OnosTest.params
+++ /dev/null
@@ -1,5 +0,0 @@
-<PARAMS>
-    <testcases>1</testcases>
-    <mail>anil4haart@gmail.com</mail>
-        
-</PARAMS>      
\ No newline at end of file
diff --git a/TestON/tests/OnosTest/OnosTest.py b/TestON/tests/OnosTest/OnosTest.py
deleted file mode 100644
index 758c2a5..0000000
--- a/TestON/tests/OnosTest/OnosTest.py
+++ /dev/null
@@ -1,33 +0,0 @@
-
-class OnosTest :
-
-    def __init__(self) :
-        self.default = ''
-
-    def CASE1(self,main) :
-
-        main.case("Testing the ONOS sanity")
-        main.step("Testing the ONOS sanity")
-    
-        Zookeeper1_status = main.Zookeeper1.status()
-        main.log.info(Zookeeper1_status)
-    
-        Cassandra1_status = main.Cassandra1.status()
-        main.log.info(Cassandra1_status)
-    
-        ONOS1_status = main.ONOS1.status()
-        if ONOS1_status:
-            main.log.info("ONOS is up") 
-        else:
-            main.log.info("ONOS is down") 
-    
-        ONOS1_rest_status = main.ONOS1.rest_status()
-        main.log.info(ONOS1_rest_status)
-    
-        Response = main.ONOSRESTAPI1.execute()
-        main.log.info(Response)
-    
-        main.ONOS1.stop()
-        main.ONOS1.rest_stop()
-        main.Cassandra1.stop()
-        main.Zookeeper1.stop()
diff --git a/TestON/tests/OnosTest/OnosTest.topo b/TestON/tests/OnosTest/OnosTest.topo
deleted file mode 100644
index 36cd588..0000000
--- a/TestON/tests/OnosTest/OnosTest.topo
+++ /dev/null
@@ -1,41 +0,0 @@
-<TOPOLOGY>
-
-    <COMPONENT>
-        <Zookeeper1>
-            <host>10.128.4.7</host>
-            <user>admin</user>
-            <password>password</password>
-            <type>ZookeeperCliDriver</type>
-            <connect_order> 1 </connect_order>
-            <COMPONENTS>
-             </COMPONENTS>   
-        </Zookeeper1>     
-        <Cassandra1>
-            <host>10.128.4.7</host>
-            <user>admin</user>
-            <password>password</password>
-            <type>CassandraCliDriver</type>
-            <connect_order> 2 </connect_order>
-            <COMPONENTS>
-             </COMPONENTS>   
-        </Cassandra1>   
-        <ONOS1>
-            <host>10.128.4.7</host>
-            <user>admin</user>
-            <password>password</password>
-            <type>OnosCliDriver</type>
-            <connect_order> 3 </connect_order>
-            <COMPONENTS>
-            </COMPONENTS>   
-        </ONOS1> 
-        
-        
-         <ONOSRESTAPI1>
-            <type>OnosRestApiDriver</type>
-            <COMPONENTS>
-            <topology_url>http://10.128.4.7:9000/topology</topology_url>
-             </COMPONENTS>   
-        </ONOSRESTAPI1> 
-        
-    </COMPONENT>
-</TOPOLOGY>
\ No newline at end of file
diff --git a/TestON/tests/OnosTest/__init__.py b/TestON/tests/OnosTest/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/TestON/tests/OnosTest/__init__.py
+++ /dev/null
diff --git a/TestON/tests/testDD/.OnosSanity4nodes.py.swn b/TestON/tests/testDD/.OnosSanity4nodes.py.swn
deleted file mode 100644
index cb578ac..0000000
--- a/TestON/tests/testDD/.OnosSanity4nodes.py.swn
+++ /dev/null
Binary files differ
diff --git a/TestON/tests/testDD/.OnosSanity4nodes.py.swo b/TestON/tests/testDD/.OnosSanity4nodes.py.swo
deleted file mode 100644
index 5389b47..0000000
--- a/TestON/tests/testDD/.OnosSanity4nodes.py.swo
+++ /dev/null
Binary files differ
diff --git a/TestON/tests/testDD/__init__.py b/TestON/tests/testDD/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/TestON/tests/testDD/__init__.py
+++ /dev/null
diff --git a/TestON/tests/testDD/testDD.params b/TestON/tests/testDD/testDD.params
deleted file mode 100644
index 9a1732b..0000000
--- a/TestON/tests/testDD/testDD.params
+++ /dev/null
@@ -1,48 +0,0 @@
-<PARAMS>
-    <testcases>1,2,21</testcases>
-    <FLOWDEF>~/flowdef_files/Center_Triangle/flowdef_20.txt</FLOWDEF>
-    <CASE1>       
-        <destination>h6</destination>
-    </CASE1>       
-    <PING>
-        <source1>h6</source1>
-        <target1>h31</target1>
-        <source2>h8</source2>
-        <target2>h33</target2>
-    </PING>
-    <LINK>
-        <begin>s1</begin>
-        <end>s2</end>
-    </LINK>
-    <YANK>
-        <hostname>h1</hostname>
-        <hostmac>00:00:00:00:00:01</hostmac>
-	<sw1>s1</sw1>
-        <sw6>s6</sw6>
-        <intf>s1-eth1</intf>
-    </YANK>
-    <PLUG>
-        <intf>s1-eth1</intf>
-	<sw6>s6</sw6>
-	<sw1>s1</sw1>
-    </PLUG>
-    <CTRL>
-        <ip1>10.128.100.1</ip1>
-        <port1>6633</port1>
-        <ip2>10.128.100.4</ip2>
-        <port2>6633</port2>
-        <ip3>10.128.100.5</ip3>
-        <port3>6633</port3>
-        <ip4>10.128.100.6</ip4>
-        <port4>6633</port4>
-    </CTRL>
-    <RestIP>10.128.100.1</RestIP>
-    <NR_Switches>25</NR_Switches>
-    <NR_Links>50</NR_Links>
-    <RESTCALL>
-	<restIP1>10.128.100.1</restIP1>
-	<restIP2>10.128.100.5</restIP2>
-	<restPort>8080</restPort>
-	<restURL>/wm/device/</restURL>
-    </RESTCALL>
-</PARAMS>      
diff --git a/TestON/tests/testDD/testDD.py b/TestON/tests/testDD/testDD.py
deleted file mode 100644
index 2a823f9..0000000
--- a/TestON/tests/testDD/testDD.py
+++ /dev/null
@@ -1,472 +0,0 @@
-
-class testDD :
-
-    def __init__(self) :
-        self.default = ''
-
-#**********************************************************************************************************************************************************************************************
-#Test startup
-#Tests the startup of Zookeeper1, Cassandra1, and ONOS1 to be certain that all started up successfully
-    def CASE1(self,main) :  #Check to be sure ZK, Cass, and ONOS are up, then get ONOS version
-        import time
-        main.log.report("Pulling latest code from github to all nodes")
-        main.ONOS1.git_pull()
-        main.ONOS2.git_pull()
-        main.ONOS3.git_pull()
-        main.ONOS4.git_pull()
-        main.Cassandra1.start()
-        main.Cassandra2.start()
-        main.Cassandra3.start()
-        main.Cassandra4.start()
-        time.sleep(20)
-        main.ONOS1.drop_keyspace()
-        main.ONOS1.start()
-        time.sleep(10)
-        main.ONOS2.start()
-        main.ONOS3.start()
-        main.ONOS4.start()
-        main.ONOS1.start_rest()
-        time.sleep(5)
-        test= main.ONOS1.rest_status()
-        if test == main.FALSE:
-            main.ONOS1.start_rest()
-        main.ONOS1.get_version()
-        main.log.report("Startup check Zookeeper1, Cassandra1, and ONOS1 connections")
-        main.case("Checking if the startup was clean...")
-        main.step("Testing startup Zookeeper")   
-        data =  main.Zookeeper1.isup()
-        utilities.assert_equals(expect=main.TRUE,actual=data,onpass="Zookeeper is up!",onfail="Zookeeper is down...")
-        main.step("Testing startup Cassandra")   
-        data =  main.Cassandra1.isup() 
-        if data == main.FALSE:
-            main.Cassandra1.stop()
-            main.Cassandra2.stop()
-            main.Cassandra3.stop()
-            main.Cassandra4.stop()
-
-            time.sleep(5)
- 
-            main.Cassandra1.start()
-            main.Cassandra2.start()
-            main.Cassandra3.start()
-            main.Cassandra4.start()
-        utilities.assert_equals(expect=main.TRUE,actual=data,onpass="Cassandra is up!",onfail="Cassandra is down...")
-        main.step("Testing startup ONOS")   
-        data = main.ONOS1.isup()
-        if data == main.FALSE: 
-            main.log.report("Something is funny... restarting ONOS")
-            main.ONOS1.stop()
-            time.sleep(3)
-            main.ONOS1.start()
-            time.sleep(5) 
-            data = main.ONOS1.isup()
-        utilities.assert_equals(expect=main.TRUE,actual=data,onpass="ONOS is up and running!",onfail="ONOS didn't start...")
-           
-#**********************************************************************************************************************************************************************************************
-#Assign Controllers
-#This test first checks the ip of a mininet host, to be certain that the mininet exists(Host is defined in Params as <CASE1><destination>).
-#Then the program assignes each ONOS instance a single controller to a switch(To be the initial master), then assigns all controllers.
-#NOTE: The reason why all four controllers are assigned although one was already assigned as the master is due to the 'ovs-vsctl set-controller' command erases all present controllers if
-#      the controllers already assigned to the switch are not specified.
-
-    def CASE2(self,main) :    #Make sure mininet exists, then assign controllers to switches
-        import time
-        main.log.report("Check if mininet started properly, then assign controllers ONOS 1,2,3 and 4")
-        main.case("Checking if one MN host exists")
-        main.step("Host IP Checking using checkIP")
-        result = main.Mininet1.checkIP(main.params['CASE1']['destination'])
-        main.step("Verifying the result")
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Host IP address configured",onfail="Host IP address not configured")
-        main.step("assigning ONOS controllers to switches")
-        for i in range(25): 
-            if i < 3:
-                j=i+1
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])
-                time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
-            elif i >= 3 and i < 5:
-                j=i+1
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip2'],port1=main.params['CTRL']['port2'])
-                time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
-            elif i >= 5 and i < 15:
-                j=i+1
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip3'],port1=main.params['CTRL']['port3'])
-                time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
-            else:
-                j=i+16
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip4'],port1=main.params['CTRL']['port4'])
-                time.sleep(1)
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
-        main.Mininet1.get_sw_controller("s1")       
- 
-# **********************************************************************************************************************************************************************************************
-#Add Flows
-#Deletes any remnant flows from any previous test, add flows from the file labeled <FLOWDEF>, then runs the check flow test
-#NOTE: THE FLOWDEF FILE MUST BE PRESENT ON TESTON VM!!! TestON will copy the file from its home machine into /tmp/flowtmp on the machine the ONOS instance is present on
-
-    def CASE3(self,main) :    #Delete any remnant flows, then add flows, and time how long it takes flow tables to update
-        main.log.report("Delete any flows from previous tests, then add flows from FLOWDEF file, then wait for switch flow tables to update")
-        import time
-        main.case("Taking care of these flows!") 
-        main.step("Cleaning out any leftover flows...")
-        main.ONOS1.delete_flow("all")
-        time.sleep(5)
-        strtTime = time.time()
-        main.ONOS1.add_flow(main.params['FLOWDEF'])
-        main.case("Checking flows")
-        tmp = main.FALSE
-        count = 1
-        main.log.info("Wait for flows to be pushed to the switches, then check")
-        while tmp == main.FALSE:
-            main.step("Waiting")
-            time.sleep(10)
-            main.step("Checking")
-            tmp = main.ONOS1.check_flow()
-            if tmp == main.FALSE and count < 6:
-                count = count + 1
-                main.log.report("Flow failed, waiting 10 seconds then making attempt number "+str(count))
-            elif tmp == main.FALSE and count == 6:
-                result1 = main.FALSE
-                break
-            else:
-                result1 = main.TRUE
-                break
-        endTime = time.time()
-        if result1 == main.TRUE:
-            main.log.report("\n\t\t\t\tTime to add flows: "+str(round(endTime-strtTime,2))+" seconds")
-        else:
-            main.log.report("\tFlows failed check")
-        
-        strtTime = time.time()
-        count = 1
-        i = 6
-        while i < 16 :
-            main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
-            ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
-            if ping == main.FALSE and count < 3:
-                count = count + 1
-                i = 6
-                main.log.info("Ping failed, making attempt number "+str(count)+" in 10 seconds")
-                time.sleep(10)
-            elif ping == main.FALSE and count ==3:
-                main.log.error("Ping test failed")
-                i = 17
-                result2 = main.FALSE
-            elif ping == main.TRUE:
-                i = i + 1
-                result2 = main.TRUE
-        endTime = time.time()
-        if result2 == main.TRUE:
-            main.log.report("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
-        else:
-            main.log.report("\tPING TEST FAIL")
-
-        result3 = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
-        main.step("Verifying the result")
-        utilities.assert_equals(expect=main.TRUE,actual=result1 and result2 and result3,onpass="Flow check PASS",onfail="Flow check FAIL")
-
-#**********************************************************************************************************************************************************************************************
-#This test case removes Controllers 2,3, and 4 then performs a ping test.
-#The assign controller is used because the ovs-vsctl module deletes all current controllers when a new controller is assigned.
-#The ping test performs single pings on hosts from opposite sides of the topology. If one ping fails, the test waits 5 seconds before trying again.
-#If the ping test fails 6 times, then the test case will return false
-
-    def CASE4(self,main) :
-        main.log.report("Remove ONOS 2,3,4 then ping until all hosts are reachable or fail after 6 attempts")
-        import time
-        for i in range(25):
-            if i < 15:
-                j=i+1
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])  #Assigning a single controller removes all other controllers
-            else:
-                j=i+16
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])
-      
-        strtTime = time.time() 
-        result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
-        for i in range(2):
-            if result == main.FALSE:
-                time.sleep(5)
-                result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
-            else:
-                break
-
-        count = 1
-        i = 6
-        while i < 16 :
-            main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
-            ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
-            if ping == main.FALSE and count < 6:
-                count = count + 1
-                i = 6
-                main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
-                time.sleep(5)
-            elif ping == main.FALSE and count ==6:
-                main.log.error("Ping test failed")
-                i = 17
-                result = main.FALSE
-            elif ping == main.TRUE:
-                i = i + 1
-                result = main.TRUE
-        endTime = time.time() 
-        if result == main.TRUE:
-            main.log.report("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
-        else:
-            main.log.report("\tPING TEST FAIL")
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE")
-
-# **********************************************************************************************************************************************************************************************
-#This test case restores the controllers removed by Case 4 then performs a ping test.
-
-    def CASE5(self,main) :
-        main.log.report("Restore ONOS 2,3,4 then ping until all hosts are reachable or fail after 6 attempts")
-        import time
-        for i in range(25):
-            if i < 15:
-                j=i+1
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
-            else:
-                j=i+16
-                main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
-      
-        strtTime = time.time() 
-        result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
-        for i in range(2):
-            if result == main.FALSE:
-                time.sleep(5)
-                result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
-            else:
-                break
-
-        count = 1
-        i = 6
-        while i < 16 :
-            main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
-            ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
-            if ping == main.FALSE and count < 6:
-                count = count + 1
-                i = 6
-                main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
-                time.sleep(5)
-            elif ping == main.FALSE and count ==6:
-                main.log.error("Ping test failed")
-                i = 17
-                result = main.FALSE
-            elif ping == main.TRUE:
-                i = i + 1
-                result = main.TRUE
-        endTime = time.time()
-        if result == main.TRUE:
-            main.log.report("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
-        else:
-            main.log.report("\tPING TEST FAILED")
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE")
-
-# **********************************************************************************************************************************************************************************************
-#Brings a link that all flows pass through in the mininet down, then runs a ping test to view reroute time
-
-    def CASE6(self,main) :
-        main.log.report("Bring Link between s1 and s2 down, then ping until all hosts are reachable or fail after 10 attempts")
-        import time
-        main.case("Bringing Link down... ")
-        result = main.Mininet1.link(END1=main.params['LINK']['begin'],END2=main.params['LINK']['end'],OPTION="down")
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Link DOWN!",onfail="Link not brought down...")
-       
-        strtTime = time.time() 
-        result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],str(int(main.params['NR_Links'])-2))
-        for i in range(2):
-            if result == main.FALSE:
-                time.sleep(5)
-                result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],str(int(main.params['NR_Links'])-2))
-            else:
-                break
-
-        count = 1
-        i = 6
-        while i < 16 :
-            main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
-            ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
-            if ping == main.FALSE and count < 10:
-                count = count + 1
-                main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
-                i = 6
-                time.sleep(5)
-            elif ping == main.FALSE and count == 10:
-                main.log.error("Ping test failed")
-                i = 17
-                result = main.FALSE
-            elif ping == main.TRUE:
-                i = i + 1
-                result = main.TRUE
-        endTime = time.time()
-        if result == main.TRUE:
-            main.log.report("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
-        else:
-            main.log.report("\tPING TEST FAILED")
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE")
-
-# **********************************************************************************************************************************************************************************************
-#Brings the link that Case 6 took down  back up, then runs a ping test to view reroute time
-
-    def CASE7(self,main) :
-        main.log.report("Bring Link between s1 and s2 up, then ping until all hosts are reachable or fail after 10 attempts")
-        import time
-        main.case("Bringing Link up... ")
-        result = main.Mininet1.link(END1=main.params['LINK']['begin'],END2=main.params['LINK']['end'],OPTION="up")
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Link UP!",onfail="Link not brought up...")
-      
-        strtTime = time.time() 
-        result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
-        for i in range(2):
-            if result == main.FALSE:
-                time.sleep(5)
-                result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
-            else:
-                break
-
-        strtTime = time.time()
-        count = 1
-        i = 6
-        while i < 16 :
-            main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
-            ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
-            if ping == main.FALSE and count < 10:
-                count = count + 1
-                main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
-                i = 6
-                time.sleep(5)
-            elif ping == main.FALSE and count ==10:
-                main.log.error("Ping test failed")
-                i = 17
-                result = main.FALSE
-            elif ping == main.TRUE:
-                i = i + 1
-                result = main.TRUE
-        endTime = time.time()
-        if result == main.TRUE:
-            main.log.report("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
-        else:
-            main.log.report("\tPING TESTS FAILED")
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE")
-
-
-# ******************************************************************************************************************************************************************
-# Test Device Discovery function by yanking s6:s6-eth0 interface and re-plug it into a switch
-
-    def CASE21(self,main) :
-        import json
-        from drivers.common.api.onosrestapidriver import *
-        main.log.report("Test device discovery function, by attach/detach/move host h1 from s1->s6->s1.")
-        main.log.report("Check initially hostMAC exist on the mininet...")
-        host = main.params['YANK']['hostname']
-        mac = main.params['YANK']['hostmac']
-        RestIP1 = main.params['RESTCALL']['restIP1']
-        RestIP2 = main.params['RESTCALL']['restIP2']
-        RestPort = main.params['RESTCALL']['restPort']
-        url = main.params['RESTCALL']['restURL']
-        #print "host=" + host + ";  RestIP=" + RestIP1 + ";  RestPort=" + str(RestPort)
-        
-        main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
-        ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
-        restcall = OnosRestApiDriver()
-        Reststatus, Hoststatus = restcall.find_host(RestIP1,RestPort,url,mac)
-        try:
-            attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
-            ip_found = Hoststatus[0]['ipv4'][0]
-        except:
-            Reststatus = 0
-
-        if Reststatus == 1:
-            main.log.report("\tFound host " + host + " attached to switchDPID = " + attachedSW)
-            if ip_found != None:
-                main.log.report("/t IP discovered is ip_found ( " + ip_found + " ).")
-                result = main.TRUE
-            else:
-                main.log.report("/t Found host attached to switch, but no IP address discovered.")
-                result = main.FALSE
-        else:
-            main.log.report("\t Host " + host + " with MAC:" + str(mac) + " does not exist. FAILED")
-            result = main.FALSE
-
-        ##### Step to yank out "s1-eth1" from s1, which is on autoONOS1 #####
-
-        main.log.report("Yank out s1-eth1")
-        main.case("Yankout s6-eth1 (link to h1) from s1")
-        result = main.Mininet1.yank(SW=main.params['YANK']['sw1'],INTF=main.params['YANK']['intf'])
-        time.sleep(3)
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Yank command suceeded",onfail="Yank command failed...")
-        ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
-        Reststatus, Hoststatus = restcall.find_host(RestIP1,RestPort,url,mac)
-        try:
-            attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
-        except:
-            Reststatus = 0
-        if Reststatus == 0:
-            main.log.report("Attempt to yank out s1-eth1 from s1 sucessfully")
-            result = main.TRUE
-        else:
-            main.log.report("Attempt to yank out s1-eht1 from s1 failed.")
-            result = main.FALSE
-        
-        ##### Step to plug "s1-eth1" to s6, which is on autoONOS3  ######
-        main.log.report("Plug s1-eth1 into s6")
-        main.case("Plug s1-eth1 to s6")
-        result = main.Mininet1.plug(SW=main.params['PLUG']['sw6'],INTF=main.params['PLUG']['intf'])
-        time.sleep(3)
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Plug command suceeded",onfail="Plug command failed...")
-        ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
-        Reststatus, Hoststatus = restcall.find_host(RestIP2,RestPort,url,mac)
-        try:
-            attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
-            ip_found = Hoststatus[0]['ipv4'][0]
-        except:
-            Reststatus = 0
-        if Reststatus == 0:
-            main.log.report("Attempt to plug s1-eth1 to s6 FAILED")
-            result = main.FALSE
-        elif attachedSW == "00:00:00:00:00:00:00:06":
-            main.log.report("Attempt to plug s1-eht1 to s6 succeded.")
-            if ip_found != None:
-                main.log.report("/t IP discovered is ip_found ( " + ip_found + " ).")
-                result = main.TRUE
-            else:
-                main.log.report("/t Found host attached to switch, but no IP address discovered.")
-                result = main.FALSE
-        else:
-            main.log.report( "FAILED to attach s1-eth1 to s6 correctly!")
-            result = main.FALSE
-
-        ###### Step to put interface "s1-eth1" back to s1"#####
-        main.log.report("Move s1-eth1 back on to s1")
-        main.case("Move s1-eth1 back to s1")
-        result = main.Mininet1.yank(SW=main.params['YANK']['sw6'],INTF=main.params['YANK']['intf'])
-        time.sleep(3)
-        retult = main.Mininet1.plug(SW=main.params['PLUG']['sw1'],INTF=main.params['PLUG']['intf'])
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Yank/Plug command suceeded",onfail="Yank/Plug command failed...")
-        ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
-        Reststatus, Hoststatus = restcall.find_host(RestIP1,RestPort,url,mac)
-        try:
-            attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
-            ip_found = Hoststatus[0]['ipv4'][0]
-        except:
-            Reststatus = 0
-        if Reststatus == 0:
-            main.log.report("Attempt to plug s1-eth1 back to s1 FAILED")
-            result = main.FALSE
-        elif attachedSW == "00:00:00:00:00:00:00:01":
-            main.log.report("Attempt to plug s1-eht1 back to s1 succeded.")
-            if ip_found != None:
-                main.log.report("/t IP discovered is ip_found ( " + ip_found + " ).")
-                result = main.TRUE
-            else:
-                main.log.report("/t Found host attached to switch, but no IP address discovered.")
-                result = main.FALSE
-        else:
-            main.log.report( "FAIL to attach s1-eth1 to s1 correctly!")
-            result = main.FALSE
-
-        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="DEVICE DISCOVERY TEST PASSED PLUG/UNPLUG/MOVE TEST",onfail="DEVICE DISCOVERY TEST FAILED")
-
-
diff --git a/TestON/tests/testDD/testDD.topo b/TestON/tests/testDD/testDD.topo
deleted file mode 100644
index 0c77a3b..0000000
--- a/TestON/tests/testDD/testDD.topo
+++ /dev/null
@@ -1,139 +0,0 @@
-<TOPOLOGY>
-
-    <COMPONENT>
-        <Zookeeper1>
-            <host>10.128.100.1</host>
-            <user>admin</user>
-            <password></password>
-            <type>ZookeeperCliDriver</type>
-            <connect_order>1</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </Zookeeper1>
-
-        <Zookeeper2>
-            <host>10.128.100.4</host>
-            <user>admin</user>
-            <password></password>
-            <type>ZookeeperCliDriver</type>
-            <connect_order>2</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </Zookeeper2>
-
-        <Zookeeper3>
-            <host>10.128.100.5</host>
-            <user>admin</user>
-            <password></password>
-            <type>ZookeeperCliDriver</type>
-            <connect_order>3</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </Zookeeper3>
-       
-        <Zookeeper4>
-            <host>10.128.100.6</host>
-            <user>admin</user>
-            <password></password>
-            <type>ZookeeperCliDriver</type>
-            <connect_order>4</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </Zookeeper4>
-
-        <Cassandra1>
-            <host>10.128.100.1</host>
-            <user>admin</user>
-            <password></password>
-            <type>CassandraCliDriver</type>
-            <connect_order>5</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </Cassandra1>
-
-        <Cassandra2>
-            <host>10.128.100.4</host>
-            <user>admin</user>
-            <password></password>
-            <type>CassandraCliDriver</type>
-            <connect_order>6</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </Cassandra2>
-       
-        <Cassandra3>
-            <host>10.128.100.5</host>
-            <user>admin</user>
-            <password></password>
-            <type>CassandraCliDriver</type>
-            <connect_order>7</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </Cassandra3>
-       
-        <Cassandra4>
-            <host>10.128.100.6</host>
-            <user>admin</user>
-            <password></password>
-            <type>CassandraCliDriver</type>
-            <connect_order>8</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </Cassandra4>
-
-        <ONOS1>
-            <host>10.128.100.1</host>
-            <user>admin</user>
-            <password></password>
-            <type>OnosCliDriver</type>
-            <connect_order>9</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </ONOS1>
-
-        <ONOS2>
-            <host>10.128.100.4</host>
-            <user>admin</user>
-            <password></password>
-            <type>OnosCliDriver</type>
-            <connect_order>10</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </ONOS2>
-
-        <ONOS3>
-            <host>10.128.100.5</host>
-            <user>admin</user>
-            <password></password>
-            <type>OnosCliDriver</type>
-            <connect_order>11</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </ONOS3>
-       
-        <ONOS4>
-            <host>10.128.100.6</host>
-            <user>admin</user>
-            <password></password>
-            <type>OnosCliDriver</type>
-            <connect_order>12</connect_order>
-            <COMPONENTS>
-             </COMPONENTS>
-        </ONOS4>
-
-        <Mininet1>
-            <host>10.128.100.11</host>
-            <user>admin</user>
-            <password></password>
-            <type>MininetCliDriver</type>
-            <connect_order>13</connect_order>
-            <COMPONENTS>
-                # Specify the Option for mininet
-                <arg1> --custom ~/mininet/custom/topo-onos4node.py </arg1>
-                <arg2> --topo mytopo</arg2>
-                <controller> remote </controller>
-             </COMPONENTS>
-        </Mininet1>
-
-    </COMPONENT>
-</TOPOLOGY>