diff --git a/TestON/bin/cleanup.sh b/TestON/bin/cleanup.sh
index d921147..2d78b1e 100755
--- a/TestON/bin/cleanup.sh
+++ b/TestON/bin/cleanup.sh
@@ -1,5 +1,6 @@
 #!/bin/bash 
 # This script will kill any TestON, ssh, and Mininet sessions that are running.
 sudo kill -9 `ps -ef | grep "./cli.py" | grep -v grep | awk '{print $2}'`
+sudo kill -9 `ps -ef | grep "bin/teston" | grep -v grep | awk '{print $2}'`
 sudo kill -9 `ps -ef | grep "ssh -X" | grep -v grep | awk '{print $2}'`
 sudo mn -c
diff --git a/TestON/bin/updatedriver.py b/TestON/bin/updatedriver.py
index bd6974d..ca5c0f2 100644
--- a/TestON/bin/updatedriver.py
+++ b/TestON/bin/updatedriver.py
@@ -349,8 +349,9 @@
         try :
             self.driverPath = self.configDict['config-driver']['importTypes'][self.driver]['driver-path']
 
-        except KeyError :
-            path = re.sub("(bin)$", "", os.getcwd())
+        except KeyError:
+            location = os.path.abspath( os.path.dirname( __file__ ) )
+            path = re.sub( "(bin)$", "", location )
             self.driverPath = path + "/lib/updatedriver/"
         return self.driverPath
 
diff --git a/TestON/tests/FUNCintent/FUNCintent.params b/TestON/tests/FUNCintent/FUNCintent.params
index 81e5bb2..d1cd94c 100644
--- a/TestON/tests/FUNCintent/FUNCintent.params
+++ b/TestON/tests/FUNCintent/FUNCintent.params
@@ -51,8 +51,8 @@
     <SDNIP>
         <tcpProto>6</tcpProto>
         <icmpProto>1</icmpProto>
-        <srcPort>5001</srcPort>
-        <dstPort>5001</dstPort>
+        <srcPort>179</srcPort>
+        <dstPort>179</dstPort>
     </SDNIP>
 
 </PARAMS>
diff --git a/TestON/tests/FUNCintent/FUNCintent.py b/TestON/tests/FUNCintent/FUNCintent.py
index 49c2969..832311e 100644
--- a/TestON/tests/FUNCintent/FUNCintent.py
+++ b/TestON/tests/FUNCintent/FUNCintent.py
@@ -1,9 +1,5 @@
-
 # Testing the basic intent functionality of ONOS
 
-import time
-import json
-
 class FUNCintent:
 
     def __init__( self ):
@@ -13,6 +9,7 @@
         import time
         import os
         import imp
