diff --git a/TestON/drivers/common/cli/onosclidriver.py b/TestON/drivers/common/cli/onosclidriver.py
index 0789923..3dff2e2 100644
--- a/TestON/drivers/common/cli/onosclidriver.py
+++ b/TestON/drivers/common/cli/onosclidriver.py
@@ -326,7 +326,7 @@
             response = main.FALSE
         return response
  
-    def get_version(self):
+    def print_version(self):
         '''
         Writes the COMMIT number to the report to be parsed by Jenkins data collecter.
         '''
@@ -339,6 +339,28 @@
             self.handle.expect("\$")
             response=(self.name +": \n"+ str(self.handle.before + self.handle.after))
             main.log.report(response)
+        except pexpect.EOF:
+            main.log.error(self.name + ": EOF exception found")
+            main.log.error(self.name + ":     " + self.handle.before)
+            main.cleanup()
+            main.exit()
+        except:
+            main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.log.error( traceback.print_exc() )
+            main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+            main.cleanup()
+    def get_version(self):
+        '''
+        Writes the COMMIT number to the report to be parsed by Jenkins data collecter.
+        '''
+        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 | grep -A 5 \"commit\"; cd \.\.")
+            self.handle.expect("cd ..")
+            self.handle.expect("\$")
+            response=(self.name +": \n"+ str(self.handle.before + self.handle.after))
             lines=response.splitlines()
             for line in lines:
                 print line
diff --git a/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.py b/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.py
index 5844ef6..df7fcf5 100644
--- a/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.py
+++ b/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.py
@@ -10,6 +10,7 @@
     def CASE1(self,main) :  #Check to be sure ZK, Cass, and ONOS are up, then get ONOS version
         import time
         main.Zookeeper1.start()
+        time.sleep(20)
         main.Zookeeper2.start()
         main.Zookeeper3.start()
         main.Zookeeper4.start()
@@ -41,13 +42,14 @@
        # main.ONOS3.get_version()
        # main.ONOS4.get_version()
         main.RamCloud1.start_coor()
+        time.sleep(20)
         main.RamCloud1.start_serv()
         main.RamCloud2.start_serv()
         main.RamCloud3.start_serv()
         main.RamCloud4.start_serv()
         time.sleep(20)
         main.ONOS1.start()
-        time.sleep(10)
+        time.sleep(20)
         main.ONOS2.start()
         main.ONOS3.start()
         main.ONOS4.start()
@@ -63,7 +65,7 @@
         data =  main.Zookeeper1.isup()
         utilities.assert_equals(expect=main.TRUE,actual=data,onpass="Zookeeper is up!",onfail="Zookeeper is down...")
         main.step("Testing startup RamCloud")   
-        data =  main.RamCloud1.isup() 
+        data =  main.RamCloud1.status() 
         if data == main.FALSE:
             main.RamCloud1.stop_coor()
             main.RamCloud1.stop_serv()
diff --git a/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.topo b/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.topo
index 0819d37..c7db047 100644
--- a/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.topo
+++ b/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.topo
@@ -2,7 +2,7 @@
 
     <COMPONENT>
         <Zookeeper1>
-            <host>10.128.4.151</host>
+            <host>10.128.100.1</host>
             <user>admin</user>
             <password></password>
             <type>ZookeeperCliDriver</type>
@@ -12,7 +12,7 @@
         </Zookeeper1>
 
         <Zookeeper2>
-            <host>10.128.4.152</host>
+            <host>10.128.100.4</host>
             <user>admin</user>
             <password></password>
             <type>ZookeeperCliDriver</type>
@@ -22,7 +22,7 @@
         </Zookeeper2>
 
         <Zookeeper3>
-            <host>10.128.4.153</host>
+            <host>10.128.100.5</host>
             <user>admin</user>
             <password></password>
             <type>ZookeeperCliDriver</type>
@@ -32,7 +32,7 @@
         </Zookeeper3>
        
         <Zookeeper4>
