diff --git a/TestON/core/teston.py b/TestON/core/teston.py
index 1edc721..6775856 100644
--- a/TestON/core/teston.py
+++ b/TestON/core/teston.py
@@ -793,17 +793,30 @@
         os.system( "stty sane" )  # fix format if necessary
         sys.exit()
 
-    def cleanAndExit( self ):
+    def cleanAndExit( self, alarm=True, msg="" ):
         """
             It will set the testcase result to be FAILED and update it
             before cleaning up and exitting the test.
+            alarm: when set to True, it will write to the alarm log before
+            cleaning up and exitting; otherwise it will write to error log.
+            msg: message that will be written to the log if specified;
+            otherwise a default message will be written.
         :return:
         """
         if self.CurrentTestCaseNumber:
             self.testCaseResult[ str( self.CurrentTestCaseNumber ) ] = self.FALSE
             self.organizeResult( self.CurrentTestCaseNumber, self.FALSE )
             self.logger.updateCaseResults( self )
-        self.log.alarm( "Test exited unexpectedly" )
+        if alarm:
+            if msg:
+                self.log.alarm( "Test exited unexpectedly: {}".format( msg ) )
+            else:
+                self.log.alarm( "Test exited unexpectedly" )
+        else:
+            if msg:
+                self.log.error( "Test exited unexpectedly: {}".format( msg ) )
+            else:
+                self.log.error( "Test exited unexpectedly" )
         self.cleanup()
         self.exit()
 
diff --git a/TestON/drivers/common/api/controller/onosrestdriver.py b/TestON/drivers/common/api/controller/onosrestdriver.py
index 915c29b..af4309d 100755
--- a/TestON/drivers/common/api/controller/onosrestdriver.py
+++ b/TestON/drivers/common/api/controller/onosrestdriver.py
@@ -123,9 +123,9 @@
             if debug:
                 main.log.debug( response )
             return ( response.status_code, response.text.encode( 'utf8' ) )
-        except requests.exceptions:
+        except requests.ConnectionError:
             main.log.exception( "Error sending request." )
-            return None
+            return ( None, None )
         except Exception:
             main.log.exception( self.name + ": Uncaught exception!" )
             main.cleanAndExit()
diff --git a/TestON/tests/FUNC/FUNCvirNetNB/FUNCvirNetNB.py b/TestON/tests/FUNC/FUNCvirNetNB/FUNCvirNetNB.py
index d7872fd..fe633f1 100644
--- a/TestON/tests/FUNC/FUNCvirNetNB/FUNCvirNetNB.py
+++ b/TestON/tests/FUNC/FUNCvirNetNB/FUNCvirNetNB.py
@@ -146,6 +146,9 @@
                 onpass="Post Success",
                 onfail="Post Failed " + str( Poststatus ) + str( result ) )
 
+        if not Poststatus:
+            main.cleanAndExit( alarm=False )
+
         main.step( "Get Data via HTTP" )
         Getstatus, result = ctrl.REST.send( ctrlip, port, network.id, path + 'networks/',
                                             'GET', None, None )
diff --git a/TestON/tests/PLAT/PLATdockertest/PLATdockertest.py b/TestON/tests/PLAT/PLATdockertest/PLATdockertest.py
index bc4f3c3..c9b6ab1 100644
--- a/TestON/tests/PLAT/PLATdockertest/PLATdockertest.py
+++ b/TestON/tests/PLAT/PLATdockertest/PLATdockertest.py
@@ -112,7 +112,7 @@
             main.cleanAndExit()
         if imageTagCounter > len( imageTagList ):
             main.log.info( "All images have been tested" )
-            main.cleanAndExit()
+            main.cleanAndExit( alarm=False )
 
     def CASE5( self, main ):
         """
diff --git a/TestON/tests/USECASE/USECASE_SdnipFunction/dependencies/Functions.py b/TestON/tests/USECASE/USECASE_SdnipFunction/dependencies/Functions.py
index 81d2d96..fe3b1e2 100644
--- a/TestON/tests/USECASE/USECASE_SdnipFunction/dependencies/Functions.py
+++ b/TestON/tests/USECASE/USECASE_SdnipFunction/dependencies/Functions.py
@@ -151,7 +151,7 @@
                              onfail="Ping test results are Not expected" )
 
     if not result:
-        main.cleanAndExit()
+        main.cleanAndExit( alarm=False )
 
 
 def pingHostToHost( main,
diff --git a/TestON/tests/USECASE/USECASE_SdnipFunctionCluster/dependencies/Functions.py b/TestON/tests/USECASE/USECASE_SdnipFunctionCluster/dependencies/Functions.py
index 8edc284..f280d44 100644
--- a/TestON/tests/USECASE/USECASE_SdnipFunctionCluster/dependencies/Functions.py
+++ b/TestON/tests/USECASE/USECASE_SdnipFunctionCluster/dependencies/Functions.py
@@ -145,7 +145,7 @@
                              onfail="Ping test results are Not expected" )
 
     if not result:
-        main.cleanAndExit()
+        main.cleanAndExit( alarm=False )
 
 
 def pingHostToHost( main, hosts=[ "h64514", "h64515", "h64516" ],
diff --git a/TestON/tests/dependencies/ONOSSetup.py b/TestON/tests/dependencies/ONOSSetup.py
index cb40761..d7ea792 100644
--- a/TestON/tests/dependencies/ONOSSetup.py
+++ b/TestON/tests/dependencies/ONOSSetup.py
@@ -440,8 +440,7 @@
                     ctrl.name,
                     ctrl.CLI.sendline( "onos:scr-list | grep -v ACTIVE" ) ) )  #FIXME: This output has changed a lot
             main.log.error( "Failed to start ONOS, stopping test" )
-            main.log.alarm( "Failed to start ONOS: not all nodes are in READY state" )
-            main.cleanAndExit()
+            main.cleanAndExit( msg="Failed to start ONOS: not all nodes are in READY state" )
         return main.TRUE
 
     def checkOnosApps( self, cluster, apps ):
