Merge branch 'master' of github.com:OPENNETWORKINGLAB/ONLabTest
diff --git a/TestON/dependancies/onos.properties.proactive b/TestON/dependancies/onos.properties.proactive
index 1b848b9..2b5150a 100644
--- a/TestON/dependancies/onos.properties.proactive
+++ b/TestON/dependancies/onos.properties.proactive
@@ -1,6 +1,6 @@
 floodlight.modules = net.floodlightcontroller.core.FloodlightProvider,\
 net.floodlightcontroller.threadpool.ThreadPool,\
-net.onrc.onos.core.topology.NetworkGraphPublisher, \
+net.onrc.onos.core.topology.TopologyPublisher, \
 net.onrc.onos.core.datagrid.HazelcastDatagrid,\
 net.onrc.onos.core.flowprogrammer.FlowProgrammer,\
 net.onrc.onos.core.intent.runtime.PathCalcRuntimeModule,\
diff --git a/TestON/dependancies/onos.properties.reactive b/TestON/dependancies/onos.properties.reactive
index 452156f..8d78222 100644
--- a/TestON/dependancies/onos.properties.reactive
+++ b/TestON/dependancies/onos.properties.reactive
@@ -1,6 +1,6 @@
 floodlight.modules = net.floodlightcontroller.core.FloodlightProvider,\
 net.floodlightcontroller.threadpool.ThreadPool,\
-net.onrc.onos.core.topology.NetworkGraphPublisher, \
+net.onrc.onos.core.topology.TopologyPublisher, \
 net.onrc.onos.core.datagrid.HazelcastDatagrid,\
 net.onrc.onos.core.flowprogrammer.FlowProgrammer,\
 net.onrc.onos.core.intent.runtime.PathCalcRuntimeModule,\
diff --git a/TestON/drivers/common/cli/onosclidriver.py b/TestON/drivers/common/cli/onosclidriver.py
index ae6521a..f5a70d4 100644
--- a/TestON/drivers/common/cli/onosclidriver.py
+++ b/TestON/drivers/common/cli/onosclidriver.py
@@ -926,6 +926,8 @@
                     main.log.info(self.name + ": Build success!")
                 elif i == 3:
                     main.log.info(self.name + ": Build complete")
+                    self.handle.sendline("./build-ramcloud-java-bindings.sh")
+                    self.handle.expect("\$")
                     return main.TRUE
                 elif i == 4:
                     main.log.error(self.name + ": mvn compile TIMEOUT!")
@@ -1046,3 +1048,46 @@
             main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
             main.cleanup()
             main.exit()
+
+    def check_exceptions(self):
+        '''
+        Greps the logs for "xception"
+        '''
+        try:
+            output = ''
+            self.handle.sendline("")
+            i = self.handle.expect(["\$",pexpect.EOF,pexpect.TIMEOUT])
+            #main.log.warn("first expect response: " +str(i))
+            self.handle.sendline("cd "+self.home+"/onos-logs")
+            self.handle.sendline("grep \"xception\" *")
+            i = self.handle.expect(["\*",pexpect.EOF,pexpect.TIMEOUT])
+            #main.log.warn("second expect response: " +str(i))
+            i = self.handle.expect(["\$",pexpect.EOF,pexpect.TIMEOUT])
+            #main.log.warn("third expect response: " +str(i))
+            response = self.handle.before
+            count = 0
+            for line in response.splitlines():
+                if re.search("log:", line):
+                    output +="Exceptions found in " + line + "\n"
+                    count +=1
+                elif re.search("std...:",line):
+                    output+="Exceptions found in " + line + "\n"
+                    count +=1
+                else:
+                    pass
+                    #these should be the old logs
+            main.log.report(str(count) + "Exceptions were found on "+self.name)
+            return output
+        except pexpect.TIMEOUT:
+            main.log.error(self.name + ": Timeout exception found in check_exceptions function")
+        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()
+            main.exit()
diff --git a/TestON/drivers/common/cli/ramcloudclidriver.py b/TestON/drivers/common/cli/ramcloudclidriver.py
index 6f13cb5..52f8e7d 100644
--- a/TestON/drivers/common/cli/ramcloudclidriver.py
+++ b/TestON/drivers/common/cli/ramcloudclidriver.py
@@ -184,6 +184,27 @@
         else:
             main.log.warn(self.name+": RAMCloud is not Running")
             return main.FALSE
+
+    def del_db(self):
+        '''
+        This function will clean out the database
+        '''
+        main.log.info(self.name + ": Deleting RC Database")
+        self.handle.sendline("")
+        self.handle.expect(["\$",pexpect.EOF,pexpect.TIMEOUT])
+        self.handle.sendline("cd "+self.home)
+        self.handle.sendline("./onos.sh rc deldb")
+        self.handle.expect(["[y/N]",pexpect.EOF,pexpect.TIMEOUT])
+        self.handle.sendline("y")
+        self.handle.expect(["\$",pexpect.EOF,pexpect.TIMEOUT])
+        response = self.handle.before + self.handle.after
+        main.log.info(response)
+        if re.search("DONE",response):
+            main.log.info("RAMCloud Database Cleaned")
+            return main.TRUE
+        else:
+            main.log.warn("Something wrong in Cleaning Database")
+            return main.FALSE
            
 
     def stop_coor(self):
diff --git a/TestON/tests/RCOnosPerf4nodes/RCOnosPerf4nodes.py b/TestON/tests/RCOnosPerf4nodes/RCOnosPerf4nodes.py
index f8fc498..0b73201 100644
--- a/TestON/tests/RCOnosPerf4nodes/RCOnosPerf4nodes.py
+++ b/TestON/tests/RCOnosPerf4nodes/RCOnosPerf4nodes.py
@@ -22,9 +22,13 @@
         main.RamCloud3.stop_serv()
         main.RamCloud4.stop_serv()
         main.ONOS1.handle.sendline("~/ONOS/onos.sh rc deldb")