+        import re
 
         """
         - Construct tests variables
@@ -33,7 +30,7 @@
 
         # Test variables
         try:
-            main.testOnDirectory = os.path.dirname( os.getcwd ( ) )
+            main.testOnDirectory = re.sub( "(/tests)$", "", main.testDir )
             main.apps = main.params[ 'ENV' ][ 'cellApps' ]
             gitBranch = main.params[ 'GIT' ][ 'branch' ]
             main.dependencyPath = main.testOnDirectory + \
@@ -282,6 +279,7 @@
                                      " Switches view is correct",
                                      onfail="ONOS" + controllerStr +
                                      " Switches view is incorrect" )
+            devicesResults = devicesResults and currentDevicesResult
 
             if links[ controller ] and "Error" not in links[ controller ]:
                 currentLinksResult = main.Mininet1.compareLinks(
@@ -295,6 +293,7 @@
                                      " links view is correct",
                                      onfail="ONOS" + controllerStr +
                                      " links view is incorrect" )
+            linksResults = linksResults and currentLinksResult
 
             if hosts[ controller ] or "Error" not in hosts[ controller ]:
                 currentHostsResult = main.Mininet1.compareHosts(
@@ -308,6 +307,12 @@
                                      " hosts exist in Mininet",
                                      onfail="ONOS" + controllerStr +
                                      " hosts don't match Mininet" )
+            hostsResults = hostsResults and currentHostsResult
+        topoResults = hostsResults and linksResults and devicesResults
+        utilities.assert_equals( expect=main.TRUE,
+                                 actual=topoResults,
+                                 onpass="ONOS correctly discovered the topology",
+                                 onfail="ONOS incorrectly discovered the topology" )
 
     def CASE9( self, main ):
         '''
@@ -732,7 +737,7 @@
                                         "failed using IPV4 type with " +
                                         "no MAC addresses" )
 
-        main.step( "SDNIP-TCP: Add point intents between h1 and h9" )
+        main.step( "SDNIP-ICMP: Add point intents between h1 and h9" )
         stepResult = main.TRUE
         mac1 = main.hostsData[ 'h1' ][ 'mac' ]
         mac2 = main.hostsData[ 'h9' ][ 'mac' ]
@@ -752,7 +757,7 @@
 
         stepResult = main.intentFunction.pointIntent(
                                            main,
-                                           name="SDNIP-TCP",
+                                           name="SDNIP-ICMP",
                                            host1="h1",
                                            host2="h9",
                                            deviceId1="of:0000000000000005/1",
@@ -766,14 +771,14 @@
 
         utilities.assert_equals( expect=main.TRUE,
                                  actual=stepResult,
-                                 onpass="SDNIP-TCP: Point intent test " +
+                                 onpass="SDNIP-ICMP: Point intent test " +
                                         "successful using IPV4 type with " +
                                         "IP protocol TCP enabled",
-                                 onfail="SDNIP-TCP: Point intent test " +
+                                 onfail="SDNIP-ICMP: Point intent test " +
                                         "failed using IPV4 type with " +
                                         "IP protocol TCP enabled" )
 
-        main.step( "SDNIP-ICMP: Add point intents between h1 and h9" )
+        main.step( "SDNIP-TCP: Add point intents between h1 and h9" )
         stepResult = main.TRUE
         mac1 = main.hostsData[ 'h1' ][ 'mac' ]
         mac2 = main.hostsData[ 'h9' ][ 'mac' ]
@@ -785,7 +790,7 @@
 
         stepResult = main.intentFunction.pointIntent(
                                            main,
-                                           name="SDNIP-ICMP",
+                                           name="SDNIP-TCP",
                                            host1="h1",
                                            host2="h9",
                                            deviceId1="of:0000000000000005/1",
@@ -793,14 +798,18 @@
                                            mac1=mac1,
                                            mac2=mac2,
                                            ethType="IPV4",
-                                           ipProto=ipProto )
+                                           ipProto=ipProto,
+                                           ip1=ip1,
+                                           ip2=ip2,
+                                           tcp1=tcp1,
+                                           tcp2=tcp2 )
 
         utilities.assert_equals( expect=main.TRUE,
                              actual=stepResult,
-                                 onpass="SDNIP-ICMP: Point intent test " +
+                                 onpass="SDNIP-TCP: Point intent test " +
                                         "successful using IPV4 type with " +
                                         "IP protocol ICMP enabled",
-                                 onfail="SDNIP-ICMP: Point intent test " +
+                                 onfail="SDNIP-TCP: Point intent test " +
                                         "failed using IPV4 type with " +
                                         "IP protocol ICMP enabled" )
 
diff --git a/TestON/tests/SAMPscaleTopo/SAMPscaleTopo.py b/TestON/tests/SAMPscaleTopo/SAMPscaleTopo.py
index 2458c71..9a77f64 100644
--- a/TestON/tests/SAMPscaleTopo/SAMPscaleTopo.py
+++ b/TestON/tests/SAMPscaleTopo/SAMPscaleTopo.py
@@ -11,6 +11,7 @@
         import time
         import os
         import imp
+        import re
 
         """
         - Construct tests variables
@@ -27,7 +28,7 @@
         stepResult = main.FALSE
 
         # Test variables
-        main.testOnDirectory = os.path.dirname( os.getcwd ( ) )
+        main.testOnDirectory = re.sub( "(/tests)$", "", main.testDir )
         main.apps = main.params[ 'ENV' ][ 'cellApps' ]
         gitBranch = main.params[ 'GIT' ][ 'branch' ]
         main.dependencyPath = main.testOnDirectory + \
diff --git a/TestON/tests/SAMPstartTemplate/SAMPstartTemplate.py b/TestON/tests/SAMPstartTemplate/SAMPstartTemplate.py
index 96d24a9..464a0d3 100644
--- a/TestON/tests/SAMPstartTemplate/SAMPstartTemplate.py
+++ b/TestON/tests/SAMPstartTemplate/SAMPstartTemplate.py
@@ -11,6 +11,7 @@
         import time
         import os
         import imp
