Merge "Add variable for plot index"
diff --git a/README.md b/README.md
index f84882a..ad22ef6 100644
--- a/README.md
+++ b/README.md
@@ -11,14 +11,14 @@
 Setup
 -------------
 
-0. Pull the git repo from https://github.com/OPENNETWORKINGLAB/ONLabTest.git 
+0. Pull the git repo from https://github.com/OPENNETWORKINGLAB/OnosSystemTest.git 
 
-    $ git clone https://github.com/OPENNETWORKINGLAB/ONLabTest.git
+    $ git clone https://github.com/OPENNETWORKINGLAB/OnosSystemTest.git
 
 1. Make a symbolic link for TestON on the HOMEDIR 
    Execute the following from the home directory  
 
-    $ ln -s ONLabTest/TestON TestON
+    $ ln -s OnosSystemTest/TestON TestON
 
 2. Make sure python path is correct 
 
@@ -57,8 +57,12 @@
 
     1. Erlang R15B, R16B, R17 - if possible please use R17
 
+      $ sudo apt-get install erlang
+
     2. libpcap-dev package if eth interfaces will be used
 
+      $ sudo apt-get install libpcap-dev
+
     Building and Running:
 
     $ git clone https://github.com/shivarammysore/LINC-Switch.git linc-oe
@@ -67,6 +71,8 @@
 
     $ git checkout tags/oe-0.3
 
+    $ cp rel/files/sys.config.orig rel/files/sys.config
+
     $ make rel
 
 Configuration
diff --git a/TestON/drivers/common/cli/onosclidriver.py b/TestON/drivers/common/cli/onosclidriver.py
index eafc7ab..5201570 100644
--- a/TestON/drivers/common/cli/onosclidriver.py
+++ b/TestON/drivers/common/cli/onosclidriver.py
@@ -4144,3 +4144,79 @@
             main.log.exception( self.name + ": Uncaught exception!" )
             main.cleanup()
             main.exit()
+
+    def removeDevice( self, device ):
+        '''
+        Description:
+            Remove a device from ONOS by passing the uri of the device(s).
+        Parameters:
+            device - (str or list) the id or uri of the device ex. "of:0000000000000001"
+        Returns:
+            Returns main.FALSE if an exception is thrown or an error is present
+            in the response. Otherwise, returns main.TRUE.
+        NOTE:
+            If a host cannot be removed, then this function will return main.FALSE
+        '''
+        try:
+            if type( device ) is str:
+                device = list( device )
+
+            for d in device:
+                time.sleep( 1 )
+                response = self.sendline( "device-remove {}".format( d ) )
+                if "Error" in response:
+                    main.log.warn( "Error for device: {}\nResponse: {}".format( d, response ) )
+                    return main.FALSE
+
+            return main.TRUE
+
+        except TypeError:
+            main.log.exception( self.name + ": Object not as expected" )
+            return main.FALSE
+        except pexpect.EOF:
+            main.log.error( self.name + ": EOF exception found" )
+            main.log.error( self.name + ":    " + self.handle.before )
+            main.cleanup()
+            main.exit()
+        except Exception:
+            main.log.exception( self.name + ": Uncaught exception!" )
+            main.cleanup()
+            main.exit()
+
+    def removeHost( self, host ):
+        '''
+        Description:
+            Remove a host from ONOS by passing the id of the host(s)
+        Parameters:
+            hostId - (str or list) the id or mac of the host ex. "00:00:00:00:00:01"
+        Returns:
+            Returns main.FALSE if an exception is thrown or an error is present
+            in the response. Otherwise, returns main.TRUE.
+        NOTE:
+            If a host cannot be removed, then this function will return main.FALSE
+        '''
+        try:
+            if type( host ) is str:
+                host = list( host )
+
+            for h in host:
+                time.sleep( 1 )
+                response = self.sendline( "host-remove {}".format( h ) )
+                if "Error" in response:
+                    main.log.warn( "Error for host: {}\nResponse: {}".format( h, response ) )
+                    return main.FALSE
+
+            return main.TRUE
+
+        except TypeError:
+            main.log.exception( self.name + ": Object not as expected" )
+            return main.FALSE
+        except pexpect.EOF:
+            main.log.error( self.name + ": EOF exception found" )
+            main.log.error( self.name + ":    " + self.handle.before )
+            main.cleanup()
+            main.exit()
+        except Exception:
+            main.log.exception( self.name + ": Uncaught exception!" )
+            main.cleanup()
+            main.exit()
diff --git a/TestON/tests/CHOtest/CHOtest.params b/TestON/tests/CHOtest/CHOtest.params
index 2aee8f2..1d15bf3 100644
--- a/TestON/tests/CHOtest/CHOtest.params
+++ b/TestON/tests/CHOtest/CHOtest.params
@@ -18,7 +18,7 @@
     # 19X. IPv6 ping across Point,Multi-single,Single-Multi Intents
 
 <testcases>
-1,20,3,[40,5,60,70,80,10,5,90,71,81,10,5]*20,21,3,[40,5,61,72,82,10,5,91,73,83,10,5]*20,22,3,[40,5,62,74,84,10,5,92,75,85,10,5]*20
+1,20,3,[48,5,60,70,80,10,5,90,71,81,10,5]*10,200,21,3,[47,5,61,72,82,10,5,91,73,83,10,5]*10,200,22,3,[42,5,62,74,84,10,5,92,75,85,10,5]*10
 </testcases>
 
     <GIT>
@@ -94,6 +94,8 @@
         <topoCheckDelay>15</topoCheckDelay>
         <pingSleep>3</pingSleep>
         <pingTimeout>1200</pingTimeout>
+        <remHostDelay>5</remHostDelay>
+        <remDevDelay>10</remDevDelay>
     </timers>
 
     <TEST>
diff --git a/TestON/tests/CHOtest/CHOtest.py b/TestON/tests/CHOtest/CHOtest.py
index 9feb9b8..c3966c5 100644
--- a/TestON/tests/CHOtest/CHOtest.py
+++ b/TestON/tests/CHOtest/CHOtest.py
@@ -40,9 +40,10 @@
         main.pingSleep = int( main.params['timers']['pingSleep'] )
         main.topoCheckDelay = int( main.params['timers']['topoCheckDelay'] )
         main.pingTimeout = int( main.params['timers']['pingTimeout'] )
+        main.remHostDelay = int( main.params['timers']['remHostDelay'] )
+        main.remDevDelay = int( main.params['timers']['remDevDelay'] )
         main.newTopo = ""
         main.CLIs = []
-        main.prefix = 0
 
         main.failSwitch = True if main.failSwitch == "on" else False
         main.emailOnStop = True if main.emailOnStop == "on" else False
@@ -190,11 +191,6 @@
         main.case(
             "Assign and Balance all Mininet switches across controllers" )
 