-            <host>10.128.4.154</host>
+            <host>10.128.100.6</host>
             <user>admin</user>
             <password></password>
             <type>ZookeeperCliDriver</type>
@@ -42,7 +42,7 @@
         </Zookeeper4>
 
         <RamCloud1>
-            <host>10.128.4.151</host>
+            <host>10.128.100.1</host>
             <user>admin</user>
             <password></password>
             <type>RamCloudCliDriver</type>
@@ -52,7 +52,7 @@
         </RamCloud1>
 
         <RamCloud2>
-            <host>10.128.4.152</host>
+            <host>10.128.100.4</host>
             <user>admin</user>
             <password></password>
             <type>RamCloudCliDriver</type>
@@ -62,7 +62,7 @@
         </RamCloud2>
        
         <RamCloud3>
-            <host>10.128.4.153</host>
+            <host>10.128.100.5</host>
             <user>admin</user>
             <password></password>
             <type>RamCloudCliDriver</type>
@@ -72,7 +72,7 @@
         </RamCloud3>
        
         <RamCloud4>
-            <host>10.128.4.154</host>
+            <host>10.128.100.6</host>
             <user>admin</user>
             <password></password>
             <type>RamCloudCliDriver</type>
@@ -82,7 +82,7 @@
         </RamCloud4>
 
         <ONOS1>
-            <host>10.128.4.151</host>
+            <host>10.128.100.1</host>
             <user>admin</user>
             <password></password>
             <type>OnosCliDriver</type>
@@ -92,7 +92,7 @@
         </ONOS1>
 
         <ONOS2>
-            <host>10.128.4.152</host>
+            <host>10.128.100.4</host>
             <user>admin</user>
             <password></password>
             <type>OnosCliDriver</type>
@@ -102,7 +102,7 @@
         </ONOS2>
 
         <ONOS3>
-            <host>10.128.4.153</host>
+            <host>10.128.100.5</host>
             <user>admin</user>
             <password></password>
             <type>OnosCliDriver</type>
@@ -112,7 +112,7 @@
         </ONOS3>
        
         <ONOS4>
-            <host>10.128.4.154</host>
+            <host>10.128.100.6</host>
             <user>admin</user>
             <password></password>
             <type>OnosCliDriver</type>
@@ -122,7 +122,7 @@
         </ONOS4>
 
         <Mininet1>
-            <host>10.128.4.159</host>
+            <host>10.128.100.11</host>
             <user>admin</user>
             <password></password>
             <type>MininetCliDriver</type>
diff --git a/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.params b/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.params
index f04ef3a..dd4e311 100644
--- a/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.params
+++ b/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.params
@@ -3,7 +3,7 @@
     <Iterations>2</Iterations>
     <WaitTime>50</WaitTime>
     <TargetTime>50</TargetTime>
-    <RestIP>10.128.4.151</RestIP>
+    <RestIP>10.128.100.1</RestIP>
     <NR_Switches>100</NR_Switches>
     <NR_Links>198</NR_Links>
 </PARAMS>      
diff --git a/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.py b/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.py
index 3081eed..6969d65 100644
--- a/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.py
+++ b/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.py
@@ -17,12 +17,12 @@
         main.ONOS3.stop()
         main.ONOS4.stop()
         main.RamCloud1.start_coor()
+        time.sleep(10)
         main.RamCloud1.start_serv()
         main.RamCloud2.start_serv()
         main.RamCloud3.start_serv()
         main.RamCloud4.start_serv()
         time.sleep(20)
-        main.ONOS1.drop_keyspace()
         main.ONOS1.start()
         time.sleep(10)
         main.ONOS2.start()
@@ -55,6 +55,7 @@
             main.RamCloud2.start_serv()
             main.RamCloud3.start_serv()
             main.RamCloud4.start_serv()
+        data =  main.RamCloud1.isup()
         utilities.assert_equals(expect=main.TRUE,actual=data,onpass="RamCloud is up!",onfail="RamCloud is down...")
         main.step("Testing startup ONOS")
         data = main.ONOS1.isup()