+        main.ONOS1.handle.sendline("y")
         main.ONOS2.handle.sendline("~/ONOS/onos.sh rc deldb")
+        main.ONOS2.handle.sendline("y")
         main.ONOS3.handle.sendline("~/ONOS/onos.sh rc deldb")
+        main.ONOS3.handle.sendline("y")
         main.ONOS4.handle.sendline("~/ONOS/onos.sh rc deldb")
+        main.ONOS4.handle.sendline("y")
         time.sleep(10)
         main.RamCloud1.start_coor()
         main.RamCloud1.start_serv()
diff --git a/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.params b/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.params
index b448729..bda33b2 100644
--- a/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.params
+++ b/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.params
@@ -1,5 +1,5 @@
 <PARAMS>
-    <testcases>1,2,21,3,31,4,41,5,6,7,3,4,5,6,7</testcases>
+    <testcases>1,2,21,3,31,4,41,5,6,7,3,4,5,6,7,66</testcases>
     <FLOWDEF>~/flowdef_files/Center_Triangle/flowdef_20.txt</FLOWDEF>
     <CASE1>       
         <destination>h6</destination>
diff --git a/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.py b/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.py
index c1057d1..a05c954 100644
--- a/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.py
+++ b/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.py
@@ -24,10 +24,10 @@
         main.RamCloud3.stop_serv()
         main.RamCloud4.stop_serv()
         time.sleep(10)
-        main.ONOS1.handle.sendline("~/ONOS/onos.sh rc deldb") 
-        main.ONOS2.handle.sendline("~/ONOS/onos.sh rc deldb") 
-        main.ONOS3.handle.sendline("~/ONOS/onos.sh rc deldb") 
-        main.ONOS4.handle.sendline("~/ONOS/onos.sh rc deldb") 
+        main.RamCloud1.del_db()
+        main.RamCloud2.del_db()
+        main.RamCloud3.del_db()
+        main.RamCloud4.del_db()
         time.sleep(10)
         main.log.report("Pulling latest code from github to all nodes")
         for i in range(2):
@@ -590,3 +590,11 @@
             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")
 
+    def CASE66(self, main):
+        main.log.report("Checking ONOS logs for exceptions")
+        main.log.report("Exceptions in ONOS1 logs: \n" + main.ONOS1.check_exceptions())
+        main.log.report("Exceptions in ONOS2 logs: \n" + main.ONOS2.check_exceptions())
+        main.log.report("Exceptions in ONOS3 logs: \n" + main.ONOS3.check_exceptions())
+        main.log.report("Exceptions in ONOS4 logs: \n" + main.ONOS4.check_exceptions())
+        utilities.assert_equals(expect=main.TRUE,actual=main.TRUE,onpass="Exception check pass",onfail="Exception check fail")
+
diff --git a/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.py b/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.py
index 531a165..07fd8ff 100644
--- a/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.py
+++ b/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.py
@@ -21,10 +21,14 @@
         main.RamCloud2.stop_serv()
         main.RamCloud3.stop_serv()
         main.RamCloud4.stop_serv()
-        main.ONOS1.handle.sendline("~/ONOS/onos.sh rc deldb") 
-        main.ONOS2.handle.sendline("~/ONOS/onos.sh rc deldb") 
-        main.ONOS3.handle.sendline("~/ONOS/onos.sh rc deldb") 
-        main.ONOS4.handle.sendline("~/ONOS/onos.sh rc deldb") 
+        main.ONOS1.handle.sendline("~/ONOS/onos.sh rc deldb")
+        main.ONOS1.handle.sendline("y")
+        main.ONOS2.handle.sendline("~/ONOS/onos.sh rc deldb")
+        main.ONOS2.handle.sendline("y")
+        main.ONOS3.handle.sendline("~/ONOS/onos.sh rc deldb")
+        main.ONOS3.handle.sendline("y")
+        main.ONOS4.handle.sendline("~/ONOS/onos.sh rc deldb")
+        main.ONOS4.handle.sendline("y") 
         time.sleep(10)
         main.RamCloud1.start_coor()
         time.sleep(10)
diff --git a/TestON/tests/RRCOnosSanity4nodesJ/RRCOnosSanity4nodesJ.py b/TestON/tests/RRCOnosSanity4nodesJ/RRCOnosSanity4nodesJ.py
index 76020ba..8f64372 100644
--- a/TestON/tests/RRCOnosSanity4nodesJ/RRCOnosSanity4nodesJ.py
+++ b/TestON/tests/RRCOnosSanity4nodesJ/RRCOnosSanity4nodesJ.py
@@ -29,10 +29,13 @@
         main.Zookeeper3.start()
         main.Zookeeper4.start()
         main.ONOS1.handle.sendline("~/ONOS/onos.sh rc deldb")
+        main.ONOS1.handle.sendline("y")
         main.ONOS2.handle.sendline("~/ONOS/onos.sh rc deldb")
+        main.ONOS2.handle.sendline("y")
         main.ONOS3.handle.sendline("~/ONOS/onos.sh rc deldb")
+        main.ONOS3.handle.sendline("y")
         main.ONOS4.handle.sendline("~/ONOS/onos.sh rc deldb")
-        main.log.report("Pulling latest code from github to all nodes")
+        main.ONOS4.handle.sendline("y")
         for i in range(2):
             uptodate = main.ONOS1.git_pull()
             main.ONOS2.git_pull()