-        main.step( "Stop any previous Mininet network topology" )
-        cliResult = main.TRUE
-        if main.newTopo == main.params['TOPO3']['topo']:
-            stopStatus = main.Mininet1.stopNet( fileName = "topoSpine" )
-
         main.step( "Start Mininet with Att topology" )
         main.newTopo = main.params['TOPO1']['topo']
         mininetDir = main.Mininet1.home + "/custom/"
@@ -260,9 +256,6 @@
         main.case(
             "Assign and Balance all Mininet switches across controllers" )
 
-        main.step( "Stop any previous Mininet network topology" )
-        stopStatus = main.Mininet1.stopNet(fileName = "topoAtt" )
-
         main.step("Start Mininet with Chordal topology")
         mininetDir = main.Mininet1.home + "/custom/"
         topoPath = main.testDir + "/" + main.TEST  + "/Dependencies/" + main.newTopo
@@ -324,10 +317,7 @@
             "Load Spine and Leaf topology and Balance all Mininet switches across controllers" )
         main.log.report(
             "________________________________________________________________________" )
-        main.case(
-            "Assign and Balance all Mininet switches across controllers" )
-        main.step( "Stop any previous Mininet network topology" )
-        stopStatus = main.Mininet1.stopNet(fileName = "topoChordal" )
+        main.case( "Assign and Balance all Mininet switches across controllers" )
 
         main.step("Start Mininet with Spine topology")
         mininetDir = main.Mininet1.home + "/custom/"
@@ -336,9 +326,6 @@
         topoPath = mininetDir + main.newTopo
         startStatus = main.Mininet1.startNet(topoFile = topoPath)
 