@@ -93,9 +94,20 @@
         main.ONOS2.stop()
         main.ONOS3.stop()
         main.ONOS4.stop()
-        main.log.info("Dropping keyspace...")
-        main.ONOS1.drop_keyspace()
+        main.RamCloud1.stop_coor()
+        main.RamCloud1.stop_serv()
+        main.RamCloud2.stop_serv()
+        main.RamCloud3.stop_serv()
+        main.RamCloud4.stop_serv()
+
         time.sleep(5)
+
+        main.RamCloud1.start_coor()
+        main.RamCloud1.start_serv()
+        main.RamCloud2.start_serv()
+        main.RamCloud3.start_serv()
+        main.RamCloud4.start_serv()
+        
         main.log.info("Bringing ONOS up")
         main.ONOS1.start()
         time.sleep(5) 
diff --git a/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.topo b/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.topo
index ae85268..fe2b621 100644
--- a/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.topo
+++ b/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.topo
@@ -2,28 +2,28 @@
     <COMPONENT>
 
         <ONOS1>
-            <host>10.128.4.151</host>
+            <host>10.128.100.1</host>
             <user>admin</user>
             <password></password>
             <type>OnosCliDriver</type>
             <connect_order>7</connect_order>
         </ONOS1>
         <ONOS2>
-            <host>10.128.4.152</host>
+            <host>10.128.100.4</host>
             <user>admin</user>
             <password></password>
             <type>OnosCliDriver</type>
             <connect_order>8</connect_order>
         </ONOS2>
         <ONOS3>
-            <host>10.128.4.153</host>
+            <host>10.128.100.5</host>
             <user>admin</user>
             <password></password>
             <type>OnosCliDriver</type>
             <connect_order>9</connect_order>
         </ONOS3>
         <ONOS4>
-            <host>10.128.4.154</host>
+            <host>10.128.100.6</host>
             <user>admin</user>
             <password></password>
             <type>OnosCliDriver</type>
@@ -31,7 +31,7 @@
         </ONOS4>
 
         <Zookeeper1>
-            <host>10.128.4.151</host>
+            <host>10.128.100.1</host>
             <user>admin</user>
             <password></password>
             <type>ZookeeperCliDriver</type>
@@ -41,28 +41,28 @@
         </Zookeeper1>
 
         <RamCloud1>
-            <host>10.128.4.151</host>
+            <host>10.128.100.1</host>
             <user>admin</user>
             <password></password>
             <type>RamCloudCliDriver</type>
             <connect_order>3</connect_order>
         </RamCloud1>
         <RamCloud2>
-            <host>10.128.4.152</host>
+            <host>10.128.100.4</host>
             <user>admin</user>
             <password></password>
             <type>RamCloudCliDriver</type>
             <connect_order>4</connect_order>
         </RamCloud2>
         <RamCloud3>
-            <host>10.128.4.153</host>
+            <host>10.128.100.5</host>
             <user>admin</user>
             <password></password>
             <type>RamCloudCliDriver</type>
             <connect_order>5</connect_order>
         </RamCloud3>
         <RamCloud4>
-            <host>10.128.4.154</host>
+            <host>10.128.100.6</host>
             <user>admin</user>
             <password></password>
             <type>RamCloudCliDriver</type>
@@ -70,7 +70,7 @@
         </RamCloud4>
 
         <Mininet1>
-            <host>10.128.4.159</host>
+            <host>10.128.100.11</host>
             <user>admin</user>
             <password></password>
             <type>MininetCliDriver</type>
@@ -79,7 +79,7 @@
                 # Specify the Option for mininet
                 <arg1> </arg1>
                 <arg2> --topo linear,100 --arp</arg2>
-                <controller> remote,ip=10.128.4.151,port=6633 </controller>
+                <controller> remote,ip=10.128.100.1,port=6633 </controller>
              </COMPONENTS>
         </Mininet1>
 