+        import re
 
         """
         - Construct tests variables
@@ -27,7 +28,7 @@
         stepResult = main.FALSE
 
         # Test variables
-        main.testOnDirectory = os.path.dirname( os.getcwd ( ) )
+        main.testOnDirectory = re.sub( "(/tests)$", "", main.testDir )
         main.cellName = main.params[ 'ENV' ][ 'cellName' ]
         main.apps = main.params[ 'ENV' ][ 'cellApps' ]
         gitBranch = main.params[ 'GIT' ][ 'branch' ]
diff --git a/TestON/tests/SCPFportLat/SCPFportLat.params b/TestON/tests/SCPFportLat/SCPFportLat.params
index 00c8c19..bc3d704 100644
--- a/TestON/tests/SCPFportLat/SCPFportLat.params
+++ b/TestON/tests/SCPFportLat/SCPFportLat.params
@@ -59,12 +59,12 @@
         </topoConfigName>
 
         #Number of times to iterate each case
-        <numIter>2</numIter>
+        <numIter>25</numIter>
         <numSwitch>2</numSwitch>
         #Number of iterations to ignore initially
-        <iterIgnore>0</iterIgnore>
+        <iterIgnore>5</iterIgnore>
 
-        <portUpThreshold>0,1000</portUpThreshold>
+        <portUpThreshold>0,5000</portUpThreshold>
         <portDownThreshold>0,1000</portDownThreshold>
 
         <tabletFile>tablets_3node.json</tabletFile>
diff --git a/TestON/tests/SCPFportLat/SCPFportLat.py b/TestON/tests/SCPFportLat/SCPFportLat.py
index 9c75cb8..b900825 100644
--- a/TestON/tests/SCPFportLat/SCPFportLat.py
+++ b/TestON/tests/SCPFportLat/SCPFportLat.py
@@ -9,7 +9,7 @@
 
     def CASE1( self, main ):
         import sys
-        import os.path
+        import re
         import os
         import time
 
@@ -32,9 +32,9 @@
         homeDir = os.path.expanduser('~')
         topoCfgFile = main.params['TEST']['topoConfigFile']
         topoCfgName = main.params['TEST']['topoConfigName']
-        portEventResultPath = main.params['DB']['portEventResultPath']
+        resultPath = main.params['DB']['portEventResultPath']
         skipMvn = main.params ['TEST']['mci']
-        testONpath = os.getcwd() #testON/bin
+        testONpath = re.sub( "(tests)$", "bin", main.testDir )  # TestON/bin
 
         # -- INIT SECTION, ONLY RUNS ONCE -- #
         if init == False:
@@ -90,7 +90,7 @@
             commit = (commit.split(" "))[1]
 
             main.step("Creating results file")
-            resultsDB = open("IntentEventTPDB", "w+")
+            resultsDB = open(resultPath, "w+")
             resultsDB.close()
 
             main.log.report('Commit information - ')
@@ -137,10 +137,6 @@
         main.step('Starting mininet topology ')
         main.Mininet1.startNet()
 
-        main.step('Clearing previous DB log file')
-        fPortLog = open(portEventResultPath, 'w+')
-        fPortLog.close()
-
         main.log.report( "Initializeing " + str( clusterCount ) + " node cluster." )
         for node in range(clusterCount):
             main.log.info("Starting ONOS " + str(node) + " at IP: " + ONOSIp[node])
@@ -352,6 +348,8 @@
             main.Mininet1.handle.sendline('sh ifconfig ' + interfaceConfig + ' up')
             main.Mininet1.handle.expect('mininet>')
 
+            time.sleep(5)
+
             jsonStrPtUp = []
             for node in range (0, clusterCount):
                 metricsPortUp = CLIs[node].topologyEventsMetrics()
@@ -391,7 +389,7 @@
                     linkTimestamp = 0
 
 
-                main.log.info('ptDownTimestamp: ' + str(timestampBeginPtDown))
+                main.log.info('ptUpTimestamp: ' + str(timestampBeginPtUp))
                 main.log.info("graphTimestamp: " + str(graphTimestamp))
                 main.log.info("deviceTimestamp: " + str(deviceTimestamp))
                 main.log.info("linkTimestamp: " + str(linkTimestamp))
diff --git a/TestON/tests/SCPFswitchLat/SCPFswitchLat.py b/TestON/tests/SCPFswitchLat/SCPFswitchLat.py
index 78ae16c..c0c4ba4 100644
--- a/TestON/tests/SCPFswitchLat/SCPFswitchLat.py
+++ b/TestON/tests/SCPFswitchLat/SCPFswitchLat.py
@@ -9,7 +9,7 @@
 
     def CASE1( self, main ):
         import sys
-        import os.path
+        import re
         import os
         import time
 
@@ -34,7 +34,7 @@
         topoCfgName = main.params['TEST']['topoConfigName']
         switchEventResultPath = main.params['DB']['switchEventResultPath']
         skipMvn = main.params ['TEST']['mci']
-        testONpath = os.getcwd() #testON/bin
+        testONpath = re.sub( "(tests)$", "bin", main.testDir )  # TestON/bin
         user = main.params[ 'CTRL' ][ 'user' ]
 
         # -- INIT SECTION, ONLY RUNS ONCE -- #