-        time.sleep(60)
-        main.step( "Assign switches to controllers" )
-
         for i in range( 1, ( main.numMNswitches + 1 ) ):  # 1 to ( num of switches +1 )
             main.Mininet1.assignSwController(
                 sw="s" + str( i ),
@@ -402,7 +389,7 @@
             if ( ( main.numMNswitches == int(numOnosDevices) ) and ( main.numMNlinks == int(numOnosLinks) ) ):
                 main.step( "Store Device DPIDs" )
                 for i in range( 1, (main.numMNswitches+1) ):
-                    main.deviceDPIDs.append( "of:" + str(main.prefix) + "0000000000000%02d" % i )
+                    main.deviceDPIDs.append( "of:00000000000000" + format( i, "02x" ) )
                 print "Device DPIDs in Store: \n", str( main.deviceDPIDs )
 
                 main.step( "Store Host MACs" )
@@ -433,7 +420,7 @@
                     for cli in main.CLIs:
                         if i >=  main.numMNswitches + 1:
                             break
-                        dpid = "of:" + str(main.prefix) + "0000000000000%02d" % i
+                        dpid = "of:00000000000000" + format( i, "02x" )
                         t = main.Thread(target = cli.getDevicePortsEnabledCount,threadID = main.threadID, name = "getDevicePortsEnabledCount",args = [dpid])
                         t.start()
                         pool.append(t)
@@ -455,7 +442,7 @@
                     for cli in main.CLIs:
                         if i >=  main.numMNswitches + 1:
                             break
-                        dpid = "of:" + str(main.prefix) + "0000000000000%02d" % i
+                        dpid = "of:00000000000000" + format( i, "02x" )
                         t = main.Thread( target = cli.getDeviceLinksActiveCount,
                                          threadID = main.threadID,
                                          name = "getDevicePortsEnabledCount",
@@ -491,6 +478,56 @@
                                  onfail="Saving ONOS topology data test FAIL" )
 
 
+
+    def CASE200( self, main ):
+
+        import time
+        main.log.report( "Clean up ONOS" )
+        main.log.case( "Stop topology and remove hosts and devices" )
+
+        main.step( "Stop Topology" )
+        stopStatus = main.Mininet1.stopNet()
+        utilities.assert_equals( expect=main.TRUE, actual=stopStatus,
+                                 onpass="Stopped mininet",
+                                 onfail="Failed to stop mininet" )
+
+
+        main.log.info( "Constructing host id list" )
+        hosts = []
+        for i in range( main.numMNhosts ):
+            hosts.append( "h" + str(i+1) )
+
+        main.step( "Getting host ids" )
+        hostList = main.CLIs[0].getHostsId( hosts )
+        hostIdResult = True if hostList else False
+        utilities.assert_equals( expect=True, actual=hostIdResult,
+                                 onpass="Successfully obtained the host ids.",
+                                 onfail="Failed to obtain the host ids" )
+
+        main.step( "Removing hosts" )
+        hostResult = main.CLIs[0].removeHost( hostList )
+        utilities.assert_equals( expect=main.TRUE, actual=hostResult,
+                                 onpass="Successfully removed hosts",
+                                 onfail="Failed remove hosts" )
+
+        time.sleep( main.remHostDelay )
+
+        main.log.info( "Constructing device uri list" )
+        deviceList = []
+        for i in range( main.numMNswitches ):
+            deviceList.append( "of:00000000000000" + format( i+1, "02x" ) )
+
+        main.step( "Removing devices" )
+        deviceResult = main.CLIs[0].removeDevice( deviceList )
+        utilities.assert_equals( expect=main.TRUE, actual=deviceResult,
+                                 onpass="Successfully removed devices",
+                                 onfail="Failed remove devices" )
+
+        time.sleep( main.remDevDelay )
+
+        main.log.info( "Summary\n{}".format( main.CLIs[0].summary( jsonFormat=False ) ) )
+
+
     def CASE40( self, main ):
         """
         Verify Reactive forwarding
@@ -659,6 +696,102 @@
                                  onpass="Reactive Mode IPv4 Pingall test PASS",
                                  onfail="Reactive Mode IPv4 Pingall test FAIL" )
 
+    def CASE47( self, main ):
+        import time
+        main.log.report( "Verify Reactive forwarding" )
+        main.log.report( "______________________________________________" )
+        main.case( "Enable Reactive forwarding, verify pingall, and disable reactive forwarding" )
+
+        main.step( "Enable Reactive forwarding" )
+        appResult = main.CLIs[0].activateApp( "org.onosproject.fwd" )
+        utilities.assert_equals( expect=main.TRUE, actual=appResult,
+                                 onpass="Successfully install fwd app",
+                                 onfail="Failed to install fwd app" )
+
+        numHosts = int( main.params['TOPO1']['numHosts'] )
+        wait = 1
+
+        for i in range(numHosts):
+            src = "h1"
+            dest = "h" + str(i+1)
+            main.Mininet1.handle.sendline( src + " ping " + dest + " -c 3 -i 1 -W 1" )
+            main.Mininet1.handle.expect( "mininet>" )
+            main.log.info( main.Mininet1.handle.before )
+
+        hosts = main.CLIs[0].hosts( jsonFormat=False )
+
+        main.log.info( hosts )
+
+        main.step( "Disable Reactive forwarding" )
+        appResult =  main.CLIs[0].deactivateApp( "org.onosproject.fwd" )
+        utilities.assert_equals( expect=main.TRUE, actual=appResult,
+                                 onpass="Successfully deactivated fwd app",
+                                 onfail="Failed to deactivate fwd app" )
+
+    def CASE48( self, main ):
+        import time
+        main.log.report( "Verify Reactive forwarding" )
+        main.log.report( "______________________________________________" )
+        main.case( "Enable Reactive forwarding, verify pingall, and disable reactive forwarding" )
+
+        main.step( "Enable Reactive forwarding" )
+        appResult = main.CLIs[0].activateApp( "org.onosproject.fwd" )
+        utilities.assert_equals( expect=main.TRUE, actual=appResult,
+                                 onpass="Successfully install fwd app",
+                                 onfail="Failed to install fwd app" )
+
+        numHosts = int( main.params['TOPO2']['numHosts'] )
+        wait = 1
+
+        for i in range(numHosts):
+            src = "h1"
+            dest = "h" + str(i+1)
+            main.Mininet1.handle.sendline( src + " ping " + dest + " -c 3 -i 1 -W 1" )
+            main.Mininet1.handle.expect( "mininet>" )
+            main.log.info( main.Mininet1.handle.before )
+
+        hosts = main.CLIs[0].hosts( jsonFormat=False )
+
+        main.log.info( hosts )
+
+        main.step( "Disable Reactive forwarding" )
+        appResult =  main.CLIs[0].deactivateApp( "org.onosproject.fwd" )
+        utilities.assert_equals( expect=main.TRUE, actual=appResult,
+                                 onpass="Successfully deactivated fwd app",
+                                 onfail="Failed to deactivate fwd app" )
+
+    def CASE49( self, main ):
+        import time
+        main.log.report( "Verify Reactive forwarding" )
+        main.log.report( "______________________________________________" )
+        main.case( "Enable Reactive forwarding, verify pingall, and disable reactive forwarding" )
+
+        main.step( "Enable Reactive forwarding" )
+        appResult = main.CLIs[0].activateApp( "org.onosproject.fwd" )
+        utilities.assert_equals( expect=main.TRUE, actual=appResult,
+                                 onpass="Successfully install fwd app",
+                                 onfail="Failed to install fwd app" )
+
+        numHosts = int( main.params['TOPO3']['numHosts'] )
+        wait = 1
+
+        for i in range(12, numHosts+11):
+            src = "h11"
+            dest = "h" + str(i)
+            main.Mininet1.handle.sendline( src + " ping " + dest + " -c 3 -i 1 -W 1" )
+            main.Mininet1.handle.expect( "mininet>" )
+            main.log.info( main.Mininet1.handle.before )
+
+        hosts = main.CLIs[0].hosts( jsonFormat=False )
+
+        main.log.info( hosts )
+
+        main.step( "Disable Reactive forwarding" )
+        appResult =  main.CLIs[0].deactivateApp( "org.onosproject.fwd" )
+        utilities.assert_equals( expect=main.TRUE, actual=appResult,
+                                 onpass="Successfully deactivated fwd app",
+                                 onfail="Failed to deactivate fwd app" )
+
     def CASE140( self, main ):
         """
         Verify IPv6 Reactive forwarding (Att Topology)
@@ -868,7 +1001,7 @@
                 for cli in main.CLIs:
                     if i >=  main.numMNswitches + 1:
                         break
-                    dpid = "of:" + str(main.prefix) + "0000000000000%02d" % i
+                    dpid = "of:00000000000000" + format( i, "02x" )
                     t = main.Thread(target = cli.getDevicePortsEnabledCount,
                             threadID = main.threadID,
                             name = "getDevicePortsEnabledCount",
@@ -906,7 +1039,7 @@
                 for cli in main.CLIs:
                     if i >=  main.numMNswitches + 1:
                         break
-                    dpid = "of:" + str(main.prefix) + "0000000000000%02d" % i
+                    dpid = "of:00000000000000" + format( i, "02x" )
                     t = main.Thread(target = cli.getDeviceLinksActiveCount,
                             threadID = main.threadID,
                             name = "getDeviceLinksActiveCount",
diff --git a/TestON/tests/CHOtest/Dependencies/topoAttIpv6.py b/TestON/tests/CHOtest/Dependencies/topoAttIpv6.py
index 505cc0c..d2b8df7 100755
--- a/TestON/tests/CHOtest/Dependencies/topoAttIpv6.py
+++ b/TestON/tests/CHOtest/Dependencies/topoAttIpv6.py
@@ -29,31 +29,31 @@
         # Initialize Topology
         Topo.__init__( self, **opts )
 
-        NY54 = self.addSwitch( 's1', dpid='0000000000000001' )
-        CMBR = self.addSwitch( 's2', dpid='0000000000000002' )
-        CHCG = self.addSwitch( 's3', dpid='0000000000000003' )
-        CLEV = self.addSwitch( 's4', dpid='0000000000000004' )
-        RLGH = self.addSwitch( 's5', dpid='0000000000000005' )
-        ATLN = self.addSwitch( 's6', dpid='0000000000000006' )
-        PHLA = self.addSwitch( 's7', dpid='0000000000000007' )
-        WASH = self.addSwitch( 's8', dpid='0000000000000008' )
-        NSVL = self.addSwitch( 's9', dpid='0000000000000009' )
-        STLS = self.addSwitch( 's10', dpid='0000000000000010' )
-        NWOR = self.addSwitch( 's11', dpid='0000000000000011' )
-        HSTN = self.addSwitch( 's12', dpid='0000000000000012' )
-        SNAN = self.addSwitch( 's13', dpid='0000000000000013' )
-        DLLS = self.addSwitch( 's14', dpid='0000000000000014' )
-        ORLD = self.addSwitch( 's15', dpid='0000000000000015' )
-        DNVR = self.addSwitch( 's16', dpid='0000000000000016' )
-        KSCY = self.addSwitch( 's17', dpid='0000000000000017' )
-        SNFN = self.addSwitch( 's18', dpid='0000000000000018' )
-        SCRM = self.addSwitch( 's19', dpid='0000000000000019' )
-        PTLD = self.addSwitch( 's20', dpid='0000000000000020' )
-        STTL = self.addSwitch( 's21', dpid='0000000000000021' )
-        SLKC = self.addSwitch( 's22', dpid='0000000000000022' )
-        LA03 = self.addSwitch( 's23', dpid='0000000000000023' )
-        SNDG = self.addSwitch( 's24', dpid='0000000000000024' )
-        PHNX = self.addSwitch( 's25', dpid='0000000000000025' )
+        NY54 = self.addSwitch( 's1' )
+        CMBR = self.addSwitch( 's2' )
+        CHCG = self.addSwitch( 's3' )
+        CLEV = self.addSwitch( 's4' )
+        RLGH = self.addSwitch( 's5' )
+        ATLN = self.addSwitch( 's6' )
+        PHLA = self.addSwitch( 's7' )
+        WASH = self.addSwitch( 's8' )
+        NSVL = self.addSwitch( 's9' )
+        STLS = self.addSwitch( 's10' )
+        NWOR = self.addSwitch( 's11' )
+        HSTN = self.addSwitch( 's12' )
+        SNAN = self.addSwitch( 's13' )
+        DLLS = self.addSwitch( 's14' )
+        ORLD = self.addSwitch( 's15' )
+        DNVR = self.addSwitch( 's16' )
+        KSCY = self.addSwitch( 's17' )
+        SNFN = self.addSwitch( 's18' )
+        SCRM = self.addSwitch( 's19' )
+        PTLD = self.addSwitch( 's20' )
+        STTL = self.addSwitch( 's21' )
+        SLKC = self.addSwitch( 's22' )
+        LA03 = self.addSwitch( 's23' )
+        SNDG = self.addSwitch( 's24' )
+        PHNX = self.addSwitch( 's25' )
 
         # ... and now hosts
         NY54_host = self.addHost( 'h1', ip='10.1.0.1/24', cls=dualStackHost, v6Addr='1000::1/64' )
diff --git a/TestON/tests/CHOtest/Dependencies/topoChordalIpv6.py b/TestON/tests/CHOtest/Dependencies/topoChordalIpv6.py
index b181c6c..cb065c2 100755
--- a/TestON/tests/CHOtest/Dependencies/topoChordalIpv6.py
+++ b/TestON/tests/CHOtest/Dependencies/topoChordalIpv6.py
@@ -27,31 +27,31 @@
         # Initialize Topology
         Topo.__init__( self, **opts )
 
-        s1 = self.addSwitch( 's1', dpid='1000000000000001' )
-        s2 = self.addSwitch( 's2', dpid='1000000000000002')
-        s3 = self.addSwitch( 's3', dpid='1000000000000003')
-        s4 = self.addSwitch( 's4', dpid='1000000000000004')
-        s5 = self.addSwitch( 's5', dpid='1000000000000005')
-        s6 = self.addSwitch( 's6', dpid='1000000000000006')
-        s7 = self.addSwitch( 's7', dpid='1000000000000007')
-        s8 = self.addSwitch( 's8', dpid='1000000000000008')
-        s9 = self.addSwitch( 's9', dpid='1000000000000009')
-        s10 = self.addSwitch( 's10', dpid='1000000000000010')
-        s11 = self.addSwitch( 's11', dpid='1000000000000011')
-        s12 = self.addSwitch( 's12', dpid='1000000000000012')
-        s13 = self.addSwitch( 's13', dpid='1000000000000013')
-        s14 = self.addSwitch( 's14', dpid='1000000000000014')
-        s15 = self.addSwitch( 's15', dpid='1000000000000015')
-        s16 = self.addSwitch( 's16', dpid='1000000000000016')
-        s17 = self.addSwitch( 's17', dpid='1000000000000017')
-        s18 = self.addSwitch( 's18', dpid='1000000000000018')
-        s19 = self.addSwitch( 's19', dpid='1000000000000019')
-        s20 = self.addSwitch( 's20', dpid='1000000000000020')
-        s21 = self.addSwitch( 's21', dpid='1000000000000021')
-        s22 = self.addSwitch( 's22', dpid='1000000000000022')
-        s23 = self.addSwitch( 's23', dpid='1000000000000023')
-        s24 = self.addSwitch( 's24', dpid='1000000000000024')
-        s25 = self.addSwitch( 's25', dpid='1000000000000025')
+        s1 = self.addSwitch( 's1' )
+        s2 = self.addSwitch( 's2' )
+        s3 = self.addSwitch( 's3' )
+        s4 = self.addSwitch( 's4' )
+        s5 = self.addSwitch( 's5' )
+        s6 = self.addSwitch( 's6' )
+        s7 = self.addSwitch( 's7' )
+        s8 = self.addSwitch( 's8' )
+        s9 = self.addSwitch( 's9' )
+        s10 = self.addSwitch( 's10' )
+        s11 = self.addSwitch( 's11' )
+        s12 = self.addSwitch( 's12' )
+        s13 = self.addSwitch( 's13' )
+        s14 = self.addSwitch( 's14' )
+        s15 = self.addSwitch( 's15' )
+        s16 = self.addSwitch( 's16' )
+        s17 = self.addSwitch( 's17' )
+        s18 = self.addSwitch( 's18' )
+        s19 = self.addSwitch( 's19' )
+        s20 = self.addSwitch( 's20' )
+        s21 = self.addSwitch( 's21' )
+        s22 = self.addSwitch( 's22' )
+        s23 = self.addSwitch( 's23' )
+        s24 = self.addSwitch( 's24' )
+        s25 = self.addSwitch( 's25' )
 
         # ... and now hosts
         s1_host = self.addHost( 'h1', ip='10.1.0.1/24', cls=dualStackHost, v6Addr='1000::1/64' )
diff --git a/TestON/tests/CHOtest/Dependencies/topoSpine.py b/TestON/tests/CHOtest/Dependencies/topoSpine.py
index cc681dd..5787d93 100755
--- a/TestON/tests/CHOtest/Dependencies/topoSpine.py
+++ b/TestON/tests/CHOtest/Dependencies/topoSpine.py
@@ -8,7 +8,6 @@
 from mininet.log import setLogLevel, info
 from mininet.link import TCLink, Intf
 from subprocess import call
-from mininet.log import setLogLevel
 from mininet.util import dumpNodeConnections
 from mininet.node import ( UserSwitch, OVSSwitch, IVSSwitch )
 
diff --git a/TestON/tests/CHOtest/Dependencies/topoSpineIpv6.py b/TestON/tests/CHOtest/Dependencies/topoSpineIpv6.py
index c51a75d..7db4fa1 100755
--- a/TestON/tests/CHOtest/Dependencies/topoSpineIpv6.py
+++ b/TestON/tests/CHOtest/Dependencies/topoSpineIpv6.py
@@ -26,86 +26,86 @@
         Topo.__init__( self, **opts )
 
         # add nodes, Leaf switches
-        s1 = self.addSwitch( 's1', dpid='2000000000000001')
-        s2 = self.addSwitch( 's2', dpid='2000000000000002' )
-        s3 = self.addSwitch( 's3', dpid='2000000000000003' )
-        s4 = self.addSwitch( 's4', dpid='2000000000000004' )
-        s5 = self.addSwitch( 's5', dpid='2000000000000005' )
-        s6 = self.addSwitch( 's6', dpid='2000000000000006' )
-        s7 = self.addSwitch( 's7', dpid='2000000000000007' )
-        s8 = self.addSwitch( 's8', dpid='2000000000000008' )
-        s9 = self.addSwitch( 's9', dpid='2000000000000009' )
-        s10 = self.addSwitch( 's10', dpid='2000000000000010' )
-        s11 = self.addSwitch( 's11', dpid='2000000000000011' )
-        s12 = self.addSwitch( 's12', dpid='2000000000000012' )
-        s13 = self.addSwitch( 's13', dpid='2000000000000013' )
-        s14 = self.addSwitch( 's14', dpid='2000000000000014' )
+        s1 = self.addSwitch( 's1' )
+        s2 = self.addSwitch( 's2' )
+        s3 = self.addSwitch( 's3' )
+        s4 = self.addSwitch( 's4' )
+        s5 = self.addSwitch( 's5' )
+        s6 = self.addSwitch( 's6' )
+        s7 = self.addSwitch( 's7' )
+        s8 = self.addSwitch( 's8' )
+        s9 = self.addSwitch( 's9' )
+        s10 = self.addSwitch( 's10' )
+        s11 = self.addSwitch( 's11' )
+        s12 = self.addSwitch( 's12' )
+        s13 = self.addSwitch( 's13' )
+        s14 = self.addSwitch( 's14' )
 
         # add nodes, Spine switches first...
-        s15 = self.addSwitch( 's15', dpid='2000000000000015' )
-        s16 = self.addSwitch( 's16', dpid='2000000000000016' )
-        s17 = self.addSwitch( 's17', dpid='2000000000000017' )
-        s18 = self.addSwitch( 's18', dpid='2000000000000018' )
-        s19 = self.addSwitch( 's19', dpid='2000000000000019' )
-        s20 = self.addSwitch( 's20', dpid='2000000000000020' )
-        s21 = self.addSwitch( 's21', dpid='2000000000000021' )
-        s22 = self.addSwitch( 's22', dpid='2000000000000022' )
-        s23 = self.addSwitch( 's23', dpid='2000000000000023' )
-        s24 = self.addSwitch( 's24', dpid='2000000000000024' )
-        s25 = self.addSwitch( 's25', dpid='2000000000000025' )
-        s26 = self.addSwitch( 's26', dpid='2000000000000026' )
-        s27 = self.addSwitch( 's27', dpid='2000000000000027' )
-        s28 = self.addSwitch( 's28', dpid='2000000000000028' )
-        s29 = self.addSwitch( 's29', dpid='2000000000000029' )
-        s30 = self.addSwitch( 's30', dpid='2000000000000030' )
-        s31 = self.addSwitch( 's31', dpid='2000000000000031' )
-        s32 = self.addSwitch( 's32', dpid='2000000000000032' )
-        s33 = self.addSwitch( 's33', dpid='2000000000000033' )
-        s34 = self.addSwitch( 's34', dpid='2000000000000034' )
-        s35 = self.addSwitch( 's35', dpid='2000000000000035' )
-        s36 = self.addSwitch( 's36', dpid='2000000000000036' )
-        s37 = self.addSwitch( 's37', dpid='2000000000000037' )
-        s38 = self.addSwitch( 's38', dpid='2000000000000038' )
-        s39 = self.addSwitch( 's39', dpid='2000000000000039' )
-        s40 = self.addSwitch( 's40', dpid='2000000000000040' )
-        s41 = self.addSwitch( 's41', dpid='2000000000000041' )
-        s42 = self.addSwitch( 's42', dpid='2000000000000042' )
-        s43 = self.addSwitch( 's43', dpid='2000000000000043' )
-        s44 = self.addSwitch( 's44', dpid='2000000000000044' )
-        s45 = self.addSwitch( 's45', dpid='2000000000000045' )
-        s46 = self.addSwitch( 's46', dpid='2000000000000046' )
-        s47 = self.addSwitch( 's47', dpid='2000000000000047' )
-        s48 = self.addSwitch( 's48', dpid='2000000000000048' )
-        s49 = self.addSwitch( 's49', dpid='2000000000000049' )
-        s50 = self.addSwitch( 's50', dpid='2000000000000050' )
-        s51 = self.addSwitch( 's51', dpid='2000000000000051' )
-        s52 = self.addSwitch( 's52', dpid='2000000000000052' )
-        s53 = self.addSwitch( 's53', dpid='2000000000000053' )
-        s54 = self.addSwitch( 's54', dpid='2000000000000054' )
-        s55 = self.addSwitch( 's55', dpid='2000000000000055' )
-        s56 = self.addSwitch( 's56', dpid='2000000000000056' )
-        s57 = self.addSwitch( 's57', dpid='2000000000000057' )
-        s58 = self.addSwitch( 's58', dpid='2000000000000058' )
-        s59 = self.addSwitch( 's59', dpid='2000000000000059' )
-        s60 = self.addSwitch( 's60', dpid='2000000000000060' )
-        s61 = self.addSwitch( 's61', dpid='2000000000000061' )
-        s62 = self.addSwitch( 's62', dpid='2000000000000062' )
-        s63 = self.addSwitch( 's63', dpid='2000000000000063' )
-        s64 = self.addSwitch( 's64', dpid='2000000000000064' )
-        s65 = self.addSwitch( 's65', dpid='2000000000000065' )
-        s66 = self.addSwitch( 's66', dpid='2000000000000066' )
-        s67 = self.addSwitch( 's67', dpid='2000000000000067' )
-        s68 = self.addSwitch( 's68', dpid='2000000000000068' )
-        s69 = self.addSwitch( 's69', dpid='2000000000000069' )
-        s70 = self.addSwitch( 's70', dpid='2000000000000070' )
-        s71 = self.addSwitch( 's71', dpid='2000000000000071' )
-        s72 = self.addSwitch( 's72', dpid='2000000000000072' )
-        s73 = self.addSwitch( 's73', dpid='2000000000000073' )
-        s74 = self.addSwitch( 's74', dpid='2000000000000074' )
-        s75 = self.addSwitch( 's75', dpid='2000000000000075' )
-        s76 = self.addSwitch( 's76', dpid='2000000000000076' )
-        s77 = self.addSwitch( 's77', dpid='2000000000000077' )
-        s78 = self.addSwitch( 's78', dpid='2000000000000078' )
+        s15 = self.addSwitch( 's15' )
+        s16 = self.addSwitch( 's16' )
+        s17 = self.addSwitch( 's17' )
+        s18 = self.addSwitch( 's18' )
+        s19 = self.addSwitch( 's19' )
+        s20 = self.addSwitch( 's20' )
+        s21 = self.addSwitch( 's21' )
+        s22 = self.addSwitch( 's22' )
+        s23 = self.addSwitch( 's23' )
+        s24 = self.addSwitch( 's24' )
+        s25 = self.addSwitch( 's25' )
+        s26 = self.addSwitch( 's26' )
+        s27 = self.addSwitch( 's27' )
+        s28 = self.addSwitch( 's28' )
+        s29 = self.addSwitch( 's29' )
+        s30 = self.addSwitch( 's30' )
+        s31 = self.addSwitch( 's31' )
+        s32 = self.addSwitch( 's32' )
+        s33 = self.addSwitch( 's33' )
+        s34 = self.addSwitch( 's34' )
+        s35 = self.addSwitch( 's35' )
+        s36 = self.addSwitch( 's36' )
+        s37 = self.addSwitch( 's37' )
+        s38 = self.addSwitch( 's38' )
+        s39 = self.addSwitch( 's39' )
+        s40 = self.addSwitch( 's40' )
+        s41 = self.addSwitch( 's41' )
+        s42 = self.addSwitch( 's42' )
+        s43 = self.addSwitch( 's43' )
+        s44 = self.addSwitch( 's44' )
+        s45 = self.addSwitch( 's45' )
+        s46 = self.addSwitch( 's46' )
+        s47 = self.addSwitch( 's47' )
+        s48 = self.addSwitch( 's48' )
+        s49 = self.addSwitch( 's49' )
+        s50 = self.addSwitch( 's50' )
+        s51 = self.addSwitch( 's51' )
+        s52 = self.addSwitch( 's52' )
+        s53 = self.addSwitch( 's53' )
+        s54 = self.addSwitch( 's54' )
+        s55 = self.addSwitch( 's55' )
+        s56 = self.addSwitch( 's56' )
+        s57 = self.addSwitch( 's57' )
+        s58 = self.addSwitch( 's58' )
+        s59 = self.addSwitch( 's59' )
+        s60 = self.addSwitch( 's60' )
+        s61 = self.addSwitch( 's61' )
+        s62 = self.addSwitch( 's62' )
+        s63 = self.addSwitch( 's63' )
+        s64 = self.addSwitch( 's64' )
+        s65 = self.addSwitch( 's65' )
+        s66 = self.addSwitch( 's66' )
+        s67 = self.addSwitch( 's67' )
+        s68 = self.addSwitch( 's68' )
+        s69 = self.addSwitch( 's69' )
+        s70 = self.addSwitch( 's70' )
+        s71 = self.addSwitch( 's71' )
+        s72 = self.addSwitch( 's72' )
+        s73 = self.addSwitch( 's73' )
+        s74 = self.addSwitch( 's74' )
+        s75 = self.addSwitch( 's75' )
+        s76 = self.addSwitch( 's76' )
+        s77 = self.addSwitch( 's77' )
+        s78 = self.addSwitch( 's78' )
 
 
         # ... and now hosts
diff --git a/TestON/tests/SCPFscaleTopo/SCPFscaleTopo.params b/TestON/tests/SCPFscaleTopo/SCPFscaleTopo.params
index cd9390c..b906804 100755
--- a/TestON/tests/SCPFscaleTopo/SCPFscaleTopo.params
+++ b/TestON/tests/SCPFscaleTopo/SCPFscaleTopo.params
@@ -2,13 +2,13 @@
 
     # 1 - optional pull and build ONOS package
     # 2 - set cell and install ONOS
-    # 10 - start mininet and verify topo
-    # 11 - verify topo
+    # 10 - start mininet
+    # 11 - pingall and verify topo
     # 100 - balance master and bring onos node down
     # 200 - bring onos node up and balance masters
     # 1000 - report logs
 
-    <testcases>1,2,[10,100,11,200,11,1000]*3</testcases>
+    <testcases>1,2,[10,300,11,100,300,11,200,300,11,1000]*3</testcases>
 
     <DEPENDENCY>
         <path>/tests/SCPFscaleTopo/Dependency/</path>
@@ -34,33 +34,24 @@
 
     <SLEEP>
         <startup>15</startup>
-        <fwd>30</fwd>
         <balance>10</balance>
-        <nodeDown>10</nodeDown>
-        <nodeUp>10</nodeUp>
-        <pingall>3</pingall>
-        <stopMN>5</stopMN>
-        <startMN>5</startMN>
+        <nodeSleep>10</nodeSleep>
+        <pingall>15</pingall>
+        <MNsleep>5</MNsleep>
     </SLEEP>
 
     <TIMEOUT>
-        <pingall>240</pingall>
+        <pingall>2000</pingall>
     </TIMEOUT>
 
     <ATTEMPTS>
         <topoCmp>1</topoCmp>
-        <pingall>2</pingall>
+        <pingall>3</pingall>
     </ATTEMPTS>
 
     <TOPOLOGY>
         <topology>torus</topology>
-        <scale>5,10,20</scale>
+        <scale>3,5,10</scale>
     </TOPOLOGY>
 
-    <PINGALL>
-        <sleep>3</sleep>
-        <attempts>5</attempts>
-        <timeout>1000</timeout>
-    </PINGALL>
-
 </PARAMS>
diff --git a/TestON/tests/SCPFscaleTopo/SCPFscaleTopo.py b/TestON/tests/SCPFscaleTopo/SCPFscaleTopo.py
index 8664f21..fde3b1b 100644
--- a/TestON/tests/SCPFscaleTopo/SCPFscaleTopo.py
+++ b/TestON/tests/SCPFscaleTopo/SCPFscaleTopo.py
@@ -43,13 +43,10 @@
         main.topoCmpAttempts = int( main.params[ 'ATTEMPTS' ][ 'topoCmp' ] )
         main.pingallAttempts = int( main.params[ 'ATTEMPTS' ][ 'pingall' ] )
         main.startUpSleep = int( main.params[ 'SLEEP' ][ 'startup' ] )
-        main.fwdSleep = int( main.params[ 'SLEEP' ][ 'fwd' ] )
         main.balanceSleep = int( main.params[ 'SLEEP' ][ 'balance' ] )
-        main.nodeDownSleep = int( main.params[ 'SLEEP' ][ 'nodeDown' ] )
-        main.nodeUpSleep = int( main.params[ 'SLEEP' ][ 'nodeUp' ] )
+        main.nodeSleep = int( main.params[ 'SLEEP' ][ 'nodeSleep' ] )
         main.pingallSleep = int( main.params[ 'SLEEP' ][ 'pingall' ] )
-        main.stopMNSleep = int( main.params[ 'SLEEP' ][ 'stopMN' ] )
-        main.startMNSleep = int( main.params[ 'SLEEP' ][ 'startMN' ] )
+        main.MNSleep = int( main.params[ 'SLEEP' ][ 'MNsleep' ] )
         main.pingTimeout = int( main.params[ 'TIMEOUT' ][ 'pingall' ] )
         gitPull = main.params[ 'GIT' ][ 'pull' ]
         main.homeDir = os.path.expanduser('~')
@@ -242,7 +239,7 @@
         if len( main.topoScale ) < main.topoScaleSize:
             main.log.info( "Mininet is already running. Stopping mininet." )
             main.Mininet1.stopNet()
-            time.sleep(main.stopMNSleep)
+            time.sleep(main.MNSleep)
         else:
             main.log.info( "Mininet was not running" )
 
@@ -268,83 +265,7 @@
                                  onfail=main.topoName +
                                     " topology failed to start" )
 
-        time.sleep( main.startMNSleep )
-
-        main.step( "Pinging all hosts" )
-
-        for i in range(main.pingallAttempts):
-            pingResult = main.Mininet1.pingall(timeout=main.pingTimeout)
-            if not pingResult:
-                main.log.warn( "Pingall attempt: %s failed" % (i+1) )
-                time.sleep(main.pingallSleep)
-            else: break
-
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=pingResult,
-                                 onpass="Pingall successfull",
-                                 onfail="Pingall failed" )
-
-        main.log.info( "Gathering topology information" )
-        devicesResults = main.TRUE
-        linksResults = main.TRUE
-        hostsResults = main.TRUE
-
-        devices = main.topo.getAllDevices( main )
-        hosts = main.topo.getAllHosts( main )
-        ports = main.topo.getAllPorts( main )
-        links = main.topo.getAllLinks( main )
-        clusters = main.topo.getAllClusters( main )
-
-        mnSwitches = main.Mininet1.getSwitches()
-        mnLinks = main.Mininet1.getLinks()
-        mnHosts = main.Mininet1.getHosts()
-
-        main.step( "Comparing MN topology to ONOS topology" )
-
-        for controller in range(len(main.activeNodes)):
-            controllerStr = str( main.activeNodes[controller] + 1 )
-            if devices[ controller ] and ports[ controller ] and\
-                "Error" not in devices[ controller ] and\
-                "Error" not in ports[ controller ]:
-
-                currentDevicesResult = main.Mininet1.compareSwitches(
-                        mnSwitches,
-                        json.loads( devices[ controller ] ),
-                        json.loads( ports[ controller ] ) )
-            else:
-                currentDevicesResult = main.FALSE
-            utilities.assert_equals( expect=main.TRUE,
-                                     actual=currentDevicesResult,
-                                     onpass="ONOS" + controllerStr +
-                                     " Switches view is correct",
-                                     onfail="ONOS" + controllerStr +
-                                     " Switches view is incorrect" )
-
-            if links[ controller ] and "Error" not in links[ controller ]:
-                currentLinksResult = main.Mininet1.compareLinks(
-                        mnSwitches, mnLinks,
-                        json.loads( links[ controller ] ) )
-            else:
-                currentLinksResult = main.FALSE
-            utilities.assert_equals( expect=main.TRUE,
-                                     actual=currentLinksResult,
-                                     onpass="ONOS" + controllerStr +
-                                     " links view is correct",
-                                     onfail="ONOS" + controllerStr +
-                                     " links view is incorrect" )
-
-            if hosts[ controller ] or "Error" not in hosts[ controller ]:
-                currentHostsResult = main.Mininet1.compareHosts(
-                        mnHosts,
-                        json.loads( hosts[ controller ] ) )
-            else:
-                currentHostsResult = main.FALSE
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=currentHostsResult,
-                                 onpass="ONOS" + controllerStr +
-                                 " hosts exist in Mininet",
-                                 onfail="ONOS" + controllerStr +
-                                 " hosts don't match Mininet" )
+        time.sleep( main.MNSleep )
 
     def CASE11( self, main ):
         """
@@ -355,15 +276,13 @@
         main.case( "Verifying topology: TORUS %sx%s" % (main.currScale, main.currScale) )
         main.caseExplanation = "Pinging all hosts andcomparing topology " +\
                 "elements between Mininet and ONOS"
+
         main.step( "Pinging all hosts" )
-
-        for i in range(main.pingallAttempts):
-            pingResult = main.Mininet1.pingall(timeout=main.pingTimeout)
-            if not pingResult:
-                main.log.warn( "Pingall attempt: %s failed" % (i+1) )
-                time.sleep(main.pingallSleep)
-            else: break
-
+        pingResult = utilities.retry( main.Mininet1.pingall,
+                                      main.FALSE,
+                                      [main.pingTimeout],
+                                      sleep=main.pingallSleep,
+                                      attempts=main.pingallAttempts )
         utilities.assert_equals( expect=main.TRUE,
                                  actual=pingResult,
                                  onpass="Pingall successfull",
@@ -373,19 +292,16 @@
         devicesResults = main.TRUE
         linksResults = main.TRUE
         hostsResults = main.TRUE
-
         devices = main.topo.getAllDevices( main )
         hosts = main.topo.getAllHosts( main )
         ports = main.topo.getAllPorts( main )
         links = main.topo.getAllLinks( main )
         clusters = main.topo.getAllClusters( main )
-
         mnSwitches = main.Mininet1.getSwitches()
         mnLinks = main.Mininet1.getLinks()
         mnHosts = main.Mininet1.getHosts()
 
         main.step( "Comparing MN topology to ONOS topology" )
-
         for controller in range(len(main.activeNodes)):
             controllerStr = str( main.activeNodes[controller] + 1 )
             if devices[ controller ] and ports[ controller ] and\
@@ -442,54 +358,17 @@
                         "each controller has some devices and " +\
                         "stop ONOS node 3 service. "
 
-        main.step( "Balancing Masters" )
         stepResult = main.FALSE
-        if main.activeNodes:
-            controller = main.activeNodes[0]
-            stepResult = main.CLIs[controller].balanceMasters()
-        else: main.log.error( "List of active nodes is empty" )
-
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=stepResult,
-                                 onpass="Balance masters was successfull",
-                                 onfail="Failed to balance masters")
-
-        time.sleep(main.balanceSleep)
-
-        main.step( "Pinging all hosts" )
-
-        for i in range(main.pingallAttempts):
-            pingResult = main.Mininet1.pingall(timeout=main.pingTimeout)
-            if not pingResult:
-                main.log.warn( "Pingall attempt: %s failed" % (i+1) )
-                time.sleep(main.pingallSleep)
-            else: break
-
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=pingResult,
-                                 onpass="Pingall successfull",
-                                 onfail="Pingall failed" )
-
         main.step( "Bringing down node 3" )
-
         # Always bring down the third node
         main.deadNode = 2
-
         # Printing purposes
         node = main.deadNode + 1
-
         main.log.info( "Stopping node %s" % node )
         stepResult = main.ONOSbench.onosStop( main.ONOSip[ main.deadNode ] )
-
         main.log.info( "Removing dead node from list of active nodes" )
         main.activeNodes.pop( main.deadNode )
 
-        utilities.assert_equals( expect=main.TRUE,
-                             actual=stepResult,
-                             onpass="Successfully brought down onos node %s" % node,
-                             onfail="Failed to bring down onos node %s" % node )
-
-        time.sleep(main.nodeDownSleep)
 
 
     def CASE200( self, main ):
@@ -501,10 +380,8 @@
         main.caseExplanation = "Bring node 3 back up and balance the masters"
 
         node = main.deadNode + 1
-
         main.log.info( "Starting node %s" % node )
         stepResult = main.ONOSbench.onosStart( main.ONOSip[ main.deadNode ] )
-
         main.log.info( "Starting onos cli" )
         stepResult = stepResult and main.CLIs[ main.deadNode ].startOnosCli( main.ONOSip[ main.deadNode ] )
 
@@ -517,29 +394,29 @@
                                  onfail="Failed to bring up onos node %s" % node )
 
 
-        time.sleep(main.nodeUpSleep)
+        time.sleep(main.nodeSleep)
+
+    def CASE300( self, main ):
+        '''
+
+            Balancing Masters
+        '''
 
         main.step( "Balancing Masters" )
+
         stepResult = main.FALSE
         if main.activeNodes:
             controller = main.activeNodes[0]
             stepResult = main.CLIs[controller].balanceMasters()
-        else: main.log.error( "List of active nodes is empty" )
-
+        else:
+            main.log.error( "List of active nodes is empty" )
+        main.step( "Balancing Masters" )
         utilities.assert_equals( expect=main.TRUE,
                                  actual=stepResult,
                                  onpass="Balance masters was successfull",
                                  onfail="Failed to balance masters")
-
         time.sleep(main.balanceSleep)
 
-        for i in range(main.pingallAttempts):
-            pingResult = main.Mininet1.pingall(timeout=main.pingTimeout)
-            if not pingResult:
-                main.log.warn( "Pingall attempt: %s failed" % (i+1) )
-                time.sleep(main.pingallSleep)
-            else: break
-
     def CASE1000( self, main ):
         '''
             Report errors/warnings/exceptions
diff --git a/TestON/tests/USECASE_SdnipFunctionCluster_fsfw/USECASE_SdnipFunctionCluster_fsfw.py b/TestON/tests/USECASE_SdnipFunctionCluster_fsfw/USECASE_SdnipFunctionCluster_fsfw.py
index 15bdd8c..782110c 100644
--- a/TestON/tests/USECASE_SdnipFunctionCluster_fsfw/USECASE_SdnipFunctionCluster_fsfw.py
+++ b/TestON/tests/USECASE_SdnipFunctionCluster_fsfw/USECASE_SdnipFunctionCluster_fsfw.py
@@ -338,6 +338,10 @@
         main.step( "Bring down the link between sw32 and peer64514" )
         linkResult1 = main.Mininet.link( END1 = "sw32", END2 = "pr64514",
                                          OPTION = "down" )
+        # When bring down a link, Mininet will bring down both the interfaces
+        # at the two sides of the link. Here we do not want to bring down the
+        # host side interface, since I noticed when bring up in CASE6, some of
+        # the configuration information will lost.
         utilities.assertEquals( expect = main.TRUE,
                                 actual = linkResult1,
                                 onpass = "Bring down link succeeded!",
@@ -561,12 +565,13 @@
             onpass = "Starting switch succeeded!",
             onfail = "Starting switch failed!" )
 
-        result2 = main.Mininet.assignSwController( "sw32", ONOS1Ip )
+        result2 = main.Mininet.assignSwController( "sw32", fsfwIp,
+                                                   port = fsfwPort )
         utilities.assertEquals( \
             expect = main.TRUE,
             actual = result2,
-            onpass = "Connect switch to ONOS succeeded!",
-            onfail = "Connect switch to ONOS failed!" )
+            onpass = "Connect switch to FSFW succeeded!",
+            onfail = "Connect switch to FSFW failed!" )
 
         if result1 and result2:
             time.sleep( int( main.params[ 'timers' ][ 'RouteDelivery' ] ) )
@@ -666,10 +671,11 @@
         utilities.assertEquals( expect = main.TRUE, actual = result1,
                                 onpass = "Starting switch succeeded!",
                                 onfail = "Starting switch failed!" )
-        result2 = main.Mininet.assignSwController( "sw11", ONOS1Ip )
+        result2 = main.Mininet.assignSwController( "sw11", fsfwIp,
+                                                   port = fsfwPort )
         utilities.assertEquals( expect = main.TRUE, actual = result2,
-                                onpass = "Connect switch to ONOS succeeded!",
-                                onfail = "Connect switch to ONOS failed!" )
+                                onpass = "Connect switch to FSFW succeeded!",
+                                onfail = "Connect switch to FSFW failed!" )
         if result1 and result2:
             time.sleep( int( main.params[ 'timers' ][ 'RouteDelivery' ] ) )
             main.Functions.checkRouteNum( main, 3 )
diff --git a/TestON/tests/USECASE_SdnipFunction_fsfw/USECASE_SdnipFunction_fsfw.py b/TestON/tests/USECASE_SdnipFunction_fsfw/USECASE_SdnipFunction_fsfw.py
index e7c5f9d..9a2144e 100644
--- a/TestON/tests/USECASE_SdnipFunction_fsfw/USECASE_SdnipFunction_fsfw.py
+++ b/TestON/tests/USECASE_SdnipFunction_fsfw/USECASE_SdnipFunction_fsfw.py
@@ -539,12 +539,13 @@
             onpass = "Starting switch succeeded!",
             onfail = "Starting switch failed!" )
 
-        result2 = main.Mininet.assignSwController( "sw32", fsfwIp )
+        result2 = main.Mininet.assignSwController( "sw32", fsfwIp,
+                                                   port = fsfwPort )
         utilities.assertEquals( \
             expect = main.TRUE,
             actual = result2,
-            onpass = "Connect switch to ONOS succeeded!",
-            onfail = "Connect switch to ONOS failed!" )
+            onpass = "Connect switch to FSFW succeeded!",
+            onfail = "Connect switch to FSFW failed!" )
 
         if result1 and result2:
             time.sleep( int( main.params[ 'timers' ][ 'RouteDelivery' ] ) )
@@ -638,10 +639,11 @@
         utilities.assertEquals( expect = main.TRUE, actual = result1,
                                 onpass = "Starting switch succeeded!",
                                 onfail = "Starting switch failed!" )
-        result2 = main.Mininet.assignSwController( "sw11", fsfwIp )
+        result2 = main.Mininet.assignSwController( "sw11", fsfwIp,
+                                                   port = fsfwPort )
         utilities.assertEquals( expect = main.TRUE, actual = result2,
-                                onpass = "Connect switch to ONOS succeeded!",
-                                onfail = "Connect switch to ONOS failed!" )
+                                onpass = "Connect switch to FSFW succeeded!",
+                                onfail = "Connect switch to FSFW failed!" )
         if result1 and result2:
             time.sleep( int( main.params[ 'timers' ][ 'RouteDelivery' ] ) )
             main.Functions.checkRouteNum( main, 3 )