Merge pull request #1 from opennetworkinglab/master

pull latest code
diff --git a/.gitignore b/.gitignore
index 6cccacc..ae5f64f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 *.swp
+*.swo
 TestON/logs/*
 *.pyc
diff --git a/README.md b/README.md
index 5986719..ef2c912 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,12 @@
 TestON is the testing platform that all the ONOS tests are being run on currently. 
 
 
-Setup 
+Code Style
+-------------
+At ON.Lab, we have adopted the [Mininet Python style](https://github.com/mininet/mininet/wiki/Mininet-Python-Style) for our drivers and testcases. The one exception is that TestON does not correctly parse multiline comments in testcases when the ending triple double quotes are on the same line as the comment. Therefore, in the testcases, the ending triple double quotes must be on it's own line.
+
+
+Setup
 -------------
 
 0. Pull the git repo from https://github.com/OPENNETWORKINGLAB/ONLabTest.git 
diff --git a/TestON/core/testparser.py b/TestON/core/testparser.py
index f158259..37f50f0 100644
--- a/TestON/core/testparser.py
+++ b/TestON/core/testparser.py
@@ -96,7 +96,7 @@
                 if step == 0 :
                     i = 0
                     block = ''
-                    while i <= index :
+                    while i < index :
                         block += caseStatements[i]
                         i = i + 1
                     stepCode[step] = block   
diff --git a/TestON/dependencies/Jenkins_getresult_HA.py b/TestON/dependencies/Jenkins_getresult_HA.py
new file mode 100755
index 0000000..f3ea459
--- /dev/null
+++ b/TestON/dependencies/Jenkins_getresult_HA.py
@@ -0,0 +1,117 @@
+#!/usr/bin/env python
+
+import sys
+import os
+import re
+import datetime
+import time
+import argparse
+import shutil
+
+parser = argparse.ArgumentParser()
+parser.add_argument("-n", "--name", help="Comma Separated string of test names. Ex: --name='test1, test2, test3'")
+parser.add_argument("-w", "--workspace", help="The name of the Jenkin's job/workspace where csv files will be saved'")
+args = parser.parse_args()
+
+#Pass in test names as a comma separated string argument. 
+#Example: ./Jenkins_getresult.py "Test1,Test2,Test3,Test4"
+name_list = args.name.split(",")
+result_list = map(lambda x: x.strip(), name_list)
+job = args.workspace
+if job is None:
+    job = ""
+print job
+
+#NOTE: testnames list should be in order in which it is run
+testnames = result_list
+output = ''
+header = ''
+graphs = ''
+testdate = datetime.datetime.now()
+#workspace = "/var/lib/jenkins/workspace/ONOS-HA"
+workspace = "/var/lib/jenkins/workspace/"
+workspace = workspace + job
+
+header +="<p>**************************************</p>"
+header +=testdate.strftime('Jenkins test result for %H:%M on %b %d, %Y. %Z')
+
+
+#NOTE: CASE SPECIFIC THINGS
+
+#THIS LINE IS LOUSY FIXME
+if any("HA" in s for s in testnames):
+    ##Graphs
+    graphs += '<ac:structured-macro ac:name="html">\n'
+    graphs += '<ac:plain-text-body><![CDATA[\n'
+    graphs += '<iframe src="https://onos-jenkins.onlab.us/job/'+job+'/plot/getPlot?index=2&width=500&height=300" noborder="0" width="500" height="300" scrolling="yes" seamless="seamless"></iframe>\n'
+    graphs += '<iframe src="https://onos-jenkins.onlab.us/job/'+job+'/plot/getPlot?index=1&width=500&height=300" noborder="0" width="500" height="300" scrolling="yes" seamless="seamless"></iframe>\n'
+    graphs += '<iframe src="https://onos-jenkins.onlab.us/job/'+job+'/plot/getPlot?index=0&width=500&height=300" noborder="0" width="500" height="300" scrolling="yes" seamless="seamless"></iframe>\n'
+    graphs += '<iframe src="https://onos-jenkins.onlab.us/job/'+job+'/plot/getPlot?index=3&width=500&height=300" noborder="0" width="500" height="300" scrolling="yes" seamless="seamless"></iframe>\n'
+    graphs += ']]></ac:plain-text-body>\n'
+    graphs += '</ac:structured-macro>\n'
+    header +="<p> <a href='https://wiki.onosproject.org/display/OST/Test+Plan+-+HA'>Test Plan for HA Test Cases</a></p>"
+
+
+# ***
+
+
+#TestON reporting
+for test in testnames:
+    passes = 0
+    fails = 0
+    name = os.popen("ls /home/admin/ONLabTest/TestON/logs/ -rt | grep %s_ | tail -1" % test).read().split()[0]
+    path = "/home/admin/ONLabTest/TestON/logs/" + name + "/"
+    try:
+        #IF exists, move the csv file to the workspace
+        shutil.copy(path + test + ".csv", workspace)
+    except IOError:
+        #File probably doesn't exist
+        pass
+
+    output +="<p></p>"
+    #output +="   Date: %s, %s %s" % (name.split("_")[2], name.split("_")[1], name.split("_")[3]) + "<p>*******************<p>"
+    #Open the latest log folder 
+    output += "<h2>Test "+str(test)+"</h2><p>************************************</p>"
+
+    f = open(path + name + ".rpt")
+
+    #Parse through each line of logs and look for specific strings to output to wiki.
+    #NOTE: with current implementation, you must specify which output to output to wiki by using
+    #main.log.report("") since it is looking for the [REPORT] tag in the logs
+    for line in f:
+        if re.search("Result summary for Testcase", line):
+            output += "<h3>"+str(line)+"</h3>"
+            #output += "<br>"
+        if re.search("\[REPORT\]", line): 
+            line_split = line.split("] ")
+            #line string is split by bracket, and first two items (log tags) in list are omitted from output
+            #join is used to convert list to string
+            line_str = ''.join(line_split[2:])
+            output += "<p>"
+            output += line_str
+            output += "</p>"
+        if re.search("Result:", line):
+            output += "<p>"
+            output += line
+            output += "</p>"
+            if re.search("Pass", line):
+                passes = passes + 1
+            elif re.search("Fail", line):
+                fails = fails + 1
+    f.close()
+    #https://wiki.onosproject.org/display/OST/Test+Results+-+HA#Test+Results+-+HA
+    #Example anchor on new wiki:        #TestResults-HA-TestHATestSanity
+    page_name = "TestResults-HA-Test"
+
+    header += "<li><a href=\'#" + str(page_name) + str(test) + "\'> " + str(test) + " - Results: " + str(passes) + " Passed, " + str(fails) + " Failed</a></li>"
+
+    #*********************
+    #include any other phrase specific to case you would like to include in wiki here
+    if test == "IntentPerf":
+        output += "URL to Historical Performance results data: <a href='http://10.128.5.54perf.html'>Perf Graph</a>"
+    #*********************
+
+#header_file = open("/tmp/header_ha.txt",'w')
+#header_file.write(header)
+output = header + graphs + output
+print output
diff --git a/TestON/drivers/common/cli/.onosclidriver.py.swo b/TestON/drivers/common/cli/.onosclidriver.py.swo
deleted file mode 100644
index 87ea889..0000000
--- a/TestON/drivers/common/cli/.onosclidriver.py.swo
+++ /dev/null
Binary files differ
diff --git a/TestON/drivers/common/cli/emulator/lincoedriver.py b/TestON/drivers/common/cli/emulator/lincoedriver.py
index d275df0..a82cfa4 100644
--- a/TestON/drivers/common/cli/emulator/lincoedriver.py
+++ b/TestON/drivers/common/cli/emulator/lincoedriver.py
@@ -53,8 +53,8 @@
         self.name = self.options[ 'name' ]
         self.handle = \
             super( LincOEDriver, self ).connect(
-                userName=self.userName,
-                ipAddress=self.ipAddress,
+                user_name=self.user_name,
+                ip_address=self.ip_address,
                 port=None,
                 pwd=self.pwd )
 
@@ -73,7 +73,7 @@
         else:
             main.log.error( self.name +
                             ": Connection failed to the host " +
-                            self.userName + "@" + self.ipAddress )
+                            self.user_name + "@" + self.ip_address )
             main.log.error( self.name +
                             ": Failed to connect to Linc-OE" )
             return main.FALSE
@@ -94,9 +94,9 @@
             main.log.error(
                 self.name +
                 ": Connection failed to the host " +
-                self.userName +
+                self.user_name +
                 "@" +
-                self.ipAddress )
+                self.ip_address )
             main.log.error( self.name +
                             ": Failed to connect to Linc-OE" )
             return main.FALSE
@@ -129,7 +129,7 @@
             main.exit()
         except:
             main.log.info( self.name + " :::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " :::::::" )
             main.cleanup()
             main.exit()
@@ -155,7 +155,7 @@
             main.exit()
         except:
             main.log.info( self.name + " :::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " :::::::" )
             main.cleanup()
             main.exit()
@@ -177,7 +177,7 @@
             main.exit()
         except:
             main.log.info( self.name + " :::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " :::::::" )
             main.cleanup()
             main.exit()
@@ -199,7 +199,7 @@
             main.exit()
         except:
             main.log.info( self.name + " :::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " :::::::" )
             main.cleanup()
             main.exit()
@@ -222,7 +222,7 @@
             main.exit()
         except:
             main.log.info( self.name + " :::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " :::::::" )
             main.cleanup()
             main.exit()
@@ -244,7 +244,7 @@
             main.exit()
         except:
             main.log.info( self.name + " :::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " :::::::" )
             main.cleanup()
             main.exit()
@@ -267,7 +267,7 @@
             main.exit()
         except:
             main.log.info( self.name + " :::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " :::::::" )
             main.cleanup()
             main.exit()
@@ -290,7 +290,7 @@
             main.exit()
         except:
             main.log.info( self.name + " :::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " :::::::" )
             main.cleanup()
             main.exit()
@@ -337,7 +337,7 @@
             main.exit()
         except:
             main.log.info( self.name + " :::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " :::::::" )
             main.cleanup()
             main.exit()
diff --git a/TestON/drivers/common/cli/emulator/mininetclidriver.py b/TestON/drivers/common/cli/emulator/mininetclidriver.py
index 7032dff..a45ed20 100644
--- a/TestON/drivers/common/cli/emulator/mininetclidriver.py
+++ b/TestON/drivers/common/cli/emulator/mininetclidriver.py
@@ -66,8 +66,8 @@
         self.handle = super(
             MininetCliDriver,
             self ).connect(
-            userName=self.userName,
-            ipAddress=self.ipAddress,
+            user_name=self.user_name,
+            ip_address=self.ip_address,
             port=None,
             pwd=self.pwd )
 
@@ -148,9 +148,9 @@
             main.log.error(
                 self.name +
                 ": Connection failed to the host " +
-                self.userName +
+                self.user_name +
                 "@" +
-                self.ipAddress )
+                self.ip_address )
             main.log.error( self.name + ": Failed to connect to the Mininet" )
             return main.FALSE
 
@@ -882,7 +882,7 @@
             main.exit()
         except:
             main.log.info( self.name + ":" * 50 )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( ":" * 50 )
             main.cleanup()
             main.exit()
@@ -1250,7 +1250,7 @@
             main.exit()
         except:
             main.log.info( self.name + ":" * 50 )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( ":" * 50 )
             main.cleanup()
             main.exit()
@@ -1269,7 +1269,7 @@
             main.exit()
         except:
             main.log.info( self.name + ":" * 50 )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( ":" * 50 )
             main.cleanup()
             main.exit()
@@ -1492,9 +1492,9 @@
         else:
             linkResults = main.FALSE
             main.log.report(
-                "Mininet has %i bidirectional links and " +
-                "ONOS has %i unidirectional links" %
-                ( len( mnLinks ), len( onos ) ) )
+                "Mininet has " + str( len( mnLinks ) ) +
+                " bidirectional links and ONOS has " +
+                str( len( onos ) ) + " unidirectional links" )
 
         # iterate through MN links and check if an ONOS link exists in
         # both directions
diff --git a/TestON/drivers/common/cli/emulator/remotemininetdriver.py b/TestON/drivers/common/cli/emulator/remotemininetdriver.py
index e2e00e1..e15e53c 100644
--- a/TestON/drivers/common/cli/emulator/remotemininetdriver.py
+++ b/TestON/drivers/common/cli/emulator/remotemininetdriver.py
@@ -44,7 +44,7 @@
         self.flag = 0
 
     def connect( self, **connectargs ):
-        """,userName, ipAddress, pwd,options ):
+        """,user_name, ip_address, pwd,options ):
          Here the main is the TestON instance after creating all the log
          handles."""
         for key in connectargs:
@@ -54,8 +54,8 @@
         self.handle = super(
             RemoteMininetDriver,
             self ).connect(
-            userName=self.userName,
-            ipAddress=self.ipAddress,
+            user_name=self.user_name,
+            ip_address=self.ip_address,
             port=None,
             pwd=self.pwd )
 
@@ -68,9 +68,9 @@
         else:
             main.log.error(
                 "Connection failed to the host " +
-                self.userName +
+                self.user_name +
                 "@" +
-                self.ipAddress )
+                self.ip_address )
             main.log.error( "Failed to connect to the Mininet" )
             return main.FALSE
 
@@ -326,7 +326,7 @@
         except:
             main.log.info(
                     self.name + ":" * 60 )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( ":" * 80 )
             main.cleanup()
             main.exit()
@@ -346,7 +346,7 @@
         except:
             main.log.info(
                     self.name + ":" * 60 )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( ":" * 80 )
             main.cleanup()
             main.exit()
@@ -577,7 +577,7 @@
                             self.name +
                             ": Timeout exception in setIpTables function" )
                     except:
-                        main.log.error( traceback.printExc() )
+                        main.log.error( traceback.print_exc() )
                         main.cleanup()
                         main.exit()
                 else:
@@ -620,7 +620,7 @@
                             self.name +
                             ": Timeout exception in setIpTables function" )
                     except:
-                        main.log.error( traceback.printExc() )
+                        main.log.error( traceback.print_exc() )
                         main.cleanup()
                         main.exit()
                 else:
diff --git a/TestON/drivers/common/cli/onosclidriver.py b/TestON/drivers/common/cli/onosclidriver.py
index abe064f..097a303 100644
--- a/TestON/drivers/common/cli/onosclidriver.py
+++ b/TestON/drivers/common/cli/onosclidriver.py
@@ -47,8 +47,8 @@
 
             self.name = self.options[ 'name' ]
             self.handle = super( OnosCliDriver, self ).connect(
-                userName=self.userName,
-                ipAddress=self.ipAddress,
+                user_name=self.user_name,
+                ip_address=self.ip_address,
                 port=self.port,
                 pwd=self.pwd,
                 home=self.home )
@@ -201,8 +201,8 @@
                 main.log.info( str( ONOSIp ) + " CLI Started successfully" )
                 if karafTimeout:
                     self.handle.sendline(
-                        "config:property-set -p org.apache.karaf.shel\
-                                l sshIdleTimeout " +
+                        "config:property-set -p org.apache.karaf.shell\
+                                 sshIdleTimeout " +
                         karafTimeout )
                     self.handle.expect( "\$" )
                     self.handle.sendline( "onos -w " + str( ONOSIp ) )
@@ -261,20 +261,22 @@
                                   + cmdStr + "'\"" )
             self.handle.expect( "onos>" )
             self.handle.sendline( cmdStr )
-            self.handle.expect( cmdStr )
             self.handle.expect( "onos>" )
-
-            handle = self.handle.before
-
-            self.handle.sendline( "" )
-            self.handle.expect( "onos>" )
-
             main.log.info( "Command '" + str( cmdStr ) + "' sent to "
                            + self.name + "." )
+
+            handle = self.handle.before
+            # Remove control strings from output
             ansiEscape = re.compile( r'\x1b[^m]*m' )
             handle = ansiEscape.sub( '', handle )
+            #Remove extra return chars that get added
+            handle = re.sub(  r"\s\r", "", handle )
+            handle = handle.strip()
+            # parse for just the output, remove the cmd from handle
+            output = handle.split( cmdStr, 1 )[1]
 
-            return handle
+
+            return output
         except pexpect.EOF:
             main.log.error( self.name + ": EOF exception found" )
             main.log.error( self.name + ":    " + self.handle.before )
@@ -866,9 +868,14 @@
             cmdStr = "add-host-intent " + str( hostIdOne ) +\
                 " " + str( hostIdTwo )
             handle = self.sendline( cmdStr )
-            main.log.info( "Host intent installed between " +
+            if re.search( "Error", handle ):
+                main.log.error( "Error in adding Host intent" )
+                return handle
+            else:
+                main.log.info( "Host intent installed between " +
                            str( hostIdOne ) + " and " + str( hostIdTwo ) )
-            return handle
+                return main.TRUE
+
         except pexpect.EOF:
             main.log.error( self.name + ": EOF exception found" )
             main.log.error( self.name + ":    " + self.handle.before )
diff --git a/TestON/drivers/common/cli/onosdriver.py b/TestON/drivers/common/cli/onosdriver.py
index 5eae84d..a9a5a03 100644
--- a/TestON/drivers/common/cli/onosdriver.py
+++ b/TestON/drivers/common/cli/onosdriver.py
@@ -48,8 +48,8 @@
 
             self.name = self.options[ 'name' ]
             self.handle = super( OnosDriver, self ).connect(
-                userName=self.userName,
-                ipAddress=self.ipAddress,
+                user_name=self.user_name,
+                ip_address=self.ip_address,
                 port=self.port,
                 pwd=self.pwd,
                 home=self.home )
@@ -68,7 +68,7 @@
             main.exit()
         except:
             main.log.info( self.name + ":" * 30 )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( ":" * 30 )
             main.cleanup()
             main.exit()
@@ -215,7 +215,7 @@
             main.exit()
         except:
             main.log.info( self.name + ":" * 60 )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( ":" * 60 )
             main.cleanup()
             main.exit()
@@ -323,7 +323,7 @@
             main.exit()
         except:
             main.log.info( self.name + ":" * 60 )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( ":" * 80 )
             main.cleanup()
             main.exit()
@@ -438,7 +438,7 @@
             main.exit()
         except:
             main.log.info( self.name + ":" * 60 )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( ":" * 80 )
             main.cleanup()
             main.exit()
@@ -449,9 +449,6 @@
                 by Jenkins data collecter.
         """
         try:
-            self.handle.sendline( "export TERM=xterm-256color" )
-            self.handle.expect( "xterm-256color" )
-            self.handle.expect( "\$" )
             self.handle.sendline( "" )
             self.handle.expect( "\$" )
             self.handle.sendline(
@@ -491,7 +488,7 @@
             main.exit()
         except:
             main.log.info( self.name + ":" * 60 )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( ":" * 80 )
             main.cleanup()
             main.exit()
@@ -576,7 +573,7 @@
             main.exit()
         except:
             main.log.info( self.name + ":::::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( ":::::::" )
             main.cleanup()
             main.exit()
@@ -615,7 +612,7 @@
             main.exit()
         except:
             main.log.info( self.name + " ::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " ::::::" )
             main.cleanup()
             main.exit()
@@ -650,7 +647,7 @@
             main.exit()
         except:
             main.log.info( self.name + " ::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " ::::::" )
             main.cleanup()
             main.exit()
@@ -711,7 +708,7 @@
             main.exit()
         except:
             main.log.info( self.name + " ::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " ::::::" )
             main.cleanup()
             main.exit()
@@ -766,7 +763,7 @@
             main.exit()
         except:
             main.log.info( self.name + " ::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " ::::::" )
             main.cleanup()
             main.exit()
@@ -804,7 +801,7 @@
             main.exit()
         except:
             main.log.info( self.name + " ::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " ::::::" )
             main.cleanup()
             main.exit()
@@ -842,7 +839,7 @@
             main.exit()
         except:
             main.log.info( self.name + " ::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " ::::::" )
             main.cleanup()
             main.exit()
@@ -871,7 +868,7 @@
             main.exit()
         except:
             main.log.info( self.name + " ::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " ::::::" )
             main.cleanup()
             main.exit()
@@ -904,7 +901,7 @@
             main.exit()
         except:
             main.log.info( self.name + " ::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " ::::::" )
             main.cleanup()
             main.exit()
@@ -950,7 +947,7 @@
             main.exit()
         except:
             main.log.info( self.name + " ::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " ::::::" )
             main.cleanup()
             main.exit()
@@ -987,7 +984,7 @@
             main.exit()
         except:
             main.log.info( self.name + " ::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " ::::::" )
             main.cleanup()
             main.exit()
@@ -1026,7 +1023,7 @@
             main.exit()
         except:
             main.log.info( self.name + " ::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " ::::::" )
             main.cleanup()
             main.exit()
@@ -1060,7 +1057,7 @@
             main.exit()
         except:
             main.log.info( self.name + " ::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " ::::::" )
             main.cleanup()
             main.exit()
@@ -1124,7 +1121,7 @@
             main.exit()
         except:
             main.log.info( self.name + " ::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " ::::::" )
             main.cleanup()
             main.exit()
@@ -1172,7 +1169,7 @@
             main.exit()
         except:
             main.log.info( self.name + " ::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " ::::::" )
             main.cleanup()
             main.exit()
@@ -1242,7 +1239,7 @@
             main.exit()
         except:
             main.log.info( self.name + " ::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " ::::::" )
             main.cleanup()
             main.exit()
@@ -1367,7 +1364,7 @@
             main.exit()
         except:
             main.log.info( self.name + " ::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " ::::::" )
             main.cleanup()
             main.exit()
@@ -1429,7 +1426,7 @@
         except:
             main.log.error( "Copying files failed" )
             main.log.info( self.name + " ::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " ::::::" )
 
     def checkLogs( self, onosIp ):
@@ -1451,7 +1448,7 @@
         except:
             main.log.error( "Some error in check_logs:" )
             main.log.info( self.name + " ::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " ::::::" )
 
     def onosStatus( self, node="" ):
@@ -1485,7 +1482,7 @@
             main.exit()
         except:
             main.log.info( self.name + " ::::::" )
-            main.log.error( traceback.printExc() )
+            main.log.error( traceback.print_exc() )
             main.log.info( self.name + " ::::::" )
             main.cleanup()
             main.exit()
diff --git a/TestON/drivers/common/clidriver.py b/TestON/drivers/common/clidriver.py
index c3ab968..1b8998b 100644
--- a/TestON/drivers/common/clidriver.py
+++ b/TestON/drivers/common/clidriver.py
@@ -64,8 +64,7 @@
                 self.user_name +
                 '@' +
                 self.ip_address,
-                env={
-                    "TERM": "vt100" },
+                env={ "TERM": "xterm-mono" },
                 maxread=50000 )
         else:
             self.handle = pexpect.spawn(
@@ -73,6 +72,7 @@
                 self.user_name +
                 '@' +
                 self.ip_address,
+                env={ "TERM": "xterm-mono" },
                 maxread=1000000,
                 timeout=60 )
 
diff --git a/TestON/lib/Mininet/INSTALL b/TestON/lib/Mininet/INSTALL
deleted file mode 100644
index d3e4695..0000000
--- a/TestON/lib/Mininet/INSTALL
+++ /dev/null
@@ -1,123 +0,0 @@
-
-Mininet Installation/Configuration Notes
-----------------------------------------
-
-Mininet 2.0.0
----
-
-The supported installation methods for Mininet are 1) using a
-pre-built VM image, and 2) native installation on Ubuntu. You can also
-easily create your own Mininet VM image (4).
-
-(Other distributions may be supported in the future - if you would
-like to contribute an installation script, we would welcome it!)
-
-1. Easiest "installation" - use our pre-built VM image!
-
-   The easiest way to get Mininet running is to start with one of our
-   pre-built virtual machine images from <http://openflow.org/mininet>
-
-   Boot up the VM image, log in, and follow the instructions on the
-   Mininet web site.
-
-   One advantage of using the VM image is that it doesn't mess with
-   your native OS installation or damage it in any way.
-
-   Although a single Mininet instance can simulate multiple networks
-   with multiple controllers, only one Mininet instance may currently
-   be run at a time, and Mininet requires root access in the machine
-   it's running on.  Therefore, if you have a multiuser system, you
-   may wish to consider running Mininet in a VM.
-
-2. Next-easiest option: use our Ubuntu package!
-
-   To install Mininet itself (i.e. `mn` and the Python API) on Ubuntu
-   12.10+:
-
-        sudo apt-get install mininet
-
-   Note: if you are upgrading from an older version of Mininet, make
-   sure you remove the old OVS from `/usr/local`:
-
-        sudo rm /usr/local/bin/ovs*
-        sudo rm /usr/local/sbin/ovs*
-
-3. Native installation from source on Ubuntu 11.10+
-
-   If you're reading this, you've probably already done so, but the
-   command to download the Mininet source code is:
-
-        git clone git://github.com/mininet/mininet.git
-
-   If you are running Ubuntu, you may be able to use our handy
-   `install.sh` script, which is in `mininet/util`.
-
-   *WARNING: USE AT YOUR OWN RISK!*
-
-   `install.sh` is a bit intrusive and may possibly damage your OS
-   and/or home directory, by creating/modifying several directories
-   such as `mininet`, `openflow`, `oftest`, `pox`, or `noxcosre`.
-   Although we hope it won't do anything completely terrible, you may
-   want to look at the script before you run it, and you should make
-   sure your system and home directory are backed up just in case!
-
-   To install Mininet itself, the OpenFlow reference implementation, and
-   Open vSwitch, you may use:
-
-        mininet/util/install.sh -fnv
-
-   This should be reasonably quick, and the following command should
-   work after the installation:
-
-        sudo mn --test pingall
-
-   To install ALL of the software which we use for OpenFlow tutorials,
-   including POX, the OpenFlow WireShark dissector, the `oftest`
-   framework, and other potentially useful software (and to add some
-   stuff to `/etc/sysctl.conf` which may or may not be useful) you may
-   use:
-
-        mininet/util/install.sh -a
-
-   This takes about 4 minutes on our test system.
-
-4. Creating your own Mininet/OpenFlow tutorial VM
-
-   Creating your own Ubuntu Mininet VM for use with the OpenFlow tutorial
-   is easy! First, create a new Ubuntu VM. Next, run two commands in it:
-
-        wget https://raw.github.com/mininet/mininet/master/util/vm/install-mininet-vm.sh
-        time install-mininet-vm.sh
-
-   Finally, verify that Mininet is installed and working in the VM:
-
-        sudo mn --test pingall
-
-5. Installation on other Linux distributions
-
-   Although we don't support other Linux distributions directly, it
-   should be possible to install and run Mininet with some degree of
-   manual effort.
-
-   In general, you must have:
-
-   * A Linux kernel compiled with network namespace support enabled
-
-   * An OpenFlow implementation (either the reference user or kernel
-     space implementations, or Open vSwitch.) Appropriate kernel
-     modules (e.g. tun and ofdatapath for the reference kernel
-     implementation) must be loaded.
-
-   * Python, `bash`, `ping`, `iperf`, etc.`
-
-   * Root privileges (required for network device access)
-
-   We encourage contribution of patches to the `install.sh` script to
-   support other Linux distributions.
-
-
-Good luck!
-
-Mininet Team
-
----
diff --git a/TestON/tests/FuncNext13/FuncNext13.params b/TestON/tests/FuncNext13/FuncNext13.params
new file mode 100755
index 0000000..13a4691
--- /dev/null
+++ b/TestON/tests/FuncNext13/FuncNext13.params
@@ -0,0 +1,37 @@
+<PARAMS>
+    
+    <testcases>1,4,5,3</testcases>
+
+    #Environment variables
+    <ENV>
+        <cellName>driver_test</cellName>
+    </ENV>
+
+    <CTRL>
+        <ip1>10.128.20.11</ip1>
+        <port1>6633</port1>
+    </CTRL>
+
+    <PING>
+        <source1>h8</source1>
+        <source2>h9</source2>
+        <source3>h10</source3>
+        <source4>h11</source4>
+        <source5>h12</source5>
+        <source6>h13</source6>
+        <source7>h14</source7>
+        <source8>h15</source8>
+        <source9>h16</source9>
+        <source10>h17</source10>
+        <target1>10.0.0.18</target1>
+        <target2>10.0.0.19</target2>
+        <target3>10.0.0.20</target3>
+        <target4>10.0.0.21</target4>
+        <target5>10.0.0.22</target5>
+        <target6>10.0.0.23</target6>
+        <target7>10.0.0.24</target7>
+        <target8>10.0.0.25</target8>
+        <target9>10.0.0.26</target9>
+        <target10>10.0.0.27</target10>
+    </PING>
+</PARAMS>
diff --git a/TestON/tests/FuncNext13/FuncNext13.py b/TestON/tests/FuncNext13/FuncNext13.py
new file mode 100755
index 0000000..6b24695
--- /dev/null
+++ b/TestON/tests/FuncNext13/FuncNext13.py
@@ -0,0 +1,608 @@
+
+#Testing the basic functionality of ONOS Next
+#For sanity and driver functionality excercises only.
+
+import time
+import sys
+import os
+import re
+import time
+import json
+
+time.sleep(1)
+class FuncNext13:
+    def __init__(self):
+        self.default = ''
+
+    def CASE1(self, main):
+        '''
+        Startup sequence:
+        git pull
+        mvn clean install
+        onos-package
+        cell <name>
+        onos-verify-cell
+        onos-install -f
+        onos-wait-for-start
+        '''
+        
+        cell_name = main.params['ENV']['cellName']
+        ONOS1_ip = main.params['CTRL']['ip1']
+        ONOS1_port = main.params['CTRL']['port1']
+        
+        main.case("Setting up test environment")
+        
+        main.step("Git checkout and pull master and get version")
+        main.ONOSbench.git_checkout("master")
+        git_pull_result = main.ONOSbench.git_pull()
+        print "git_pull_result = ", git_pull_result
+        version_result = main.ONOSbench.get_version()
+
+        if git_pull_result == 1:
+            main.step("Using mvn clean & install")
+            clean_install_result = main.ONOSbench.clean_install()
+            #clean_install_result = main.TRUE
+
+        main.step("Applying cell variable to environment")
+        cell_result1 = main.ONOSbench.set_cell(cell_name)
+        verify_result = main.ONOSbench.verify_cell()
+        cell_result2 = main.ONOS2.set_cell(cell_name)
+        #verify_result = main.ONOS2.verify_cell()
+        main.ONOS2.start_onos_cli(ONOS_ip=main.params['CTRL']['ip1'])
+        
+        cell_result = cell_result1 and cell_result2
+
+        main.step("Creating ONOS package")
+        package_result = main.ONOSbench.onos_package()
+
+        #main.step("Creating a cell")
+        #cell_create_result = main.ONOSbench.create_cell_file(**************)
+
+        main.step("Installing ONOS package")
+        onos_install_result = main.ONOSbench.onos_install()
+        onos1_isup = main.ONOSbench.isup()
+   
+        main.step("Starting ONOS service")
+        start_result = main.ONOSbench.onos_start(ONOS1_ip)
+
+        case1_result = (package_result and\
+                cell_result and verify_result and onos_install_result and\
+                onos1_isup and start_result )
+        utilities.assert_equals(expect=main.TRUE, actual=case1_result,
+                onpass="Test startup successful",
+                onfail="Test startup NOT successful")
+
+    def CASE11(self, main):
+        '''
+        Cleanup sequence:
+        onos-service <node_ip> stop
+        onos-uninstall
+
+        TODO: Define rest of cleanup
+        
+        '''
+
+        ONOS1_ip = main.params['CTRL']['ip1']
+
+        main.case("Cleaning up test environment")
+
+        main.step("Testing ONOS kill function")
+        kill_result = main.ONOSbench.onos_kill(ONOS1_ip)
+
+        main.step("Stopping ONOS service")
+        stop_result = main.ONOSbench.onos_stop(ONOS1_ip)
+
+        main.step("Uninstalling ONOS service") 
+        uninstall_result = main.ONOSbench.onos_uninstall()
+
+    def CASE3(self, main):
+        '''
+        Test 'onos' command and its functionality in driver
+        '''
+        
+        ONOS1_ip = main.params['CTRL']['ip1']
+
+        main.case("Testing 'onos' command")
+
+        main.step("Sending command 'onos -w <onos-ip> system:name'")
+        cmdstr1 = "system:name"
+        cmd_result1 = main.ONOSbench.onos_cli(ONOS1_ip, cmdstr1) 
+        main.log.info("onos command returned: "+cmd_result1)
+
+        main.step("Sending command 'onos -w <onos-ip> onos:topology'")
+        cmdstr2 = "onos:topology"
+        cmd_result2 = main.ONOSbench.onos_cli(ONOS1_ip, cmdstr2)
+        main.log.info("onos command returned: "+cmd_result2)
+
+
+
+    def CASE4(self, main):
+        import re
+        import time
+        main.case("Pingall Test")
+        main.step("Assigning switches to controllers")
+        for i in range(1,29):
+            if i ==1:
+                main.Mininet1.assign_sw_controller(sw=str(i),ip1=ONOS1_ip,port1=ONOS1_port)
+            elif i>=2 and i<5:
+                main.Mininet1.assign_sw_controller(sw=str(i),ip1=ONOS1_ip,port1=ONOS1_port)
+            elif i>=5 and i<8:
+                main.Mininet1.assign_sw_controller(sw=str(i),ip1=ONOS1_ip,port1=ONOS1_port)
+            elif i>=8 and i<18:
+                main.Mininet1.assign_sw_controller(sw=str(i),ip1=ONOS1_ip,port1=ONOS1_port)
+            elif i>=18 and i<28:
+                main.Mininet1.assign_sw_controller(sw=str(i),ip1=ONOS1_ip,port1=ONOS1_port)
+            else:
+                main.Mininet1.assign_sw_controller(sw=str(i),ip1=ONOS1_ip,port1=ONOS1_port)
+        Switch_Mastership = main.TRUE
+        for i in range (1,29):
+            if i==1:
+                response = main.Mininet1.get_sw_controller("s"+str(i))
+                print("Response is " + str(response))
+                if re.search("tcp:"+ONOS1_ip,response):
+                    Switch_Mastership = Switch_Mastership and main.TRUE
+                else:
+                    Switch_Mastership = main.FALSE
+            elif i>=2 and i<5:
+                response = main.Mininet1.get_sw_controller("s"+str(i))
+                print("Response is " + str(response))
+                if re.search("tcp:"+ONOS1_ip,response):
+                    Switch_Mastership = Switch_Mastership and main.TRUE
+                else:
+                    Switch_Mastership = main.FALSE
+            elif i>=5 and i<8:
+                response = main.Mininet1.get_sw_controller("s"+str(i))
+                print("Response is " + str(response))
+                if re.search("tcp:"+ONOS1_ip,response):
+                    Switch_Mastership = Switch_Mastership and main.TRUE
+                else:
+                    Switch_Mastership = main.FALSE
+            elif i>=8 and i<18:
+                response = main.Mininet1.get_sw_controller("s"+str(i))
+                print("Response is " + str(response))
+                if re.search("tcp:"+ONOS1_ip,response):
+                    Switch_Mastership = Switch_Mastership and main.TRUE
+                else:
+                    Switch_Mastership = main.FALSE
+            elif i>=18 and i<28:
+                response = main.Mininet1.get_sw_controller("s"+str(i))
+                print("Response is " + str(response))
+                if re.search("tcp:"+ONOS1_ip,response):
+                    Switch_Mastership = Switch_Mastership and main.TRUE
+                else:
+                    Switch_Mastership = main.FALSE
+            else:
+                response = main.Mininet1.get_sw_controller("s"+str(i))
+                print("Response is" + str(response))
+                if re.search("tcp:" +ONOS1_ip,response):
+                    Switch_Mastership = Switch_Mastership and main.TRUE
+                else:
+                    Switch_Mastership = main.FALSE
+
+        if Switch_Mastership == main.TRUE:
+            main.log.report("MasterControllers assigned correctly")
+        utilities.assert_equals(expect = main.TRUE,actual=Switch_Mastership,
+                onpass="MasterControllers assigned correctly")
+        '''
+        for i in range (1,29):
+            main.Mininet1.assign_sw_controller(sw=str(i),count=5,
+                    ip1=ONOS1_ip,port1=ONOS1_port,
+                    ip2=ONOS2_ip,port2=ONOS2_port,
+                    ip3=ONOS3_ip,port3=ONOS3_port,
+                    ip4=ONOS4_ip,port4=ONOS4_port,
+                    ip5=ONOS5_ip,port5=ONOS5_port)
+        '''
+        #REACTIVE FWD test
+
+        main.step("Get list of hosts from Mininet")
+        host_list = main.Mininet1.get_hosts()
+        main.log.info(host_list)
+
+        main.step("Get host list in ONOS format")
+        host_onos_list = main.ONOS2.get_hosts_id(host_list)
+        main.log.info(host_onos_list)
+        #time.sleep(5)
+
+        #We must use ping from hosts we want to add intents from 
+        #to make the hosts talk
+        #main.Mininet2.handle.sendline("\r")
+        #main.Mininet2.handle.sendline("h4 ping 10.1.1.1 -c 1 -W 1")
+        #time.sleep(3)
+        #main.Mininet2.handle.sendline("h5 ping 10.1.1.1 -c 1 -W 1")
+        #time.sleep(5)
+        
+        main.step("Pingall")
+        ping_result = main.FALSE
+        while ping_result == main.FALSE:
+            time1 = time.time()
+            ping_result = main.Mininet1.pingall()
+            time2 = time.time()
+            print "Time for pingall: %2f seconds" % (time2 - time1)
+      
+        #Start onos cli again because u might have dropped out of onos prompt to the shell prompt
+        #if there was no activity
+        main.ONOS2.start_onos_cli(ONOS_ip=main.params['CTRL']['ip1'])
+
+        main.step("Get hosts")
+        main.ONOS2.handle.sendline("hosts")
+        main.ONOS2.handle.expect("onos>")
+        hosts = main.ONOS2.handle.before
+        main.log.info(hosts)
+
+        main.step("Get all devices id")
+        devices_id_list = main.ONOS2.get_all_devices_id()
+        main.log.info(devices_id_list)
+        
+        #ONOS displays the hosts in hex format unlike mininet which does in decimal format
+        #So take care while adding intents
+        
+        main.step("Add host-to-host intents for mininet hosts h8 and h18 or ONOS hosts h8 and h12")
+        hth_intent_result = main.ONOS2.add_host_intent("00:00:00:00:00:08/-1", "00:00:00:00:00:12/-1")
+        hth_intent_result = main.ONOS2.add_host_intent("00:00:00:00:00:09/-1", "00:00:00:00:00:13/-1")
+        hth_intent_result = main.ONOS2.add_host_intent("00:00:00:00:00:0A/-1", "00:00:00:00:00:14/-1")
+        hth_intent_result = main.ONOS2.add_host_intent("00:00:00:00:00:0B/-1", "00:00:00:00:00:15/-1")
+        hth_intent_result = main.ONOS2.add_host_intent("00:00:00:00:00:0C/-1", "00:00:00:00:00:16/-1")
+        hth_intent_result = main.ONOS2.add_host_intent("00:00:00:00:00:0D/-1", "00:00:00:00:00:17/-1")
+        hth_intent_result = main.ONOS2.add_host_intent("00:00:00:00:00:0E/-1", "00:00:00:00:00:18/-1")
+        hth_intent_result = main.ONOS2.add_host_intent("00:00:00:00:00:0F/-1", "00:00:00:00:00:19/-1")
+        hth_intent_result = main.ONOS2.add_host_intent("00:00:00:00:00:10/-1", "00:00:00:00:00:1A/-1") 
+        hth_intent_result = main.ONOS2.add_host_intent("00:00:00:00:00:11/-1", "00:00:00:00:00:1B/-1")
+
+ 
+        
+        print "_____________________________________________________________________________________"
+        ''' 
+        main.step("Add point-to-point intents for mininet hosts h8 and h18 or ONOS hosts h8 and h12")
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000003008", 1, "of:0000000000006018", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000006018", 1, "of:0000000000003008", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+       
+        main.step("Add point-to-point intents for mininet hosts h9 and h19 or ONOS hosts h9 and h13")
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000003009", 1, "of:0000000000006019", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000006019", 1, "of:0000000000003009", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+        
+        main.step("Add point-to-point intents for mininet hosts h10 and h20 or ONOS hosts hA and h14")
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000003010", 1, "of:0000000000006020", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000006020", 1, "of:0000000000003010", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+            
+        main.step("Add point-to-point intents for mininet hosts h11 and h21 or ONOS hosts hB and h15")
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000003011", 1, "of:0000000000006021", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000006021", 1, "of:0000000000003011", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+            
+        main.step("Add point-to-point intents for mininet hosts h12 and h22 or ONOS hosts hC and h16")
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000003012", 1, "of:0000000000006022", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000006022", 1, "of:0000000000003012", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+            
+        main.step("Add point-to-point intents for mininet hosts h13 and h23 or ONOS hosts hD and h17")
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000003013", 1, "of:0000000000006023", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000006023", 1, "of:0000000000003013", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+            
+        main.step("Add point-to-point intents for mininet hosts h14 and h24 or ONOS hosts hE and h18")
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000003014", 1, "of:0000000000006024", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000006024", 1, "of:0000000000003014", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+            
+        main.step("Add point-to-point intents for mininet hosts h15 and h25 or ONOS hosts hF and h19")
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000003015", 1, "of:0000000000006025", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000006025", 1, "of:0000000000003015", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+            
+        main.step("Add point-to-point intents for mininet hosts h16 and h26 or ONOS hosts h10 and h1A")
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000003016", 1, "of:0000000000006026", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000006026", 1, "of:0000000000003016", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+        
+        main.step("Add point-to-point intents for mininet hosts h17 and h27 or ONOS hosts h11 and h1B")
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000003017", 1, "of:0000000000006027", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000000000006027", 1, "of:0000000000003017", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+
+        print("_______________________________________________________________________________________")
+        '''
+
+        #Unistall onos-app-fwd app to disable reactive forwarding
+        appUninstall_result = main.ONOS2.feature_uninstall("onos-app-fwd")
+        main.log.info("onos-app-fwd uninstalled")
+
+        #After reactive forwarding is disabled, the reactive flows on switches timeout in 10-15s
+        #So sleep for 15s
+        time.sleep(15)
+        
+        flowHandle = main.ONOS2.flows()
+        print "flowHandle = ", flowHandle
+
+        count = 1
+        i = 8
+        Ping_Result = main.TRUE
+        #while i<10:
+        while i <18 :
+            main.log.info("\n\nh"+str(i)+" is Pinging h" + str(i+10))
+            ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+10))
+            if ping == main.FALSE and count <5:
+                count+=1
+                i = 8
+                Ping_Result = main.FALSE
+                main.log.report("Ping between h" + str(i) + " and h" + str(i+10) + " failed. Making attempt number "+str(count) + " in 2 seconds")
+                time.sleep(2)
+            elif ping==main.FALSE:
+                main.log.report("All ping attempts have failed")
+                i=19
+                Ping_Result = main.FALSE
+            elif ping==main.TRUE:
+                main.log.info("Ping test passed!")
+                i+=1
+                Ping_Result = main.TRUE
+            else:
+                main.log.info("Unknown error")
+                Ping_Result = main.ERROR
+        if Ping_Result==main.FALSE:
+            main.log.report("Intents have not ben installed correctly. Cleaning up")
+            #main.cleanup()
+            #main.exit()
+        if Ping_Result==main.TRUE:
+            main.log.report("Intents have been installed correctly")
+            
+        case4_result = Switch_Mastership and Ping_Result
+        utilities.assert_equals(expect=main.TRUE, actual=case4_result,
+                onpass="Pingall Test successful",
+                onfail="Pingall Test NOT successful")
+
+    def CASE5(self,main) :
+        import json
+        from subprocess import Popen, PIPE
+        from sts.topology.teston_topology import TestONTopology # assumes that sts is already in you PYTHONPATH
+        #main.ONOS2.start_onos_cli(ONOS_ip=main.params['CTRL']['ip1'])
+        deviceResult = main.ONOS2.devices()
+        linksResult = main.ONOS2.links()
+        portsResult = main.ONOS2.ports()
+        print "**************"
+        main.step("Start continuous pings")
+        main.Mininet2.pingLong(src=main.params['PING']['source1'],
+                            target=main.params['PING']['target1'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source2'],
+                            target=main.params['PING']['target2'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source3'],
+                            target=main.params['PING']['target3'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source4'],
+                            target=main.params['PING']['target4'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source5'],
+                            target=main.params['PING']['target5'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source6'],
+                            target=main.params['PING']['target6'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source7'],
+                            target=main.params['PING']['target7'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source8'],
+                            target=main.params['PING']['target8'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source9'],
+                            target=main.params['PING']['target9'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source10'],
+                            target=main.params['PING']['target10'],pingTime=500)
+
+        main.step("Create TestONTopology object")
+        global ctrls
+        ctrls = []
+        count = 1
+        while True:
+            temp = ()
+            if ('ip' + str(count)) in main.params['CTRL']:
+                temp = temp + (getattr(main,('ONOS' + str(count))),)
+                temp = temp + ("ONOS"+str(count),)
+                temp = temp + (main.params['CTRL']['ip'+str(count)],)
+                temp = temp + (eval(main.params['CTRL']['port'+str(count)]),)
+                ctrls.append(temp)
+                count = count + 1
+            else:
+                break
+        global MNTopo
+        Topo = TestONTopology(main.Mininet1, ctrls) # can also add Intent API info for intent operations
+        MNTopo = Topo
+
+        Topology_Check = main.TRUE
+        main.step("Compare ONOS Topology to MN Topology")
+        devices_json = main.ONOS2.devices()
+        links_json = main.ONOS2.links()
+        ports_json = main.ONOS2.ports()
+        print "devices_json= ", devices_json
+        
+        result1 = main.Mininet1.compare_switches(MNTopo, json.loads(devices_json))
+        print "***********************"
+        result2 = main.Mininet1.compare_links(MNTopo, json.loads(links_json))
+        print "***********************"
+        result3 = main.Mininet1.compare_ports(MNTopo, json.loads(ports_json))
+            
+        result = result1 and result2 and result3
+        print "***********************"
+        if result == main.TRUE:
+            main.log.report("ONOS"+ " Topology matches MN Topology")
+        utilities.assert_equals(expect=main.TRUE,actual=result,
+            onpass="ONOS" + " Topology matches MN Topology",
+            onfail="ONOS" + " Topology does not match MN Topology")
+        Topology_Check = Topology_Check and result
+        utilities.assert_equals(expect=main.TRUE,actual=Topology_Check,
+            onpass="Topology checks passed", onfail="Topology checks failed")
+    
+
+    def CASE7 (self,main):
+       
+        ONOS1_ip = main.params['CTRL']['ip1']
+
+        link_sleep = int(main.params['timers']['LinkDiscovery'])
+
+        main.log.report("Killing a link to ensure that link discovery is consistent")
+        main.case("Killing a link to Ensure that Link Discovery is Working Properly")
+        main.step("Start continuous pings")
+       
+        main.Mininet2.pingLong(src=main.params['PING']['source1'],
+                            target=main.params['PING']['target1'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source2'],
+                            target=main.params['PING']['target2'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source3'],
+                            target=main.params['PING']['target3'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source4'],
+                            target=main.params['PING']['target4'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source5'],
+                            target=main.params['PING']['target5'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source6'],
+                            target=main.params['PING']['target6'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source7'],
+                            target=main.params['PING']['target7'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source8'],
+                            target=main.params['PING']['target8'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source9'],
+                            target=main.params['PING']['target9'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source10'],
+                            target=main.params['PING']['target10'],pingTime=500)
+
+
+        main.step("Determine the current number of switches and links")
+        topology_output = main.ONOS2.topology()
+        topology_result = main.ONOS1.get_topology(topology_output)
+        activeSwitches = topology_result['devices']
+        links = topology_result['links']
+        print "activeSwitches = ", type(activeSwitches)
+        print "links = ", type(links)
+        main.log.info("Currently there are %s switches and %s links"  %(str(activeSwitches), str(links)))
+
+        main.step("Kill Link between s3 and s28")
+        main.Mininet1.link(END1="s3",END2="s28",OPTION="down")
+        time.sleep(link_sleep)
+        topology_output = main.ONOS2.topology()
+        Link_Down = main.ONOS1.check_status(topology_output,activeSwitches,str(int(links)-2))
+        if Link_Down == main.TRUE:
+            main.log.report("Link Down discovered properly")
+        utilities.assert_equals(expect=main.TRUE,actual=Link_Down,
+                onpass="Link Down discovered properly",
+                onfail="Link down was not discovered in "+ str(link_sleep) + " seconds")
+        
+        main.step("Bring link between s3 and s28 back up")
+        Link_Up = main.Mininet1.link(END1="s3",END2="s28",OPTION="up")
+        time.sleep(link_sleep)
+        topology_output = main.ONOS2.topology()
+        Link_Up = main.ONOS1.check_status(topology_output,activeSwitches,str(links))
+        if Link_Up == main.TRUE:
+            main.log.report("Link up discovered properly")
+        utilities.assert_equals(expect=main.TRUE,actual=Link_Up,
+                onpass="Link up discovered properly",
+                onfail="Link up was not discovered in "+ str(link_sleep) + " seconds")
+
+
+
+
+        main.step("Compare ONOS Topology to MN Topology")
+        Topo = TestONTopology(main.Mininet1, ctrls) # can also add Intent API info for intent operations
+        MNTopo = Topo
+        Topology_Check = main.TRUE
+        devices_json = main.ONOS2.devices()
+        links_json = main.ONOS2.links()
+        ports_json = main.ONOS2.ports()
+        print "devices_json= ", devices_json
+        
+        result1 = main.Mininet1.compare_switches(MNTopo, json.loads(devices_json))
+        print "***********************"
+        result2 = main.Mininet1.compare_links(MNTopo, json.loads(links_json))
+        print "***********************"
+        result3 = main.Mininet1.compare_ports(MNTopo, json.loads(ports_json))
+            
+        result = result1 and result2 and result3
+        print "***********************"
+        if result == main.TRUE:
+            main.log.report("ONOS"+ " Topology matches MN Topology")
+        utilities.assert_equals(expect=main.TRUE,actual=result,
+            onpass="ONOS" + " Topology matches MN Topology",
+            onfail="ONOS" + " Topology does not match MN Topology")
+        Topology_Check = Topology_Check and result
+        utilities.assert_equals(expect=main.TRUE,actual=Topology_Check,
+            onpass="Topology checks passed", onfail="Topology checks failed")
+    
+        result = Link_Down and Link_Up and Topology_Check
+        utilities.assert_equals(expect=main.TRUE,actual=result,
+                onpass="Link failure is discovered correctly",
+                onfail="Link Discovery failed")
+
+
+
diff --git a/TestON/tests/FuncNext13/FuncNext13.topo b/TestON/tests/FuncNext13/FuncNext13.topo
new file mode 100755
index 0000000..85b6cab
--- /dev/null
+++ b/TestON/tests/FuncNext13/FuncNext13.topo
@@ -0,0 +1,61 @@
+<TOPOLOGY>
+    <COMPONENT>
+
+        <ONOSbench>
+            <host>10.128.10.11</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosDriver</type>
+            <connect_order>1</connect_order>
+            <COMPONENTS> </COMPONENTS>
+        </ONOSbench>
+
+        <ONOS1>
+            <host>10.128.10.11</host>
+            <user>sdn</user>
+            <password>sdn</password>
+            <type>OnosDriver</type>
+            <connect_order>2</connect_order>
+            <COMPONENTS> </COMPONENTS>
+        </ONOS1>
+
+        <ONOS2>
+            <host>10.128.10.11</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosCliDriver</type>
+            <connect_order>3</connect_order>
+            <COMPONENTS> </COMPONENTS>
+        </ONOS2>
+
+        <Mininet1>
+            <host>10.128.10.11</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>MininetCliDriver</type>
+            <connect_order>4</connect_order>
+            <COMPONENTS>
+                #Specify the Option for mininet
+                <arg1> --custom ~/mininet/custom/topo-HA.py </arg1>
+                <arg2> --topo mytopo </arg2>
+                <arg3> --switch ovs,protocols=OpenFlow13</arg3>
+                <controller> remote </controller>
+            </COMPONENTS>
+        </Mininet1>
+
+        <Mininet2>
+            <host>10.128.10.11</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>RemoteMininetDriver</type>
+            <connect_order>5</connect_order>
+            <COMPONENTS>
+                #Specify the Option for mininet
+                <arg1> --custom ~/mininet/custom/topo-HA.py </arg1>
+                <arg2> --topo mytopo </arg2>
+                <arg3> --switch ovs,protocols=OpenFlow13 </arg3>
+                <controller> remote </controller>
+            </COMPONENTS>
+        </Mininet2>
+    </COMPONENT>
+</TOPOLOGY>
diff --git a/TestON/tests/FuncNext13/__init__.py b/TestON/tests/FuncNext13/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/tests/FuncNext13/__init__.py
diff --git a/TestON/tests/HATestClusterRestart/HATestClusterRestart.params b/TestON/tests/HATestClusterRestart/HATestClusterRestart.params
index 38a9b02..6f2002d 100644
--- a/TestON/tests/HATestClusterRestart/HATestClusterRestart.params
+++ b/TestON/tests/HATestClusterRestart/HATestClusterRestart.params
@@ -4,6 +4,7 @@
     <cellName>HA</cellName>
     </ENV>
     <Git>False</Git>
+    <branch> master </branch>
     <num_controllers> 7 </num_controllers>
 
     <CTRL>
@@ -56,6 +57,11 @@
         <LinkDiscovery>.2</LinkDiscovery>
         <SwitchDiscovery>.2</SwitchDiscovery>
     </timers>
+    <kill>
+        <switch> s5 </switch>
+        <dpid> 0000000000005000 </dpid>
+        <links> h5 s2 s1 s6 </links>
+    </kill>
     <MNtcpdump>
         <intf>eth0</intf>
         <port> </port>
diff --git a/TestON/tests/HATestClusterRestart/HATestClusterRestart.py b/TestON/tests/HATestClusterRestart/HATestClusterRestart.py
index b9a07b9..791d55c 100644
--- a/TestON/tests/HATestClusterRestart/HATestClusterRestart.py
+++ b/TestON/tests/HATestClusterRestart/HATestClusterRestart.py
@@ -1,4 +1,4 @@
-'''
+"""
 Description: This test is to determine if ONOS can handle
     all of it's nodes restarting
 
@@ -18,14 +18,16 @@
 CASE13: Clean up
 CASE14: start election app on all onos nodes
 CASE15: Check that Leadership Election is still functional
-'''
+"""
+
+
 class HATestClusterRestart:
 
-    def __init__(self) :
+    def __init__( self ):
         self.default = ''
 
-    def CASE1(self,main) :
-        '''
+    def CASE1( self, main ):
+        """
         CASE1 is to compile ONOS and push it to the test machines
 
         Startup sequence:
@@ -37,775 +39,859 @@
         NOTE: temporary - onos-remove-raft-logs
         onos-install -f
         onos-wait-for-start
-        '''
-        import time
-        main.log.report("ONOS HA test: Restart all ONOS nodes - initialization")
-        main.case("Setting up test environment")
+        """
+        main.log.report( "ONOS HA test: Restart all ONOS nodes - " +
+                         "initialization" )
+        main.case( "Setting up test environment" )
+        # TODO: save all the timers and output them for plotting
 
         # load some vairables from the params file
-        PULL_CODE = False
-        if main.params['Git'] == 'True':
-            PULL_CODE = True
-        cell_name = main.params['ENV']['cellName']
+        PULLCODE = False
+        if main.params[ 'Git' ] == 'True':
+            PULLCODE = True
+        gitBranch = main.params[ 'branch' ]
+        cellName = main.params[ 'ENV' ][ 'cellName' ]
 
-        #set global variables
-        global ONOS1_ip
-        global ONOS1_port
-        global ONOS2_ip
-        global ONOS2_port
-        global ONOS3_ip
-        global ONOS3_port
-        global ONOS4_ip
-        global ONOS4_port
-        global ONOS5_ip
-        global ONOS5_port
-        global ONOS6_ip
-        global ONOS6_port
-        global ONOS7_ip
-        global ONOS7_port
-        global num_controllers
+        # set global variables
+        global ONOS1Ip
+        global ONOS1Port
+        global ONOS2Ip
+        global ONOS2Port
+        global ONOS3Ip
+        global ONOS3Port
+        global ONOS4Ip
+        global ONOS4Port
+        global ONOS5Ip
+        global ONOS5Port
+        global ONOS6Ip
+        global ONOS6Port
+        global ONOS7Ip
+        global ONOS7Port
+        global numControllers
 
-        ONOS1_ip = main.params['CTRL']['ip1']
-        ONOS1_port = main.params['CTRL']['port1']
-        ONOS2_ip = main.params['CTRL']['ip2']
-        ONOS2_port = main.params['CTRL']['port2']
-        ONOS3_ip = main.params['CTRL']['ip3']
-        ONOS3_port = main.params['CTRL']['port3']
-        ONOS4_ip = main.params['CTRL']['ip4']
-        ONOS4_port = main.params['CTRL']['port4']
-        ONOS5_ip = main.params['CTRL']['ip5']
-        ONOS5_port = main.params['CTRL']['port5']
-        ONOS6_ip = main.params['CTRL']['ip6']
-        ONOS6_port = main.params['CTRL']['port6']
-        ONOS7_ip = main.params['CTRL']['ip7']
-        ONOS7_port = main.params['CTRL']['port7']
-        num_controllers = int(main.params['num_controllers'])
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS1Port = main.params[ 'CTRL' ][ 'port1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS2Port = main.params[ 'CTRL' ][ 'port2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS3Port = main.params[ 'CTRL' ][ 'port3' ]
+        ONOS4Ip = main.params[ 'CTRL' ][ 'ip4' ]
+        ONOS4Port = main.params[ 'CTRL' ][ 'port4' ]
+        ONOS5Ip = main.params[ 'CTRL' ][ 'ip5' ]
+        ONOS5Port = main.params[ 'CTRL' ][ 'port5' ]
+        ONOS6Ip = main.params[ 'CTRL' ][ 'ip6' ]
+        ONOS6Port = main.params[ 'CTRL' ][ 'port6' ]
+        ONOS7Ip = main.params[ 'CTRL' ][ 'ip7' ]
+        ONOS7Port = main.params[ 'CTRL' ][ 'port7' ]
+        numControllers = int( main.params[ 'num_controllers' ] )
 
+        main.step( "Applying cell variable to environment" )
+        cellResult = main.ONOSbench.setCell( cellName )
+        verifyResult = main.ONOSbench.verifyCell()
 
-        main.step("Applying cell variable to environment")
-        cell_result = main.ONOSbench.set_cell(cell_name)
-        verify_result = main.ONOSbench.verify_cell()
+        # FIXME:this is short term fix
+        main.log.report( "Removing raft logs" )
+        main.ONOSbench.onosRemoveRaftLogs()
+        main.log.report( "Uninstalling ONOS" )
+        main.ONOSbench.onosUninstall( ONOS1Ip )
+        main.ONOSbench.onosUninstall( ONOS2Ip )
+        main.ONOSbench.onosUninstall( ONOS3Ip )
+        main.ONOSbench.onosUninstall( ONOS4Ip )
+        main.ONOSbench.onosUninstall( ONOS5Ip )
+        main.ONOSbench.onosUninstall( ONOS6Ip )
+        main.ONOSbench.onosUninstall( ONOS7Ip )
 
-        #FIXME:this is short term fix
-        main.log.report("Removing raft logs")
-        main.ONOSbench.onos_remove_raft_logs()
-        main.log.report("Uninstalling ONOS")
-        main.ONOSbench.onos_uninstall(ONOS1_ip)
-        main.ONOSbench.onos_uninstall(ONOS2_ip)
-        main.ONOSbench.onos_uninstall(ONOS3_ip)
-        main.ONOSbench.onos_uninstall(ONOS4_ip)
-        main.ONOSbench.onos_uninstall(ONOS5_ip)
-        main.ONOSbench.onos_uninstall(ONOS6_ip)
-        main.ONOSbench.onos_uninstall(ONOS7_ip)
+        cleanInstallResult = main.TRUE
+        gitPullResult = main.TRUE
 
-        clean_install_result = main.TRUE
-        git_pull_result = main.TRUE
+        main.step( "Compiling the latest version of ONOS" )
+        if PULLCODE:
+            # TODO Configure branch in params
+            main.step( "Git checkout and pull master" )
+            main.ONOSbench.gitCheckout( gitBranch )
+            gitPullResult = main.ONOSbench.gitPull()
 
-        main.step("Compiling the latest version of ONOS")
-        if PULL_CODE:
-            main.step("Git checkout and pull master")
-            main.ONOSbench.git_checkout("master")
-            git_pull_result = main.ONOSbench.git_pull()
+            main.step( "Using mvn clean & install" )
+            cleanInstallResult = main.ONOSbench.cleanInstall()
+        else:
+            main.log.warn( "Did not pull new code so skipping mvn " +
+                           "clean install" )
+    main.ONOSbench.getVersion( report=True )
 
-            main.step("Using mvn clean & install")
-            clean_install_result = main.TRUE
-            if git_pull_result == main.TRUE:
-                clean_install_result = main.ONOSbench.clean_install()
-            else:
-                main.log.warn("Did not pull new code so skipping mvn "+ \
-                        "clean install")
-        main.ONOSbench.get_version(report=True)
+        main.step( "Creating ONOS package" )
+        packageResult = main.ONOSbench.onosPackage()
 
-        main.step("Creating ONOS package")
-        package_result = main.ONOSbench.onos_package()
+        main.step( "Installing ONOS package" )
+        onos1InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS1Ip )
+        onos2InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS2Ip )
+        onos3InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS3Ip )
+        onos4InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS4Ip )
+        onos5InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS5Ip )
+        onos6InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS6Ip )
+        onos7InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS7Ip )
+        onosInstallResult = onos1InstallResult and onos2InstallResult\
+            and onos3InstallResult and onos4InstallResult\
+            and onos5InstallResult and onos6InstallResult\
+            and onos7InstallResult
 
-        main.step("Installing ONOS package")
-        onos1_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS1_ip)
-        onos2_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS2_ip)
-        onos3_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS3_ip)
-        onos4_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS4_ip)
-        onos5_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS5_ip)
-        onos6_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS6_ip)
-        onos7_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS7_ip)
-        onos_install_result = onos1_install_result and onos2_install_result\
-                and onos3_install_result and onos4_install_result\
-                and onos5_install_result and onos6_install_result\
-                and onos7_install_result
-        '''
-        #FIXME: work around until onos is less fragile
-        main.ONOSbench.handle.sendline("onos-cluster-install")
-        print main.ONOSbench.handle.expect("\$")
-        onos_install_result = main.TRUE
-        '''
-
-
-        main.step("Checking if ONOS is up yet")
-        #TODO check bundle:list?
-        for i in range(2):
-            onos1_isup = main.ONOSbench.isup(ONOS1_ip)
-            if not onos1_isup:
-                main.log.report("ONOS1 didn't start!")
-            onos2_isup = main.ONOSbench.isup(ONOS2_ip)
-            if not onos2_isup:
-                main.log.report("ONOS2 didn't start!")
-            onos3_isup = main.ONOSbench.isup(ONOS3_ip)
-            if not onos3_isup:
-                main.log.report("ONOS3 didn't start!")
-            onos4_isup = main.ONOSbench.isup(ONOS4_ip)
-            if not onos4_isup:
-                main.log.report("ONOS4 didn't start!")
-            onos5_isup = main.ONOSbench.isup(ONOS5_ip)
-            if not onos5_isup:
-                main.log.report("ONOS5 didn't start!")
-            onos6_isup = main.ONOSbench.isup(ONOS6_ip)
-            if not onos6_isup:
-                main.log.report("ONOS6 didn't start!")
-            onos7_isup = main.ONOSbench.isup(ONOS7_ip)
-            if not onos7_isup:
-                main.log.report("ONOS7 didn't start!")
-            onos_isup_result = onos1_isup and onos2_isup and onos3_isup\
-                    and onos4_isup and onos5_isup and onos6_isup and onos7_isup
-            if onos_isup_result == main.TRUE:
+        main.step( "Checking if ONOS is up yet" )
+        # TODO check bundle:list?
+        for i in range( 2 ):
+            onos1Isup = main.ONOSbench.isup( ONOS1Ip )
+            if not onos1Isup:
+                main.log.report( "ONOS1 didn't start!" )
+            onos2Isup = main.ONOSbench.isup( ONOS2Ip )
+            if not onos2Isup:
+                main.log.report( "ONOS2 didn't start!" )
+            onos3Isup = main.ONOSbench.isup( ONOS3Ip )
+            if not onos3Isup:
+                main.log.report( "ONOS3 didn't start!" )
+            onos4Isup = main.ONOSbench.isup( ONOS4Ip )
+            if not onos4Isup:
+                main.log.report( "ONOS4 didn't start!" )
+            onos5Isup = main.ONOSbench.isup( ONOS5Ip )
+            if not onos5Isup:
+                main.log.report( "ONOS5 didn't start!" )
+            onos6Isup = main.ONOSbench.isup( ONOS6Ip )
+            if not onos6Isup:
+                main.log.report( "ONOS6 didn't start!" )
+            onos7Isup = main.ONOSbench.isup( ONOS7Ip )
+            if not onos7Isup:
+                main.log.report( "ONOS7 didn't start!" )
+            onosIsupResult = onos1Isup and onos2Isup and onos3Isup\
+                and onos4Isup and onos5Isup and onos6Isup and onos7Isup
+            if onosIsupResult == main.TRUE:
                 break
-        # TODO: if it becomes an issue, we can retry this step  a few times
 
+        cliResult1 = main.ONOScli1.startOnosCli( ONOS1Ip )
+        cliResult2 = main.ONOScli2.startOnosCli( ONOS2Ip )
+        cliResult3 = main.ONOScli3.startOnosCli( ONOS3Ip )
+        cliResult4 = main.ONOScli4.startOnosCli( ONOS4Ip )
+        cliResult5 = main.ONOScli5.startOnosCli( ONOS5Ip )
+        cliResult6 = main.ONOScli6.startOnosCli( ONOS6Ip )
+        cliResult7 = main.ONOScli7.startOnosCli( ONOS7Ip )
+        cliResults = cliResult1 and cliResult2 and cliResult3 and\
+            cliResult4 and cliResult5 and cliResult6 and cliResult7
 
-        cli_result1 = main.ONOScli1.start_onos_cli(ONOS1_ip)
-        cli_result2 = main.ONOScli2.start_onos_cli(ONOS2_ip)
-        cli_result3 = main.ONOScli3.start_onos_cli(ONOS3_ip)
-        cli_result4 = main.ONOScli4.start_onos_cli(ONOS4_ip)
-        cli_result5 = main.ONOScli5.start_onos_cli(ONOS5_ip)
-        cli_result6 = main.ONOScli6.start_onos_cli(ONOS6_ip)
-        cli_result7 = main.ONOScli7.start_onos_cli(ONOS7_ip)
-        cli_results = cli_result1 and cli_result2 and cli_result3 and\
-                cli_result4 and cli_result5 and cli_result6 and cli_result7
+        main.step( "Start Packet Capture MN" )
+        main.Mininet2.startTcpdump(
+            str( main.params[ 'MNtcpdump' ][ 'folder' ] ) + str( main.TEST )
+            + "-MN.pcap",
+            intf=main.params[ 'MNtcpdump' ][ 'intf' ],
+            port=main.params[ 'MNtcpdump' ][ 'port' ] )
 
-        main.step("Start Packet Capture MN")
-        main.Mininet2.start_tcpdump(
-                str(main.params['MNtcpdump']['folder'])+str(main.TEST)+"-MN.pcap",
-                intf = main.params['MNtcpdump']['intf'],
-                port = main.params['MNtcpdump']['port'])
+        case1Result = ( cleanInstallResult and packageResult and
+                        cellResult and verifyResult and onosInstallResult
+                        and onosIsupResult and cliResults )
 
+        utilities.assert_equals( expect=main.TRUE, actual=case1Result,
+                                onpass="Test startup successful",
+                                onfail="Test startup NOT successful" )
 
-        case1_result = (clean_install_result and package_result and
-                cell_result and verify_result and onos_install_result and
-                onos_isup_result and cli_results)
-
-        utilities.assert_equals(expect=main.TRUE, actual=case1_result,
-                onpass="Test startup successful",
-                onfail="Test startup NOT successful")
-
-
-        if case1_result==main.FALSE:
+        if case1Result == main.FALSE:
             main.cleanup()
             main.exit()
 
-    def CASE2(self,main) :
-        '''
+    def CASE2( self, main ):
+        """
         Assign mastership to controllers
-        '''
-        import time
-        import json
+        """
         import re
 
-        main.log.report("Assigning switches to controllers")
-        main.case("Assigning Controllers")
-        main.step("Assign switches to controllers")
+        main.log.report( "Assigning switches to controllers" )
+        main.case( "Assigning Controllers" )
+        main.step( "Assign switches to controllers" )
 
-        for i in range (1,29):
-           main.Mininet1.assign_sw_controller(sw=str(i),count=num_controllers,
-                    ip1=ONOS1_ip,port1=ONOS1_port,
-                    ip2=ONOS2_ip,port2=ONOS2_port,
-                    ip3=ONOS3_ip,port3=ONOS3_port,
-                    ip4=ONOS4_ip,port4=ONOS4_port,
-                    ip5=ONOS5_ip,port5=ONOS5_port,
-                    ip6=ONOS6_ip,port6=ONOS6_port,
-                    ip7=ONOS7_ip,port7=ONOS7_port)
+        for i in range( 1, 29 ):
+            main.Mininet1.assignSwController(
+                sw=str( i ),
+                count=numControllers,
+                ip1=ONOS1Ip, port1=ONOS1Port,
+                ip2=ONOS2Ip, port2=ONOS2Port,
+                ip3=ONOS3Ip, port3=ONOS3Port,
+                ip4=ONOS4Ip, port4=ONOS4Port,
+                ip5=ONOS5Ip, port5=ONOS5Port,
+                ip6=ONOS6Ip, port6=ONOS6Port,
+                ip7=ONOS7Ip, port7=ONOS7Port )
 
-        mastership_check = main.TRUE
-        for i in range (1,29):
-            response = main.Mininet1.get_sw_controller("s"+str(i))
+        mastershipCheck = main.TRUE
+        for i in range( 1, 29 ):
+            response = main.Mininet1.getSwController( "s" + str( i ) )
             try:
-                main.log.info(str(response))
+                main.log.info( str( response ) )
             except:
-                main.log.info(repr(response))
-            if re.search("tcp:"+ONOS1_ip,response)\
-                    and re.search("tcp:"+ONOS2_ip,response)\
-                    and re.search("tcp:"+ONOS3_ip,response)\
-                    and re.search("tcp:"+ONOS4_ip,response)\
-                    and re.search("tcp:"+ONOS5_ip,response)\
-                    and re.search("tcp:"+ONOS6_ip,response)\
-                    and re.search("tcp:"+ONOS7_ip,response):
-                mastership_check = mastership_check and main.TRUE
+                main.log.info( repr( response ) )
+            if re.search( "tcp:" + ONOS1Ip, response )\
+                    and re.search( "tcp:" + ONOS2Ip, response )\
+                    and re.search( "tcp:" + ONOS3Ip, response )\
+                    and re.search( "tcp:" + ONOS4Ip, response )\
+                    and re.search( "tcp:" + ONOS5Ip, response )\
+                    and re.search( "tcp:" + ONOS6Ip, response )\
+                    and re.search( "tcp:" + ONOS7Ip, response ):
+                mastershipCheck = mastershipCheck and main.TRUE
             else:
-                mastership_check = main.FALSE
-        if mastership_check == main.TRUE:
-            main.log.report("Switch mastership assigned correctly")
-        utilities.assert_equals(expect = main.TRUE,actual=mastership_check,
-                onpass="Switch mastership assigned correctly",
-                onfail="Switches not assigned correctly to controllers")
+                mastershipCheck = main.FALSE
+        if mastershipCheck == main.TRUE:
+            main.log.report( "Switch mastership assigned correctly" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=mastershipCheck,
+            onpass="Switch mastership assigned correctly",
+            onfail="Switches not assigned correctly to controllers" )
 
-        #Manually assign mastership to the controller we want
-        role_call = main.TRUE
-        role_check = main.TRUE
+        # Manually assign mastership to the controller we want
+        roleCall = main.TRUE
+        roleCheck = main.TRUE
 
-        device_id = main.ONOScli1.get_device("1000")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS1_ip)
-        if ONOS1_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "1000" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS1Ip )
+        # Check assignment
+        if ONOS1Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("2800")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS1_ip)
-        if ONOS1_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "2800" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS1Ip )
+        # Check assignment
+        if ONOS1Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("2000")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS2_ip)
-        if ONOS2_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "2000" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS2Ip )
+        # Check assignment
+        if ONOS2Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("3000")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS2_ip)
-        if ONOS2_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "3000" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS2Ip )
+        # Check assignment
+        if ONOS2Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("5000")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS3_ip)
-        if ONOS3_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "5000" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS3Ip )
+        # Check assignment
+        if ONOS3Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("6000")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS3_ip)
-        if ONOS3_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "6000" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS3Ip )
+        # Check assignment
+        if ONOS3Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id =  main.ONOScli1.get_device("3004")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS4_ip)
-        if ONOS4_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "3004" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS4Ip )
+        # Check assignment
+        if ONOS4Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("3008")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        for i in range( 8, 18 ):
+            dpid = '3' + str( i ).zfill( 3 )
+            deviceId = main.ONOScli1.getDevice( dpid ).get( 'id' )
+            roleCall = roleCall and main.ONOScli1.deviceRole(
+                deviceId,
+                ONOS5Ip )
+            # Check assignment
+            if ONOS5Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+                roleCheck = roleCheck and main.TRUE
+            else:
+                roleCheck = roleCheck and main.FALSE
+
+        deviceId = main.ONOScli1.getDevice( "6007" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS6Ip )
+        # Check assignment
+        if ONOS6Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("3009")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
+        for i in range( 18, 28 ):
+            dpid = '6' + str( i ).zfill( 3 )
+            deviceId = main.ONOScli1.getDevice( dpid ).get( 'id' )
+            roleCall = roleCall and main.ONOScli1.deviceRole(
+                deviceId,
+                ONOS7Ip )
+            # Check assignment
+            if ONOS7Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+                roleCheck = roleCheck and main.TRUE
+            else:
+                roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("3010")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=roleCall,
+            onpass="Re-assigned switch mastership to designated controller",
+            onfail="Something wrong with deviceRole calls" )
 
-        device_id = main.ONOScli1.get_device("3011")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=roleCheck,
+            onpass="Switches were successfully reassigned to designated " +
+                   "controller",
+            onfail="Switches were not successfully reassigned" )
+        mastershipCheck = mastershipCheck and roleCall and roleCheck
+        utilities.assert_equals( expect=main.TRUE, actual=mastershipCheck,
+                                onpass="Switch mastership correctly assigned",
+                                onfail="Error in ( re )assigning switch" +
+                                " mastership" )
 
-        device_id = main.ONOScli1.get_device("3012")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("3013")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("3014")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("3015")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("3016")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("3017")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6007")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS6_ip)
-        if ONOS6_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6018")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6019")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6020")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6021")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6022")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6023")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6024")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6025")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6026")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6027")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        utilities.assert_equals(expect = main.TRUE,actual=role_call,
-                onpass="Re-assigned switch mastership to designated controller",
-                onfail="Something wrong with device_role calls")
-
-        utilities.assert_equals(expect = main.TRUE,actual=role_check,
-                onpass="Switches were successfully reassigned to designated controller",
-                onfail="Switches were not successfully reassigned")
-        mastership_check = mastership_check and role_call and role_check
-        utilities.assert_equals(expect = main.TRUE,actual=mastership_check,
-                onpass="Switch mastership correctly assigned",
-                onfail="Error in (re)assigning switch mastership")
-
-
-    def CASE3(self,main) :
+    def CASE3( self, main ):
         """
         Assign intents
-
         """
-        #FIXME: we must reinstall intents until we have a persistant datastore!
+        # FIXME: we must reinstall intents until we have a persistant
+        # datastore!
         import time
-        import json
-        import re
-        main.log.report("Adding host intents")
-        main.case("Adding host Intents")
+        main.log.report( "Adding host intents" )
+        main.case( "Adding host Intents" )
 
-        main.step("Discovering  Hosts( Via pingall for now)")
-        #FIXME: Once we have a host discovery mechanism, use that instead
+        main.step( "Discovering  Hosts( Via pingall for now )" )
+        # FIXME: Once we have a host discovery mechanism, use that instead
 
-        #install onos-app-fwd
-        main.log.info("Install reactive forwarding app")
-        main.ONOScli1.feature_install("onos-app-fwd")
-        main.ONOScli2.feature_install("onos-app-fwd")
-        main.ONOScli3.feature_install("onos-app-fwd")
-        main.ONOScli4.feature_install("onos-app-fwd")
-        main.ONOScli5.feature_install("onos-app-fwd")
-        main.ONOScli6.feature_install("onos-app-fwd")
-        main.ONOScli7.feature_install("onos-app-fwd")
+        # install onos-app-fwd
+        main.log.info( "Install reactive forwarding app" )
+        main.ONOScli1.featureInstall( "onos-app-fwd" )
+        main.ONOScli2.featureInstall( "onos-app-fwd" )
+        main.ONOScli3.featureInstall( "onos-app-fwd" )
+        main.ONOScli4.featureInstall( "onos-app-fwd" )
+        main.ONOScli5.featureInstall( "onos-app-fwd" )
+        main.ONOScli6.featureInstall( "onos-app-fwd" )
+        main.ONOScli7.featureInstall( "onos-app-fwd" )
 
-        #REACTIVE FWD test
-        ping_result = main.FALSE
+        # REACTIVE FWD test
+        pingResult = main.FALSE
         time1 = time.time()
-        ping_result = main.Mininet1.pingall()
+        pingResult = main.Mininet1.pingall()
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=pingResult,
+            onpass="Reactive Pingall test passed",
+            onfail="Reactive Pingall failed, one or more ping pairs failed" )
         time2 = time.time()
-        main.log.info("Time for pingall: %2f seconds" % (time2 - time1))
+        main.log.info( "Time for pingall: %2f seconds" % ( time2 - time1 ) )
 
-        #uninstall onos-app-fwd
-        main.log.info("Uninstall reactive forwarding app")
-        main.ONOScli1.feature_uninstall("onos-app-fwd")
-        main.ONOScli2.feature_uninstall("onos-app-fwd")
-        main.ONOScli3.feature_uninstall("onos-app-fwd")
-        main.ONOScli4.feature_uninstall("onos-app-fwd")
-        main.ONOScli5.feature_uninstall("onos-app-fwd")
-        main.ONOScli6.feature_uninstall("onos-app-fwd")
-        main.ONOScli7.feature_uninstall("onos-app-fwd")
-        #timeout for fwd flows
-        time.sleep(10)
+        # uninstall onos-app-fwd
+        main.log.info( "Uninstall reactive forwarding app" )
+        main.ONOScli1.featureUninstall( "onos-app-fwd" )
+        main.ONOScli2.featureUninstall( "onos-app-fwd" )
+        main.ONOScli3.featureUninstall( "onos-app-fwd" )
+        main.ONOScli4.featureUninstall( "onos-app-fwd" )
+        main.ONOScli5.featureUninstall( "onos-app-fwd" )
+        main.ONOScli6.featureUninstall( "onos-app-fwd" )
+        main.ONOScli7.featureUninstall( "onos-app-fwd" )
+        # timeout for fwd flows
+        time.sleep( 10 )
 
-        main.step("Add  host intents")
-        #TODO:  move the host numbers to params
-        import json
-        intents_json= json.loads(main.ONOScli1.hosts())
-        intent_add_result = True
-        for i in range(8,18):
-            main.log.info("Adding host intent between h"+str(i)+" and h"+str(i+10))
-            host1 =  "00:00:00:00:00:" + str(hex(i)[2:]).zfill(2).upper()
-            host2 =  "00:00:00:00:00:" + str(hex(i+10)[2:]).zfill(2).upper()
-            host1_id = main.ONOScli1.get_host(host1)['id']
-            host2_id = main.ONOScli1.get_host(host2)['id']
-            #NOTE: get host can return None
-            if host1_id and host2_id:
-                tmp_result = main.ONOScli1.add_host_intent(host1_id, host2_id )
+        main.step( "Add  host intents" )
+        # TODO:  move the host numbers to params
+        intentAddResult = True
+        for i in range( 8, 18 ):
+            main.log.info( "Adding host intent between h" + str( i ) +
+                           " and h" + str( i + 10 ) )
+            host1 = "00:00:00:00:00:" + \
+                str( hex( i )[ 2: ] ).zfill( 2 ).upper()
+            host2 = "00:00:00:00:00:" + \
+                str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
+            host1Id = main.ONOScli1.getHost( host1 )[ 'id' ]
+            host2Id = main.ONOScli1.getHost( host2 )[ 'id' ]
+            # NOTE: get host can return None
+            if host1Id and host2Id:
+                tmpResult = main.ONOScli1.addHostIntent(
+                    host1Id,
+                    host2Id )
             else:
-                main.log.error("Error, get_host() failed")
-                tmp_result = main.FALSE
-            intent_add_result = bool(intent_add_result and tmp_result)
-        utilities.assert_equals(expect=True, actual=intent_add_result,
-                onpass="Switch mastership correctly assigned",
-                onfail="Error in (re)assigning switch mastership")
-        #TODO Check if intents all exist in datastore
-        #NOTE: Do we need to print this once the test is working?
-        #main.log.info(json.dumps(json.loads(main.ONOScli1.intents(json_format=True)),
-        #    sort_keys=True, indent=4, separators=(',', ': ') ) )
+                main.log.error( "Error, getHost() failed" )
+                tmpResult = main.FALSE
+            intentAddResult = bool( pingResult and intentAddResult
+                                     and tmpResult )
+            # TODO Check that intents were added?
+        utilities.assert_equals(
+            expect=True,
+            actual=intentAddResult,
+            onpass="Pushed host intents to ONOS",
+            onfail="Error in pushing host intents to ONOS" )
+        # TODO Check if intents all exist in datastore
 
-    def CASE4(self,main) :
+    def CASE4( self, main ):
         """
         Ping across added host intents
         """
         description = " Ping across added host intents"
-        main.log.report(description)
-        main.case(description)
-        Ping_Result = main.TRUE
-        for i in range(8,18):
-            ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+10))
-            Ping_Result = Ping_Result and ping
-            if ping==main.FALSE:
-                main.log.warn("Ping failed between h"+str(i)+" and h" + str(i+10))
-            elif ping==main.TRUE:
-                main.log.info("Ping test passed!")
-                Ping_Result = main.TRUE
-        if Ping_Result==main.FALSE:
-            main.log.report("Intents have not been installed correctly, pings failed.")
-        if Ping_Result==main.TRUE:
-            main.log.report("Intents have been installed correctly and verified by pings")
-        utilities.assert_equals(expect = main.TRUE,actual=Ping_Result,
-                onpass="Intents have been installed correctly and pings work",
-                onfail ="Intents have not been installed correctly, pings failed." )
+        main.log.report( description )
+        main.case( description )
+        PingResult = main.TRUE
+        for i in range( 8, 18 ):
+            ping = main.Mininet1.pingHost(
+                src="h" + str( i ), target="h" + str( i + 10 ) )
+            PingResult = PingResult and ping
+            if ping == main.FALSE:
+                main.log.warn( "Ping failed between h" + str( i ) +
+                               " and h" + str( i + 10 ) )
+            elif ping == main.TRUE:
+                main.log.info( "Ping test passed!" )
+                PingResult = main.TRUE
+        if PingResult == main.FALSE:
+            main.log.report(
+                "Intents have not been installed correctly, pings failed." )
+            #TODO: pretty print
+            main.log.warn( "ONSO1 intents: " )
+            main.log.warn( json.dumps( json.loads( main.ONOScli1.intents() ),
+                                       sort_keys=True,
+                                       indent=4,
+                                       separators=( ',', ': ' ) ) )
+        if PingResult == main.TRUE:
+            main.log.report(
+                "Intents have been installed correctly and verified by pings" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=PingResult,
+            onpass="Intents have been installed correctly and pings work",
+            onfail="Intents have not been installed correctly, pings failed." )
 
-    def CASE5(self,main) :
-        '''
+    def CASE5( self, main ):
+        """
         Reading state of ONOS
-        '''
-        import time
+        """
         import json
-        from subprocess import Popen, PIPE
-        from sts.topology.teston_topology import TestONTopology # assumes that sts is already in you PYTHONPATH
+        # assumes that sts is already in you PYTHONPATH
+        from sts.topology.teston_topology import TestONTopology
 
-        main.log.report("Setting up and gathering data for current state")
-        main.case("Setting up and gathering data for current state")
-        #The general idea for this test case is to pull the state of (intents,flows, topology,...) from each ONOS node
-        #We can then compare them with eachother and also with past states
+        main.log.report( "Setting up and gathering data for current state" )
+        main.case( "Setting up and gathering data for current state" )
+        # The general idea for this test case is to pull the state of
+        # ( intents,flows, topology,... ) from each ONOS node
+        # We can then compare them with eachother and also with past states
 
-        main.step("Get the Mastership of each switch from each controller")
-        global mastership_state
-        mastership_state = []
+        main.step( "Get the Mastership of each switch from each controller" )
+        global mastershipState
+        mastershipState = []
 
-        #Assert that each device has a master
-        ONOS1_master_not_null = main.ONOScli1.roles_not_null()
-        ONOS2_master_not_null = main.ONOScli2.roles_not_null()
-        ONOS3_master_not_null = main.ONOScli3.roles_not_null()
-        ONOS4_master_not_null = main.ONOScli4.roles_not_null()
-        ONOS5_master_not_null = main.ONOScli5.roles_not_null()
-        ONOS6_master_not_null = main.ONOScli6.roles_not_null()
-        ONOS7_master_not_null = main.ONOScli7.roles_not_null()
-        roles_not_null = ONOS1_master_not_null and ONOS2_master_not_null and\
-                ONOS3_master_not_null and ONOS4_master_not_null and\
-                ONOS5_master_not_null and ONOS6_master_not_null and\
-                ONOS7_master_not_null
-        utilities.assert_equals(expect = main.TRUE,actual=roles_not_null,
-                onpass="Each device has a master",
-                onfail="Some devices don't have a master assigned")
+        # Assert that each device has a master
+        ONOS1MasterNotNull = main.ONOScli1.rolesNotNull()
+        ONOS2MasterNotNull = main.ONOScli2.rolesNotNull()
+        ONOS3MasterNotNull = main.ONOScli3.rolesNotNull()
+        ONOS4MasterNotNull = main.ONOScli4.rolesNotNull()
+        ONOS5MasterNotNull = main.ONOScli5.rolesNotNull()
+        ONOS6MasterNotNull = main.ONOScli6.rolesNotNull()
+        ONOS7MasterNotNull = main.ONOScli7.rolesNotNull()
+        rolesNotNull = ONOS1MasterNotNull and ONOS2MasterNotNull and\
+            ONOS3MasterNotNull and ONOS4MasterNotNull and\
+            ONOS5MasterNotNull and ONOS6MasterNotNull and\
+            ONOS7MasterNotNull
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=rolesNotNull,
+            onpass="Each device has a master",
+            onfail="Some devices don't have a master assigned" )
 
-
-        ONOS1_mastership = main.ONOScli1.roles()
-        ONOS2_mastership = main.ONOScli2.roles()
-        ONOS3_mastership = main.ONOScli3.roles()
-        ONOS4_mastership = main.ONOScli4.roles()
-        ONOS5_mastership = main.ONOScli5.roles()
-        ONOS6_mastership = main.ONOScli6.roles()
-        ONOS7_mastership = main.ONOScli7.roles()
-        #print json.dumps(json.loads(ONOS1_mastership), sort_keys=True, indent=4, separators=(',', ': '))
-        if "Error" in ONOS1_mastership or not ONOS1_mastership\
-                or "Error" in ONOS2_mastership or not ONOS2_mastership\
-                or "Error" in ONOS3_mastership or not ONOS3_mastership\
-                or "Error" in ONOS4_mastership or not ONOS4_mastership\
-                or "Error" in ONOS5_mastership or not ONOS5_mastership\
-                or "Error" in ONOS6_mastership or not ONOS6_mastership\
-                or "Error" in ONOS7_mastership or not ONOS7_mastership:
-                    main.log.report("Error in getting ONOS roles")
-                    main.log.warn("ONOS1 mastership response: " + repr(ONOS1_mastership))
-                    main.log.warn("ONOS2 mastership response: " + repr(ONOS2_mastership))
-                    main.log.warn("ONOS3 mastership response: " + repr(ONOS3_mastership))
-                    main.log.warn("ONOS4 mastership response: " + repr(ONOS4_mastership))
-                    main.log.warn("ONOS5 mastership response: " + repr(ONOS5_mastership))
-                    main.log.warn("ONOS6 mastership response: " + repr(ONOS6_mastership))
-                    main.log.warn("ONOS7 mastership response: " + repr(ONOS7_mastership))
-                    consistent_mastership = main.FALSE
-        elif ONOS1_mastership == ONOS2_mastership\
-                and ONOS1_mastership == ONOS3_mastership\
-                and ONOS1_mastership == ONOS4_mastership\
-                and ONOS1_mastership == ONOS5_mastership\
-                and ONOS1_mastership == ONOS6_mastership\
-                and ONOS1_mastership == ONOS7_mastership:
-                    mastership_state = ONOS1_mastership
-                    consistent_mastership = main.TRUE
-                    main.log.report("Switch roles are consistent across all ONOS nodes")
+        ONOS1Mastership = main.ONOScli1.roles()
+        ONOS2Mastership = main.ONOScli2.roles()
+        ONOS3Mastership = main.ONOScli3.roles()
+        ONOS4Mastership = main.ONOScli4.roles()
+        ONOS5Mastership = main.ONOScli5.roles()
+        ONOS6Mastership = main.ONOScli6.roles()
+        ONOS7Mastership = main.ONOScli7.roles()
+        if "Error" in ONOS1Mastership or not ONOS1Mastership\
+                or "Error" in ONOS2Mastership or not ONOS2Mastership\
+                or "Error" in ONOS3Mastership or not ONOS3Mastership\
+                or "Error" in ONOS4Mastership or not ONOS4Mastership\
+                or "Error" in ONOS5Mastership or not ONOS5Mastership\
+                or "Error" in ONOS6Mastership or not ONOS6Mastership\
+                or "Error" in ONOS7Mastership or not ONOS7Mastership:
+            main.log.report( "Error in getting ONOS roles" )
+            main.log.warn(
+                "ONOS1 mastership response: " +
+                repr( ONOS1Mastership ) )
+            main.log.warn(
+                "ONOS2 mastership response: " +
+                repr( ONOS2Mastership ) )
+            main.log.warn(
+                "ONOS3 mastership response: " +
+                repr( ONOS3Mastership ) )
+            main.log.warn(
+                "ONOS4 mastership response: " +
+                repr( ONOS4Mastership ) )
+            main.log.warn(
+                "ONOS5 mastership response: " +
+                repr( ONOS5Mastership ) )
+            main.log.warn(
+                "ONOS6 mastership response: " +
+                repr( ONOS6Mastership ) )
+            main.log.warn(
+                "ONOS7 mastership response: " +
+                repr( ONOS7Mastership ) )
+            consistentMastership = main.FALSE
+        elif ONOS1Mastership == ONOS2Mastership\
+                and ONOS1Mastership == ONOS3Mastership\
+                and ONOS1Mastership == ONOS4Mastership\
+                and ONOS1Mastership == ONOS5Mastership\
+                and ONOS1Mastership == ONOS6Mastership\
+                and ONOS1Mastership == ONOS7Mastership:
+            mastershipState = ONOS1Mastership
+            consistentMastership = main.TRUE
+            main.log.report(
+                "Switch roles are consistent across all ONOS nodes" )
         else:
-            main.log.warn("ONOS1 roles: ", json.dumps(json.loads(ONOS1_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS2 roles: ", json.dumps(json.loads(ONOS2_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS3 roles: ", json.dumps(json.loads(ONOS3_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS4 roles: ", json.dumps(json.loads(ONOS4_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS5 roles: ", json.dumps(json.loads(ONOS5_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS6 roles: ", json.dumps(json.loads(ONOS6_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS7 roles: ", json.dumps(json.loads(ONOS7_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            consistent_mastership = main.FALSE
-        utilities.assert_equals(expect = main.TRUE,actual=consistent_mastership,
-                onpass="Switch roles are consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of switch roles")
+            main.log.warn(
+                "ONOS1 roles: ",
+                json.dumps(
+                    json.loads( ONOS1Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS2 roles: ",
+                json.dumps(
+                    json.loads( ONOS2Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS3 roles: ",
+                json.dumps(
+                    json.loads( ONOS3Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS4 roles: ",
+                json.dumps(
+                    json.loads( ONOS4Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS5 roles: ",
+                json.dumps(
+                    json.loads( ONOS5Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS6 roles: ",
+                json.dumps(
+                    json.loads( ONOS6Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS7 roles: ",
+                json.dumps(
+                    json.loads( ONOS7Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            consistentMastership = main.FALSE
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=consistentMastership,
+            onpass="Switch roles are consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of switch roles" )
 
-
-        main.step("Get the intents from each controller")
-        global intent_state
-        intent_state = []
-        ONOS1_intents = main.ONOScli1.intents( json_format=True )
-        ONOS2_intents = main.ONOScli2.intents( json_format=True )
-        ONOS3_intents = main.ONOScli3.intents( json_format=True )
-        ONOS4_intents = main.ONOScli4.intents( json_format=True )
-        ONOS5_intents = main.ONOScli5.intents( json_format=True )
-        ONOS6_intents = main.ONOScli6.intents( json_format=True )
-        ONOS7_intents = main.ONOScli7.intents( json_format=True )
-        intent_check = main.FALSE
-        if "Error" in ONOS1_intents or not ONOS1_intents\
-                or "Error" in ONOS2_intents or not ONOS2_intents\
-                or "Error" in ONOS3_intents or not ONOS3_intents\
-                or "Error" in ONOS4_intents or not ONOS4_intents\
-                or "Error" in ONOS5_intents or not ONOS5_intents\
-                or "Error" in ONOS6_intents or not ONOS6_intents\
-                or "Error" in ONOS7_intents or not ONOS7_intents:
-                    main.log.report("Error in getting ONOS intents")
-                    main.log.warn("ONOS1 intents response: " + repr(ONOS1_intents))
-                    main.log.warn("ONOS2 intents response: " + repr(ONOS2_intents))
-                    main.log.warn("ONOS3 intents response: " + repr(ONOS3_intents))
-                    main.log.warn("ONOS4 intents response: " + repr(ONOS4_intents))
-                    main.log.warn("ONOS5 intents response: " + repr(ONOS5_intents))
-                    main.log.warn("ONOS6 intents response: " + repr(ONOS6_intents))
-                    main.log.warn("ONOS7 intents response: " + repr(ONOS7_intents))
-        elif ONOS1_intents == ONOS2_intents\
-                and ONOS1_intents == ONOS3_intents\
-                and ONOS1_intents == ONOS4_intents\
-                and ONOS1_intents == ONOS5_intents\
-                and ONOS1_intents == ONOS6_intents\
-                and ONOS1_intents == ONOS7_intents:
-                    intent_state = ONOS1_intents
-                    intent_check = main.TRUE
-                    main.log.report("Intents are consistent across all ONOS nodes")
+        main.step( "Get the intents from each controller" )
+        global intentState
+        intentState = []
+        ONOS1Intents = main.ONOScli1.intents( jsonFormat=True )
+        ONOS2Intents = main.ONOScli2.intents( jsonFormat=True )
+        ONOS3Intents = main.ONOScli3.intents( jsonFormat=True )
+        ONOS4Intents = main.ONOScli4.intents( jsonFormat=True )
+        ONOS5Intents = main.ONOScli5.intents( jsonFormat=True )
+        ONOS6Intents = main.ONOScli6.intents( jsonFormat=True )
+        ONOS7Intents = main.ONOScli7.intents( jsonFormat=True )
+        intentCheck = main.FALSE
+        if "Error" in ONOS1Intents or not ONOS1Intents\
+                or "Error" in ONOS2Intents or not ONOS2Intents\
+                or "Error" in ONOS3Intents or not ONOS3Intents\
+                or "Error" in ONOS4Intents or not ONOS4Intents\
+                or "Error" in ONOS5Intents or not ONOS5Intents\
+                or "Error" in ONOS6Intents or not ONOS6Intents\
+                or "Error" in ONOS7Intents or not ONOS7Intents:
+            main.log.report( "Error in getting ONOS intents" )
+            main.log.warn( "ONOS1 intents response: " + repr( ONOS1Intents ) )
+            main.log.warn( "ONOS2 intents response: " + repr( ONOS2Intents ) )
+            main.log.warn( "ONOS3 intents response: " + repr( ONOS3Intents ) )
+            main.log.warn( "ONOS4 intents response: " + repr( ONOS4Intents ) )
+            main.log.warn( "ONOS5 intents response: " + repr( ONOS5Intents ) )
+            main.log.warn( "ONOS6 intents response: " + repr( ONOS6Intents ) )
+            main.log.warn( "ONOS7 intents response: " + repr( ONOS7Intents ) )
+        elif ONOS1Intents == ONOS2Intents\
+                and ONOS1Intents == ONOS3Intents\
+                and ONOS1Intents == ONOS4Intents\
+                and ONOS1Intents == ONOS5Intents\
+                and ONOS1Intents == ONOS6Intents\
+                and ONOS1Intents == ONOS7Intents:
+            intentState = ONOS1Intents
+            intentCheck = main.TRUE
+            main.log.report( "Intents are consistent across all ONOS nodes" )
         else:
-            main.log.warn("ONOS1 intents: ", json.dumps(json.loads(ONOS1_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS2 intents: ", json.dumps(json.loads(ONOS2_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS3 intents: ", json.dumps(json.loads(ONOS3_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS4 intents: ", json.dumps(json.loads(ONOS4_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS5 intents: ", json.dumps(json.loads(ONOS5_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS6 intents: ", json.dumps(json.loads(ONOS6_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS7 intents: ", json.dumps(json.loads(ONOS7_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-        utilities.assert_equals(expect = main.TRUE,actual=intent_check,
-                onpass="Intents are consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of intents")
+            main.log.warn(
+                "ONOS1 intents: ",
+                json.dumps(
+                    json.loads( ONOS1Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS2 intents: ",
+                json.dumps(
+                    json.loads( ONOS2Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS3 intents: ",
+                json.dumps(
+                    json.loads( ONOS3Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS4 intents: ",
+                json.dumps(
+                    json.loads( ONOS4Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS5 intents: ",
+                json.dumps(
+                    json.loads( ONOS5Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS6 intents: ",
+                json.dumps(
+                    json.loads( ONOS6Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS7 intents: ",
+                json.dumps(
+                    json.loads( ONOS7Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=intentCheck,
+            onpass="Intents are consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of intents" )
 
-
-        main.step("Get the flows from each controller")
-        global flow_state
-        flow_state = []
-        ONOS1_flows = main.ONOScli1.flows( json_format=True )
-        ONOS2_flows = main.ONOScli2.flows( json_format=True )
-        ONOS3_flows = main.ONOScli3.flows( json_format=True )
-        ONOS4_flows = main.ONOScli4.flows( json_format=True )
-        ONOS5_flows = main.ONOScli5.flows( json_format=True )
-        ONOS6_flows = main.ONOScli6.flows( json_format=True )
-        ONOS7_flows = main.ONOScli7.flows( json_format=True )
-        flow_check = main.FALSE
-        if "Error" in ONOS1_flows or not ONOS1_flows\
-                or "Error" in ONOS2_flows or not ONOS2_flows\
-                or "Error" in ONOS3_flows or not ONOS3_flows\
-                or "Error" in ONOS4_flows or not ONOS4_flows\
-                or "Error" in ONOS5_flows or not ONOS5_flows\
-                or "Error" in ONOS6_flows or not ONOS6_flows\
-                or "Error" in ONOS7_flows or not ONOS7_flows:
-                    main.log.report("Error in getting ONOS intents")
-                    main.log.warn("ONOS1 flows repsponse: "+ ONOS1_flows)
-                    main.log.warn("ONOS2 flows repsponse: "+ ONOS2_flows)
-                    main.log.warn("ONOS3 flows repsponse: "+ ONOS3_flows)
-                    main.log.warn("ONOS4 flows repsponse: "+ ONOS4_flows)
-                    main.log.warn("ONOS5 flows repsponse: "+ ONOS5_flows)
-                    main.log.warn("ONOS6 flows repsponse: "+ ONOS6_flows)
-                    main.log.warn("ONOS7 flows repsponse: "+ ONOS7_flows)
-        elif len(json.loads(ONOS1_flows)) == len(json.loads(ONOS2_flows))\
-                and len(json.loads(ONOS1_flows)) == len(json.loads(ONOS3_flows))\
-                and len(json.loads(ONOS1_flows)) == len(json.loads(ONOS4_flows))\
-                and len(json.loads(ONOS1_flows)) == len(json.loads(ONOS5_flows))\
-                and len(json.loads(ONOS1_flows)) == len(json.loads(ONOS6_flows))\
-                and len(json.loads(ONOS1_flows)) == len(json.loads(ONOS7_flows)):
-                #TODO: Do a better check, maybe compare flows on switches?
-                    flow_state = ONOS1_flows
-                    flow_check = main.TRUE
-                    main.log.report("Flow count is consistent across all ONOS nodes")
+        main.step( "Get the flows from each controller" )
+        global flowState
+        flowState = []
+        ONOS1Flows = main.ONOScli1.flows( jsonFormat=True )
+        ONOS2Flows = main.ONOScli2.flows( jsonFormat=True )
+        ONOS3Flows = main.ONOScli3.flows( jsonFormat=True )
+        ONOS4Flows = main.ONOScli4.flows( jsonFormat=True )
+        ONOS5Flows = main.ONOScli5.flows( jsonFormat=True )
+        ONOS6Flows = main.ONOScli6.flows( jsonFormat=True )
+        ONOS7Flows = main.ONOScli7.flows( jsonFormat=True )
+        ONOS1FlowsJson = json.loads( ONOS1Flows )
+        ONOS2FlowsJson = json.loads( ONOS2Flows )
+        ONOS3FlowsJson = json.loads( ONOS3Flows )
+        ONOS4FlowsJson = json.loads( ONOS4Flows )
+        ONOS5FlowsJson = json.loads( ONOS5Flows )
+        ONOS6FlowsJson = json.loads( ONOS6Flows )
+        ONOS7FlowsJson = json.loads( ONOS7Flows )
+        flowCheck = main.FALSE
+        if "Error" in ONOS1Flows or not ONOS1Flows\
+                or "Error" in ONOS2Flows or not ONOS2Flows\
+                or "Error" in ONOS3Flows or not ONOS3Flows\
+                or "Error" in ONOS4Flows or not ONOS4Flows\
+                or "Error" in ONOS5Flows or not ONOS5Flows\
+                or "Error" in ONOS6Flows or not ONOS6Flows\
+                or "Error" in ONOS7Flows or not ONOS7Flows:
+            main.log.report( "Error in getting ONOS intents" )
+            main.log.warn( "ONOS1 flows repsponse: " + ONOS1Flows )
+            main.log.warn( "ONOS2 flows repsponse: " + ONOS2Flows )
+            main.log.warn( "ONOS3 flows repsponse: " + ONOS3Flows )
+            main.log.warn( "ONOS4 flows repsponse: " + ONOS4Flows )
+            main.log.warn( "ONOS5 flows repsponse: " + ONOS5Flows )
+            main.log.warn( "ONOS6 flows repsponse: " + ONOS6Flows )
+            main.log.warn( "ONOS7 flows repsponse: " + ONOS7Flows )
+        elif len( ONOS1FlowsJson ) == len( ONOS2FlowsJson )\
+                and len( ONOS1FlowsJson ) == len( ONOS3FlowsJson )\
+                and len( ONOS1FlowsJson ) == len( ONOS4FlowsJson )\
+                and len( ONOS1FlowsJson ) == len( ONOS5FlowsJson )\
+                and len( ONOS1FlowsJson ) == len( ONOS6FlowsJson )\
+                and len( ONOS1FlowsJson ) == len( ONOS7FlowsJson ):
+                # TODO: Do a better check, maybe compare flows on switches?
+            flowState = ONOS1Flows
+            flowCheck = main.TRUE
+            main.log.report( "Flow count is consistent across all ONOS nodes" )
         else:
-            main.log.warn("ONOS1 flows: "+ json.dumps(json.loads(ONOS1_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS2 flows: "+ json.dumps(json.loads(ONOS2_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS3 flows: "+ json.dumps(json.loads(ONOS3_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS4 flows: "+ json.dumps(json.loads(ONOS4_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS5 flows: "+ json.dumps(json.loads(ONOS5_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS6 flows: "+ json.dumps(json.loads(ONOS6_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS7 flows: "+ json.dumps(json.loads(ONOS7_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-        utilities.assert_equals(expect = main.TRUE,actual=flow_check,
-                onpass="The flow count is consistent across all ONOS nodes",
-                onfail="ONOS nodes have different flow counts")
+            main.log.warn( "ONOS1 flows: " +
+                           json.dumps( ONOS1FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS2 flows: " +
+                           json.dumps( ONOS2FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS3 flows: " +
+                           json.dumps( ONOS3FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS4 flows: " +
+                           json.dumps( ONOS4FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS5 flows: " +
+                           json.dumps( ONOS5FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS6 flows: " +
+                           json.dumps( ONOS6FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS7 flows: " +
+                           json.dumps( ONOS7FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=flowCheck,
+            onpass="The flow count is consistent across all ONOS nodes",
+            onfail="ONOS nodes have different flow counts" )
 
-
-        main.step("Get the OF Table entries")
+        main.step( "Get the OF Table entries" )
         global flows
-        flows=[]
-        for i in range(1,29):
-            flows.append(main.Mininet2.get_flowTable(1.3, "s"+str(i)))
+        flows = []
+        for i in range( 1, 29 ):
+            flows.append( main.Mininet2.getFlowTable( 1.3, "s" + str( i ) ) )
 
-        #TODO: Compare switch flow tables with ONOS flow tables
+        # TODO: Compare switch flow tables with ONOS flow tables
 
-        main.step("Start continuous pings")
-        main.Mininet2.pingLong(src=main.params['PING']['source1'],
-                            target=main.params['PING']['target1'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source2'],
-                            target=main.params['PING']['target2'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source3'],
-                            target=main.params['PING']['target3'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source4'],
-                            target=main.params['PING']['target4'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source5'],
-                            target=main.params['PING']['target5'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source6'],
-                            target=main.params['PING']['target6'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source7'],
-                            target=main.params['PING']['target7'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source8'],
-                            target=main.params['PING']['target8'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source9'],
-                            target=main.params['PING']['target9'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source10'],
-                            target=main.params['PING']['target10'],pingTime=500)
+        main.step( "Start continuous pings" )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source1' ],
+            target=main.params[ 'PING' ][ 'target1' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source2' ],
+            target=main.params[ 'PING' ][ 'target2' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source3' ],
+            target=main.params[ 'PING' ][ 'target3' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source4' ],
+            target=main.params[ 'PING' ][ 'target4' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source5' ],
+            target=main.params[ 'PING' ][ 'target5' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source6' ],
+            target=main.params[ 'PING' ][ 'target6' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source7' ],
+            target=main.params[ 'PING' ][ 'target7' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source8' ],
+            target=main.params[ 'PING' ][ 'target8' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source9' ],
+            target=main.params[ 'PING' ][ 'target9' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source10' ],
+            target=main.params[ 'PING' ][ 'target10' ],
+            pingTime=500 )
 
-        main.step("Create TestONTopology object")
+        main.step( "Create TestONTopology object" )
         ctrls = []
         count = 1
         while True:
             temp = ()
-            if ('ip' + str(count)) in main.params['CTRL']:
-                temp = temp + (getattr(main,('ONOS' + str(count))),)
-                temp = temp + ("ONOS"+str(count),)
-                temp = temp + (main.params['CTRL']['ip'+str(count)],)
-                temp = temp + (eval(main.params['CTRL']['port'+str(count)]),)
-                ctrls.append(temp)
+            if ( 'ip' + str( count ) ) in main.params[ 'CTRL' ]:
+                temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
+                temp = temp + ( "ONOS" + str( count ), )
+                temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
+                temp = temp + \
+                    ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
+                ctrls.append( temp )
                 count = count + 1
             else:
                 break
-        MNTopo = TestONTopology(main.Mininet1, ctrls) # can also add Intent API info for intent operations
+        MNTopo = TestONTopology(
+            main.Mininet1,
+            ctrls )  # can also add Intent API info for intent operations
 
-        main.step("Collecting topology information from ONOS")
+        main.step( "Collecting topology information from ONOS" )
         devices = []
         devices.append( main.ONOScli1.devices() )
         devices.append( main.ONOScli2.devices() )
@@ -846,488 +932,541 @@
         clusters.append( main.ONOScli5.clusters() )
         clusters.append( main.ONOScli6.clusters() )
         clusters.append( main.ONOScli7.clusters() )
-        paths = []
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli1.topology() )
-        paths.append( temp_topo.get('paths', False) )
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli2.topology() )
-        paths.append( temp_topo.get('paths', False) )
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli3.topology() )
-        paths.append( temp_topo.get('paths', False) )
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli4.topology() )
-        paths.append( temp_topo.get('paths', False) )
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli5.topology() )
-        paths.append( temp_topo.get('paths', False) )
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli6.topology() )
-        paths.append( temp_topo.get('paths', False) )
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli7.topology() )
-        paths.append( temp_topo.get('paths', False) )
+        # Compare json objects for hosts and dataplane clusters
 
-        #Compare json objects for hosts, dataplane clusters and paths
-
-        #hosts
-        consistent_hosts_result = main.TRUE
+        # hosts
+        consistentHostsResult = main.TRUE
         for controller in range( len( hosts ) ):
-            if not "Error" in hosts[controller]:
-                if hosts[controller] == hosts[0]:
+            controllerStr = str( controller + 1 )
+            if "Error" not in hosts[ controller ]:
+                if hosts[ controller ] == hosts[ 0 ]:
                     continue
-                else:#hosts not consistent
-                    main.log.report("hosts from ONOS" + str(controller + 1) + " is inconsistent with ONOS1")
-                    main.log.warn( repr( hosts[controller] ) )
-                    consistent_hosts_result = main.FALSE
+                else:  # hosts not consistent
+                    main.log.report( "hosts from ONOS" +
+                                     controllerStr +
+                                     " is inconsistent with ONOS1" )
+                    main.log.warn( repr( hosts[ controller ] ) )
+                    consistentHostsResult = main.FALSE
 
             else:
-                main.log.report("Error in getting ONOS hosts from ONOS" + str(controller + 1) )
-                consistent_hosts_result = main.FALSE
-                main.log.warn("ONOS" + str(controller + 1) + " hosts response: " + repr(hosts[controller]) )
-        utilities.assert_equals(expect = main.TRUE,actual=consistent_hosts_result,
-                onpass="Hosts view is consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of hosts")
+                main.log.report( "Error in getting ONOS hosts from ONOS" +
+                                 controllerStr )
+                consistentHostsResult = main.FALSE
+                main.log.warn( "ONOS" + controllerStr +
+                               " hosts response: " +
+                               repr( hosts[ controller ] ) )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=consistentHostsResult,
+            onpass="Hosts view is consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of hosts" )
 
-        #Strongly connected clusters of devices
-        consistent_clusters_result = main.TRUE
+        # Strongly connected clusters of devices
+        consistentClustersResult = main.TRUE
         for controller in range( len( clusters ) ):
-            if not "Error" in clusters[controller]:
-                if clusters[controller] == clusters[0]:
+            if "Error" not in clusters[ controller ]:
+                if clusters[ controller ] == clusters[ 0 ]:
                     continue
-                else:#clusters not consistent
-                    main.log.report("clusters from ONOS" + str(controller + 1) + " is inconsistent with ONOS1")
-                    consistent_clusters_result = main.FALSE
+                else:  # clusters not consistent
+                    main.log.report( "clusters from ONOS" +
+                                     controllerStr +
+                                     " is inconsistent with ONOS1" )
+                    consistentClustersResult = main.FALSE
 
             else:
-                main.log.report("Error in getting dataplane clusters from ONOS" + str(controller + 1) )
-                consistent_clusters_result = main.FALSE
-                main.log.warn("ONOS" + str(controller + 1) + " clusters response: " + repr(clusters[controller]) )
-        utilities.assert_equals(expect = main.TRUE,actual=consistent_clusters_result,
-                onpass="Clusters view is consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of clusters")
-        num_clusters =  len(json.loads(clusters[0])) #there should always only be one cluster
-        utilities.assert_equals(expect = 1, actual = num_clusters,
-                onpass="ONOS shows 1 SCC",
-                onfail="ONOS shows "+str(num_clusters) +" SCCs")
+                main.log.report( "Error in getting dataplane clusters " +
+                                 "from ONOS" + controllerStr )
+                consistentClustersResult = main.FALSE
+                main.log.warn( "ONOS" + controllerStr +
+                               " clusters response: " +
+                               repr( clusters[ controller ] ) )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=consistentClustersResult,
+            onpass="Clusters view is consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of clusters" )
+        # there should always only be one cluster
+        numClusters = len( json.loads( clusters[ 0 ] ) )
+        utilities.assert_equals(
+            expect=1,
+            actual=numClusters,
+            onpass="ONOS shows 1 SCC",
+            onfail="ONOS shows " +
+            str( numClusters ) +
+            " SCCs" )
 
-
-        #paths
-        consistent_paths_result = main.TRUE
-        for controller in range( len( paths ) ):
-            if not "Error" in paths[controller]:
-                if paths[controller] == paths[0]:
-                    continue
-                else:#paths not consistent
-                    main.log.report("paths from ONOS" + str(controller + 1) + " is inconsistent with ONOS1")
-                    consistent_paths_result = main.FALSE
-
+        main.step( "Comparing ONOS topology to MN" )
+        devicesResults = main.TRUE
+        portsResults = main.TRUE
+        linksResults = main.TRUE
+        for controller in range( numControllers ):
+            controllerStr = str( controller + 1 )
+            if devices[ controller ] or "Error" not in devices[ controller ]:
+                currentDevicesResult = main.Mininet1.compareSwitches(
+                    MNTopo,
+                    json.loads(
+                        devices[ controller ] ) )
             else:
-                main.log.report("Error in getting paths from ONOS" + str(controller + 1) )
-                consistent_paths_result = main.FALSE
-                main.log.warn("ONOS" + str(controller + 1) + " paths response: " + repr(paths[controller]) )
-        utilities.assert_equals(expect = main.TRUE,actual=consistent_paths_result,
-                onpass="Paths count is consistent across all ONOS nodes",
-                onfail="ONOS nodes have different counts of paths")
+                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" )
 
-
-        main.step("Comparing ONOS topology to MN")
-        devices_results = main.TRUE
-        ports_results = main.TRUE
-        links_results = main.TRUE
-        for controller in range(num_controllers):
-            if devices[controller] or not "Error" in devices[controller]:
-                current_devices_result =  main.Mininet1.compare_switches(MNTopo, json.loads(devices[controller]))
+            if ports[ controller ] or "Error" not in ports[ controller ]:
+                currentPortsResult = main.Mininet1.comparePorts(
+                    MNTopo,
+                    json.loads(
+                        ports[ controller ] ) )
             else:
-                current_devices_result = main.FALSE
-            utilities.assert_equals(expect=main.TRUE, actual=current_devices_result,
-                    onpass="ONOS"+str(int(controller+1))+" Switches view is correct",
-                    onfail="ONOS"+str(int(controller+1))+" Switches view is incorrect")
+                currentPortsResult = main.FALSE
+            utilities.assert_equals( expect=main.TRUE,
+                                    actual=currentPortsResult,
+                                    onpass="ONOS" + controllerStr +
+                                    " ports view is correct",
+                                    onfail="ONOS" + controllerStr +
+                                    " ports view is incorrect" )
 
-            if ports[controller] or not "Error" in ports[controller]:
-                current_ports_result =  main.Mininet1.compare_ports(MNTopo, json.loads(ports[controller]))
+            if links[ controller ] or "Error" not in links[ controller ]:
+                currentLinksResult = main.Mininet1.compareLinks(
+                    MNTopo,
+                    json.loads(
+                        links[ controller ] ) )
             else:
-                current_ports_result = main.FALSE
-            utilities.assert_equals(expect=main.TRUE, actual=current_ports_result,
-                    onpass="ONOS"+str(int(controller+1))+" ports view is correct",
-                    onfail="ONOS"+str(int(controller+1))+" ports view is incorrect")
+                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 links[controller] or not "Error" in links[controller]:
-                current_links_result =  main.Mininet1.compare_links(MNTopo, json.loads(links[controller]))
-            else:
-                current_links_result = main.FALSE
-            utilities.assert_equals(expect=main.TRUE, actual=current_links_result,
-                    onpass="ONOS"+str(int(controller+1))+" links view is correct",
-                    onfail="ONOS"+str(int(controller+1))+" links view is incorrect")
+            devicesResults = devicesResults and currentDevicesResult
+            portsResults = portsResults and currentPortsResult
+            linksResults = linksResults and currentLinksResult
 
-            devices_results = devices_results and current_devices_result
-            ports_results = ports_results and current_ports_result
-            links_results = links_results and current_links_result
+        topoResult = devicesResults and portsResults and linksResults\
+            and consistentHostsResult and consistentClustersResult
+        utilities.assert_equals( expect=main.TRUE, actual=topoResult,
+                                onpass="Topology Check Test successful",
+                                onfail="Topology Check Test NOT successful" )
 
-        topo_result = devices_results and ports_results and links_results\
-                and consistent_hosts_result and consistent_clusters_result\
-                and consistent_paths_result
-        utilities.assert_equals(expect=main.TRUE, actual=topo_result,
-                onpass="Topology Check Test successful",
-                onfail="Topology Check Test NOT successful")
+        finalAssert = main.TRUE
+        finalAssert = finalAssert and topoResult and flowCheck \
+            and intentCheck and consistentMastership and rolesNotNull
+        utilities.assert_equals( expect=main.TRUE, actual=finalAssert,
+                                onpass="State check successful",
+                                onfail="State check NOT successful" )
 
-        final_assert = main.TRUE
-        final_assert = final_assert and topo_result and flow_check \
-                and intent_check and consistent_mastership and roles_not_null
-        utilities.assert_equals(expect=main.TRUE, actual=final_assert,
-                onpass="State check successful",
-                onfail="State check NOT successful")
-
-
-    def CASE6(self,main) :
-        '''
+    def CASE6( self, main ):
+        """
         The Failure case.
-        '''
-        main.log.report("Restart entire ONOS cluster")
-        main.log.case("Restart entire ONOS cluster")
-        main.ONOSbench.onos_kill(ONOS1_ip)
-        main.ONOSbench.onos_kill(ONOS2_ip)
-        main.ONOSbench.onos_kill(ONOS3_ip)
-        main.ONOSbench.onos_kill(ONOS4_ip)
-        main.ONOSbench.onos_kill(ONOS5_ip)
-        main.ONOSbench.onos_kill(ONOS6_ip)
-        main.ONOSbench.onos_kill(ONOS7_ip)
+        """
+        main.log.report( "Restart entire ONOS cluster" )
+        main.log.case( "Restart entire ONOS cluster" )
+        main.ONOSbench.onosKill( ONOS1Ip )
+        main.ONOSbench.onosKill( ONOS2Ip )
+        main.ONOSbench.onosKill( ONOS3Ip )
+        main.ONOSbench.onosKill( ONOS4Ip )
+        main.ONOSbench.onosKill( ONOS5Ip )
+        main.ONOSbench.onosKill( ONOS6Ip )
+        main.ONOSbench.onosKill( ONOS7Ip )
 
-        main.step("Checking if ONOS is up yet")
+        main.step( "Checking if ONOS is up yet" )
         count = 0
-        onos_isup_result = main.FALSE
-        while onos_isup_result == main.FALSE and count < 10:
-            onos1_isup = main.ONOSbench.isup(ONOS1_ip)
-            onos2_isup = main.ONOSbench.isup(ONOS2_ip)
-            onos3_isup = main.ONOSbench.isup(ONOS3_ip)
-            onos4_isup = main.ONOSbench.isup(ONOS4_ip)
-            onos5_isup = main.ONOSbench.isup(ONOS5_ip)
-            onos6_isup = main.ONOSbench.isup(ONOS6_ip)
-            onos7_isup = main.ONOSbench.isup(ONOS7_ip)
-            onos_isup_result = onos1_isup and onos2_isup and onos3_isup\
-                    and onos4_isup and onos5_isup and onos6_isup and onos7_isup
+        onosIsupResult = main.FALSE
+        while onosIsupResult == main.FALSE and count < 10:
+            onos1Isup = main.ONOSbench.isup( ONOS1Ip )
+            onos2Isup = main.ONOSbench.isup( ONOS2Ip )
+            onos3Isup = main.ONOSbench.isup( ONOS3Ip )
+            onos4Isup = main.ONOSbench.isup( ONOS4Ip )
+            onos5Isup = main.ONOSbench.isup( ONOS5Ip )
+            onos6Isup = main.ONOSbench.isup( ONOS6Ip )
+            onos7Isup = main.ONOSbench.isup( ONOS7Ip )
+            onosIsupResult = onos1Isup and onos2Isup and onos3Isup\
+                and onos4Isup and onos5Isup and onos6Isup and onos7Isup
             count = count + 1
         # TODO: if it becomes an issue, we can retry this step  a few times
 
+        cliResult1 = main.ONOScli1.startOnosCli( ONOS1Ip )
+        cliResult2 = main.ONOScli2.startOnosCli( ONOS2Ip )
+        cliResult3 = main.ONOScli3.startOnosCli( ONOS3Ip )
+        cliResult4 = main.ONOScli4.startOnosCli( ONOS4Ip )
+        cliResult5 = main.ONOScli5.startOnosCli( ONOS5Ip )
+        cliResult6 = main.ONOScli6.startOnosCli( ONOS6Ip )
+        cliResult7 = main.ONOScli7.startOnosCli( ONOS7Ip )
+        cliResults = cliResult1 and cliResult2 and cliResult3\
+            and cliResult4 and cliResult5 and cliResult6\
+            and cliResult7
 
-        cli_result1 = main.ONOScli1.start_onos_cli(ONOS1_ip)
-        cli_result2 = main.ONOScli2.start_onos_cli(ONOS2_ip)
-        cli_result3 = main.ONOScli3.start_onos_cli(ONOS3_ip)
-        cli_result4 = main.ONOScli4.start_onos_cli(ONOS4_ip)
-        cli_result5 = main.ONOScli5.start_onos_cli(ONOS5_ip)
-        cli_result6 = main.ONOScli6.start_onos_cli(ONOS6_ip)
-        cli_result7 = main.ONOScli7.start_onos_cli(ONOS7_ip)
-        cli_results = cli_result1 and cli_result2 and cli_result3\
-                and cli_result4 and cli_result5 and cli_result6\
-                and cli_result7
+        caseResults = main.TRUE and onosIsupResult and cliResults
+        utilities.assert_equals( expect=main.TRUE, actual=caseResults,
+                                onpass="ONOS restart successful",
+                                onfail="ONOS restart NOT successful" )
 
-        case_results = main.TRUE and onos_isup_result and cli_results
-        utilities.assert_equals(expect=main.TRUE, actual=case_results,
-                onpass="ONOS restart successful",
-                onfail="ONOS restart NOT successful")
-
-
-    def CASE7(self,main) :
-        '''
+    def CASE7( self, main ):
+        """
         Check state after ONOS failure
-        '''
-        import os
+        """
         import json
-        main.case("Running ONOS Constant State Tests")
+        main.case( "Running ONOS Constant State Tests" )
 
-        #Assert that each device has a master
-        ONOS1_master_not_null = main.ONOScli1.roles_not_null()
-        ONOS2_master_not_null = main.ONOScli2.roles_not_null()
-        ONOS3_master_not_null = main.ONOScli3.roles_not_null()
-        ONOS4_master_not_null = main.ONOScli4.roles_not_null()
-        ONOS5_master_not_null = main.ONOScli5.roles_not_null()
-        ONOS6_master_not_null = main.ONOScli6.roles_not_null()
-        ONOS7_master_not_null = main.ONOScli7.roles_not_null()
-        roles_not_null = ONOS1_master_not_null and ONOS2_master_not_null and\
-                ONOS3_master_not_null and ONOS4_master_not_null and\
-                ONOS5_master_not_null and ONOS6_master_not_null and\
-                ONOS7_master_not_null
-        utilities.assert_equals(expect = main.TRUE,actual=roles_not_null,
-                onpass="Each device has a master",
-                onfail="Some devices don't have a master assigned")
+        # Assert that each device has a master
+        ONOS1MasterNotNull = main.ONOScli1.rolesNotNull()
+        ONOS2MasterNotNull = main.ONOScli2.rolesNotNull()
+        ONOS3MasterNotNull = main.ONOScli3.rolesNotNull()
+        ONOS4MasterNotNull = main.ONOScli4.rolesNotNull()
+        ONOS5MasterNotNull = main.ONOScli5.rolesNotNull()
+        ONOS6MasterNotNull = main.ONOScli6.rolesNotNull()
+        ONOS7MasterNotNull = main.ONOScli7.rolesNotNull()
+        rolesNotNull = ONOS1MasterNotNull and ONOS2MasterNotNull and\
+            ONOS3MasterNotNull and ONOS4MasterNotNull and\
+            ONOS5MasterNotNull and ONOS6MasterNotNull and\
+            ONOS7MasterNotNull
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=rolesNotNull,
+            onpass="Each device has a master",
+            onfail="Some devices don't have a master assigned" )
 
-
-
-        main.step("Check if switch roles are consistent across all nodes")
-        ONOS1_mastership = main.ONOScli1.roles()
-        ONOS2_mastership = main.ONOScli2.roles()
-        ONOS3_mastership = main.ONOScli3.roles()
-        ONOS4_mastership = main.ONOScli4.roles()
-        ONOS5_mastership = main.ONOScli5.roles()
-        ONOS6_mastership = main.ONOScli6.roles()
-        ONOS7_mastership = main.ONOScli7.roles()
-        #print json.dumps(json.loads(ONOS1_mastership), sort_keys=True, indent=4, separators=(',', ': '))
-        if "Error" in ONOS1_mastership or not ONOS1_mastership\
-                or "Error" in ONOS2_mastership or not ONOS2_mastership\
-                or "Error" in ONOS3_mastership or not ONOS3_mastership\
-                or "Error" in ONOS4_mastership or not ONOS4_mastership\
-                or "Error" in ONOS5_mastership or not ONOS5_mastership\
-                or "Error" in ONOS6_mastership or not ONOS6_mastership\
-                or "Error" in ONOS7_mastership or not ONOS7_mastership:
-                    main.log.error("Error in getting ONOS mastership")
-                    main.log.warn("ONOS1 mastership response: " + repr(ONOS1_mastership))
-                    main.log.warn("ONOS2 mastership response: " + repr(ONOS2_mastership))
-                    main.log.warn("ONOS3 mastership response: " + repr(ONOS3_mastership))
-                    main.log.warn("ONOS4 mastership response: " + repr(ONOS4_mastership))
-                    main.log.warn("ONOS5 mastership response: " + repr(ONOS5_mastership))
-                    main.log.warn("ONOS6 mastership response: " + repr(ONOS6_mastership))
-                    main.log.warn("ONOS7 mastership response: " + repr(ONOS7_mastership))
-                    consistent_mastership = main.FALSE
-        elif ONOS1_mastership == ONOS2_mastership\
-                and ONOS1_mastership == ONOS3_mastership\
-                and ONOS1_mastership == ONOS4_mastership\
-                and ONOS1_mastership == ONOS5_mastership\
-                and ONOS1_mastership == ONOS6_mastership\
-                and ONOS1_mastership == ONOS7_mastership:
-                    consistent_mastership = main.TRUE
-                    main.log.report("Switch roles are consistent across all ONOS nodes")
+        main.step( "Check if switch roles are consistent across all nodes" )
+        ONOS1Mastership = main.ONOScli1.roles()
+        ONOS2Mastership = main.ONOScli2.roles()
+        ONOS3Mastership = main.ONOScli3.roles()
+        ONOS4Mastership = main.ONOScli4.roles()
+        ONOS5Mastership = main.ONOScli5.roles()
+        ONOS6Mastership = main.ONOScli6.roles()
+        ONOS7Mastership = main.ONOScli7.roles()
+        if "Error" in ONOS1Mastership or not ONOS1Mastership\
+                or "Error" in ONOS2Mastership or not ONOS2Mastership\
+                or "Error" in ONOS3Mastership or not ONOS3Mastership\
+                or "Error" in ONOS4Mastership or not ONOS4Mastership\
+                or "Error" in ONOS5Mastership or not ONOS5Mastership\
+                or "Error" in ONOS6Mastership or not ONOS6Mastership\
+                or "Error" in ONOS7Mastership or not ONOS7Mastership:
+            main.log.error( "Error in getting ONOS mastership" )
+            main.log.warn( "ONOS1 mastership response: " +
+                           repr( ONOS1Mastership ) )
+            main.log.warn( "ONOS2 mastership response: " +
+                           repr( ONOS2Mastership ) )
+            main.log.warn( "ONOS3 mastership response: " +
+                           repr( ONOS3Mastership ) )
+            main.log.warn( "ONOS4 mastership response: " +
+                           repr( ONOS4Mastership ) )
+            main.log.warn( "ONOS5 mastership response: " +
+                           repr( ONOS5Mastership ) )
+            main.log.warn( "ONOS6 mastership response: " +
+                           repr( ONOS6Mastership ) )
+            main.log.warn( "ONOS7 mastership response: " +
+                           repr( ONOS7Mastership ) )
+            consistentMastership = main.FALSE
+        elif ONOS1Mastership == ONOS2Mastership\
+                and ONOS1Mastership == ONOS3Mastership\
+                and ONOS1Mastership == ONOS4Mastership\
+                and ONOS1Mastership == ONOS5Mastership\
+                and ONOS1Mastership == ONOS6Mastership\
+                and ONOS1Mastership == ONOS7Mastership:
+            consistentMastership = main.TRUE
+            main.log.report(
+                "Switch roles are consistent across all ONOS nodes" )
         else:
-            main.log.warn("ONOS1 roles: ", json.dumps(json.loads(ONOS1_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS2 roles: ", json.dumps(json.loads(ONOS2_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS3 roles: ", json.dumps(json.loads(ONOS3_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS4 roles: ", json.dumps(json.loads(ONOS4_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS5 roles: ", json.dumps(json.loads(ONOS5_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS6 roles: ", json.dumps(json.loads(ONOS6_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS7 roles: ", json.dumps(json.loads(ONOS7_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            consistent_mastership = main.FALSE
-        utilities.assert_equals(expect = main.TRUE,actual=consistent_mastership,
-                onpass="Switch roles are consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of switch roles")
-
+            main.log.warn( "ONOS1 roles: ", json.dumps(
+                json.loads( ONOS1Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS2 roles: ", json.dumps(
+                json.loads( ONOS2Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS3 roles: ", json.dumps(
+                json.loads( ONOS3Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS4 roles: ", json.dumps(
+                json.loads( ONOS4Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS5 roles: ", json.dumps(
+                json.loads( ONOS5Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS6 roles: ", json.dumps(
+                json.loads( ONOS6Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS7 roles: ", json.dumps(
+                json.loads( ONOS7Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            consistentMastership = main.FALSE
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=consistentMastership,
+            onpass="Switch roles are consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of switch roles" )
 
         description2 = "Compare switch roles from before failure"
-        main.step(description2)
+        main.step( description2 )
 
-        current_json = json.loads(ONOS1_mastership)
-        old_json = json.loads(mastership_state)
-        mastership_check = main.TRUE
-        for i in range(1,29):
-            switchDPID = str(main.Mininet1.getSwitchDPID(switch="s"+str(i)))
+        currentJson = json.loads( ONOS1Mastership )
+        oldJson = json.loads( mastershipState )
+        mastershipCheck = main.TRUE
+        for i in range( 1, 29 ):
+            switchDPID = str(
+                main.Mininet1.getSwitchDPID(
+                    switch="s" +
+                    str( i ) ) )
 
-            current = [switch['master'] for switch in current_json if switchDPID in switch['id']]
-            old = [switch['master'] for switch in old_json if switchDPID in switch['id']]
+            current = [ switch[ 'master' ] for switch in currentJson
+                        if switchDPID in switch[ 'id' ] ]
+            old = [ switch[ 'master' ] for switch in oldJson
+                    if switchDPID in switch[ 'id' ] ]
             if current == old:
-                mastership_check = mastership_check and main.TRUE
+                mastershipCheck = mastershipCheck and main.TRUE
             else:
-                main.log.warn("Mastership of switch %s changed" % switchDPID)
-                mastership_check = main.FALSE
-        if mastership_check == main.TRUE:
-            main.log.report("Mastership of Switches was not changed")
-        utilities.assert_equals(expect=main.TRUE,actual=mastership_check,
-                onpass="Mastership of Switches was not changed",
-                onfail="Mastership of some switches changed")
-        #NOTE: we expect mastership to change on controller failure
-        mastership_check = consistent_mastership
+                main.log.warn( "Mastership of switch %s changed" % switchDPID )
+                mastershipCheck = main.FALSE
+        if mastershipCheck == main.TRUE:
+            main.log.report( "Mastership of Switches was not changed" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=mastershipCheck,
+            onpass="Mastership of Switches was not changed",
+            onfail="Mastership of some switches changed" )
+        # NOTE: we expect mastership to change on controller failure
+        mastershipCheck = mastershipCheck and consistentMastership
 
-
-
-        main.step("Get the intents and compare across all nodes")
-        ONOS1_intents = main.ONOScli1.intents( json_format=True )
-        ONOS2_intents = main.ONOScli2.intents( json_format=True )
-        ONOS3_intents = main.ONOScli3.intents( json_format=True )
-        ONOS4_intents = main.ONOScli4.intents( json_format=True )
-        ONOS5_intents = main.ONOScli5.intents( json_format=True )
-        ONOS6_intents = main.ONOScli6.intents( json_format=True )
-        ONOS7_intents = main.ONOScli7.intents( json_format=True )
-        intent_check = main.FALSE
-        if "Error" in ONOS1_intents or not ONOS1_intents\
-                or "Error" in ONOS2_intents or not ONOS2_intents\
-                or "Error" in ONOS3_intents or not ONOS3_intents\
-                or "Error" in ONOS4_intents or not ONOS4_intents\
-                or "Error" in ONOS5_intents or not ONOS5_intents\
-                or "Error" in ONOS6_intents or not ONOS6_intents\
-                or "Error" in ONOS7_intents or not ONOS7_intents:
-                    main.log.report("Error in getting ONOS intents")
-                    main.log.warn("ONOS1 intents response: " + repr(ONOS1_intents))
-                    main.log.warn("ONOS2 intents response: " + repr(ONOS2_intents))
-                    main.log.warn("ONOS3 intents response: " + repr(ONOS3_intents))
-                    main.log.warn("ONOS4 intents response: " + repr(ONOS4_intents))
-                    main.log.warn("ONOS5 intents response: " + repr(ONOS5_intents))
-                    main.log.warn("ONOS6 intents response: " + repr(ONOS6_intents))
-                    main.log.warn("ONOS7 intents response: " + repr(ONOS7_intents))
-        elif ONOS1_intents == ONOS2_intents\
-                and ONOS1_intents == ONOS3_intents\
-                and ONOS1_intents == ONOS4_intents\
-                and ONOS1_intents == ONOS5_intents\
-                and ONOS1_intents == ONOS6_intents\
-                and ONOS1_intents == ONOS7_intents:
-                    intent_check = main.TRUE
-                    main.log.report("Intents are consistent across all ONOS nodes")
+        main.step( "Get the intents and compare across all nodes" )
+        ONOS1Intents = main.ONOScli1.intents( jsonFormat=True )
+        ONOS2Intents = main.ONOScli2.intents( jsonFormat=True )
+        ONOS3Intents = main.ONOScli3.intents( jsonFormat=True )
+        ONOS4Intents = main.ONOScli4.intents( jsonFormat=True )
+        ONOS5Intents = main.ONOScli5.intents( jsonFormat=True )
+        ONOS6Intents = main.ONOScli6.intents( jsonFormat=True )
+        ONOS7Intents = main.ONOScli7.intents( jsonFormat=True )
+        intentCheck = main.FALSE
+        if "Error" in ONOS1Intents or not ONOS1Intents\
+                or "Error" in ONOS2Intents or not ONOS2Intents\
+                or "Error" in ONOS3Intents or not ONOS3Intents\
+                or "Error" in ONOS4Intents or not ONOS4Intents\
+                or "Error" in ONOS5Intents or not ONOS5Intents\
+                or "Error" in ONOS6Intents or not ONOS6Intents\
+                or "Error" in ONOS7Intents or not ONOS7Intents:
+            main.log.report( "Error in getting ONOS intents" )
+            main.log.warn( "ONOS1 intents response: " + repr( ONOS1Intents ) )
+            main.log.warn( "ONOS2 intents response: " + repr( ONOS2Intents ) )
+            main.log.warn( "ONOS3 intents response: " + repr( ONOS3Intents ) )
+            main.log.warn( "ONOS4 intents response: " + repr( ONOS4Intents ) )
+            main.log.warn( "ONOS5 intents response: " + repr( ONOS5Intents ) )
+            main.log.warn( "ONOS6 intents response: " + repr( ONOS6Intents ) )
+            main.log.warn( "ONOS7 intents response: " + repr( ONOS7Intents ) )
+        elif ONOS1Intents == ONOS2Intents\
+                and ONOS1Intents == ONOS3Intents\
+                and ONOS1Intents == ONOS4Intents\
+                and ONOS1Intents == ONOS5Intents\
+                and ONOS1Intents == ONOS6Intents\
+                and ONOS1Intents == ONOS7Intents:
+            intentCheck = main.TRUE
+            main.log.report( "Intents are consistent across all ONOS nodes" )
         else:
-            main.log.warn("ONOS1 intents: ")
-            print json.dumps(json.loads(ONOS1_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-            main.log.warn("ONOS2 intents: ")
-            print json.dumps(json.loads(ONOS2_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-            main.log.warn("ONOS3 intents: ")
-            print json.dumps(json.loads(ONOS3_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-            main.log.warn("ONOS4 intents: ")
-            print json.dumps(json.loads(ONOS4_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-            main.log.warn("ONOS5 intents: ")
-            print json.dumps(json.loads(ONOS5_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-            main.log.warn("ONOS6 intents: ")
-            print json.dumps(json.loads(ONOS6_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-            main.log.warn("ONOS7 intents: ")
-            print json.dumps(json.loads(ONOS7_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-        utilities.assert_equals(expect = main.TRUE,actual=intent_check,
-                onpass="Intents are consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of intents")
+            main.log.warn( "ONOS1 intents: " )
+            print json.dumps( json.loads( ONOS1Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+            main.log.warn( "ONOS2 intents: " )
+            print json.dumps( json.loads( ONOS2Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+            main.log.warn( "ONOS3 intents: " )
+            print json.dumps( json.loads( ONOS3Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+            main.log.warn( "ONOS4 intents: " )
+            print json.dumps( json.loads( ONOS4Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+            main.log.warn( "ONOS5 intents: " )
+            print json.dumps( json.loads( ONOS5Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+            main.log.warn( "ONOS6 intents: " )
+            print json.dumps( json.loads( ONOS6Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+            main.log.warn( "ONOS7 intents: " )
+            print json.dumps( json.loads( ONOS7Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=intentCheck,
+            onpass="Intents are consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of intents" )
 
-        #NOTE: Hazelcast has no durability, so intents are lost across system restarts
-        '''
-        main.step("Compare current intents with intents before the failure")
-        #NOTE: this requires case 5 to pass for intent_state to be set.
+        # NOTE: Hazelcast has no durability, so intents are lost across system
+        # restarts
+        """
+        main.step( "Compare current intents with intents before the failure" )
+        # NOTE: this requires case 5 to pass for intentState to be set.
         #      maybe we should stop the test if that fails?
-        if intent_state == ONOS1_intents:
-            same_intents = main.TRUE
-            main.log.report("Intents are consistent with before failure")
-        #TODO: possibly the states have changed? we may need to figure out what the aceptable states are
+        if intentState == ONOS1Intents:
+            sameIntents = main.TRUE
+            main.log.report( "Intents are consistent with before failure" )
+        # TODO: possibly the states have changed? we may need to figure out
+        # what the aceptable states are
         else:
             try:
-                main.log.warn("ONOS1 intents: ")
-                print json.dumps(json.loads(ONOS1_intents),
-                    sort_keys=True, indent=4, separators=(',', ': '))
+                main.log.warn( "ONOS1 intents: " )
+                print json.dumps( json.loads( ONOS1Intents ),
+                                  sort_keys=True, indent=4,
+                                  separators=( ',', ': ' ) )
             except:
                 pass
-            same_intents = main.FALSE
-        utilities.assert_equals(expect = main.TRUE,actual=same_intents,
-                onpass="Intents are consistent with before failure",
-                onfail="The Intents changed during failure")
-        intent_check = intent_check and same_intents
-        '''
+            sameIntents = main.FALSE
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=sameIntents,
+            onpass="Intents are consistent with before failure",
+            onfail="The Intents changed during failure" )
+        intentCheck = intentCheck and sameIntents
+        """
+        main.step( "Get the OF Table entries and compare to before " +
+                   "component failure" )
+        FlowTables = main.TRUE
+        flows2 = []
+        for i in range( 28 ):
+            main.log.info( "Checking flow table on s" + str( i + 1 ) )
+            tmpFlows = main.Mininet2.getFlowTable( 1.3, "s" + str( i + 1 ) )
+            flows2.append( tmpFlows )
+            tempResult = main.Mininet2.flowComp(
+                flow1=flows[ i ],
+                flow2=tmpFlows )
+            FlowTables = FlowTables and tempResult
+            if FlowTables == main.FALSE:
+                main.log.info( "Differences in flow table for switch: s" +
+                               str( i + 1 ) )
+        if FlowTables == main.TRUE:
+            main.log.report( "No changes were found in the flow tables" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=FlowTables,
+            onpass="No changes were found in the flow tables",
+            onfail="Changes were found in the flow tables" )
 
-
-
-        main.step("Get the OF Table entries and compare to before component failure")
-        Flow_Tables = main.TRUE
-        flows2=[]
-        for i in range(28):
-            main.log.info("Checking flow table on s" + str(i+1))
-            tmp_flows = main.Mininet2.get_flowTable(1.3, "s"+str(i+1))
-            flows2.append(tmp_flows)
-            temp_result = main.Mininet2.flow_comp(flow1=flows[i],flow2=tmp_flows)
-            Flow_Tables = Flow_Tables and temp_result
-            if Flow_Tables == main.FALSE:
-                main.log.info("Differences in flow table for switch: "+str(i+1))
-        if Flow_Tables == main.TRUE:
-            main.log.report("No changes were found in the flow tables")
-        utilities.assert_equals(expect=main.TRUE,actual=Flow_Tables,
-                onpass="No changes were found in the flow tables",
-                onfail="Changes were found in the flow tables")
-
-        main.step("Check the continuous pings to ensure that no packets were dropped during component failure")
-        #FIXME: This check is always failing. Investigate cause
-        #NOTE:  this may be something to do with file permsissions
+        main.step( "Check the continuous pings to ensure that no packets " +
+                   "were dropped during component failure" )
+        # FIXME: This check is always failing. Investigate cause
+        # NOTE:  this may be something to do with file permsissions
         #       or slight change in format
-        main.Mininet2.pingKill(main.params['TESTONUSER'], main.params['TESTONIP'])
-        Loss_In_Pings = main.FALSE 
-        #NOTE: checkForLoss returns main.FALSE with 0% packet loss
-        for i in range(8,18):
-            main.log.info("Checking for a loss in pings along flow from s" + str(i))
-            Loss_In_Pings = main.Mininet2.checkForLoss("/tmp/ping.h"+str(i)) or Loss_In_Pings
-        if Loss_In_Pings == main.TRUE:
-            main.log.info("Loss in ping detected")
-        elif Loss_In_Pings == main.ERROR:
-            main.log.info("There are multiple mininet process running")
-        elif Loss_In_Pings == main.FALSE:
-            main.log.info("No Loss in the pings")
-            main.log.report("No loss of dataplane connectivity")
-        utilities.assert_equals(expect=main.FALSE,actual=Loss_In_Pings,
-                onpass="No Loss of connectivity",
-                onfail="Loss of dataplane connectivity detected")
-        #NOTE: Since intents are not persisted with Hazelcast, we expect this
-        Loss_In_Pings = main.FALSE
+        main.Mininet2.pingKill(
+            main.params[ 'TESTONUSER' ],
+            main.params[ 'TESTONIP' ] )
+        LossInPings = main.FALSE
+        # NOTE: checkForLoss returns main.FALSE with 0% packet loss
+        for i in range( 8, 18 ):
+            main.log.info(
+                "Checking for a loss in pings along flow from s" +
+                str( i ) )
+            LossInPings = main.Mininet2.checkForLoss(
+                "/tmp/ping.h" +
+                str( i ) ) or LossInPings
+        if LossInPings == main.TRUE:
+            main.log.info( "Loss in ping detected" )
+        elif LossInPings == main.ERROR:
+            main.log.info( "There are multiple mininet process running" )
+        elif LossInPings == main.FALSE:
+            main.log.info( "No Loss in the pings" )
+            main.log.report( "No loss of dataplane connectivity" )
+        utilities.assert_equals(
+            expect=main.FALSE,
+            actual=LossInPings,
+            onpass="No Loss of connectivity",
+            onfail="Loss of dataplane connectivity detected" )
+        # NOTE: Since intents are not persisted with Hazelcast, we expect this
+        LossInPings = main.FALSE
 
-
-        #Test of LeadershipElection
-        leader_list = []
-        leader_result = main.TRUE
-        for controller in range(1,num_controllers+1):
-            node = getattr( main, ( 'ONOScli' + str( controller ) ) )#loop through ONOScli handlers
-            leaderN = node.election_test_leader()
-            leader_list.append(leaderN)
+        # Test of LeadershipElection
+        leaderList = []
+        leaderResult = main.TRUE
+        for controller in range( 1, numControllers + 1 ):
+            # loop through ONOScli handlers
+            node = getattr( main, ( 'ONOScli' + str( controller ) ) )
+            leaderN = node.electionTestLeader()
+            leaderList.append( leaderN )
             if leaderN == main.FALSE:
-                #error in  response
-                main.log.report("Something is wrong with election_test_leader function, check the error logs")
-                leader_result = main.FALSE
-            elif leaderN == None:
-                main.log.report("ONOS"+str(controller) + " shows no leader for the election-app was elected after the old one died")
-                leader_result = main.FALSE
-        if len( set( leader_list ) ) != 1:
-            leader_result = main.FALSE
-            main.log.error("Inconsistent view of leader for the election test app")
-            #TODO: print the list
-        if leader_result:
-            main.log.report("Leadership election tests passed(consistent view of leader across listeners and a new leader was re-elected after restart)")
-        utilities.assert_equals(expect=main.TRUE, actual=leader_result,
-                onpass="Leadership election passed",
-                onfail="Something went wrong with Leadership election")
+                # error in  response
+                main.log.report( "Something is wrong with " +
+                                 "electionTestLeader function, check the" +
+                                 " error logs" )
+                leaderResult = main.FALSE
+            elif leaderN is None:
+                main.log.report( "ONOS" + str( controller ) +
+                                 " shows no leader for the election-app was" +
+                                 " elected after the old one died" )
+                leaderResult = main.FALSE
+        if len( set( leaderList ) ) != 1:
+            leaderResult = main.FALSE
+            main.log.error(
+                "Inconsistent view of leader for the election test app" )
+            # TODO: print the list
+        if leaderResult:
+            main.log.report( "Leadership election tests passed( consistent " +
+                             "view of leader across listeners and a new " +
+                             "leader was re-elected if applicable )" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=leaderResult,
+            onpass="Leadership election passed",
+            onfail="Something went wrong with Leadership election" )
 
-
-        result = mastership_check and intent_check and Flow_Tables and (not Loss_In_Pings) and roles_not_null\
-                and leader_result
-        result = int(result)
+        result = ( mastershipCheck and intentCheck and FlowTables and
+                   ( not LossInPings ) and rolesNotNull and leaderResult )
+        result = int( result )
         if result == main.TRUE:
-            main.log.report("Constant State Tests Passed")
-        utilities.assert_equals(expect=main.TRUE,actual=result,
-                onpass="Constant State Tests Passed",
-                onfail="Constant state tests failed")
+            main.log.report( "Constant State Tests Passed" )
+        utilities.assert_equals( expect=main.TRUE, actual=result,
+                                onpass="Constant State Tests Passed",
+                                onfail="Constant state tests failed" )
 
-    def CASE8 (self,main):
-        '''
+    def CASE8( self, main ):
+        """
         Compare topo
-        '''
+        """
         import sys
-        sys.path.append("/home/admin/sts") # Trying to remove some dependancies, #FIXME add this path to params
-        from sts.topology.teston_topology import TestONTopology # assumes that sts is already in you PYTHONPATH
+        # FIXME add this path to params
+        sys.path.append( "/home/admin/sts" )
+        # assumes that sts is already in you PYTHONPATH
+        from sts.topology.teston_topology import TestONTopology
         import json
         import time
 
-        description ="Compare ONOS Topology view to Mininet topology"
-        main.case(description)
-        main.log.report(description)
-        main.step("Create TestONTopology object")
+        description = "Compare ONOS Topology view to Mininet topology"
+        main.case( description )
+        main.log.report( description )
+        main.step( "Create TestONTopology object" )
         ctrls = []
         count = 1
         while True:
             temp = ()
-            if ('ip' + str(count)) in main.params['CTRL']:
-                temp = temp + (getattr(main,('ONOS' + str(count))),)
-                temp = temp + ("ONOS"+str(count),)
-                temp = temp + (main.params['CTRL']['ip'+str(count)],)
-                temp = temp + (eval(main.params['CTRL']['port'+str(count)]),)
-                ctrls.append(temp)
+            if ( 'ip' + str( count ) ) in main.params[ 'CTRL' ]:
+                temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
+                temp = temp + ( "ONOS" + str( count ), )
+                temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
+                temp = temp + \
+                    ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
+                ctrls.append( temp )
                 count = count + 1
             else:
                 break
-        MNTopo = TestONTopology(main.Mininet1, ctrls) # can also add Intent API info for intent operations
+        MNTopo = TestONTopology(
+            main.Mininet1,
+            ctrls )  # can also add Intent API info for intent operations
 
-        main.step("Comparing ONOS topology to MN")
-        devices_results = main.TRUE
-        ports_results = main.TRUE
-        links_results = main.TRUE
-        topo_result = main.FALSE
+        main.step( "Comparing ONOS topology to MN" )
+        devicesResults = main.TRUE
+        portsResults = main.TRUE
+        linksResults = main.TRUE
+        topoResult = main.FALSE
         elapsed = 0
         count = 0
-        main.step("Collecting topology information from ONOS")
-        start_time = time.time()
-        while topo_result == main.FALSE and elapsed < 60:
+        main.step( "Collecting topology information from ONOS" )
+        startTime = time.time()
+        while topoResult == main.FALSE and elapsed < 60:
             count = count + 1
             if count > 1:
-                MNTopo = TestONTopology(main.Mininet1, ctrls) # can also add Intent API info for intent operations
-            cli_start = time.time()
+                # TODO: Depricate STS usage
+                MNTopo = TestONTopology(
+                    main.Mininet1,
+                    ctrls )
+            cliStart = time.time()
             devices = []
             devices.append( main.ONOScli1.devices() )
             devices.append( main.ONOScli2.devices() )
@@ -1337,13 +1476,21 @@
             devices.append( main.ONOScli6.devices() )
             devices.append( main.ONOScli7.devices() )
             hosts = []
-            hosts.append( main.ONOScli1.hosts() )
-            hosts.append( main.ONOScli2.hosts() )
-            hosts.append( main.ONOScli3.hosts() )
-            hosts.append( main.ONOScli4.hosts() )
-            hosts.append( main.ONOScli5.hosts() )
-            hosts.append( main.ONOScli6.hosts() )
-            hosts.append( main.ONOScli7.hosts() )
+            hosts.append( json.loads( main.ONOScli1.hosts() ) )
+            hosts.append( json.loads( main.ONOScli2.hosts() ) )
+            hosts.append( json.loads( main.ONOScli3.hosts() ) )
+            hosts.append( json.loads( main.ONOScli4.hosts() ) )
+            hosts.append( json.loads( main.ONOScli5.hosts() ) )
+            hosts.append( json.loads( main.ONOScli6.hosts() ) )
+            hosts.append( json.loads( main.ONOScli7.hosts() ) )
+            for controller in range( 0, len( hosts ) ):
+                controllerStr = str( controller + 1 )
+                for host in hosts[ controller ]:
+                    host
+                    if host[ 'ips' ] == []:
+                        main.log.error(
+                            "DEBUG:Error with host ips on controller" +
+                            controllerStr + ": " + str( host ) )
             ports = []
             ports.append( main.ONOScli1.ports() )
             ports.append( main.ONOScli2.ports() )
@@ -1368,491 +1515,538 @@
             clusters.append( main.ONOScli5.clusters() )
             clusters.append( main.ONOScli6.clusters() )
             clusters.append( main.ONOScli7.clusters() )
-            paths = []
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli1.topology() )
-            paths.append( temp_topo.get('paths', False) )
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli2.topology() )
-            paths.append( temp_topo.get('paths', False) )
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli3.topology() )
-            paths.append( temp_topo.get('paths', False) )
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli4.topology() )
-            paths.append( temp_topo.get('paths', False) )
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli5.topology() )
-            paths.append( temp_topo.get('paths', False) )
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli6.topology() )
-            paths.append( temp_topo.get('paths', False) )
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli7.topology() )
-            paths.append( temp_topo.get('paths', False) )
 
+            elapsed = time.time() - startTime
+            cliTime = time.time() - cliStart
+            print "CLI time: " + str( cliTime )
 
-            elapsed = time.time() - start_time
-            cli_time = time.time() - cli_start
-            print "CLI time: " + str(cli_time)
-
-            for controller in range(num_controllers):
-                if devices[controller] or not "Error" in devices[controller]:
-                    current_devices_result =  main.Mininet1.compare_switches(MNTopo, json.loads(devices[controller]))
+            for controller in range( numControllers ):
+                controllerStr = str( controller + 1 )
+                if devices[ controller ] or "Error" not in devices[
+                        controller ]:
+                    currentDevicesResult = main.Mininet1.compareSwitches(
+                        MNTopo,
+                        json.loads(
+                            devices[ controller ] ) )
                 else:
-                    current_devices_result = main.FALSE
-                utilities.assert_equals(expect=main.TRUE, actual=current_devices_result,
-                        onpass="ONOS"+str(int(controller+1))+" Switches view is correct",
-                        onfail="ONOS"+str(int(controller+1))+" Switches view is incorrect")
+                    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 ports[controller] or not "Error" in ports[controller]:
-                    current_ports_result =  main.Mininet1.compare_ports(MNTopo, json.loads(ports[controller]))
+                if ports[ controller ] or "Error" not in ports[ controller ]:
+                    currentPortsResult = main.Mininet1.comparePorts(
+                        MNTopo,
+                        json.loads(
+                            ports[ controller ] ) )
                 else:
-                    current_ports_result = main.FALSE
-                utilities.assert_equals(expect=main.TRUE, actual=current_ports_result,
-                        onpass="ONOS"+str(int(controller+1))+" ports view is correct",
-                        onfail="ONOS"+str(int(controller+1))+" ports view is incorrect")
+                    currentPortsResult = main.FALSE
+                utilities.assert_equals( expect=main.TRUE,
+                                        actual=currentPortsResult,
+                                        onpass="ONOS" + controllerStr +
+                                        " ports view is correct",
+                                        onfail="ONOS" + controllerStr +
+                                        " ports view is incorrect" )
 
-                if links[controller] or not "Error" in links[controller]:
-                    current_links_result =  main.Mininet1.compare_links(MNTopo, json.loads(links[controller]))
+                if links[ controller ] or "Error" not in links[ controller ]:
+                    currentLinksResult = main.Mininet1.compareLinks(
+                        MNTopo,
+                        json.loads(
+                            links[ controller ] ) )
                 else:
-                    current_links_result = main.FALSE
-                utilities.assert_equals(expect=main.TRUE, actual=current_links_result,
-                        onpass="ONOS"+str(int(controller+1))+" links view is correct",
-                        onfail="ONOS"+str(int(controller+1))+" links view is incorrect")
-            devices_results = devices_results and current_devices_result
-            ports_results = ports_results and current_ports_result
-            links_results = links_results and current_links_result
+                    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" )
+            devicesResults = devicesResults and currentDevicesResult
+            portsResults = portsResults and currentPortsResult
+            linksResults = linksResults and currentLinksResult
 
-            #Compare json objects for hosts, dataplane clusters and paths
+            # Compare json objects for hosts and dataplane clusters
 
-            #hosts
-            consistent_hosts_result = main.TRUE
+            # hosts
+            consistentHostsResult = main.TRUE
             for controller in range( len( hosts ) ):
-                if not "Error" in hosts[controller]:
-                    if hosts[controller] == hosts[0]:
+                controllerStr = str( controller + 1 )
+                if "Error" not in hosts[ controller ]:
+                    if hosts[ controller ] == hosts[ 0 ]:
                         continue
-                    else:#hosts not consistent
-                        main.log.report("hosts from ONOS" + str(controller + 1) + " is inconsistent with ONOS1")
-                        main.log.warn( repr( hosts[controller] ) )
-                        consistent_hosts_result = main.FALSE
+                    else:  # hosts not consistent
+                        main.log.report( "hosts from ONOS" + controllerStr +
+                                         " is inconsistent with ONOS1" )
+                        main.log.warn( repr( hosts[ controller ] ) )
+                        consistentHostsResult = main.FALSE
 
                 else:
-                    main.log.report("Error in getting ONOS hosts from ONOS" + str(controller + 1) )
-                    consistent_hosts_result = main.FALSE
-                    main.log.warn("ONOS" + str(controller + 1) + " hosts response: " + repr(hosts[controller]) )
-            utilities.assert_equals(expect = main.TRUE,actual=consistent_hosts_result,
-                    onpass="Hosts view is consistent across all ONOS nodes",
-                    onfail="ONOS nodes have different views of hosts")
+                    main.log.report( "Error in getting ONOS hosts from ONOS" +
+                                     controllerStr )
+                    consistentHostsResult = main.FALSE
+                    main.log.warn( "ONOS" + controllerStr +
+                                   " hosts response: " +
+                                   repr( hosts[ controller ] ) )
+            utilities.assert_equals(
+                expect=main.TRUE,
+                actual=consistentHostsResult,
+                onpass="Hosts view is consistent across all ONOS nodes",
+                onfail="ONOS nodes have different views of hosts" )
 
-            #Strongly connected clusters of devices
-            consistent_clusters_result = main.TRUE
+            # Strongly connected clusters of devices
+            consistentClustersResult = main.TRUE
             for controller in range( len( clusters ) ):
-                if not "Error" in clusters[controller]:
-                    if clusters[controller] == clusters[0]:
+                controllerStr = str( controller + 1 )
+                if "Error" not in clusters[ controller ]:
+                    if clusters[ controller ] == clusters[ 0 ]:
                         continue
-                    else:#clusters not consistent
-                        main.log.report("clusters from ONOS" + str(controller + 1) + " is inconsistent with ONOS1")
-                        consistent_clusters_result = main.FALSE
+                    else:  # clusters not consistent
+                        main.log.report( "clusters from ONOS" +
+                                         controllerStr +
+                                         " is inconsistent with ONOS1" )
+                        consistentClustersResult = main.FALSE
 
                 else:
-                    main.log.report("Error in getting dataplane clusters from ONOS" + str(controller + 1) )
-                    consistent_clusters_result = main.FALSE
-                    main.log.warn("ONOS" + str(controller + 1) + " clusters response: " + repr(clusters[controller]) )
-            utilities.assert_equals(expect = main.TRUE,actual=consistent_clusters_result,
-                    onpass="Clusters view is consistent across all ONOS nodes",
-                    onfail="ONOS nodes have different views of clusters")
-            num_clusters =  len(json.loads(clusters[0])) #there should always only be one cluster
-            utilities.assert_equals(expect = 1, actual = num_clusters,
-                    onpass="ONOS shows 1 SCC",
-                    onfail="ONOS shows "+str(num_clusters) +" SCCs")
+                    main.log.report( "Error in getting dataplane clusters " +
+                                     "from ONOS" + controllerStr )
+                    consistentClustersResult = main.FALSE
+                    main.log.warn( "ONOS" + controllerStr +
+                                   " clusters response: " +
+                                   repr( clusters[ controller ] ) )
+            utilities.assert_equals(
+                expect=main.TRUE,
+                actual=consistentClustersResult,
+                onpass="Clusters view is consistent across all ONOS nodes",
+                onfail="ONOS nodes have different views of clusters" )
+            # there should always only be one cluster
+            numClusters = len( json.loads( clusters[ 0 ] ) )
+            utilities.assert_equals(
+                expect=1,
+                actual=numClusters,
+                onpass="ONOS shows 1 SCC",
+                onfail="ONOS shows " +
+                str( numClusters ) +
+                " SCCs" )
 
+            topoResult = ( devicesResults and portsResults and linksResults
+                           and consistentHostsResult
+                           and consistentClustersResult )
 
-            #paths
-            consistent_paths_result = main.TRUE
-            for controller in range( len( paths ) ):
-                if not "Error" in paths[controller]:
-                    if paths[controller] == paths[0]:
-                        continue
-                    else:#paths not consistent
-                        main.log.report("paths from ONOS" + str(controller + 1) + " is inconsistent with ONOS1")
-                        consistent_paths_result = main.FALSE
+        topoResult = topoResult and int( count <= 2 )
+        note = "note it takes about " + str( int( cliTime ) ) + \
+            " seconds for the test to make all the cli calls to fetch " +\
+            "the topology from each ONOS instance"
+        main.log.report(
+            "Very crass estimate for topology discovery/convergence( " +
+            str( note ) + " ): " + str( elapsed ) + " seconds, " +
+            str( count ) + " tries" )
+        utilities.assert_equals( expect=main.TRUE, actual=topoResult,
+                                onpass="Topology Check Test successful",
+                                onfail="Topology Check Test NOT successful" )
+        if topoResult == main.TRUE:
+            main.log.report( "ONOS topology view matches Mininet topology" )
 
-                else:
-                    main.log.report("Error in getting paths from ONOS" + str(controller + 1) )
-                    consistent_paths_result = main.FALSE
-                    main.log.warn("ONOS" + str(controller + 1) + " paths response: " + repr(paths[controller]) )
-            utilities.assert_equals(expect = main.TRUE,actual=consistent_paths_result,
-                    onpass="Paths count is consistent across all ONOS nodes",
-                    onfail="ONOS nodes have different counts of paths")
-
-
-            topo_result = devices_results and ports_results and links_results\
-                    and consistent_hosts_result and consistent_clusters_result and consistent_paths_result
-
-        topo_result = topo_result and int(count <= 2)
-        note = "note it takes about "+str( int(cli_time) )+" seconds for the test to make all the cli calls to fetch the topology from each ONOS instance"
-        main.log.report("Very crass estimate for topology discovery/convergence("+ str(note) + "): " +\
-                str(elapsed) + " seconds, " + str(count) +" tries" )
-        utilities.assert_equals(expect=main.TRUE, actual=topo_result,
-                onpass="Topology Check Test successful",
-                onfail="Topology Check Test NOT successful")
-        if topo_result == main.TRUE:
-            main.log.report("ONOS topology view matches Mininet topology")
-
-
-    def CASE9 (self,main):
-        '''
+    def CASE9( self, main ):
+        """
         Link s3-s28 down
-        '''
-        #NOTE: You should probably run a topology check after this
+        """
+        import time
+        # NOTE: You should probably run a topology check after this
 
-        link_sleep = float(main.params['timers']['LinkDiscovery'])
+        linkSleep = float( main.params[ 'timers' ][ 'LinkDiscovery' ] )
 
-        description = "Turn off a link to ensure that Link Discovery is working properly"
-        main.log.report(description)
-        main.case(description)
+        description = "Turn off a link to ensure that Link Discovery " +\
+            "is working properly"
+        main.log.report( description )
+        main.case( description )
 
+        main.step( "Kill Link between s3 and s28" )
+        LinkDown = main.Mininet1.link( END1="s3", END2="s28", OPTION="down" )
+        main.log.info(
+            "Waiting " +
+            str( linkSleep ) +
+            " seconds for link down to be discovered" )
+        time.sleep( linkSleep )
+        utilities.assert_equals( expect=main.TRUE, actual=LinkDown,
+                                onpass="Link down succesful",
+                                onfail="Failed to bring link down" )
+        # TODO do some sort of check here
 
-        main.step("Kill Link between s3 and s28")
-        Link_Down = main.Mininet1.link(END1="s3",END2="s28",OPTION="down")
-        main.log.info("Waiting " + str(link_sleep) + " seconds for link down to be discovered")
-        time.sleep(link_sleep)
-        utilities.assert_equals(expect=main.TRUE,actual=Link_Down,
-                onpass="Link down succesful",
-                onfail="Failed to bring link down")
-        #TODO do some sort of check here
-
-    def CASE10 (self,main):
-        '''
+    def CASE10( self, main ):
+        """
         Link s3-s28 up
-        '''
-        #NOTE: You should probably run a topology check after this
+        """
+        import time
+        # NOTE: You should probably run a topology check after this
 
-        link_sleep = float(main.params['timers']['LinkDiscovery'])
+        linkSleep = float( main.params[ 'timers' ][ 'LinkDiscovery' ] )
 
-        description = "Restore a link to ensure that Link Discovery is working properly"
-        main.log.report(description)
-        main.case(description)
+        description = "Restore a link to ensure that Link Discovery is " + \
+            "working properly"
+        main.log.report( description )
+        main.case( description )
 
-        main.step("Bring link between s3 and s28 back up")
-        Link_Up = main.Mininet1.link(END1="s3",END2="s28",OPTION="up")
-        main.log.info("Waiting " + str(link_sleep) + " seconds for link up to be discovered")
-        time.sleep(link_sleep)
-        utilities.assert_equals(expect=main.TRUE,actual=Link_Up,
-                onpass="Link up succesful",
-                onfail="Failed to bring link up")
-        #TODO do some sort of check here
+        main.step( "Bring link between s3 and s28 back up" )
+        LinkUp = main.Mininet1.link( END1="s3", END2="s28", OPTION="up" )
+        main.log.info(
+            "Waiting " +
+            str( linkSleep ) +
+            " seconds for link up to be discovered" )
+        time.sleep( linkSleep )
+        utilities.assert_equals( expect=main.TRUE, actual=LinkUp,
+                                onpass="Link up succesful",
+                                onfail="Failed to bring link up" )
+        # TODO do some sort of check here
 
-
-    def CASE11 (self, main) :
-        '''
+    def CASE11( self, main ):
+        """
         Switch Down
-        '''
-        #NOTE: You should probably run a topology check after this
+        """
+        # NOTE: You should probably run a topology check after this
         import time
 
-        switch_sleep = float(main.params['timers']['SwitchDiscovery'])
+        switchSleep = float( main.params[ 'timers' ][ 'SwitchDiscovery' ] )
 
         description = "Killing a switch to ensure it is discovered correctly"
-        main.log.report(description)
-        main.case(description)
+        main.log.report( description )
+        main.case( description )
+        switch = main.params[ 'kill' ][ 'switch' ]
+        switchDPID = main.params[ 'kill' ][ 'dpid' ]
 
-        #TODO: Make this switch parameterizable
-        main.step("Kill s28 ")
-        main.log.report("Deleting s28")
-        main.Mininet1.del_switch("s28")
-        main.log.info("Waiting " + str(switch_sleep) + " seconds for switch down to be discovered")
-        time.sleep(switch_sleep)
-        device = main.ONOScli1.get_device(dpid="0028")
-        #Peek at the deleted switch
-        main.log.warn( str(device) )
+        # TODO: Make this switch parameterizable
+        main.step( "Kill " + switch )
+        main.log.report( "Deleting " + switch )
+        main.Mininet1.delSwitch( switch )
+        main.log.info( "Waiting " + str( switchSleep ) +
+                       " seconds for switch down to be discovered" )
+        time.sleep( switchSleep )
+        device = main.ONOScli1.getDevice( dpid=switchDPID )
+        # Peek at the deleted switch
+        main.log.warn( str( device ) )
         result = main.FALSE
-        if device and device['available'] == False:
+        if device and device[ 'available' ] is False:
             result = main.TRUE
-        utilities.assert_equals(expect=main.TRUE,actual=result,
-                onpass="Kill switch succesful",
-                onfail="Failed to kill switch?")
+        utilities.assert_equals( expect=main.TRUE, actual=result,
+                                onpass="Kill switch succesful",
+                                onfail="Failed to kill switch?" )
 
-    def CASE12 (self, main) :
-        '''
+    def CASE12( self, main ):
+        """
         Switch Up
-        '''
-        #NOTE: You should probably run a topology check after this
+        """
+        # NOTE: You should probably run a topology check after this
         import time
 
-        switch_sleep = float(main.params['timers']['SwitchDiscovery'])
+        switchSleep = float( main.params[ 'timers' ][ 'SwitchDiscovery' ] )
+        switch = main.params[ 'kill' ][ 'switch' ]
+        switchDPID = main.params[ 'kill' ][ 'dpid' ]
+        links = main.params[ 'kill' ][ 'links' ].split()
         description = "Adding a switch to ensure it is discovered correctly"
-        main.log.report(description)
-        main.case(description)
+        main.log.report( description )
+        main.case( description )
 
-        main.step("Add back s28")
-        main.log.report("Adding back s28")
-        main.Mininet1.add_switch("s28", dpid = '0000000000002800')
-        #TODO: New dpid or same? Ask Thomas?
-        main.Mininet1.add_link('s28', 's3')
-        main.Mininet1.add_link('s28', 's6')
-        main.Mininet1.add_link('s28', 'h28')
-        main.Mininet1.assign_sw_controller(sw="28",count=num_controllers,
-                ip1=ONOS1_ip,port1=ONOS1_port,
-                ip2=ONOS2_ip,port2=ONOS2_port,
-                ip3=ONOS3_ip,port3=ONOS3_port,
-                ip4=ONOS4_ip,port4=ONOS4_port,
-                ip5=ONOS5_ip,port5=ONOS5_port,
-                ip6=ONOS6_ip,port6=ONOS6_port,
-                ip7=ONOS7_ip,port7=ONOS7_port)
-        main.log.info("Waiting " + str(switch_sleep) + " seconds for switch up to be discovered")
-        time.sleep(switch_sleep)
-        device = main.ONOScli1.get_device(dpid="0028")
-        #Peek at the deleted switch
-        main.log.warn( str(device) )
+        main.step( "Add back " + switch )
+        main.log.report( "Adding back " + switch )
+        main.Mininet1.addSwitch( switch, dpid=switchDPID )
+        # TODO: New dpid or same? Ask Thomas?
+        for peer in links:
+            main.Mininet1.addLink( switch, peer )
+        main.Mininet1.assignSwController(
+            sw=switch.split( 's' )[ 1 ],
+            count=numControllers,
+            ip1=ONOS1Ip,
+            port1=ONOS1Port,
+            ip2=ONOS2Ip,
+            port2=ONOS2Port,
+            ip3=ONOS3Ip,
+            port3=ONOS3Port,
+            ip4=ONOS4Ip,
+            port4=ONOS4Port,
+            ip5=ONOS5Ip,
+            port5=ONOS5Port,
+            ip6=ONOS6Ip,
+            port6=ONOS6Port,
+            ip7=ONOS7Ip,
+            port7=ONOS7Port )
+        main.log.info(
+            "Waiting " +
+            str( switchSleep ) +
+            " seconds for switch up to be discovered" )
+        time.sleep( switchSleep )
+        device = main.ONOScli1.getDevice( dpid=switchDPID )
+        # Peek at the deleted switch
+        main.log.warn( str( device ) )
         result = main.FALSE
-        if device and device['available'] == True:
+        if device and device[ 'available' ]:
             result = main.TRUE
-        utilities.assert_equals(expect=main.TRUE,actual=result,
-                onpass="add switch succesful",
-                onfail="Failed to add switch?")
+        utilities.assert_equals( expect=main.TRUE, actual=result,
+                                onpass="add switch succesful",
+                                onfail="Failed to add switch?" )
 
-    def CASE13 (self, main) :
-        '''
+    def CASE13( self, main ):
+        """
         Clean up
-        '''
+        """
         import os
         import time
-        #printing colors to terminal
+        # TODO: make use of this elsewhere
+        ips = []
+        ips.append( ONOS1Ip )
+        ips.append( ONOS2Ip )
+        ips.append( ONOS3Ip )
+        ips.append( ONOS4Ip )
+        ips.append( ONOS5Ip )
+        ips.append( ONOS6Ip )
+        ips.append( ONOS7Ip )
+
+        # printing colors to terminal
         colors = {}
-        colors['cyan']   = '\033[96m'
-        colors['purple'] = '\033[95m'
-        colors['blue']   = '\033[94m'
-        colors['green']  = '\033[92m'
-        colors['yellow'] = '\033[93m'
-        colors['red']    = '\033[91m'
-        colors['end']    = '\033[0m'
+        colors[ 'cyan' ] = '\033[96m'
+        colors[ 'purple' ] = '\033[95m'
+        colors[ 'blue' ] = '\033[94m'
+        colors[ 'green' ] = '\033[92m'
+        colors[ 'yellow' ] = '\033[93m'
+        colors[ 'red' ] = '\033[91m'
+        colors[ 'end' ] = '\033[0m'
         description = "Test Cleanup"
-        main.log.report(description)
-        main.case(description)
-        main.step("Killing tcpdumps")
-        main.Mininet2.stop_tcpdump()
+        main.log.report( description )
+        main.case( description )
+        main.step( "Killing tcpdumps" )
+        main.Mininet2.stopTcpdump()
 
-        main.step("Checking ONOS Logs for errors")
-        print colors['purple'] + "Checking logs for errors on ONOS1:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS1_ip)
-        print colors['purple'] + "Checking logs for errors on ONOS2:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS2_ip)
-        print colors['purple'] + "Checking logs for errors on ONOS3:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS3_ip)
-        print colors['purple'] + "Checking logs for errors on ONOS4:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS4_ip)
-        print colors['purple'] + "Checking logs for errors on ONOS5:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS5_ip)
-        print colors['purple'] + "Checking logs for errors on ONOS6:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS6_ip)
-        print colors['purple'] + "Checking logs for errors on ONOS7:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS7_ip)
+        main.step( "Checking ONOS Logs for errors" )
+        for i in range( 7 ):
+            print colors[ 'purple' ] + "Checking logs for errors on " + \
+                "ONOS" + str( i + 1 ) + ":" + colors[ 'end' ]
+            print main.ONOSbench.checkLogs( ips[ i ] )
 
-        main.step("Copying MN pcap and ONOS log files to test station")
+        main.step( "Copying MN pcap and ONOS log files to test station" )
         testname = main.TEST
-        teststation_user = main.params['TESTONUSER']
-        teststation_IP = main.params['TESTONIP']
-        #NOTE: MN Pcap file is being saved to ~/packet_captures
+        teststationUser = main.params[ 'TESTONUSER' ]
+        teststationIP = main.params[ 'TESTONIP' ]
+        # NOTE: MN Pcap file is being saved to ~/packet_captures
         #       scp this file as MN and TestON aren't necessarily the same vm
-        #FIXME: scp
-        #####mn files
-        #TODO: Load these from params
-        #NOTE: must end in /
-        log_folder = "/opt/onos/log/"
-        log_files = ["karaf.log", "karaf.log.1"]
-        #NOTE: must end in /
-        dst_dir = "~/packet_captures/"
-        for f in log_files:
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS1_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS1-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS2_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS2-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS3_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS3-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS4_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS4-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS5_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS5-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS6_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS6-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS7_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS7-"+f )
+        # FIXME: scp
+        # mn files
+        # TODO: Load these from params
+        # NOTE: must end in /
+        logFolder = "/opt/onos/log/"
+        logFiles = [ "karaf.log", "karaf.log.1" ]
+        # NOTE: must end in /
+        dstDir = "~/packet_captures/"
+        for f in logFiles:
+            for i in range( 7 ):
+                main.ONOSbench.handle.sendline( "scp sdn@" + ips[ i ] + ":" +
+                                                logFolder + f + " " +
+                                                teststationUser + "@" +
+                                                teststationIP + ":" +
+                                                dstDir + str( testname ) +
+                                                "-ONOS" + str( i + 1 ) + "-" +
+                                                f )
+        # std*.log's
+        # NOTE: must end in /
+        logFolder = "/opt/onos/var/"
+        logFiles = [ "stderr.log", "stdout.log" ]
+        # NOTE: must end in /
+        dstDir = "~/packet_captures/"
+        for f in logFiles:
+            for i in range( 7 ):
+                main.ONOSbench.handle.sendline( "scp sdn@" + ips[ i ] + ":" +
+                                                logFolder + f + " " +
+                                                teststationUser + "@" +
+                                                teststationIP + ":" +
+                                                dstDir + str( testname ) +
+                                                "-ONOS" + str( i + 1 ) + "-" +
+                                                f )
+        # sleep so scp can finish
+        time.sleep( 10 )
+        main.step( "Packing and rotating pcap archives" )
+        os.system( "~/TestON/dependencies/rotate.sh " + str( testname ) )
 
-        #std*.log's
-        #NOTE: must end in /
-        log_folder = "/opt/onos/var/"
-        log_files = ["stderr.log", "stdout.log"]
-        #NOTE: must end in /
-        dst_dir = "~/packet_captures/"
-        for f in log_files:
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS1_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS1-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS2_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS2-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS3_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS3-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS4_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS4-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS5_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS5-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS6_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS6-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS7_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS7-"+f )
+        # TODO: actually check something here
+        utilities.assert_equals( expect=main.TRUE, actual=main.TRUE,
+                                onpass="Test cleanup successful",
+                                onfail="Test cleanup NOT successful" )
 
-
-        #sleep so scp can finish
-        time.sleep(10)
-        main.step("Packing and rotating pcap archives")
-        os.system("~/TestON/dependencies/rotate.sh "+ str(testname))
-
-
-        #TODO: actually check something here
-        utilities.assert_equals(expect=main.TRUE, actual=main.TRUE,
-                onpass="Test cleanup successful",
-                onfail="Test cleanup NOT successful")
-
-    def CASE14 ( self, main ) :
-        '''
+    def CASE14( self, main ):
+        """
         start election app on all onos nodes
-        '''
-        leader_result = main.TRUE
-        #install app on onos 1
-        main.log.info("Install leadership election app")
-        main.ONOScli1.feature_install("onos-app-election")
-        #wait for election
-        #check for leader
-        leader = main.ONOScli1.election_test_leader()
-        #verify leader is ONOS1
-        if leader == ONOS1_ip:
-            #all is well
+        """
+        leaderResult = main.TRUE
+        # install app on onos 1
+        main.log.info( "Install leadership election app" )
+        main.ONOScli1.featureInstall( "onos-app-election" )
+        # wait for election
+        # check for leader
+        leader = main.ONOScli1.electionTestLeader()
+        # verify leader is ONOS1
+        if leader == ONOS1Ip:
+            # all is well
             pass
-        elif leader == None:
-            #No leader elected
-            main.log.report("No leader was elected")
-            leader_result = main.FALSE
+        elif leader is None:
+            # No leader elected
+            main.log.report( "No leader was elected" )
+            leaderResult = main.FALSE
         elif leader == main.FALSE:
-            #error in  response
-            #TODO: add check for "Command not found:" in the driver, this means the app isn't loaded
-            main.log.report("Something is wrong with election_test_leader function, check the error logs")
-            leader_result = main.FALSE
+            # error in  response
+            # TODO: add check for "Command not found:" in the driver, this
+            # means the app isn't loaded
+            main.log.report( "Something is wrong with electionTestLeader" +
+                             " function, check the error logs" )
+            leaderResult = main.FALSE
         else:
-            #error in  response
-            main.log.report("Unexpected response from election_test_leader function:'"+str(leader)+"'")
-            leader_result = main.FALSE
+            # error in  response
+            main.log.report(
+                "Unexpected response from electionTestLeader function:'" +
+                str( leader ) +
+                "'" )
+            leaderResult = main.FALSE
 
-
-
-
-        #install on other nodes and check for leader.
-        #Should be onos1 and each app should show the same leader
-        for controller in range(2,num_controllers+1):
-            node = getattr( main, ( 'ONOScli' + str( controller ) ) )#loop through ONOScli handlers
-            node.feature_install("onos-app-election")
-            leaderN = node.election_test_leader()
-            #verify leader is ONOS1
-            if leaderN == ONOS1_ip:
-                #all is well
+        # install on other nodes and check for leader.
+        # Should be onos1 and each app should show the same leader
+        for controller in range( 2, numControllers + 1 ):
+            # loop through ONOScli handlers
+            node = getattr( main, ( 'ONOScli' + str( controller ) ) )
+            node.featureInstall( "onos-app-election" )
+            leaderN = node.electionTestLeader()
+            # verify leader is ONOS1
+            if leaderN == ONOS1Ip:
+                # all is well
                 pass
             elif leaderN == main.FALSE:
-                #error in  response
-                #TODO: add check for "Command not found:" in the driver, this means the app isn't loaded
-                main.log.report("Something is wrong with election_test_leader function, check the error logs")
-                leader_result = main.FALSE
+                # error in  response
+                # TODO: add check for "Command not found:" in the driver, this
+                # means the app isn't loaded
+                main.log.report( "Something is wrong with " +
+                                 "electionTestLeader function, check the" +
+                                 " error logs" )
+                leaderResult = main.FALSE
             elif leader != leaderN:
-                leader_result = main.FALSE
-                main.log.report("ONOS" + str(controller) + " sees "+str(leaderN) +
-                        " as the leader of the election app. Leader should be "+str(leader) )
-        if leader_result:
-            main.log.report("Leadership election tests passed(consistent view of leader across listeners and a leader was elected)")
-        utilities.assert_equals(expect=main.TRUE, actual=leader_result,
-                onpass="Leadership election passed",
-                onfail="Something went wrong with Leadership election")
+                leaderResult = main.FALSE
+                main.log.report( "ONOS" + str( controller ) + " sees " +
+                                 str( leaderN ) +
+                                 " as the leader of the election app. Leader" +
+                                 " should be " +
+                                 str( leader ) )
+        if leaderResult:
+            main.log.report( "Leadership election tests passed( consistent " +
+                             "view of leader across listeners and a leader " +
+                             "was elected )" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=leaderResult,
+            onpass="Leadership election passed",
+            onfail="Something went wrong with Leadership election" )
 
-    def CASE15 ( self, main ) :
-        '''
+    def CASE15( self, main ):
+        """
         Check that Leadership Election is still functional
-        '''
-        leader_result = main.TRUE
+        """
+        leaderResult = main.TRUE
         description = "Check that Leadership Election is still functional"
-        main.log.report(description)
-        main.case(description)
-        main.step("Find current leader and withdraw")
-        leader = main.ONOScli1.election_test_leader()
-        #TODO: do some sanity checking on leader before using it
-        withdraw_result = main.FALSE
-        if leader == ONOS1_ip:
-            old_leader = getattr( main, "ONOScli1" )
-        elif leader == ONOS2_ip:
-            old_leader = getattr( main, "ONOScli2" )
-        elif leader == ONOS3_ip:
-            old_leader = getattr( main, "ONOScli3" )
-        elif leader == ONOS4_ip:
-            old_leader = getattr( main, "ONOScli4" )
-        elif leader == ONOS5_ip:
-            old_leader = getattr( main, "ONOScli5" )
-        elif leader == ONOS6_ip:
-            old_leader = getattr( main, "ONOScli6" )
-        elif leader == ONOS7_ip:
-            old_leader = getattr( main, "ONOScli7" )
-        elif leader == None or leader == main.FALSE:
-            main.log.report("Leader for the election app should be an ONOS node,"\
-                    +"instead got '"+str(leader)+"'")
-            leader_result = main.FALSE
-        withdraw_result = old_leader.election_test_withdraw()
+        main.log.report( description )
+        main.case( description )
+        main.step( "Find current leader and withdraw" )
+        leader = main.ONOScli1.electionTestLeader()
+        # TODO: do some sanity checking on leader before using it
+        withdrawResult = main.FALSE
+        if leader == ONOS1Ip:
+            oldLeader = getattr( main, "ONOScli1" )
+        elif leader == ONOS2Ip:
+            oldLeader = getattr( main, "ONOScli2" )
+        elif leader == ONOS3Ip:
+            oldLeader = getattr( main, "ONOScli3" )
+        elif leader == ONOS4Ip:
+            oldLeader = getattr( main, "ONOScli4" )
+        elif leader == ONOS5Ip:
+            oldLeader = getattr( main, "ONOScli5" )
+        elif leader == ONOS6Ip:
+            oldLeader = getattr( main, "ONOScli6" )
+        elif leader == ONOS7Ip:
+            oldLeader = getattr( main, "ONOScli7" )
+        elif leader is None or leader == main.FALSE:
+            main.log.report(
+                "Leader for the election app should be an ONOS node," +
+                "instead got '" +
+                str( leader ) +
+                "'" )
+            leaderResult = main.FALSE
+        withdrawResult = oldLeader.electionTestWithdraw()
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=withdrawResult,
+            onpass="App was withdrawn from election",
+            onfail="App was not withdrawn from election" )
 
-
-        main.step("Make sure new leader is elected")
-        leader_list = []
-        for controller in range(1,num_controllers+1):
-            node = getattr( main, ( 'ONOScli' + str( controller ) ) )#loop through ONOScli handlers
-            leader_list.append( node.election_test_leader() )
-        for leaderN in leader_list:
+        main.step( "Make sure new leader is elected" )
+        leaderList = []
+        for controller in range( 1, numControllers + 1 ):
+            # loop through ONOScli handlers
+            node = getattr( main, ( 'ONOScli' + str( controller ) ) )
+            leaderList.append( node.electionTestLeader() )
+        for leaderN in leaderList:
             if leaderN == leader:
-                main.log.report("ONOS"+str(controller)+" still sees " + str(leader) +\
-                        " as leader after they withdrew")
-                leader_result = main.FALSE
+                main.log.report(
+                    "ONOS" +
+                    str( controller ) +
+                    " still sees " +
+                    str( leader ) +
+                    " as leader after they withdrew" )
+                leaderResult = main.FALSE
             elif leaderN == main.FALSE:
-                #error in  response
-                #TODO: add check for "Command not found:" in the driver, this means the app isn't loaded
-                main.log.report("Something is wrong with election_test_leader function, check the error logs")
-                leader_result = main.FALSE
-        consistent_leader = main.FALSE
-        if len( set( leader_list ) ) == 1:
-            main.log.info("Each Election-app sees '"+str(leader_list[0])+"' as the leader")
-            consistent_leader = main.TRUE
+                # error in  response
+                # TODO: add check for "Command not found:" in the driver, this
+                # means the app isn't loaded
+                main.log.report( "Something is wrong with " +
+                                 "electionTestLeader function, " +
+                                 "check the error logs" )
+                leaderResult = main.FALSE
+        consistentLeader = main.FALSE
+        if len( set( leaderList ) ) == 1:
+            main.log.info( "Each Election-app sees '" +
+                           str( leaderList[ 0 ] ) +
+                           "' as the leader" )
+            consistentLeader = main.TRUE
         else:
-            main.log.report("Inconsistent responses for leader of Election-app:")
-            for n in range(len(leader_list)):
-                main.log.report("ONOS" + str(n+1) + " response: " + str(leader_list[n]) )
-        if leader_result:
-            main.log.report("Leadership election tests passed(consistent view of leader across listeners and a new leader was elected when the old leader resigned)")
-        utilities.assert_equals(expect=main.TRUE, actual=leader_result,
-                onpass="Leadership election passed",
-                onfail="Something went wrong with Leadership election")
+            main.log.report(
+                "Inconsistent responses for leader of Election-app:" )
+            for n in range( len( leaderList ) ):
+                main.log.report( "ONOS" + str( n + 1 ) + " response: " +
+                                 str( leaderList[ n ] ) )
+        if leaderResult:
+            main.log.report( "Leadership election tests passed( consistent " +
+                             "view of leader across listeners and a new " +
+                             "leader was elected when the old leader " +
+                             "resigned )" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=leaderResult,
+            onpass="Leadership election passed",
+            onfail="Something went wrong with Leadership election" )
 
-
-        main.step("Run for election on old leader(just so everyone is in the hat)")
-        run_result = old_leader.election_test_run()
-        if consistent_leader == main.TRUE:
-            after_run = main.ONOScli1.election_test_leader()
-            #verify leader didn't just change
-            if after_run == leader_list[0]:
-                leader_result = main.TRUE
+        main.step(
+            "Run for election on old leader( just so everyone is in the hat )" )
+        runResult = oldLeader.electionTestRun()
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=runResult,
+            onpass="App re-ran for election",
+            onfail="App failed to run for election" )
+        if consistentLeader == main.TRUE:
+            afterRun = main.ONOScli1.electionTestLeader()
+            # verify leader didn't just change
+            if afterRun == leaderList[ 0 ]:
+                leaderResult = main.TRUE
             else:
-                leader_result = main.FALSE
-        #TODO: assert on  run and withdraw results?
+                leaderResult = main.FALSE
+        # TODO: assert on  run and withdraw results?
 
-        utilities.assert_equals(expect=main.TRUE, actual=leader_result,
-                onpass="Leadership election passed",
-                onfail="Something went wrong with Leadership election after the old leader re-ran for election")
-
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=leaderResult,
+            onpass="Leadership election passed",
+            onfail="Something went wrong with Leadership election after " +
+                   "the old leader re-ran for election" )
diff --git a/TestON/tests/HATestMinorityRestart/HATestMinorityRestart.params b/TestON/tests/HATestMinorityRestart/HATestMinorityRestart.params
index 78e0c83..7d79860 100644
--- a/TestON/tests/HATestMinorityRestart/HATestMinorityRestart.params
+++ b/TestON/tests/HATestMinorityRestart/HATestMinorityRestart.params
@@ -4,6 +4,7 @@
     <cellName>HA</cellName>
     </ENV>
     <Git>False</Git>
+    <branch> master </branch>
     <num_controllers> 7 </num_controllers>
 
     <CTRL>
@@ -56,6 +57,11 @@
         <LinkDiscovery>.2</LinkDiscovery>
         <SwitchDiscovery>.2</SwitchDiscovery>
     </timers>
+    <kill>
+        <switch> s5 </switch>
+        <dpid> 0000000000005000 </dpid>
+        <links> h5 s2 s1 s6 </links>
+    </kill>
     <MNtcpdump>
         <intf>eth0</intf>
         <port> </port>
diff --git a/TestON/tests/HATestMinorityRestart/HATestMinorityRestart.py b/TestON/tests/HATestMinorityRestart/HATestMinorityRestart.py
index b9d2925..6cca54b 100644
--- a/TestON/tests/HATestMinorityRestart/HATestMinorityRestart.py
+++ b/TestON/tests/HATestMinorityRestart/HATestMinorityRestart.py
@@ -1,4 +1,4 @@
-'''
+"""
 Description: This test is to determine if ONOS can handle
     a minority of it's nodes restarting
 
@@ -18,14 +18,16 @@
 CASE13: Clean up
 CASE14: start election app on all onos nodes
 CASE15: Check that Leadership Election is still functional
-'''
+"""
+
+
 class HATestMinorityRestart:
 
-    def __init__(self) :
+    def __init__( self ):
         self.default = ''
 
-    def CASE1(self,main) :
-        '''
+    def CASE1( self, main ):
+        """
         CASE1 is to compile ONOS and push it to the test machines
 
         Startup sequence:
@@ -37,775 +39,857 @@
         NOTE: temporary - onos-remove-raft-logs
         onos-install -f
         onos-wait-for-start
-        '''
-        import time
-        main.log.report("ONOS HA test: Restart minority of ONOS nodes - initialization")
-        main.case("Setting up test environment")
+        """
+        main.log.report(
+            "ONOS HA test: Restart minority of ONOS nodes - initialization" )
+        main.case( "Setting up test environment" )
+        # TODO: save all the timers and output them for plotting
 
         # load some vairables from the params file
-        PULL_CODE = False
-        if main.params['Git'] == 'True':
-            PULL_CODE = True
-        cell_name = main.params['ENV']['cellName']
+        PULLCODE = False
+        if main.params[ 'Git' ] == 'True':
+            PULLCODE = True
+        gitBranch = main.params[ 'branch' ]
+        cellName = main.params[ 'ENV' ][ 'cellName' ]
 
-        #set global variables
-        global ONOS1_ip
-        global ONOS1_port
-        global ONOS2_ip
-        global ONOS2_port
-        global ONOS3_ip
-        global ONOS3_port
-        global ONOS4_ip
-        global ONOS4_port
-        global ONOS5_ip
-        global ONOS5_port
-        global ONOS6_ip
-        global ONOS6_port
-        global ONOS7_ip
-        global ONOS7_port
-        global num_controllers
+        # set global variables
+        global ONOS1Ip
+        global ONOS1Port
+        global ONOS2Ip
+        global ONOS2Port
+        global ONOS3Ip
+        global ONOS3Port
+        global ONOS4Ip
+        global ONOS4Port
+        global ONOS5Ip
+        global ONOS5Port
+        global ONOS6Ip
+        global ONOS6Port
+        global ONOS7Ip
+        global ONOS7Port
+        global numControllers
 
-        ONOS1_ip = main.params['CTRL']['ip1']
-        ONOS1_port = main.params['CTRL']['port1']
-        ONOS2_ip = main.params['CTRL']['ip2']
-        ONOS2_port = main.params['CTRL']['port2']
-        ONOS3_ip = main.params['CTRL']['ip3']
-        ONOS3_port = main.params['CTRL']['port3']
-        ONOS4_ip = main.params['CTRL']['ip4']
-        ONOS4_port = main.params['CTRL']['port4']
-        ONOS5_ip = main.params['CTRL']['ip5']
-        ONOS5_port = main.params['CTRL']['port5']
-        ONOS6_ip = main.params['CTRL']['ip6']
-        ONOS6_port = main.params['CTRL']['port6']
-        ONOS7_ip = main.params['CTRL']['ip7']
-        ONOS7_port = main.params['CTRL']['port7']
-        num_controllers = int(main.params['num_controllers'])
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS1Port = main.params[ 'CTRL' ][ 'port1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS2Port = main.params[ 'CTRL' ][ 'port2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS3Port = main.params[ 'CTRL' ][ 'port3' ]
+        ONOS4Ip = main.params[ 'CTRL' ][ 'ip4' ]
+        ONOS4Port = main.params[ 'CTRL' ][ 'port4' ]
+        ONOS5Ip = main.params[ 'CTRL' ][ 'ip5' ]
+        ONOS5Port = main.params[ 'CTRL' ][ 'port5' ]
+        ONOS6Ip = main.params[ 'CTRL' ][ 'ip6' ]
+        ONOS6Port = main.params[ 'CTRL' ][ 'port6' ]
+        ONOS7Ip = main.params[ 'CTRL' ][ 'ip7' ]
+        ONOS7Port = main.params[ 'CTRL' ][ 'port7' ]
+        numControllers = int( main.params[ 'num_controllers' ] )
 
+        main.step( "Applying cell variable to environment" )
+        cellResult = main.ONOSbench.setCell( cellName )
+        verifyResult = main.ONOSbench.verifyCell()
 
-        main.step("Applying cell variable to environment")
-        cell_result = main.ONOSbench.set_cell(cell_name)
-        verify_result = main.ONOSbench.verify_cell()
+        # FIXME:this is short term fix
+        main.log.report( "Removing raft logs" )
+        main.ONOSbench.onosRemoveRaftLogs()
+        main.log.report( "Uninstalling ONOS" )
+        main.ONOSbench.onosUninstall( ONOS1Ip )
+        main.ONOSbench.onosUninstall( ONOS2Ip )
+        main.ONOSbench.onosUninstall( ONOS3Ip )
+        main.ONOSbench.onosUninstall( ONOS4Ip )
+        main.ONOSbench.onosUninstall( ONOS5Ip )
+        main.ONOSbench.onosUninstall( ONOS6Ip )
+        main.ONOSbench.onosUninstall( ONOS7Ip )
 
-        #FIXME:this is short term fix
-        main.log.report("Removing raft logs")
-        main.ONOSbench.onos_remove_raft_logs()
-        main.log.report("Uninstalling ONOS")
-        main.ONOSbench.onos_uninstall(ONOS1_ip)
-        main.ONOSbench.onos_uninstall(ONOS2_ip)
-        main.ONOSbench.onos_uninstall(ONOS3_ip)
-        main.ONOSbench.onos_uninstall(ONOS4_ip)
-        main.ONOSbench.onos_uninstall(ONOS5_ip)
-        main.ONOSbench.onos_uninstall(ONOS6_ip)
-        main.ONOSbench.onos_uninstall(ONOS7_ip)
+        cleanInstallResult = main.TRUE
+        gitPullResult = main.TRUE
 
-        clean_install_result = main.TRUE
-        git_pull_result = main.TRUE
+        main.step( "Compiling the latest version of ONOS" )
+        if PULLCODE:
+            # TODO Configure branch in params
+            main.step( "Git checkout and pull master" )
+            main.ONOSbench.gitCheckout( gitBranch )
+            gitPullResult = main.ONOSbench.gitPull()
 
-        main.step("Compiling the latest version of ONOS")
-        if PULL_CODE:
-            main.step("Git checkout and pull master")
-            main.ONOSbench.git_checkout("master")
-            git_pull_result = main.ONOSbench.git_pull()
+            main.step( "Using mvn clean & install" )
+            cleanInstallResult = main.ONOSbench.cleanInstall()
+        else:
+            main.log.warn( "Did not pull new code so skipping mvn " +
+                           "clean install" )
+        main.ONOSbench.getVersion( report=True )
 
-            main.step("Using mvn clean & install")
-            clean_install_result = main.TRUE
-            if git_pull_result == main.TRUE:
-                clean_install_result = main.ONOSbench.clean_install()
-            else:
-                main.log.warn("Did not pull new code so skipping mvn "+ \
-                        "clean install")
-        main.ONOSbench.get_version(report=True)
+        main.step( "Creating ONOS package" )
+        packageResult = main.ONOSbench.onosPackage()
 
-        main.step("Creating ONOS package")
-        package_result = main.ONOSbench.onos_package()
+        main.step( "Installing ONOS package" )
+        onos1InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS1Ip )
+        onos2InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS2Ip )
+        onos3InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS3Ip )
+        onos4InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS4Ip )
+        onos5InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS5Ip )
+        onos6InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS6Ip )
+        onos7InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS7Ip )
+        onosInstallResult = onos1InstallResult and onos2InstallResult\
+            and onos3InstallResult and onos4InstallResult\
+            and onos5InstallResult and onos6InstallResult\
+            and onos7InstallResult
 
-        main.step("Installing ONOS package")
-        onos1_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS1_ip)
-        onos2_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS2_ip)
-        onos3_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS3_ip)
-        onos4_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS4_ip)
-        onos5_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS5_ip)
-        onos6_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS6_ip)
-        onos7_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS7_ip)
-        onos_install_result = onos1_install_result and onos2_install_result\
-                and onos3_install_result and onos4_install_result\
-                and onos5_install_result and onos6_install_result\
-                and onos7_install_result
-        '''
-        #FIXME: work around until onos is less fragile
-        main.ONOSbench.handle.sendline("onos-cluster-install")
-        print main.ONOSbench.handle.expect("\$")
-        onos_install_result = main.TRUE
-        '''
-
-
-        main.step("Checking if ONOS is up yet")
-        #TODO check bundle:list?
-        for i in range(2):
-            onos1_isup = main.ONOSbench.isup(ONOS1_ip)
-            if not onos1_isup:
-                main.log.report("ONOS1 didn't start!")
-            onos2_isup = main.ONOSbench.isup(ONOS2_ip)
-            if not onos2_isup:
-                main.log.report("ONOS2 didn't start!")
-            onos3_isup = main.ONOSbench.isup(ONOS3_ip)
-            if not onos3_isup:
-                main.log.report("ONOS3 didn't start!")
-            onos4_isup = main.ONOSbench.isup(ONOS4_ip)
-            if not onos4_isup:
-                main.log.report("ONOS4 didn't start!")
-            onos5_isup = main.ONOSbench.isup(ONOS5_ip)
-            if not onos5_isup:
-                main.log.report("ONOS5 didn't start!")
-            onos6_isup = main.ONOSbench.isup(ONOS6_ip)
-            if not onos6_isup:
-                main.log.report("ONOS6 didn't start!")
-            onos7_isup = main.ONOSbench.isup(ONOS7_ip)
-            if not onos7_isup:
-                main.log.report("ONOS7 didn't start!")
-            onos_isup_result = onos1_isup and onos2_isup and onos3_isup\
-                    and onos4_isup and onos5_isup and onos6_isup and onos7_isup
-            if onos_isup_result == main.TRUE:
+        main.step( "Checking if ONOS is up yet" )
+        # TODO check bundle:list?
+        for i in range( 2 ):
+            onos1Isup = main.ONOSbench.isup( ONOS1Ip )
+            if not onos1Isup:
+                main.log.report( "ONOS1 didn't start!" )
+            onos2Isup = main.ONOSbench.isup( ONOS2Ip )
+            if not onos2Isup:
+                main.log.report( "ONOS2 didn't start!" )
+            onos3Isup = main.ONOSbench.isup( ONOS3Ip )
+            if not onos3Isup:
+                main.log.report( "ONOS3 didn't start!" )
+            onos4Isup = main.ONOSbench.isup( ONOS4Ip )
+            if not onos4Isup:
+                main.log.report( "ONOS4 didn't start!" )
+            onos5Isup = main.ONOSbench.isup( ONOS5Ip )
+            if not onos5Isup:
+                main.log.report( "ONOS5 didn't start!" )
+            onos6Isup = main.ONOSbench.isup( ONOS6Ip )
+            if not onos6Isup:
+                main.log.report( "ONOS6 didn't start!" )
+            onos7Isup = main.ONOSbench.isup( ONOS7Ip )
+            if not onos7Isup:
+                main.log.report( "ONOS7 didn't start!" )
+            onosIsupResult = onos1Isup and onos2Isup and onos3Isup\
+                and onos4Isup and onos5Isup and onos6Isup and onos7Isup
+            if onosIsupResult == main.TRUE:
                 break
-        # TODO: if it becomes an issue, we can retry this step  a few times
 
+        cliResult1 = main.ONOScli1.startOnosCli( ONOS1Ip )
+        cliResult2 = main.ONOScli2.startOnosCli( ONOS2Ip )
+        cliResult3 = main.ONOScli3.startOnosCli( ONOS3Ip )
+        cliResult4 = main.ONOScli4.startOnosCli( ONOS4Ip )
+        cliResult5 = main.ONOScli5.startOnosCli( ONOS5Ip )
+        cliResult6 = main.ONOScli6.startOnosCli( ONOS6Ip )
+        cliResult7 = main.ONOScli7.startOnosCli( ONOS7Ip )
+        cliResults = cliResult1 and cliResult2 and cliResult3 and\
+            cliResult4 and cliResult5 and cliResult6 and cliResult7
 
-        cli_result1 = main.ONOScli1.start_onos_cli(ONOS1_ip)
-        cli_result2 = main.ONOScli2.start_onos_cli(ONOS2_ip)
-        cli_result3 = main.ONOScli3.start_onos_cli(ONOS3_ip)
-        cli_result4 = main.ONOScli4.start_onos_cli(ONOS4_ip)
-        cli_result5 = main.ONOScli5.start_onos_cli(ONOS5_ip)
-        cli_result6 = main.ONOScli6.start_onos_cli(ONOS6_ip)
-        cli_result7 = main.ONOScli7.start_onos_cli(ONOS7_ip)
-        cli_results = cli_result1 and cli_result2 and cli_result3 and\
-                cli_result4 and cli_result5 and cli_result6 and cli_result7
+        main.step( "Start Packet Capture MN" )
+        main.Mininet2.startTcpdump(
+            str( main.params[ 'MNtcpdump' ][ 'folder' ] ) + str( main.TEST )
+            + "-MN.pcap",
+            intf=main.params[ 'MNtcpdump' ][ 'intf' ],
+            port=main.params[ 'MNtcpdump' ][ 'port' ] )
 
+        case1Result = ( cleanInstallResult and packageResult and
+                        cellResult and verifyResult and onosInstallResult
+                        and onosIsupResult and cliResults )
 
-        main.step("Start Packet Capture MN")
-        main.Mininet2.start_tcpdump(
-                str(main.params['MNtcpdump']['folder'])+str(main.TEST)+"-MN.pcap",
-                intf = main.params['MNtcpdump']['intf'],
-                port = main.params['MNtcpdump']['port'])
+        utilities.assert_equals( expect=main.TRUE, actual=case1Result,
+                                onpass="Test startup successful",
+                                onfail="Test startup NOT successful" )
 
-
-        case1_result = (clean_install_result and package_result and
-                cell_result and verify_result and onos_install_result and
-                onos_isup_result and cli_results)
-
-        utilities.assert_equals(expect=main.TRUE, actual=case1_result,
-                onpass="Test startup successful",
-                onfail="Test startup NOT successful")
-
-
-        if case1_result==main.FALSE:
+        if case1Result == main.FALSE:
             main.cleanup()
             main.exit()
 
-    def CASE2(self,main) :
-        '''
+    def CASE2( self, main ):
+        """
         Assign mastership to controllers
-        '''
-        import time
-        import json
+        """
         import re
 
-        main.log.report("Assigning switches to controllers")
-        main.case("Assigning Controllers")
-        main.step("Assign switches to controllers")
+        main.log.report( "Assigning switches to controllers" )
+        main.case( "Assigning Controllers" )
+        main.step( "Assign switches to controllers" )
 
-        for i in range (1,29):
-           main.Mininet1.assign_sw_controller(sw=str(i),count=num_controllers,
-                    ip1=ONOS1_ip,port1=ONOS1_port,
-                    ip2=ONOS2_ip,port2=ONOS2_port,
-                    ip3=ONOS3_ip,port3=ONOS3_port,
-                    ip4=ONOS4_ip,port4=ONOS4_port,
-                    ip5=ONOS5_ip,port5=ONOS5_port,
-                    ip6=ONOS6_ip,port6=ONOS6_port,
-                    ip7=ONOS7_ip,port7=ONOS7_port)
+        for i in range( 1, 29 ):
+            main.Mininet1.assignSwController(
+                sw=str( i ),
+                count=numControllers,
+                ip1=ONOS1Ip, port1=ONOS1Port,
+                ip2=ONOS2Ip, port2=ONOS2Port,
+                ip3=ONOS3Ip, port3=ONOS3Port,
+                ip4=ONOS4Ip, port4=ONOS4Port,
+                ip5=ONOS5Ip, port5=ONOS5Port,
+                ip6=ONOS6Ip, port6=ONOS6Port,
+                ip7=ONOS7Ip, port7=ONOS7Port )
 
-        mastership_check = main.TRUE
-        for i in range (1,29):
-            response = main.Mininet1.get_sw_controller("s"+str(i))
+        mastershipCheck = main.TRUE
+        for i in range( 1, 29 ):
+            response = main.Mininet1.getSwController( "s" + str( i ) )
             try:
-                main.log.info(str(response))
+                main.log.info( str( response ) )
             except:
-                main.log.info(repr(response))
-            if re.search("tcp:"+ONOS1_ip,response)\
-                    and re.search("tcp:"+ONOS2_ip,response)\
-                    and re.search("tcp:"+ONOS3_ip,response)\
-                    and re.search("tcp:"+ONOS4_ip,response)\
-                    and re.search("tcp:"+ONOS5_ip,response)\
-                    and re.search("tcp:"+ONOS6_ip,response)\
-                    and re.search("tcp:"+ONOS7_ip,response):
-                mastership_check = mastership_check and main.TRUE
+                main.log.info( repr( response ) )
+            if re.search( "tcp:" + ONOS1Ip, response )\
+                    and re.search( "tcp:" + ONOS2Ip, response )\
+                    and re.search( "tcp:" + ONOS3Ip, response )\
+                    and re.search( "tcp:" + ONOS4Ip, response )\
+                    and re.search( "tcp:" + ONOS5Ip, response )\
+                    and re.search( "tcp:" + ONOS6Ip, response )\
+                    and re.search( "tcp:" + ONOS7Ip, response ):
+                mastershipCheck = mastershipCheck and main.TRUE
             else:
-                mastership_check = main.FALSE
-        if mastership_check == main.TRUE:
-            main.log.report("Switch mastership assigned correctly")
-        utilities.assert_equals(expect = main.TRUE,actual=mastership_check,
-                onpass="Switch mastership assigned correctly",
-                onfail="Switches not assigned correctly to controllers")
+                mastershipCheck = main.FALSE
+        if mastershipCheck == main.TRUE:
+            main.log.report( "Switch mastership assigned correctly" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=mastershipCheck,
+            onpass="Switch mastership assigned correctly",
+            onfail="Switches not assigned correctly to controllers" )
 
-        #Manually assign mastership to the controller we want
-        role_call = main.TRUE
-        role_check = main.TRUE
+        # Manually assign mastership to the controller we want
+        roleCall = main.TRUE
+        roleCheck = main.TRUE
 
-        device_id = main.ONOScli1.get_device("1000")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS1_ip)
-        if ONOS1_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "1000" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS1Ip )
+        # Check assignment
+        if ONOS1Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("2800")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS1_ip)
-        if ONOS1_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "2800" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS1Ip )
+        # Check assignment
+        if ONOS1Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("2000")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS2_ip)
-        if ONOS2_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "2000" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS2Ip )
+        # Check assignment
+        if ONOS2Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("3000")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS2_ip)
-        if ONOS2_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "3000" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS2Ip )
+        # Check assignment
+        if ONOS2Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("5000")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS3_ip)
-        if ONOS3_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "5000" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS3Ip )
+        # Check assignment
+        if ONOS3Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("6000")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS3_ip)
-        if ONOS3_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "6000" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS3Ip )
+        # Check assignment
+        if ONOS3Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id =  main.ONOScli1.get_device("3004")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS4_ip)
-        if ONOS4_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "3004" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS4Ip )
+        # Check assignment
+        if ONOS4Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("3008")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        for i in range( 8, 18 ):
+            dpid = '3' + str( i ).zfill( 3 )
+            deviceId = main.ONOScli1.getDevice( dpid ).get( 'id' )
+            roleCall = roleCall and main.ONOScli1.deviceRole(
+                deviceId,
+                ONOS5Ip )
+            # Check assignment
+            if ONOS5Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+                roleCheck = roleCheck and main.TRUE
+            else:
+                roleCheck = roleCheck and main.FALSE
+
+        deviceId = main.ONOScli1.getDevice( "6007" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS6Ip )
+        # Check assignment
+        if ONOS6Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("3009")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
+        for i in range( 18, 28 ):
+            dpid = '6' + str( i ).zfill( 3 )
+            deviceId = main.ONOScli1.getDevice( dpid ).get( 'id' )
+            roleCall = roleCall and main.ONOScli1.deviceRole(
+                deviceId,
+                ONOS7Ip )
+            # Check assignment
+            if ONOS7Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+                roleCheck = roleCheck and main.TRUE
+            else:
+                roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("3010")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=roleCall,
+            onpass="Re-assigned switch mastership to designated controller",
+            onfail="Something wrong with deviceRole calls" )
 
-        device_id = main.ONOScli1.get_device("3011")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=roleCheck,
+            onpass="Switches were successfully reassigned to designated " +
+                   "controller",
+            onfail="Switches were not successfully reassigned" )
+        mastershipCheck = mastershipCheck and roleCall and roleCheck
+        utilities.assert_equals( expect=main.TRUE, actual=mastershipCheck,
+                                onpass="Switch mastership correctly assigned",
+                                onfail="Error in ( re )assigning switch" +
+                                " mastership" )
 
-        device_id = main.ONOScli1.get_device("3012")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("3013")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("3014")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("3015")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("3016")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("3017")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6007")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS6_ip)
-        if ONOS6_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6018")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6019")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6020")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6021")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6022")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6023")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6024")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6025")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6026")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6027")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        utilities.assert_equals(expect = main.TRUE,actual=role_call,
-                onpass="Re-assigned switch mastership to designated controller",
-                onfail="Something wrong with device_role calls")
-
-        utilities.assert_equals(expect = main.TRUE,actual=role_check,
-                onpass="Switches were successfully reassigned to designated controller",
-                onfail="Switches were not successfully reassigned")
-        mastership_check = mastership_check and role_call and role_check
-        utilities.assert_equals(expect = main.TRUE,actual=mastership_check,
-                onpass="Switch mastership correctly assigned",
-                onfail="Error in (re)assigning switch mastership")
-
-
-    def CASE3(self,main) :
+    def CASE3( self, main ):
         """
         Assign intents
-
         """
         import time
-        import json
-        import re
-        main.log.report("Adding host intents")
-        main.case("Adding host Intents")
+        main.log.report( "Adding host intents" )
+        main.case( "Adding host Intents" )
 
-        main.step("Discovering  Hosts( Via pingall for now)")
-        #FIXME: Once we have a host discovery mechanism, use that instead
+        main.step( "Discovering  Hosts( Via pingall for now )" )
+        # FIXME: Once we have a host discovery mechanism, use that instead
 
-        #install onos-app-fwd
-        main.log.info("Install reactive forwarding app")
-        main.ONOScli1.feature_install("onos-app-fwd")
-        main.ONOScli2.feature_install("onos-app-fwd")
-        main.ONOScli3.feature_install("onos-app-fwd")
-        main.ONOScli4.feature_install("onos-app-fwd")
-        main.ONOScli5.feature_install("onos-app-fwd")
-        main.ONOScli6.feature_install("onos-app-fwd")
-        main.ONOScli7.feature_install("onos-app-fwd")
+        # install onos-app-fwd
+        main.log.info( "Install reactive forwarding app" )
+        main.ONOScli1.featureInstall( "onos-app-fwd" )
+        main.ONOScli2.featureInstall( "onos-app-fwd" )
+        main.ONOScli3.featureInstall( "onos-app-fwd" )
+        main.ONOScli4.featureInstall( "onos-app-fwd" )
+        main.ONOScli5.featureInstall( "onos-app-fwd" )
+        main.ONOScli6.featureInstall( "onos-app-fwd" )
+        main.ONOScli7.featureInstall( "onos-app-fwd" )
 
-        #REACTIVE FWD test
-        ping_result = main.FALSE
+        # REACTIVE FWD test
+        pingResult = main.FALSE
         time1 = time.time()
-        ping_result = main.Mininet1.pingall()
+        pingResult = main.Mininet1.pingall()
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=pingResult,
+            onpass="Reactive Pingall test passed",
+            onfail="Reactive Pingall failed, one or more ping pairs failed" )
         time2 = time.time()
-        main.log.info("Time for pingall: %2f seconds" % (time2 - time1))
+        main.log.info( "Time for pingall: %2f seconds" % ( time2 - time1 ) )
 
-        #uninstall onos-app-fwd
-        main.log.info("Uninstall reactive forwarding app")
-        main.ONOScli1.feature_uninstall("onos-app-fwd")
-        main.ONOScli2.feature_uninstall("onos-app-fwd")
-        main.ONOScli3.feature_uninstall("onos-app-fwd")
-        main.ONOScli4.feature_uninstall("onos-app-fwd")
-        main.ONOScli5.feature_uninstall("onos-app-fwd")
-        main.ONOScli6.feature_uninstall("onos-app-fwd")
-        main.ONOScli7.feature_uninstall("onos-app-fwd")
-        #timeout for fwd flows
-        time.sleep(10)
+        # uninstall onos-app-fwd
+        main.log.info( "Uninstall reactive forwarding app" )
+        main.ONOScli1.featureUninstall( "onos-app-fwd" )
+        main.ONOScli2.featureUninstall( "onos-app-fwd" )
+        main.ONOScli3.featureUninstall( "onos-app-fwd" )
+        main.ONOScli4.featureUninstall( "onos-app-fwd" )
+        main.ONOScli5.featureUninstall( "onos-app-fwd" )
+        main.ONOScli6.featureUninstall( "onos-app-fwd" )
+        main.ONOScli7.featureUninstall( "onos-app-fwd" )
+        # timeout for fwd flows
+        time.sleep( 10 )
 
-        main.step("Add  host intents")
-        #TODO:  move the host numbers to params
-        import json
-        intents_json= json.loads(main.ONOScli1.hosts())
-        intent_add_result = True
-        for i in range(8,18):
-            main.log.info("Adding host intent between h"+str(i)+" and h"+str(i+10))
-            host1 =  "00:00:00:00:00:" + str(hex(i)[2:]).zfill(2).upper()
-            host2 =  "00:00:00:00:00:" + str(hex(i+10)[2:]).zfill(2).upper()
-            host1_id = main.ONOScli1.get_host(host1)['id']
-            host2_id = main.ONOScli1.get_host(host2)['id']
-            #NOTE: get host can return None
-            if host1_id and host2_id:
-                tmp_result = main.ONOScli1.add_host_intent(host1_id, host2_id )
+        main.step( "Add  host intents" )
+        # TODO:  move the host numbers to params
+        intentAddResult = True
+        for i in range( 8, 18 ):
+            main.log.info( "Adding host intent between h" + str( i ) +
+                           " and h" + str( i + 10 ) )
+            host1 = "00:00:00:00:00:" + \
+                str( hex( i )[ 2: ] ).zfill( 2 ).upper()
+            host2 = "00:00:00:00:00:" + \
+                str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
+            host1Id = main.ONOScli1.getHost( host1 )[ 'id' ]
+            host2Id = main.ONOScli1.getHost( host2 )[ 'id' ]
+            # NOTE: get host can return None
+            if host1Id and host2Id:
+                tmpResult = main.ONOScli1.addHostIntent(
+                    host1Id,
+                    host2Id )
             else:
-                main.log.error("Error, get_host() failed")
-                tmp_result = main.FALSE
-            intent_add_result = bool(intent_add_result and tmp_result)
-        utilities.assert_equals(expect=True, actual=intent_add_result,
-                onpass="Switch mastership correctly assigned",
-                onfail="Error in (re)assigning switch mastership")
-        #TODO Check if intents all exist in datastore
-        #NOTE: Do we need to print this once the test is working?
-        #main.log.info(json.dumps(json.loads(main.ONOScli1.intents(json_format=True)),
-        #    sort_keys=True, indent=4, separators=(',', ': ') ) )
+                main.log.error( "Error, getHost() failed" )
+                tmpResult = main.FALSE
+            intentAddResult = bool( pingResult and intentAddResult
+                                     and tmpResult )
+            # TODO Check that intents were added?
+        utilities.assert_equals(
+            expect=True,
+            actual=intentAddResult,
+            onpass="Pushed host intents to ONOS",
+            onfail="Error in pushing host intents to ONOS" )
+        # TODO Check if intents all exist in datastore
 
-    def CASE4(self,main) :
+    def CASE4( self, main ):
         """
         Ping across added host intents
         """
         description = " Ping across added host intents"
-        main.log.report(description)
-        main.case(description)
-        Ping_Result = main.TRUE
-        for i in range(8,18):
-            ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+10))
-            Ping_Result = Ping_Result and ping
-            if ping==main.FALSE:
-                main.log.warn("Ping failed between h"+str(i)+" and h" + str(i+10))
-            elif ping==main.TRUE:
-                main.log.info("Ping test passed!")
-                Ping_Result = main.TRUE
-        if Ping_Result==main.FALSE:
-            main.log.report("Intents have not been installed correctly, pings failed.")
-        if Ping_Result==main.TRUE:
-            main.log.report("Intents have been installed correctly and verified by pings")
-        utilities.assert_equals(expect = main.TRUE,actual=Ping_Result,
-                onpass="Intents have been installed correctly and pings work",
-                onfail ="Intents have not been installed correctly, pings failed." )
+        main.log.report( description )
+        main.case( description )
+        PingResult = main.TRUE
+        for i in range( 8, 18 ):
+            ping = main.Mininet1.pingHost(
+                src="h" + str( i ), target="h" + str( i + 10 ) )
+            PingResult = PingResult and ping
+            if ping == main.FALSE:
+                main.log.warn( "Ping failed between h" + str( i ) +
+                               " and h" + str( i + 10 ) )
+            elif ping == main.TRUE:
+                main.log.info( "Ping test passed!" )
+                PingResult = main.TRUE
+        if PingResult == main.FALSE:
+            main.log.report(
+                "Intents have not been installed correctly, pings failed." )
+            #TODO: pretty print
+            main.log.warn( "ONSO1 intents: " )
+            main.log.warn( json.dumps( json.loads( main.ONOScli1.intents() ),
+                                       sort_keys=True,
+                                       indent=4,
+                                       separators=( ',', ': ' ) ) )
+        if PingResult == main.TRUE:
+            main.log.report(
+                "Intents have been installed correctly and verified by pings" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=PingResult,
+            onpass="Intents have been installed correctly and pings work",
+            onfail="Intents have not been installed correctly, pings failed." )
 
-    def CASE5(self,main) :
-        '''
+    def CASE5( self, main ):
+        """
         Reading state of ONOS
-        '''
-        import time
+        """
         import json
-        from subprocess import Popen, PIPE
-        from sts.topology.teston_topology import TestONTopology # assumes that sts is already in you PYTHONPATH
+        # assumes that sts is already in you PYTHONPATH
+        from sts.topology.teston_topology import TestONTopology
 
-        main.log.report("Setting up and gathering data for current state")
-        main.case("Setting up and gathering data for current state")
-        #The general idea for this test case is to pull the state of (intents,flows, topology,...) from each ONOS node
-        #We can then compare them with eachother and also with past states
+        main.log.report( "Setting up and gathering data for current state" )
+        main.case( "Setting up and gathering data for current state" )
+        # The general idea for this test case is to pull the state of
+        # ( intents,flows, topology,... ) from each ONOS node
+        # We can then compare them with eachother and also with past states
 
-        main.step("Get the Mastership of each switch from each controller")
-        global mastership_state
-        mastership_state = []
+        main.step( "Get the Mastership of each switch from each controller" )
+        global mastershipState
+        mastershipState = []
 
-        #Assert that each device has a master
-        ONOS1_master_not_null = main.ONOScli1.roles_not_null()
-        ONOS2_master_not_null = main.ONOScli2.roles_not_null()
-        ONOS3_master_not_null = main.ONOScli3.roles_not_null()
-        ONOS4_master_not_null = main.ONOScli4.roles_not_null()
-        ONOS5_master_not_null = main.ONOScli5.roles_not_null()
-        ONOS6_master_not_null = main.ONOScli6.roles_not_null()
-        ONOS7_master_not_null = main.ONOScli7.roles_not_null()
-        roles_not_null = ONOS1_master_not_null and ONOS2_master_not_null and\
-                ONOS3_master_not_null and ONOS4_master_not_null and\
-                ONOS5_master_not_null and ONOS6_master_not_null and\
-                ONOS7_master_not_null
-        utilities.assert_equals(expect = main.TRUE,actual=roles_not_null,
-                onpass="Each device has a master",
-                onfail="Some devices don't have a master assigned")
+        # Assert that each device has a master
+        ONOS1MasterNotNull = main.ONOScli1.rolesNotNull()
+        ONOS2MasterNotNull = main.ONOScli2.rolesNotNull()
+        ONOS3MasterNotNull = main.ONOScli3.rolesNotNull()
+        ONOS4MasterNotNull = main.ONOScli4.rolesNotNull()
+        ONOS5MasterNotNull = main.ONOScli5.rolesNotNull()
+        ONOS6MasterNotNull = main.ONOScli6.rolesNotNull()
+        ONOS7MasterNotNull = main.ONOScli7.rolesNotNull()
+        rolesNotNull = ONOS1MasterNotNull and ONOS2MasterNotNull and\
+            ONOS3MasterNotNull and ONOS4MasterNotNull and\
+            ONOS5MasterNotNull and ONOS6MasterNotNull and\
+            ONOS7MasterNotNull
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=rolesNotNull,
+            onpass="Each device has a master",
+            onfail="Some devices don't have a master assigned" )
 
-
-        ONOS1_mastership = main.ONOScli1.roles()
-        ONOS2_mastership = main.ONOScli2.roles()
-        ONOS3_mastership = main.ONOScli3.roles()
-        ONOS4_mastership = main.ONOScli4.roles()
-        ONOS5_mastership = main.ONOScli5.roles()
-        ONOS6_mastership = main.ONOScli6.roles()
-        ONOS7_mastership = main.ONOScli7.roles()
-        #print json.dumps(json.loads(ONOS1_mastership), sort_keys=True, indent=4, separators=(',', ': '))
-        if "Error" in ONOS1_mastership or not ONOS1_mastership\
-                or "Error" in ONOS2_mastership or not ONOS2_mastership\
-                or "Error" in ONOS3_mastership or not ONOS3_mastership\
-                or "Error" in ONOS4_mastership or not ONOS4_mastership\
-                or "Error" in ONOS5_mastership or not ONOS5_mastership\
-                or "Error" in ONOS6_mastership or not ONOS6_mastership\
-                or "Error" in ONOS7_mastership or not ONOS7_mastership:
-                    main.log.report("Error in getting ONOS roles")
-                    main.log.warn("ONOS1 mastership response: " + repr(ONOS1_mastership))
-                    main.log.warn("ONOS2 mastership response: " + repr(ONOS2_mastership))
-                    main.log.warn("ONOS3 mastership response: " + repr(ONOS3_mastership))
-                    main.log.warn("ONOS4 mastership response: " + repr(ONOS4_mastership))
-                    main.log.warn("ONOS5 mastership response: " + repr(ONOS5_mastership))
-                    main.log.warn("ONOS6 mastership response: " + repr(ONOS6_mastership))
-                    main.log.warn("ONOS7 mastership response: " + repr(ONOS7_mastership))
-                    consistent_mastership = main.FALSE
-        elif ONOS1_mastership == ONOS2_mastership\
-                and ONOS1_mastership == ONOS3_mastership\
-                and ONOS1_mastership == ONOS4_mastership\
-                and ONOS1_mastership == ONOS5_mastership\
-                and ONOS1_mastership == ONOS6_mastership\
-                and ONOS1_mastership == ONOS7_mastership:
-                    mastership_state = ONOS1_mastership
-                    consistent_mastership = main.TRUE
-                    main.log.report("Switch roles are consistent across all ONOS nodes")
+        ONOS1Mastership = main.ONOScli1.roles()
+        ONOS2Mastership = main.ONOScli2.roles()
+        ONOS3Mastership = main.ONOScli3.roles()
+        ONOS4Mastership = main.ONOScli4.roles()
+        ONOS5Mastership = main.ONOScli5.roles()
+        ONOS6Mastership = main.ONOScli6.roles()
+        ONOS7Mastership = main.ONOScli7.roles()
+        if "Error" in ONOS1Mastership or not ONOS1Mastership\
+                or "Error" in ONOS2Mastership or not ONOS2Mastership\
+                or "Error" in ONOS3Mastership or not ONOS3Mastership\
+                or "Error" in ONOS4Mastership or not ONOS4Mastership\
+                or "Error" in ONOS5Mastership or not ONOS5Mastership\
+                or "Error" in ONOS6Mastership or not ONOS6Mastership\
+                or "Error" in ONOS7Mastership or not ONOS7Mastership:
+            main.log.report( "Error in getting ONOS roles" )
+            main.log.warn(
+                "ONOS1 mastership response: " +
+                repr( ONOS1Mastership ) )
+            main.log.warn(
+                "ONOS2 mastership response: " +
+                repr( ONOS2Mastership ) )
+            main.log.warn(
+                "ONOS3 mastership response: " +
+                repr( ONOS3Mastership ) )
+            main.log.warn(
+                "ONOS4 mastership response: " +
+                repr( ONOS4Mastership ) )
+            main.log.warn(
+                "ONOS5 mastership response: " +
+                repr( ONOS5Mastership ) )
+            main.log.warn(
+                "ONOS6 mastership response: " +
+                repr( ONOS6Mastership ) )
+            main.log.warn(
+                "ONOS7 mastership response: " +
+                repr( ONOS7Mastership ) )
+            consistentMastership = main.FALSE
+        elif ONOS1Mastership == ONOS2Mastership\
+                and ONOS1Mastership == ONOS3Mastership\
+                and ONOS1Mastership == ONOS4Mastership\
+                and ONOS1Mastership == ONOS5Mastership\
+                and ONOS1Mastership == ONOS6Mastership\
+                and ONOS1Mastership == ONOS7Mastership:
+            mastershipState = ONOS1Mastership
+            consistentMastership = main.TRUE
+            main.log.report(
+                "Switch roles are consistent across all ONOS nodes" )
         else:
-            main.log.warn("ONOS1 roles: ", json.dumps(json.loads(ONOS1_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS2 roles: ", json.dumps(json.loads(ONOS2_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS3 roles: ", json.dumps(json.loads(ONOS3_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS4 roles: ", json.dumps(json.loads(ONOS4_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS5 roles: ", json.dumps(json.loads(ONOS5_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS6 roles: ", json.dumps(json.loads(ONOS6_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS7 roles: ", json.dumps(json.loads(ONOS7_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            consistent_mastership = main.FALSE
-        utilities.assert_equals(expect = main.TRUE,actual=consistent_mastership,
-                onpass="Switch roles are consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of switch roles")
+            main.log.warn(
+                "ONOS1 roles: ",
+                json.dumps(
+                    json.loads( ONOS1Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS2 roles: ",
+                json.dumps(
+                    json.loads( ONOS2Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS3 roles: ",
+                json.dumps(
+                    json.loads( ONOS3Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS4 roles: ",
+                json.dumps(
+                    json.loads( ONOS4Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS5 roles: ",
+                json.dumps(
+                    json.loads( ONOS5Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS6 roles: ",
+                json.dumps(
+                    json.loads( ONOS6Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS7 roles: ",
+                json.dumps(
+                    json.loads( ONOS7Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            consistentMastership = main.FALSE
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=consistentMastership,
+            onpass="Switch roles are consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of switch roles" )
 
-
-        main.step("Get the intents from each controller")
-        global intent_state
-        intent_state = []
-        ONOS1_intents = main.ONOScli1.intents( json_format=True )
-        ONOS2_intents = main.ONOScli2.intents( json_format=True )
-        ONOS3_intents = main.ONOScli3.intents( json_format=True )
-        ONOS4_intents = main.ONOScli4.intents( json_format=True )
-        ONOS5_intents = main.ONOScli5.intents( json_format=True )
-        ONOS6_intents = main.ONOScli6.intents( json_format=True )
-        ONOS7_intents = main.ONOScli7.intents( json_format=True )
-        intent_check = main.FALSE
-        if "Error" in ONOS1_intents or not ONOS1_intents\
-                or "Error" in ONOS2_intents or not ONOS2_intents\
-                or "Error" in ONOS3_intents or not ONOS3_intents\
-                or "Error" in ONOS4_intents or not ONOS4_intents\
-                or "Error" in ONOS5_intents or not ONOS5_intents\
-                or "Error" in ONOS6_intents or not ONOS6_intents\
-                or "Error" in ONOS7_intents or not ONOS7_intents:
-                    main.log.report("Error in getting ONOS intents")
-                    main.log.warn("ONOS1 intents response: " + repr(ONOS1_intents))
-                    main.log.warn("ONOS2 intents response: " + repr(ONOS2_intents))
-                    main.log.warn("ONOS3 intents response: " + repr(ONOS3_intents))
-                    main.log.warn("ONOS4 intents response: " + repr(ONOS4_intents))
-                    main.log.warn("ONOS5 intents response: " + repr(ONOS5_intents))
-                    main.log.warn("ONOS6 intents response: " + repr(ONOS6_intents))
-                    main.log.warn("ONOS7 intents response: " + repr(ONOS7_intents))
-        elif ONOS1_intents == ONOS2_intents\
-                and ONOS1_intents == ONOS3_intents\
-                and ONOS1_intents == ONOS4_intents\
-                and ONOS1_intents == ONOS5_intents\
-                and ONOS1_intents == ONOS6_intents\
-                and ONOS1_intents == ONOS7_intents:
-                    intent_state = ONOS1_intents
-                    intent_check = main.TRUE
-                    main.log.report("Intents are consistent across all ONOS nodes")
+        main.step( "Get the intents from each controller" )
+        global intentState
+        intentState = []
+        ONOS1Intents = main.ONOScli1.intents( jsonFormat=True )
+        ONOS2Intents = main.ONOScli2.intents( jsonFormat=True )
+        ONOS3Intents = main.ONOScli3.intents( jsonFormat=True )
+        ONOS4Intents = main.ONOScli4.intents( jsonFormat=True )
+        ONOS5Intents = main.ONOScli5.intents( jsonFormat=True )
+        ONOS6Intents = main.ONOScli6.intents( jsonFormat=True )
+        ONOS7Intents = main.ONOScli7.intents( jsonFormat=True )
+        intentCheck = main.FALSE
+        if "Error" in ONOS1Intents or not ONOS1Intents\
+                or "Error" in ONOS2Intents or not ONOS2Intents\
+                or "Error" in ONOS3Intents or not ONOS3Intents\
+                or "Error" in ONOS4Intents or not ONOS4Intents\
+                or "Error" in ONOS5Intents or not ONOS5Intents\
+                or "Error" in ONOS6Intents or not ONOS6Intents\
+                or "Error" in ONOS7Intents or not ONOS7Intents:
+            main.log.report( "Error in getting ONOS intents" )
+            main.log.warn( "ONOS1 intents response: " + repr( ONOS1Intents ) )
+            main.log.warn( "ONOS2 intents response: " + repr( ONOS2Intents ) )
+            main.log.warn( "ONOS3 intents response: " + repr( ONOS3Intents ) )
+            main.log.warn( "ONOS4 intents response: " + repr( ONOS4Intents ) )
+            main.log.warn( "ONOS5 intents response: " + repr( ONOS5Intents ) )
+            main.log.warn( "ONOS6 intents response: " + repr( ONOS6Intents ) )
+            main.log.warn( "ONOS7 intents response: " + repr( ONOS7Intents ) )
+        elif ONOS1Intents == ONOS2Intents\
+                and ONOS1Intents == ONOS3Intents\
+                and ONOS1Intents == ONOS4Intents\
+                and ONOS1Intents == ONOS5Intents\
+                and ONOS1Intents == ONOS6Intents\
+                and ONOS1Intents == ONOS7Intents:
+            intentState = ONOS1Intents
+            intentCheck = main.TRUE
+            main.log.report( "Intents are consistent across all ONOS nodes" )
         else:
-            main.log.warn("ONOS1 intents: ", json.dumps(json.loads(ONOS1_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS2 intents: ", json.dumps(json.loads(ONOS2_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS3 intents: ", json.dumps(json.loads(ONOS3_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS4 intents: ", json.dumps(json.loads(ONOS4_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS5 intents: ", json.dumps(json.loads(ONOS5_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS6 intents: ", json.dumps(json.loads(ONOS6_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS7 intents: ", json.dumps(json.loads(ONOS7_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-        utilities.assert_equals(expect = main.TRUE,actual=intent_check,
-                onpass="Intents are consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of intents")
+            main.log.warn(
+                "ONOS1 intents: ",
+                json.dumps(
+                    json.loads( ONOS1Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS2 intents: ",
+                json.dumps(
+                    json.loads( ONOS2Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS3 intents: ",
+                json.dumps(
+                    json.loads( ONOS3Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS4 intents: ",
+                json.dumps(
+                    json.loads( ONOS4Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS5 intents: ",
+                json.dumps(
+                    json.loads( ONOS5Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS6 intents: ",
+                json.dumps(
+                    json.loads( ONOS6Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS7 intents: ",
+                json.dumps(
+                    json.loads( ONOS7Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=intentCheck,
+            onpass="Intents are consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of intents" )
 
-
-        main.step("Get the flows from each controller")
-        global flow_state
-        flow_state = []
-        ONOS1_flows = main.ONOScli1.flows( json_format=True )
-        ONOS2_flows = main.ONOScli2.flows( json_format=True )
-        ONOS3_flows = main.ONOScli3.flows( json_format=True )
-        ONOS4_flows = main.ONOScli4.flows( json_format=True )
-        ONOS5_flows = main.ONOScli5.flows( json_format=True )
-        ONOS6_flows = main.ONOScli6.flows( json_format=True )
-        ONOS7_flows = main.ONOScli7.flows( json_format=True )
-        flow_check = main.FALSE
-        if "Error" in ONOS1_flows or not ONOS1_flows\
-                or "Error" in ONOS2_flows or not ONOS2_flows\
-                or "Error" in ONOS3_flows or not ONOS3_flows\
-                or "Error" in ONOS4_flows or not ONOS4_flows\
-                or "Error" in ONOS5_flows or not ONOS5_flows\
-                or "Error" in ONOS6_flows or not ONOS6_flows\
-                or "Error" in ONOS7_flows or not ONOS7_flows:
-                    main.log.report("Error in getting ONOS intents")
-                    main.log.warn("ONOS1 flows repsponse: "+ ONOS1_flows)
-                    main.log.warn("ONOS2 flows repsponse: "+ ONOS2_flows)
-                    main.log.warn("ONOS3 flows repsponse: "+ ONOS3_flows)
-                    main.log.warn("ONOS4 flows repsponse: "+ ONOS4_flows)
-                    main.log.warn("ONOS5 flows repsponse: "+ ONOS5_flows)
-                    main.log.warn("ONOS6 flows repsponse: "+ ONOS6_flows)
-                    main.log.warn("ONOS7 flows repsponse: "+ ONOS7_flows)
-        elif len(json.loads(ONOS1_flows)) == len(json.loads(ONOS2_flows))\
-                and len(json.loads(ONOS1_flows)) == len(json.loads(ONOS3_flows))\
-                and len(json.loads(ONOS1_flows)) == len(json.loads(ONOS4_flows))\
-                and len(json.loads(ONOS1_flows)) == len(json.loads(ONOS5_flows))\
-                and len(json.loads(ONOS1_flows)) == len(json.loads(ONOS6_flows))\
-                and len(json.loads(ONOS1_flows)) == len(json.loads(ONOS7_flows)):
-                #TODO: Do a better check, maybe compare flows on switches?
-                    flow_state = ONOS1_flows
-                    flow_check = main.TRUE
-                    main.log.report("Flow count is consistent across all ONOS nodes")
+        main.step( "Get the flows from each controller" )
+        global flowState
+        flowState = []
+        ONOS1Flows = main.ONOScli1.flows( jsonFormat=True )
+        ONOS2Flows = main.ONOScli2.flows( jsonFormat=True )
+        ONOS3Flows = main.ONOScli3.flows( jsonFormat=True )
+        ONOS4Flows = main.ONOScli4.flows( jsonFormat=True )
+        ONOS5Flows = main.ONOScli5.flows( jsonFormat=True )
+        ONOS6Flows = main.ONOScli6.flows( jsonFormat=True )
+        ONOS7Flows = main.ONOScli7.flows( jsonFormat=True )
+        ONOS1FlowsJson = json.loads( ONOS1Flows )
+        ONOS2FlowsJson = json.loads( ONOS2Flows )
+        ONOS3FlowsJson = json.loads( ONOS3Flows )
+        ONOS4FlowsJson = json.loads( ONOS4Flows )
+        ONOS5FlowsJson = json.loads( ONOS5Flows )
+        ONOS6FlowsJson = json.loads( ONOS6Flows )
+        ONOS7FlowsJson = json.loads( ONOS7Flows )
+        flowCheck = main.FALSE
+        if "Error" in ONOS1Flows or not ONOS1Flows\
+                or "Error" in ONOS2Flows or not ONOS2Flows\
+                or "Error" in ONOS3Flows or not ONOS3Flows\
+                or "Error" in ONOS4Flows or not ONOS4Flows\
+                or "Error" in ONOS5Flows or not ONOS5Flows\
+                or "Error" in ONOS6Flows or not ONOS6Flows\
+                or "Error" in ONOS7Flows or not ONOS7Flows:
+            main.log.report( "Error in getting ONOS intents" )
+            main.log.warn( "ONOS1 flows repsponse: " + ONOS1Flows )
+            main.log.warn( "ONOS2 flows repsponse: " + ONOS2Flows )
+            main.log.warn( "ONOS3 flows repsponse: " + ONOS3Flows )
+            main.log.warn( "ONOS4 flows repsponse: " + ONOS4Flows )
+            main.log.warn( "ONOS5 flows repsponse: " + ONOS5Flows )
+            main.log.warn( "ONOS6 flows repsponse: " + ONOS6Flows )
+            main.log.warn( "ONOS7 flows repsponse: " + ONOS7Flows )
+        elif len( ONOS1FlowsJson ) == len( ONOS2FlowsJson )\
+                and len( ONOS1FlowsJson ) == len( ONOS3FlowsJson )\
+                and len( ONOS1FlowsJson ) == len( ONOS4FlowsJson )\
+                and len( ONOS1FlowsJson ) == len( ONOS5FlowsJson )\
+                and len( ONOS1FlowsJson ) == len( ONOS6FlowsJson )\
+                and len( ONOS1FlowsJson ) == len( ONOS7FlowsJson ):
+                # TODO: Do a better check, maybe compare flows on switches?
+            flowState = ONOS1Flows
+            flowCheck = main.TRUE
+            main.log.report( "Flow count is consistent across all ONOS nodes" )
         else:
-            main.log.warn("ONOS1 flows: "+ json.dumps(json.loads(ONOS1_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS2 flows: "+ json.dumps(json.loads(ONOS2_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS3 flows: "+ json.dumps(json.loads(ONOS3_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS4 flows: "+ json.dumps(json.loads(ONOS4_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS5 flows: "+ json.dumps(json.loads(ONOS5_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS6 flows: "+ json.dumps(json.loads(ONOS6_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS7 flows: "+ json.dumps(json.loads(ONOS7_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-        utilities.assert_equals(expect = main.TRUE,actual=flow_check,
-                onpass="The flow count is consistent across all ONOS nodes",
-                onfail="ONOS nodes have different flow counts")
+            main.log.warn( "ONOS1 flows: " +
+                           json.dumps( ONOS1FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS2 flows: " +
+                           json.dumps( ONOS2FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS3 flows: " +
+                           json.dumps( ONOS3FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS4 flows: " +
+                           json.dumps( ONOS4FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS5 flows: " +
+                           json.dumps( ONOS5FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS6 flows: " +
+                           json.dumps( ONOS6FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS7 flows: " +
+                           json.dumps( ONOS7FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=flowCheck,
+            onpass="The flow count is consistent across all ONOS nodes",
+            onfail="ONOS nodes have different flow counts" )
 
-
-        main.step("Get the OF Table entries")
+        main.step( "Get the OF Table entries" )
         global flows
-        flows=[]
-        for i in range(1,29):
-            flows.append(main.Mininet2.get_flowTable(1.3, "s"+str(i)))
+        flows = []
+        for i in range( 1, 29 ):
+            flows.append( main.Mininet2.getFlowTable( 1.3, "s" + str( i ) ) )
 
-        #TODO: Compare switch flow tables with ONOS flow tables
+        # TODO: Compare switch flow tables with ONOS flow tables
 
-        main.step("Start continuous pings")
-        main.Mininet2.pingLong(src=main.params['PING']['source1'],
-                            target=main.params['PING']['target1'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source2'],
-                            target=main.params['PING']['target2'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source3'],
-                            target=main.params['PING']['target3'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source4'],
-                            target=main.params['PING']['target4'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source5'],
-                            target=main.params['PING']['target5'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source6'],
-                            target=main.params['PING']['target6'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source7'],
-                            target=main.params['PING']['target7'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source8'],
-                            target=main.params['PING']['target8'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source9'],
-                            target=main.params['PING']['target9'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source10'],
-                            target=main.params['PING']['target10'],pingTime=500)
+        main.step( "Start continuous pings" )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source1' ],
+            target=main.params[ 'PING' ][ 'target1' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source2' ],
+            target=main.params[ 'PING' ][ 'target2' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source3' ],
+            target=main.params[ 'PING' ][ 'target3' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source4' ],
+            target=main.params[ 'PING' ][ 'target4' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source5' ],
+            target=main.params[ 'PING' ][ 'target5' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source6' ],
+            target=main.params[ 'PING' ][ 'target6' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source7' ],
+            target=main.params[ 'PING' ][ 'target7' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source8' ],
+            target=main.params[ 'PING' ][ 'target8' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source9' ],
+            target=main.params[ 'PING' ][ 'target9' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source10' ],
+            target=main.params[ 'PING' ][ 'target10' ],
+            pingTime=500 )
 
-        main.step("Create TestONTopology object")
+        main.step( "Create TestONTopology object" )
         ctrls = []
         count = 1
         while True:
             temp = ()
-            if ('ip' + str(count)) in main.params['CTRL']:
-                temp = temp + (getattr(main,('ONOS' + str(count))),)
-                temp = temp + ("ONOS"+str(count),)
-                temp = temp + (main.params['CTRL']['ip'+str(count)],)
-                temp = temp + (eval(main.params['CTRL']['port'+str(count)]),)
-                ctrls.append(temp)
+            if ( 'ip' + str( count ) ) in main.params[ 'CTRL' ]:
+                temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
+                temp = temp + ( "ONOS" + str( count ), )
+                temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
+                temp = temp + \
+                    ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
+                ctrls.append( temp )
                 count = count + 1
             else:
                 break
-        MNTopo = TestONTopology(main.Mininet1, ctrls) # can also add Intent API info for intent operations
+        MNTopo = TestONTopology(
+            main.Mininet1,
+            ctrls )  # can also add Intent API info for intent operations
 
-        main.step("Collecting topology information from ONOS")
+        main.step( "Collecting topology information from ONOS" )
         devices = []
         devices.append( main.ONOScli1.devices() )
         devices.append( main.ONOScli2.devices() )
@@ -815,17 +899,19 @@
         devices.append( main.ONOScli6.devices() )
         devices.append( main.ONOScli7.devices() )
         hosts = []
-        hosts.append( json.loads( main.ONOScli1.hosts() ) )
-        hosts.append( json.loads( main.ONOScli2.hosts() ) )
-        hosts.append( json.loads( main.ONOScli3.hosts() ) )
-        hosts.append( json.loads( main.ONOScli4.hosts() ) )
-        hosts.append( json.loads( main.ONOScli5.hosts() ) )
-        hosts.append( json.loads( main.ONOScli6.hosts() ) )
-        hosts.append( json.loads( main.ONOScli7.hosts() ) )
-        for controller in range(0, len(hosts) ):
-            for host in hosts[controller]:
-                if host['ips'] == []:
-                    main.log.error("DEBUG:Error with host ips on controller"+str(controller+1)+": " + str(host))
+        hosts.append( main.ONOScli1.hosts() )
+        hosts.append( main.ONOScli2.hosts() )
+        hosts.append( main.ONOScli3.hosts() )
+        hosts.append( main.ONOScli4.hosts() )
+        hosts.append( main.ONOScli5.hosts() )
+        hosts.append( main.ONOScli6.hosts() )
+        hosts.append( main.ONOScli7.hosts() )
+        for controller in range( 0, len( hosts ) ):
+            controllerStr = str( controller + 1 )
+            for host in hosts[ controller ]:
+                if host[ 'ips' ] == []:
+                    main.log.error( "DEBUG:Error with host ips on controller" +
+                                    controllerStr + ": " + str( host ) )
         ports = []
         ports.append( main.ONOScli1.ports() )
         ports.append( main.ONOScli2.ports() )
@@ -850,478 +936,538 @@
         clusters.append( main.ONOScli5.clusters() )
         clusters.append( main.ONOScli6.clusters() )
         clusters.append( main.ONOScli7.clusters() )
-        paths = []
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli1.topology() )
-        paths.append( temp_topo.get('paths', False) )
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli2.topology() )
-        paths.append( temp_topo.get('paths', False) )
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli3.topology() )
-        paths.append( temp_topo.get('paths', False) )
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli4.topology() )
-        paths.append( temp_topo.get('paths', False) )
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli5.topology() )
-        paths.append( temp_topo.get('paths', False) )
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli6.topology() )
-        paths.append( temp_topo.get('paths', False) )
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli7.topology() )
-        paths.append( temp_topo.get('paths', False) )
+        # Compare json objects for hosts and dataplane clusters
 
-        #Compare json objects for hosts, dataplane clusters and paths
-
-        #hosts
-        consistent_hosts_result = main.TRUE
+        # hosts
+        consistentHostsResult = main.TRUE
         for controller in range( len( hosts ) ):
-            if not "Error" in hosts[controller]:
-                if hosts[controller] == hosts[0]:
+            controllerStr = str( controller + 1 )
+            if "Error" not in hosts[ controller ]:
+                if hosts[ controller ] == hosts[ 0 ]:
                     continue
-                else:#hosts not consistent
-                    main.log.report("hosts from ONOS" + str(controller + 1) + " is inconsistent with ONOS1")
-                    main.log.warn( repr( hosts[controller] ) )
-                    consistent_hosts_result = main.FALSE
+                else:  # hosts not consistent
+                    main.log.report( "hosts from ONOS" +
+                                     controllerStr +
+                                     " is inconsistent with ONOS1" )
+                    main.log.warn( repr( hosts[ controller ] ) )
+                    consistentHostsResult = main.FALSE
 
             else:
-                main.log.report("Error in getting ONOS hosts from ONOS" + str(controller + 1) )
-                consistent_hosts_result = main.FALSE
-                main.log.warn("ONOS" + str(controller + 1) + " hosts response: " + repr(hosts[controller]) )
-        utilities.assert_equals(expect = main.TRUE,actual=consistent_hosts_result,
-                onpass="Hosts view is consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of hosts")
+                main.log.report( "Error in getting ONOS hosts from ONOS" +
+                                 controllerStr )
+                consistentHostsResult = main.FALSE
+                main.log.warn( "ONOS" + controllerStr +
+                               " hosts response: " +
+                               repr( hosts[ controller ] ) )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=consistentHostsResult,
+            onpass="Hosts view is consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of hosts" )
 
-        #Strongly connected clusters of devices
-        consistent_clusters_result = main.TRUE
+        # Strongly connected clusters of devices
+        consistentClustersResult = main.TRUE
         for controller in range( len( clusters ) ):
-            if not "Error" in clusters[controller]:
-                if clusters[controller] == clusters[0]:
+            if "Error" not in clusters[ controller ]:
+                if clusters[ controller ] == clusters[ 0 ]:
                     continue
-                else:#clusters not consistent
-                    main.log.report("clusters from ONOS" + str(controller + 1) + " is inconsistent with ONOS1")
-                    consistent_clusters_result = main.FALSE
+                else:  # clusters not consistent
+                    main.log.report( "clusters from ONOS" +
+                                     controllerStr +
+                                     " is inconsistent with ONOS1" )
+                    consistentClustersResult = main.FALSE
 
             else:
-                main.log.report("Error in getting dataplane clusters from ONOS" + str(controller + 1) )
-                consistent_clusters_result = main.FALSE
-                main.log.warn("ONOS" + str(controller + 1) + " clusters response: " + repr(clusters[controller]) )
-        utilities.assert_equals(expect = main.TRUE,actual=consistent_clusters_result,
-                onpass="Clusters view is consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of clusters")
-        num_clusters =  len(json.loads(clusters[0])) #there should always only be one cluster
-        utilities.assert_equals(expect = 1, actual = num_clusters,
-                onpass="ONOS shows 1 SCC",
-                onfail="ONOS shows "+str(num_clusters) +" SCCs")
+                main.log.report( "Error in getting dataplane clusters " +
+                                 "from ONOS" + controllerStr )
+                consistentClustersResult = main.FALSE
+                main.log.warn( "ONOS" + controllerStr +
+                               " clusters response: " +
+                               repr( clusters[ controller ] ) )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=consistentClustersResult,
+            onpass="Clusters view is consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of clusters" )
+        # there should always only be one cluster
+        numClusters = len( json.loads( clusters[ 0 ] ) )
+        utilities.assert_equals(
+            expect=1,
+            actual=numClusters,
+            onpass="ONOS shows 1 SCC",
+            onfail="ONOS shows " +
+            str( numClusters ) +
+            " SCCs" )
 
-
-        #paths
-        consistent_paths_result = main.TRUE
-        for controller in range( len( paths ) ):
-            if not "Error" in paths[controller]:
-                if paths[controller] == paths[0]:
-                    continue
-                else:#paths not consistent
-                    main.log.report("paths from ONOS" + str(controller + 1) + " is inconsistent with ONOS1")
-                    consistent_paths_result = main.FALSE
-
+        main.step( "Comparing ONOS topology to MN" )
+        devicesResults = main.TRUE
+        portsResults = main.TRUE
+        linksResults = main.TRUE
+        for controller in range( numControllers ):
+            controllerStr = str( controller + 1 )
+            if devices[ controller ] or "Error" not in devices[ controller ]:
+                currentDevicesResult = main.Mininet1.compareSwitches(
+                    MNTopo,
+                    json.loads(
+                        devices[ controller ] ) )
             else:
-                main.log.report("Error in getting paths from ONOS" + str(controller + 1) )
-                consistent_paths_result = main.FALSE
-                main.log.warn("ONOS" + str(controller + 1) + " paths response: " + repr(paths[controller]) )
-        utilities.assert_equals(expect = main.TRUE,actual=consistent_paths_result,
-                onpass="Paths count is consistent across all ONOS nodes",
-                onfail="ONOS nodes have different counts of paths")
+                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" )
 
-
-        main.step("Comparing ONOS topology to MN")
-        devices_results = main.TRUE
-        ports_results = main.TRUE
-        links_results = main.TRUE
-        for controller in range(num_controllers):
-            if devices[controller] or not "Error" in devices[controller]:
-                current_devices_result =  main.Mininet1.compare_switches(MNTopo, json.loads(devices[controller]))
+            if ports[ controller ] or "Error" not in ports[ controller ]:
+                currentPortsResult = main.Mininet1.comparePorts(
+                    MNTopo,
+                    json.loads(
+                        ports[ controller ] ) )
             else:
-                current_devices_result = main.FALSE
-            utilities.assert_equals(expect=main.TRUE, actual=current_devices_result,
-                    onpass="ONOS"+str(int(controller+1))+" Switches view is correct",
-                    onfail="ONOS"+str(int(controller+1))+" Switches view is incorrect")
+                currentPortsResult = main.FALSE
+            utilities.assert_equals( expect=main.TRUE,
+                                    actual=currentPortsResult,
+                                    onpass="ONOS" + controllerStr +
+                                    " ports view is correct",
+                                    onfail="ONOS" + controllerStr +
+                                    " ports view is incorrect" )
 
-            if ports[controller] or not "Error" in ports[controller]:
-                current_ports_result =  main.Mininet1.compare_ports(MNTopo, json.loads(ports[controller]))
+            if links[ controller ] or "Error" not in links[ controller ]:
+                currentLinksResult = main.Mininet1.compareLinks(
+                    MNTopo,
+                    json.loads(
+                        links[ controller ] ) )
             else:
-                current_ports_result = main.FALSE
-            utilities.assert_equals(expect=main.TRUE, actual=current_ports_result,
-                    onpass="ONOS"+str(int(controller+1))+" ports view is correct",
-                    onfail="ONOS"+str(int(controller+1))+" ports view is incorrect")
+                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 links[controller] or not "Error" in links[controller]:
-                current_links_result =  main.Mininet1.compare_links(MNTopo, json.loads(links[controller]))
-            else:
-                current_links_result = main.FALSE
-            utilities.assert_equals(expect=main.TRUE, actual=current_links_result,
-                    onpass="ONOS"+str(int(controller+1))+" links view is correct",
-                    onfail="ONOS"+str(int(controller+1))+" links view is incorrect")
+            devicesResults = devicesResults and currentDevicesResult
+            portsResults = portsResults and currentPortsResult
+            linksResults = linksResults and currentLinksResult
 
-            devices_results = devices_results and current_devices_result
-            ports_results = ports_results and current_ports_result
-            links_results = links_results and current_links_result
+        topoResult = devicesResults and portsResults and linksResults\
+            and consistentHostsResult and consistentClustersResult
+        utilities.assert_equals( expect=main.TRUE, actual=topoResult,
+                                onpass="Topology Check Test successful",
+                                onfail="Topology Check Test NOT successful" )
 
-        topo_result = devices_results and ports_results and links_results\
-                and consistent_hosts_result and consistent_clusters_result\
-                and consistent_paths_result
-        utilities.assert_equals(expect=main.TRUE, actual=topo_result,
-                onpass="Topology Check Test successful",
-                onfail="Topology Check Test NOT successful")
+        finalAssert = main.TRUE
+        finalAssert = finalAssert and topoResult and flowCheck \
+            and intentCheck and consistentMastership and rolesNotNull
+        utilities.assert_equals( expect=main.TRUE, actual=finalAssert,
+                                onpass="State check successful",
+                                onfail="State check NOT successful" )
 
-        final_assert = main.TRUE
-        final_assert = final_assert and topo_result and flow_check \
-                and intent_check and consistent_mastership and roles_not_null
-        utilities.assert_equals(expect=main.TRUE, actual=final_assert,
-                onpass="State check successful",
-                onfail="State check NOT successful")
-
-
-    def CASE6(self,main) :
-        '''
+    def CASE6( self, main ):
+        """
         The Failure case.
-        '''
+        """
         import time
-        main.log.report("Killing 3 ONOS nodes")
-        main.log.case("Restart minority of ONOS nodes")
-        #TODO: Randomize these nodes
-        main.ONOSbench.onos_kill(ONOS1_ip)
-        time.sleep(10)
-        main.ONOSbench.onos_kill(ONOS2_ip)
-        time.sleep(10)
-        main.ONOSbench.onos_kill(ONOS3_ip)
+        main.log.report( "Killing 3 ONOS nodes" )
+        main.log.case( "Restart minority of ONOS nodes" )
+        # TODO: Randomize these nodes
+        main.ONOSbench.onosKill( ONOS1Ip )
+        time.sleep( 10 )
+        main.ONOSbench.onosKill( ONOS2Ip )
+        time.sleep( 10 )
+        main.ONOSbench.onosKill( ONOS3Ip )
 
-        main.step("Checking if ONOS is up yet")
+        main.step( "Checking if ONOS is up yet" )
         count = 0
-        onos_isup_result = main.FALSE
-        while onos_isup_result == main.FALSE and count < 10:
-            onos1_isup = main.ONOSbench.isup(ONOS1_ip)
-            onos2_isup = main.ONOSbench.isup(ONOS2_ip)
-            onos3_isup = main.ONOSbench.isup(ONOS3_ip)
-            onos_isup_result = onos1_isup and onos2_isup and onos3_isup
+        onosIsupResult = main.FALSE
+        while onosIsupResult == main.FALSE and count < 10:
+            onos1Isup = main.ONOSbench.isup( ONOS1Ip )
+            onos2Isup = main.ONOSbench.isup( ONOS2Ip )
+            onos3Isup = main.ONOSbench.isup( ONOS3Ip )
+            onosIsupResult = onos1Isup and onos2Isup and onos3Isup
             count = count + 1
         # TODO: if it becomes an issue, we can retry this step  a few times
 
+        cliResult1 = main.ONOScli1.startOnosCli( ONOS1Ip )
+        cliResult2 = main.ONOScli2.startOnosCli( ONOS2Ip )
+        cliResult3 = main.ONOScli3.startOnosCli( ONOS3Ip )
+        cliResults = cliResult1 and cliResult2 and cliResult3
 
-        cli_result1 = main.ONOScli1.start_onos_cli(ONOS1_ip)
-        cli_result2 = main.ONOScli2.start_onos_cli(ONOS2_ip)
-        cli_result3 = main.ONOScli3.start_onos_cli(ONOS3_ip)
-        cli_results = cli_result1 and cli_result2 and cli_result3
+        main.log.info( "Install leadership election app on restarted node" )
 
-        main.log.info("Install leadership election app on restarted node")
+        caseResults = main.TRUE and onosIsupResult and cliResults
+        utilities.assert_equals( expect=main.TRUE, actual=caseResults,
+                                onpass="ONOS restart successful",
+                                onfail="ONOS restart NOT successful" )
 
-        case_results = main.TRUE and onos_isup_result and cli_results
-        utilities.assert_equals(expect=main.TRUE, actual=case_results,
-                onpass="ONOS restart successful",
-                onfail="ONOS restart NOT successful")
-
-
-    def CASE7(self,main) :
-        '''
+    def CASE7( self, main ):
+        """
         Check state after ONOS failure
-        '''
-        import os
+        """
         import json
-        main.case("Running ONOS Constant State Tests")
+        main.case( "Running ONOS Constant State Tests" )
 
-        #Assert that each device has a master
-        ONOS1_master_not_null = main.ONOScli1.roles_not_null()
-        ONOS2_master_not_null = main.ONOScli2.roles_not_null()
-        ONOS3_master_not_null = main.ONOScli3.roles_not_null()
-        ONOS4_master_not_null = main.ONOScli4.roles_not_null()
-        ONOS5_master_not_null = main.ONOScli5.roles_not_null()
-        ONOS6_master_not_null = main.ONOScli6.roles_not_null()
-        ONOS7_master_not_null = main.ONOScli7.roles_not_null()
-        roles_not_null = ONOS1_master_not_null and ONOS2_master_not_null and\
-                ONOS3_master_not_null and ONOS4_master_not_null and\
-                ONOS5_master_not_null and ONOS6_master_not_null and\
-                ONOS7_master_not_null
-        utilities.assert_equals(expect = main.TRUE,actual=roles_not_null,
-                onpass="Each device has a master",
-                onfail="Some devices don't have a master assigned")
+        # Assert that each device has a master
+        ONOS1MasterNotNull = main.ONOScli1.rolesNotNull()
+        ONOS2MasterNotNull = main.ONOScli2.rolesNotNull()
+        ONOS3MasterNotNull = main.ONOScli3.rolesNotNull()
+        ONOS4MasterNotNull = main.ONOScli4.rolesNotNull()
+        ONOS5MasterNotNull = main.ONOScli5.rolesNotNull()
+        ONOS6MasterNotNull = main.ONOScli6.rolesNotNull()
+        ONOS7MasterNotNull = main.ONOScli7.rolesNotNull()
+        rolesNotNull = ONOS1MasterNotNull and ONOS2MasterNotNull and\
+            ONOS3MasterNotNull and ONOS4MasterNotNull and\
+            ONOS5MasterNotNull and ONOS6MasterNotNull and\
+            ONOS7MasterNotNull
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=rolesNotNull,
+            onpass="Each device has a master",
+            onfail="Some devices don't have a master assigned" )
 
-
-
-        main.step("Check if switch roles are consistent across all nodes")
-        ONOS1_mastership = main.ONOScli1.roles()
-        ONOS2_mastership = main.ONOScli2.roles()
-        ONOS3_mastership = main.ONOScli3.roles()
-        ONOS4_mastership = main.ONOScli4.roles()
-        ONOS5_mastership = main.ONOScli5.roles()
-        ONOS6_mastership = main.ONOScli6.roles()
-        ONOS7_mastership = main.ONOScli7.roles()
-        #print json.dumps(json.loads(ONOS1_mastership), sort_keys=True, indent=4, separators=(',', ': '))
-        if "Error" in ONOS1_mastership or not ONOS1_mastership\
-                or "Error" in ONOS2_mastership or not ONOS2_mastership\
-                or "Error" in ONOS3_mastership or not ONOS3_mastership\
-                or "Error" in ONOS4_mastership or not ONOS4_mastership\
-                or "Error" in ONOS5_mastership or not ONOS5_mastership\
-                or "Error" in ONOS6_mastership or not ONOS6_mastership\
-                or "Error" in ONOS7_mastership or not ONOS7_mastership:
-                    main.log.error("Error in getting ONOS mastership")
-                    main.log.warn("ONOS1 mastership response: " + repr(ONOS1_mastership))
-                    main.log.warn("ONOS2 mastership response: " + repr(ONOS2_mastership))
-                    main.log.warn("ONOS3 mastership response: " + repr(ONOS3_mastership))
-                    main.log.warn("ONOS4 mastership response: " + repr(ONOS4_mastership))
-                    main.log.warn("ONOS5 mastership response: " + repr(ONOS5_mastership))
-                    main.log.warn("ONOS6 mastership response: " + repr(ONOS6_mastership))
-                    main.log.warn("ONOS7 mastership response: " + repr(ONOS7_mastership))
-                    consistent_mastership = main.FALSE
-        elif ONOS1_mastership == ONOS2_mastership\
-                and ONOS1_mastership == ONOS3_mastership\
-                and ONOS1_mastership == ONOS4_mastership\
-                and ONOS1_mastership == ONOS5_mastership\
-                and ONOS1_mastership == ONOS6_mastership\
-                and ONOS1_mastership == ONOS7_mastership:
-                    consistent_mastership = main.TRUE
-                    main.log.report("Switch roles are consistent across all ONOS nodes")
+        main.step( "Check if switch roles are consistent across all nodes" )
+        ONOS1Mastership = main.ONOScli1.roles()
+        ONOS2Mastership = main.ONOScli2.roles()
+        ONOS3Mastership = main.ONOScli3.roles()
+        ONOS4Mastership = main.ONOScli4.roles()
+        ONOS5Mastership = main.ONOScli5.roles()
+        ONOS6Mastership = main.ONOScli6.roles()
+        ONOS7Mastership = main.ONOScli7.roles()
+        # print json.dumps( json.loads( ONOS1Mastership ), sort_keys=True,
+        # indent=4, separators=( ',', ': ' ) )
+        if "Error" in ONOS1Mastership or not ONOS1Mastership\
+                or "Error" in ONOS2Mastership or not ONOS2Mastership\
+                or "Error" in ONOS3Mastership or not ONOS3Mastership\
+                or "Error" in ONOS4Mastership or not ONOS4Mastership\
+                or "Error" in ONOS5Mastership or not ONOS5Mastership\
+                or "Error" in ONOS6Mastership or not ONOS6Mastership\
+                or "Error" in ONOS7Mastership or not ONOS7Mastership:
+            main.log.error( "Error in getting ONOS mastership" )
+            main.log.warn( "ONOS1 mastership response: " +
+                           repr( ONOS1Mastership ) )
+            main.log.warn( "ONOS2 mastership response: " +
+                           repr( ONOS2Mastership ) )
+            main.log.warn( "ONOS3 mastership response: " +
+                           repr( ONOS3Mastership ) )
+            main.log.warn( "ONOS4 mastership response: " +
+                           repr( ONOS4Mastership ) )
+            main.log.warn( "ONOS5 mastership response: " +
+                           repr( ONOS5Mastership ) )
+            main.log.warn( "ONOS6 mastership response: " +
+                           repr( ONOS6Mastership ) )
+            main.log.warn( "ONOS7 mastership response: " +
+                           repr( ONOS7Mastership ) )
+            consistentMastership = main.FALSE
+        elif ONOS1Mastership == ONOS2Mastership\
+                and ONOS1Mastership == ONOS3Mastership\
+                and ONOS1Mastership == ONOS4Mastership\
+                and ONOS1Mastership == ONOS5Mastership\
+                and ONOS1Mastership == ONOS6Mastership\
+                and ONOS1Mastership == ONOS7Mastership:
+            consistentMastership = main.TRUE
+            main.log.report(
+                "Switch roles are consistent across all ONOS nodes" )
         else:
-            main.log.warn("ONOS1 roles: ", json.dumps(json.loads(ONOS1_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS2 roles: ", json.dumps(json.loads(ONOS2_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS3 roles: ", json.dumps(json.loads(ONOS3_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS4 roles: ", json.dumps(json.loads(ONOS4_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS5 roles: ", json.dumps(json.loads(ONOS5_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS6 roles: ", json.dumps(json.loads(ONOS6_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS7 roles: ", json.dumps(json.loads(ONOS7_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            consistent_mastership = main.FALSE
-        utilities.assert_equals(expect = main.TRUE,actual=consistent_mastership,
-                onpass="Switch roles are consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of switch roles")
-
+            main.log.warn( "ONOS1 roles: ", json.dumps(
+                json.loads( ONOS1Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS2 roles: ", json.dumps(
+                json.loads( ONOS2Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS3 roles: ", json.dumps(
+                json.loads( ONOS3Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS4 roles: ", json.dumps(
+                json.loads( ONOS4Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS5 roles: ", json.dumps(
+                json.loads( ONOS5Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS6 roles: ", json.dumps(
+                json.loads( ONOS6Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS7 roles: ", json.dumps(
+                json.loads( ONOS7Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            consistentMastership = main.FALSE
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=consistentMastership,
+            onpass="Switch roles are consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of switch roles" )
 
         description2 = "Compare switch roles from before failure"
-        main.step(description2)
+        main.step( description2 )
 
-        current_json = json.loads(ONOS1_mastership)
-        old_json = json.loads(mastership_state)
-        mastership_check = main.TRUE
-        for i in range(1,29):
-            switchDPID = str(main.Mininet1.getSwitchDPID(switch="s"+str(i)))
+        currentJson = json.loads( ONOS1Mastership )
+        oldJson = json.loads( mastershipState )
+        mastershipCheck = main.TRUE
+        for i in range( 1, 29 ):
+            switchDPID = str(
+                main.Mininet1.getSwitchDPID(
+                    switch="s" +
+                    str( i ) ) )
 
-            current = [switch['master'] for switch in current_json if switchDPID in switch['id']]
-            old = [switch['master'] for switch in old_json if switchDPID in switch['id']]
+            current = [ switch[ 'master' ] for switch in currentJson
+                        if switchDPID in switch[ 'id' ] ]
+            old = [ switch[ 'master' ] for switch in oldJson
+                    if switchDPID in switch[ 'id' ] ]
             if current == old:
-                mastership_check = mastership_check and main.TRUE
+                mastershipCheck = mastershipCheck and main.TRUE
             else:
-                main.log.warn("Mastership of switch %s changed" % switchDPID)
-                mastership_check = main.FALSE
-        if mastership_check == main.TRUE:
-            main.log.report("Mastership of Switches was not changed")
-        utilities.assert_equals(expect=main.TRUE,actual=mastership_check,
-                onpass="Mastership of Switches was not changed",
-                onfail="Mastership of some switches changed")
-        #NOTE: we expect mastership to change on controller failure
-        mastership_check = consistent_mastership
+                main.log.warn( "Mastership of switch %s changed" % switchDPID )
+                mastershipCheck = main.FALSE
+        if mastershipCheck == main.TRUE:
+            main.log.report( "Mastership of Switches was not changed" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=mastershipCheck,
+            onpass="Mastership of Switches was not changed",
+            onfail="Mastership of some switches changed" )
+        # NOTE: we expect mastership to change on controller failure
+        mastershipCheck = consistentMastership
 
-
-
-        main.step("Get the intents and compare across all nodes")
-        ONOS1_intents = main.ONOScli1.intents( json_format=True )
-        ONOS2_intents = main.ONOScli2.intents( json_format=True )
-        ONOS3_intents = main.ONOScli3.intents( json_format=True )
-        ONOS4_intents = main.ONOScli4.intents( json_format=True )
-        ONOS5_intents = main.ONOScli5.intents( json_format=True )
-        ONOS6_intents = main.ONOScli6.intents( json_format=True )
-        ONOS7_intents = main.ONOScli7.intents( json_format=True )
-        intent_check = main.FALSE
-        if "Error" in ONOS1_intents or not ONOS1_intents\
-                or "Error" in ONOS2_intents or not ONOS2_intents\
-                or "Error" in ONOS3_intents or not ONOS3_intents\
-                or "Error" in ONOS4_intents or not ONOS4_intents\
-                or "Error" in ONOS5_intents or not ONOS5_intents\
-                or "Error" in ONOS6_intents or not ONOS6_intents\
-                or "Error" in ONOS7_intents or not ONOS7_intents:
-                    main.log.report("Error in getting ONOS intents")
-                    main.log.warn("ONOS1 intents response: " + repr(ONOS1_intents))
-                    main.log.warn("ONOS2 intents response: " + repr(ONOS2_intents))
-                    main.log.warn("ONOS3 intents response: " + repr(ONOS3_intents))
-                    main.log.warn("ONOS4 intents response: " + repr(ONOS4_intents))
-                    main.log.warn("ONOS5 intents response: " + repr(ONOS5_intents))
-                    main.log.warn("ONOS6 intents response: " + repr(ONOS6_intents))
-                    main.log.warn("ONOS7 intents response: " + repr(ONOS7_intents))
-        elif ONOS1_intents == ONOS2_intents\
-                and ONOS1_intents == ONOS3_intents\
-                and ONOS1_intents == ONOS4_intents\
-                and ONOS1_intents == ONOS5_intents\
-                and ONOS1_intents == ONOS6_intents\
-                and ONOS1_intents == ONOS7_intents:
-                    intent_check = main.TRUE
-                    main.log.report("Intents are consistent across all ONOS nodes")
+        main.step( "Get the intents and compare across all nodes" )
+        ONOS1Intents = main.ONOScli1.intents( jsonFormat=True )
+        ONOS2Intents = main.ONOScli2.intents( jsonFormat=True )
+        ONOS3Intents = main.ONOScli3.intents( jsonFormat=True )
+        ONOS4Intents = main.ONOScli4.intents( jsonFormat=True )
+        ONOS5Intents = main.ONOScli5.intents( jsonFormat=True )
+        ONOS6Intents = main.ONOScli6.intents( jsonFormat=True )
+        ONOS7Intents = main.ONOScli7.intents( jsonFormat=True )
+        intentCheck = main.FALSE
+        if "Error" in ONOS1Intents or not ONOS1Intents\
+                or "Error" in ONOS2Intents or not ONOS2Intents\
+                or "Error" in ONOS3Intents or not ONOS3Intents\
+                or "Error" in ONOS4Intents or not ONOS4Intents\
+                or "Error" in ONOS5Intents or not ONOS5Intents\
+                or "Error" in ONOS6Intents or not ONOS6Intents\
+                or "Error" in ONOS7Intents or not ONOS7Intents:
+            main.log.report( "Error in getting ONOS intents" )
+            main.log.warn( "ONOS1 intents response: " + repr( ONOS1Intents ) )
+            main.log.warn( "ONOS2 intents response: " + repr( ONOS2Intents ) )
+            main.log.warn( "ONOS3 intents response: " + repr( ONOS3Intents ) )
+            main.log.warn( "ONOS4 intents response: " + repr( ONOS4Intents ) )
+            main.log.warn( "ONOS5 intents response: " + repr( ONOS5Intents ) )
+            main.log.warn( "ONOS6 intents response: " + repr( ONOS6Intents ) )
+            main.log.warn( "ONOS7 intents response: " + repr( ONOS7Intents ) )
+        elif ONOS1Intents == ONOS2Intents\
+                and ONOS1Intents == ONOS3Intents\
+                and ONOS1Intents == ONOS4Intents\
+                and ONOS1Intents == ONOS5Intents\
+                and ONOS1Intents == ONOS6Intents\
+                and ONOS1Intents == ONOS7Intents:
+            intentCheck = main.TRUE
+            main.log.report( "Intents are consistent across all ONOS nodes" )
         else:
-            main.log.warn("ONOS1 intents: ")
-            print json.dumps(json.loads(ONOS1_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-            main.log.warn("ONOS2 intents: ")
-            print json.dumps(json.loads(ONOS2_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-            main.log.warn("ONOS3 intents: ")
-            print json.dumps(json.loads(ONOS3_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-            main.log.warn("ONOS4 intents: ")
-            print json.dumps(json.loads(ONOS4_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-            main.log.warn("ONOS5 intents: ")
-            print json.dumps(json.loads(ONOS5_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-            main.log.warn("ONOS6 intents: ")
-            print json.dumps(json.loads(ONOS6_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-            main.log.warn("ONOS7 intents: ")
-            print json.dumps(json.loads(ONOS7_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-        utilities.assert_equals(expect = main.TRUE,actual=intent_check,
-                onpass="Intents are consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of intents")
+            main.log.warn( "ONOS1 intents: " )
+            print json.dumps( json.loads( ONOS1Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+            main.log.warn( "ONOS2 intents: " )
+            print json.dumps( json.loads( ONOS2Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+            main.log.warn( "ONOS3 intents: " )
+            print json.dumps( json.loads( ONOS3Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+            main.log.warn( "ONOS4 intents: " )
+            print json.dumps( json.loads( ONOS4Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+            main.log.warn( "ONOS5 intents: " )
+            print json.dumps( json.loads( ONOS5Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+            main.log.warn( "ONOS6 intents: " )
+            print json.dumps( json.loads( ONOS6Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+            main.log.warn( "ONOS7 intents: " )
+            print json.dumps( json.loads( ONOS7Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=intentCheck,
+            onpass="Intents are consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of intents" )
 
-        #NOTE: Hazelcast has no durability, so intents are lost across system restarts
-        main.step("Compare current intents with intents before the failure")
-        #NOTE: this requires case 5 to pass for intent_state to be set.
+        # NOTE: Hazelcast has no durability, so intents are lost across system
+        # restarts
+        main.step( "Compare current intents with intents before the failure" )
+        # NOTE: this requires case 5 to pass for intentState to be set.
         #      maybe we should stop the test if that fails?
-        if intent_state == ONOS1_intents:
-            same_intents = main.TRUE
-            main.log.report("Intents are consistent with before failure")
-        #TODO: possibly the states have changed? we may need to figure out what the aceptable states are
+        if intentState == ONOS1Intents:
+            sameIntents = main.TRUE
+            main.log.report( "Intents are consistent with before failure" )
+        # TODO: possibly the states have changed? we may need to figure out
+        # what the aceptable states are
         else:
             try:
-                main.log.warn("ONOS1 intents: ")
-                print json.dumps(json.loads(ONOS1_intents),
-                    sort_keys=True, indent=4, separators=(',', ': '))
+                main.log.warn( "ONOS1 intents: " )
+                print json.dumps( json.loads( ONOS1Intents ),
+                                  sort_keys=True, indent=4,
+                                  separators=( ',', ': ' ) )
             except:
                 pass
-            same_intents = main.FALSE
-        utilities.assert_equals(expect = main.TRUE,actual=same_intents,
-                onpass="Intents are consistent with before failure",
-                onfail="The Intents changed during failure")
-        intent_check = intent_check and same_intents
+            sameIntents = main.FALSE
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=sameIntents,
+            onpass="Intents are consistent with before failure",
+            onfail="The Intents changed during failure" )
+        intentCheck = intentCheck and sameIntents
 
+        main.step( "Get the OF Table entries and compare to before " +
+                   "component failure" )
+        FlowTables = main.TRUE
+        flows2 = []
+        for i in range( 28 ):
+            main.log.info( "Checking flow table on s" + str( i + 1 ) )
+            tmpFlows = main.Mininet2.getFlowTable( 1.3, "s" + str( i + 1 ) )
+            flows2.append( tmpFlows )
+            tempResult = main.Mininet2.flowComp(
+                flow1=flows[ i ],
+                flow2=tmpFlows )
+            FlowTables = FlowTables and tempResult
+            if FlowTables == main.FALSE:
+                main.log.info( "Differences in flow table for switch: s" +
+                               str( i + 1 ) )
+        if FlowTables == main.TRUE:
+            main.log.report( "No changes were found in the flow tables" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=FlowTables,
+            onpass="No changes were found in the flow tables",
+            onfail="Changes were found in the flow tables" )
 
-
-        main.step("Get the OF Table entries and compare to before component failure")
-        Flow_Tables = main.TRUE
-        flows2=[]
-        for i in range(28):
-            main.log.info("Checking flow table on s" + str(i+1))
-            tmp_flows = main.Mininet2.get_flowTable(1.3, "s"+str(i+1))
-            flows2.append(tmp_flows)
-            temp_result = main.Mininet2.flow_comp(flow1=flows[i],flow2=tmp_flows)
-            Flow_Tables = Flow_Tables and temp_result
-            if Flow_Tables == main.FALSE:
-                main.log.info("Differences in flow table for switch: "+str(i+1))
-        if Flow_Tables == main.TRUE:
-            main.log.report("No changes were found in the flow tables")
-        utilities.assert_equals(expect=main.TRUE,actual=Flow_Tables,
-                onpass="No changes were found in the flow tables",
-                onfail="Changes were found in the flow tables")
-
-        main.step("Check the continuous pings to ensure that no packets were dropped during component failure")
-        #FIXME: This check is always failing. Investigate cause
-        #NOTE:  this may be something to do with file permsissions
+        main.step( "Check the continuous pings to ensure that no packets " +
+                   "were dropped during component failure" )
+        # FIXME: This check is always failing. Investigate cause
+        # NOTE:  this may be something to do with file permsissions
         #       or slight change in format
-        main.Mininet2.pingKill(main.params['TESTONUSER'], main.params['TESTONIP'])
-        Loss_In_Pings = main.FALSE 
-        #NOTE: checkForLoss returns main.FALSE with 0% packet loss
-        for i in range(8,18):
-            main.log.info("Checking for a loss in pings along flow from s" + str(i))
-            Loss_In_Pings = main.Mininet2.checkForLoss("/tmp/ping.h"+str(i)) or Loss_In_Pings
-        if Loss_In_Pings == main.TRUE:
-            main.log.info("Loss in ping detected")
-        elif Loss_In_Pings == main.ERROR:
-            main.log.info("There are multiple mininet process running")
-        elif Loss_In_Pings == main.FALSE:
-            main.log.info("No Loss in the pings")
-            main.log.report("No loss of dataplane connectivity")
-        utilities.assert_equals(expect=main.FALSE,actual=Loss_In_Pings,
-                onpass="No Loss of connectivity",
-                onfail="Loss of dataplane connectivity detected")
+        main.Mininet2.pingKill(
+            main.params[ 'TESTONUSER' ],
+            main.params[ 'TESTONIP' ] )
+        LossInPings = main.FALSE
+        # NOTE: checkForLoss returns main.FALSE with 0% packet loss
+        for i in range( 8, 18 ):
+            main.log.info(
+                "Checking for a loss in pings along flow from s" +
+                str( i ) )
+            LossInPings = main.Mininet2.checkForLoss(
+                "/tmp/ping.h" +
+                str( i ) ) or LossInPings
+        if LossInPings == main.TRUE:
+            main.log.info( "Loss in ping detected" )
+        elif LossInPings == main.ERROR:
+            main.log.info( "There are multiple mininet process running" )
+        elif LossInPings == main.FALSE:
+            main.log.info( "No Loss in the pings" )
+            main.log.report( "No loss of dataplane connectivity" )
+        utilities.assert_equals(
+            expect=main.FALSE,
+            actual=LossInPings,
+            onpass="No Loss of connectivity",
+            onfail="Loss of dataplane connectivity detected" )
 
-
-        #Test of LeadershipElection
-        leader_list = []
-        leader_result = main.TRUE
-        for controller in range(1,num_controllers+1):
-            node = getattr( main, ( 'ONOScli' + str( controller ) ) )#loop through ONOScli handlers
-            leaderN = node.election_test_leader()
-            leader_list.append(leaderN)
+        # Test of LeadershipElection
+        leaderList = []
+        leaderResult = main.TRUE
+        for controller in range( 1, numControllers + 1 ):
+            # loop through ONOScli handlers
+            node = getattr( main, ( 'ONOScli' + str( controller ) ) )
+            leaderN = node.electionTestLeader()
+            leaderList.append( leaderN )
             if leaderN == main.FALSE:
-                #error in  response
-                main.log.report("Something is wrong with election_test_leader function, check the error logs")
-                leader_result = main.FALSE
-            elif leaderN == None:
-                main.log.report("ONOS"+str(controller) + " shows no leader for the election-app was elected after the old one died")
-                leader_result = main.FALSE
-            elif leaderN == ONOS1_ip or leaderN == ONOS2_ip or leaderN == ONOS3_ip:
-                main.log.report("ONOS"+str(controller) + " shows "+str(leaderN)+" as leader for the election-app, but it was restarted")
-                leader_result = main.FALSE
-        if len( set( leader_list ) ) != 1:
-            leader_result = main.FALSE
-            main.log.error("Inconsistent view of leader for the election test app")
-            #TODO: print the list
-        if leader_result:
-            main.log.report("Leadership election tests passed(consistent view of leader across listeners and a new leader was re-elected if applicable)")
-        utilities.assert_equals(expect=main.TRUE, actual=leader_result,
-                onpass="Leadership election passed",
-                onfail="Something went wrong with Leadership election")
+                # error in  response
+                main.log.report( "Something is wrong with " +
+                                 "electionTestLeader function, check the" +
+                                 " error logs" )
+                leaderResult = main.FALSE
+            elif leaderN is None:
+                main.log.report( "ONOS" + str( controller ) +
+                                 " shows no leader for the election-app was" +
+                                 " elected after the old one died" )
+                leaderResult = main.FALSE
+            elif leaderN == ONOS1Ip or leaderN == ONOS2Ip or\
+                    leaderN == ONOS3Ip:
+                main.log.report( "ONOS" + str( controller ) +
+                                 " shows " + str( leaderN ) +
+                                 " as leader for the election-app, but it " +
+                                 "was restarted" )
+                leaderResult = main.FALSE
+        if len( set( leaderList ) ) != 1:
+            leaderResult = main.FALSE
+            main.log.error(
+                "Inconsistent view of leader for the election test app" )
+            # TODO: print the list
+        if leaderResult:
+            main.log.report( "Leadership election tests passed( consistent " +
+                             "view of leader across listeners and a new " +
+                             "leader was re-elected if applicable )" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=leaderResult,
+            onpass="Leadership election passed",
+            onfail="Something went wrong with Leadership election" )
 
-
-        result = mastership_check and intent_check and Flow_Tables and (not Loss_In_Pings) and roles_not_null\
-                and leader_result
-        result = int(result)
+        result = mastershipCheck and intentCheck and FlowTables and\
+            ( not LossInPings ) and rolesNotNull and leaderResult
+        result = int( result )
         if result == main.TRUE:
-            main.log.report("Constant State Tests Passed")
-        utilities.assert_equals(expect=main.TRUE,actual=result,
-                onpass="Constant State Tests Passed",
-                onfail="Constant state tests failed")
+            main.log.report( "Constant State Tests Passed" )
+        utilities.assert_equals( expect=main.TRUE, actual=result,
+                                onpass="Constant State Tests Passed",
+                                onfail="Constant state tests failed" )
 
-    def CASE8 (self,main):
-        '''
+    def CASE8( self, main ):
+        """
         Compare topo
-        '''
+        """
         import sys
-        sys.path.append("/home/admin/sts") # Trying to remove some dependancies, #FIXME add this path to params
-        from sts.topology.teston_topology import TestONTopology # assumes that sts is already in you PYTHONPATH
+        # FIXME add this path to params
+        sys.path.append( "/home/admin/sts" )
+        # assumes that sts is already in you PYTHONPATH
+        from sts.topology.teston_topology import TestONTopology
         import json
         import time
 
-        description ="Compare ONOS Topology view to Mininet topology"
-        main.case(description)
-        main.log.report(description)
-        main.step("Create TestONTopology object")
+        description = "Compare ONOS Topology view to Mininet topology"
+        main.case( description )
+        main.log.report( description )
+        main.step( "Create TestONTopology object" )
         ctrls = []
         count = 1
         while True:
             temp = ()
-            if ('ip' + str(count)) in main.params['CTRL']:
-                temp = temp + (getattr(main,('ONOS' + str(count))),)
-                temp = temp + ("ONOS"+str(count),)
-                temp = temp + (main.params['CTRL']['ip'+str(count)],)
-                temp = temp + (eval(main.params['CTRL']['port'+str(count)]),)
-                ctrls.append(temp)
+            if ( 'ip' + str( count ) ) in main.params[ 'CTRL' ]:
+                temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
+                temp = temp + ( "ONOS" + str( count ), )
+                temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
+                temp = temp + \
+                    ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
+                ctrls.append( temp )
                 count = count + 1
             else:
                 break
-        MNTopo = TestONTopology(main.Mininet1, ctrls) # can also add Intent API info for intent operations
+        MNTopo = TestONTopology(
+            main.Mininet1,
+            ctrls )  # can also add Intent API info for intent operations
 
-        main.step("Comparing ONOS topology to MN")
-        devices_results = main.TRUE
-        ports_results = main.TRUE
-        links_results = main.TRUE
-        topo_result = main.FALSE
+        main.step( "Comparing ONOS topology to MN" )
+        devicesResults = main.TRUE
+        portsResults = main.TRUE
+        linksResults = main.TRUE
+        topoResult = main.FALSE
         elapsed = 0
         count = 0
-        main.step("Collecting topology information from ONOS")
-        start_time = time.time()
-        while topo_result == main.FALSE and elapsed < 60:
+        main.step( "Collecting topology information from ONOS" )
+        startTime = time.time()
+        while topoResult == main.FALSE and elapsed < 60:
             count = count + 1
             if count > 1:
-                MNTopo = TestONTopology(main.Mininet1, ctrls) # can also add Intent API info for intent operations
-            cli_start = time.time()
+                # TODO: Depricate STS usage
+                MNTopo = TestONTopology(
+                    main.Mininet1,
+                    ctrls )
+            cliStart = time.time()
             devices = []
             devices.append( main.ONOScli1.devices() )
             devices.append( main.ONOScli2.devices() )
@@ -1338,11 +1484,14 @@
             hosts.append( json.loads( main.ONOScli5.hosts() ) )
             hosts.append( json.loads( main.ONOScli6.hosts() ) )
             hosts.append( json.loads( main.ONOScli7.hosts() ) )
-            for controller in range(0, len(hosts) ):
-                for host in hosts[controller]:
+            for controller in range( 0, len( hosts ) ):
+                controllerStr = str( controller + 1 )
+                for host in hosts[ controller ]:
                     host
-                    if host['ips'] == []:
-                        main.log.error("DEBUG:Error with host ips on controller"+str(controller+1)+": " + str(host))
+                    if host[ 'ips' ] == []:
+                        main.log.error(
+                            "DEBUG:Error with host ips on controller" +
+                            controllerStr + ": " + str( host ) )
             ports = []
             ports.append( main.ONOScli1.ports() )
             ports.append( main.ONOScli2.ports() )
@@ -1367,493 +1516,538 @@
             clusters.append( main.ONOScli5.clusters() )
             clusters.append( main.ONOScli6.clusters() )
             clusters.append( main.ONOScli7.clusters() )
-            paths = []
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli1.topology() )
-            paths.append( temp_topo.get('paths', False) )
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli2.topology() )
-            paths.append( temp_topo.get('paths', False) )
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli3.topology() )
-            paths.append( temp_topo.get('paths', False) )
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli4.topology() )
-            paths.append( temp_topo.get('paths', False) )
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli5.topology() )
-            paths.append( temp_topo.get('paths', False) )
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli6.topology() )
-            paths.append( temp_topo.get('paths', False) )
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli7.topology() )
-            paths.append( temp_topo.get('paths', False) )
 
+            elapsed = time.time() - startTime
+            cliTime = time.time() - cliStart
+            print "CLI time: " + str( cliTime )
 
-            elapsed = time.time() - start_time
-            cli_time = time.time() - cli_start
-            print "CLI time: " + str(cli_time)
-
-            for controller in range(num_controllers):
-                if devices[controller] or not "Error" in devices[controller]:
-                    current_devices_result =  main.Mininet1.compare_switches(MNTopo, json.loads(devices[controller]))
+            for controller in range( numControllers ):
+                controllerStr = str( controller + 1 )
+                if devices[ controller ] or "Error" not in devices[
+                        controller ]:
+                    currentDevicesResult = main.Mininet1.compareSwitches(
+                        MNTopo,
+                        json.loads(
+                            devices[ controller ] ) )
                 else:
-                    current_devices_result = main.FALSE
-                utilities.assert_equals(expect=main.TRUE, actual=current_devices_result,
-                        onpass="ONOS"+str(int(controller+1))+" Switches view is correct",
-                        onfail="ONOS"+str(int(controller+1))+" Switches view is incorrect")
+                    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 ports[controller] or not "Error" in ports[controller]:
-                    current_ports_result =  main.Mininet1.compare_ports(MNTopo, json.loads(ports[controller]))
+                if ports[ controller ] or "Error" not in ports[ controller ]:
+                    currentPortsResult = main.Mininet1.comparePorts(
+                        MNTopo,
+                        json.loads(
+                            ports[ controller ] ) )
                 else:
-                    current_ports_result = main.FALSE
-                utilities.assert_equals(expect=main.TRUE, actual=current_ports_result,
-                        onpass="ONOS"+str(int(controller+1))+" ports view is correct",
-                        onfail="ONOS"+str(int(controller+1))+" ports view is incorrect")
+                    currentPortsResult = main.FALSE
+                utilities.assert_equals( expect=main.TRUE,
+                                        actual=currentPortsResult,
+                                        onpass="ONOS" + controllerStr +
+                                        " ports view is correct",
+                                        onfail="ONOS" + controllerStr +
+                                        " ports view is incorrect" )
 
-                if links[controller] or not "Error" in links[controller]:
-                    current_links_result =  main.Mininet1.compare_links(MNTopo, json.loads(links[controller]))
+                if links[ controller ] or "Error" not in links[ controller ]:
+                    currentLinksResult = main.Mininet1.compareLinks(
+                        MNTopo,
+                        json.loads(
+                            links[ controller ] ) )
                 else:
-                    current_links_result = main.FALSE
-                utilities.assert_equals(expect=main.TRUE, actual=current_links_result,
-                        onpass="ONOS"+str(int(controller+1))+" links view is correct",
-                        onfail="ONOS"+str(int(controller+1))+" links view is incorrect")
-            devices_results = devices_results and current_devices_result
-            ports_results = ports_results and current_ports_result
-            links_results = links_results and current_links_result
+                    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" )
+            devicesResults = devicesResults and currentDevicesResult
+            portsResults = portsResults and currentPortsResult
+            linksResults = linksResults and currentLinksResult
 
-            #Compare json objects for hosts, dataplane clusters and paths
+            # Compare json objects for hosts and dataplane clusters
 
-            #hosts
-            consistent_hosts_result = main.TRUE
+            # hosts
+            consistentHostsResult = main.TRUE
             for controller in range( len( hosts ) ):
-                if not "Error" in hosts[controller]:
-                    if hosts[controller] == hosts[0]:
+                controllerStr = str( controller + 1 )
+                if "Error" not in hosts[ controller ]:
+                    if hosts[ controller ] == hosts[ 0 ]:
                         continue
-                    else:#hosts not consistent
-                        main.log.report("hosts from ONOS" + str(controller + 1) + " is inconsistent with ONOS1")
-                        main.log.warn( repr( hosts[controller] ) )
-                        consistent_hosts_result = main.FALSE
+                    else:  # hosts not consistent
+                        main.log.report( "hosts from ONOS" + controllerStr +
+                                         " is inconsistent with ONOS1" )
+                        main.log.warn( repr( hosts[ controller ] ) )
+                        consistentHostsResult = main.FALSE
 
                 else:
-                    main.log.report("Error in getting ONOS hosts from ONOS" + str(controller + 1) )
-                    consistent_hosts_result = main.FALSE
-            if consistent_hosts_result == main.FALSE:
-                for controller in range( len( hosts ) ):
-                    main.log.warn("ONOS" + str(controller + 1) + " hosts response: " + repr(hosts[controller]) )
-            utilities.assert_equals(expect = main.TRUE,actual=consistent_hosts_result,
-                    onpass="Hosts view is consistent across all ONOS nodes",
-                    onfail="ONOS nodes have different views of hosts")
+                    main.log.report( "Error in getting ONOS hosts from ONOS" +
+                                     controllerStr )
+                    consistentHostsResult = main.FALSE
+                    main.log.warn( "ONOS" + controllerStr +
+                                   " hosts response: " +
+                                   repr( hosts[ controller ] ) )
+            utilities.assert_equals(
+                expect=main.TRUE,
+                actual=consistentHostsResult,
+                onpass="Hosts view is consistent across all ONOS nodes",
+                onfail="ONOS nodes have different views of hosts" )
 
-            #Strongly connected clusters of devices
-            consistent_clusters_result = main.TRUE
+            # Strongly connected clusters of devices
+            consistentClustersResult = main.TRUE
             for controller in range( len( clusters ) ):
-                if not "Error" in clusters[controller]:
-                    if clusters[controller] == clusters[0]:
+                controllerStr = str( controller + 1 )
+                if "Error" not in clusters[ controller ]:
+                    if clusters[ controller ] == clusters[ 0 ]:
                         continue
-                    else:#clusters not consistent
-                        main.log.report("clusters from ONOS" + str(controller + 1) + " is inconsistent with ONOS1")
-                        consistent_clusters_result = main.FALSE
+                    else:  # clusters not consistent
+                        main.log.report( "clusters from ONOS" +
+                                         controllerStr +
+                                         " is inconsistent with ONOS1" )
+                        consistentClustersResult = main.FALSE
 
                 else:
-                    main.log.report("Error in getting dataplane clusters from ONOS" + str(controller + 1) )
-                    consistent_clusters_result = main.FALSE
-                    main.log.warn("ONOS" + str(controller + 1) + " clusters response: " + repr(clusters[controller]) )
-            utilities.assert_equals(expect = main.TRUE,actual=consistent_clusters_result,
-                    onpass="Clusters view is consistent across all ONOS nodes",
-                    onfail="ONOS nodes have different views of clusters")
-            num_clusters =  len(json.loads(clusters[0])) #there should always only be one cluster
-            utilities.assert_equals(expect = 1, actual = num_clusters,
-                    onpass="ONOS shows 1 SCC",
-                    onfail="ONOS shows "+str(num_clusters) +" SCCs")
+                    main.log.report( "Error in getting dataplane clusters " +
+                                     "from ONOS" + controllerStr )
+                    consistentClustersResult = main.FALSE
+                    main.log.warn( "ONOS" + controllerStr +
+                                   " clusters response: " +
+                                   repr( clusters[ controller ] ) )
+            utilities.assert_equals(
+                expect=main.TRUE,
+                actual=consistentClustersResult,
+                onpass="Clusters view is consistent across all ONOS nodes",
+                onfail="ONOS nodes have different views of clusters" )
+            # there should always only be one cluster
+            numClusters = len( json.loads( clusters[ 0 ] ) )
+            utilities.assert_equals(
+                expect=1,
+                actual=numClusters,
+                onpass="ONOS shows 1 SCC",
+                onfail="ONOS shows " +
+                str( numClusters ) +
+                " SCCs" )
 
+            topoResult = ( devicesResults and portsResults and linksResults
+                           and consistentHostsResult
+                           and consistentClustersResult )
 
-            #paths
-            consistent_paths_result = main.TRUE
-            for controller in range( len( paths ) ):
-                if not "Error" in paths[controller]:
-                    if paths[controller] == paths[0]:
-                        continue
-                    else:#paths not consistent
-                        main.log.report("paths from ONOS" + str(controller + 1) + " is inconsistent with ONOS1")
-                        consistent_paths_result = main.FALSE
+        topoResult = topoResult and int( count <= 2 )
+        note = "note it takes about " + str( int( cliTime ) ) + \
+            " seconds for the test to make all the cli calls to fetch " +\
+            "the topology from each ONOS instance"
+        main.log.report(
+            "Very crass estimate for topology discovery/convergence( " +
+            str( note ) + " ): " + str( elapsed ) + " seconds, " +
+            str( count ) + " tries" )
+        utilities.assert_equals( expect=main.TRUE, actual=topoResult,
+                                onpass="Topology Check Test successful",
+                                onfail="Topology Check Test NOT successful" )
+        if topoResult == main.TRUE:
+            main.log.report( "ONOS topology view matches Mininet topology" )
 
-                else:
-                    main.log.report("Error in getting paths from ONOS" + str(controller + 1) )
-                    consistent_paths_result = main.FALSE
-                    main.log.warn("ONOS" + str(controller + 1) + " paths response: " + repr(paths[controller]) )
-            utilities.assert_equals(expect = main.TRUE,actual=consistent_paths_result,
-                    onpass="Paths count is consistent across all ONOS nodes",
-                    onfail="ONOS nodes have different counts of paths")
-
-
-            topo_result = devices_results and ports_results and links_results\
-                    and consistent_hosts_result and consistent_clusters_result and consistent_paths_result
-
-        topo_result = topo_result and int(count <= 2)
-        note = "note it takes about "+str( int(cli_time) )+" seconds for the test to make all the cli calls to fetch the topology from each ONOS instance"
-        main.log.report("Very crass estimate for topology discovery/convergence("+ str(note) + "): " +\
-                str(elapsed) + " seconds, " + str(count) +" tries" )
-        utilities.assert_equals(expect=main.TRUE, actual=topo_result,
-                onpass="Topology Check Test successful",
-                onfail="Topology Check Test NOT successful")
-        if topo_result == main.TRUE:
-            main.log.report("ONOS topology view matches Mininet topology")
-
-
-    def CASE9 (self,main):
-        '''
+    def CASE9( self, main ):
+        """
         Link s3-s28 down
-        '''
-        #NOTE: You should probably run a topology check after this
+        """
+        import time
+        # NOTE: You should probably run a topology check after this
 
-        link_sleep = float(main.params['timers']['LinkDiscovery'])
+        linkSleep = float( main.params[ 'timers' ][ 'LinkDiscovery' ] )
 
-        description = "Turn off a link to ensure that Link Discovery is working properly"
-        main.log.report(description)
-        main.case(description)
+        description = "Turn off a link to ensure that Link Discovery " +\
+            "is working properly"
+        main.log.report( description )
+        main.case( description )
 
+        main.step( "Kill Link between s3 and s28" )
+        LinkDown = main.Mininet1.link( END1="s3", END2="s28", OPTION="down" )
+        main.log.info(
+            "Waiting " +
+            str( linkSleep ) +
+            " seconds for link down to be discovered" )
+        time.sleep( linkSleep )
+        utilities.assert_equals( expect=main.TRUE, actual=LinkDown,
+                                onpass="Link down succesful",
+                                onfail="Failed to bring link down" )
+        # TODO do some sort of check here
 
-        main.step("Kill Link between s3 and s28")
-        Link_Down = main.Mininet1.link(END1="s3",END2="s28",OPTION="down")
-        main.log.info("Waiting " + str(link_sleep) + " seconds for link down to be discovered")
-        time.sleep(link_sleep)
-        utilities.assert_equals(expect=main.TRUE,actual=Link_Down,
-                onpass="Link down succesful",
-                onfail="Failed to bring link down")
-        #TODO do some sort of check here
-
-    def CASE10 (self,main):
-        '''
+    def CASE10( self, main ):
+        """
         Link s3-s28 up
-        '''
-        #NOTE: You should probably run a topology check after this
+        """
+        import time
+        # NOTE: You should probably run a topology check after this
 
-        link_sleep = float(main.params['timers']['LinkDiscovery'])
+        linkSleep = float( main.params[ 'timers' ][ 'LinkDiscovery' ] )
 
-        description = "Restore a link to ensure that Link Discovery is working properly"
-        main.log.report(description)
-        main.case(description)
+        description = "Restore a link to ensure that Link Discovery is " + \
+            "working properly"
+        main.log.report( description )
+        main.case( description )
 
-        main.step("Bring link between s3 and s28 back up")
-        Link_Up = main.Mininet1.link(END1="s3",END2="s28",OPTION="up")
-        main.log.info("Waiting " + str(link_sleep) + " seconds for link up to be discovered")
-        time.sleep(link_sleep)
-        utilities.assert_equals(expect=main.TRUE,actual=Link_Up,
-                onpass="Link up succesful",
-                onfail="Failed to bring link up")
-        #TODO do some sort of check here
+        main.step( "Bring link between s3 and s28 back up" )
+        LinkUp = main.Mininet1.link( END1="s3", END2="s28", OPTION="up" )
+        main.log.info(
+            "Waiting " +
+            str( linkSleep ) +
+            " seconds for link up to be discovered" )
+        time.sleep( linkSleep )
+        utilities.assert_equals( expect=main.TRUE, actual=LinkUp,
+                                onpass="Link up succesful",
+                                onfail="Failed to bring link up" )
+        # TODO do some sort of check here
 
-
-    def CASE11 (self, main) :
-        '''
+    def CASE11( self, main ):
+        """
         Switch Down
-        '''
-        #NOTE: You should probably run a topology check after this
+        """
+        # NOTE: You should probably run a topology check after this
         import time
 
-        switch_sleep = float(main.params['timers']['SwitchDiscovery'])
+        switchSleep = float( main.params[ 'timers' ][ 'SwitchDiscovery' ] )
 
         description = "Killing a switch to ensure it is discovered correctly"
-        main.log.report(description)
-        main.case(description)
+        main.log.report( description )
+        main.case( description )
+        switch = main.params[ 'kill' ][ 'switch' ]
+        switchDPID = main.params[ 'kill' ][ 'dpid' ]
 
-        #TODO: Make this switch parameterizable
-        main.step("Kill s28 ")
-        main.log.report("Deleting s28")
-        main.Mininet1.del_switch("s28")
-        main.log.info("Waiting " + str(switch_sleep) + " seconds for switch down to be discovered")
-        time.sleep(switch_sleep)
-        device = main.ONOScli1.get_device(dpid="0028")
-        #Peek at the deleted switch
-        main.log.warn( str(device) )
+        # TODO: Make this switch parameterizable
+        main.step( "Kill " + switch )
+        main.log.report( "Deleting " + switch )
+        main.Mininet1.delSwitch( switch )
+        main.log.info( "Waiting " + str( switchSleep ) +
+                       " seconds for switch down to be discovered" )
+        time.sleep( switchSleep )
+        device = main.ONOScli1.getDevice( dpid=switchDPID )
+        # Peek at the deleted switch
+        main.log.warn( str( device ) )
         result = main.FALSE
-        if device and device['available'] == False:
+        if device and device[ 'available' ] is False:
             result = main.TRUE
-        utilities.assert_equals(expect=main.TRUE,actual=result,
-                onpass="Kill switch succesful",
-                onfail="Failed to kill switch?")
+        utilities.assert_equals( expect=main.TRUE, actual=result,
+                                onpass="Kill switch succesful",
+                                onfail="Failed to kill switch?" )
 
-    def CASE12 (self, main) :
-        '''
+    def CASE12( self, main ):
+        """
         Switch Up
-        '''
-        #NOTE: You should probably run a topology check after this
+        """
+        # NOTE: You should probably run a topology check after this
         import time
 
-        switch_sleep = float(main.params['timers']['SwitchDiscovery'])
+        switchSleep = float( main.params[ 'timers' ][ 'SwitchDiscovery' ] )
+        switch = main.params[ 'kill' ][ 'switch' ]
+        switchDPID = main.params[ 'kill' ][ 'dpid' ]
+        links = main.params[ 'kill' ][ 'links' ].split()
         description = "Adding a switch to ensure it is discovered correctly"
-        main.log.report(description)
-        main.case(description)
+        main.log.report( description )
+        main.case( description )
 
-        main.step("Add back s28")
-        main.log.report("Adding back s28")
-        main.Mininet1.add_switch("s28", dpid = '0000000000002800')
-        #TODO: New dpid or same? Ask Thomas?
-        main.Mininet1.add_link('s28', 's3')
-        main.Mininet1.add_link('s28', 's6')
-        main.Mininet1.add_link('s28', 'h28')
-        main.Mininet1.assign_sw_controller(sw="28",count=num_controllers,
-                ip1=ONOS1_ip,port1=ONOS1_port,
-                ip2=ONOS2_ip,port2=ONOS2_port,
-                ip3=ONOS3_ip,port3=ONOS3_port,
-                ip4=ONOS4_ip,port4=ONOS4_port,
-                ip5=ONOS5_ip,port5=ONOS5_port,
-                ip6=ONOS6_ip,port6=ONOS6_port,
-                ip7=ONOS7_ip,port7=ONOS7_port)
-        main.log.info("Waiting " + str(switch_sleep) + " seconds for switch up to be discovered")
-        time.sleep(switch_sleep)
-        device = main.ONOScli1.get_device(dpid="0028")
-        #Peek at the deleted switch
-        main.log.warn( str(device) )
+        main.step( "Add back " + switch )
+        main.log.report( "Adding back " + switch )
+        main.Mininet1.addSwitch( switch, dpid=switchDPID )
+        # TODO: New dpid or same? Ask Thomas?
+        for peer in links:
+            main.Mininet1.addLink( switch, peer )
+        main.Mininet1.assignSwController(
+            sw=switch.split( 's' )[ 1 ],
+            count=numControllers,
+            ip1=ONOS1Ip,
+            port1=ONOS1Port,
+            ip2=ONOS2Ip,
+            port2=ONOS2Port,
+            ip3=ONOS3Ip,
+            port3=ONOS3Port,
+            ip4=ONOS4Ip,
+            port4=ONOS4Port,
+            ip5=ONOS5Ip,
+            port5=ONOS5Port,
+            ip6=ONOS6Ip,
+            port6=ONOS6Port,
+            ip7=ONOS7Ip,
+            port7=ONOS7Port )
+        main.log.info(
+            "Waiting " +
+            str( switchSleep ) +
+            " seconds for switch up to be discovered" )
+        time.sleep( switchSleep )
+        device = main.ONOScli1.getDevice( dpid=switchDPID )
+        # Peek at the deleted switch
+        main.log.warn( str( device ) )
         result = main.FALSE
-        if device and device['available'] == True:
+        if device and device[ 'available' ]:
             result = main.TRUE
-        utilities.assert_equals(expect=main.TRUE,actual=result,
-                onpass="add switch succesful",
-                onfail="Failed to add switch?")
+        utilities.assert_equals( expect=main.TRUE, actual=result,
+                                onpass="add switch succesful",
+                                onfail="Failed to add switch?" )
 
-    def CASE13 (self, main) :
-        '''
+    def CASE13( self, main ):
+        """
         Clean up
-        '''
+        """
         import os
         import time
-        #printing colors to terminal
+        # TODO: make use of this elsewhere
+        ips = []
+        ips.append( ONOS1Ip )
+        ips.append( ONOS2Ip )
+        ips.append( ONOS3Ip )
+        ips.append( ONOS4Ip )
+        ips.append( ONOS5Ip )
+        ips.append( ONOS6Ip )
+        ips.append( ONOS7Ip )
+
+        # printing colors to terminal
         colors = {}
-        colors['cyan']   = '\033[96m'
-        colors['purple'] = '\033[95m'
-        colors['blue']   = '\033[94m'
-        colors['green']  = '\033[92m'
-        colors['yellow'] = '\033[93m'
-        colors['red']    = '\033[91m'
-        colors['end']    = '\033[0m'
+        colors[ 'cyan' ] = '\033[96m'
+        colors[ 'purple' ] = '\033[95m'
+        colors[ 'blue' ] = '\033[94m'
+        colors[ 'green' ] = '\033[92m'
+        colors[ 'yellow' ] = '\033[93m'
+        colors[ 'red' ] = '\033[91m'
+        colors[ 'end' ] = '\033[0m'
         description = "Test Cleanup"
-        main.log.report(description)
-        main.case(description)
-        main.step("Killing tcpdumps")
-        main.Mininet2.stop_tcpdump()
+        main.log.report( description )
+        main.case( description )
+        main.step( "Killing tcpdumps" )
+        main.Mininet2.stopTcpdump()
 
-        main.step("Checking ONOS Logs for errors")
-        print colors['purple'] + "Checking logs for errors on ONOS1:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS1_ip)
-        print colors['purple'] + "Checking logs for errors on ONOS2:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS2_ip)
-        print colors['purple'] + "Checking logs for errors on ONOS3:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS3_ip)
-        print colors['purple'] + "Checking logs for errors on ONOS4:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS4_ip)
-        print colors['purple'] + "Checking logs for errors on ONOS5:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS5_ip)
-        print colors['purple'] + "Checking logs for errors on ONOS6:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS6_ip)
-        print colors['purple'] + "Checking logs for errors on ONOS7:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS7_ip)
+        main.step( "Checking ONOS Logs for errors" )
+        for i in range( 7 ):
+            print colors[ 'purple' ] + "Checking logs for errors on " + \
+                "ONOS" + str( i + 1 ) + ":" + colors[ 'end' ]
+            print main.ONOSbench.checkLogs( ips[ i ] )
 
-        main.step("Copying MN pcap and ONOS log files to test station")
+        main.step( "Copying MN pcap and ONOS log files to test station" )
         testname = main.TEST
-        teststation_user = main.params['TESTONUSER']
-        teststation_IP = main.params['TESTONIP']
-        #NOTE: MN Pcap file is being saved to ~/packet_captures
+        teststationUser = main.params[ 'TESTONUSER' ]
+        teststationIP = main.params[ 'TESTONIP' ]
+        # NOTE: MN Pcap file is being saved to ~/packet_captures
         #       scp this file as MN and TestON aren't necessarily the same vm
-        #FIXME: scp
-        #####mn files
-        #TODO: Load these from params
-        #NOTE: must end in /
-        log_folder = "/opt/onos/log/"
-        log_files = ["karaf.log", "karaf.log.1"]
-        #NOTE: must end in /
-        dst_dir = "~/packet_captures/"
-        for f in log_files:
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS1_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS1-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS2_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS2-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS3_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS3-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS4_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS4-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS5_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS5-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS6_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS6-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS7_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS7-"+f )
+        # FIXME: scp
+        # mn files
+        # TODO: Load these from params
+        # NOTE: must end in /
+        logFolder = "/opt/onos/log/"
+        logFiles = [ "karaf.log", "karaf.log.1" ]
+        # NOTE: must end in /
+        dstDir = "~/packet_captures/"
+        for f in logFiles:
+            for i in range( 7 ):
+                main.ONOSbench.handle.sendline( "scp sdn@" + ips[ i ] + ":" +
+                                                logFolder + f + " " +
+                                                teststationUser + "@" +
+                                                teststationIP + ":" +
+                                                dstDir + str( testname ) +
+                                                "-ONOS" + str( i + 1 ) + "-" +
+                                                f )
+        # std*.log's
+        # NOTE: must end in /
+        logFolder = "/opt/onos/var/"
+        logFiles = [ "stderr.log", "stdout.log" ]
+        # NOTE: must end in /
+        dstDir = "~/packet_captures/"
+        for f in logFiles:
+            for i in range( 7 ):
+                main.ONOSbench.handle.sendline( "scp sdn@" + ips[ i ] + ":" +
+                                                logFolder + f + " " +
+                                                teststationUser + "@" +
+                                                teststationIP + ":" +
+                                                dstDir + str( testname ) +
+                                                "-ONOS" + str( i + 1 ) + "-" +
+                                                f )
+        # sleep so scp can finish
+        time.sleep( 10 )
+        main.step( "Packing and rotating pcap archives" )
+        os.system( "~/TestON/dependencies/rotate.sh " + str( testname ) )
 
-        #std*.log's
-        #NOTE: must end in /
-        log_folder = "/opt/onos/var/"
-        log_files = ["stderr.log", "stdout.log"]
-        #NOTE: must end in /
-        dst_dir = "~/packet_captures/"
-        for f in log_files:
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS1_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS1-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS2_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS2-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS3_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS3-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS4_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS4-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS5_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS5-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS6_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS6-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS7_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS7-"+f )
+        # TODO: actually check something here
+        utilities.assert_equals( expect=main.TRUE, actual=main.TRUE,
+                                onpass="Test cleanup successful",
+                                onfail="Test cleanup NOT successful" )
 
-
-        #sleep so scp can finish
-        time.sleep(10)
-        main.step("Packing and rotating pcap archives")
-        os.system("~/TestON/dependencies/rotate.sh "+ str(testname))
-
-
-        #TODO: actually check something here
-        utilities.assert_equals(expect=main.TRUE, actual=main.TRUE,
-                onpass="Test cleanup successful",
-                onfail="Test cleanup NOT successful")
-
-    def CASE14 ( self, main ) :
-        '''
+    def CASE14( self, main ):
+        """
         start election app on all onos nodes
-        '''
-        leader_result = main.TRUE
-        #install app on onos 1
-        main.log.info("Install leadership election app")
-        main.ONOScli1.feature_install("onos-app-election")
-        #wait for election
-        #check for leader
-        leader = main.ONOScli1.election_test_leader()
-        #verify leader is ONOS1
-        if leader == ONOS1_ip:
-            #all is well
+        """
+        leaderResult = main.TRUE
+        # install app on onos 1
+        main.log.info( "Install leadership election app" )
+        main.ONOScli1.featureInstall( "onos-app-election" )
+        # wait for election
+        # check for leader
+        leader = main.ONOScli1.electionTestLeader()
+        # verify leader is ONOS1
+        if leader == ONOS1Ip:
+            # all is well
             pass
-        elif leader == None:
-            #No leader elected
-            main.log.report("No leader was elected")
-            leader_result = main.FALSE
+        elif leader is None:
+            # No leader elected
+            main.log.report( "No leader was elected" )
+            leaderResult = main.FALSE
         elif leader == main.FALSE:
-            #error in  response
-            #TODO: add check for "Command not found:" in the driver, this means the app isn't loaded
-            main.log.report("Something is wrong with election_test_leader function, check the error logs")
-            leader_result = main.FALSE
+            # error in  response
+            # TODO: add check for "Command not found:" in the driver, this
+            # means the app isn't loaded
+            main.log.report( "Something is wrong with electionTestLeader" +
+                             " function, check the error logs" )
+            leaderResult = main.FALSE
         else:
-            #error in  response
-            main.log.report("Unexpected response from election_test_leader function:'"+str(leader)+"'")
-            leader_result = main.FALSE
+            # error in  response
+            main.log.report(
+                "Unexpected response from electionTestLeader function:'" +
+                str( leader ) +
+                "'" )
+            leaderResult = main.FALSE
 
-
-
-
-        #install on other nodes and check for leader.
-        #Should be onos1 and each app should show the same leader
-        for controller in range(2,num_controllers+1):
-            node = getattr( main, ( 'ONOScli' + str( controller ) ) )#loop through ONOScli handlers
-            node.feature_install("onos-app-election")
-            leaderN = node.election_test_leader()
-            #verify leader is ONOS1
-            if leaderN == ONOS1_ip:
-                #all is well
+        # install on other nodes and check for leader.
+        # Should be onos1 and each app should show the same leader
+        for controller in range( 2, numControllers + 1 ):
+            # loop through ONOScli handlers
+            node = getattr( main, ( 'ONOScli' + str( controller ) ) )
+            node.featureInstall( "onos-app-election" )
+            leaderN = node.electionTestLeader()
+            # verify leader is ONOS1
+            if leaderN == ONOS1Ip:
+                # all is well
                 pass
             elif leaderN == main.FALSE:
-                #error in  response
-                #TODO: add check for "Command not found:" in the driver, this means the app isn't loaded
-                main.log.report("Something is wrong with election_test_leader function, check the error logs")
-                leader_result = main.FALSE
+                # error in  response
+                # TODO: add check for "Command not found:" in the driver, this
+                # means the app isn't loaded
+                main.log.report( "Something is wrong with " +
+                                 "electionTestLeader function, check the" +
+                                 " error logs" )
+                leaderResult = main.FALSE
             elif leader != leaderN:
-                leader_result = main.FALSE
-                main.log.report("ONOS" + str(controller) + " sees "+str(leaderN) +
-                        " as the leader of the election app. Leader should be "+str(leader) )
-        if leader_result:
-            main.log.report("Leadership election tests passed(consistent view of leader across listeners and a leader was elected)")
-        utilities.assert_equals(expect=main.TRUE, actual=leader_result,
-                onpass="Leadership election passed",
-                onfail="Something went wrong with Leadership election")
+                leaderResult = main.FALSE
+                main.log.report( "ONOS" + str( controller ) + " sees " +
+                                 str( leaderN ) +
+                                 " as the leader of the election app. Leader" +
+                                 " should be " +
+                                 str( leader ) )
+        if leaderResult:
+            main.log.report( "Leadership election tests passed( consistent " +
+                             "view of leader across listeners and a leader " +
+                             "was elected )" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=leaderResult,
+            onpass="Leadership election passed",
+            onfail="Something went wrong with Leadership election" )
 
-    def CASE15 ( self, main ) :
-        '''
+    def CASE15( self, main ):
+        """
         Check that Leadership Election is still functional
-        '''
-        leader_result = main.TRUE
+        """
+        leaderResult = main.TRUE
         description = "Check that Leadership Election is still functional"
-        main.log.report(description)
-        main.case(description)
-        main.step("Find current leader and withdraw")
-        leader = main.ONOScli1.election_test_leader()
-        #TODO: do some sanity checking on leader before using it
-        withdraw_result = main.FALSE
-        if leader == ONOS1_ip:
-            old_leader = getattr( main, "ONOScli1" )
-        elif leader == ONOS2_ip:
-            old_leader = getattr( main, "ONOScli2" )
-        elif leader == ONOS3_ip:
-            old_leader = getattr( main, "ONOScli3" )
-        elif leader == ONOS4_ip:
-            old_leader = getattr( main, "ONOScli4" )
-        elif leader == ONOS5_ip:
-            old_leader = getattr( main, "ONOScli5" )
-        elif leader == ONOS6_ip:
-            old_leader = getattr( main, "ONOScli6" )
-        elif leader == ONOS7_ip:
-            old_leader = getattr( main, "ONOScli7" )
-        elif leader == None or leader == main.FALSE:
-            main.log.report("Leader for the election app should be an ONOS node,"\
-                    +"instead got '"+str(leader)+"'")
-            leader_result = main.FALSE
-        withdraw_result = old_leader.election_test_withdraw()
+        main.log.report( description )
+        main.case( description )
+        main.step( "Find current leader and withdraw" )
+        leader = main.ONOScli1.electionTestLeader()
+        # TODO: do some sanity checking on leader before using it
+        withdrawResult = main.FALSE
+        if leader == ONOS1Ip:
+            oldLeader = getattr( main, "ONOScli1" )
+        elif leader == ONOS2Ip:
+            oldLeader = getattr( main, "ONOScli2" )
+        elif leader == ONOS3Ip:
+            oldLeader = getattr( main, "ONOScli3" )
+        elif leader == ONOS4Ip:
+            oldLeader = getattr( main, "ONOScli4" )
+        elif leader == ONOS5Ip:
+            oldLeader = getattr( main, "ONOScli5" )
+        elif leader == ONOS6Ip:
+            oldLeader = getattr( main, "ONOScli6" )
+        elif leader == ONOS7Ip:
+            oldLeader = getattr( main, "ONOScli7" )
+        elif leader is None or leader == main.FALSE:
+            main.log.report(
+                "Leader for the election app should be an ONOS node," +
+                "instead got '" +
+                str( leader ) +
+                "'" )
+            leaderResult = main.FALSE
+        withdrawResult = oldLeader.electionTestWithdraw()
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=withdrawResult,
+            onpass="App was withdrawn from election",
+            onfail="App was not withdrawn from election" )
 
-
-        main.step("Make sure new leader is elected")
-        leader_list = []
-        for controller in range(1,num_controllers+1):
-            node = getattr( main, ( 'ONOScli' + str( controller ) ) )#loop through ONOScli handlers
-            leader_list.append( node.election_test_leader() )
-        for leaderN in leader_list:
+        main.step( "Make sure new leader is elected" )
+        leaderList = []
+        for controller in range( 1, numControllers + 1 ):
+            # loop through ONOScli handlers
+            node = getattr( main, ( 'ONOScli' + str( controller ) ) )
+            leaderList.append( node.electionTestLeader() )
+        for leaderN in leaderList:
             if leaderN == leader:
-                main.log.report("ONOS"+str(controller)+" still sees " + str(leader) +\
-                        " as leader after they withdrew")
-                leader_result = main.FALSE
+                main.log.report(
+                    "ONOS" +
+                    str( controller ) +
+                    " still sees " +
+                    str( leader ) +
+                    " as leader after they withdrew" )
+                leaderResult = main.FALSE
             elif leaderN == main.FALSE:
-                #error in  response
-                #TODO: add check for "Command not found:" in the driver, this means the app isn't loaded
-                main.log.report("Something is wrong with election_test_leader function, check the error logs")
-                leader_result = main.FALSE
-        consistent_leader = main.FALSE
-        if len( set( leader_list ) ) == 1:
-            main.log.info("Each Election-app sees '"+str(leader_list[0])+"' as the leader")
-            consistent_leader = main.TRUE
+                # error in  response
+                # TODO: add check for "Command not found:" in the driver, this
+                # means the app isn't loaded
+                main.log.report( "Something is wrong with " +
+                                 "electionTestLeader function, " +
+                                 "check the error logs" )
+                leaderResult = main.FALSE
+        consistentLeader = main.FALSE
+        if len( set( leaderList ) ) == 1:
+            main.log.info( "Each Election-app sees '" +
+                           str( leaderList[ 0 ] ) +
+                           "' as the leader" )
+            consistentLeader = main.TRUE
         else:
-            main.log.report("Inconsistent responses for leader of Election-app:")
-            for n in range(len(leader_list)):
-                main.log.report("ONOS" + str(n+1) + " response: " + str(leader_list[n]) )
-        if leader_result:
-            main.log.report("Leadership election tests passed(consistent view of leader across listeners and a new leader was elected when the old leader resigned)")
-        utilities.assert_equals(expect=main.TRUE, actual=leader_result,
-                onpass="Leadership election passed",
-                onfail="Something went wrong with Leadership election")
+            main.log.report(
+                "Inconsistent responses for leader of Election-app:" )
+            for n in range( len( leaderList ) ):
+                main.log.report( "ONOS" + str( n + 1 ) + " response: " +
+                                 str( leaderList[ n ] ) )
+        if leaderResult:
+            main.log.report( "Leadership election tests passed( consistent " +
+                             "view of leader across listeners and a new " +
+                             "leader was elected when the old leader " +
+                             "resigned )" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=leaderResult,
+            onpass="Leadership election passed",
+            onfail="Something went wrong with Leadership election" )
 
-
-        main.step("Run for election on old leader(just so everyone is in the hat)")
-        run_result = old_leader.election_test_run()
-        if consistent_leader == main.TRUE:
-            after_run = main.ONOScli1.election_test_leader()
-            #verify leader didn't just change
-            if after_run == leader_list[0]:
-                leader_result = main.TRUE
+        main.step(
+            "Run for election on old leader( just so everyone is in the hat )" )
+        runResult = oldLeader.electionTestRun()
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=runResult,
+            onpass="App re-ran for election",
+            onfail="App failed to run for election" )
+        if consistentLeader == main.TRUE:
+            afterRun = main.ONOScli1.electionTestLeader()
+            # verify leader didn't just change
+            if afterRun == leaderList[ 0 ]:
+                leaderResult = main.TRUE
             else:
-                leader_result = main.FALSE
-        #TODO: assert on  run and withdraw results?
+                leaderResult = main.FALSE
+        # TODO: assert on  run and withdraw results?
 
-        utilities.assert_equals(expect=main.TRUE, actual=leader_result,
-                onpass="Leadership election passed",
-                onfail="Something went wrong with Leadership election after the old leader re-ran for election")
-
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=leaderResult,
+            onpass="Leadership election passed",
+            onfail="Something went wrong with Leadership election after " +
+                   "the old leader re-ran for election" )
diff --git a/TestON/tests/HATestSanity/HATestSanity.params b/TestON/tests/HATestSanity/HATestSanity.params
index 78e0c83..ee4374d 100644
--- a/TestON/tests/HATestSanity/HATestSanity.params
+++ b/TestON/tests/HATestSanity/HATestSanity.params
@@ -1,9 +1,10 @@
 <PARAMS>
     <testcases>1,2,8,3,4,5,14,[6],8,7,4,15,9,8,4,10,8,4,11,8,4,12,8,4,13</testcases>
     <ENV>
-    <cellName>HA</cellName>
+        <cellName>HA</cellName>
     </ENV>
-    <Git>False</Git>
+    <Git> True </Git>
+    <branch> master </branch>
     <num_controllers> 7 </num_controllers>
 
     <CTRL>
@@ -56,6 +57,11 @@
         <LinkDiscovery>.2</LinkDiscovery>
         <SwitchDiscovery>.2</SwitchDiscovery>
     </timers>
+    <kill>
+        <switch> s5 </switch>
+        <dpid> 0000000000005000 </dpid>
+        <links> h5 s2 s1 s6 </links>
+    </kill>
     <MNtcpdump>
         <intf>eth0</intf>
         <port> </port>
diff --git a/TestON/tests/HATestSanity/HATestSanity.py b/TestON/tests/HATestSanity/HATestSanity.py
index 2d56e90..9a95e78 100644
--- a/TestON/tests/HATestSanity/HATestSanity.py
+++ b/TestON/tests/HATestSanity/HATestSanity.py
@@ -1,4 +1,4 @@
-'''
+"""
 Description: This test is to determine if the HA test setup is
     working correctly. There are no failures so this test should
     have a 100% pass rate
@@ -19,14 +19,16 @@
 CASE13: Clean up
 CASE14: start election app on all onos nodes
 CASE15: Check that Leadership Election is still functional
-'''
+"""
+
+
 class HATestSanity:
 
-    def __init__(self) :
+    def __init__( self ):
         self.default = ''
 
-    def CASE1(self,main) :
-        '''
+    def CASE1( self, main ):
+        """
         CASE1 is to compile ONOS and push it to the test machines
 
         Startup sequence:
@@ -38,775 +40,858 @@
         NOTE: temporary - onos-remove-raft-logs
         onos-install -f
         onos-wait-for-start
-        '''
-        import time
-        main.log.report("ONOS HA Sanity test - initialization")
-        main.case("Setting up test environment")
-        #TODO: save all the timers and output them for plotting
+        """
+        main.log.report( "ONOS HA Sanity test - initialization" )
+        main.case( "Setting up test environment" )
+        # TODO: save all the timers and output them for plotting
 
         # load some vairables from the params file
-        PULL_CODE = False
-        if main.params['Git'] == 'True':
-            PULL_CODE = True
-        cell_name = main.params['ENV']['cellName']
+        PULLCODE = False
+        if main.params[ 'Git' ] == 'True':
+            PULLCODE = True
+        gitBranch = main.params[ 'branch' ]
+        cellName = main.params[ 'ENV' ][ 'cellName' ]
 
-        #set global variables
-        global ONOS1_ip
-        global ONOS1_port
-        global ONOS2_ip
-        global ONOS2_port
-        global ONOS3_ip
-        global ONOS3_port
-        global ONOS4_ip
-        global ONOS4_port
-        global ONOS5_ip
-        global ONOS5_port
-        global ONOS6_ip
-        global ONOS6_port
-        global ONOS7_ip
-        global ONOS7_port
-        global num_controllers
+        # set global variables
+        global ONOS1Ip
+        global ONOS1Port
+        global ONOS2Ip
+        global ONOS2Port
+        global ONOS3Ip
+        global ONOS3Port
+        global ONOS4Ip
+        global ONOS4Port
+        global ONOS5Ip
+        global ONOS5Port
+        global ONOS6Ip
+        global ONOS6Port
+        global ONOS7Ip
+        global ONOS7Port
+        global numControllers
 
-        ONOS1_ip = main.params['CTRL']['ip1']
-        ONOS1_port = main.params['CTRL']['port1']
-        ONOS2_ip = main.params['CTRL']['ip2']
-        ONOS2_port = main.params['CTRL']['port2']
-        ONOS3_ip = main.params['CTRL']['ip3']
-        ONOS3_port = main.params['CTRL']['port3']
-        ONOS4_ip = main.params['CTRL']['ip4']
-        ONOS4_port = main.params['CTRL']['port4']
-        ONOS5_ip = main.params['CTRL']['ip5']
-        ONOS5_port = main.params['CTRL']['port5']
-        ONOS6_ip = main.params['CTRL']['ip6']
-        ONOS6_port = main.params['CTRL']['port6']
-        ONOS7_ip = main.params['CTRL']['ip7']
-        ONOS7_port = main.params['CTRL']['port7']
-        num_controllers = int(main.params['num_controllers'])
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS1Port = main.params[ 'CTRL' ][ 'port1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS2Port = main.params[ 'CTRL' ][ 'port2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS3Port = main.params[ 'CTRL' ][ 'port3' ]
+        ONOS4Ip = main.params[ 'CTRL' ][ 'ip4' ]
+        ONOS4Port = main.params[ 'CTRL' ][ 'port4' ]
+        ONOS5Ip = main.params[ 'CTRL' ][ 'ip5' ]
+        ONOS5Port = main.params[ 'CTRL' ][ 'port5' ]
+        ONOS6Ip = main.params[ 'CTRL' ][ 'ip6' ]
+        ONOS6Port = main.params[ 'CTRL' ][ 'port6' ]
+        ONOS7Ip = main.params[ 'CTRL' ][ 'ip7' ]
+        ONOS7Port = main.params[ 'CTRL' ][ 'port7' ]
+        numControllers = int( main.params[ 'num_controllers' ] )
 
+        main.step( "Applying cell variable to environment" )
+        cellResult = main.ONOSbench.setCell( cellName )
+        verifyResult = main.ONOSbench.verifyCell()
 
-        main.step("Applying cell variable to environment")
-        cell_result = main.ONOSbench.set_cell(cell_name)
-        verify_result = main.ONOSbench.verify_cell()
+        # FIXME:this is short term fix
+        main.log.report( "Removing raft logs" )
+        main.ONOSbench.onosRemoveRaftLogs()
+        main.log.report( "Uninstalling ONOS" )
+        main.ONOSbench.onosUninstall( ONOS1Ip )
+        main.ONOSbench.onosUninstall( ONOS2Ip )
+        main.ONOSbench.onosUninstall( ONOS3Ip )
+        main.ONOSbench.onosUninstall( ONOS4Ip )
+        main.ONOSbench.onosUninstall( ONOS5Ip )
+        main.ONOSbench.onosUninstall( ONOS6Ip )
+        main.ONOSbench.onosUninstall( ONOS7Ip )
 
-        #FIXME:this is short term fix
-        main.log.report("Removing raft logs")
-        main.ONOSbench.onos_remove_raft_logs()
-        main.log.report("Uninstalling ONOS")
-        main.ONOSbench.onos_uninstall(ONOS1_ip)
-        main.ONOSbench.onos_uninstall(ONOS2_ip)
-        main.ONOSbench.onos_uninstall(ONOS3_ip)
-        main.ONOSbench.onos_uninstall(ONOS4_ip)
-        main.ONOSbench.onos_uninstall(ONOS5_ip)
-        main.ONOSbench.onos_uninstall(ONOS6_ip)
-        main.ONOSbench.onos_uninstall(ONOS7_ip)
+        cleanInstallResult = main.TRUE
+        gitPullResult = main.TRUE
 
-        clean_install_result = main.TRUE
-        git_pull_result = main.TRUE
+        main.step( "Compiling the latest version of ONOS" )
+        if PULLCODE:
+            # TODO Configure branch in params
+            main.step( "Git checkout and pull master" )
+            main.ONOSbench.gitCheckout( gitBranch )
+            gitPullResult = main.ONOSbench.gitPull()
 
-        main.step("Compiling the latest version of ONOS")
-        if PULL_CODE:
-            # Configure branch in params
-            main.step("Git checkout and pull master")
-            main.ONOSbench.git_checkout("master")
-            git_pull_result = main.ONOSbench.git_pull()
+            main.step( "Using mvn clean & install" )
+            cleanInstallResult = main.ONOSbench.cleanInstall()
+        else:
+            main.log.warn( "Did not pull new code so skipping mvn " +
+                           "clean install" )
+        main.ONOSbench.getVersion( report=True )
 
-            main.step("Using mvn clean & install")
-            clean_install_result = main.TRUE
-            if git_pull_result == main.TRUE:
-                clean_install_result = main.ONOSbench.clean_install()
-            else:
-                main.log.warn("Did not pull new code so skipping mvn "+ \
-                        "clean install")
-        main.ONOSbench.get_version(report=True)
+        main.step( "Creating ONOS package" )
+        packageResult = main.ONOSbench.onosPackage()
 
-        main.step("Creating ONOS package")
-        package_result = main.ONOSbench.onos_package()
+        main.step( "Installing ONOS package" )
+        onos1InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS1Ip )
+        onos2InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS2Ip )
+        onos3InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS3Ip )
+        onos4InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS4Ip )
+        onos5InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS5Ip )
+        onos6InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS6Ip )
+        onos7InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS7Ip )
+        onosInstallResult = onos1InstallResult and onos2InstallResult\
+            and onos3InstallResult and onos4InstallResult\
+            and onos5InstallResult and onos6InstallResult\
+            and onos7InstallResult
 
-        main.step("Installing ONOS package")
-        onos1_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS1_ip)
-        onos2_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS2_ip)
-        onos3_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS3_ip)
-        onos4_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS4_ip)
-        onos5_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS5_ip)
-        onos6_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS6_ip)
-        onos7_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS7_ip)
-        onos_install_result = onos1_install_result and onos2_install_result\
-                and onos3_install_result and onos4_install_result\
-                and onos5_install_result and onos6_install_result\
-                and onos7_install_result
-        '''
-        #FIXME: work around until onos is less fragile
-        main.ONOSbench.handle.sendline("onos-cluster-install")
-        print main.ONOSbench.handle.expect("\$")
-        onos_install_result = main.TRUE
-        '''
-
-
-        main.step("Checking if ONOS is up yet")
-        #TODO check bundle:list?
-        for i in range(2):
-            onos1_isup = main.ONOSbench.isup(ONOS1_ip)
-            if not onos1_isup:
-                main.log.report("ONOS1 didn't start!")
-            onos2_isup = main.ONOSbench.isup(ONOS2_ip)
-            if not onos2_isup:
-                main.log.report("ONOS2 didn't start!")
-            onos3_isup = main.ONOSbench.isup(ONOS3_ip)
-            if not onos3_isup:
-                main.log.report("ONOS3 didn't start!")
-            onos4_isup = main.ONOSbench.isup(ONOS4_ip)
-            if not onos4_isup:
-                main.log.report("ONOS4 didn't start!")
-            onos5_isup = main.ONOSbench.isup(ONOS5_ip)
-            if not onos5_isup:
-                main.log.report("ONOS5 didn't start!")
-            onos6_isup = main.ONOSbench.isup(ONOS6_ip)
-            if not onos6_isup:
-                main.log.report("ONOS6 didn't start!")
-            onos7_isup = main.ONOSbench.isup(ONOS7_ip)
-            if not onos7_isup:
-                main.log.report("ONOS7 didn't start!")
-            onos_isup_result = onos1_isup and onos2_isup and onos3_isup\
-                    and onos4_isup and onos5_isup and onos6_isup and onos7_isup
-            if onos_isup_result == main.TRUE:
+        main.step( "Checking if ONOS is up yet" )
+        # TODO check bundle:list?
+        for i in range( 2 ):
+            onos1Isup = main.ONOSbench.isup( ONOS1Ip )
+            if not onos1Isup:
+                main.log.report( "ONOS1 didn't start!" )
+            onos2Isup = main.ONOSbench.isup( ONOS2Ip )
+            if not onos2Isup:
+                main.log.report( "ONOS2 didn't start!" )
+            onos3Isup = main.ONOSbench.isup( ONOS3Ip )
+            if not onos3Isup:
+                main.log.report( "ONOS3 didn't start!" )
+            onos4Isup = main.ONOSbench.isup( ONOS4Ip )
+            if not onos4Isup:
+                main.log.report( "ONOS4 didn't start!" )
+            onos5Isup = main.ONOSbench.isup( ONOS5Ip )
+            if not onos5Isup:
+                main.log.report( "ONOS5 didn't start!" )
+            onos6Isup = main.ONOSbench.isup( ONOS6Ip )
+            if not onos6Isup:
+                main.log.report( "ONOS6 didn't start!" )
+            onos7Isup = main.ONOSbench.isup( ONOS7Ip )
+            if not onos7Isup:
+                main.log.report( "ONOS7 didn't start!" )
+            onosIsupResult = onos1Isup and onos2Isup and onos3Isup\
+                and onos4Isup and onos5Isup and onos6Isup and onos7Isup
+            if onosIsupResult == main.TRUE:
                 break
 
+        cliResult1 = main.ONOScli1.startOnosCli( ONOS1Ip )
+        cliResult2 = main.ONOScli2.startOnosCli( ONOS2Ip )
+        cliResult3 = main.ONOScli3.startOnosCli( ONOS3Ip )
+        cliResult4 = main.ONOScli4.startOnosCli( ONOS4Ip )
+        cliResult5 = main.ONOScli5.startOnosCli( ONOS5Ip )
+        cliResult6 = main.ONOScli6.startOnosCli( ONOS6Ip )
+        cliResult7 = main.ONOScli7.startOnosCli( ONOS7Ip )
+        cliResults = cliResult1 and cliResult2 and cliResult3 and\
+            cliResult4 and cliResult5 and cliResult6 and cliResult7
 
-        cli_result1 = main.ONOScli1.start_onos_cli(ONOS1_ip)
-        cli_result2 = main.ONOScli2.start_onos_cli(ONOS2_ip)
-        cli_result3 = main.ONOScli3.start_onos_cli(ONOS3_ip)
-        cli_result4 = main.ONOScli4.start_onos_cli(ONOS4_ip)
-        cli_result5 = main.ONOScli5.start_onos_cli(ONOS5_ip)
-        cli_result6 = main.ONOScli6.start_onos_cli(ONOS6_ip)
-        cli_result7 = main.ONOScli7.start_onos_cli(ONOS7_ip)
-        cli_results = cli_result1 and cli_result2 and cli_result3 and\
-                cli_result4 and cli_result5 and cli_result6 and cli_result7
+        main.step( "Start Packet Capture MN" )
+        main.Mininet2.startTcpdump(
+            str( main.params[ 'MNtcpdump' ][ 'folder' ] ) + str( main.TEST )
+            + "-MN.pcap",
+            intf=main.params[ 'MNtcpdump' ][ 'intf' ],
+            port=main.params[ 'MNtcpdump' ][ 'port' ] )
 
-        main.step("Start Packet Capture MN")
-        main.Mininet2.start_tcpdump(
-                str(main.params['MNtcpdump']['folder'])+str(main.TEST)+"-MN.pcap",
-                intf = main.params['MNtcpdump']['intf'],
-                port = main.params['MNtcpdump']['port'])
+        case1Result = ( cleanInstallResult and packageResult and
+                        cellResult and verifyResult and onosInstallResult
+                        and onosIsupResult and cliResults )
 
+        utilities.assert_equals( expect=main.TRUE, actual=case1Result,
+                                onpass="Test startup successful",
+                                onfail="Test startup NOT successful" )
 
-        case1_result = (clean_install_result and package_result and
-                cell_result and verify_result and onos_install_result and
-                onos_isup_result and cli_results)
-
-        utilities.assert_equals(expect=main.TRUE, actual=case1_result,
-                onpass="Test startup successful",
-                onfail="Test startup NOT successful")
-
-
-        if case1_result==main.FALSE:
+        if case1Result == main.FALSE:
             main.cleanup()
             main.exit()
 
-    def CASE2(self,main) :
-        '''
+    def CASE2( self, main ):
+        """
         Assign mastership to controllers
-        '''
-        import time
-        import json
+        """
         import re
 
-        main.log.report("Assigning switches to controllers")
-        main.case("Assigning Controllers")
-        main.step("Assign switches to controllers")
+        main.log.report( "Assigning switches to controllers" )
+        main.case( "Assigning Controllers" )
+        main.step( "Assign switches to controllers" )
 
-        for i in range (1,29):
-           main.Mininet1.assign_sw_controller(sw=str(i),count=num_controllers,
-                    ip1=ONOS1_ip,port1=ONOS1_port,
-                    ip2=ONOS2_ip,port2=ONOS2_port,
-                    ip3=ONOS3_ip,port3=ONOS3_port,
-                    ip4=ONOS4_ip,port4=ONOS4_port,
-                    ip5=ONOS5_ip,port5=ONOS5_port,
-                    ip6=ONOS6_ip,port6=ONOS6_port,
-                    ip7=ONOS7_ip,port7=ONOS7_port)
+        for i in range( 1, 29 ):
+            main.Mininet1.assignSwController(
+                sw=str( i ),
+                count=numControllers,
+                ip1=ONOS1Ip, port1=ONOS1Port,
+                ip2=ONOS2Ip, port2=ONOS2Port,
+                ip3=ONOS3Ip, port3=ONOS3Port,
+                ip4=ONOS4Ip, port4=ONOS4Port,
+                ip5=ONOS5Ip, port5=ONOS5Port,
+                ip6=ONOS6Ip, port6=ONOS6Port,
+                ip7=ONOS7Ip, port7=ONOS7Port )
 
-        mastership_check = main.TRUE
-        for i in range (1,29):
-            response = main.Mininet1.get_sw_controller("s"+str(i))
+        mastershipCheck = main.TRUE
+        for i in range( 1, 29 ):
+            response = main.Mininet1.getSwController( "s" + str( i ) )
             try:
-                main.log.info(str(response))
+                main.log.info( str( response ) )
             except:
-                main.log.info(repr(response))
-            if re.search("tcp:"+ONOS1_ip,response)\
-                    and re.search("tcp:"+ONOS2_ip,response)\
-                    and re.search("tcp:"+ONOS3_ip,response)\
-                    and re.search("tcp:"+ONOS4_ip,response)\
-                    and re.search("tcp:"+ONOS5_ip,response)\
-                    and re.search("tcp:"+ONOS6_ip,response)\
-                    and re.search("tcp:"+ONOS7_ip,response):
-                mastership_check = mastership_check and main.TRUE
+                main.log.info( repr( response ) )
+            if re.search( "tcp:" + ONOS1Ip, response )\
+                    and re.search( "tcp:" + ONOS2Ip, response )\
+                    and re.search( "tcp:" + ONOS3Ip, response )\
+                    and re.search( "tcp:" + ONOS4Ip, response )\
+                    and re.search( "tcp:" + ONOS5Ip, response )\
+                    and re.search( "tcp:" + ONOS6Ip, response )\
+                    and re.search( "tcp:" + ONOS7Ip, response ):
+                mastershipCheck = mastershipCheck and main.TRUE
             else:
-                mastership_check = main.FALSE
-        if mastership_check == main.TRUE:
-            main.log.report("Switch mastership assigned correctly")
-        utilities.assert_equals(expect = main.TRUE,actual=mastership_check,
-                onpass="Switch mastership assigned correctly",
-                onfail="Switches not assigned correctly to controllers")
+                mastershipCheck = main.FALSE
+        if mastershipCheck == main.TRUE:
+            main.log.report( "Switch mastership assigned correctly" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=mastershipCheck,
+            onpass="Switch mastership assigned correctly",
+            onfail="Switches not assigned correctly to controllers" )
 
-        #Manually assign mastership to the controller we want
-        role_call = main.TRUE
-        role_check = main.TRUE
+        # Manually assign mastership to the controller we want
+        roleCall = main.TRUE
+        roleCheck = main.TRUE
 
-        device_id = main.ONOScli1.get_device("1000")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS1_ip)
-        if ONOS1_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "1000" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS1Ip )
+        # Check assignment
+        if ONOS1Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("2800")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS1_ip)
-        if ONOS1_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "2800" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS1Ip )
+        # Check assignment
+        if ONOS1Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("2000")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS2_ip)
-        if ONOS2_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "2000" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS2Ip )
+        # Check assignment
+        if ONOS2Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("3000")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS2_ip)
-        if ONOS2_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "3000" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS2Ip )
+        # Check assignment
+        if ONOS2Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("5000")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS3_ip)
-        if ONOS3_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "5000" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS3Ip )
+        # Check assignment
+        if ONOS3Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("6000")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS3_ip)
-        if ONOS3_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "6000" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS3Ip )
+        # Check assignment
+        if ONOS3Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id =  main.ONOScli1.get_device("3004")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS4_ip)
-        if ONOS4_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        # Assign switch
+        deviceId = main.ONOScli1.getDevice( "3004" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS4Ip )
+        # Check assignment
+        if ONOS4Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("3008")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
+        for i in range( 8, 18 ):
+            dpid = '3' + str( i ).zfill( 3 )
+            deviceId = main.ONOScli1.getDevice( dpid ).get( 'id' )
+            roleCall = roleCall and main.ONOScli1.deviceRole(
+                deviceId,
+                ONOS5Ip )
+            # Check assignment
+            if ONOS5Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+                roleCheck = roleCheck and main.TRUE
+            else:
+                roleCheck = roleCheck and main.FALSE
+
+        deviceId = main.ONOScli1.getDevice( "6007" ).get( 'id' )
+        roleCall = roleCall and main.ONOScli1.deviceRole(
+            deviceId,
+            ONOS6Ip )
+        # Check assignment
+        if ONOS6Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+            roleCheck = roleCheck and main.TRUE
         else:
-            role_check = role_check and main.FALSE
+            roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("3009")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
+        for i in range( 18, 28 ):
+            dpid = '6' + str( i ).zfill( 3 )
+            deviceId = main.ONOScli1.getDevice( dpid ).get( 'id' )
+            roleCall = roleCall and main.ONOScli1.deviceRole(
+                deviceId,
+                ONOS7Ip )
+            # Check assignment
+            if ONOS7Ip in main.ONOScli1.getRole( deviceId ).get( 'master' ):
+                roleCheck = roleCheck and main.TRUE
+            else:
+                roleCheck = roleCheck and main.FALSE
 
-        device_id = main.ONOScli1.get_device("3010")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=roleCall,
+            onpass="Re-assigned switch mastership to designated controller",
+            onfail="Something wrong with deviceRole calls" )
 
-        device_id = main.ONOScli1.get_device("3011")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=roleCheck,
+            onpass="Switches were successfully reassigned to designated " +
+                   "controller",
+            onfail="Switches were not successfully reassigned" )
+        mastershipCheck = mastershipCheck and roleCall and roleCheck
+        utilities.assert_equals( expect=main.TRUE, actual=mastershipCheck,
+                                 onpass="Switch mastership correctly assigned",
+                                 onfail="Error in (re)assigning switch" +
+                                 " mastership" )
 
-        device_id = main.ONOScli1.get_device("3012")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("3013")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("3014")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("3015")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("3016")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("3017")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS5_ip)
-        if ONOS5_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6007")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS6_ip)
-        if ONOS6_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6018")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6019")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6020")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6021")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6022")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6023")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6024")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6025")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6026")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        device_id = main.ONOScli1.get_device("6027")['id']
-        role_call = role_call and main.ONOScli1.device_role(device_id, ONOS7_ip)
-        if ONOS7_ip in main.ONOScli1.get_role(device_id)['master']:
-            role_check = role_check and main.TRUE
-        else:
-            role_check = role_check and main.FALSE
-
-        utilities.assert_equals(expect = main.TRUE,actual=role_call,
-                onpass="Re-assigned switch mastership to designated controller",
-                onfail="Something wrong with device_role calls")
-
-        utilities.assert_equals(expect = main.TRUE,actual=role_check,
-                onpass="Switches were successfully reassigned to designated controller",
-                onfail="Switches were not successfully reassigned")
-        mastership_check = mastership_check and role_call and role_check
-        utilities.assert_equals(expect = main.TRUE,actual=mastership_check,
-                onpass="Switch mastership correctly assigned",
-                onfail="Error in (re)assigning switch mastership")
-
-
-    def CASE3(self,main) :
+    def CASE3( self, main ):
         """
         Assign intents
-
         """
         import time
-        import json
-        import re
-        main.log.report("Adding host intents")
-        main.case("Adding host Intents")
+        main.log.report( "Adding host intents" )
+        main.case( "Adding host Intents" )
 
-        main.step("Discovering  Hosts( Via pingall for now)")
-        #FIXME: Once we have a host discovery mechanism, use that instead
+        main.step( "Discovering  Hosts( Via pingall for now )" )
+        # FIXME: Once we have a host discovery mechanism, use that instead
 
-        #install onos-app-fwd
-        main.log.info("Install reactive forwarding app")
-        main.ONOScli1.feature_install("onos-app-fwd")
-        main.ONOScli2.feature_install("onos-app-fwd")
-        main.ONOScli3.feature_install("onos-app-fwd")
-        main.ONOScli4.feature_install("onos-app-fwd")
-        main.ONOScli5.feature_install("onos-app-fwd")
-        main.ONOScli6.feature_install("onos-app-fwd")
-        main.ONOScli7.feature_install("onos-app-fwd")
+        # install onos-app-fwd
+        main.log.info( "Install reactive forwarding app" )
+        main.ONOScli1.featureInstall( "onos-app-fwd" )
+        main.ONOScli2.featureInstall( "onos-app-fwd" )
+        main.ONOScli3.featureInstall( "onos-app-fwd" )
+        main.ONOScli4.featureInstall( "onos-app-fwd" )
+        main.ONOScli5.featureInstall( "onos-app-fwd" )
+        main.ONOScli6.featureInstall( "onos-app-fwd" )
+        main.ONOScli7.featureInstall( "onos-app-fwd" )
 
-        #REACTIVE FWD test
-        ping_result = main.FALSE
+        # REACTIVE FWD test
+        pingResult = main.FALSE
         time1 = time.time()
-        ping_result = main.Mininet1.pingall()
+        pingResult = main.Mininet1.pingall()
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=pingResult,
+            onpass="Reactive Pingall test passed",
+            onfail="Reactive Pingall failed, one or more ping pairs failed" )
         time2 = time.time()
-        main.log.info("Time for pingall: %2f seconds" % (time2 - time1))
+        main.log.info( "Time for pingall: %2f seconds" % ( time2 - time1 ) )
 
-        #uninstall onos-app-fwd
-        main.log.info("Uninstall reactive forwarding app")
-        main.ONOScli1.feature_uninstall("onos-app-fwd")
-        main.ONOScli2.feature_uninstall("onos-app-fwd")
-        main.ONOScli3.feature_uninstall("onos-app-fwd")
-        main.ONOScli4.feature_uninstall("onos-app-fwd")
-        main.ONOScli5.feature_uninstall("onos-app-fwd")
-        main.ONOScli6.feature_uninstall("onos-app-fwd")
-        main.ONOScli7.feature_uninstall("onos-app-fwd")
-        #timeout for fwd flows
-        time.sleep(10)
+        # uninstall onos-app-fwd
+        main.log.info( "Uninstall reactive forwarding app" )
+        main.ONOScli1.featureUninstall( "onos-app-fwd" )
+        main.ONOScli2.featureUninstall( "onos-app-fwd" )
+        main.ONOScli3.featureUninstall( "onos-app-fwd" )
+        main.ONOScli4.featureUninstall( "onos-app-fwd" )
+        main.ONOScli5.featureUninstall( "onos-app-fwd" )
+        main.ONOScli6.featureUninstall( "onos-app-fwd" )
+        main.ONOScli7.featureUninstall( "onos-app-fwd" )
+        # timeout for fwd flows
+        time.sleep( 10 )
 
-        main.step("Add  host intents")
-        #TODO:  move the host numbers to params
-        import json
-        intents_json= json.loads(main.ONOScli1.hosts())
-        intent_add_result = True
-        for i in range(8,18):
-            main.log.info("Adding host intent between h"+str(i)+" and h"+str(i+10))
-            host1 =  "00:00:00:00:00:" + str(hex(i)[2:]).zfill(2).upper()
-            host2 =  "00:00:00:00:00:" + str(hex(i+10)[2:]).zfill(2).upper()
-            host1_id = main.ONOScli1.get_host(host1)['id']
-            host2_id = main.ONOScli1.get_host(host2)['id']
-            #NOTE: get host can return None
-            if host1_id and host2_id:
-                tmp_result = main.ONOScli1.add_host_intent(host1_id, host2_id )
+        main.step( "Add  host intents" )
+        # TODO:  move the host numbers to params
+        intentAddResult = True
+        for i in range( 8, 18 ):
+            main.log.info( "Adding host intent between h" + str( i ) +
+                           " and h" + str( i + 10 ) )
+            host1 = "00:00:00:00:00:" + \
+                str( hex( i )[ 2: ] ).zfill( 2 ).upper()
+            host2 = "00:00:00:00:00:" + \
+                str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
+            host1Id = main.ONOScli1.getHost( host1 )[ 'id' ]
+            host2Id = main.ONOScli1.getHost( host2 )[ 'id' ]
+            # NOTE: get host can return None
+            if host1Id and host2Id:
+                tmpResult = main.ONOScli1.addHostIntent(
+                    host1Id,
+                    host2Id )
             else:
-                main.log.error("Error, get_host() failed")
-                tmp_result = main.FALSE
-            intent_add_result = bool(intent_add_result and tmp_result)
-        utilities.assert_equals(expect=True, actual=intent_add_result,
-                onpass="Switch mastership correctly assigned",
-                onfail="Error in (re)assigning switch mastership")
-        #TODO Check if intents all exist in datastore
-        #NOTE: Do we need to print this once the test is working?
-        #main.log.info(json.dumps(json.loads(main.ONOScli1.intents(json_format=True)),
-        #    sort_keys=True, indent=4, separators=(',', ': ') ) )
+                main.log.error( "Error, getHost() failed" )
+                tmpResult = main.FALSE
+            intentAddResult = bool( pingResult and intentAddResult
+                                     and tmpResult )
+            # TODO Check that intents were added?
+        utilities.assert_equals(
+            expect=True,
+            actual=intentAddResult,
+            onpass="Pushed host intents to ONOS",
+            onfail="Error in pushing host intents to ONOS" )
+        # TODO Check if intents all exist in datastore
 
-    def CASE4(self,main) :
+    def CASE4( self, main ):
         """
         Ping across added host intents
         """
         description = " Ping across added host intents"
-        main.log.report(description)
-        main.case(description)
-        Ping_Result = main.TRUE
-        for i in range(8,18):
-            ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+10))
-            Ping_Result = Ping_Result and ping
-            if ping==main.FALSE:
-                main.log.warn("Ping failed between h"+str(i)+" and h" + str(i+10))
-            elif ping==main.TRUE:
-                main.log.info("Ping test passed!")
-                Ping_Result = main.TRUE
-        if Ping_Result==main.FALSE:
-            main.log.report("Intents have not been installed correctly, pings failed.")
-        if Ping_Result==main.TRUE:
-            main.log.report("Intents have been installed correctly and verified by pings")
-        utilities.assert_equals(expect = main.TRUE,actual=Ping_Result,
-                onpass="Intents have been installed correctly and pings work",
-                onfail ="Intents have not been installed correctly, pings failed." )
+        main.log.report( description )
+        main.case( description )
+        PingResult = main.TRUE
+        for i in range( 8, 18 ):
+            ping = main.Mininet1.pingHost(
+                src="h" + str( i ), target="h" + str( i + 10 ) )
+            PingResult = PingResult and ping
+            if ping == main.FALSE:
+                main.log.warn( "Ping failed between h" + str( i ) +
+                               " and h" + str( i + 10 ) )
+            elif ping == main.TRUE:
+                main.log.info( "Ping test passed!" )
+                PingResult = main.TRUE
+        if PingResult == main.FALSE:
+            main.log.report(
+                "Intents have not been installed correctly, pings failed." )
+            #TODO: pretty print
+            main.log.warn( "ONSO1 intents: " )
+            main.log.warn( json.dumps( json.loads( main.ONOScli1.intents() ),
+                                       sort_keys=True,
+                                       indent=4,
+                                       separators=( ',', ': ' ) ) )
+        if PingResult == main.TRUE:
+            main.log.report(
+                "Intents have been installed correctly and verified by pings" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=PingResult,
+            onpass="Intents have been installed correctly and pings work",
+            onfail="Intents have not been installed correctly, pings failed." )
 
-    def CASE5(self,main) :
-        '''
+    def CASE5( self, main ):
+        """
         Reading state of ONOS
-        '''
-        import time
+        """
         import json
-        from subprocess import Popen, PIPE
-        from sts.topology.teston_topology import TestONTopology # assumes that sts is already in you PYTHONPATH
+        # assumes that sts is already in you PYTHONPATH
+        from sts.topology.teston_topology import TestONTopology
 
-        main.log.report("Setting up and gathering data for current state")
-        main.case("Setting up and gathering data for current state")
-        #The general idea for this test case is to pull the state of (intents,flows, topology,...) from each ONOS node
-        #We can then compare them with eachother and also with past states
+        main.log.report( "Setting up and gathering data for current state" )
+        main.case( "Setting up and gathering data for current state" )
+        # The general idea for this test case is to pull the state of
+        # ( intents,flows, topology,... ) from each ONOS node
+        # We can then compare them with eachother and also with past states
 
-        main.step("Get the Mastership of each switch from each controller")
-        global mastership_state
-        mastership_state = []
+        main.step( "Get the Mastership of each switch from each controller" )
+        global mastershipState
+        mastershipState = []
 
-        #Assert that each device has a master
-        ONOS1_master_not_null = main.ONOScli1.roles_not_null()
-        ONOS2_master_not_null = main.ONOScli2.roles_not_null()
-        ONOS3_master_not_null = main.ONOScli3.roles_not_null()
-        ONOS4_master_not_null = main.ONOScli4.roles_not_null()
-        ONOS5_master_not_null = main.ONOScli5.roles_not_null()
-        ONOS6_master_not_null = main.ONOScli6.roles_not_null()
-        ONOS7_master_not_null = main.ONOScli7.roles_not_null()
-        roles_not_null = ONOS1_master_not_null and ONOS2_master_not_null and\
-                ONOS3_master_not_null and ONOS4_master_not_null and\
-                ONOS5_master_not_null and ONOS6_master_not_null and\
-                ONOS7_master_not_null
-        utilities.assert_equals(expect = main.TRUE,actual=roles_not_null,
-                onpass="Each device has a master",
-                onfail="Some devices don't have a master assigned")
+        # Assert that each device has a master
+        ONOS1MasterNotNull = main.ONOScli1.rolesNotNull()
+        ONOS2MasterNotNull = main.ONOScli2.rolesNotNull()
+        ONOS3MasterNotNull = main.ONOScli3.rolesNotNull()
+        ONOS4MasterNotNull = main.ONOScli4.rolesNotNull()
+        ONOS5MasterNotNull = main.ONOScli5.rolesNotNull()
+        ONOS6MasterNotNull = main.ONOScli6.rolesNotNull()
+        ONOS7MasterNotNull = main.ONOScli7.rolesNotNull()
+        rolesNotNull = ONOS1MasterNotNull and ONOS2MasterNotNull and\
+            ONOS3MasterNotNull and ONOS4MasterNotNull and\
+            ONOS5MasterNotNull and ONOS6MasterNotNull and\
+            ONOS7MasterNotNull
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=rolesNotNull,
+            onpass="Each device has a master",
+            onfail="Some devices don't have a master assigned" )
 
-
-        ONOS1_mastership = main.ONOScli1.roles()
-        ONOS2_mastership = main.ONOScli2.roles()
-        ONOS3_mastership = main.ONOScli3.roles()
-        ONOS4_mastership = main.ONOScli4.roles()
-        ONOS5_mastership = main.ONOScli5.roles()
-        ONOS6_mastership = main.ONOScli6.roles()
-        ONOS7_mastership = main.ONOScli7.roles()
-        #print json.dumps(json.loads(ONOS1_mastership), sort_keys=True, indent=4, separators=(',', ': '))
-        if "Error" in ONOS1_mastership or not ONOS1_mastership\
-                or "Error" in ONOS2_mastership or not ONOS2_mastership\
-                or "Error" in ONOS3_mastership or not ONOS3_mastership\
-                or "Error" in ONOS4_mastership or not ONOS4_mastership\
-                or "Error" in ONOS5_mastership or not ONOS5_mastership\
-                or "Error" in ONOS6_mastership or not ONOS6_mastership\
-                or "Error" in ONOS7_mastership or not ONOS7_mastership:
-                    main.log.report("Error in getting ONOS roles")
-                    main.log.warn("ONOS1 mastership response: " + repr(ONOS1_mastership))
-                    main.log.warn("ONOS2 mastership response: " + repr(ONOS2_mastership))
-                    main.log.warn("ONOS3 mastership response: " + repr(ONOS3_mastership))
-                    main.log.warn("ONOS4 mastership response: " + repr(ONOS4_mastership))
-                    main.log.warn("ONOS5 mastership response: " + repr(ONOS5_mastership))
-                    main.log.warn("ONOS6 mastership response: " + repr(ONOS6_mastership))
-                    main.log.warn("ONOS7 mastership response: " + repr(ONOS7_mastership))
-                    consistent_mastership = main.FALSE
-        elif ONOS1_mastership == ONOS2_mastership\
-                and ONOS1_mastership == ONOS3_mastership\
-                and ONOS1_mastership == ONOS4_mastership\
-                and ONOS1_mastership == ONOS5_mastership\
-                and ONOS1_mastership == ONOS6_mastership\
-                and ONOS1_mastership == ONOS7_mastership:
-                    mastership_state = ONOS1_mastership
-                    consistent_mastership = main.TRUE
-                    main.log.report("Switch roles are consistent across all ONOS nodes")
+        ONOS1Mastership = main.ONOScli1.roles()
+        ONOS2Mastership = main.ONOScli2.roles()
+        ONOS3Mastership = main.ONOScli3.roles()
+        ONOS4Mastership = main.ONOScli4.roles()
+        ONOS5Mastership = main.ONOScli5.roles()
+        ONOS6Mastership = main.ONOScli6.roles()
+        ONOS7Mastership = main.ONOScli7.roles()
+        # print json.dumps( json.loads( ONOS1Mastership ), sort_keys=True,
+        # indent=4, separators=( ',', ': ' ) )
+        if "Error" in ONOS1Mastership or not ONOS1Mastership\
+                or "Error" in ONOS2Mastership or not ONOS2Mastership\
+                or "Error" in ONOS3Mastership or not ONOS3Mastership\
+                or "Error" in ONOS4Mastership or not ONOS4Mastership\
+                or "Error" in ONOS5Mastership or not ONOS5Mastership\
+                or "Error" in ONOS6Mastership or not ONOS6Mastership\
+                or "Error" in ONOS7Mastership or not ONOS7Mastership:
+            main.log.report( "Error in getting ONOS roles" )
+            main.log.warn(
+                "ONOS1 mastership response: " +
+                repr( ONOS1Mastership ) )
+            main.log.warn(
+                "ONOS2 mastership response: " +
+                repr( ONOS2Mastership ) )
+            main.log.warn(
+                "ONOS3 mastership response: " +
+                repr( ONOS3Mastership ) )
+            main.log.warn(
+                "ONOS4 mastership response: " +
+                repr( ONOS4Mastership ) )
+            main.log.warn(
+                "ONOS5 mastership response: " +
+                repr( ONOS5Mastership ) )
+            main.log.warn(
+                "ONOS6 mastership response: " +
+                repr( ONOS6Mastership ) )
+            main.log.warn(
+                "ONOS7 mastership response: " +
+                repr( ONOS7Mastership ) )
+            consistentMastership = main.FALSE
+        elif ONOS1Mastership == ONOS2Mastership\
+                and ONOS1Mastership == ONOS3Mastership\
+                and ONOS1Mastership == ONOS4Mastership\
+                and ONOS1Mastership == ONOS5Mastership\
+                and ONOS1Mastership == ONOS6Mastership\
+                and ONOS1Mastership == ONOS7Mastership:
+            mastershipState = ONOS1Mastership
+            consistentMastership = main.TRUE
+            main.log.report(
+                "Switch roles are consistent across all ONOS nodes" )
         else:
-            main.log.warn("ONOS1 roles: ", json.dumps(json.loads(ONOS1_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS2 roles: ", json.dumps(json.loads(ONOS2_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS3 roles: ", json.dumps(json.loads(ONOS3_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS4 roles: ", json.dumps(json.loads(ONOS4_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS5 roles: ", json.dumps(json.loads(ONOS5_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS6 roles: ", json.dumps(json.loads(ONOS6_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS7 roles: ", json.dumps(json.loads(ONOS7_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            consistent_mastership = main.FALSE
-        utilities.assert_equals(expect = main.TRUE,actual=consistent_mastership,
-                onpass="Switch roles are consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of switch roles")
+            main.log.warn(
+                "ONOS1 roles: ",
+                json.dumps(
+                    json.loads( ONOS1Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS2 roles: ",
+                json.dumps(
+                    json.loads( ONOS2Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS3 roles: ",
+                json.dumps(
+                    json.loads( ONOS3Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS4 roles: ",
+                json.dumps(
+                    json.loads( ONOS4Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS5 roles: ",
+                json.dumps(
+                    json.loads( ONOS5Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS6 roles: ",
+                json.dumps(
+                    json.loads( ONOS6Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS7 roles: ",
+                json.dumps(
+                    json.loads( ONOS7Mastership ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            consistentMastership = main.FALSE
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=consistentMastership,
+            onpass="Switch roles are consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of switch roles" )
 
-
-        main.step("Get the intents from each controller")
-        global intent_state
-        intent_state = []
-        ONOS1_intents = main.ONOScli1.intents( json_format=True )
-        ONOS2_intents = main.ONOScli2.intents( json_format=True )
-        ONOS3_intents = main.ONOScli3.intents( json_format=True )
-        ONOS4_intents = main.ONOScli4.intents( json_format=True )
-        ONOS5_intents = main.ONOScli5.intents( json_format=True )
-        ONOS6_intents = main.ONOScli6.intents( json_format=True )
-        ONOS7_intents = main.ONOScli7.intents( json_format=True )
-        intent_check = main.FALSE
-        if "Error" in ONOS1_intents or not ONOS1_intents\
-                or "Error" in ONOS2_intents or not ONOS2_intents\
-                or "Error" in ONOS3_intents or not ONOS3_intents\
-                or "Error" in ONOS4_intents or not ONOS4_intents\
-                or "Error" in ONOS5_intents or not ONOS5_intents\
-                or "Error" in ONOS6_intents or not ONOS6_intents\
-                or "Error" in ONOS7_intents or not ONOS7_intents:
-                    main.log.report("Error in getting ONOS intents")
-                    main.log.warn("ONOS1 intents response: " + repr(ONOS1_intents))
-                    main.log.warn("ONOS2 intents response: " + repr(ONOS2_intents))
-                    main.log.warn("ONOS3 intents response: " + repr(ONOS3_intents))
-                    main.log.warn("ONOS4 intents response: " + repr(ONOS4_intents))
-                    main.log.warn("ONOS5 intents response: " + repr(ONOS5_intents))
-                    main.log.warn("ONOS6 intents response: " + repr(ONOS6_intents))
-                    main.log.warn("ONOS7 intents response: " + repr(ONOS7_intents))
-        elif ONOS1_intents == ONOS2_intents\
-                and ONOS1_intents == ONOS3_intents\
-                and ONOS1_intents == ONOS4_intents\
-                and ONOS1_intents == ONOS5_intents\
-                and ONOS1_intents == ONOS6_intents\
-                and ONOS1_intents == ONOS7_intents:
-                    intent_state = ONOS1_intents
-                    intent_check = main.TRUE
-                    main.log.report("Intents are consistent across all ONOS nodes")
+        main.step( "Get the intents from each controller" )
+        global intentState
+        intentState = []
+        ONOS1Intents = main.ONOScli1.intents( jsonFormat=True )
+        ONOS2Intents = main.ONOScli2.intents( jsonFormat=True )
+        ONOS3Intents = main.ONOScli3.intents( jsonFormat=True )
+        ONOS4Intents = main.ONOScli4.intents( jsonFormat=True )
+        ONOS5Intents = main.ONOScli5.intents( jsonFormat=True )
+        ONOS6Intents = main.ONOScli6.intents( jsonFormat=True )
+        ONOS7Intents = main.ONOScli7.intents( jsonFormat=True )
+        intentCheck = main.FALSE
+        if "Error" in ONOS1Intents or not ONOS1Intents\
+                or "Error" in ONOS2Intents or not ONOS2Intents\
+                or "Error" in ONOS3Intents or not ONOS3Intents\
+                or "Error" in ONOS4Intents or not ONOS4Intents\
+                or "Error" in ONOS5Intents or not ONOS5Intents\
+                or "Error" in ONOS6Intents or not ONOS6Intents\
+                or "Error" in ONOS7Intents or not ONOS7Intents:
+            main.log.report( "Error in getting ONOS intents" )
+            main.log.warn( "ONOS1 intents response: " + repr( ONOS1Intents ) )
+            main.log.warn( "ONOS2 intents response: " + repr( ONOS2Intents ) )
+            main.log.warn( "ONOS3 intents response: " + repr( ONOS3Intents ) )
+            main.log.warn( "ONOS4 intents response: " + repr( ONOS4Intents ) )
+            main.log.warn( "ONOS5 intents response: " + repr( ONOS5Intents ) )
+            main.log.warn( "ONOS6 intents response: " + repr( ONOS6Intents ) )
+            main.log.warn( "ONOS7 intents response: " + repr( ONOS7Intents ) )
+        elif ONOS1Intents == ONOS2Intents\
+                and ONOS1Intents == ONOS3Intents\
+                and ONOS1Intents == ONOS4Intents\
+                and ONOS1Intents == ONOS5Intents\
+                and ONOS1Intents == ONOS6Intents\
+                and ONOS1Intents == ONOS7Intents:
+            intentState = ONOS1Intents
+            intentCheck = main.TRUE
+            main.log.report( "Intents are consistent across all ONOS nodes" )
         else:
-            main.log.warn("ONOS1 intents: ", json.dumps(json.loads(ONOS1_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS2 intents: ", json.dumps(json.loads(ONOS2_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS3 intents: ", json.dumps(json.loads(ONOS3_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS4 intents: ", json.dumps(json.loads(ONOS4_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS5 intents: ", json.dumps(json.loads(ONOS5_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS6 intents: ", json.dumps(json.loads(ONOS6_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS7 intents: ", json.dumps(json.loads(ONOS7_intents),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-        utilities.assert_equals(expect = main.TRUE,actual=intent_check,
-                onpass="Intents are consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of intents")
+            main.log.warn(
+                "ONOS1 intents: ",
+                json.dumps(
+                    json.loads( ONOS1Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS2 intents: ",
+                json.dumps(
+                    json.loads( ONOS2Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS3 intents: ",
+                json.dumps(
+                    json.loads( ONOS3Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS4 intents: ",
+                json.dumps(
+                    json.loads( ONOS4Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS5 intents: ",
+                json.dumps(
+                    json.loads( ONOS5Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS6 intents: ",
+                json.dumps(
+                    json.loads( ONOS6Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+            main.log.warn(
+                "ONOS7 intents: ",
+                json.dumps(
+                    json.loads( ONOS7Intents ),
+                    sort_keys=True,
+                    indent=4,
+                    separators=(
+                        ',',
+                        ': ' ) ) )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=intentCheck,
+            onpass="Intents are consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of intents" )
 
-
-        main.step("Get the flows from each controller")
-        global flow_state
-        flow_state = []
-        ONOS1_flows = main.ONOScli1.flows( json_format=True )
-        ONOS2_flows = main.ONOScli2.flows( json_format=True )
-        ONOS3_flows = main.ONOScli3.flows( json_format=True )
-        ONOS4_flows = main.ONOScli4.flows( json_format=True )
-        ONOS5_flows = main.ONOScli5.flows( json_format=True )
-        ONOS6_flows = main.ONOScli6.flows( json_format=True )
-        ONOS7_flows = main.ONOScli7.flows( json_format=True )
-        flow_check = main.FALSE
-        if "Error" in ONOS1_flows or not ONOS1_flows\
-                or "Error" in ONOS2_flows or not ONOS2_flows\
-                or "Error" in ONOS3_flows or not ONOS3_flows\
-                or "Error" in ONOS4_flows or not ONOS4_flows\
-                or "Error" in ONOS5_flows or not ONOS5_flows\
-                or "Error" in ONOS6_flows or not ONOS6_flows\
-                or "Error" in ONOS7_flows or not ONOS7_flows:
-                    main.log.report("Error in getting ONOS intents")
-                    main.log.warn("ONOS1 flows repsponse: "+ ONOS1_flows)
-                    main.log.warn("ONOS2 flows repsponse: "+ ONOS2_flows)
-                    main.log.warn("ONOS3 flows repsponse: "+ ONOS3_flows)
-                    main.log.warn("ONOS4 flows repsponse: "+ ONOS4_flows)
-                    main.log.warn("ONOS5 flows repsponse: "+ ONOS5_flows)
-                    main.log.warn("ONOS6 flows repsponse: "+ ONOS6_flows)
-                    main.log.warn("ONOS7 flows repsponse: "+ ONOS7_flows)
-        elif len(json.loads(ONOS1_flows)) == len(json.loads(ONOS2_flows))\
-                and len(json.loads(ONOS1_flows)) == len(json.loads(ONOS3_flows))\
-                and len(json.loads(ONOS1_flows)) == len(json.loads(ONOS4_flows))\
-                and len(json.loads(ONOS1_flows)) == len(json.loads(ONOS5_flows))\
-                and len(json.loads(ONOS1_flows)) == len(json.loads(ONOS6_flows))\
-                and len(json.loads(ONOS1_flows)) == len(json.loads(ONOS7_flows)):
-                #TODO: Do a better check, maybe compare flows on switches?
-                    flow_state = ONOS1_flows
-                    flow_check = main.TRUE
-                    main.log.report("Flow count is consistent across all ONOS nodes")
+        main.step( "Get the flows from each controller" )
+        global flowState
+        flowState = []
+        ONOS1Flows = main.ONOScli1.flows( jsonFormat=True )
+        ONOS2Flows = main.ONOScli2.flows( jsonFormat=True )
+        ONOS3Flows = main.ONOScli3.flows( jsonFormat=True )
+        ONOS4Flows = main.ONOScli4.flows( jsonFormat=True )
+        ONOS5Flows = main.ONOScli5.flows( jsonFormat=True )
+        ONOS6Flows = main.ONOScli6.flows( jsonFormat=True )
+        ONOS7Flows = main.ONOScli7.flows( jsonFormat=True )
+        ONOS1FlowsJson = json.loads( ONOS1Flows )
+        ONOS2FlowsJson = json.loads( ONOS2Flows )
+        ONOS3FlowsJson = json.loads( ONOS3Flows )
+        ONOS4FlowsJson = json.loads( ONOS4Flows )
+        ONOS5FlowsJson = json.loads( ONOS5Flows )
+        ONOS6FlowsJson = json.loads( ONOS6Flows )
+        ONOS7FlowsJson = json.loads( ONOS7Flows )
+        flowCheck = main.FALSE
+        if "Error" in ONOS1Flows or not ONOS1Flows\
+                or "Error" in ONOS2Flows or not ONOS2Flows\
+                or "Error" in ONOS3Flows or not ONOS3Flows\
+                or "Error" in ONOS4Flows or not ONOS4Flows\
+                or "Error" in ONOS5Flows or not ONOS5Flows\
+                or "Error" in ONOS6Flows or not ONOS6Flows\
+                or "Error" in ONOS7Flows or not ONOS7Flows:
+            main.log.report( "Error in getting ONOS intents" )
+            main.log.warn( "ONOS1 flows repsponse: " + ONOS1Flows )
+            main.log.warn( "ONOS2 flows repsponse: " + ONOS2Flows )
+            main.log.warn( "ONOS3 flows repsponse: " + ONOS3Flows )
+            main.log.warn( "ONOS4 flows repsponse: " + ONOS4Flows )
+            main.log.warn( "ONOS5 flows repsponse: " + ONOS5Flows )
+            main.log.warn( "ONOS6 flows repsponse: " + ONOS6Flows )
+            main.log.warn( "ONOS7 flows repsponse: " + ONOS7Flows )
+        elif len( ONOS1FlowsJson ) == len( ONOS2FlowsJson )\
+                and len( ONOS1FlowsJson ) == len( ONOS3FlowsJson )\
+                and len( ONOS1FlowsJson ) == len( ONOS4FlowsJson )\
+                and len( ONOS1FlowsJson ) == len( ONOS5FlowsJson )\
+                and len( ONOS1FlowsJson ) == len( ONOS6FlowsJson )\
+                and len( ONOS1FlowsJson ) == len( ONOS7FlowsJson ):
+                # TODO: Do a better check, maybe compare flows on switches?
+            flowState = ONOS1Flows
+            flowCheck = main.TRUE
+            main.log.report( "Flow count is consistent across all ONOS nodes" )
         else:
-            main.log.warn("ONOS1 flows: "+ json.dumps(json.loads(ONOS1_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS2 flows: "+ json.dumps(json.loads(ONOS2_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS3 flows: "+ json.dumps(json.loads(ONOS3_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS4 flows: "+ json.dumps(json.loads(ONOS4_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS5 flows: "+ json.dumps(json.loads(ONOS5_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS6 flows: "+ json.dumps(json.loads(ONOS6_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS7 flows: "+ json.dumps(json.loads(ONOS7_flows),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-        utilities.assert_equals(expect = main.TRUE,actual=flow_check,
-                onpass="The flow count is consistent across all ONOS nodes",
-                onfail="ONOS nodes have different flow counts")
+            main.log.warn( "ONOS1 flows: " +
+                           json.dumps( ONOS1FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS2 flows: " +
+                           json.dumps( ONOS2FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS3 flows: " +
+                           json.dumps( ONOS3FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS4 flows: " +
+                           json.dumps( ONOS4FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS5 flows: " +
+                           json.dumps( ONOS5FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS6 flows: " +
+                           json.dumps( ONOS6FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS7 flows: " +
+                           json.dumps( ONOS7FlowsJson, sort_keys=True,
+                                       indent=4, separators=( ',', ': ' ) ) )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=flowCheck,
+            onpass="The flow count is consistent across all ONOS nodes",
+            onfail="ONOS nodes have different flow counts" )
 
-
-        main.step("Get the OF Table entries")
+        main.step( "Get the OF Table entries" )
         global flows
-        flows=[]
-        for i in range(1,29):
-            flows.append(main.Mininet2.get_flowTable(1.3, "s"+str(i)))
+        flows = []
+        for i in range( 1, 29 ):
+            flows.append( main.Mininet2.getFlowTable( 1.3, "s" + str( i ) ) )
 
-        #TODO: Compare switch flow tables with ONOS flow tables
+        # TODO: Compare switch flow tables with ONOS flow tables
 
-        main.step("Start continuous pings")
-        main.Mininet2.pingLong(src=main.params['PING']['source1'],
-                            target=main.params['PING']['target1'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source2'],
-                            target=main.params['PING']['target2'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source3'],
-                            target=main.params['PING']['target3'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source4'],
-                            target=main.params['PING']['target4'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source5'],
-                            target=main.params['PING']['target5'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source6'],
-                            target=main.params['PING']['target6'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source7'],
-                            target=main.params['PING']['target7'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source8'],
-                            target=main.params['PING']['target8'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source9'],
-                            target=main.params['PING']['target9'],pingTime=500)
-        main.Mininet2.pingLong(src=main.params['PING']['source10'],
-                            target=main.params['PING']['target10'],pingTime=500)
+        main.step( "Start continuous pings" )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source1' ],
+            target=main.params[ 'PING' ][ 'target1' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source2' ],
+            target=main.params[ 'PING' ][ 'target2' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source3' ],
+            target=main.params[ 'PING' ][ 'target3' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source4' ],
+            target=main.params[ 'PING' ][ 'target4' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source5' ],
+            target=main.params[ 'PING' ][ 'target5' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source6' ],
+            target=main.params[ 'PING' ][ 'target6' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source7' ],
+            target=main.params[ 'PING' ][ 'target7' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source8' ],
+            target=main.params[ 'PING' ][ 'target8' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source9' ],
+            target=main.params[ 'PING' ][ 'target9' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source10' ],
+            target=main.params[ 'PING' ][ 'target10' ],
+            pingTime=500 )
 
-        main.step("Create TestONTopology object")
+        main.step( "Create TestONTopology object" )
         ctrls = []
         count = 1
         while True:
             temp = ()
-            if ('ip' + str(count)) in main.params['CTRL']:
-                temp = temp + (getattr(main,('ONOS' + str(count))),)
-                temp = temp + ("ONOS"+str(count),)
-                temp = temp + (main.params['CTRL']['ip'+str(count)],)
-                temp = temp + (eval(main.params['CTRL']['port'+str(count)]),)
-                ctrls.append(temp)
+            if ( 'ip' + str( count ) ) in main.params[ 'CTRL' ]:
+                temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
+                temp = temp + ( "ONOS" + str( count ), )
+                temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
+                temp = temp + \
+                    ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
+                ctrls.append( temp )
                 count = count + 1
             else:
                 break
-        MNTopo = TestONTopology(main.Mininet1, ctrls) # can also add Intent API info for intent operations
+        MNTopo = TestONTopology(
+            main.Mininet1,
+            ctrls )  # can also add Intent API info for intent operations
 
-        main.step("Collecting topology information from ONOS")
+        main.step( "Collecting topology information from ONOS" )
         devices = []
         devices.append( main.ONOScli1.devices() )
         devices.append( main.ONOScli2.devices() )
@@ -847,441 +932,509 @@
         clusters.append( main.ONOScli5.clusters() )
         clusters.append( main.ONOScli6.clusters() )
         clusters.append( main.ONOScli7.clusters() )
-        paths = []
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli1.topology() )
-        paths.append( temp_topo.get('paths', False) )
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli2.topology() )
-        paths.append( temp_topo.get('paths', False) )
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli3.topology() )
-        paths.append( temp_topo.get('paths', False) )
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli4.topology() )
-        paths.append( temp_topo.get('paths', False) )
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli5.topology() )
-        paths.append( temp_topo.get('paths', False) )
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli6.topology() )
-        paths.append( temp_topo.get('paths', False) )
-        temp_topo = main.ONOSbench.get_topology( main.ONOScli7.topology() )
-        paths.append( temp_topo.get('paths', False) )
+        # Compare json objects for hosts and dataplane clusters
 
-        #Compare json objects for hosts, dataplane clusters and paths
-
-        #hosts
-        consistent_hosts_result = main.TRUE
+        # hosts
+        consistentHostsResult = main.TRUE
         for controller in range( len( hosts ) ):
-            if not "Error" in hosts[controller]:
-                if hosts[controller] == hosts[0]:
+            controllerStr = str( controller + 1 )
+            if "Error" not in hosts[ controller ]:
+                if hosts[ controller ] == hosts[ 0 ]:
                     continue
-                else:#hosts not consistent
-                    main.log.report("hosts from ONOS" + str(controller + 1) + " is inconsistent with ONOS1")
-                    main.log.warn( repr( hosts[controller] ) )
-                    consistent_hosts_result = main.FALSE
+                else:  # hosts not consistent
+                    main.log.report( "hosts from ONOS" +
+                                     controllerStr +
+                                     " is inconsistent with ONOS1" )
+                    main.log.warn( repr( hosts[ controller ] ) )
+                    consistentHostsResult = main.FALSE
 
             else:
-                main.log.report("Error in getting ONOS hosts from ONOS" + str(controller + 1) )
-                consistent_hosts_result = main.FALSE
-                main.log.warn("ONOS" + str(controller + 1) + " hosts response: " + repr(hosts[controller]) )
-        utilities.assert_equals(expect = main.TRUE,actual=consistent_hosts_result,
-                onpass="Hosts view is consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of hosts")
+                main.log.report( "Error in getting ONOS hosts from ONOS" +
+                                 controllerStr )
+                consistentHostsResult = main.FALSE
+                main.log.warn( "ONOS" + controllerStr +
+                               " hosts response: " +
+                               repr( hosts[ controller ] ) )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=consistentHostsResult,
+            onpass="Hosts view is consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of hosts" )
 
-        #Strongly connected clusters of devices
-        consistent_clusters_result = main.TRUE
+        # Strongly connected clusters of devices
+        consistentClustersResult = main.TRUE
         for controller in range( len( clusters ) ):
-            if not "Error" in clusters[controller]:
-                if clusters[controller] == clusters[0]:
+            if "Error" not in clusters[ controller ]:
+                if clusters[ controller ] == clusters[ 0 ]:
                     continue
-                else:#clusters not consistent
-                    main.log.report("clusters from ONOS" + str(controller + 1) + " is inconsistent with ONOS1")
-                    consistent_clusters_result = main.FALSE
+                else:  # clusters not consistent
+                    main.log.report( "clusters from ONOS" +
+                                     controllerStr +
+                                     " is inconsistent with ONOS1" )
+                    consistentClustersResult = main.FALSE
 
             else:
-                main.log.report("Error in getting dataplane clusters from ONOS" + str(controller + 1) )
-                consistent_clusters_result = main.FALSE
-                main.log.warn("ONOS" + str(controller + 1) + " clusters response: " + repr(clusters[controller]) )
-        utilities.assert_equals(expect = main.TRUE,actual=consistent_clusters_result,
-                onpass="Clusters view is consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of clusters")
-        num_clusters =  len(json.loads(clusters[0])) #there should always only be one cluster
-        utilities.assert_equals(expect = 1, actual = num_clusters,
-                onpass="ONOS shows 1 SCC",
-                onfail="ONOS shows "+str(num_clusters) +" SCCs")
+                main.log.report( "Error in getting dataplane clusters " +
+                                 "from ONOS" + controllerStr )
+                consistentClustersResult = main.FALSE
+                main.log.warn( "ONOS" + controllerStr +
+                               " clusters response: " +
+                               repr( clusters[ controller ] ) )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=consistentClustersResult,
+            onpass="Clusters view is consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of clusters" )
+        # there should always only be one cluster
+        numClusters = len( json.loads( clusters[ 0 ] ) )
+        utilities.assert_equals(
+            expect=1,
+            actual=numClusters,
+            onpass="ONOS shows 1 SCC",
+            onfail="ONOS shows " +
+            str( numClusters ) +
+            " SCCs" )
 
-
-        #paths
-        consistent_paths_result = main.TRUE
-        for controller in range( len( paths ) ):
-            if not "Error" in paths[controller]:
-                if paths[controller] == paths[0]:
-                    continue
-                else:#paths not consistent
-                    main.log.report("paths from ONOS" + str(controller + 1) + " is inconsistent with ONOS1")
-                    consistent_paths_result = main.FALSE
-
+        main.step( "Comparing ONOS topology to MN" )
+        devicesResults = main.TRUE
+        portsResults = main.TRUE
+        linksResults = main.TRUE
+        for controller in range( numControllers ):
+            controllerStr = str( controller + 1 )
+            if devices[ controller ] or "Error" not in devices[ controller ]:
+                currentDevicesResult = main.Mininet1.compareSwitches(
+                    MNTopo,
+                    json.loads(
+                        devices[ controller ] ) )
             else:
-                main.log.report("Error in getting paths from ONOS" + str(controller + 1) )
-                consistent_paths_result = main.FALSE
-                main.log.warn("ONOS" + str(controller + 1) + " paths response: " + repr(paths[controller]) )
-        utilities.assert_equals(expect = main.TRUE,actual=consistent_paths_result,
-                onpass="Paths count is consistent across all ONOS nodes",
-                onfail="ONOS nodes have different counts of paths")
+                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" )
 
-
-        main.step("Comparing ONOS topology to MN")
-        devices_results = main.TRUE
-        ports_results = main.TRUE
-        links_results = main.TRUE
-        for controller in range(num_controllers):
-            if devices[controller] or not "Error" in devices[controller]:
-                current_devices_result =  main.Mininet1.compare_switches(MNTopo, json.loads(devices[controller]))
+            if ports[ controller ] or "Error" not in ports[ controller ]:
+                currentPortsResult = main.Mininet1.comparePorts(
+                    MNTopo,
+                    json.loads(
+                        ports[ controller ] ) )
             else:
-                current_devices_result = main.FALSE
-            utilities.assert_equals(expect=main.TRUE, actual=current_devices_result,
-                    onpass="ONOS"+str(int(controller+1))+" Switches view is correct",
-                    onfail="ONOS"+str(int(controller+1))+" Switches view is incorrect")
+                currentPortsResult = main.FALSE
+            utilities.assert_equals( expect=main.TRUE,
+                                    actual=currentPortsResult,
+                                    onpass="ONOS" + controllerStr +
+                                    " ports view is correct",
+                                    onfail="ONOS" + controllerStr +
+                                    " ports view is incorrect" )
 
-            if ports[controller] or not "Error" in ports[controller]:
-                current_ports_result =  main.Mininet1.compare_ports(MNTopo, json.loads(ports[controller]))
+            if links[ controller ] or "Error" not in links[ controller ]:
+                currentLinksResult = main.Mininet1.compareLinks(
+                    MNTopo,
+                    json.loads(
+                        links[ controller ] ) )
             else:
-                current_ports_result = main.FALSE
-            utilities.assert_equals(expect=main.TRUE, actual=current_ports_result,
-                    onpass="ONOS"+str(int(controller+1))+" ports view is correct",
-                    onfail="ONOS"+str(int(controller+1))+" ports view is incorrect")
+                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 links[controller] or not "Error" in links[controller]:
-                current_links_result =  main.Mininet1.compare_links(MNTopo, json.loads(links[controller]))
-            else:
-                current_links_result = main.FALSE
-            utilities.assert_equals(expect=main.TRUE, actual=current_links_result,
-                    onpass="ONOS"+str(int(controller+1))+" links view is correct",
-                    onfail="ONOS"+str(int(controller+1))+" links view is incorrect")
+            devicesResults = devicesResults and currentDevicesResult
+            portsResults = portsResults and currentPortsResult
+            linksResults = linksResults and currentLinksResult
 
-            devices_results = devices_results and current_devices_result
-            ports_results = ports_results and current_ports_result
-            links_results = links_results and current_links_result
+        topoResult = devicesResults and portsResults and linksResults\
+            and consistentHostsResult and consistentClustersResult
+        utilities.assert_equals( expect=main.TRUE, actual=topoResult,
+                                onpass="Topology Check Test successful",
+                                onfail="Topology Check Test NOT successful" )
 
-        topo_result = devices_results and ports_results and links_results\
-                and consistent_hosts_result and consistent_clusters_result\
-                and consistent_paths_result
-        utilities.assert_equals(expect=main.TRUE, actual=topo_result,
-                onpass="Topology Check Test successful",
-                onfail="Topology Check Test NOT successful")
+        finalAssert = main.TRUE
+        finalAssert = finalAssert and topoResult and flowCheck \
+            and intentCheck and consistentMastership and rolesNotNull
+        utilities.assert_equals( expect=main.TRUE, actual=finalAssert,
+                                onpass="State check successful",
+                                onfail="State check NOT successful" )
 
-        final_assert = main.TRUE
-        final_assert = final_assert and topo_result and flow_check \
-                and intent_check and consistent_mastership and roles_not_null
-        utilities.assert_equals(expect=main.TRUE, actual=final_assert,
-                onpass="State check successful",
-                onfail="State check NOT successful")
-
-
-    def CASE6(self,main) :
-        '''
+    def CASE6( self, main ):
+        """
         The Failure case. Since this is the Sanity test, we do nothing.
-        '''
+        """
         import time
-        main.log.report("Wait 60 seconds instead of inducing a failure")
-        time.sleep(60)
-        utilities.assert_equals(expect=main.TRUE, actual=main.TRUE,
-                onpass="Sleeping 60 seconds",
-                onfail="Something is terribly wrong with my math")
+        main.log.report( "Wait 60 seconds instead of inducing a failure" )
+        time.sleep( 60 )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=main.TRUE,
+            onpass="Sleeping 60 seconds",
+            onfail="Something is terribly wrong with my math" )
 
-    def CASE7(self,main) :
-        '''
+    def CASE7( self, main ):
+        """
         Check state after ONOS failure
-        '''
-        import os
+        """
         import json
-        main.case("Running ONOS Constant State Tests")
+        main.case( "Running ONOS Constant State Tests" )
 
-        #Assert that each device has a master
-        ONOS1_master_not_null = main.ONOScli1.roles_not_null()
-        ONOS2_master_not_null = main.ONOScli2.roles_not_null()
-        ONOS3_master_not_null = main.ONOScli3.roles_not_null()
-        ONOS4_master_not_null = main.ONOScli4.roles_not_null()
-        ONOS5_master_not_null = main.ONOScli5.roles_not_null()
-        ONOS6_master_not_null = main.ONOScli6.roles_not_null()
-        ONOS7_master_not_null = main.ONOScli7.roles_not_null()
-        roles_not_null = ONOS1_master_not_null and ONOS2_master_not_null and\
-                ONOS3_master_not_null and ONOS4_master_not_null and\
-                ONOS5_master_not_null and ONOS6_master_not_null and\
-                ONOS7_master_not_null
-        utilities.assert_equals(expect = main.TRUE,actual=roles_not_null,
-                onpass="Each device has a master",
-                onfail="Some devices don't have a master assigned")
+        # Assert that each device has a master
+        ONOS1MasterNotNull = main.ONOScli1.rolesNotNull()
+        ONOS2MasterNotNull = main.ONOScli2.rolesNotNull()
+        ONOS3MasterNotNull = main.ONOScli3.rolesNotNull()
+        ONOS4MasterNotNull = main.ONOScli4.rolesNotNull()
+        ONOS5MasterNotNull = main.ONOScli5.rolesNotNull()
+        ONOS6MasterNotNull = main.ONOScli6.rolesNotNull()
+        ONOS7MasterNotNull = main.ONOScli7.rolesNotNull()
+        rolesNotNull = ONOS1MasterNotNull and ONOS2MasterNotNull and\
+            ONOS3MasterNotNull and ONOS4MasterNotNull and\
+            ONOS5MasterNotNull and ONOS6MasterNotNull and\
+            ONOS7MasterNotNull
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=rolesNotNull,
+            onpass="Each device has a master",
+            onfail="Some devices don't have a master assigned" )
 
-
-
-        main.step("Check if switch roles are consistent across all nodes")
-        ONOS1_mastership = main.ONOScli1.roles()
-        ONOS2_mastership = main.ONOScli2.roles()
-        ONOS3_mastership = main.ONOScli3.roles()
-        ONOS4_mastership = main.ONOScli4.roles()
-        ONOS5_mastership = main.ONOScli5.roles()
-        ONOS6_mastership = main.ONOScli6.roles()
-        ONOS7_mastership = main.ONOScli7.roles()
-        #print json.dumps(json.loads(ONOS1_mastership), sort_keys=True, indent=4, separators=(',', ': '))
-        if "Error" in ONOS1_mastership or not ONOS1_mastership\
-                or "Error" in ONOS2_mastership or not ONOS2_mastership\
-                or "Error" in ONOS3_mastership or not ONOS3_mastership\
-                or "Error" in ONOS4_mastership or not ONOS4_mastership\
-                or "Error" in ONOS5_mastership or not ONOS5_mastership\
-                or "Error" in ONOS6_mastership or not ONOS6_mastership\
-                or "Error" in ONOS7_mastership or not ONOS7_mastership:
-                    main.log.error("Error in getting ONOS mastership")
-                    main.log.warn("ONOS1 mastership response: " + repr(ONOS1_mastership))
-                    main.log.warn("ONOS2 mastership response: " + repr(ONOS2_mastership))
-                    main.log.warn("ONOS3 mastership response: " + repr(ONOS3_mastership))
-                    main.log.warn("ONOS4 mastership response: " + repr(ONOS4_mastership))
-                    main.log.warn("ONOS5 mastership response: " + repr(ONOS5_mastership))
-                    main.log.warn("ONOS6 mastership response: " + repr(ONOS6_mastership))
-                    main.log.warn("ONOS7 mastership response: " + repr(ONOS7_mastership))
-                    consistent_mastership = main.FALSE
-        elif ONOS1_mastership == ONOS2_mastership\
-                and ONOS1_mastership == ONOS3_mastership\
-                and ONOS1_mastership == ONOS4_mastership\
-                and ONOS1_mastership == ONOS5_mastership\
-                and ONOS1_mastership == ONOS6_mastership\
-                and ONOS1_mastership == ONOS7_mastership:
-                    consistent_mastership = main.TRUE
-                    main.log.report("Switch roles are consistent across all ONOS nodes")
+        main.step( "Check if switch roles are consistent across all nodes" )
+        ONOS1Mastership = main.ONOScli1.roles()
+        ONOS2Mastership = main.ONOScli2.roles()
+        ONOS3Mastership = main.ONOScli3.roles()
+        ONOS4Mastership = main.ONOScli4.roles()
+        ONOS5Mastership = main.ONOScli5.roles()
+        ONOS6Mastership = main.ONOScli6.roles()
+        ONOS7Mastership = main.ONOScli7.roles()
+        # print json.dumps( json.loads( ONOS1Mastership ), sort_keys=True,
+        # indent=4, separators=( ',', ': ' ) )
+        if "Error" in ONOS1Mastership or not ONOS1Mastership\
+                or "Error" in ONOS2Mastership or not ONOS2Mastership\
+                or "Error" in ONOS3Mastership or not ONOS3Mastership\
+                or "Error" in ONOS4Mastership or not ONOS4Mastership\
+                or "Error" in ONOS5Mastership or not ONOS5Mastership\
+                or "Error" in ONOS6Mastership or not ONOS6Mastership\
+                or "Error" in ONOS7Mastership or not ONOS7Mastership:
+            main.log.error( "Error in getting ONOS mastership" )
+            main.log.warn( "ONOS1 mastership response: " +
+                           repr( ONOS1Mastership ) )
+            main.log.warn( "ONOS2 mastership response: " +
+                           repr( ONOS2Mastership ) )
+            main.log.warn( "ONOS3 mastership response: " +
+                           repr( ONOS3Mastership ) )
+            main.log.warn( "ONOS4 mastership response: " +
+                           repr( ONOS4Mastership ) )
+            main.log.warn( "ONOS5 mastership response: " +
+                           repr( ONOS5Mastership ) )
+            main.log.warn( "ONOS6 mastership response: " +
+                           repr( ONOS6Mastership ) )
+            main.log.warn( "ONOS7 mastership response: " +
+                           repr( ONOS7Mastership ) )
+            consistentMastership = main.FALSE
+        elif ONOS1Mastership == ONOS2Mastership\
+                and ONOS1Mastership == ONOS3Mastership\
+                and ONOS1Mastership == ONOS4Mastership\
+                and ONOS1Mastership == ONOS5Mastership\
+                and ONOS1Mastership == ONOS6Mastership\
+                and ONOS1Mastership == ONOS7Mastership:
+            consistentMastership = main.TRUE
+            main.log.report(
+                "Switch roles are consistent across all ONOS nodes" )
         else:
-            main.log.warn("ONOS1 roles: ", json.dumps(json.loads(ONOS1_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS2 roles: ", json.dumps(json.loads(ONOS2_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS3 roles: ", json.dumps(json.loads(ONOS3_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS4 roles: ", json.dumps(json.loads(ONOS4_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS5 roles: ", json.dumps(json.loads(ONOS5_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS6 roles: ", json.dumps(json.loads(ONOS6_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            main.log.warn("ONOS7 roles: ", json.dumps(json.loads(ONOS7_mastership),
-                sort_keys=True, indent=4, separators=(',', ': ')))
-            consistent_mastership = main.FALSE
-        utilities.assert_equals(expect = main.TRUE,actual=consistent_mastership,
-                onpass="Switch roles are consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of switch roles")
-
+            main.log.warn( "ONOS1 roles: ", json.dumps(
+                json.loads( ONOS1Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS2 roles: ", json.dumps(
+                json.loads( ONOS2Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS3 roles: ", json.dumps(
+                json.loads( ONOS3Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS4 roles: ", json.dumps(
+                json.loads( ONOS4Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS5 roles: ", json.dumps(
+                json.loads( ONOS5Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS6 roles: ", json.dumps(
+                json.loads( ONOS6Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            main.log.warn( "ONOS7 roles: ", json.dumps(
+                json.loads( ONOS7Mastership ), sort_keys=True, indent=4,
+                separators=( ',', ': ' ) ) )
+            consistentMastership = main.FALSE
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=consistentMastership,
+            onpass="Switch roles are consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of switch roles" )
 
         description2 = "Compare switch roles from before failure"
-        main.step(description2)
+        main.step( description2 )
 
-        current_json = json.loads(ONOS1_mastership)
-        old_json = json.loads(mastership_state)
-        mastership_check = main.TRUE
-        for i in range(1,29):
-            switchDPID = str(main.Mininet1.getSwitchDPID(switch="s"+str(i)))
+        currentJson = json.loads( ONOS1Mastership )
+        oldJson = json.loads( mastershipState )
+        mastershipCheck = main.TRUE
+        for i in range( 1, 29 ):
+            switchDPID = str(
+                main.Mininet1.getSwitchDPID(
+                    switch="s" +
+                    str( i ) ) )
 
-            current = [switch['master'] for switch in current_json if switchDPID in switch['id']]
-            old = [switch['master'] for switch in old_json if switchDPID in switch['id']]
+            current = [ switch[ 'master' ] for switch in currentJson
+                        if switchDPID in switch[ 'id' ] ]
+            old = [ switch[ 'master' ] for switch in oldJson
+                    if switchDPID in switch[ 'id' ] ]
             if current == old:
-                mastership_check = mastership_check and main.TRUE
+                mastershipCheck = mastershipCheck and main.TRUE
             else:
-                main.log.warn("Mastership of switch %s changed" % switchDPID)
-                mastership_check = main.FALSE
-        if mastership_check == main.TRUE:
-            main.log.report("Mastership of Switches was not changed")
-        utilities.assert_equals(expect=main.TRUE,actual=mastership_check,
-                onpass="Mastership of Switches was not changed",
-                onfail="Mastership of some switches changed")
-        mastership_check = mastership_check and consistent_mastership
+                main.log.warn( "Mastership of switch %s changed" % switchDPID )
+                mastershipCheck = main.FALSE
+        if mastershipCheck == main.TRUE:
+            main.log.report( "Mastership of Switches was not changed" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=mastershipCheck,
+            onpass="Mastership of Switches was not changed",
+            onfail="Mastership of some switches changed" )
+        mastershipCheck = mastershipCheck and consistentMastership
 
-
-
-        main.step("Get the intents and compare across all nodes")
-        ONOS1_intents = main.ONOScli1.intents( json_format=True )
-        ONOS2_intents = main.ONOScli2.intents( json_format=True )
-        ONOS3_intents = main.ONOScli3.intents( json_format=True )
-        ONOS4_intents = main.ONOScli4.intents( json_format=True )
-        ONOS5_intents = main.ONOScli5.intents( json_format=True )
-        ONOS6_intents = main.ONOScli6.intents( json_format=True )
-        ONOS7_intents = main.ONOScli7.intents( json_format=True )
-        intent_check = main.FALSE
-        if "Error" in ONOS1_intents or not ONOS1_intents\
-                or "Error" in ONOS2_intents or not ONOS2_intents\
-                or "Error" in ONOS3_intents or not ONOS3_intents\
-                or "Error" in ONOS4_intents or not ONOS4_intents\
-                or "Error" in ONOS5_intents or not ONOS5_intents\
-                or "Error" in ONOS6_intents or not ONOS6_intents\
-                or "Error" in ONOS7_intents or not ONOS7_intents:
-                    main.log.report("Error in getting ONOS intents")
-                    main.log.warn("ONOS1 intents response: " + repr(ONOS1_intents))
-                    main.log.warn("ONOS2 intents response: " + repr(ONOS2_intents))
-                    main.log.warn("ONOS3 intents response: " + repr(ONOS3_intents))
-                    main.log.warn("ONOS4 intents response: " + repr(ONOS4_intents))
-                    main.log.warn("ONOS5 intents response: " + repr(ONOS5_intents))
-                    main.log.warn("ONOS6 intents response: " + repr(ONOS6_intents))
-                    main.log.warn("ONOS7 intents response: " + repr(ONOS7_intents))
-        elif ONOS1_intents == ONOS2_intents\
-                and ONOS1_intents == ONOS3_intents\
-                and ONOS1_intents == ONOS4_intents\
-                and ONOS1_intents == ONOS5_intents\
-                and ONOS1_intents == ONOS6_intents\
-                and ONOS1_intents == ONOS7_intents:
-                    intent_check = main.TRUE
-                    main.log.report("Intents are consistent across all ONOS nodes")
+        main.step( "Get the intents and compare across all nodes" )
+        ONOS1Intents = main.ONOScli1.intents( jsonFormat=True )
+        ONOS2Intents = main.ONOScli2.intents( jsonFormat=True )
+        ONOS3Intents = main.ONOScli3.intents( jsonFormat=True )
+        ONOS4Intents = main.ONOScli4.intents( jsonFormat=True )
+        ONOS5Intents = main.ONOScli5.intents( jsonFormat=True )
+        ONOS6Intents = main.ONOScli6.intents( jsonFormat=True )
+        ONOS7Intents = main.ONOScli7.intents( jsonFormat=True )
+        intentCheck = main.FALSE
+        if "Error" in ONOS1Intents or not ONOS1Intents\
+                or "Error" in ONOS2Intents or not ONOS2Intents\
+                or "Error" in ONOS3Intents or not ONOS3Intents\
+                or "Error" in ONOS4Intents or not ONOS4Intents\
+                or "Error" in ONOS5Intents or not ONOS5Intents\
+                or "Error" in ONOS6Intents or not ONOS6Intents\
+                or "Error" in ONOS7Intents or not ONOS7Intents:
+            main.log.report( "Error in getting ONOS intents" )
+            main.log.warn( "ONOS1 intents response: " + repr( ONOS1Intents ) )
+            main.log.warn( "ONOS2 intents response: " + repr( ONOS2Intents ) )
+            main.log.warn( "ONOS3 intents response: " + repr( ONOS3Intents ) )
+            main.log.warn( "ONOS4 intents response: " + repr( ONOS4Intents ) )
+            main.log.warn( "ONOS5 intents response: " + repr( ONOS5Intents ) )
+            main.log.warn( "ONOS6 intents response: " + repr( ONOS6Intents ) )
+            main.log.warn( "ONOS7 intents response: " + repr( ONOS7Intents ) )
+        elif ONOS1Intents == ONOS2Intents\
+                and ONOS1Intents == ONOS3Intents\
+                and ONOS1Intents == ONOS4Intents\
+                and ONOS1Intents == ONOS5Intents\
+                and ONOS1Intents == ONOS6Intents\
+                and ONOS1Intents == ONOS7Intents:
+            intentCheck = main.TRUE
+            main.log.report( "Intents are consistent across all ONOS nodes" )
         else:
-            main.log.warn("ONOS1 intents: ") 
-            print json.dumps(json.loads(ONOS1_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-            main.log.warn("ONOS2 intents: ")
-            print json.dumps(json.loads(ONOS2_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-            main.log.warn("ONOS3 intents: ")
-            print json.dumps(json.loads(ONOS3_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-            main.log.warn("ONOS4 intents: ")
-            print json.dumps(json.loads(ONOS4_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-            main.log.warn("ONOS5 intents: ")
-            print json.dumps(json.loads(ONOS5_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-            main.log.warn("ONOS6 intents: ")
-            print json.dumps(json.loads(ONOS6_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-            main.log.warn("ONOS7 intents: ")
-            print json.dumps(json.loads(ONOS7_intents),
-                sort_keys=True, indent=4, separators=(',', ': '))
-        utilities.assert_equals(expect = main.TRUE,actual=intent_check,
-                onpass="Intents are consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of intents")
+            main.log.warn( "ONOS1 intents: " )
+            print json.dumps( json.loads( ONOS1Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+            main.log.warn( "ONOS2 intents: " )
+            print json.dumps( json.loads( ONOS2Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+            main.log.warn( "ONOS3 intents: " )
+            print json.dumps( json.loads( ONOS3Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+            main.log.warn( "ONOS4 intents: " )
+            print json.dumps( json.loads( ONOS4Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+            main.log.warn( "ONOS5 intents: " )
+            print json.dumps( json.loads( ONOS5Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+            main.log.warn( "ONOS6 intents: " )
+            print json.dumps( json.loads( ONOS6Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+            main.log.warn( "ONOS7 intents: " )
+            print json.dumps( json.loads( ONOS7Intents ), sort_keys=True,
+                              indent=4, separators=( ',', ': ' ) )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=intentCheck,
+            onpass="Intents are consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of intents" )
 
-        #NOTE: Hazelcast has no durability, so intents are lost
-        main.step("Compare current intents with intents before the failure")
-        #NOTE: this requires case 5 to pass for intent_state to be set.
+        # NOTE: Hazelcast has no durability, so intents are lost across system
+        # restarts
+        main.step( "Compare current intents with intents before the failure" )
+        # NOTE: this requires case 5 to pass for intentState to be set.
         #      maybe we should stop the test if that fails?
-        if intent_state == ONOS1_intents:
-            same_intents = main.TRUE
-            main.log.report("Intents are consistent with before failure")
-        #TODO: possibly the states have changed? we may need to figure out what the aceptable states are
+        if intentState == ONOS1Intents:
+            sameIntents = main.TRUE
+            main.log.report( "Intents are consistent with before failure" )
+        # TODO: possibly the states have changed? we may need to figure out
+        # what the aceptable states are
         else:
-            same_intents = main.FALSE
-        utilities.assert_equals(expect = main.TRUE,actual=same_intents,
-                onpass="Intents are consistent with before failure",
-                onfail="The Intents changed during failure")
-        intent_check = intent_check and same_intents
+            try:
+                main.log.warn( "ONOS1 intents: " )
+                print json.dumps( json.loads( ONOS1Intents ),
+                                  sort_keys=True, indent=4,
+                                  separators=( ',', ': ' ) )
+            except:
+                pass
+            sameIntents = main.FALSE
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=sameIntents,
+            onpass="Intents are consistent with before failure",
+            onfail="The Intents changed during failure" )
+        intentCheck = intentCheck and sameIntents
 
+        main.step( "Get the OF Table entries and compare to before " +
+                   "component failure" )
+        FlowTables = main.TRUE
+        flows2 = []
+        for i in range( 28 ):
+            main.log.info( "Checking flow table on s" + str( i + 1 ) )
+            tmpFlows = main.Mininet2.getFlowTable( 1.3, "s" + str( i + 1 ) )
+            flows2.append( tmpFlows )
+            tempResult = main.Mininet2.flowComp(
+                flow1=flows[ i ],
+                flow2=tmpFlows )
+            FlowTables = FlowTables and tempResult
+            if FlowTables == main.FALSE:
+                main.log.info( "Differences in flow table for switch: s" +
+                               str( i + 1 ) )
+        if FlowTables == main.TRUE:
+            main.log.report( "No changes were found in the flow tables" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=FlowTables,
+            onpass="No changes were found in the flow tables",
+            onfail="Changes were found in the flow tables" )
 
-
-        main.step("Get the OF Table entries and compare to before component failure")
-        Flow_Tables = main.TRUE
-        flows2=[]
-        for i in range(28):
-            main.log.info("Checking flow table on s" + str(i+1))
-            tmp_flows = main.Mininet2.get_flowTable(1.3, "s"+str(i+1))
-            flows2.append(tmp_flows)
-            temp_result = main.Mininet2.flow_comp(flow1=flows[i],flow2=tmp_flows)
-            Flow_Tables = Flow_Tables and temp_result
-            if Flow_Tables == main.FALSE:
-                main.log.info("Differences in flow table for switch: "+str(i+1))
-        if Flow_Tables == main.TRUE:
-            main.log.report("No changes were found in the flow tables")
-        utilities.assert_equals(expect=main.TRUE,actual=Flow_Tables,
-                onpass="No changes were found in the flow tables",
-                onfail="Changes were found in the flow tables")
-
-        main.step("Check the continuous pings to ensure that no packets were dropped during component failure")
-        #FIXME: This check is always failing. Investigate cause
-        #NOTE:  this may be something to do with file permsissions
+        main.step( "Check the continuous pings to ensure that no packets " +
+                   "were dropped during component failure" )
+        # FIXME: This check is always failing. Investigate cause
+        # NOTE:  this may be something to do with file permsissions
         #       or slight change in format
-        main.Mininet2.pingKill(main.params['TESTONUSER'], main.params['TESTONIP'])
-        Loss_In_Pings = main.FALSE 
-        #NOTE: checkForLoss returns main.FALSE with 0% packet loss
-        for i in range(8,18):
-            main.log.info("Checking for a loss in pings along flow from s" + str(i))
-            Loss_In_Pings = main.Mininet2.checkForLoss("/tmp/ping.h"+str(i)) or Loss_In_Pings
-        if Loss_In_Pings == main.TRUE:
-            main.log.info("Loss in ping detected")
-        elif Loss_In_Pings == main.ERROR:
-            main.log.info("There are multiple mininet process running")
-        elif Loss_In_Pings == main.FALSE:
-            main.log.info("No Loss in the pings")
-            main.log.report("No loss of dataplane connectivity")
-        utilities.assert_equals(expect=main.FALSE,actual=Loss_In_Pings,
-                onpass="No Loss of connectivity",
-                onfail="Loss of dataplane connectivity detected")
+        main.Mininet2.pingKill(
+            main.params[ 'TESTONUSER' ],
+            main.params[ 'TESTONIP' ] )
+        LossInPings = main.FALSE
+        # NOTE: checkForLoss returns main.FALSE with 0% packet loss
+        for i in range( 8, 18 ):
+            main.log.info(
+                "Checking for a loss in pings along flow from s" +
+                str( i ) )
+            LossInPings = main.Mininet2.checkForLoss(
+                "/tmp/ping.h" +
+                str( i ) ) or LossInPings
+        if LossInPings == main.TRUE:
+            main.log.info( "Loss in ping detected" )
+        elif LossInPings == main.ERROR:
+            main.log.info( "There are multiple mininet process running" )
+        elif LossInPings == main.FALSE:
+            main.log.info( "No Loss in the pings" )
+            main.log.report( "No loss of dataplane connectivity" )
+        utilities.assert_equals(
+            expect=main.FALSE,
+            actual=LossInPings,
+            onpass="No Loss of connectivity",
+            onfail="Loss of dataplane connectivity detected" )
 
-        #Test of LeadershipElection
-        #NOTE: this only works for the sanity test. In case of failures, leader will likely change
-        leader = ONOS1_ip
-        leader_result = main.TRUE
-        for controller in range(1,num_controllers+1):
-            node = getattr( main, ( 'ONOScli' + str( controller ) ) )#loop through ONOScli handlers
-            leaderN = node.election_test_leader()
-            #verify leader is ONOS1
+        # Test of LeadershipElection
+        # NOTE: this only works for the sanity test. In case of failures,
+        # leader will likely change
+        leader = ONOS1Ip
+        leaderResult = main.TRUE
+        for controller in range( 1, numControllers + 1 ):
+            # loop through ONOScli handlers
+            node = getattr( main, ( 'ONOScli' + str( controller ) ) )
+            leaderN = node.electionTestLeader()
+            # verify leader is ONOS1
             if leaderN == leader:
-                #all is well
-                #NOTE: In failure scenario, this could be a new node, maybe check != ONOS1
+                # all is well
+                # NOTE: In failure scenario, this could be a new node, maybe
+                # check != ONOS1
                 pass
             elif leaderN == main.FALSE:
-                #error in  response
-                main.log.report("Something is wrong with election_test_leader function, check the error logs")
-                leader_result = main.FALSE
+                # error in  response
+                main.log.report( "Something is wrong with " +
+                                 "electionTestLeader function," +
+                                 " check the error logs" )
+                leaderResult = main.FALSE
             elif leader != leaderN:
-                leader_result = main.FALSE
-                main.log.report("ONOS" + str(controller) + " sees "+str(leaderN) +
-                        " as the leader of the election app. Leader should be "+str(leader) )
-        if leader_result:
-            main.log.report("Leadership election tests passed(consistent view of leader across listeners and a new leader was re-elected if applicable)")
-        utilities.assert_equals(expect=main.TRUE, actual=leader_result,
-                onpass="Leadership election passed",
-                onfail="Something went wrong with Leadership election")
+                leaderResult = main.FALSE
+                main.log.report( "ONOS" + str( controller ) + " sees " +
+                                 str( leaderN ) +
+                                 " as the leader of the election app. " +
+                                 "Leader should be " + str( leader ) )
+        if leaderResult:
+            main.log.report( "Leadership election tests passed( consistent " +
+                             "view of leader across listeners and a new " +
+                             "leader was re-elected if applicable )" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=leaderResult,
+            onpass="Leadership election passed",
+            onfail="Something went wrong with Leadership election" )
 
-
-        result = mastership_check and intent_check and Flow_Tables and (not Loss_In_Pings) and roles_not_null\
-                and leader_result
-        result = int(result)
+        result = mastershipCheck and intentCheck and FlowTables and\
+            ( not LossInPings ) and rolesNotNull and leaderResult
+        result = int( result )
         if result == main.TRUE:
-            main.log.report("Constant State Tests Passed")
-        utilities.assert_equals(expect=main.TRUE,actual=result,
-                onpass="Constant State Tests Passed",
-                onfail="Constant state tests failed")
+            main.log.report( "Constant State Tests Passed" )
+        utilities.assert_equals( expect=main.TRUE, actual=result,
+                                onpass="Constant State Tests Passed",
+                                onfail="Constant state tests failed" )
 
-    def CASE8 (self,main):
-        '''
+    def CASE8( self, main ):
+        """
         Compare topo
-        '''
+        """
         import sys
-        sys.path.append("/home/admin/sts") # Trying to remove some dependancies, #FIXME add this path to params
-        from sts.topology.teston_topology import TestONTopology # assumes that sts is already in you PYTHONPATH
+        # FIXME add this path to params
+        sys.path.append( "/home/admin/sts" )
+        # assumes that sts is already in you PYTHONPATH
+        from sts.topology.teston_topology import TestONTopology
         import json
         import time
 
-        description ="Compare ONOS Topology view to Mininet topology"
-        main.case(description)
-        main.log.report(description)
-        main.step("Create TestONTopology object")
+        description = "Compare ONOS Topology view to Mininet topology"
+        main.case( description )
+        main.log.report( description )
+        main.step( "Create TestONTopology object" )
         ctrls = []
         count = 1
         while True:
             temp = ()
-            if ('ip' + str(count)) in main.params['CTRL']:
-                temp = temp + (getattr(main,('ONOS' + str(count))),)
-                temp = temp + ("ONOS"+str(count),)
-                temp = temp + (main.params['CTRL']['ip'+str(count)],)
-                temp = temp + (eval(main.params['CTRL']['port'+str(count)]),)
-                ctrls.append(temp)
+            if ( 'ip' + str( count ) ) in main.params[ 'CTRL' ]:
+                temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
+                temp = temp + ( "ONOS" + str( count ), )
+                temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
+                temp = temp + \
+                    ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
+                ctrls.append( temp )
                 count = count + 1
             else:
                 break
-        MNTopo = TestONTopology(main.Mininet1, ctrls) # can also add Intent API info for intent operations
+        MNTopo = TestONTopology(
+            main.Mininet1,
+            ctrls )  # can also add Intent API info for intent operations
 
-        main.step("Comparing ONOS topology to MN")
-        devices_results = main.TRUE
-        ports_results = main.TRUE
-        links_results = main.TRUE
-        topo_result = main.FALSE
+        main.step( "Comparing ONOS topology to MN" )
+        devicesResults = main.TRUE
+        portsResults = main.TRUE
+        linksResults = main.TRUE
+        topoResult = main.FALSE
         elapsed = 0
         count = 0
-        main.step("Collecting topology information from ONOS")
-        start_time = time.time()
-        while topo_result == main.FALSE and elapsed < 60:
+        main.step( "Collecting topology information from ONOS" )
+        startTime = time.time()
+        while topoResult == main.FALSE and elapsed < 60:
             count = count + 1
             if count > 1:
-                MNTopo = TestONTopology(main.Mininet1, ctrls) # can also add Intent API info for intent operations
-            cli_start = time.time()
+                # TODO: Depricate STS usage
+                MNTopo = TestONTopology(
+                    main.Mininet1,
+                    ctrls )
+            cliStart = time.time()
             devices = []
             devices.append( main.ONOScli1.devices() )
             devices.append( main.ONOScli2.devices() )
@@ -1291,13 +1444,21 @@
             devices.append( main.ONOScli6.devices() )
             devices.append( main.ONOScli7.devices() )
             hosts = []
-            hosts.append( main.ONOScli1.hosts() )
-            hosts.append( main.ONOScli2.hosts() )
-            hosts.append( main.ONOScli3.hosts() )
-            hosts.append( main.ONOScli4.hosts() )
-            hosts.append( main.ONOScli5.hosts() )
-            hosts.append( main.ONOScli6.hosts() )
-            hosts.append( main.ONOScli7.hosts() )
+            hosts.append( json.loads( main.ONOScli1.hosts() ) )
+            hosts.append( json.loads( main.ONOScli2.hosts() ) )
+            hosts.append( json.loads( main.ONOScli3.hosts() ) )
+            hosts.append( json.loads( main.ONOScli4.hosts() ) )
+            hosts.append( json.loads( main.ONOScli5.hosts() ) )
+            hosts.append( json.loads( main.ONOScli6.hosts() ) )
+            hosts.append( json.loads( main.ONOScli7.hosts() ) )
+            for controller in range( 0, len( hosts ) ):
+                controllerStr = str( controller + 1 )
+                for host in hosts[ controller ]:
+                    host
+                    if host[ 'ips' ] == []:
+                        main.log.error(
+                            "DEBUG:Error with host ips on controller" +
+                            controllerStr + ": " + str( host ) )
             ports = []
             ports.append( main.ONOScli1.ports() )
             ports.append( main.ONOScli2.ports() )
@@ -1322,491 +1483,544 @@
             clusters.append( main.ONOScli5.clusters() )
             clusters.append( main.ONOScli6.clusters() )
             clusters.append( main.ONOScli7.clusters() )
-            paths = []
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli1.topology() )
-            paths.append( temp_topo.get('paths', False) )
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli2.topology() )
-            paths.append( temp_topo.get('paths', False) )
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli3.topology() )
-            paths.append( temp_topo.get('paths', False) )
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli4.topology() )
-            paths.append( temp_topo.get('paths', False) )
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli5.topology() )
-            paths.append( temp_topo.get('paths', False) )
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli6.topology() )
-            paths.append( temp_topo.get('paths', False) )
-            temp_topo = main.ONOSbench.get_topology( main.ONOScli7.topology() )
-            paths.append( temp_topo.get('paths', False) )
 
+            elapsed = time.time() - startTime
+            cliTime = time.time() - cliStart
+            print "CLI time: " + str( cliTime )
 
-            elapsed = time.time() - start_time
-            cli_time = time.time() - cli_start
-            print "CLI time: " + str(cli_time)
+            try: 
+                for controller in range( numControllers ):
+                    controllerStr = str( controller + 1 )
+                    if devices[ controller ] or "Error" not in devices[
+                            controller ]:
+                        currentDevicesResult = main.Mininet1.compareSwitches(
+                            MNTopo,
+                            json.loads(
+                                devices[ 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" )
 
-            for controller in range(num_controllers):
-                if devices[controller] or not "Error" in devices[controller]:
-                    current_devices_result =  main.Mininet1.compare_switches(MNTopo, json.loads(devices[controller]))
-                else:
-                    current_devices_result = main.FALSE
-                utilities.assert_equals(expect=main.TRUE, actual=current_devices_result,
-                        onpass="ONOS"+str(int(controller+1))+" Switches view is correct",
-                        onfail="ONOS"+str(int(controller+1))+" Switches view is incorrect")
+                    if ports[ controller ] or "Error" not in ports[ controller ]:
+                        currentPortsResult = main.Mininet1.comparePorts(
+                            MNTopo,
+                            json.loads(
+                                ports[ controller ] ) )
+                    else:
+                        currentPortsResult = main.FALSE
+                    utilities.assert_equals( expect=main.TRUE,
+                                            actual=currentPortsResult,
+                                            onpass="ONOS" + controllerStr +
+                                            " ports view is correct",
+                                            onfail="ONOS" + controllerStr +
+                                            " ports view is incorrect" )
 
-                if ports[controller] or not "Error" in ports[controller]:
-                    current_ports_result =  main.Mininet1.compare_ports(MNTopo, json.loads(ports[controller]))
-                else:
-                    current_ports_result = main.FALSE
-                utilities.assert_equals(expect=main.TRUE, actual=current_ports_result,
-                        onpass="ONOS"+str(int(controller+1))+" ports view is correct",
-                        onfail="ONOS"+str(int(controller+1))+" ports view is incorrect")
+                    if links[ controller ] or "Error" not in links[ controller ]:
+                        currentLinksResult = main.Mininet1.compareLinks(
+                            MNTopo,
+                            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" )
+                devicesResults = devicesResults and currentDevicesResult
+                portsResults = portsResults and currentPortsResult
+                linksResults = linksResults and currentLinksResult
 
-                if links[controller] or not "Error" in links[controller]:
-                    current_links_result =  main.Mininet1.compare_links(MNTopo, json.loads(links[controller]))
-                else:
-                    current_links_result = main.FALSE
-                utilities.assert_equals(expect=main.TRUE, actual=current_links_result,
-                        onpass="ONOS"+str(int(controller+1))+" links view is correct",
-                        onfail="ONOS"+str(int(controller+1))+" links view is incorrect")
-            devices_results = devices_results and current_devices_result
-            ports_results = ports_results and current_ports_result
-            links_results = links_results and current_links_result
+                # Compare json objects for hosts and dataplane clusters
 
-            #Compare json objects for hosts, dataplane clusters and paths
+                # hosts
+                consistentHostsResult = main.TRUE
+                for controller in range( len( hosts ) ):
+                    controllerStr = str( controller + 1 )
+                    if "Error" not in hosts[ controller ]:
+                        if hosts[ controller ] == hosts[ 0 ]:
+                            continue
+                        else:  # hosts not consistent
+                            main.log.report( "hosts from ONOS" + controllerStr +
+                                             " is inconsistent with ONOS1" )
+                            main.log.warn( repr( hosts[ controller ] ) )
+                            consistentHostsResult = main.FALSE
 
-            #hosts
-            consistent_hosts_result = main.TRUE
-            for controller in range( len( hosts ) ):
-                if not "Error" in hosts[controller]:
-                    if hosts[controller] == hosts[0]:
-                        continue
-                    else:#hosts not consistent
-                        main.log.report("hosts from ONOS" + str(controller + 1) + " is inconsistent with ONOS1")
-                        main.log.warn( repr( hosts[controller] ) )
-                        consistent_hosts_result = main.FALSE
-
-                else:
-                    main.log.report("Error in getting ONOS hosts from ONOS" + str(controller + 1) )
-                    consistent_hosts_result = main.FALSE
-                    main.log.warn("ONOS" + str(controller + 1) + " hosts response: " + repr(hosts[controller]) )
-            utilities.assert_equals(expect = main.TRUE,actual=consistent_hosts_result,
+                    else:
+                        main.log.report( "Error in getting ONOS hosts from ONOS" +
+                                         controllerStr )
+                        consistentHostsResult = main.FALSE
+                        main.log.warn( "ONOS" + controllerStr +
+                                       " hosts response: " +
+                                       repr( hosts[ controller ] ) )
+                utilities.assert_equals(
+                    expect=main.TRUE,
+                    actual=consistentHostsResult,
                     onpass="Hosts view is consistent across all ONOS nodes",
-                    onfail="ONOS nodes have different views of hosts")
+                    onfail="ONOS nodes have different views of hosts" )
 
-            #Strongly connected clusters of devices
-            consistent_clusters_result = main.TRUE
-            for controller in range( len( clusters ) ):
-                if not "Error" in clusters[controller]:
-                    if clusters[controller] == clusters[0]:
-                        continue
-                    else:#clusters not consistent
-                        main.log.report("clusters from ONOS" + str(controller + 1) + " is inconsistent with ONOS1")
-                        consistent_clusters_result = main.FALSE
+                # Strongly connected clusters of devices
+                consistentClustersResult = main.TRUE
+                for controller in range( len( clusters ) ):
+                    controllerStr = str( controller + 1 )
+                    if "Error" not in clusters[ controller ]:
+                        if clusters[ controller ] == clusters[ 0 ]:
+                            continue
+                        else:  # clusters not consistent
+                            main.log.report( "clusters from ONOS" +
+                                             controllerStr +
+                                             " is inconsistent with ONOS1" )
+                            consistentClustersResult = main.FALSE
 
-                else:
-                    main.log.report("Error in getting dataplane clusters from ONOS" + str(controller + 1) )
-                    consistent_clusters_result = main.FALSE
-                    main.log.warn("ONOS" + str(controller + 1) + " clusters response: " + repr(clusters[controller]) )
-            utilities.assert_equals(expect = main.TRUE,actual=consistent_clusters_result,
+                    else:
+                        main.log.report( "Error in getting dataplane clusters " +
+                                         "from ONOS" + controllerStr )
+                        consistentClustersResult = main.FALSE
+                        main.log.warn( "ONOS" + controllerStr +
+                                       " clusters response: " +
+                                       repr( clusters[ controller ] ) )
+                utilities.assert_equals(
+                    expect=main.TRUE,
+                    actual=consistentClustersResult,
                     onpass="Clusters view is consistent across all ONOS nodes",
-                    onfail="ONOS nodes have different views of clusters")
-            num_clusters =  len(json.loads(clusters[0])) #there should always only be one cluster
-            utilities.assert_equals(expect = 1, actual = num_clusters,
+                    onfail="ONOS nodes have different views of clusters" )
+                # there should always only be one cluster
+                numClusters = len( json.loads( clusters[ 0 ] ) )
+                utilities.assert_equals(
+                    expect=1,
+                    actual=numClusters,
                     onpass="ONOS shows 1 SCC",
-                    onfail="ONOS shows "+str(num_clusters) +" SCCs")
+                    onfail="ONOS shows " +
+                    str( numClusters ) +
+                    " SCCs" )
+
+                topoResult = ( devicesResults and portsResults and linksResults
+                               and consistentHostsResult
+                               and consistentClustersResult )
+
+                topoResult = topoResult and int( count <= 2 )
+                note = "note it takes about " + str( int( cliTime ) ) + \
+                    " seconds for the test to make all the cli calls to fetch " +\
+                    "the topology from each ONOS instance"
+                main.log.report(
+                    "Very crass estimate for topology discovery/convergence( " +
+                    str( note ) + " ): " + str( elapsed ) + " seconds, " +
+                    str( count ) + " tries" )
+                utilities.assert_equals( expect=main.TRUE, actual=topoResult,
+                                        onpass="Topology Check Test successful",
+                                        onfail="Topology Check Test NOT successful" )
+                if topoResult == main.TRUE:
+                    main.log.report( "ONOS topology view matches Mininet topology" )
+            except:
+                main.log.info( self.name + " ::::::" )
+                main.log.error( traceback.print_exc() )
+                main.log.info( self.name + " ::::::" )
 
 
-            #paths
-            consistent_paths_result = main.TRUE
-            for controller in range( len( paths ) ):
-                if not "Error" in paths[controller]:
-                    if paths[controller] == paths[0]:
-                        continue
-                    else:#paths not consistent
-                        main.log.report("paths from ONOS" + str(controller + 1) + " is inconsistent with ONOS1")
-                        consistent_paths_result = main.FALSE
-
-                else:
-                    main.log.report("Error in getting paths from ONOS" + str(controller + 1) )
-                    consistent_paths_result = main.FALSE
-                    main.log.warn("ONOS" + str(controller + 1) + " paths response: " + repr(paths[controller]) )
-            utilities.assert_equals(expect = main.TRUE,actual=consistent_paths_result,
-                    onpass="Paths count is consistent across all ONOS nodes",
-                    onfail="ONOS nodes have different counts of paths")
-
-
-            topo_result = devices_results and ports_results and links_results\
-                    and consistent_hosts_result and consistent_clusters_result and consistent_paths_result
-
-        topo_result = topo_result and int(count <= 2)
-        note = "note it takes about "+str( int(cli_time) )+" seconds for the test to make all the cli calls to fetch the topology from each ONOS instance"
-        main.log.report("Very crass estimate for topology discovery/convergence("+ str(note) + "): " +\
-                str(elapsed) + " seconds, " + str(count) +" tries" )
-        utilities.assert_equals(expect=main.TRUE, actual=topo_result,
-                onpass="Topology Check Test successful",
-                onfail="Topology Check Test NOT successful")
-        if topo_result == main.TRUE:
-            main.log.report("ONOS topology view matches Mininet topology")
-
-
-    def CASE9 (self,main):
-        '''
+    def CASE9( self, main ):
+        """
         Link s3-s28 down
-        '''
-        #NOTE: You should probably run a topology check after this
+        """
+        import time
+        # NOTE: You should probably run a topology check after this
 
-        link_sleep = float(main.params['timers']['LinkDiscovery'])
+        linkSleep = float( main.params[ 'timers' ][ 'LinkDiscovery' ] )
 
-        description = "Turn off a link to ensure that Link Discovery is working properly"
-        main.log.report(description)
-        main.case(description)
+        description = "Turn off a link to ensure that Link Discovery " +\
+            "is working properly"
+        main.log.report( description )
+        main.case( description )
 
+        main.step( "Kill Link between s3 and s28" )
+        LinkDown = main.Mininet1.link( END1="s3", END2="s28", OPTION="down" )
+        main.log.info(
+            "Waiting " +
+            str( linkSleep ) +
+            " seconds for link down to be discovered" )
+        time.sleep( linkSleep )
+        utilities.assert_equals( expect=main.TRUE, actual=LinkDown,
+                                onpass="Link down succesful",
+                                onfail="Failed to bring link down" )
+        # TODO do some sort of check here
 
-        main.step("Kill Link between s3 and s28")
-        Link_Down = main.Mininet1.link(END1="s3",END2="s28",OPTION="down")
-        main.log.info("Waiting " + str(link_sleep) + " seconds for link down to be discovered")
-        time.sleep(link_sleep)
-        utilities.assert_equals(expect=main.TRUE,actual=Link_Down,
-                onpass="Link down succesful",
-                onfail="Failed to bring link down")
-        #TODO do some sort of check here
-
-    def CASE10 (self,main):
-        '''
+    def CASE10( self, main ):
+        """
         Link s3-s28 up
-        '''
-        #NOTE: You should probably run a topology check after this
+        """
+        import time
+        # NOTE: You should probably run a topology check after this
 
-        link_sleep = float(main.params['timers']['LinkDiscovery'])
+        linkSleep = float( main.params[ 'timers' ][ 'LinkDiscovery' ] )
 
-        description = "Restore a link to ensure that Link Discovery is working properly"
-        main.log.report(description)
-        main.case(description)
+        description = "Restore a link to ensure that Link Discovery is " + \
+            "working properly"
+        main.log.report( description )
+        main.case( description )
 
-        main.step("Bring link between s3 and s28 back up")
-        Link_Up = main.Mininet1.link(END1="s3",END2="s28",OPTION="up")
-        main.log.info("Waiting " + str(link_sleep) + " seconds for link up to be discovered")
-        time.sleep(link_sleep)
-        utilities.assert_equals(expect=main.TRUE,actual=Link_Up,
-                onpass="Link up succesful",
-                onfail="Failed to bring link up")
-        #TODO do some sort of check here
+        main.step( "Bring link between s3 and s28 back up" )
+        LinkUp = main.Mininet1.link( END1="s3", END2="s28", OPTION="up" )
+        main.log.info(
+            "Waiting " +
+            str( linkSleep ) +
+            " seconds for link up to be discovered" )
+        time.sleep( linkSleep )
+        utilities.assert_equals( expect=main.TRUE, actual=LinkUp,
+                                onpass="Link up succesful",
+                                onfail="Failed to bring link up" )
+        # TODO do some sort of check here
 
-
-    def CASE11 (self, main) :
-        '''
+    def CASE11( self, main ):
+        """
         Switch Down
-        '''
-        #NOTE: You should probably run a topology check after this
+        """
+        # NOTE: You should probably run a topology check after this
         import time
 
-        switch_sleep = float(main.params['timers']['SwitchDiscovery'])
+        switchSleep = float( main.params[ 'timers' ][ 'SwitchDiscovery' ] )
 
         description = "Killing a switch to ensure it is discovered correctly"
-        main.log.report(description)
-        main.case(description)
+        main.log.report( description )
+        main.case( description )
+        switch = main.params[ 'kill' ][ 'switch' ]
+        switchDPID = main.params[ 'kill' ][ 'dpid' ]
 
-        #TODO: Make this switch parameterizable
-        main.step("Kill s28 ")
-        main.log.report("Deleting s28")
-        main.Mininet1.del_switch("s28")
-        main.log.info("Waiting " + str(switch_sleep) + " seconds for switch down to be discovered")
-        time.sleep(switch_sleep)
-        device = main.ONOScli1.get_device(dpid="0028")
-        #Peek at the deleted switch
-        main.log.warn( str(device) )
+        # TODO: Make this switch parameterizable
+        main.step( "Kill " + switch )
+        main.log.report( "Deleting " + switch )
+        main.Mininet1.delSwitch( switch )
+        main.log.info( "Waiting " + str( switchSleep ) +
+                       " seconds for switch down to be discovered" )
+        time.sleep( switchSleep )
+        device = main.ONOScli1.getDevice( dpid=switchDPID )
+        # Peek at the deleted switch
+        main.log.warn( str( device ) )
         result = main.FALSE
-        if device and device['available'] == False:
+        if device and device[ 'available' ] is False:
             result = main.TRUE
-        utilities.assert_equals(expect=main.TRUE,actual=result,
-                onpass="Kill switch succesful",
-                onfail="Failed to kill switch?")
+        utilities.assert_equals( expect=main.TRUE, actual=result,
+                                onpass="Kill switch succesful",
+                                onfail="Failed to kill switch?" )
 
-    def CASE12 (self, main) :
-        '''
+    def CASE12( self, main ):
+        """
         Switch Up
-        '''
-        #NOTE: You should probably run a topology check after this
+        """
+        # NOTE: You should probably run a topology check after this
         import time
 
-        switch_sleep = float(main.params['timers']['SwitchDiscovery'])
+        switchSleep = float( main.params[ 'timers' ][ 'SwitchDiscovery' ] )
+        switch = main.params[ 'kill' ][ 'switch' ]
+        switchDPID = main.params[ 'kill' ][ 'dpid' ]
+        links = main.params[ 'kill' ][ 'links' ].split()
         description = "Adding a switch to ensure it is discovered correctly"
-        main.log.report(description)
-        main.case(description)
+        main.log.report( description )
+        main.case( description )
 
-        main.step("Add back s28")
-        main.log.report("Adding back s28")
-        main.Mininet1.add_switch("s28", dpid = '0000000000002800')
-        #TODO: New dpid or same? Ask Thomas?
-        main.Mininet1.add_link('s28', 's3')
-        main.Mininet1.add_link('s28', 's6')
-        main.Mininet1.add_link('s28', 'h28')
-        main.Mininet1.assign_sw_controller(sw="28",count=num_controllers,
-                ip1=ONOS1_ip,port1=ONOS1_port,
-                ip2=ONOS2_ip,port2=ONOS2_port,
-                ip3=ONOS3_ip,port3=ONOS3_port,
-                ip4=ONOS4_ip,port4=ONOS4_port,
-                ip5=ONOS5_ip,port5=ONOS5_port,
-                ip6=ONOS6_ip,port6=ONOS6_port,
-                ip7=ONOS7_ip,port7=ONOS7_port)
-        main.log.info("Waiting " + str(switch_sleep) + " seconds for switch up to be discovered")
-        time.sleep(switch_sleep)
-        device = main.ONOScli1.get_device(dpid="0028")
-        #Peek at the deleted switch
-        main.log.warn( str(device) )
+        main.step( "Add back " + switch )
+        main.log.report( "Adding back " + switch )
+        main.Mininet1.addSwitch( switch, dpid=switchDPID )
+        # TODO: New dpid or same? Ask Thomas?
+        for peer in links:
+            main.Mininet1.addLink( switch, peer )
+        main.Mininet1.assignSwController(
+            sw=switch.split( 's' )[ 1 ],
+            count=numControllers,
+            ip1=ONOS1Ip,
+            port1=ONOS1Port,
+            ip2=ONOS2Ip,
+            port2=ONOS2Port,
+            ip3=ONOS3Ip,
+            port3=ONOS3Port,
+            ip4=ONOS4Ip,
+            port4=ONOS4Port,
+            ip5=ONOS5Ip,
+            port5=ONOS5Port,
+            ip6=ONOS6Ip,
+            port6=ONOS6Port,
+            ip7=ONOS7Ip,
+            port7=ONOS7Port )
+        main.log.info(
+            "Waiting " +
+            str( switchSleep ) +
+            " seconds for switch up to be discovered" )
+        time.sleep( switchSleep )
+        device = main.ONOScli1.getDevice( dpid=switchDPID )
+        # Peek at the deleted switch
+        main.log.warn( str( device ) )
         result = main.FALSE
-        if device and device['available'] == True:
+        if device and device[ 'available' ]:
             result = main.TRUE
-        utilities.assert_equals(expect=main.TRUE,actual=result,
-                onpass="add switch succesful",
-                onfail="Failed to add switch?")
+        utilities.assert_equals( expect=main.TRUE, actual=result,
+                                onpass="add switch succesful",
+                                onfail="Failed to add switch?" )
 
-    def CASE13 (self, main) :
-        '''
+    def CASE13( self, main ):
+        """
         Clean up
-        '''
+        """
         import os
         import time
-        #printing colors to terminal
+        # TODO: make use of this elsewhere
+        ips = []
+        ips.append( ONOS1Ip )
+        ips.append( ONOS2Ip )
+        ips.append( ONOS3Ip )
+        ips.append( ONOS4Ip )
+        ips.append( ONOS5Ip )
+        ips.append( ONOS6Ip )
+        ips.append( ONOS7Ip )
+
+        # printing colors to terminal
         colors = {}
-        colors['cyan']   = '\033[96m'
-        colors['purple'] = '\033[95m'
-        colors['blue']   = '\033[94m'
-        colors['green']  = '\033[92m'
-        colors['yellow'] = '\033[93m'
-        colors['red']    = '\033[91m'
-        colors['end']    = '\033[0m'
+        colors[ 'cyan' ] = '\033[96m'
+        colors[ 'purple' ] = '\033[95m'
+        colors[ 'blue' ] = '\033[94m'
+        colors[ 'green' ] = '\033[92m'
+        colors[ 'yellow' ] = '\033[93m'
+        colors[ 'red' ] = '\033[91m'
+        colors[ 'end' ] = '\033[0m'
         description = "Test Cleanup"
-        main.log.report(description)
-        main.case(description)
-        main.step("Killing tcpdumps")
-        main.Mininet2.stop_tcpdump()
+        main.log.report( description )
+        main.case( description )
+        main.step( "Killing tcpdumps" )
+        main.Mininet2.stopTcpdump()
 
-        main.step("Checking ONOS Logs for errors")
-        print colors['purple'] + "Checking logs for errors on ONOS1:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS1_ip)
-        print colors['purple'] + "Checking logs for errors on ONOS2:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS2_ip)
-        print colors['purple'] + "Checking logs for errors on ONOS3:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS3_ip)
-        print colors['purple'] + "Checking logs for errors on ONOS4:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS4_ip)
-        print colors['purple'] + "Checking logs for errors on ONOS5:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS5_ip)
-        print colors['purple'] + "Checking logs for errors on ONOS6:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS6_ip)
-        print colors['purple'] + "Checking logs for errors on ONOS7:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS7_ip)
+        main.step( "Checking ONOS Logs for errors" )
+        for i in range( 7 ):
+            print colors[ 'purple' ] + "Checking logs for errors on " + \
+                "ONOS" + str( i + 1 ) + ":" + colors[ 'end' ]
+            print main.ONOSbench.checkLogs( ips[ i ] )
 
-        main.step("Copying MN pcap and ONOS log files to test station")
+        main.step( "Copying MN pcap and ONOS log files to test station" )
         testname = main.TEST
-        teststation_user = main.params['TESTONUSER']
-        teststation_IP = main.params['TESTONIP']
-        #NOTE: MN Pcap file is being saved to ~/packet_captures
+        teststationUser = main.params[ 'TESTONUSER' ]
+        teststationIP = main.params[ 'TESTONIP' ]
+        # NOTE: MN Pcap file is being saved to ~/packet_captures
         #       scp this file as MN and TestON aren't necessarily the same vm
-        #FIXME: scp
-        #####mn files
-        #TODO: Load these from params
-        #NOTE: must end in /
-        log_folder = "/opt/onos/log/"
-        log_files = ["karaf.log", "karaf.log.1"]
-        #NOTE: must end in /
-        dst_dir = "~/packet_captures/"
-        for f in log_files:
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS1_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS1-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS2_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS2-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS3_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS3-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS4_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS4-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS5_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS5-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS6_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS6-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS7_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS7-"+f )
+        # FIXME: scp
+        # mn files
+        # TODO: Load these from params
+        # NOTE: must end in /
+        logFolder = "/opt/onos/log/"
+        logFiles = [ "karaf.log", "karaf.log.1" ]
+        # NOTE: must end in /
+        dstDir = "~/packet_captures/"
+        for f in logFiles:
+            for i in range( 7 ):
+                main.ONOSbench.handle.sendline( "scp sdn@" + ips[ i ] + ":" +
+                                                logFolder + f + " " +
+                                                teststationUser + "@" +
+                                                teststationIP + ":" +
+                                                dstDir + str( testname ) +
+                                                "-ONOS" + str( i + 1 ) + "-" +
+                                                f )
+        # std*.log's
+        # NOTE: must end in /
+        logFolder = "/opt/onos/var/"
+        logFiles = [ "stderr.log", "stdout.log" ]
+        # NOTE: must end in /
+        dstDir = "~/packet_captures/"
+        for f in logFiles:
+            for i in range( 7 ):
+                main.ONOSbench.handle.sendline( "scp sdn@" + ips[ i ] + ":" +
+                                                logFolder + f + " " +
+                                                teststationUser + "@" +
+                                                teststationIP + ":" +
+                                                dstDir + str( testname ) +
+                                                "-ONOS" + str( i + 1 ) + "-" +
+                                                f )
+        # sleep so scp can finish
+        time.sleep( 10 )
+        main.step( "Packing and rotating pcap archives" )
+        os.system( "~/TestON/dependencies/rotate.sh " + str( testname ) )
 
-        #std*.log's
-        #NOTE: must end in /
-        log_folder = "/opt/onos/var/"
-        log_files = ["stderr.log", "stdout.log"]
-        #NOTE: must end in /
-        dst_dir = "~/packet_captures/"
-        for f in log_files:
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS1_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS1-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS2_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS2-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS3_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS3-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS4_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS4-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS5_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS5-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS6_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS6-"+f )
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS7_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS7-"+f )
+        # TODO: actually check something here
+        utilities.assert_equals( expect=main.TRUE, actual=main.TRUE,
+                                onpass="Test cleanup successful",
+                                onfail="Test cleanup NOT successful" )
 
-
-        #sleep so scp can finish
-        time.sleep(10)
-        main.step("Packing and rotating pcap archives")
-        os.system("~/TestON/dependencies/rotate.sh "+ str(testname))
-
-
-        #TODO: actually check something here
-        utilities.assert_equals(expect=main.TRUE, actual=main.TRUE,
-                onpass="Test cleanup successful",
-                onfail="Test cleanup NOT successful")
-
-    def CASE14 ( self, main ) :
-        '''
+    def CASE14( self, main ):
+        """
         start election app on all onos nodes
-        '''
-        leader_result = main.TRUE
-        #install app on onos 1
-        main.log.info("Install leadership election app")
-        main.ONOScli1.feature_install("onos-app-election")
-        #wait for election
-        #check for leader
-        leader = main.ONOScli1.election_test_leader()
-        #verify leader is ONOS1
-        if leader == ONOS1_ip:
-            #all is well
+        """
+        leaderResult = main.TRUE
+        # install app on onos 1
+        main.log.info( "Install leadership election app" )
+        main.ONOScli1.featureInstall( "onos-app-election" )
+        # wait for election
+        # check for leader
+        leader = main.ONOScli1.electionTestLeader()
+        # verify leader is ONOS1
+        if leader == ONOS1Ip:
+            # all is well
             pass
-        elif leader == None:
-            #No leader elected
-            main.log.report("No leader was elected")
-            leader_result = main.FALSE
+        elif leader is None:
+            # No leader elected
+            main.log.report( "No leader was elected" )
+            leaderResult = main.FALSE
         elif leader == main.FALSE:
-            #error in  response
-            #TODO: add check for "Command not found:" in the driver, this means the app isn't loaded
-            main.log.report("Something is wrong with election_test_leader function, check the error logs")
-            leader_result = main.FALSE
+            # error in  response
+            # TODO: add check for "Command not found:" in the driver, this
+            # means the app isn't loaded
+            main.log.report( "Something is wrong with electionTestLeader" +
+                             " function, check the error logs" )
+            leaderResult = main.FALSE
         else:
-            #error in  response
-            main.log.report("Unexpected response from election_test_leader function:'"+str(leader)+"'")
-            leader_result = main.FALSE
+            # error in  response
+            main.log.report(
+                "Unexpected response from electionTestLeader function:'" +
+                str( leader ) +
+                "'" )
+            leaderResult = main.FALSE
 
-
-
-
-        #install on other nodes and check for leader.
-        #Should be onos1 and each app should show the same leader
-        for controller in range(2,num_controllers+1):
-            node = getattr( main, ( 'ONOScli' + str( controller ) ) )#loop through ONOScli handlers
-            node.feature_install("onos-app-election")
-            leaderN = node.election_test_leader()
-            #verify leader is ONOS1
-            if leaderN == ONOS1_ip:
-                #all is well
+        # install on other nodes and check for leader.
+        # Should be onos1 and each app should show the same leader
+        for controller in range( 2, numControllers + 1 ):
+            # loop through ONOScli handlers
+            node = getattr( main, ( 'ONOScli' + str( controller ) ) )
+            node.featureInstall( "onos-app-election" )
+            leaderN = node.electionTestLeader()
+            # verify leader is ONOS1
+            if leaderN == ONOS1Ip:
+                # all is well
                 pass
             elif leaderN == main.FALSE:
-                #error in  response
-                #TODO: add check for "Command not found:" in the driver, this means the app isn't loaded
-                main.log.report("Something is wrong with election_test_leader function, check the error logs")
-                leader_result = main.FALSE
+                # error in  response
+                # TODO: add check for "Command not found:" in the driver, this
+                # means the app isn't loaded
+                main.log.report( "Something is wrong with " +
+                                 "electionTestLeader function, check the" +
+                                 " error logs" )
+                leaderResult = main.FALSE
             elif leader != leaderN:
-                leader_result = main.FALSE
-                main.log.report("ONOS" + str(controller) + " sees "+str(leaderN) +
-                        " as the leader of the election app. Leader should be "+str(leader) )
-        if leader_result:
-            main.log.report("Leadership election tests passed(consistent view of leader across listeners and a leader was elected)")
-        utilities.assert_equals(expect=main.TRUE, actual=leader_result,
-                onpass="Leadership election passed",
-                onfail="Something went wrong with Leadership election")
+                leaderResult = main.FALSE
+                main.log.report( "ONOS" + str( controller ) + " sees " +
+                                 str( leaderN ) +
+                                 " as the leader of the election app. Leader" +
+                                 " should be " +
+                                 str( leader ) )
+        if leaderResult:
+            main.log.report( "Leadership election tests passed( consistent " +
+                             "view of leader across listeners and a leader " +
+                             "was elected )" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=leaderResult,
+            onpass="Leadership election passed",
+            onfail="Something went wrong with Leadership election" )
 
-    def CASE15 ( self, main ) :
-        '''
+    def CASE15( self, main ):
+        """
         Check that Leadership Election is still functional
-        '''
-        leader_result = main.TRUE
+        """
+        leaderResult = main.TRUE
         description = "Check that Leadership Election is still functional"
-        main.log.report(description)
-        main.case(description)
-        main.step("Find current leader and withdraw")
-        leader = main.ONOScli1.election_test_leader()
-        #TODO: do some sanity checking on leader before using it
-        withdraw_result = main.FALSE
-        if leader == ONOS1_ip:
-            old_leader = getattr( main, "ONOScli1" )
-        elif leader == ONOS2_ip:
-            old_leader = getattr( main, "ONOScli2" )
-        elif leader == ONOS3_ip:
-            old_leader = getattr( main, "ONOScli3" )
-        elif leader == ONOS4_ip:
-            old_leader = getattr( main, "ONOScli4" )
-        elif leader == ONOS5_ip:
-            old_leader = getattr( main, "ONOScli5" )
-        elif leader == ONOS6_ip:
-            old_leader = getattr( main, "ONOScli6" )
-        elif leader == ONOS7_ip:
-            old_leader = getattr( main, "ONOScli7" )
-        elif leader == None or leader == main.FALSE:
-            main.log.report("Leader for the election app should be an ONOS node,"\
-                    +"instead got '"+str(leader)+"'")
-            leader_result = main.FALSE
-        withdraw_result = old_leader.election_test_withdraw()
+        main.log.report( description )
+        main.case( description )
+        main.step( "Find current leader and withdraw" )
+        leader = main.ONOScli1.electionTestLeader()
+        # TODO: do some sanity checking on leader before using it
+        withdrawResult = main.FALSE
+        if leader == ONOS1Ip:
+            oldLeader = getattr( main, "ONOScli1" )
+        elif leader == ONOS2Ip:
+            oldLeader = getattr( main, "ONOScli2" )
+        elif leader == ONOS3Ip:
+            oldLeader = getattr( main, "ONOScli3" )
+        elif leader == ONOS4Ip:
+            oldLeader = getattr( main, "ONOScli4" )
+        elif leader == ONOS5Ip:
+            oldLeader = getattr( main, "ONOScli5" )
+        elif leader == ONOS6Ip:
+            oldLeader = getattr( main, "ONOScli6" )
+        elif leader == ONOS7Ip:
+            oldLeader = getattr( main, "ONOScli7" )
+        elif leader is None or leader == main.FALSE:
+            main.log.report(
+                "Leader for the election app should be an ONOS node," +
+                "instead got '" +
+                str( leader ) +
+                "'" )
+            leaderResult = main.FALSE
+        withdrawResult = oldLeader.electionTestWithdraw()
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=withdrawResult,
+            onpass="App was withdrawn from election",
+            onfail="App was not withdrawn from election" )
 
-
-        main.step("Make sure new leader is elected")
-        leader_list = []
-        for controller in range(1,num_controllers+1):
-            node = getattr( main, ( 'ONOScli' + str( controller ) ) )#loop through ONOScli handlers
-            leader_list.append( node.election_test_leader() )
-        for leaderN in leader_list:
+        main.step( "Make sure new leader is elected" )
+        leaderList = []
+        for controller in range( 1, numControllers + 1 ):
+            # loop through ONOScli handlers
+            node = getattr( main, ( 'ONOScli' + str( controller ) ) )
+            leaderList.append( node.electionTestLeader() )
+        for leaderN in leaderList:
             if leaderN == leader:
-                main.log.report("ONOS"+str(controller)+" still sees " + str(leader) +\
-                        " as leader after they withdrew")
-                leader_result = main.FALSE
+                main.log.report(
+                    "ONOS" +
+                    str( controller ) +
+                    " still sees " +
+                    str( leader ) +
+                    " as leader after they withdrew" )
+                leaderResult = main.FALSE
             elif leaderN == main.FALSE:
-                #error in  response
-                #TODO: add check for "Command not found:" in the driver, this means the app isn't loaded
-                main.log.report("Something is wrong with election_test_leader function, check the error logs")
-                leader_result = main.FALSE
-        consistent_leader = main.FALSE
-        if len( set( leader_list ) ) == 1:
-            main.log.info("Each Election-app sees '"+str(leader_list[0])+"' as the leader")
-            consistent_leader = main.TRUE
+                # error in  response
+                # TODO: add check for "Command not found:" in the driver, this
+                # means the app isn't loaded
+                main.log.report( "Something is wrong with " +
+                                 "electionTestLeader function, " +
+                                 "check the error logs" )
+                leaderResult = main.FALSE
+        consistentLeader = main.FALSE
+        if len( set( leaderList ) ) == 1:
+            main.log.info( "Each Election-app sees '" +
+                           str( leaderList[ 0 ] ) +
+                           "' as the leader" )
+            consistentLeader = main.TRUE
         else:
-            main.log.report("Inconsistent responses for leader of Election-app:")
-            for n in range(len(leader_list)):
-                main.log.report("ONOS" + str(n+1) + " response: " + str(leader_list[n]) )
-        if leader_result:
-            main.log.report("Leadership election tests passed(consistent view of leader across listeners and a new leader was elected when the old leader resigned)")
-        utilities.assert_equals(expect=main.TRUE, actual=leader_result,
-                onpass="Leadership election passed",
-                onfail="Something went wrong with Leadership election")
+            main.log.report(
+                "Inconsistent responses for leader of Election-app:" )
+            for n in range( len( leaderList ) ):
+                main.log.report( "ONOS" + str( n + 1 ) + " response: " +
+                                 str( leaderList[ n ] ) )
+        if leaderResult:
+            main.log.report( "Leadership election tests passed( consistent " +
+                             "view of leader across listeners and a new " +
+                             "leader was elected when the old leader " +
+                             "resigned )" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=leaderResult,
+            onpass="Leadership election passed",
+            onfail="Something went wrong with Leadership election" )
 
-
-        main.step("Run for election on old leader(just so everyone is in the hat)")
-        run_result = old_leader.election_test_run()
-        if consistent_leader == main.TRUE:
-            after_run = main.ONOScli1.election_test_leader()
-            #verify leader didn't just change
-            if after_run == leader_list[0]:
-                leader_result = main.TRUE
+        main.step(
+            "Run for election on old leader( just so everyone is in the hat )" )
+        runResult = oldLeader.electionTestRun()
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=runResult,
+            onpass="App re-ran for election",
+            onfail="App failed to run for election" )
+        if consistentLeader == main.TRUE:
+            afterRun = main.ONOScli1.electionTestLeader()
+            # verify leader didn't just change
+            if afterRun == leaderList[ 0 ]:
+                leaderResult = main.TRUE
             else:
-                leader_result = main.FALSE
-        #TODO: assert on  run and withdraw results?
+                leaderResult = main.FALSE
+        # TODO: assert on  run and withdraw results?
 
-        utilities.assert_equals(expect=main.TRUE, actual=leader_result,
-                onpass="Leadership election passed",
-                onfail="Something went wrong with Leadership election after the old leader re-ran for election")
-
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=leaderResult,
+            onpass="Leadership election passed",
+            onfail="Something went wrong with Leadership election after " +
+                   "the old leader re-ran for election" )
diff --git a/TestON/tests/HATestSanity/HATestSanity.topo b/TestON/tests/HATestSanity/HATestSanity.topo
index 4d4156c..c24d546 100644
--- a/TestON/tests/HATestSanity/HATestSanity.topo
+++ b/TestON/tests/HATestSanity/HATestSanity.topo
@@ -162,10 +162,6 @@
             <type>RemoteMininetDriver</type>
             <connect_order>17</connect_order>
             <COMPONENTS>
-                # Specify the Option for mininet
-                <arg1> --custom ~/mininet/custom/topo-HA.py </arg1>
-                <arg2> --topo mytopo --arp</arg2>
-                <controller> remote </controller>
              </COMPONENTS>
         </Mininet2>
 
diff --git a/TestON/tests/HATestSingleInstanceRestart/HATestSingleInstanceRestart.params b/TestON/tests/HATestSingleInstanceRestart/HATestSingleInstanceRestart.params
index 95a75d7..7f5cf4e 100644
--- a/TestON/tests/HATestSingleInstanceRestart/HATestSingleInstanceRestart.params
+++ b/TestON/tests/HATestSingleInstanceRestart/HATestSingleInstanceRestart.params
@@ -4,6 +4,7 @@
     <cellName>HA</cellName>
     </ENV>
     <Git>False</Git>
+    <branch> master </branch>
     <num_controllers> 1 </num_controllers>
 
     <CTRL>
@@ -56,6 +57,11 @@
         <LinkDiscovery>.2</LinkDiscovery>
         <SwitchDiscovery>.2</SwitchDiscovery>
     </timers>
+    <kill>
+        <switch> s5 </switch>
+        <dpid> 0000000000005000 </dpid>
+        <links> h5 s2 s1 s6 </links>
+    </kill>
     <MNtcpdump>
         <intf>eth0</intf>
         <port> </port>
diff --git a/TestON/tests/HATestSingleInstanceRestart/HATestSingleInstanceRestart.py b/TestON/tests/HATestSingleInstanceRestart/HATestSingleInstanceRestart.py
index 51ac0f6..39ce920 100644
--- a/TestON/tests/HATestSingleInstanceRestart/HATestSingleInstanceRestart.py
+++ b/TestON/tests/HATestSingleInstanceRestart/HATestSingleInstanceRestart.py
@@ -1,4 +1,4 @@
-'''
+"""
 Description: This test is to determine if a single
     instance ONOS 'cluster' can handle a restart
 
@@ -18,14 +18,16 @@
 CASE13: Clean up
 CASE14: start election app on all onos nodes
 CASE15: Check that Leadership Election is still functional
-'''
+"""
+
+
 class HATestSingleInstanceRestart:
 
-    def __init__(self) :
+    def __init__( self ):
         self.default = ''
 
-    def CASE1(self,main) :
-        '''
+    def CASE1( self, main ):
+        """
         CASE1 is to compile ONOS and push it to the test machines
 
         Startup sequence:
@@ -37,934 +39,1084 @@
         NOTE: temporary - onos-remove-raft-logs
         onos-install -f
         onos-wait-for-start
-        '''
-        import time
-        main.log.report("ONOS Single node cluster restart HA test - initialization")
-        main.case("Setting up test environment")
+        """
+        main.log.report( "ONOS Single node cluster restart " +
+                         "HA test - initialization" )
+        main.case( "Setting up test environment" )
+        # TODO: save all the timers and output them for plotting
 
         # load some vairables from the params file
-        PULL_CODE = False
-        if main.params['Git'] == 'True':
-            PULL_CODE = True
-        cell_name = main.params['ENV']['cellName']
+        PULLCODE = False
+        if main.params[ 'Git' ] == 'True':
+            PULLCODE = True
+        gitBranch = main.params[ 'branch' ]
+        cellName = main.params[ 'ENV' ][ 'cellName' ]
 
-        #set global variables
-        global ONOS1_ip
-        global ONOS1_port
-        global ONOS2_ip
-        global ONOS2_port
-        global ONOS3_ip
-        global ONOS3_port
-        global ONOS4_ip
-        global ONOS4_port
-        global ONOS5_ip
-        global ONOS5_port
-        global ONOS6_ip
-        global ONOS6_port
-        global ONOS7_ip
-        global ONOS7_port
-        global num_controllers
+        # set global variables
+        global ONOS1Ip
+        global ONOS1Port
+        global ONOS2Ip
+        global ONOS2Port
+        global ONOS3Ip
+        global ONOS3Port
+        global ONOS4Ip
+        global ONOS4Port
+        global ONOS5Ip
+        global ONOS5Port
+        global ONOS6Ip
+        global ONOS6Port
+        global ONOS7Ip
+        global ONOS7Port
+        global numControllers
 
-        ONOS1_ip = main.params['CTRL']['ip1']
-        ONOS1_port = main.params['CTRL']['port1']
-        ONOS2_ip = main.params['CTRL']['ip2']
-        ONOS2_port = main.params['CTRL']['port2']
-        ONOS3_ip = main.params['CTRL']['ip3']
-        ONOS3_port = main.params['CTRL']['port3']
-        ONOS4_ip = main.params['CTRL']['ip4']
-        ONOS4_port = main.params['CTRL']['port4']
-        ONOS5_ip = main.params['CTRL']['ip5']
-        ONOS5_port = main.params['CTRL']['port5']
-        ONOS6_ip = main.params['CTRL']['ip6']
-        ONOS6_port = main.params['CTRL']['port6']
-        ONOS7_ip = main.params['CTRL']['ip7']
-        ONOS7_port = main.params['CTRL']['port7']
-        num_controllers = int(main.params['num_controllers'])
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS1Port = main.params[ 'CTRL' ][ 'port1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS2Port = main.params[ 'CTRL' ][ 'port2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS3Port = main.params[ 'CTRL' ][ 'port3' ]
+        ONOS4Ip = main.params[ 'CTRL' ][ 'ip4' ]
+        ONOS4Port = main.params[ 'CTRL' ][ 'port4' ]
+        ONOS5Ip = main.params[ 'CTRL' ][ 'ip5' ]
+        ONOS5Port = main.params[ 'CTRL' ][ 'port5' ]
+        ONOS6Ip = main.params[ 'CTRL' ][ 'ip6' ]
+        ONOS6Port = main.params[ 'CTRL' ][ 'port6' ]
+        ONOS7Ip = main.params[ 'CTRL' ][ 'ip7' ]
+        ONOS7Port = main.params[ 'CTRL' ][ 'port7' ]
+        numControllers = int( main.params[ 'num_controllers' ] )
 
+        main.step( "Applying cell variable to environment" )
+        cellResult = main.ONOSbench.setCell( cellName )
+        verifyResult = main.ONOSbench.verifyCell()
 
-        main.step("Applying cell variable to environment")
-        cell_result = main.ONOSbench.set_cell(cell_name)
-        verify_result = main.ONOSbench.verify_cell()
+        # FIXME:this is short term fix
+        main.log.report( "Removing raft logs" )
+        main.ONOSbench.onosRemoveRaftLogs()
+        main.log.report( "Uninstalling ONOS" )
+        main.ONOSbench.onosUninstall( ONOS1Ip )
+        main.ONOSbench.onosUninstall( ONOS2Ip )
+        main.ONOSbench.onosUninstall( ONOS3Ip )
+        main.ONOSbench.onosUninstall( ONOS4Ip )
+        main.ONOSbench.onosUninstall( ONOS5Ip )
+        main.ONOSbench.onosUninstall( ONOS6Ip )
+        main.ONOSbench.onosUninstall( ONOS7Ip )
 
-        #FIXME:this is short term fix
-        main.log.report("Removing raft logs")
-        main.ONOSbench.onos_remove_raft_logs()
-        main.log.report("Uninstalling ONOS")
-        main.ONOSbench.onos_uninstall(ONOS1_ip)
-        main.ONOSbench.onos_uninstall(ONOS2_ip)
-        main.ONOSbench.onos_uninstall(ONOS3_ip)
-        main.ONOSbench.onos_uninstall(ONOS4_ip)
-        main.ONOSbench.onos_uninstall(ONOS5_ip)
-        main.ONOSbench.onos_uninstall(ONOS6_ip)
-        main.ONOSbench.onos_uninstall(ONOS7_ip)
+        cleanInstallResult = main.TRUE
+        gitPullResult = main.TRUE
 
-        clean_install_result = main.TRUE
-        git_pull_result = main.TRUE
+        main.step( "Compiling the latest version of ONOS" )
+        if PULLCODE:
+            # TODO Configure branch in params
+            main.step( "Git checkout and pull master" )
+            main.ONOSbench.gitCheckout( gitBranch )
+            gitPullResult = main.ONOSbench.gitPull()
 
-        main.step("Compiling the latest version of ONOS")
-        if PULL_CODE:
-            main.step("Git checkout and pull master")
-            main.ONOSbench.git_checkout("master")
-            git_pull_result = main.ONOSbench.git_pull()
+            main.step( "Using mvn clean & install" )
+            cleanInstallResult = main.ONOSbench.cleanInstall()
+        else:
+            main.log.warn( "Did not pull new code so skipping mvn " +
+                           "clean install" )
+        main.ONOSbench.getVersion( report=True )
 
-            main.step("Using mvn clean & install")
-            clean_install_result = main.TRUE
-            if git_pull_result == main.TRUE:
-                clean_install_result = main.ONOSbench.clean_install()
-            else:
-                main.log.warn("Did not pull new code so skipping mvn "+ \
-                        "clean install")
-        main.ONOSbench.get_version(report=True)
+        cellResult = main.ONOSbench.setCell( "SingleHA" )
+        verifyResult = main.ONOSbench.verifyCell()
+        main.step( "Creating ONOS package" )
+        packageResult = main.ONOSbench.onosPackage()
 
-        cell_result = main.ONOSbench.set_cell("SingleHA")
-        verify_result = main.ONOSbench.verify_cell()
-        main.step("Creating ONOS package")
-        package_result = main.ONOSbench.onos_package()
+        main.step( "Installing ONOS package" )
+        onos1InstallResult = main.ONOSbench.onosInstall( options="-f",
+                                                           node=ONOS1Ip )
 
-        main.step("Installing ONOS package")
-        onos1_install_result = main.ONOSbench.onos_install(options="-f",
-                node=ONOS1_ip)
-
-
-        main.step("Checking if ONOS is up yet")
-        #TODO check bundle:list?
-        for i in range(2):
-            onos1_isup = main.ONOSbench.isup(ONOS1_ip)
-            if onos1_isup:
+        main.step( "Checking if ONOS is up yet" )
+        # TODO check bundle:list?
+        for i in range( 2 ):
+            onos1Isup = main.ONOSbench.isup( ONOS1Ip )
+            if onos1Isup:
                 break
-        if not onos1_isup:
-            main.log.report("ONOS1 didn't start!")
+        if not onos1Isup:
+            main.log.report( "ONOS1 didn't start!" )
 
-        # TODO: if it becomes an issue, we can retry this step  a few times
+        cliResult = main.ONOScli1.startOnosCli( ONOS1Ip )
 
+        main.step( "Start Packet Capture MN" )
+        main.Mininet2.startTcpdump(
+            str( main.params[ 'MNtcpdump' ][ 'folder' ] ) + str( main.TEST )
+            + "-MN.pcap",
+            intf=main.params[ 'MNtcpdump' ][ 'intf' ],
+            port=main.params[ 'MNtcpdump' ][ 'port' ] )
 
-        cli_result = main.ONOScli1.start_onos_cli(ONOS1_ip)
+        case1Result = ( cleanInstallResult and packageResult and
+                        cellResult and verifyResult and onos1InstallResult
+                        and onos1Isup and cliResult )
 
-        main.step("Start Packet Capture MN")
-        main.Mininet2.start_tcpdump(
-                str(main.params['MNtcpdump']['folder'])+str(main.TEST)+"-MN.pcap",
-                intf = main.params['MNtcpdump']['intf'],
-                port = main.params['MNtcpdump']['port'])
+        utilities.assert_equals( expect=main.TRUE, actual=case1Result,
+                                onpass="Test startup successful",
+                                onfail="Test startup NOT successful" )
 
-
-        case1_result = (clean_install_result and package_result and
-                cell_result and verify_result and onos1_install_result and
-                onos1_isup and cli_result)
-
-        utilities.assert_equals(expect=main.TRUE, actual=case1_result,
-                onpass="Test startup successful",
-                onfail="Test startup NOT successful")
-
-
-        if case1_result==main.FALSE:
+        if case1Result == main.FALSE:
             main.cleanup()
             main.exit()
 
-    def CASE2(self,main) :
-        '''
+    def CASE2( self, main ):
+        """
         Assign mastership to controllers
-        '''
-        import time
-        import json
+        """
         import re
 
-        main.log.report("Assigning switches to controllers")
-        main.case("Assigning Controllers")
-        main.step("Assign switches to controllers")
+        main.log.report( "Assigning switches to controllers" )
+        main.case( "Assigning Controllers" )
+        main.step( "Assign switches to controllers" )
 
-        for i in range (1,29):
-           main.Mininet1.assign_sw_controller(sw=str(i),
-                    ip1=ONOS1_ip,port1=ONOS1_port)
+        for i in range( 1, 29 ):
+            main.Mininet1.assignSwController(
+                sw=str( i ),
+                ip1=ONOS1Ip, port1=ONOS1Port )
 
-        mastership_check = main.TRUE
-        for i in range (1,29):
-            response = main.Mininet1.get_sw_controller("s"+str(i))
+        mastershipCheck = main.TRUE
+        for i in range( 1, 29 ):
+            response = main.Mininet1.getSwController( "s" + str( i ) )
             try:
-                main.log.info(str(response))
+                main.log.info( str( response ) )
             except:
-                main.log.info(repr(response))
-            if re.search("tcp:"+ONOS1_ip,response):
-                mastership_check = mastership_check and main.TRUE
+                main.log.info( repr( response ) )
+            if re.search( "tcp:" + ONOS1Ip, response ):
+                mastershipCheck = mastershipCheck and main.TRUE
             else:
-                mastership_check = main.FALSE
-        if mastership_check == main.TRUE:
-            main.log.report("Switch mastership assigned correctly")
-        utilities.assert_equals(expect = main.TRUE,actual=mastership_check,
-                onpass="Switch mastership assigned correctly",
-                onfail="Switches not assigned correctly to controllers")
+                mastershipCheck = main.FALSE
+        if mastershipCheck == main.TRUE:
+            main.log.report( "Switch mastership assigned correctly" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=mastershipCheck,
+            onpass="Switch mastership assigned correctly",
+            onfail="Switches not assigned correctly to controllers" )
 
-
-
-    def CASE3(self,main) :
+    def CASE3( self, main ):
         """
         Assign intents
-
         """
-        #FIXME: we must reinstall intents until we have a persistant datastore!
+        # FIXME: we must reinstall intents until we have a persistant
+        # datastore!
         import time
-        import json
-        import re
-        main.log.report("Adding host intents")
-        main.case("Adding host Intents")
+        main.log.report( "Adding host intents" )
+        main.case( "Adding host Intents" )
 
-        main.step("Discovering  Hosts( Via pingall for now)")
-        #FIXME: Once we have a host discovery mechanism, use that instead
+        main.step( "Discovering  Hosts( Via pingall for now )" )
+        # FIXME: Once we have a host discovery mechanism, use that instead
 
-        #install onos-app-fwd
-        main.log.info("Install reactive forwarding app")
-        main.ONOScli1.feature_install("onos-app-fwd")
+        # install onos-app-fwd
+        main.log.info( "Install reactive forwarding app" )
+        main.ONOScli1.featureInstall( "onos-app-fwd" )
 
-        #REACTIVE FWD test
-        ping_result = main.FALSE
+        # REACTIVE FWD test
+        pingResult = main.FALSE
         time1 = time.time()
-        ping_result = main.Mininet1.pingall()
+        pingResult = main.Mininet1.pingall()
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=pingResult,
+            onpass="Reactive Pingall test passed",
+            onfail="Reactive Pingall failed, one or more ping pairs failed" )
         time2 = time.time()
-        main.log.info("Time for pingall: %2f seconds" % (time2 - time1))
+        main.log.info( "Time for pingall: %2f seconds" % ( time2 - time1 ) )
 
-        #uninstall onos-app-fwd
-        main.log.info("Uninstall reactive forwarding app")
-        main.ONOScli1.feature_uninstall("onos-app-fwd")
-        #timeout for fwd flows
-        time.sleep(10)
+        # uninstall onos-app-fwd
+        main.log.info( "Uninstall reactive forwarding app" )
+        main.ONOScli1.featureUninstall( "onos-app-fwd" )
+        # timeout for fwd flows
+        time.sleep( 10 )
 
-        main.step("Add  host intents")
-        #TODO:  move the host numbers to params
-        import json
-        intents_json= json.loads(main.ONOScli1.hosts())
-        intent_add_result = True
-        for i in range(8,18):
-            main.log.info("Adding host intent between h"+str(i)+" and h"+str(i+10))
-            host1 =  "00:00:00:00:00:" + str(hex(i)[2:]).zfill(2).upper()
-            host2 =  "00:00:00:00:00:" + str(hex(i+10)[2:]).zfill(2).upper()
-            host1_id = main.ONOScli1.get_host(host1)['id']
-            host2_id = main.ONOScli1.get_host(host2)['id']
-            #NOTE: get host can return None
-            if host1_id and host2_id:
-                tmp_result = main.ONOScli1.add_host_intent(host1_id, host2_id )
+        main.step( "Add  host intents" )
+        # TODO:  move the host numbers to params
+        intentAddResult = True
+        for i in range( 8, 18 ):
+            main.log.info( "Adding host intent between h" + str( i ) +
+                           " and h" + str( i + 10 ) )
+            host1 = "00:00:00:00:00:" + \
+                str( hex( i )[ 2: ] ).zfill( 2 ).upper()
+            host2 = "00:00:00:00:00:" + \
+                str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
+            host1Id = main.ONOScli1.getHost( host1 )[ 'id' ]
+            host2Id = main.ONOScli1.getHost( host2 )[ 'id' ]
+            # NOTE: get host can return None
+            if host1Id and host2Id:
+                tmpResult = main.ONOScli1.addHostIntent(
+                    host1Id,
+                    host2Id )
             else:
-                main.log.error("Error, get_host() failed")
-                tmp_result = main.FALSE
-            intent_add_result = bool(intent_add_result and tmp_result)
-        utilities.assert_equals(expect=True, actual=intent_add_result,
-                onpass="Switch mastership correctly assigned",
-                onfail="Error in (re)assigning switch mastership")
-        #TODO Check if intents all exist in datastore
-        #NOTE: Do we need to print this once the test is working?
-        #main.log.info(json.dumps(json.loads(main.ONOScli1.intents(json_format=True)),
-        #    sort_keys=True, indent=4, separators=(',', ': ') ) )
+                main.log.error( "Error, getHost() failed" )
+                tmpResult = main.FALSE
+            intentAddResult = bool( pingResult and intentAddResult
+                                     and tmpResult )
+            # TODO Check that intents were added?
+        utilities.assert_equals(
+            expect=True,
+            actual=intentAddResult,
+            onpass="Pushed host intents to ONOS",
+            onfail="Error in pushing host intents to ONOS" )
+        # TODO Check if intents all exist in datastore
 
-    def CASE4(self,main) :
+    def CASE4( self, main ):
         """
         Ping across added host intents
         """
         description = " Ping across added host intents"
-        main.log.report(description)
-        main.case(description)
-        Ping_Result = main.TRUE
-        for i in range(8,18):
-            ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+10))
-            Ping_Result = Ping_Result and ping
-            if ping==main.FALSE:
-                main.log.warn("Ping failed between h"+str(i)+" and h" + str(i+10))
-            elif ping==main.TRUE:
-                main.log.info("Ping test passed!")
-                Ping_Result = main.TRUE
-        if Ping_Result==main.FALSE:
-            main.log.report("Intents have not been installed correctly, pings failed.")
-        if Ping_Result==main.TRUE:
-            main.log.report("Intents have been installed correctly and verified by pings")
-        utilities.assert_equals(expect = main.TRUE,actual=Ping_Result,
-                onpass="Intents have been installed correctly and pings work",
-                onfail ="Intents have not been installed correctly, pings failed." )
+        main.log.report( description )
+        main.case( description )
+        PingResult = main.TRUE
+        for i in range( 8, 18 ):
+            ping = main.Mininet1.pingHost(
+                src="h" + str( i ), target="h" + str( i + 10 ) )
+            PingResult = PingResult and ping
+            if ping == main.FALSE:
+                main.log.warn( "Ping failed between h" + str( i ) +
+                               " and h" + str( i + 10 ) )
+            elif ping == main.TRUE:
+                main.log.info( "Ping test passed!" )
+                PingResult = main.TRUE
+        if PingResult == main.FALSE:
+            main.log.report(
+                "Intents have not been installed correctly, pings failed." )
+            #TODO: pretty print
+            main.log.warn( "ONSO1 intents: " )
+            main.log.warn( json.dumps( json.loads( main.ONOScli1.intents() ),
+                                       sort_keys=True,
+                                       indent=4,
+                                       separators=( ',', ': ' ) ) )
+        if PingResult == main.TRUE:
+            main.log.report(
+                "Intents have been installed correctly and verified by pings" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=PingResult,
+            onpass="Intents have been installed correctly and pings work",
+            onfail="Intents have not been installed correctly, pings failed." )
 
-    def CASE5(self,main) :
-        '''
+    def CASE5( self, main ):
+        """
         Reading state of ONOS
-        '''
-        import time
+        """
         import json
-        from subprocess import Popen, PIPE
-        from sts.topology.teston_topology import TestONTopology # assumes that sts is already in you PYTHONPATH
+        # assumes that sts is already in you PYTHONPATH
+        from sts.topology.teston_topology import TestONTopology
 
-        main.log.report("Setting up and gathering data for current state")
-        main.case("Setting up and gathering data for current state")
-        #The general idea for this test case is to pull the state of (intents,flows, topology,...) from each ONOS node
-        #We can then compare them with eachother and also with past states
+        main.log.report( "Setting up and gathering data for current state" )
+        main.case( "Setting up and gathering data for current state" )
+        # The general idea for this test case is to pull the state of
+        # ( intents,flows, topology,... ) from each ONOS node
+        # We can then compare them with eachother and also with past states
 
-        main.step("Get the Mastership of each switch from each controller")
-        global mastership_state
-        mastership_state = []
+        main.step( "Get the Mastership of each switch from each controller" )
+        global mastershipState
+        mastershipState = []
 
-        #Assert that each device has a master
-        roles_not_null = main.ONOScli1.roles_not_null()
-        utilities.assert_equals(expect = main.TRUE,actual=roles_not_null,
-                onpass="Each device has a master",
-                onfail="Some devices don't have a master assigned")
+        # Assert that each device has a master
+        rolesNotNull = main.ONOScli1.rolesNotNull()
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=rolesNotNull,
+            onpass="Each device has a master",
+            onfail="Some devices don't have a master assigned" )
 
-
-        ONOS1_mastership = main.ONOScli1.roles()
-        #print json.dumps(json.loads(ONOS1_mastership), sort_keys=True, indent=4, separators=(',', ': '))
-        #TODO: Make this a meaningful check
-        if "Error" in ONOS1_mastership or not ONOS1_mastership:
-            main.log.report("Error in getting ONOS roles")
-            main.log.warn("ONOS1 mastership response: " + repr(ONOS1_mastership))
-            consistent_mastership = main.FALSE
+        ONOS1Mastership = main.ONOScli1.roles()
+        # TODO: Make this a meaningful check
+        if "Error" in ONOS1Mastership or not ONOS1Mastership:
+            main.log.report( "Error in getting ONOS roles" )
+            main.log.warn(
+                "ONOS1 mastership response: " +
+                repr( ONOS1Mastership ) )
+            consistentMastership = main.FALSE
         else:
-            mastership_state = ONOS1_mastership
-            consistent_mastership = main.TRUE
+            mastershipState = ONOS1Mastership
+            consistentMastership = main.TRUE
 
-
-        main.step("Get the intents from each controller")
-        global intent_state
-        intent_state = []
-        ONOS1_intents = main.ONOScli1.intents( json_format=True )
-        intent_check = main.FALSE
-        if "Error" in ONOS1_intents or not ONOS1_intents:
-            main.log.report("Error in getting ONOS intents")
-            main.log.warn("ONOS1 intents response: " + repr(ONOS1_intents))
+        main.step( "Get the intents from each controller" )
+        global intentState
+        intentState = []
+        ONOS1Intents = main.ONOScli1.intents( jsonFormat=True )
+        intentCheck = main.FALSE
+        if "Error" in ONOS1Intents or not ONOS1Intents:
+            main.log.report( "Error in getting ONOS intents" )
+            main.log.warn( "ONOS1 intents response: " + repr( ONOS1Intents ) )
         else:
-            intent_check = main.TRUE
+            intentCheck = main.TRUE
 
-
-        main.step("Get the flows from each controller")
-        global flow_state
-        flow_state = []
-        ONOS1_flows = main.ONOScli1.flows( json_format=True )
-        flow_check = main.FALSE
-        if "Error" in ONOS1_flows or not ONOS1_flows:
-            main.log.report("Error in getting ONOS intents")
-            main.log.warn("ONOS1 flows repsponse: "+ ONOS1_flows)
+        main.step( "Get the flows from each controller" )
+        global flowState
+        flowState = []
+        ONOS1Flows = main.ONOScli1.flows( jsonFormat=True )
+        flowCheck = main.FALSE
+        if "Error" in ONOS1Flows or not ONOS1Flows:
+            main.log.report( "Error in getting ONOS intents" )
+            main.log.warn( "ONOS1 flows repsponse: " + ONOS1Flows )
         else:
-            #TODO: Do a better check, maybe compare flows on switches?
-            flow_state = ONOS1_flows
-            flow_check = main.TRUE
+            # TODO: Do a better check, maybe compare flows on switches?
+            flowState = ONOS1Flows
+            flowCheck = main.TRUE
 
-
-        main.step("Get the OF Table entries")
+        main.step( "Get the OF Table entries" )
         global flows
-        flows=[]
-        for i in range(1,29):
-            flows.append(main.Mininet2.get_flowTable(1.3, "s"+str(i)))
+        flows = []
+        for i in range( 1, 29 ):
+            flows.append( main.Mininet2.getFlowTable( 1.3, "s" + str( i ) ) )
 
-        #TODO: Compare switch flow tables with ONOS flow tables
+        # TODO: Compare switch flow tables with ONOS flow tables
 
-        main.step("Create TestONTopology object")
+        main.step( "Create TestONTopology object" )
         ctrls = []
         count = 1
         temp = ()
-        temp = temp + (getattr(main,('ONOS' + str(count))),)
-        temp = temp + ("ONOS"+str(count),)
-        temp = temp + (main.params['CTRL']['ip'+str(count)],)
-        temp = temp + (eval(main.params['CTRL']['port'+str(count)]),)
-        ctrls.append(temp)
-        MNTopo = TestONTopology(main.Mininet1, ctrls) # can also add Intent API info for intent operations
+        temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
+        temp = temp + ( "ONOS" + str( count ), )
+        temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
+        temp = temp + \
+            ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
+        ctrls.append( temp )
+        MNTopo = TestONTopology(
+            main.Mininet1,
+            ctrls )  # can also add Intent API info for intent operations
 
-        main.step("Collecting topology information from ONOS")
+        main.step( "Collecting topology information from ONOS" )
         devices = []
         devices.append( main.ONOScli1.devices() )
-        '''
+        """
         hosts = []
         hosts.append( main.ONOScli1.hosts() )
-        '''
+        """
         ports = []
         ports.append( main.ONOScli1.ports() )
         links = []
         links.append( main.ONOScli1.links() )
 
-
-        main.step("Comparing ONOS topology to MN")
-        devices_results = main.TRUE
-        ports_results = main.TRUE
-        links_results = main.TRUE
-        for controller in range(num_controllers):
-            if devices[controller] or not "Error" in devices[controller]:
-                current_devices_result =  main.Mininet1.compare_switches(MNTopo, json.loads(devices[controller]))
+        main.step( "Comparing ONOS topology to MN" )
+        devicesResults = main.TRUE
+        portsResults = main.TRUE
+        linksResults = main.TRUE
+        for controller in range( numControllers ):
+            controllerStr = str( controller + 1 )
+            if devices[ controller ] or "Error" not in devices[ controller ]:
+                currentDevicesResult = main.Mininet1.compareSwitches(
+                    MNTopo,
+                    json.loads(
+                        devices[ controller ] ) )
             else:
-                current_devices_result = main.FALSE
-            utilities.assert_equals(expect=main.TRUE, actual=current_devices_result,
-                    onpass="ONOS"+str(int(controller+1))+" Switches view is correct",
-                    onfail="ONOS"+str(int(controller+1))+" Switches view is incorrect")
+                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 ports[controller] or not "Error" in ports[controller]:
-                current_ports_result =  main.Mininet1.compare_ports(MNTopo, json.loads(ports[controller]))
+            if ports[ controller ] or "Error" not in ports[ controller ]:
+                currentPortsResult = main.Mininet1.comparePorts(
+                    MNTopo,
+                    json.loads(
+                        ports[ controller ] ) )
             else:
-                current_ports_result = main.FALSE
-            utilities.assert_equals(expect=main.TRUE, actual=current_ports_result,
-                    onpass="ONOS"+str(int(controller+1))+" ports view is correct",
-                    onfail="ONOS"+str(int(controller+1))+" ports view is incorrect")
+                currentPortsResult = main.FALSE
+            utilities.assert_equals( expect=main.TRUE,
+                                    actual=currentPortsResult,
+                                    onpass="ONOS" + controllerStr +
+                                    " ports view is correct",
+                                    onfail="ONOS" + controllerStr +
+                                    " ports view is incorrect" )
 
-            if links[controller] or not "Error" in links[controller]:
-                current_links_result =  main.Mininet1.compare_links(MNTopo, json.loads(links[controller]))
+            if links[ controller ] or "Error" not in links[ controller ]:
+                currentLinksResult = main.Mininet1.compareLinks(
+                    MNTopo,
+                    json.loads(
+                        links[ controller ] ) )
             else:
-                current_links_result = main.FALSE
-            utilities.assert_equals(expect=main.TRUE, actual=current_links_result,
-                    onpass="ONOS"+str(int(controller+1))+" links view is correct",
-                    onfail="ONOS"+str(int(controller+1))+" links view is incorrect")
+                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" )
 
-            devices_results = devices_results and current_devices_result
-            ports_results = ports_results and current_ports_result
-            links_results = links_results and current_links_result
+            devicesResults = devicesResults and currentDevicesResult
+            portsResults = portsResults and currentPortsResult
+            linksResults = linksResults and currentLinksResult
 
-        topo_result = devices_results and ports_results and links_results
-        utilities.assert_equals(expect=main.TRUE, actual=topo_result,
-                onpass="Topology Check Test successful",
-                onfail="Topology Check Test NOT successful")
+        topoResult = devicesResults and portsResults and linksResults
+        utilities.assert_equals( expect=main.TRUE, actual=topoResult,
+                                onpass="Topology Check Test successful",
+                                onfail="Topology Check Test NOT successful" )
 
-        final_assert = main.TRUE
-        final_assert = final_assert and topo_result and flow_check \
-                and intent_check and consistent_mastership and roles_not_null
-        utilities.assert_equals(expect=main.TRUE, actual=final_assert,
-                onpass="State check successful",
-                onfail="State check NOT successful")
+        finalAssert = main.TRUE
+        finalAssert = finalAssert and topoResult and flowCheck \
+            and intentCheck and consistentMastership and rolesNotNull
+        utilities.assert_equals( expect=main.TRUE, actual=finalAssert,
+                                onpass="State check successful",
+                                onfail="State check NOT successful" )
 
-
-    def CASE6(self,main) :
-        '''
+    def CASE6( self, main ):
+        """
         The Failure case.
-        '''
+        """
         import time
 
-        main.log.report("Restart ONOS node")
-        main.log.case("Restart ONOS node")
-        main.ONOSbench.onos_kill(ONOS1_ip)
+        main.log.report( "Restart ONOS node" )
+        main.log.case( "Restart ONOS node" )
+        main.ONOSbench.onosKill( ONOS1Ip )
         start = time.time()
 
-        main.step("Checking if ONOS is up yet")
+        main.step( "Checking if ONOS is up yet" )
         count = 0
         while count < 10:
-            onos1_isup = main.ONOSbench.isup(ONOS1_ip)
-            if onos1_isup == main.TRUE:
+            onos1Isup = main.ONOSbench.isup( ONOS1Ip )
+            if onos1Isup == main.TRUE:
                 elapsed = time.time() - start
                 break
             else:
                 count = count + 1
 
-        cli_result = main.ONOScli1.start_onos_cli(ONOS1_ip)
+        cliResult = main.ONOScli1.startOnosCli( ONOS1Ip )
 
-        case_results = main.TRUE and onos1_isup and cli_result
-        utilities.assert_equals(expect=main.TRUE, actual=case_results,
-                onpass="ONOS restart successful",
-                onfail="ONOS restart NOT successful")
-        main.log.info("ESTIMATE: ONOS took %s seconds to restart" % str(elapsed) )
-        time.sleep(5)
+        caseResults = main.TRUE and onos1Isup and cliResult
+        utilities.assert_equals( expect=main.TRUE, actual=caseResults,
+                                onpass="ONOS restart successful",
+                                onfail="ONOS restart NOT successful" )
+        main.log.info(
+            "ESTIMATE: ONOS took %s seconds to restart" %
+            str( elapsed ) )
+        time.sleep( 5 )
 
-    def CASE7(self,main) :
-        '''
+    def CASE7( self, main ):
+        """
         Check state after ONOS failure
-        '''
-        import os
+        """
         import json
-        main.case("Running ONOS Constant State Tests")
+        main.case( "Running ONOS Constant State Tests" )
 
-        #Assert that each device has a master
-        roles_not_null = main.ONOScli1.roles_not_null()
-        utilities.assert_equals(expect = main.TRUE,actual=roles_not_null,
-                onpass="Each device has a master",
-                onfail="Some devices don't have a master assigned")
+        # Assert that each device has a master
+        rolesNotNull = main.ONOScli1.rolesNotNull()
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=rolesNotNull,
+            onpass="Each device has a master",
+            onfail="Some devices don't have a master assigned" )
 
-
-
-        main.step("Check if switch roles are consistent across all nodes")
-        ONOS1_mastership = main.ONOScli1.roles()
-        #FIXME: Refactor this whole case for single instance
-        #print json.dumps(json.loads(ONOS1_mastership), sort_keys=True, indent=4, separators=(',', ': '))
-        if "Error" in ONOS1_mastership or not ONOS1_mastership:
-            main.log.report("Error in getting ONOS mastership")
-            main.log.warn("ONOS1 mastership response: " + repr(ONOS1_mastership))
-            consistent_mastership = main.FALSE
+        main.step( "Check if switch roles are consistent across all nodes" )
+        ONOS1Mastership = main.ONOScli1.roles()
+        # FIXME: Refactor this whole case for single instance
+        if "Error" in ONOS1Mastership or not ONOS1Mastership:
+            main.log.report( "Error in getting ONOS mastership" )
+            main.log.warn(
+                "ONOS1 mastership response: " +
+                repr( ONOS1Mastership ) )
+            consistentMastership = main.FALSE
         else:
-            consistent_mastership = main.TRUE
-            main.log.report("Switch roles are consistent across all ONOS nodes")
-        utilities.assert_equals(expect = main.TRUE,actual=consistent_mastership,
-                onpass="Switch roles are consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of switch roles")
-
+            consistentMastership = main.TRUE
+            main.log.report(
+                "Switch roles are consistent across all ONOS nodes" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=consistentMastership,
+            onpass="Switch roles are consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of switch roles" )
 
         description2 = "Compare switch roles from before failure"
-        main.step(description2)
+        main.step( description2 )
 
-        current_json = json.loads(ONOS1_mastership)
-        old_json = json.loads(mastership_state)
-        mastership_check = main.TRUE
-        for i in range(1,29):
-            switchDPID = str(main.Mininet1.getSwitchDPID(switch="s"+str(i)))
+        currentJson = json.loads( ONOS1Mastership )
+        oldJson = json.loads( mastershipState )
+        mastershipCheck = main.TRUE
+        for i in range( 1, 29 ):
+            switchDPID = str(
+                main.Mininet1.getSwitchDPID(
+                    switch="s" +
+                    str( i ) ) )
 
-            current = [switch['master'] for switch in current_json if switchDPID in switch['id']]
-            old = [switch['master'] for switch in old_json if switchDPID in switch['id']]
+            current = [ switch[ 'master' ] for switch in currentJson
+                        if switchDPID in switch[ 'id' ] ]
+            old = [ switch[ 'master' ] for switch in oldJson
+                    if switchDPID in switch[ 'id' ] ]
             if current == old:
-                mastership_check = mastership_check and main.TRUE
+                mastershipCheck = mastershipCheck and main.TRUE
             else:
-                main.log.warn("Mastership of switch %s changed" % switchDPID)
-                mastership_check = main.FALSE
-        if mastership_check == main.TRUE:
-            main.log.report("Mastership of Switches was not changed")
-        utilities.assert_equals(expect=main.TRUE,actual=mastership_check,
-                onpass="Mastership of Switches was not changed",
-                onfail="Mastership of some switches changed")
-        mastership_check = mastership_check and consistent_mastership
+                main.log.warn( "Mastership of switch %s changed" % switchDPID )
+                mastershipCheck = main.FALSE
+        if mastershipCheck == main.TRUE:
+            main.log.report( "Mastership of Switches was not changed" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=mastershipCheck,
+            onpass="Mastership of Switches was not changed",
+            onfail="Mastership of some switches changed" )
+        mastershipCheck = mastershipCheck and consistentMastership
 
-
-
-        main.step("Get the intents and compare across all nodes")
-        ONOS1_intents = main.ONOScli1.intents( json_format=True )
-        intent_check = main.FALSE
-        if "Error" in ONOS1_intents or not ONOS1_intents:
-            main.log.report("Error in getting ONOS intents")
-            main.log.warn("ONOS1 intents response: " + repr(ONOS1_intents))
+        main.step( "Get the intents and compare across all nodes" )
+        ONOS1Intents = main.ONOScli1.intents( jsonFormat=True )
+        intentCheck = main.FALSE
+        if "Error" in ONOS1Intents or not ONOS1Intents:
+            main.log.report( "Error in getting ONOS intents" )
+            main.log.warn( "ONOS1 intents response: " + repr( ONOS1Intents ) )
         else:
-            intent_check = main.TRUE
-            main.log.report("Intents are consistent across all ONOS nodes")
-        utilities.assert_equals(expect = main.TRUE,actual=intent_check,
-                onpass="Intents are consistent across all ONOS nodes",
-                onfail="ONOS nodes have different views of intents")
+            intentCheck = main.TRUE
+            main.log.report( "Intents are consistent across all ONOS nodes" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=intentCheck,
+            onpass="Intents are consistent across all ONOS nodes",
+            onfail="ONOS nodes have different views of intents" )
 
-        #NOTE: Hazelcast has no durability, so intents are lost
-        '''
-        main.step("Compare current intents with intents before the failure")
-        if intent_state == ONOS1_intents:
-            same_intents = main.TRUE
-            main.log.report("Intents are consistent with before failure")
-        #TODO: possibly the states have changed? we may need to figure out what the aceptable states are
+        # NOTE: Hazelcast has no durability, so intents are lost across system
+        # restarts
+        """
+        main.step( "Compare current intents with intents before the failure" )
+        # NOTE: this requires case 5 to pass for intentState to be set.
+        #      maybe we should stop the test if that fails?
+        if intentState == ONOS1Intents:
+            sameIntents = main.TRUE
+            main.log.report( "Intents are consistent with before failure" )
+        # TODO: possibly the states have changed? we may need to figure out
+        # what the aceptable states are
         else:
-            same_intents = main.FALSE
-        utilities.assert_equals(expect = main.TRUE,actual=same_intents,
-                onpass="Intents are consistent with before failure",
-                onfail="The Intents changed during failure")
-        intent_check = intent_check and same_intents
-        '''
+            try:
+                main.log.warn( "ONOS1 intents: " )
+                print json.dumps( json.loads( ONOS1Intents ),
+                                  sort_keys=True, indent=4,
+                                  separators=( ',', ': ' ) )
+            except:
+                pass
+            sameIntents = main.FALSE
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=sameIntents,
+            onpass="Intents are consistent with before failure",
+            onfail="The Intents changed during failure" )
+        intentCheck = intentCheck and sameIntents
+        """
+        main.step( "Get the OF Table entries and compare to before " +
+                   "component failure" )
+        FlowTables = main.TRUE
+        flows2 = []
+        for i in range( 28 ):
+            main.log.info( "Checking flow table on s" + str( i + 1 ) )
+            tmpFlows = main.Mininet2.getFlowTable( 1.3, "s" + str( i + 1 ) )
+            flows2.append( tmpFlows )
+            tempResult = main.Mininet2.flowComp(
+                flow1=flows[ i ],
+                flow2=tmpFlows )
+            FlowTables = FlowTables and tempResult
+            if FlowTables == main.FALSE:
+                main.log.info( "Differences in flow table for switch: s" +
+                               str( i + 1 ) )
+        if FlowTables == main.TRUE:
+            main.log.report( "No changes were found in the flow tables" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=FlowTables,
+            onpass="No changes were found in the flow tables",
+            onfail="Changes were found in the flow tables" )
 
+        # Test of LeadershipElection
 
-
-        main.step("Get the OF Table entries and compare to before component failure")
-        Flow_Tables = main.TRUE
-        flows2=[]
-        for i in range(28):
-            main.log.info("Checking flow table on s" + str(i+1))
-            tmp_flows = main.Mininet2.get_flowTable(1.3, "s"+str(i+1))
-            flows2.append(tmp_flows)
-            temp_result = main.Mininet2.flow_comp(flow1=flows[i],flow2=tmp_flows)
-            Flow_Tables = Flow_Tables and temp_result
-            if Flow_Tables == main.FALSE:
-                main.log.info("Differences in flow table for switch: "+str(i+1))
-        if Flow_Tables == main.TRUE:
-            main.log.report("No changes were found in the flow tables")
-        utilities.assert_equals(expect=main.TRUE,actual=Flow_Tables,
-                onpass="No changes were found in the flow tables",
-                onfail="Changes were found in the flow tables")
-
-
-        #Test of LeadershipElection
-
-        leader = ONOS1_ip
-        leader_result = main.TRUE
-        for controller in range(1,num_controllers+1):
-            node = getattr( main, ( 'ONOScli' + str( controller ) ) )#loop through ONOScli handlers
-            leaderN = node.election_test_leader()
-            #verify leader is ONOS1
-            #NOTE even though we restarted ONOS, it is the only one so onos 1 must be leader
+        leader = ONOS1Ip
+        leaderResult = main.TRUE
+        for controller in range( 1, numControllers + 1 ):
+            # loop through ONOScli handlers
+            node = getattr( main, ( 'ONOScli' + str( controller ) ) )
+            leaderN = node.electionTestLeader()
+            # verify leader is ONOS1
+            # NOTE even though we restarted ONOS, it is the only one so onos 1
+            # must be leader
             if leaderN == leader:
-                #all is well
+                # all is well
                 pass
             elif leaderN == main.FALSE:
-                #error in  response
-                main.log.report("Something is wrong with election_test_leader function, check the error logs")
-                leader_result = main.FALSE
+                # error in  response
+                main.log.report( "Something is wrong with " +
+                                 "electionTestLeader function, check the" +
+                                 " error logs" )
+                leaderResult = main.FALSE
             elif leader != leaderN:
-                leader_result = main.FALSE
-                main.log.report("ONOS" + str(controller) + " sees "+str(leaderN) +
-                        " as the leader of the election app. Leader should be "+str(leader) )
-        if leader_result:
-            main.log.report("Leadership election tests passed(consistent view of leader across listeners and a new leader was re-elected if applicable)")
-        utilities.assert_equals(expect=main.TRUE, actual=leader_result,
-                onpass="Leadership election passed",
-                onfail="Something went wrong with Leadership election")
+                leaderResult = main.FALSE
+                main.log.report( "ONOS" + str( controller ) +
+                                 " sees " + str( leaderN ) +
+                                 " as the leader of the election app." +
+                                 " Leader should be " + str( leader ) )
+        if leaderResult:
+            main.log.report( "Leadership election tests passed( consistent " +
+                             "view of leader across listeners and a new " +
+                             "leader was re-elected if applicable )" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=leaderResult,
+            onpass="Leadership election passed",
+            onfail="Something went wrong with Leadership election" )
 
-
-        result = mastership_check and intent_check and Flow_Tables and roles_not_null\
-                and leader_result
-        result = int(result)
+        result = ( mastershipCheck and intentCheck and FlowTables and
+                   rolesNotNull and leaderResult )
+        result = int( result )
         if result == main.TRUE:
-            main.log.report("Constant State Tests Passed")
-        utilities.assert_equals(expect=main.TRUE,actual=result,
-                onpass="Constant State Tests Passed",
-                onfail="Constant state tests failed")
+            main.log.report( "Constant State Tests Passed" )
+        utilities.assert_equals( expect=main.TRUE, actual=result,
+                                onpass="Constant State Tests Passed",
+                                onfail="Constant state tests failed" )
 
-    def CASE8 (self,main):
-        '''
+    def CASE8( self, main ):
+        """
         Compare topo
-        '''
+        """
         import sys
-        sys.path.append("/home/admin/sts") # Trying to remove some dependancies, #FIXME add this path to params
-        from sts.topology.teston_topology import TestONTopology # assumes that sts is already in you PYTHONPATH
+        # FIXME add this path to params
+        sys.path.append( "/home/admin/sts" )
+        # assumes that sts is already in you PYTHONPATH
+        from sts.topology.teston_topology import TestONTopology
         import json
         import time
 
-        description ="Compare ONOS Topology view to Mininet topology"
-        main.case(description)
-        main.log.report(description)
-        main.step("Create TestONTopology object")
+        description = "Compare ONOS Topology view to Mininet topology"
+        main.case( description )
+        main.log.report( description )
+        main.step( "Create TestONTopology object" )
         ctrls = []
         count = 1
         temp = ()
-        temp = temp + (getattr(main,('ONOS' + str(count))),)
-        temp = temp + ("ONOS"+str(count),)
-        temp = temp + (main.params['CTRL']['ip'+str(count)],)
-        temp = temp + (eval(main.params['CTRL']['port'+str(count)]),)
-        ctrls.append(temp)
-        MNTopo = TestONTopology(main.Mininet1, ctrls) # can also add Intent API info for intent operations
+        temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
+        temp = temp + ( "ONOS" + str( count ), )
+        temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
+        temp = temp + \
+            ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
+        ctrls.append( temp )
+        MNTopo = TestONTopology(
+            main.Mininet1,
+            ctrls )  # can also add Intent API info for intent operations
 
-        main.step("Comparing ONOS topology to MN")
-        devices_results = main.TRUE
-        ports_results = main.TRUE
-        links_results = main.TRUE
-        topo_result = main.FALSE
+        main.step( "Comparing ONOS topology to MN" )
+        devicesResults = main.TRUE
+        portsResults = main.TRUE
+        linksResults = main.TRUE
+        topoResult = main.FALSE
         elapsed = 0
         count = 0
-        main.step("Collecting topology information from ONOS")
-        start_time = time.time()
-        while topo_result == main.FALSE and elapsed < 60:
+        main.step( "Collecting topology information from ONOS" )
+        startTime = time.time()
+        while topoResult == main.FALSE and elapsed < 60:
             count = count + 1
             if count > 1:
-                MNTopo = TestONTopology(main.Mininet1, ctrls) # can also add Intent API info for intent operations
-            cli_start = time.time()
+                MNTopo = TestONTopology(
+                    main.Mininet1,
+                    ctrls )
+            cliStart = time.time()
             devices = []
             devices.append( main.ONOScli1.devices() )
-            '''
+            """
             hosts = []
             hosts.append( main.ONOScli1.hosts() )
-            '''
+            """
             ports = []
             ports.append( main.ONOScli1.ports() )
             links = []
             links.append( main.ONOScli1.links() )
-            elapsed = time.time() - start_time
-            print "CLI time: " + str(time.time() - cli_start)
+            elapsed = time.time() - startTime
+            cliTime = time.time() - cliStart
+            print "CLI time: " + str( cliTime )
 
-            for controller in range(num_controllers):
-                if devices[controller] or not "Error" in devices[controller]:
-                    current_devices_result =  main.Mininet1.compare_switches(MNTopo, json.loads(devices[controller]))
+            for controller in range( numControllers ):
+                controllerStr = str( controller + 1 )
+                if devices[ controller ] or "Error" not in devices[
+                        controller ]:
+                    currentDevicesResult = main.Mininet1.compareSwitches(
+                        MNTopo,
+                        json.loads(
+                            devices[ controller ] ) )
                 else:
-                    current_devices_result = main.FALSE
-                utilities.assert_equals(expect=main.TRUE, actual=current_devices_result,
-                        onpass="ONOS"+str(int(controller+1))+" Switches view is correct",
-                        onfail="ONOS"+str(int(controller+1))+" Switches view is incorrect")
+                    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 ports[controller] or not "Error" in ports[controller]:
-                    current_ports_result =  main.Mininet1.compare_ports(MNTopo, json.loads(ports[controller]))
+                if ports[ controller ] or "Error" not in ports[ controller ]:
+                    currentPortsResult = main.Mininet1.comparePorts(
+                        MNTopo,
+                        json.loads(
+                            ports[ controller ] ) )
                 else:
-                    current_ports_result = main.FALSE
-                utilities.assert_equals(expect=main.TRUE, actual=current_ports_result,
-                        onpass="ONOS"+str(int(controller+1))+" ports view is correct",
-                        onfail="ONOS"+str(int(controller+1))+" ports view is incorrect")
+                    currentPortsResult = main.FALSE
+                utilities.assert_equals( expect=main.TRUE,
+                                        actual=currentPortsResult,
+                                        onpass="ONOS" + controllerStr +
+                                        " ports view is correct",
+                                        onfail="ONOS" + controllerStr +
+                                        " ports view is incorrect" )
 
-                if links[controller] or not "Error" in links[controller]:
-                    current_links_result =  main.Mininet1.compare_links(MNTopo, json.loads(links[controller]))
+                if links[ controller ] or "Error" not in links[ controller ]:
+                    currentLinksResult = main.Mininet1.compareLinks(
+                        MNTopo,
+                        json.loads(
+                            links[ controller ] ) )
                 else:
-                    current_links_result = main.FALSE
-                utilities.assert_equals(expect=main.TRUE, actual=current_links_result,
-                        onpass="ONOS"+str(int(controller+1))+" links view is correct",
-                        onfail="ONOS"+str(int(controller+1))+" links view is incorrect")
-            devices_results = devices_results and current_devices_result
-            ports_results = ports_results and current_ports_result
-            links_results = links_results and current_links_result
-            topo_result = devices_results and ports_results and links_results
+                    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" )
+            devicesResults = devicesResults and currentDevicesResult
+            portsResults = portsResults and currentPortsResult
+            linksResults = linksResults and currentLinksResult
+            topoResult = devicesResults and portsResults and linksResults
 
-        topo_result = topo_result and int(count <= 2)
-        main.log.report("Very crass estimate for topology discovery/convergence(note it takes about 1 seconds to read the topology from each ONOS instance): " +\
-                str(elapsed) + " seconds, " + str(count) +" tries" )
+        topoResult = topoResult and int( count <= 2 )
+        note = "note it takes about " + str( int( cliTime ) ) + \
+            " seconds for the test to make all the cli calls to fetch " +\
+            "the topology from each ONOS instance"
+        main.log.report(
+            "Very crass estimate for topology discovery/convergence( " +
+            str( note ) + " ): " + str( elapsed ) + " seconds, " +
+            str( count ) + " tries" )
         if elapsed > 60:
-            main.log.report("Giving up on topology convergence")
-        utilities.assert_equals(expect=main.TRUE, actual=topo_result,
-                onpass="Topology Check Test successful",
-                onfail="Topology Check Test NOT successful")
-        if topo_result == main.TRUE:
-            main.log.report("ONOS topology view matches Mininet topology")
+            main.log.report( "Giving up on topology convergence" )
+        utilities.assert_equals( expect=main.TRUE, actual=topoResult,
+                                onpass="Topology Check Test successful",
+                                onfail="Topology Check Test NOT successful" )
+        if topoResult == main.TRUE:
+            main.log.report( "ONOS topology view matches Mininet topology" )
 
-
-    def CASE9 (self,main):
-        '''
+    def CASE9( self, main ):
+        """
         Link s3-s28 down
-        '''
-        #NOTE: You should probably run a topology check after this
+        """
+        import time
+        # NOTE: You should probably run a topology check after this
 
-        link_sleep = float(main.params['timers']['LinkDiscovery'])
+        linkSleep = float( main.params[ 'timers' ][ 'LinkDiscovery' ] )
 
-        description = "Turn off a link to ensure that Link Discovery is working properly"
-        main.log.report(description)
-        main.case(description)
+        description = "Turn off a link to ensure that Link Discovery " +\
+            "is working properly"
+        main.log.report( description )
+        main.case( description )
 
+        main.step( "Kill Link between s3 and s28" )
+        LinkDown = main.Mininet1.link( END1="s3", END2="s28", OPTION="down" )
+        main.log.info(
+            "Waiting " +
+            str( linkSleep ) +
+            " seconds for link down to be discovered" )
+        time.sleep( linkSleep )
+        utilities.assert_equals( expect=main.TRUE, actual=LinkDown,
+                                onpass="Link down succesful",
+                                onfail="Failed to bring link down" )
+        # TODO do some sort of check here
 
-        main.step("Kill Link between s3 and s28")
-        Link_Down = main.Mininet1.link(END1="s3",END2="s28",OPTION="down")
-        main.log.info("Waiting " + str(link_sleep) + " seconds for link down to be discovered")
-        time.sleep(link_sleep)
-        utilities.assert_equals(expect=main.TRUE,actual=Link_Down,
-                onpass="Link down succesful",
-                onfail="Failed to bring link down")
-        #TODO do some sort of check here
-
-    def CASE10 (self,main):
-        '''
+    def CASE10( self, main ):
+        """
         Link s3-s28 up
-        '''
-        #NOTE: You should probably run a topology check after this
+        """
+        import time
+        # NOTE: You should probably run a topology check after this
 
-        link_sleep = float(main.params['timers']['LinkDiscovery'])
+        linkSleep = float( main.params[ 'timers' ][ 'LinkDiscovery' ] )
 
-        description = "Restore a link to ensure that Link Discovery is working properly"
-        main.log.report(description)
-        main.case(description)
+        description = "Restore a link to ensure that Link Discovery is " + \
+            "working properly"
+        main.log.report( description )
+        main.case( description )
 
-        main.step("Bring link between s3 and s28 back up")
-        Link_Up = main.Mininet1.link(END1="s3",END2="s28",OPTION="up")
-        main.log.info("Waiting " + str(link_sleep) + " seconds for link up to be discovered")
-        time.sleep(link_sleep)
-        utilities.assert_equals(expect=main.TRUE,actual=Link_Up,
-                onpass="Link up succesful",
-                onfail="Failed to bring link up")
-        #TODO do some sort of check here
+        main.step( "Bring link between s3 and s28 back up" )
+        LinkUp = main.Mininet1.link( END1="s3", END2="s28", OPTION="up" )
+        main.log.info(
+            "Waiting " +
+            str( linkSleep ) +
+            " seconds for link up to be discovered" )
+        time.sleep( linkSleep )
+        utilities.assert_equals( expect=main.TRUE, actual=LinkUp,
+                                onpass="Link up succesful",
+                                onfail="Failed to bring link up" )
+        # TODO do some sort of check here
 
-
-    def CASE11 (self, main) :
-        '''
+    def CASE11( self, main ):
+        """
         Switch Down
-        '''
-        #NOTE: You should probably run a topology check after this
+        """
+        # NOTE: You should probably run a topology check after this
         import time
 
-        switch_sleep = float(main.params['timers']['SwitchDiscovery'])
+        switchSleep = float( main.params[ 'timers' ][ 'SwitchDiscovery' ] )
 
         description = "Killing a switch to ensure it is discovered correctly"
-        main.log.report(description)
-        main.case(description)
+        main.log.report( description )
+        main.case( description )
+        switch = main.params[ 'kill' ][ 'switch' ]
+        switchDPID = main.params[ 'kill' ][ 'dpid' ]
 
-        #TODO: Make this switch parameterizable
-        main.step("Kill s28 ")
-        main.log.report("Deleting s28")
-        main.Mininet1.del_switch("s28")
-        main.log.info("Waiting " + str(switch_sleep) + " seconds for switch down to be discovered")
-        time.sleep(switch_sleep)
-        device = main.ONOScli1.get_device(dpid="0028")
-        #Peek at the deleted switch
-        main.log.warn( str(device) )
+        # TODO: Make this switch parameterizable
+        main.step( "Kill " + switch )
+        main.log.report( "Deleting " + switch )
+        main.Mininet1.delSwitch( switch )
+        main.log.info( "Waiting " + str( switchSleep ) +
+                       " seconds for switch down to be discovered" )
+        time.sleep( switchSleep )
+        device = main.ONOScli1.getDevice( dpid=switchDPID )
+        # Peek at the deleted switch
+        main.log.warn( str( device ) )
         result = main.FALSE
-        if device and device['available'] == False:
+        if device and device[ 'available' ] is False:
             result = main.TRUE
-        utilities.assert_equals(expect=main.TRUE,actual=result,
-                onpass="Kill switch succesful",
-                onfail="Failed to kill switch?")
+        utilities.assert_equals( expect=main.TRUE, actual=result,
+                                onpass="Kill switch succesful",
+                                onfail="Failed to kill switch?" )
 
-    def CASE12 (self, main) :
-        '''
+    def CASE12( self, main ):
+        """
         Switch Up
-        '''
-        #NOTE: You should probably run a topology check after this
+        """
+        # NOTE: You should probably run a topology check after this
         import time
 
-        switch_sleep = float(main.params['timers']['SwitchDiscovery'])
+        switchSleep = float( main.params[ 'timers' ][ 'SwitchDiscovery' ] )
+        switch = main.params[ 'kill' ][ 'switch' ]
+        switchDPID = main.params[ 'kill' ][ 'dpid' ]
+        links = main.params[ 'kill' ][ 'links' ].split()
         description = "Adding a switch to ensure it is discovered correctly"
-        main.log.report(description)
-        main.case(description)
+        main.log.report( description )
+        main.case( description )
 
-        main.step("Add back s28")
-        main.log.report("Adding back s28")
-        main.Mininet1.add_switch("s28", dpid = '0000000000002800')
-        #TODO: New dpid or same? Ask Thomas?
-        main.Mininet1.add_link('s28', 's3')
-        main.Mininet1.add_link('s28', 's6')
-        main.Mininet1.add_link('s28', 'h28')
-        main.Mininet1.assign_sw_controller(sw="28",
-                ip1=ONOS1_ip,port1=ONOS1_port)
-        main.log.info("Waiting " + str(switch_sleep) + " seconds for switch up to be discovered")
-        time.sleep(switch_sleep)
-        device = main.ONOScli1.get_device(dpid="0028")
-        #Peek at the deleted switch
-        main.log.warn( str(device) )
+        main.step( "Add back " + switch )
+        main.log.report( "Adding back " + switch )
+        main.Mininet1.addSwitch( switch, dpid=switchDPID )
+        # TODO: New dpid or same? Ask Thomas?
+        for peer in links:
+            main.Mininet1.addLink( switch, peer )
+        main.Mininet1.assignSwController( sw=switch.split( 's' )[ 1 ],
+                                           ip1=ONOS1Ip, port1=ONOS1Port )
+        main.log.info(
+            "Waiting " +
+            str( switchSleep ) +
+            " seconds for switch up to be discovered" )
+        time.sleep( switchSleep )
+        device = main.ONOScli1.getDevice( dpid=switchDPID )
+        # Peek at the deleted switch
+        main.log.warn( str( device ) )
         result = main.FALSE
-        if device and device['available'] == True:
+        if device and device[ 'available' ]:
             result = main.TRUE
-        utilities.assert_equals(expect=main.TRUE,actual=result,
-                onpass="add switch succesful",
-                onfail="Failed to add switch?")
+        utilities.assert_equals( expect=main.TRUE, actual=result,
+                                onpass="add switch succesful",
+                                onfail="Failed to add switch?" )
 
-    def CASE13 (self, main) :
-        '''
+    def CASE13( self, main ):
+        """
         Clean up
-        '''
+        """
         import os
         import time
-        #printing colors to terminal
+        # printing colors to terminal
         colors = {}
-        colors['cyan']   = '\033[96m'
-        colors['purple'] = '\033[95m'
-        colors['blue']   = '\033[94m'
-        colors['green']  = '\033[92m'
-        colors['yellow'] = '\033[93m'
-        colors['red']    = '\033[91m'
-        colors['end']    = '\033[0m'
+        colors[ 'cyan' ] = '\033[96m'
+        colors[ 'purple' ] = '\033[95m'
+        colors[ 'blue' ] = '\033[94m'
+        colors[ 'green' ] = '\033[92m'
+        colors[ 'yellow' ] = '\033[93m'
+        colors[ 'red' ] = '\033[91m'
+        colors[ 'end' ] = '\033[0m'
         description = "Test Cleanup"
-        main.log.report(description)
-        main.case(description)
-        main.step("Killing tcpdumps")
-        main.Mininet2.stop_tcpdump()
+        main.log.report( description )
+        main.case( description )
+        main.step( "Killing tcpdumps" )
+        main.Mininet2.stopTcpdump()
 
-        main.step("Checking ONOS Logs for errors")
-        print colors['purple'] + "Checking logs for errors on ONOS1:" + colors['end']
-        print main.ONOSbench.check_logs(ONOS1_ip)
-        main.step("Copying MN pcap and ONOS log files to test station")
+        main.step( "Checking ONOS Logs for errors" )
+        print colors[ 'purple' ] + "Checking logs for errors on ONOS1:" + \
+            colors[ 'end' ]
+        print main.ONOSbench.checkLogs( ONOS1Ip )
+        main.step( "Copying MN pcap and ONOS log files to test station" )
         testname = main.TEST
-        teststation_user = main.params['TESTONUSER']
-        teststation_IP = main.params['TESTONIP']
-        #NOTE: MN Pcap file is being saved to ~/packet_captures
+        teststationUser = main.params[ 'TESTONUSER' ]
+        teststationIP = main.params[ 'TESTONIP' ]
+        # NOTE: MN Pcap file is being saved to ~/packet_captures
         #       scp this file as MN and TestON aren't necessarily the same vm
-        #FIXME: scp
-        #####mn files
-        #TODO: Load these from params
-        #NOTE: must end in /
-        log_folder = "/opt/onos/log/"
-        log_files = ["karaf.log", "karaf.log.1"]
-        #NOTE: must end in /
-        dst_dir = "~/packet_captures/"
-        for f in log_files:
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS1_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS1-"+f )
-            main.ONOSbench.handle.expect("\$")
+        # FIXME: scp
+        # mn files
+        # TODO: Load these from params
+        # NOTE: must end in /
+        logFolder = "/opt/onos/log/"
+        logFiles = [ "karaf.log", "karaf.log.1" ]
+        # NOTE: must end in /
+        dstDir = "~/packet_captures/"
+        for f in logFiles:
+            main.ONOSbench.handle.sendline( "scp sdn@" + ONOS1Ip + ":" +
+                                            logFolder + f + " " +
+                                            teststationUser + "@" +
+                                            teststationIP + ":" + dstDir +
+                                            str( testname ) + "-ONOS1-" + f )
+            main.ONOSbench.handle.expect( "\$" )
             print main.ONOSbench.handle.before
 
-        #std*.log's
-        #NOTE: must end in /
-        log_folder = "/opt/onos/var/"
-        log_files = ["stderr.log", "stdout.log"]
-        #NOTE: must end in /
-        dst_dir = "~/packet_captures/"
-        for f in log_files:
-            main.ONOSbench.handle.sendline( "scp sdn@"+ONOS1_ip+":"+log_folder+f+" "+
-                    teststation_user +"@"+teststation_IP+":"+\
-                    dst_dir + str(testname) + "-ONOS1-"+f )
+        # std*.log's
+        # NOTE: must end in /
+        logFolder = "/opt/onos/var/"
+        logFiles = [ "stderr.log", "stdout.log" ]
+        # NOTE: must end in /
+        dstDir = "~/packet_captures/"
+        for f in logFiles:
+            main.ONOSbench.handle.sendline( "scp sdn@" + ONOS1Ip + ":" +
+                                            logFolder + f + " " +
+                                            teststationUser + "@" +
+                                            teststationIP + ":" + dstDir +
+                                            str( testname ) + "-ONOS1-" + f )
+        # sleep so scp can finish
+        time.sleep( 10 )
+        main.step( "Packing and rotating pcap archives" )
+        os.system( "~/TestON/dependencies/rotate.sh " + str( testname ) )
 
+        # TODO: actually check something here
+        utilities.assert_equals( expect=main.TRUE, actual=main.TRUE,
+                                onpass="Test cleanup successful",
+                                onfail="Test cleanup NOT successful" )
 
-        #sleep so scp can finish
-        time.sleep(10)
-        main.step("Packing and rotating pcap archives")
-        os.system("~/TestON/dependencies/rotate.sh "+ str(testname))
-
-
-        #TODO: actually check something here
-        utilities.assert_equals(expect=main.TRUE, actual=main.TRUE,
-                onpass="Test cleanup successful",
-                onfail="Test cleanup NOT successful")
-
-    def CASE14 ( self, main ) :
-        '''
+    def CASE14( self, main ):
+        """
         start election app on all onos nodes
-        '''
-        leader_result = main.TRUE
-        #install app on onos 1
-        main.log.info("Install leadership election app")
-        main.ONOScli1.feature_install("onos-app-election")
-        #wait for election
-        #check for leader
-        leader = main.ONOScli1.election_test_leader()
-        #verify leader is ONOS1
-        if leader == ONOS1_ip:
-            #all is well
+        """
+        leaderResult = main.TRUE
+        # install app on onos 1
+        main.log.info( "Install leadership election app" )
+        main.ONOScli1.featureInstall( "onos-app-election" )
+        # wait for election
+        # check for leader
+        leader = main.ONOScli1.electionTestLeader()
+        # verify leader is ONOS1
+        if leader == ONOS1Ip:
+            # all is well
             pass
-        elif leader == None:
-            #No leader elected
-            main.log.report("No leader was elected")
-            leader_result = main.FALSE
+        elif leader is None:
+            # No leader elected
+            main.log.report( "No leader was elected" )
+            leaderResult = main.FALSE
         elif leader == main.FALSE:
-            #error in  response
-            #TODO: add check for "Command not found:" in the driver, this means the app isn't loaded
-            main.log.report("Something is wrong with election_test_leader function, check the error logs")
-            leader_result = main.FALSE
+            # error in  response
+            # TODO: add check for "Command not found:" in the driver, this
+            # means the app isn't loaded
+            main.log.report( "Something is wrong with electionTestLeader" +
+                             " function, check the error logs" )
+            leaderResult = main.FALSE
         else:
-            #error in  response
-            main.log.report("Unexpected response from election_test_leader function:'"+str(leader)+"'")
-            leader_result = main.FALSE
+            # error in  response
+            main.log.report(
+                "Unexpected response from electionTestLeader function:'" +
+                str( leader ) +
+                "'" )
+            leaderResult = main.FALSE
 
-
-
-
-        #install on other nodes and check for leader.
-        #Should be onos1 and each app should show the same leader
-        for controller in range(2,num_controllers+1):
-            node = getattr( main, ( 'ONOScli' + str( controller ) ) )#loop through ONOScli handlers
-            node.feature_install("onos-app-election")
-            leaderN = node.election_test_leader()
-            #verify leader is ONOS1
-            if leaderN == ONOS1_ip:
-                #all is well
+        # install on other nodes and check for leader.
+        # Should be onos1 and each app should show the same leader
+        for controller in range( 2, numControllers + 1 ):
+            # loop through ONOScli handlers
+            node = getattr( main, ( 'ONOScli' + str( controller ) ) )
+            node.featureInstall( "onos-app-election" )
+            leaderN = node.electionTestLeader()
+            # verify leader is ONOS1
+            if leaderN == ONOS1Ip:
+                # all is well
                 pass
             elif leaderN == main.FALSE:
-                #error in  response
-                #TODO: add check for "Command not found:" in the driver, this means the app isn't loaded
-                main.log.report("Something is wrong with election_test_leader function, check the error logs")
-                leader_result = main.FALSE
+                # error in  response
+                # TODO: add check for "Command not found:" in the driver, this
+                # means the app isn't loaded
+                main.log.report( "Something is wrong with " +
+                                 "electionTestLeader function, check the" +
+                                 " error logs" )
+                leaderResult = main.FALSE
             elif leader != leaderN:
-                leader_result = main.FALSE
-                main.log.report("ONOS" + str(controller) + " sees "+str(leaderN) +
-                        " as the leader of the election app. Leader should be "+str(leader) )
-        if leader_result:
-            main.log.report("Leadership election tests passed(consistent view of leader across listeners and a leader was elected)")
-        utilities.assert_equals(expect=main.TRUE, actual=leader_result,
-                onpass="Leadership election passed",
-                onfail="Something went wrong with Leadership election")
+                leaderResult = main.FALSE
+                main.log.report( "ONOS" + str( controller ) + " sees " +
+                                 str( leaderN ) +
+                                 " as the leader of the election app. Leader" +
+                                 " should be " +
+                                 str( leader ) )
+        if leaderResult:
+            main.log.report( "Leadership election tests passed( consistent " +
+                             "view of leader across listeners and a leader " +
+                             "was elected )" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=leaderResult,
+            onpass="Leadership election passed",
+            onfail="Something went wrong with Leadership election" )
 
-    def CASE15 ( self, main ) :
-        '''
+    def CASE15( self, main ):
+        """
         Check that Leadership Election is still functional
-        '''
-        leader_result = main.TRUE
+        """
+        leaderResult = main.TRUE
         description = "Check that Leadership Election is still functional"
-        main.log.report(description)
-        main.case(description)
-        main.step("Find current leader and withdraw")
-        leader = main.ONOScli1.election_test_leader()
-        #TODO: do some sanity checking on leader before using it
-        withdraw_result = main.FALSE
-        if leader == ONOS1_ip:
-            old_leader = getattr( main, "ONOScli1" )
-        elif leader == None or leader == main.FALSE:
-            main.log.report("Leader for the election app should be an ONOS node,"\
-                    +"instead got '"+str(leader)+"'")
-            leader_result = main.FALSE
-        withdraw_result = old_leader.election_test_withdraw()
+        main.log.report( description )
+        main.case( description )
+        main.step( "Find current leader and withdraw" )
+        leader = main.ONOScli1.electionTestLeader()
+        # TODO: do some sanity checking on leader before using it
+        withdrawResult = main.FALSE
+        if leader == ONOS1Ip:
+            oldLeader = getattr( main, "ONOScli1" )
+        elif leader is None or leader == main.FALSE:
+            main.log.report(
+                "Leader for the election app should be an ONOS node," +
+                "instead got '" +
+                str( leader ) +
+                "'" )
+            leaderResult = main.FALSE
+        withdrawResult = oldLeader.electionTestWithdraw()
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=withdrawResult,
+            onpass="App was withdrawn from election",
+            onfail="App was not withdrawn from election" )
 
-
-        main.step("Make sure new leader is elected")
-        leader_list = []
-        leaderN =  main.ONOScli1.election_test_leader() 
+        main.step( "Make sure new leader is elected" )
+        leaderList = []
+        leaderN = main.ONOScli1.electionTestLeader()
         if leaderN == leader:
-            main.log.report("ONOS"+str(controller)+" still sees " + str(leader) +\
-                    " as leader after they withdrew")
-            leader_result = main.FALSE
+            main.log.report( "ONOS still sees " + str( leaderN ) +
+                             " as leader after they withdrew" )
+            leaderResult = main.FALSE
         elif leaderN == main.FALSE:
-            #error in  response
-            #TODO: add check for "Command not found:" in the driver, this means the app isn't loaded
-            main.log.report("Something is wrong with election_test_leader function, check the error logs")
-            leader_result = main.FALSE
-        elif leaderN == None:
-            main.log.info("There is no leader after the app withdrew from election")
-        if leader_result:
-            main.log.report("Leadership election tests passed(There is no leader after the old leader resigned)")
-        utilities.assert_equals(expect=main.TRUE, actual=leader_result,
-                onpass="Leadership election passed",
-                onfail="Something went wrong with Leadership election")
+            # error in  response
+            # TODO: add check for "Command not found:" in the driver, this
+            # means the app isn't loaded
+            main.log.report( "Something is wrong with electionTestLeader " +
+                             "function, check the error logs" )
+            leaderResult = main.FALSE
+        elif leaderN is None:
+            main.log.info(
+                "There is no leader after the app withdrew from election" )
+        if leaderResult:
+            main.log.report( "Leadership election tests passed( There is no " +
+                             "leader after the old leader resigned )" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=leaderResult,
+            onpass="Leadership election passed",
+            onfail="Something went wrong with Leadership election" )
 
-
-        main.step("Run for election on old leader(just so everyone is in the hat)")
-        run_result = old_leader.election_test_run()
-        leader = main.ONOScli1.election_test_leader()
-        #verify leader is ONOS1
-        if leader == ONOS1_ip:
-            leader_result = main.TRUE
+        main.step(
+            "Run for election on old leader( just so everyone is in the hat )" )
+        runResult = oldLeader.electionTestRun()
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=runResult,
+            onpass="App re-ran for election",
+            onfail="App failed to run for election" )
+        leader = main.ONOScli1.electionTestLeader()
+        # verify leader is ONOS1
+        if leader == ONOS1Ip:
+            leaderResult = main.TRUE
         else:
-            leader_result = main.FALSE
-        #TODO: assert on  run and withdraw results?
+            leaderResult = main.FALSE
+        # TODO: assert on  run and withdraw results?
 
-        utilities.assert_equals(expect=main.TRUE, actual=leader_result,
-                onpass="Leadership election passed",
-                onfail="ONOS1's election app was not leader after it re-ran for election")
-
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=leaderResult,
+            onpass="Leadership election passed",
+            onfail="ONOS1's election app was not leader after it re-ran " +
+                   "for election" )
diff --git a/TestON/tests/IntentPerfNext/Dependency/IntentClass.py b/TestON/tests/IntentPerfNext/Dependency/IntentClass.py
new file mode 100644
index 0000000..f5b17c2
--- /dev/null
+++ b/TestON/tests/IntentPerfNext/Dependency/IntentClass.py
@@ -0,0 +1,56 @@
+
+def __init__(self):
+    self_ = self
+
+def printLog(main):
+    main.log.info("Print log success")
+
+def iptablesDropAllNodes(main, MN_ip, sw_port):
+    #INPUT RULES 
+    main.ONOS1.handle.sendline(
+        "sudo iptables -A INPUT -p tcp -s "+
+        MN_ip+" --dport "+sw_port+" -j DROP")
+    main.ONOS2.handle.sendline(
+        "sudo iptables -A INPUT -p tcp -s "+
+        MN_ip+" --dport "+sw_port+" -j DROP")
+    main.ONOS3.handle.sendline(
+        "sudo iptables -A INPUT -p tcp -s "+
+        MN_ip+" --dport "+sw_port+" -j DROP")
+    main.ONOS4.handle.sendline(
+        "sudo iptables -A INPUT -p tcp -s "+
+        MN_ip+" --dport "+sw_port+" -j DROP")
+    main.ONOS5.handle.sendline(
+        "sudo iptables -A INPUT -p tcp -s "+
+        MN_ip+" --dport "+sw_port+" -j DROP")
+    main.ONOS6.handle.sendline(
+        "sudo iptables -A INPUT -p tcp -s "+
+        MN_ip+" --dport "+sw_port+" -j DROP")
+    main.ONOS7.handle.sendline(
+        "sudo iptables -A INPUT -p tcp -s "+
+        MN_ip+" --dport "+sw_port+" -j DROP")
+
+    main.ONOS1.handle.sendline(
+        "sudo iptables -A OUTPUT -p tcp -s "+
+        MN_ip+" --dport "+sw_port+" -j DROP")
+    main.ONOS2.handle.sendline(
+        "sudo iptables -A OUTPUT -p tcp -s "+
+        MN_ip+" --dport "+sw_port+" -j DROP")
+    main.ONOS3.handle.sendline(
+        "sudo iptables -A OUTPUT -p tcp -s "+
+        MN_ip+" --dport "+sw_port+" -j DROP")
+    main.ONOS4.handle.sendline(
+        "sudo iptables -A OUTPUT -p tcp -s "+
+        MN_ip+" --dport "+sw_port+" -j DROP")
+    main.ONOS5.handle.sendline(
+        "sudo iptables -A OUTPUT -p tcp -s "+
+        MN_ip+" --dport "+sw_port+" -j DROP")
+    main.ONOS6.handle.sendline(
+        "sudo iptables -A OUTPUT -p tcp -s "+
+        MN_ip+" --dport "+sw_port+" -j DROP")
+    main.ONOS7.handle.sendline(
+        "sudo iptables -A OUTPUT -p tcp -s "+
+        MN_ip+" --dport "+sw_port+" -j DROP")
+
+def uninstallAllNodes(main, node_ip_list):
+    for node in node_ip_list:
+        main.ONOSbench.onos_uninstall(node_ip = node)
diff --git a/TestON/tests/IntentPerfNext/Dependency/__init__.py b/TestON/tests/IntentPerfNext/Dependency/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/tests/IntentPerfNext/Dependency/__init__.py
diff --git a/TestON/tests/IntentPerfNext/IntentPerfNext.params b/TestON/tests/IntentPerfNext/IntentPerfNext.params
index edba27b..8909059 100644
--- a/TestON/tests/IntentPerfNext/IntentPerfNext.params
+++ b/TestON/tests/IntentPerfNext/IntentPerfNext.params
@@ -1,5 +1,5 @@
 <PARAMS>
-    <testcases>1,5,7,2,3</testcases>
+    <testcases>1,4,5,2,3,4,5,2,3,4,5,2,3,4</testcases>
 
     <ENV>
         <cellName>intent_perf_test</cellName>
@@ -36,13 +36,15 @@
 
     <TEST>
         #Number of times to iterate each case
-        <numIter>15</numIter>
-        <numIgnore>3</numIgnore>
-        <numSwitch>9</numSwitch>
+        <numIter>3</numIter>
+        <numIgnore>2</numIgnore>
+        <numSwitch>8</numSwitch>
         <batchThresholdMin>0</batchThresholdMin>
         <batchThresholdMax>1000</batchThresholdMax>
-        <batchIntentSize>200</batchIntentSize>
+        <batchIntentSize>1</batchIntentSize>
         <numMult>1</numMult>
+        #Interface to bring down for intent reroute case
+        <intfs>s3-eth2</intfs>
     </TEST>
 
     <JSON>
diff --git a/TestON/tests/IntentPerfNext/IntentPerfNext.py b/TestON/tests/IntentPerfNext/IntentPerfNext.py
index daa1ae2..40a1276 100644
--- a/TestON/tests/IntentPerfNext/IntentPerfNext.py
+++ b/TestON/tests/IntentPerfNext/IntentPerfNext.py
@@ -15,95 +15,94 @@
         ONOS startup sequence
         """
         import time
-        global cluster_count
-        cluster_count = 1
+        global clusterCount
+        clusterCount = 1
 
-        cell_name = main.params[ 'ENV' ][ 'cellName' ]
+        cellName = main.params[ 'ENV' ][ 'cellName' ]
 
-        git_pull = main.params[ 'GIT' ][ 'autoPull' ]
-        checkout_branch = main.params[ 'GIT' ][ 'checkout' ]
+        gitPull = main.params[ 'GIT' ][ 'autoPull' ]
+        checkoutBranch = main.params[ 'GIT' ][ 'checkout' ]
 
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
-        ONOS4_ip = main.params[ 'CTRL' ][ 'ip4' ]
-        ONOS5_ip = main.params[ 'CTRL' ][ 'ip5' ]
-        ONOS6_ip = main.params[ 'CTRL' ][ 'ip6' ]
-        ONOS7_ip = main.params[ 'CTRL' ][ 'ip7' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS4Ip = main.params[ 'CTRL' ][ 'ip4' ]
+        ONOS5Ip = main.params[ 'CTRL' ][ 'ip5' ]
+        ONOS6Ip = main.params[ 'CTRL' ][ 'ip6' ]
+        ONOS7Ip = main.params[ 'CTRL' ][ 'ip7' ]
 
-        main.ONOSbench.onos_uninstall( node_ip=ONOS1_ip )
-        main.ONOSbench.onos_uninstall( node_ip=ONOS2_ip )
-        main.ONOSbench.onos_uninstall( node_ip=ONOS3_ip )
-        main.ONOSbench.onos_uninstall( node_ip=ONOS4_ip )
-        main.ONOSbench.onos_uninstall( node_ip=ONOS5_ip )
-        main.ONOSbench.onos_uninstall( node_ip=ONOS6_ip )
-        main.ONOSbench.onos_uninstall( node_ip=ONOS7_ip )
+        main.ONOSbench.onosUninstall( nodeIp=ONOS1Ip )
+        main.ONOSbench.onosUninstall( nodeIp=ONOS2Ip )
+        main.ONOSbench.onosUninstall( nodeIp=ONOS3Ip )
+        main.ONOSbench.onosUninstall( nodeIp=ONOS4Ip )
+        main.ONOSbench.onosUninstall( nodeIp=ONOS5Ip )
+        main.ONOSbench.onosUninstall( nodeIp=ONOS6Ip )
+        main.ONOSbench.onosUninstall( nodeIp=ONOS7Ip )
 
-        MN1_ip = main.params[ 'MN' ][ 'ip1' ]
-        BENCH_ip = main.params[ 'BENCH' ][ 'ip' ]
+        MN1Ip = main.params[ 'MN' ][ 'ip1' ]
+        BENCHIp = main.params[ 'BENCH' ][ 'ip' ]
 
         main.case( "Setting up test environment" )
 
         main.step( "Creating cell file" )
-        cell_file_result = main.ONOSbench.create_cell_file(
-            BENCH_ip, cell_name, MN1_ip,
+        cellFileResult = main.ONOSbench.createCellFile(
+            BENCHIp, cellName, MN1Ip,
             "onos-core,onos-app-metrics,onos-gui",
-            # ONOS1_ip, ONOS2_ip, ONOS3_ip )
-            ONOS1_ip )
+            ONOS1Ip )
 
         main.step( "Applying cell file to environment" )
-        cell_apply_result = main.ONOSbench.set_cell( cell_name )
-        verify_cell_result = main.ONOSbench.verify_cell()
+        cellApplyResult = main.ONOSbench.setCell( cellName )
+        verifyCellResult = main.ONOSbench.verifyCell()
 
         main.step( "Removing raft logs" )
-        main.ONOSbench.onos_remove_raft_logs()
+        main.ONOSbench.onosRemoveRaftLogs()
 
-        main.step( "Git checkout and pull " + checkout_branch )
-        if git_pull == 'on':
-            checkout_result = \
-                main.ONOSbench.git_checkout( checkout_branch )
-            pull_result = main.ONOSbench.git_pull()
+        main.step( "Git checkout and pull " + checkoutBranch )
+        if gitPull == 'on':
+            checkoutResult = \
+                main.ONOSbench.gitCheckout( checkoutBranch )
+            pullResult = main.ONOSbench.gitPull()
 
             # If you used git pull, auto compile
             main.step( "Using onos-build to compile ONOS" )
-            build_result = main.ONOSbench.onos_build()
+            buildResult = main.ONOSbench.onosBuild()
         else:
-            checkout_result = main.TRUE
-            pull_result = main.TRUE
-            build_result = main.TRUE
+            checkoutResult = main.TRUE
+            pullResult = main.TRUE
+            buildResult = main.TRUE
             main.log.info( "Git pull skipped by configuration" )
 
         main.log.report( "Commit information - " )
-        main.ONOSbench.get_version( report=True )
+        main.ONOSbench.getVersion( report=True )
 
         main.step( "Creating ONOS package" )
-        package_result = main.ONOSbench.onos_package()
+        packageResult = main.ONOSbench.onosPackage()
 
         main.step( "Installing ONOS package" )
-        install1_result = main.ONOSbench.onos_install( node=ONOS1_ip )
-        #install2_result = main.ONOSbench.onos_install( node=ONOS2_ip )
-        #install3_result = main.ONOSbench.onos_install( node=ONOS3_ip )
+        install1Result = main.ONOSbench.onosInstall( node=ONOS1Ip )
+        #install2Result = main.ONOSbench.onosInstall( node=ONOS2Ip )
+        #install3Result = main.ONOSbench.onosInstall( node=ONOS3Ip )
 
         main.step( "Set cell for ONOScli env" )
-        main.ONOS1cli.set_cell( cell_name )
-        # main.ONOS2cli.set_cell( cell_name )
-        # main.ONOS3cli.set_cell( cell_name )
+        main.ONOS1cli.setCell( cellName )
+        # main.ONOS2cli.setCell( cellName )
+        # main.ONOS3cli.setCell( cellName )
 
         time.sleep( 5 )
 
         main.step( "Start onos cli" )
-        cli1 = main.ONOS1cli.start_onos_cli( ONOS1_ip )
-        #cli2 = main.ONOS2cli.start_onos_cli( ONOS2_ip )
-        #cli3 = main.ONOS3cli.start_onos_cli( ONOS3_ip )
+        cli1 = main.ONOS1cli.startOnosCli( ONOS1Ip )
+        #cli2 = main.ONOS2cli.startOnosCli( ONOS2Ip )
+        #cli3 = main.ONOS3cli.startOnosCli( ONOS3Ip )
 
         utilities.assert_equals( expect=main.TRUE,
-                                 actual=cell_file_result and cell_apply_result and
-                                 verify_cell_result and checkout_result and
-                                 pull_result and build_result and
-                                 install1_result,  # and install2_result and
-                                 # install3_result,
-                                 onpass="ONOS started successfully",
-                                 onfail="Failed to start ONOS" )
+                                actual=cellFileResult and cellApplyResult and
+                                verifyCellResult and checkoutResult and
+                                pullResult and buildResult and
+                                install1Result,  # and install2Result and
+                                # install3Result,
+                                onpass="ONOS started successfully",
+                                onfail="Failed to start ONOS" )
 
     def CASE2( self, main ):
         """
@@ -115,136 +114,252 @@
         import requests
         import os
         import numpy
+        global clusterCount
 
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
-        ONOS_user = main.params[ 'CTRL' ][ 'user' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOSIpList = []
+        for i in range( 1, 8 ):
+            ONOSIpList.append( main.params[ 'CTRL' ][ 'ip' + str( i ) ] )
 
-        default_sw_port = main.params[ 'CTRL' ][ 'port1' ]
+        ONOSUser = main.params[ 'CTRL' ][ 'user' ]
+
+        defaultSwPort = main.params[ 'CTRL' ][ 'port1' ]
 
         # number of iterations of case
-        num_iter = main.params[ 'TEST' ][ 'numIter' ]
-        num_ignore = int( main.params[ 'TEST' ][ 'numIgnore' ] )
+        numIter = main.params[ 'TEST' ][ 'numIter' ]
+        numIgnore = int( main.params[ 'TEST' ][ 'numIgnore' ] )
 
         # Timestamp keys for json metrics output
-        submit_time = main.params[ 'JSON' ][ 'submittedTime' ]
-        install_time = main.params[ 'JSON' ][ 'installedTime' ]
-        wdRequest_time = main.params[ 'JSON' ][ 'wdRequestTime' ]
-        withdrawn_time = main.params[ 'JSON' ][ 'withdrawnTime' ]
+        submitTime = main.params[ 'JSON' ][ 'submittedTime' ]
+        installTime = main.params[ 'JSON' ][ 'installedTime' ]
+        wdRequestTime = main.params[ 'JSON' ][ 'wdRequestTime' ]
+        withdrawnTime = main.params[ 'JSON' ][ 'withdrawnTime' ]
 
-        intent_add_lat_list = []
+        assertion = main.TRUE
 
-        # Assign 'linear' switch format for basic intent testing
-        main.Mininet1.assign_sw_controller(
-            sw="1", ip1=ONOS1_ip, port1=default_sw_port )
-        main.Mininet1.assign_sw_controller(
-            sw="2", ip1=ONOS2_ip, port1=default_sw_port )
-        main.Mininet1.assign_sw_controller(
-            sw="3", ip1=ONOS2_ip, port1=default_sw_port )
-        main.Mininet1.assign_sw_controller(
-            sw="4", ip1=ONOS2_ip, port1=default_sw_port )
-        main.Mininet1.assign_sw_controller(
-            sw="5", ip1=ONOS3_ip, port1=default_sw_port )
+        intentAddLatList = []
+
+        # Distribute switches according to cluster count
+        for i in range( 1, 9 ):
+            if clusterCount == 1:
+                main.Mininet1.assignSwController(
+                    sw=str( i ), ip1=ONOSIpList[ 0 ],
+                    port1=defaultSwPort
+                )
+            elif clusterCount == 3:
+                if i < 3:
+                    index = 0
+                elif i < 6 and i >= 3:
+                    index = 1
+                else:
+                    index = 2
+                main.Mininet1.assignSwController(
+                    sw=str( i ), ip1=ONOSIpList[ index ],
+                    port1=defaultSwPort
+                )
+            elif clusterCount == 5:
+                if i < 3:
+                    index = 0
+                elif i < 5 and i >= 3:
+                    index = 1
+                elif i < 7 and i >= 5:
+                    index = 2
+                elif i == 7:
+                    index = 3
+                else:
+                    index = 4
+                main.Mininet1.assignSwController(
+                    sw=str( i ), ip1=ONOSIpList[ index ],
+                    port1=defaultSwPort
+                )
+            elif clusterCount == 7:
+                if i < 6:
+                    index = i
+                else:
+                    index = 6
+                main.Mininet1.assignSwController(
+                    sw=str( i ), ip1=ONOSIpList[ index ],
+                    port1=defaultSwPort
+                )
 
         time.sleep( 10 )
 
         main.log.report( "Single intent add latency test" )
 
-        devices_json_str = main.ONOS1cli.devices()
-        devices_json_obj = json.loads( devices_json_str )
-        device_id_list = []
+        devicesJsonStr = main.ONOS1cli.devices()
+        devicesJsonObj = json.loads( devicesJsonStr )
+
+        if not devicesJsonObj:
+            main.log.report( "Devices not discovered" )
+            main.log.report( "Aborting test" )
+            main.exit()
+        else:
+            main.log.info( "Devices discovered successfully" )
+
+        deviceIdList = []
 
         # Obtain device id list in ONOS format.
         # They should already be in order ( 1,2,3,10,11,12,13, etc )
-        for device in devices_json_obj:
-            device_id_list.append( device[ 'id' ] )
+        for device in devicesJsonObj:
+            deviceIdList.append( device[ 'id' ] )
 
-        for i in range( 0, int( num_iter ) ):
-            # add_point_intent( ingr_device,  egr_device,
-            #                 ingr_port,    egr_port )
-            main.ONOS1cli.add_point_intent(
-                device_id_list[ 0 ] + "/1", device_id_list[ 4 ] + "/1" )
+        for i in range( 0, int( numIter ) ):
+            # addPointIntent( ingrDevice,  egrDevice,
+            #                 ingrPort,    egrPort )
+            main.ONOS1cli.addPointIntent(
+                deviceIdList[ 0 ] + "/2", deviceIdList[ 7 ] + "/2" )
 
             # Allow some time for intents to propagate
             time.sleep( 5 )
 
+            intentsStr = main.ONOS1cli.intents( jsonFormat=True )
+            intentsObj = json.loads( intentsStr )
+            for intent in intentsObj:
+                if intent[ 'state' ] == "INSTALLED":
+                    main.log.info( "Intent installed successfully" )
+                    intentId = intent[ 'id' ]
+                    main.log.info( "Intent id: " + str( intentId ) )
+                else:
+                    # TODO: Add error handling
+                    main.log.info( "Intent installation failed" )
+                    intentId = ""
+
             # Obtain metrics from ONOS 1, 2, 3
-            intents_json_str_1 = main.ONOS1cli.intents_events_metrics()
-            intents_json_str_2 = main.ONOS2cli.intents_events_metrics()
-            intents_json_str_3 = main.ONOS3cli.intents_events_metrics()
-
-            intents_json_obj_1 = json.loads( intents_json_str_1 )
-            intents_json_obj_2 = json.loads( intents_json_str_2 )
-            intents_json_obj_3 = json.loads( intents_json_str_3 )
-
+            intentsJsonStr1 = main.ONOS1cli.intentsEventsMetrics()
+            intentsJsonObj1 = json.loads( intentsJsonStr1 )
             # Parse values from the json object
-            intent_submit_1 = \
-                intents_json_obj_1[ submit_time ][ 'value' ]
-            intent_submit_2 = \
-                intents_json_obj_2[ submit_time ][ 'value' ]
-            intent_submit_3 = \
-                intents_json_obj_3[ submit_time ][ 'value' ]
+            intentSubmit1 = \
+                intentsJsonObj1[ submitTime ][ 'value' ]
+            intentInstall1 = \
+                intentsJsonObj1[ installTime ][ 'value' ]
+            intentInstallLat1 = \
+                int( intentInstall1 ) - int( intentSubmit1 )
 
-            intent_install_1 = \
-                intents_json_obj_1[ install_time ][ 'value' ]
-            intent_install_2 = \
-                intents_json_obj_2[ install_time ][ 'value' ]
-            intent_install_3 = \
-                intents_json_obj_3[ install_time ][ 'value' ]
+            if clusterCount == 3:
+                intentsJsonStr2 = main.ONOS2cli.intentsEventsMetrics()
+                intentsJsonStr3 = main.ONOS3cli.intentsEventsMetrics()
+                intentsJsonObj2 = json.loads( intentsJsonStr2 )
+                intentsJsonObj3 = json.loads( intentsJsonStr3 )
+                intentSubmit2 = \
+                    intentsJsonObj2[ submitTime ][ 'value' ]
+                intentSubmit3 = \
+                    intentsJsonObj3[ submitTime ][ 'value' ]
+                intentInstall2 = \
+                    intentsJsonObj2[ installTime ][ 'value' ]
+                intentInstall3 = \
+                    intentsJsonObj3[ installTime ][ 'value' ]
+                intentInstallLat2 = \
+                    int( intentInstall2 ) - int( intentSubmit2 )
+                intentInstallLat3 = \
+                    int( intentInstall3 ) - int( intentSubmit3 )
+            else:
+                intentInstallLat2 = 0
+                intentInstallLat3 = 0
 
-            intent_install_lat_1 = \
-                int( intent_install_1 ) - int( intent_submit_1 )
-            intent_install_lat_2 = \
-                int( intent_install_2 ) - int( intent_submit_2 )
-            intent_install_lat_3 = \
-                int( intent_install_3 ) - int( intent_submit_3 )
+            if clusterCount == 5:
+                intentsJsonStr4 = main.ONOS4cli.intentsEventsMetrics()
+                intentsJsonStr5 = main.ONOS5cli.intentsEventsMetrics()
+                intentsJsonObj4 = json.loads( intentsJsonStr4 )
+                intentsJsonObj5 = json.loads( intentsJsonStr5 )
+                intentSubmit4 = \
+                    intentsJsonObj4[ submitTime ][ 'value' ]
+                intentSubmit5 = \
+                    intentsJsonObj5[ submitTime ][ 'value' ]
+                intentInstall4 = \
+                    intentsJsonObj5[ installTime ][ 'value' ]
+                intentInstall5 = \
+                    intentsJsonObj5[ installTime ][ 'value' ]
+                intentInstallLat4 = \
+                    int( intentInstall4 ) - int( intentSubmit4 )
+                intentInstallLat5 = \
+                    int( intentInstall5 ) - int( intentSubmit5 )
+            else:
+                intentInstallLat4 = 0
+                intentInstallLat5 = 0
 
-            intent_install_lat_avg = \
-                ( intent_install_lat_1 +
-                  intent_install_lat_2 +
-                  intent_install_lat_3 ) / 3
+            if clusterCount == 7:
+                intentsJsonStr6 = main.ONOS6cli.intentsEventsMetrics()
+                intentsJsonStr7 = main.ONOS7cli.intentsEventsMetrics()
+                intentsJsonObj6 = json.loads( intentsJsonStr6 )
+                intentsJsonObj7 = json.loads( intentsJsonStr7 )
+                intentSubmit6 = \
+                    intentsJsonObj6[ submitTime ][ 'value' ]
+                intentSubmit7 = \
+                    intentsJsonObj6[ submitTime ][ 'value' ]
+                intentInstall6 = \
+                    intentsJsonObj6[ installTime ][ 'value' ]
+                intentInstall7 = \
+                    intentsJsonObj7[ installTime ][ 'value' ]
+                intentInstallLat6 = \
+                    int( intentInstall6 ) - int( intentSubmit6 )
+                intentInstallLat7 = \
+                    int( intentInstall7 ) - int( intentSubmit7 )
+            else:
+                intentInstallLat6 = 0
+                intentInstallLat7 = 0
+
+            intentInstallLatAvg = \
+                ( intentInstallLat1 +
+                  intentInstallLat2 +
+                  intentInstallLat3 +
+                  intentInstallLat4 +
+                  intentInstallLat5 +
+                  intentInstallLat6 +
+                  intentInstallLat7 ) / clusterCount
 
             main.log.info( "Intent add latency avg for iteration " + str( i ) +
-                           ": " + str( intent_install_lat_avg ) + " ms" )
+                           ": " + str( intentInstallLatAvg ) + " ms" )
 
-            if intent_install_lat_avg > 0.0 and \
-               intent_install_lat_avg < 1000 and i > num_ignore:
-                intent_add_lat_list.append( intent_install_lat_avg )
+            if intentInstallLatAvg > 0.0 and \
+               intentInstallLatAvg < 1000 and i > numIgnore:
+                intentAddLatList.append( intentInstallLatAvg )
             else:
                 main.log.info( "Intent add latency exceeded " +
                                "threshold. Skipping iteration " + str( i ) )
 
             time.sleep( 3 )
 
-            # TODO: Possibly put this in the driver function
+            # TODO: Only remove intents that were installed
+            #      in this case... Otherwise many other intents
+            #      may show up distorting the results
             main.log.info( "Removing intents for next iteration" )
-            json_temp = \
-                main.ONOS1cli.intents( json_format=True )
-            json_obj_intents = json.loads( json_temp )
-            if json_obj_intents:
-                for intents in json_obj_intents:
-                    temp_id = intents[ 'id' ]
-                    main.ONOS1cli.remove_intent( temp_id )
+            jsonTemp = \
+                main.ONOS1cli.intents( jsonFormat=True )
+            jsonObjIntents = json.loads( jsonTemp )
+            if jsonObjIntents:
+                for intents in jsonObjIntents:
+                    tempId = intents[ 'id' ]
+                    # main.ONOS1cli.removeIntent( tempId )
                     main.log.info( "Removing intent id: " +
-                                   str( temp_id ) )
-                    main.ONOS1cli.remove_intent( temp_id )
+                                   str( tempId ) )
+                    main.ONOS1cli.removeIntent( tempId )
             else:
                 main.log.info( "Intents were not installed correctly" )
 
             time.sleep( 5 )
 
-        intent_add_lat_avg = sum( intent_add_lat_list ) /\
-            len( intent_add_lat_list )
-        intent_add_lat_std = \
-            round( numpy.std( intent_add_lat_list ), 1 )
+        if intentAddLatList:
+            intentAddLatAvg = sum( intentAddLatList ) /\
+                len( intentAddLatList )
+        else:
+            main.log.report( "Intent installation latency test failed" )
+            intentAddLatAvg = "NA"
+            assertion = main.FALSE
+
+        intentAddLatStd = \
+            round( numpy.std( intentAddLatList ), 1 )
         # END ITERATION FOR LOOP
         main.log.report( "Single intent add latency - " )
-        main.log.report( "Avg: " + str( intent_add_lat_avg ) + " ms" )
-        main.log.report(
-            "Std Deviation: " +
-            str( intent_add_lat_std ) +
-            " ms" )
+        main.log.report( "Avg: " + str( intentAddLatAvg ) + " ms" )
+        main.log.report( "Std Deviation: " + str( intentAddLatStd ) + " ms" )
+
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=assertion,
+            onpass="Single intent install latency test successful",
+            onfail="Single intent install latency test failed" )
 
     def CASE3( self, main ):
         """
@@ -255,261 +370,188 @@
         import requests
         import os
         import numpy
+        global clusterCount
 
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
-        ONOS_user = main.params[ 'CTRL' ][ 'user' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOSUser = main.params[ 'CTRL' ][ 'user' ]
 
-        default_sw_port = main.params[ 'CTRL' ][ 'port1' ]
+        defaultSwPort = main.params[ 'CTRL' ][ 'port1' ]
 
         # number of iterations of case
-        num_iter = main.params[ 'TEST' ][ 'numIter' ]
-        num_ignore = int( main.params[ 'TEST' ][ 'numIgnore' ] )
+        numIter = main.params[ 'TEST' ][ 'numIter' ]
+        numIgnore = int( main.params[ 'TEST' ][ 'numIgnore' ] )
+        assertion = main.TRUE
 
         # Timestamp keys for json metrics output
-        submit_time = main.params[ 'JSON' ][ 'submittedTime' ]
-        install_time = main.params[ 'JSON' ][ 'installedTime' ]
-        wdRequest_time = main.params[ 'JSON' ][ 'wdRequestTime' ]
-        withdrawn_time = main.params[ 'JSON' ][ 'withdrawnTime' ]
+        submitTime = main.params[ 'JSON' ][ 'submittedTime' ]
+        installTime = main.params[ 'JSON' ][ 'installedTime' ]
+        wdRequestTime = main.params[ 'JSON' ][ 'wdRequestTime' ]
+        withdrawnTime = main.params[ 'JSON' ][ 'withdrawnTime' ]
 
-        devices_json_str = main.ONOS1cli.devices()
-        devices_json_obj = json.loads( devices_json_str )
+        # NOTE: May need to configure interface depending on topology
+        intfs = main.params[ 'TEST' ][ 'intfs' ]
 
-        device_id_list = []
+        devicesJsonStr = main.ONOS1cli.devices()
+        devicesJsonObj = json.loads( devicesJsonStr )
+
+        deviceIdList = []
 
         # Obtain device id list in ONOS format.
         # They should already be in order ( 1,2,3,10,11,12,13, etc )
-        for device in devices_json_obj:
-            device_id_list.append( device[ 'id' ] )
+        for device in devicesJsonObj:
+            deviceIdList.append( device[ 'id' ] )
 
-        intent_reroute_lat_list = []
+        intentRerouteLatList = []
 
-        for i in range( 0, int( num_iter ) ):
-            # add_point_intent( ingr_device, ingr_port,
-            #                 egr_device, egr_port )
-            if len( device_id_list ) > 0:
-                main.ONOS1cli.add_point_intent(
-                    device_id_list[ 0 ] + "/2", device_id_list[ 4 ] + "/1" )
+        for i in range( 0, int( numIter ) ):
+            # addPointIntent( ingrDevice, ingrPort,
+            #                 egrDevice, egrPort )
+            if len( deviceIdList ) > 0:
+                main.ONOS1cli.addPointIntent(
+                    deviceIdList[ 0 ] + "/2", deviceIdList[ 7 ] + "/2" )
             else:
                 main.log.info( "Failed to fetch devices from ONOS" )
 
             time.sleep( 5 )
 
-            intents_str = main.ONOS1cli.intents( json_format=True )
-            intents_obj = json.loads( intents_str )
-            for intent in intents_obj:
+            intentsStr = main.ONOS1cli.intents( jsonFormat=True )
+            intentsObj = json.loads( intentsStr )
+            for intent in intentsObj:
                 if intent[ 'state' ] == "INSTALLED":
                     main.log.info( "Intent installed successfully" )
-                    intent_id = intent[ 'id' ]
+                    intentId = intent[ 'id' ]
+                    main.log.info( "Intent id: " + str( intentId ) )
                 else:
                     # TODO: Add error handling
                     main.log.info( "Intent installation failed" )
-                    intent_id = ""
+                    intentId = ""
 
-            # NOTE: this interface is specific to
-            #      topo-intentFlower.py topology
-            #      reroute case.
-            main.log.info( "Disabling interface s2-eth3" )
+            main.log.info( "Disabling interface " + intfs )
+            t0System = time.time() * 1000
             main.Mininet1.handle.sendline(
-                "sh ifconfig s2-eth3 down" )
-            t0_system = time.time() * 1000
+                "sh ifconfig " + intfs + " down" )
+            main.Mininet1.handle.expect( "mininet>" )
 
             # TODO: Check for correct intent reroute
-            time.sleep( 5 )
+            time.sleep( 1 )
 
             # Obtain metrics from ONOS 1, 2, 3
-            intents_json_str_1 = main.ONOS1cli.intents_events_metrics()
-            intents_json_str_2 = main.ONOS2cli.intents_events_metrics()
-            intents_json_str_3 = main.ONOS3cli.intents_events_metrics()
-
-            intents_json_obj_1 = json.loads( intents_json_str_1 )
-            intents_json_obj_2 = json.loads( intents_json_str_2 )
-            intents_json_obj_3 = json.loads( intents_json_str_3 )
-
+            intentsJsonStr1 = main.ONOS1cli.intentsEventsMetrics()
+            intentsJsonObj1 = json.loads( intentsJsonStr1 )
             # Parse values from the json object
-            intent_install_1 = \
-                intents_json_obj_1[ install_time ][ 'value' ]
-            intent_install_2 = \
-                intents_json_obj_2[ install_time ][ 'value' ]
-            intent_install_3 = \
-                intents_json_obj_3[ install_time ][ 'value' ]
+            intentInstall1 = \
+                intentsJsonObj1[ installTime ][ 'value' ]
+            intentRerouteLat1 = \
+                int( intentInstall1 ) - int( t0System )
 
-            intent_reroute_lat_1 = \
-                int( intent_install_1 ) - int( t0_system )
-            intent_reroute_lat_2 = \
-                int( intent_install_2 ) - int( t0_system )
-            intent_reroute_lat_3 = \
-                int( intent_install_3 ) - int( t0_system )
+            if clusterCount == 3:
+                intentsJsonStr2 = main.ONOS2cli.intentsEventsMetrics()
+                intentsJsonStr3 = main.ONOS3cli.intentsEventsMetrics()
 
-            intent_reroute_lat_avg = \
-                ( intent_reroute_lat_1 +
-                  intent_reroute_lat_2 +
-                  intent_reroute_lat_3 ) / 3
+                intentsJsonObj2 = json.loads( intentsJsonStr2 )
+                intentsJsonObj3 = json.loads( intentsJsonStr3 )
+                intentInstall2 = \
+                    intentsJsonObj2[ installTime ][ 'value' ]
+                intentInstall3 = \
+                    intentsJsonObj3[ installTime ][ 'value' ]
+                intentRerouteLat2 = \
+                    int( intentInstall2 ) - int( t0System )
+                intentRerouteLat3 = \
+                    int( intentInstall3 ) - int( t0System )
+            else:
+                intentRerouteLat2 = 0
+                intentRerouteLat3 = 0
+
+            if clusterCount == 5:
+                intentsJsonStr4 = main.ONOS4cli.intentsEventsMetrics()
+                intentsJsonStr5 = main.ONOS5cli.intentsEventsMetrics()
+
+                intentsJsonObj4 = json.loads( intentsJsonStr4 )
+                intentsJsonObj5 = json.loads( intentsJsonStr5 )
+                intentInstall4 = \
+                    intentsJsonObj4[ installTime ][ 'value' ]
+                intentInstall5 = \
+                    intentsJsonObj5[ installTime ][ 'value' ]
+                intentRerouteLat4 = \
+                    int( intentInstall4 ) - int( t0System )
+                intentRerouteLat5 = \
+                    int( intentInstall5 ) - int( t0System )
+            else:
+                intentRerouteLat4 = 0
+                intentRerouteLat5 = 0
+
+            if clusterCount == 7:
+                intentsJsonStr6 = main.ONOS6cli.intentsEventsMetrics()
+                intentsJsonStr7 = main.ONOS7cli.intentsEventsMetrics()
+
+                intentsJsonObj6 = json.loads( intentsJsonStr6 )
+                intentsJsonObj7 = json.loads( intentsJsonStr7 )
+                intentInstall6 = \
+                    intentsJsonObj6[ installTime ][ 'value' ]
+                intentInstall7 = \
+                    intentsJsonObj7[ installTime ][ 'value' ]
+                intentRerouteLat6 = \
+                    int( intentInstall6 ) - int( t0System )
+                intentRerouteLat7 = \
+                    int( intentInstall7 ) - int( t0System )
+            else:
+                intentRerouteLat6 = 0
+                intentRerouteLat7 = 0
+
+            intentRerouteLatAvg = \
+                ( intentRerouteLat1 +
+                  intentRerouteLat2 +
+                  intentRerouteLat3 +
+                  intentRerouteLat4 +
+                  intentRerouteLat5 +
+                  intentRerouteLat6 +
+                  intentRerouteLat7 ) / clusterCount
 
             main.log.info( "Intent reroute latency avg for iteration " +
-                           str( i ) + ": " + str( intent_reroute_lat_avg ) )
+                           str( i ) + ": " + str( intentRerouteLatAvg ) )
 
-            if intent_reroute_lat_avg > 0.0 and \
-               intent_reroute_lat_avg < 1000 and i > num_ignore:
-                intent_reroute_lat_list.append( intent_reroute_lat_avg )
+            if intentRerouteLatAvg > 0.0 and \
+               intentRerouteLatAvg < 1000 and i > numIgnore:
+                intentRerouteLatList.append( intentRerouteLatAvg )
             else:
                 main.log.info( "Intent reroute latency exceeded " +
                                "threshold. Skipping iteration " + str( i ) )
 
             main.log.info( "Removing intents for next iteration" )
-            main.ONOS1cli.remove_intent( intent_id )
+            main.ONOS1cli.removeIntent( intentId )
 
             main.log.info( "Bringing Mininet interface up for next " +
                            "iteration" )
             main.Mininet1.handle.sendline(
-                "sh ifconfig s2-eth3 up" )
+                "sh ifconfig " + intfs + " up" )
+            main.Mininet1.handle.expect( "mininet>" )
 
-        intent_reroute_lat_avg = sum( intent_reroute_lat_list ) /\
-            len( intent_reroute_lat_list )
-        intent_reroute_lat_std = \
-            round( numpy.std( intent_reroute_lat_list ), 1 )
+        if intentRerouteLatList:
+            intentRerouteLatAvg = sum( intentRerouteLatList ) /\
+                len( intentRerouteLatList )
+        else:
+            main.log.report( "Intent reroute test failed. Results NA" )
+            intentRerouteLatAvg = "NA"
+            # NOTE: fails test when list is empty
+            assertion = main.FALSE
+
+        intentRerouteLatStd = \
+            round( numpy.std( intentRerouteLatList ), 1 )
         # END ITERATION FOR LOOP
         main.log.report( "Single intent reroute latency - " )
-        main.log.report( "Avg: " + str( intent_reroute_lat_avg ) + " ms" )
+        main.log.report( "Avg: " + str( intentRerouteLatAvg ) + " ms" )
         main.log.report(
             "Std Deviation: " +
-            str( intent_reroute_lat_std ) +
+            str( intentRerouteLatStd ) +
             " ms" )
 
-    def CASE7( self, main ):
-        """
-        Batch intent reroute latency
-        """
-        import time
-        import json
-        import requests
-        import os
-        import numpy
-
-        ONOS_ip_list = []
-        for i in range( 1, 8 ):
-            ONOS_ip_list.append( main.params[ 'CTRL' ][ 'ip' + str( i ) ] )
-
-        ONOS_user = main.params[ 'CTRL' ][ 'user' ]
-        default_sw_port = main.params[ 'CTRL' ][ 'port1' ]
-
-        batch_intent_size = main.params[ 'TEST' ][ 'batchIntentSize' ]
-        batch_thresh_min = int( main.params[ 'TEST' ][ 'batchThresholdMin' ] )
-        batch_thresh_max = int( main.params[ 'TEST' ][ 'batchThresholdMax' ] )
-        install_time = main.params[ 'JSON' ][ 'installedTime' ]
-
-        # number of iterations of case
-        num_iter = main.params[ 'TEST' ][ 'numIter' ]
-        num_ignore = int( main.params[ 'TEST' ][ 'numIgnore' ] )
-        num_switch = int( main.params[ 'TEST' ][ 'numSwitch' ] )
-        n_thread = main.params[ 'TEST' ][ 'numMult' ]
-
-        main.log.report( "Batch intent installation test of " +
-                         batch_intent_size + " intents" )
-
-        batch_result_list = []
-
-        # Assign 'linear' switch format for basic intent testing
-        main.Mininet1.assign_sw_controller(
-            sw="1", ip1=ONOS1_ip, port1=default_sw_port )
-        main.Mininet1.assign_sw_controller(
-            sw="2", ip1=ONOS2_ip, port1=default_sw_port )
-        main.Mininet1.assign_sw_controller(
-            sw="3", ip1=ONOS2_ip, port1=default_sw_port )
-        main.Mininet1.assign_sw_controller(
-            sw="4", ip1=ONOS2_ip, port1=default_sw_port )
-        main.Mininet1.assign_sw_controller(
-            sw="5", ip1=ONOS3_ip, port1=default_sw_port )
-
-        time.sleep( 10 )
-
-        main.log.info( "Getting list of available devices" )
-        device_id_list = []
-        json_str = main.ONOS1cli.devices()
-        json_obj = json.loads( json_str )
-        for device in json_obj:
-            device_id_list.append( device[ 'id' ] )
-
-        batch_install_lat = []
-        batch_withdraw_lat = []
-        sleep_time = 10
-
-        base_dir = "/tmp/"
-        max_install_lat = []
-
-        for i in range( 0, int( num_iter ) ):
-            main.log.info( "Pushing " +
-                           str( int( batch_intent_size ) * int( n_thread ) ) +
-                           " intents. Iteration " + str( i ) )
-
-            main.ONOS1cli.push_test_intents(
-                "of:0000000000000001/1",
-                "of:0000000000000005/1",
-                1000, num_mult="1", app_id="1" )
-
-            # TODO: Check for installation success then proceed
-            time.sleep( 30 )
-
-            # NOTE: this interface is specific to
-            #      topo-intentFlower.py topology
-            #      reroute case.
-            main.log.info( "Disabling interface s2-eth3" )
-            main.Mininet1.handle.sendline(
-                "sh ifconfig s2-eth3 down" )
-            t0_system = time.time() * 1000
-
-            # TODO: Wait sufficient time for intents to install
-            time.sleep( 10 )
-
-            # TODO: get intent installation time
-
-            # Obtain metrics from ONOS 1, 2, 3
-            intents_json_str_1 = main.ONOS1cli.intents_events_metrics()
-            intents_json_str_2 = main.ONOS2cli.intents_events_metrics()
-            intents_json_str_3 = main.ONOS3cli.intents_events_metrics()
-
-            intents_json_obj_1 = json.loads( intents_json_str_1 )
-            intents_json_obj_2 = json.loads( intents_json_str_2 )
-            intents_json_obj_3 = json.loads( intents_json_str_3 )
-
-            # Parse values from the json object
-            intent_install_1 = \
-                intents_json_obj_1[ install_time ][ 'value' ]
-            intent_install_2 = \
-                intents_json_obj_2[ install_time ][ 'value' ]
-            intent_install_3 = \
-                intents_json_obj_3[ install_time ][ 'value' ]
-
-            intent_reroute_lat_1 = \
-                int( intent_install_1 ) - int( t0_system )
-            intent_reroute_lat_2 = \
-                int( intent_install_2 ) - int( t0_system )
-            intent_reroute_lat_3 = \
-                int( intent_install_3 ) - int( t0_system )
-
-            intent_reroute_lat_avg = \
-                ( intent_reroute_lat_1 +
-                  intent_reroute_lat_2 +
-                  intent_reroute_lat_3 ) / 3
-
-            main.log.info( "Intent reroute latency avg for iteration " +
-                           str( i ) + ": " + str( intent_reroute_lat_avg ) )
-            # TODO: Remove intents for next iteration
-
-            time.sleep( 5 )
-
-            intents_str = main.ONOS1cli.intents()
-            intents_json = json.loads( intents_str )
-            for intents in intents_json:
-                intent_id = intents[ 'id' ]
-                if intent_id:
-                    main.ONOS1cli.remove_intent( intent_id )
-
-            main.Mininet1.handle.sendline(
-                "sh ifconfig s2-eth3 up" )
-
-            main.log.info( "Intents removed and port back up" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=assertion,
+            onpass="Single intent reroute latency test successful",
+            onfail="Single intent reroute latency test failed" )
 
     def CASE4( self, main ):
         """
@@ -520,198 +562,248 @@
         import requests
         import os
         import numpy
+        global clusterCount
 
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
-        ONOS4_ip = main.params[ 'CTRL' ][ 'ip4' ]
-        ONOS5_ip = main.params[ 'CTRL' ][ 'ip5' ]
-        ONOS6_ip = main.params[ 'CTRL' ][ 'ip6' ]
-        ONOS7_ip = main.params[ 'CTRL' ][ 'ip7' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS4Ip = main.params[ 'CTRL' ][ 'ip4' ]
+        ONOS5Ip = main.params[ 'CTRL' ][ 'ip5' ]
+        ONOS6Ip = main.params[ 'CTRL' ][ 'ip6' ]
+        ONOS7Ip = main.params[ 'CTRL' ][ 'ip7' ]
 
-        ONOS_ip_list = []
+        assertion = main.TRUE
+
+        ONOSIpList = []
         for i in range( 1, 8 ):
-            ONOS_ip_list.append( main.params[ 'CTRL' ][ 'ip' + str( i ) ] )
+            ONOSIpList.append( main.params[ 'CTRL' ][ 'ip' + str( i ) ] )
 
-        ONOS_user = main.params[ 'CTRL' ][ 'user' ]
+        ONOSUser = main.params[ 'CTRL' ][ 'user' ]
 
-        default_sw_port = main.params[ 'CTRL' ][ 'port1' ]
+        defaultSwPort = main.params[ 'CTRL' ][ 'port1' ]
 
-        batch_intent_size = main.params[ 'TEST' ][ 'batchIntentSize' ]
-        batch_thresh_min = int( main.params[ 'TEST' ][ 'batchThresholdMin' ] )
-        batch_thresh_max = int( main.params[ 'TEST' ][ 'batchThresholdMax' ] )
+        batchIntentSize = int( main.params[ 'TEST' ][ 'batchIntentSize' ] )
+        batchThreshMin = int( main.params[ 'TEST' ][ 'batchThresholdMin' ] )
+        batchThreshMax = int( main.params[ 'TEST' ][ 'batchThresholdMax' ] )
 
         # number of iterations of case
-        num_iter = main.params[ 'TEST' ][ 'numIter' ]
-        num_ignore = int( main.params[ 'TEST' ][ 'numIgnore' ] )
-        num_switch = int( main.params[ 'TEST' ][ 'numSwitch' ] )
-        n_thread = main.params[ 'TEST' ][ 'numMult' ]
-        #n_thread = 105
-
-        #*****
-        global cluster_count
-        #*****
+        numIter = main.params[ 'TEST' ][ 'numIter' ]
+        numIgnore = int( main.params[ 'TEST' ][ 'numIgnore' ] )
+        numSwitch = int( main.params[ 'TEST' ][ 'numSwitch' ] )
+        nThread = main.params[ 'TEST' ][ 'numMult' ]
+        #nThread = 105
 
         # Switch assignment NOTE: hardcoded
-        if cluster_count == 1:
-            for i in range( 1, num_switch + 1 ):
-                main.Mininet1.assign_sw_controller(
+        if clusterCount == 1:
+            for i in range( 1, numSwitch + 1 ):
+                main.Mininet1.assignSwController(
                     sw=str( i ),
-                    ip1=ONOS1_ip,
-                    port1=default_sw_port )
-        if cluster_count == 3:
+                    ip1=ONOS1Ip,
+                    port1=defaultSwPort )
+        if clusterCount == 3:
             for i in range( 1, 3 ):
-                main.Mininet1.assign_sw_controller(
+                main.Mininet1.assignSwController(
                     sw=str( i ),
-                    ip1=ONOS1_ip,
-                    port1=default_sw_port )
+                    ip1=ONOS1Ip,
+                    port1=defaultSwPort )
             for i in range( 3, 6 ):
-                main.Mininet1.assign_sw_controller(
+                main.Mininet1.assignSwController(
                     sw=str( i ),
-                    ip1=ONOS2_ip,
-                    port1=default_sw_port )
+                    ip1=ONOS2Ip,
+                    port1=defaultSwPort )
             for i in range( 6, 9 ):
-                main.Mininet1.assign_sw_controller(
+                main.Mininet1.assignSwController(
                     sw=str( i ),
-                    ip1=ONOS3_ip,
-                    port1=default_sw_port )
-        if cluster_count == 5:
-            main.Mininet1.assign_sw_controller(
+                    ip1=ONOS3Ip,
+                    port1=defaultSwPort )
+        if clusterCount == 5:
+            main.Mininet1.assignSwController(
                 sw="1",
-                ip1=ONOS1_ip,
-                port1=default_sw_port )
-            main.Mininet1.assign_sw_controller(
+                ip1=ONOS1Ip,
+                port1=defaultSwPort )
+            main.Mininet1.assignSwController(
                 sw="2",
-                ip1=ONOS2_ip,
-                port1=default_sw_port )
+                ip1=ONOS2Ip,
+                port1=defaultSwPort )
             for i in range( 3, 6 ):
-                main.Mininet1.assign_sw_controller(
+                main.Mininet1.assignSwController(
                     sw=str( i ),
-                    ip1=ONOS3_ip,
-                    port1=default_sw_port )
-            main.Mininet1.assign_sw_controller(
+                    ip1=ONOS3Ip,
+                    port1=defaultSwPort )
+            main.Mininet1.assignSwController(
                 sw="6",
-                ip1=ONOS4_ip,
-                port1=default_sw_port )
-            main.Mininet1.assign_sw_controller(
+                ip1=ONOS4Ip,
+                port1=defaultSwPort )
+            main.Mininet1.assignSwController(
                 sw="7",
-                ip1=ONOS5_ip,
-                port1=default_sw_port )
-            main.Mininet1.assign_sw_controller(
+                ip1=ONOS5Ip,
+                port1=defaultSwPort )
+            main.Mininet1.assignSwController(
                 sw="8",
-                ip1=ONOS5_ip,
-                port1=default_sw_port )
+                ip1=ONOS5Ip,
+                port1=defaultSwPort )
 
-        if cluster_count == 7:
+        if clusterCount == 7:
             for i in range( 1, 9 ):
                 if i < 8:
-                    main.Mininet1.assign_sw_controller(
+                    main.Mininet1.assignSwController(
                         sw=str( i ),
-                        ip1=ONOS_ip_list[ i - 1 ],
-                        port1=default_sw_port )
+                        ip1=ONOSIpList[ i - 1 ],
+                        port1=defaultSwPort )
                 elif i >= 8:
-                    main.Mininet1.assign_sw_controller(
+                    main.Mininet1.assignSwController(
                         sw=str( i ),
-                        ip1=ONOS_ip_list[ 6 ],
-                        port1=default_sw_port )
+                        ip1=ONOSIpList[ 6 ],
+                        port1=defaultSwPort )
 
-        time.sleep( 30 )
+        time.sleep( 20 )
 
         main.log.report( "Batch intent installation test of " +
-                         batch_intent_size + " intents" )
+                         str( batchIntentSize ) + " intent(s)" )
 
-        batch_result_list = []
+        batchResultList = []
 
         main.log.info( "Getting list of available devices" )
-        device_id_list = []
-        json_str = main.ONOS1cli.devices()
-        json_obj = json.loads( json_str )
-        for device in json_obj:
-            device_id_list.append( device[ 'id' ] )
+        deviceIdList = []
+        jsonStr = main.ONOS1cli.devices()
+        jsonObj = json.loads( jsonStr )
+        for device in jsonObj:
+            deviceIdList.append( device[ 'id' ] )
 
-        batch_install_lat = []
-        batch_withdraw_lat = []
-        sleep_time = 10
+        batchInstallLat = []
+        batchWithdrawLat = []
 
-        base_dir = "/tmp/"
-        max_install_lat = []
+        # Max intent install measurement of all nodes
+        maxInstallLat = []
+        maxWithdrawLat = []
+        sleepTime = 10
 
-        for i in range( 0, int( num_iter ) ):
-            main.log.info( "Pushing " +
-                           str( int( batch_intent_size ) * int( n_thread ) ) +
-                           " intents. Iteration " + str( i ) )
+        baseDir = "/tmp/"
 
-            for node in range( 1, cluster_count + 1 ):
-                save_dir = base_dir + "batch_intent_" + str( node ) + ".txt"
-                main.ONOSbench.push_test_intents_shell(
-                    "of:0000000000000001/" + str( node ),
-                    "of:0000000000000008/" + str( node ),
-                    int( batch_intent_size ),
-                    save_dir, ONOS_ip_list[ node - 1 ],
-                    num_mult=n_thread, app_id=node )
+        for batch in range( 0, 5 ):
+            for i in range( 0, int( numIter ) ):
+                main.log.info( "Pushing " +
+                               str( int( batchIntentSize ) * int( nThread ) ) +
+                               " intents. Iteration " + str( i ) )
 
-            # Wait sufficient time for intents to start
-            # installing
+                for node in range( 1, clusterCount + 1 ):
+                    saveDir = baseDir + "batch_intent_" + str( node ) + ".txt"
+                    main.ONOSbench.pushTestIntentsShell(
+                        deviceIdList[ 0 ] + "/2",
+                        deviceIdList[ 7 ] + "/2",
+                        batchIntentSize,
+                        saveDir, ONOSIpList[ node - 1 ],
+                        numMult=nThread, appId=node )
 
-            time.sleep( sleep_time )
-            print sleep_time
+                # Wait sufficient time for intents to start
+                # installing
+                time.sleep( sleepTime )
 
-            intent = ""
-            counter = 300
-            while len( intent ) > 0 and counter > 0:
-                main.ONOS1cli.handle.sendline(
-                    "intents | wc -l" )
-                main.ONOS1cli.handle.expect(
-                    "intents | wc -l" )
-                main.ONOS1cli.handle.expect(
-                    "onos>" )
-                intent_temp = main.ONOS1cli.handle.before()
-                print intent_temp
+                intent = ""
+                counter = 300
+                while len( intent ) > 0 and counter > 0:
+                    main.ONOS1cli.handle.sendline(
+                        "intents | wc -l" )
+                    main.ONOS1cli.handle.expect(
+                        "intents | wc -l" )
+                    main.ONOS1cli.handle.expect(
+                        "onos>" )
+                    intentTemp = main.ONOS1cli.handle.before()
+                    intent = main.ONOS1cli.intents()
+                    intent = json.loads( intent )
+                    counter = counter - 1
+                    time.sleep( 1 )
 
-                intent = main.ONOS1cli.intents()
-                intent = json.loads( intent )
-                counter = counter - 1
-                time.sleep( 1 )
+                time.sleep( 5 )
 
-            time.sleep( 5 )
+                for node in range( 1, clusterCount + 1 ):
+                    saveDir = baseDir + "batch_intent_" + str( node ) + ".txt"
+                    with open( saveDir ) as fOnos:
+                        lineCount = 0
+                        for line in fOnos:
+                            line = line[ 1: ]
+                            line = line.split( ": " )
+                            main.log.info( "Line read: " + str( line ) )
+                            result = line[ 1 ].split( " " )[ 0 ]
+                            # TODO: add parameters before appending latency
+                            if lineCount == 0:
+                                batchInstallLat.append( int( result ) )
+                                installResult = result
+                            elif lineCount == 1:
+                                batchWithdrawLat.append( int( result ) )
+                                withdrawResult = result
+                            lineCount += 1
+                    main.log.info( "Batch install latency for ONOS" +
+                                   str( node ) + " with " +
+                                   str( batchIntentSize ) + "intents: " +
+                                   str( installResult ) + " ms" )
+                    main.log.info( "Batch withdraw latency for ONOS" +
+                                   str( node ) + " with " +
+                                   str( batchIntentSize ) + "intents: " +
+                                   str( withdrawResult ) + " ms" )
 
-            for node in range( 1, cluster_count + 1 ):
-                save_dir = base_dir + "batch_intent_" + str( node ) + ".txt"
-                with open( save_dir ) as f_onos:
-                    line_count = 0
-                    for line in f_onos:
-                        line = line[ 1: ]
-                        line = line.split( ": " )
-                        result = line[ 1 ].split( " " )[ 0 ]
-                        # TODO: add parameters before appending latency
-                        if line_count == 0:
-                            batch_install_lat.append( int( result ) )
-                        elif line_count == 1:
-                            batch_withdraw_lat.append( int( result ) )
-                        line_count += 1
-                main.log.info( "Batch install latency for ONOS" +
-                               str( node ) + " with " +
-                               str( batch_intent_size ) + "intents: " +
-                               str( batch_install_lat ) )
+                if len( batchInstallLat ) > 0 and int( i ) > numIgnore:
+                    maxInstallLat.append( max( batchInstallLat ) )
+                elif len( batchInstallLat ) == 0:
+                    # If I failed to read anything from the file,
+                    # increase the wait time before checking intents
+                    sleepTime += 30
+                if len( batchWithdrawLat ) > 0 and int( i ) > numIgnore:
+                    maxWithdrawLat.append( max( batchWithdrawLat ) )
+                batchInstallLat = []
+                batchWithdrawLat = []
 
-            if len( batch_install_lat ) > 0 and int( i ) > num_ignore:
-                max_install_lat.append( max( batch_install_lat ) )
-            elif len( batch_install_lat ) == 0:
-                # If I failed to read anything from the file,
-                # increase the wait time before checking intents
-                sleep_time += 30
-            batch_install_lat = []
+                # Sleep in between iterations
+                time.sleep( 5 )
 
-            # Sleep in between iterations
-            time.sleep( 5 )
+            if maxInstallLat:
+                avgInstallLat = str( sum( maxInstallLat ) /
+                                      len( maxInstallLat ) )
+            else:
+                avgInstallLat = "NA"
+                main.log.report( "Batch installation failed" )
+                assertion = main.FALSE
 
-        main.log.report( "Avg of batch installation latency " +
-                         ": " +
-                         str( sum( max_install_lat ) /
-                              len( max_install_lat ) ) )
-        main.log.report( "Std Deviation of batch installation latency " +
-                         ": " +
-                         str( numpy.std( max_install_lat ) ) )
+            if maxWithdrawLat:
+                avgWithdrawLat = str( sum( maxWithdrawLat ) /
+                                       len( maxWithdrawLat ) )
+            else:
+                avgWithdrawLat = "NA"
+                main.log.report( "Batch withdraw failed" )
+                assertion = main.FALSE
+
+            main.log.report( "Avg of batch installation latency " +
+                             "of size " + str( batchIntentSize ) + ": " +
+                             str( avgInstallLat ) + " ms" )
+            main.log.report( "Std Deviation of batch installation latency " +
+                             ": " + str( numpy.std( maxInstallLat ) ) + " ms" )
+
+            main.log.report( "Avg of batch withdraw latency " +
+                             "of size " + str( batchIntentSize ) + ": " +
+                             str( avgWithdrawLat ) + " ms" )
+            main.log.report( "Std Deviation of batch withdraw latency " +
+                             ": " +
+                             str( numpy.std( maxWithdrawLat ) ) +
+                             " ms" )
+
+            batchIntentSize = batchIntentSize + 1000
+            main.log.report( "Increasing batch intent size to " +
+                             str(batchIntentSize) )
+
+        #main.log.info( "Removing all intents for next test case" )
+        #jsonTemp = main.ONOS1cli.intents( jsonFormat=True )
+        #jsonObjIntents = json.loads( jsonTemp )
+        # if jsonObjIntents:
+        #    for intents in jsonObjIntents:
+        #        tempId = intents[ 'id' ]
+            # main.ONOS1cli.removeIntent( tempId )
+        #        main.ONOS1cli.removeIntent( tempId )
+
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=assertion,
+            onpass="Batch intent install/withdraw test successful",
+            onfail="Batch intent install/withdraw test failed" )
 
     def CASE5( self, main ):
         """
@@ -720,100 +812,276 @@
         import time
         import json
 
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
-        ONOS4_ip = main.params[ 'CTRL' ][ 'ip4' ]
-        ONOS5_ip = main.params[ 'CTRL' ][ 'ip5' ]
-        ONOS6_ip = main.params[ 'CTRL' ][ 'ip6' ]
-        ONOS7_ip = main.params[ 'CTRL' ][ 'ip7' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS4Ip = main.params[ 'CTRL' ][ 'ip4' ]
+        ONOS5Ip = main.params[ 'CTRL' ][ 'ip5' ]
+        ONOS6Ip = main.params[ 'CTRL' ][ 'ip6' ]
+        ONOS7Ip = main.params[ 'CTRL' ][ 'ip7' ]
 
-        global cluster_count
-        cluster_count += 2
+        global clusterCount
+        clusterCount += 2
         main.log.report( "Increasing cluster size to " +
-                         str( cluster_count ) )
+                         str( clusterCount ) )
 
-        install_result = main.FALSE
+        installResult = main.FALSE
 
-        if cluster_count == 3:
-            install_result1 = \
-                main.ONOSbench.onos_install( node=ONOS2_ip )
-            install_result2 = \
-                main.ONOSbench.onos_install( node=ONOS3_ip )
+        if clusterCount == 3:
+            installResult1 = \
+                main.ONOSbench.onosInstall( node=ONOS2Ip )
+            installResult2 = \
+                main.ONOSbench.onosInstall( node=ONOS3Ip )
             time.sleep( 5 )
 
             main.log.info( "Starting ONOS CLI" )
-            main.ONOS2cli.start_onos_cli( ONOS2_ip )
-            main.ONOS3cli.start_onos_cli( ONOS3_ip )
+            main.ONOS2cli.startOnosCli( ONOS2Ip )
+            main.ONOS3cli.startOnosCli( ONOS3Ip )
 
-            install_result = install_result1 and install_result2
+            installResult = installResult1 and installResult2
 
-        if cluster_count == 5:
+        if clusterCount == 5:
             main.log.info( "Installing ONOS on node 4 and 5" )
-            install_result1 = \
-                main.ONOSbench.onos_install( node=ONOS4_ip )
-            install_result2 = \
-                main.ONOSbench.onos_install( node=ONOS5_ip )
+            installResult1 = \
+                main.ONOSbench.onosInstall( node=ONOS4Ip )
+            installResult2 = \
+                main.ONOSbench.onosInstall( node=ONOS5Ip )
 
             main.log.info( "Starting ONOS CLI" )
-            main.ONOS4cli.start_onos_cli( ONOS4_ip )
-            main.ONOS5cli.start_onos_cli( ONOS5_ip )
+            main.ONOS4cli.startOnosCli( ONOS4Ip )
+            main.ONOS5cli.startOnosCli( ONOS5Ip )
 
-            install_result = install_result1 and install_result2
+            installResult = installResult1 and installResult2
 
-        if cluster_count == 7:
+        if clusterCount == 7:
             main.log.info( "Installing ONOS on node 6 and 7" )
-            install_result1 = \
-                main.ONOSbench.onos_install( node=ONOS6_ip )
-            install_result2 = \
-                main.ONOSbench.onos_install( node=ONOS7_ip )
+            installResult1 = \
+                main.ONOSbench.onosInstall( node=ONOS6Ip )
+            installResult2 = \
+                main.ONOSbench.onosInstall( node=ONOS7Ip )
 
             main.log.info( "Starting ONOS CLI" )
-            main.ONOS6cli.start_onos_cli( ONOS6_ip )
-            main.ONOS7cli.start_onos_cli( ONOS7_ip )
+            main.ONOS6cli.startOnosCli( ONOS6Ip )
+            main.ONOS7cli.startOnosCli( ONOS7Ip )
 
-            install_result = install_result1 and install_result2
+            installResult = installResult1 and installResult2
 
         time.sleep( 5 )
 
-        if install_result == main.TRUE:
+        if installResult == main.TRUE:
             assertion = main.TRUE
         else:
             assertion = main.FALSE
 
-        utilities.assert_equals(
-            expect=main.TRUE,
-            actual=assertion,
-            onpass="Scale out to " +
-            str( cluster_count ) +
-            " nodes successful",
-            onfail="Scale out to " +
-            str( cluster_count ) +
-            " nodes failed" )
+        utilities.assert_equals( expect=main.TRUE, actual=assertion,
+                                onpass="Scale out to " + str( clusterCount ) +
+                                " nodes successful",
+                                onfail="Scale out to " + str( clusterCount ) +
+                                " nodes failed" )
+
+    def CASE7( self, main ):
+        # TODO: Fix for scale-out scenario
+        """
+        Batch intent reroute latency
+        """
+        import time
+        import json
+        import requests
+        import os
+        import numpy
+        global clusterCount
+
+        ONOSIpList = []
+        for i in range( 1, 8 ):
+            ONOSIpList.append( main.params[ 'CTRL' ][ 'ip' + str( i ) ] )
+
+        ONOSUser = main.params[ 'CTRL' ][ 'user' ]
+        defaultSwPort = main.params[ 'CTRL' ][ 'port1' ]
+
+        batchIntentSize = main.params[ 'TEST' ][ 'batchIntentSize' ]
+        batchThreshMin = int( main.params[ 'TEST' ][ 'batchThresholdMin' ] )
+        batchThreshMax = int( main.params[ 'TEST' ][ 'batchThresholdMax' ] )
+        intfs = main.params[ 'TEST' ][ 'intfs' ]
+        installTime = main.params[ 'JSON' ][ 'installedTime' ]
+
+        # number of iterations of case
+        numIter = main.params[ 'TEST' ][ 'numIter' ]
+        numIgnore = int( main.params[ 'TEST' ][ 'numIgnore' ] )
+        numSwitch = int( main.params[ 'TEST' ][ 'numSwitch' ] )
+        nThread = main.params[ 'TEST' ][ 'numMult' ]
+
+        main.log.report( "Batch intent installation test of " +
+                         batchIntentSize + " intents" )
+
+        batchResultList = []
+
+        time.sleep( 10 )
+
+        main.log.info( "Getting list of available devices" )
+        deviceIdList = []
+        jsonStr = main.ONOS1cli.devices()
+        jsonObj = json.loads( jsonStr )
+        for device in jsonObj:
+            deviceIdList.append( device[ 'id' ] )
+
+        batchInstallLat = []
+        batchWithdrawLat = []
+        sleepTime = 10
+
+        baseDir = "/tmp/"
+        maxInstallLat = []
+
+        for i in range( 0, int( numIter ) ):
+            main.log.info( "Pushing " +
+                           str( int( batchIntentSize ) * int( nThread ) ) +
+                           " intents. Iteration " + str( i ) )
+
+            main.ONOSbench.pushTestIntentsShell(
+                deviceIdList[ 0 ] + "/2",
+                deviceIdList[ 7 ] + "/2",
+                batchIntentSize, "/tmp/batch_install.txt",
+                ONOSIpList[ 0 ], numMult="1", appId="1",
+                report=False, options="--install" )
+            # main.ONOSbench.pushTestIntentsShell(
+            #    "of:0000000000001002/1",
+            #    "of:0000000000002002/1",
+            #    133, "/tmp/temp2.txt", "10.128.174.2",
+            #    numMult="6", appId="2",report=False )
+
+            # TODO: Check for installation success then proceed
+            time.sleep( 30 )
+
+            # NOTE: this interface is specific to
+            #      topo-intentFlower.py topology
+            #      reroute case.
+            main.log.info( "Disabling interface " + intfs )
+            main.Mininet1.handle.sendline(
+                "sh ifconfig " + intfs + " down" )
+            t0System = time.time() * 1000
+
+            # TODO: Wait sufficient time for intents to install
+            time.sleep( 10 )
+
+            # TODO: get intent installation time
+
+            # Obtain metrics from ONOS 1, 2, 3
+            intentsJsonStr1 = main.ONOS1cli.intentsEventsMetrics()
+            intentsJsonObj1 = json.loads( intentsJsonStr1 )
+            # Parse values from the json object
+            intentInstall1 = \
+                intentsJsonObj1[ installTime ][ 'value' ]
+            intentRerouteLat1 = \
+                int( intentInstall1 ) - int( t0System )
+
+            if clusterCount == 3:
+                intentsJsonStr2 =\
+                    main.ONOS2cli.intentsEventsMetrics()
+                intentsJsonStr3 =\
+                    main.ONOS3cli.intentsEventsMetrics()
+                intentsJsonObj2 = json.loads( intentsJsonStr2 )
+                intentsJsonObj3 = json.loads( intentsJsonStr3 )
+                intentInstall2 = \
+                    intentsJsonObj2[ installTime ][ 'value' ]
+                intentInstall3 = \
+                    intentsJsonObj3[ installTime ][ 'value' ]
+                intentRerouteLat2 = \
+                    int( intentInstall2 ) - int( t0System )
+                intentRerouteLat3 = \
+                    int( intentInstall3 ) - int( t0System )
+            else:
+                intentRerouteLat2 = 0
+                intentRerouteLat3 = 0
+
+            if clusterCount == 5:
+                intentsJsonStr4 =\
+                    main.ONOS4cli.intentsEventsMetrics()
+                intentsJsonStr5 =\
+                    main.ONOS5cli.intentsEventsMetrics()
+                intentsJsonObj4 = json.loads( intentsJsonStr4 )
+                intentsJsonObj5 = json.loads( intentsJsonStr5 )
+                intentInstall4 = \
+                    intentsJsonObj4[ installTime ][ 'value' ]
+                intentInstall5 = \
+                    intentsJsonObj5[ installTime ][ 'value' ]
+                intentRerouteLat4 = \
+                    int( intentInstall4 ) - int( t0System )
+                intentRerouteLat5 = \
+                    int( intentInstall5 ) - int( t0System )
+            else:
+                intentRerouteLat4 = 0
+                intentRerouteLat5 = 0
+
+            if clusterCount == 7:
+                intentsJsonStr6 =\
+                    main.ONOS6cli.intentsEventsMetrics()
+                intentsJsonStr7 =\
+                    main.ONOS7cli.intentsEventsMetrics()
+                intentsJsonObj6 = json.loads( intentsJsonStr6 )
+                intentsJsonObj7 = json.loads( intentsJsonStr7 )
+                intentInstall6 = \
+                    intentsJsonObj6[ installTime ][ 'value' ]
+                intentInstall7 = \
+                    intentsJsonObj7[ installTime ][ 'value' ]
+                intentRerouteLat6 = \
+                    int( intentInstall6 ) - int( t0System )
+                intentRerouteLat7 = \
+                    int( intentInstall7 ) - int( t0System )
+            else:
+                intentRerouteLat6 = 0
+                intentRerouteLat7 = 0
+
+            intentRerouteLatAvg = \
+                ( intentRerouteLat1 +
+                  intentRerouteLat2 +
+                  intentRerouteLat3 +
+                  intentRerouteLat4 +
+                  intentRerouteLat5 +
+                  intentRerouteLat6 +
+                  intentRerouteLat7 ) / clusterCount
+
+            main.log.info( "Intent reroute latency avg for iteration " +
+                           str( i ) + ": " + str( intentRerouteLatAvg ) )
+            # TODO: Remove intents for next iteration
+
+            time.sleep( 5 )
+
+            intentsStr = main.ONOS1cli.intents()
+            intentsJson = json.loads( intentsStr )
+            for intents in intentsJson:
+                intentId = intents[ 'id' ]
+                # TODO: make sure this removes all intents
+                # print intentId
+                if intentId:
+                    main.ONOS1cli.removeIntent( intentId )
+
+            main.Mininet1.handle.sendline(
+                "sh ifconfig " + intfs + " up" )
+
+            main.log.info( "Intents removed and port back up" )
 
     def CASE9( self, main ):
         count = 0
-        sw_num1 = 1
-        sw_num2 = 1
+        swNum1 = 1
+        swNum2 = 1
         appid = 0
-        port_num1 = 1
-        port_num2 = 1
+        portNum1 = 1
+        portNum2 = 1
 
         time.sleep( 30 )
 
         while True:
-            # main.ONOS1cli.push_test_intents(
+            # main.ONOS1cli.pushTestIntents(
                     #"of:0000000000001001/1",
                 #"of:0000000000002001/1",
-                #    100, num_mult="10", app_id="1" )
-            # main.ONOS2cli.push_test_intents(
+                #    100, numMult="10", appId="1" )
+            # main.ONOS2cli.pushTestIntents(
             #    "of:0000000000001002/1",
             #    "of:0000000000002002/1",
-            #    100, num_mult="10", app_id="2" )
-            # main.ONOS2cli.push_test_intents(
+            #    100, numMult="10", appId="2" )
+            # main.ONOS2cli.pushTestIntents(
             #    "of:0000000000001003/1",
             #    "of:0000000000002003/1",
-            #    100, num_mult="10", app_id="3" )
+            #    100, numMult="10", appId="3" )
             count += 1
 
             if count >= 100:
@@ -822,36 +1090,34 @@
                     " /tmp/metrics_intents_temp.txt &" )
                 count = 0
 
-            arg1 = "of:000000000000100" + \
-                str( sw_num1 ) + "/" + str( port_num1 )
-            arg2 = "of:000000000000200" + \
-                str( sw_num2 ) + "/" + str( port_num2 )
+            arg1 = "of:000000000000100" + str( swNum1 ) + "/" + str( portNum1 )
+            arg2 = "of:000000000000200" + str( swNum2 ) + "/" + str( portNum2 )
 
-            sw_num1 += 1
+            swNum1 += 1
 
-            if sw_num1 > 7:
-                sw_num1 = 1
-                sw_num2 += 1
-                if sw_num2 > 7:
+            if swNum1 > 7:
+                swNum1 = 1
+                swNum2 += 1
+                if swNum2 > 7:
                     appid += 1
 
-            if sw_num2 > 7:
-                sw_num2 = 1
+            if swNum2 > 7:
+                swNum2 = 1
 
-            main.ONOSbench.push_test_intents_shell(
+            main.ONOSbench.pushTestIntentsShell(
                 arg1,
                 arg2,
                 100, "/tmp/temp.txt", "10.128.174.1",
-                num_mult="10", app_id=appid, report=False )
-            # main.ONOSbench.push_test_intents_shell(
+                numMult="10", appId=appid, report=False )
+            # main.ONOSbench.pushTestIntentsShell(
             #    "of:0000000000001002/1",
             #    "of:0000000000002002/1",
             #    133, "/tmp/temp2.txt", "10.128.174.2",
-            #    num_mult="6", app_id="2",report=False )
-            # main.ONOSbench.push_test_intents_shell(
+            #    numMult="6", appId="2",report=False )
+            # main.ONOSbench.pushTestIntentsShell(
             #    "of:0000000000001003/1",
             #    "of:0000000000002003/1",
             #    133, "/tmp/temp3.txt", "10.128.174.3",
-            #    num_mult="6", app_id="3",report=False )
+            #    numMult="6", appId="3",report=False )
 
             time.sleep( 0.2 )
diff --git a/TestON/tests/IntentPerfNext/IntentPerfNext.topo b/TestON/tests/IntentPerfNext/IntentPerfNext.topo
index 048695d..9de0291 100644
--- a/TestON/tests/IntentPerfNext/IntentPerfNext.topo
+++ b/TestON/tests/IntentPerfNext/IntentPerfNext.topo
@@ -89,7 +89,7 @@
             <type>MininetCliDriver</type>
             <connect_order>4</connect_order>
             <COMPONENTS>
-                <arg1> --custom topo-intentFlower.py </arg1>
+                <arg1> --custom topo-intent-8sw.py </arg1>
                 <arg2> --arp --mac --topo mytopo </arg2>
                 <arg3> </arg3>
                 <controller> remote </controller>
diff --git a/TestON/tests/LincOETest/LincOETest.py b/TestON/tests/LincOETest/LincOETest.py
index 6c59c5b..b693138 100644
--- a/TestON/tests/LincOETest/LincOETest.py
+++ b/TestON/tests/LincOETest/LincOETest.py
@@ -29,62 +29,62 @@
         """
         import time
 
-        cell_name = main.params[ 'ENV' ][ 'cellName' ]
+        cellName = main.params[ 'ENV' ][ 'cellName' ]
 
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS1_port = main.params[ 'CTRL' ][ 'port1' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS1Port = main.params[ 'CTRL' ][ 'port1' ]
 
-        git_pull_trigger = main.params[ 'GIT' ][ 'autoPull' ]
-        git_checkout_branch = main.params[ 'GIT' ][ 'checkout' ]
+        gitPullTrigger = main.params[ 'GIT' ][ 'autoPull' ]
+        gitCheckoutBranch = main.params[ 'GIT' ][ 'checkout' ]
 
         main.case( "Setting up test environment" )
 
         main.step( "Creating cell file" )
         # params: ( bench ip, cell name, mininet ip, *onos ips )
-        cell_file_result = main.ONOSbench.create_cell_file(
-            "10.128.20.10", cell_name, "10.128.10.90",
+        cellFileResult = main.ONOSbench.createCellFile(
+            "10.128.20.10", cellName, "10.128.10.90",
             "onos-core-trivial,onos-app-fwd",
             "10.128.174.1" )
 
         main.step( "Applying cell variable to environment" )
-        #cell_result = main.ONOSbench.set_cell( cell_name )
-        cell_result = main.ONOSbench.set_cell( "temp_cell_2" )
-        verify_result = main.ONOSbench.verify_cell()
+        # cellResult = main.ONOSbench.setCell( cellName )
+        cellResult = main.ONOSbench.setCell( "temp_cell_2" )
+        verifyResult = main.ONOSbench.verifyCell()
 
-        if git_pull_trigger == 'on':
+        if gitPullTrigger == 'on':
             main.step( "Git checkout and pull master" )
-            main.ONOSbench.git_checkout( git_checkout_branch )
-            git_pull_result = main.ONOSbench.git_pull()
+            main.ONOSbench.gitCheckout( gitCheckoutBranch )
+            gitPullResult = main.ONOSbench.gitPull()
         else:
             main.log.info( "Git checkout and pull skipped by config" )
-            git_pull_result = main.TRUE
+            gitPullResult = main.TRUE
 
         main.step( "Using mvn clean & install" )
-        #clean_install_result = main.ONOSbench.clean_install()
-        clean_install_result = main.TRUE
+        # cleanInstallResult = main.ONOSbench.cleanInstall()
+        cleanInstallResult = main.TRUE
 
         main.step( "Creating ONOS package" )
-        package_result = main.ONOSbench.onos_package()
+        packageResult = main.ONOSbench.onosPackage()
 
         main.step( "Installing ONOS package" )
-        onos_install_result = main.ONOSbench.onos_install()
-        onos1_isup = main.ONOSbench.isup()
+        onosInstallResult = main.ONOSbench.onosInstall()
+        onos1Isup = main.ONOSbench.isup()
 
         main.step( "Starting ONOS service" )
-        start_result = main.ONOSbench.onos_start( ONOS1_ip )
+        startResult = main.ONOSbench.onosStart( ONOS1Ip )
 
         main.step( "Setting cell for ONOScli" )
-        main.ONOScli.set_cell( cell_name )
+        main.ONOScli.setCell( cellName )
 
         main.step( "Starting ONOScli" )
-        main.ONOScli.start_onos_cli( ONOS1_ip )
+        main.ONOScli.startOnosCli( ONOS1Ip )
 
-        case1_result = ( clean_install_result and package_result and
-                         cell_result and verify_result and onos_install_result and
-                         onos1_isup and start_result )
-        utilities.assert_equals( expect=main.TRUE, actual=case1_result,
-                                 onpass="Test startup successful",
-                                 onfail="Test startup NOT successful" )
+        case1Result = ( cleanInstallResult and packageResult and
+                        cellResult and verifyResult and onosInstallResult and
+                        onos1Isup and startResult )
+        utilities.assertEquals( expect=main.TRUE, actual=case1Result,
+                                onpass="Test startup successful",
+                                onfail="Test startup NOT successful" )
 
         time.sleep( 10 )
 
@@ -94,18 +94,18 @@
         """
         import time
 
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        default_sw_port = main.params[ 'CTRL' ][ 'port1' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        defaultSwPort = main.params[ 'CTRL' ][ 'port1' ]
 
         # Assign packet level switches to controller
-        main.Mininet1.assign_sw_controller(
+        main.Mininet1.assignSwController(
             sw="1",
-            ip1=ONOS1_ip,
-            port1=default_sw_port )
-        main.Mininet1.assign_sw_controller(
+            ip1=ONOS1Ip,
+            port1=defaultSwPort )
+        main.Mininet1.assignSwController(
             sw="2",
-            ip1=ONOS1_ip,
-            port1=default_sw_port )
+            ip1=ONOS1Ip,
+            port1=defaultSwPort )
 
         # Check devices in controller
         # This should include Linc-OE devices as well
diff --git a/TestON/tests/MultiProd/MultiProd.bak b/TestON/tests/MultiProd/MultiProd.bak
new file mode 100755
index 0000000..11af10b
--- /dev/null
+++ b/TestON/tests/MultiProd/MultiProd.bak
@@ -0,0 +1,1156 @@
+
+#Testing the basic functionality of ONOS Next
+#For sanity and driver functionality excercises only.
+
+import time
+import time
+import json
+
+time.sleep(1)
+class MultiProd:
+    def __init__(self):
+        self.default = ''
+
+    def CASE1(self, main):
+        '''
+        Startup sequence:
+        cell <name>
+        onos-verify-cell
+        onos-remove-raft-logs        
+        git pull
+        mvn clean install
+        onos-package
+        onos-install -f
+        onos-wait-for-start
+        '''
+        
+        cell_name = main.params['ENV']['cellName']
+        ONOS1_ip = main.params['CTRL']['ip1']
+        ONOS2_ip = main.params['CTRL']['ip2']
+        ONOS3_ip = main.params['CTRL']['ip3']    
+       
+        main.case("Setting up test environment")
+        main.log.report("This testcase is testing setting up test environment") 
+        main.log.report("__________________________________")
+ 
+        main.step("Applying cell variable to environment")
+        cell_result1 = main.ONOSbench.set_cell(cell_name)
+        #cell_result2 = main.ONOScli1.set_cell(cell_name)
+        #cell_result3 = main.ONOScli2.set_cell(cell_name)
+        #cell_result4 = main.ONOScli3.set_cell(cell_name)
+        verify_result = main.ONOSbench.verify_cell() 
+        cell_result = cell_result1
+
+        main.step("Removing raft logs before a clen installation of ONOS")
+        remove_log_Result = main.ONOSbench.onos_remove_raft_logs()        
+
+        main.step("Git checkout and pull master and get version")
+        main.ONOSbench.git_checkout("master")
+        git_pull_result = main.ONOSbench.git_pull()
+        print "git_pull_result = ", git_pull_result
+        main.ONOSbench.get_version(report=True)
+
+        if git_pull_result == 1:
+            main.step("Using mvn clean & install")
+            main.ONOSbench.clean_install()
+
+        main.step("Creating ONOS package")
+        package_result = main.ONOSbench.onos_package()
+
+        #main.step("Creating a cell")
+        #cell_create_result = main.ONOSbench.create_cell_file(**************)
+
+        main.step("Installing ONOS package")
+        onos1_install_result = main.ONOSbench.onos_install(options="-f", node=ONOS1_ip)
+        onos2_install_result = main.ONOSbench.onos_install(options="-f", node=ONOS2_ip)
+        onos3_install_result = main.ONOSbench.onos_install(options="-f", node=ONOS3_ip)
+        onos_install_result = onos1_install_result and onos2_install_result and onos3_install_result        
+        if onos_install_result == main.TRUE:
+            main.log.report("Installing ONOS package successful")
+        else:
+            main.log.report("Installing ONOS package failed")
+        	
+        onos1_isup = main.ONOSbench.isup(ONOS1_ip)
+        onos2_isup = main.ONOSbench.isup(ONOS2_ip)
+        onos3_isup = main.ONOSbench.isup(ONOS3_ip)
+        onos_isup = onos1_isup and onos2_isup and onos3_isup
+        if onos_isup == main.TRUE:
+            main.log.report("ONOS instances are up and ready")
+        else:
+            main.log.report("ONOS instances may not be up")          
+
+        main.step("Starting ONOS service")
+        start_result = main.TRUE
+        #start_result = main.ONOSbench.onos_start(ONOS1_ip)
+        startcli1 = main.ONOScli1.start_onos_cli(ONOS_ip = ONOS1_ip)
+        startcli2 = main.ONOScli2.start_onos_cli(ONOS_ip = ONOS2_ip)
+        startcli3 = main.ONOScli3.start_onos_cli(ONOS_ip = ONOS3_ip)
+        print startcli1
+        print startcli2
+        print startcli3
+            
+        case1_result = (package_result and\
+                cell_result and verify_result and onos_install_result and\
+                onos_isup and start_result )
+        utilities.assert_equals(expect=main.TRUE, actual=case1_result,
+                onpass="Test startup successful",
+                onfail="Test startup NOT successful")
+
+    def CASE11(self, main):
+        '''
+        Cleanup sequence:
+        onos-service <node_ip> stop
+        onos-uninstall
+
+        TODO: Define rest of cleanup
+        
+        '''
+
+      	ONOS1_ip = main.params['CTRL']['ip1']
+        ONOS2_ip = main.params['CTRL']['ip2']
+        ONOS3_ip = main.params['CTRL']['ip3']
+	
+        main.case("Cleaning up test environment")
+
+        main.step("Testing ONOS kill function")
+        kill_result1 = main.ONOSbench.onos_kill(ONOS1_ip)
+        kill_result2 = main.ONOSbench.onos_kill(ONOS2_ip)
+        kill_result3 = main.ONOSbench.onos_kill(ONOS3_ip)
+	
+        main.step("Stopping ONOS service")
+        stop_result1 = main.ONOSbench.onos_stop(ONOS1_ip)
+        stop_result2 = main.ONOSbench.onos_stop(ONOS2_ip)
+        stop_result3 = main.ONOSbench.onos_stop(ONOS3_ip)
+
+        main.step("Uninstalling ONOS service") 
+        uninstall_result = main.ONOSbench.onos_uninstall()
+
+    def CASE3(self, main):
+        '''
+        Test 'onos' command and its functionality in driver
+        '''
+       
+        ONOS1_ip = main.params['CTRL']['ip1']
+        ONOS2_ip = main.params['CTRL']['ip2']
+        ONOS3_ip = main.params['CTRL']['ip3']	
+
+        main.case("Testing 'onos' command")
+
+        main.step("Sending command 'onos -w <onos-ip> system:name'")
+        cmdstr1 = "system:name"
+        cmd_result1 = main.ONOSbench.onos_cli(ONOS1_ip, cmdstr1) 
+        main.log.info("onos command returned: "+cmd_result1)
+        cmd_result2 = main.ONOSbench.onos_cli(ONOS2_ip, cmdstr1)
+        main.log.info("onos command returned: "+cmd_result2)
+        cmd_result3 = main.ONOSbench.onos_cli(ONOS3_ip, cmdstr1)
+        main.log.info("onos command returned: "+cmd_result3)
+
+        main.step("Sending command 'onos -w <onos-ip> onos:topology'")
+        cmdstr2 = "onos:topology"
+        cmd_result4 = main.ONOSbench.onos_cli(ONOS1_ip, cmdstr2)
+        main.log.info("onos command returned: "+cmd_result4)
+        cmd_result5 = main.ONOSbench.onos_cli(ONOS2_ip, cmdstr2)
+        main.log.info("onos command returned: "+cmd_result5)
+        cmd_result6 = main.ONOSbench.onos_cli(ONOS6_ip, cmdstr2)
+        main.log.info("onos command returned: "+cmd_result6)
+
+
+    def CASE4(self, main):
+        import re
+        import time
+        ONOS1_ip = main.params['CTRL']['ip1']
+        ONOS2_ip = main.params['CTRL']['ip2']
+        ONOS3_ip = main.params['CTRL']['ip3']
+        ONOS1_port = main.params['CTRL']['port1']
+        ONOS2_port = main.params['CTRL']['port2']
+        ONOS3_port = main.params['CTRL']['port3']
+        
+        main.log.report("This testcase is testing the assignment of all the switches to all controllers and discovering the hosts in reactive mode")
+        main.log.report("__________________________________")        
+        main.case("Pingall Test(No intents are added)")
+        main.step("Assigning switches to controllers")
+        for i in range(1,29): #1 to (num of switches +1)
+            main.Mininet1.assign_sw_controller(sw=str(i),count=3, 
+                    ip1=ONOS1_ip, port1=ONOS1_port,
+                    ip2=ONOS2_ip, port2=ONOS2_port,
+		            ip3=ONOS3_ip, port3=ONOS3_port)
+
+        switch_mastership = main.TRUE
+        for i in range (1,29):
+            response = main.Mininet1.get_sw_controller("s"+str(i))
+            print("Response is " + str(response))
+            if re.search("tcp:"+ONOS1_ip,response):
+                switch_mastership = switch_mastership and main.TRUE
+            else:
+                switch_mastership = main.FALSE
+
+        if switch_mastership == main.TRUE:
+            main.log.report("Controller assignment successfull")
+        else:
+             main.log.report("Controller assignment failed")
+        #REACTIVE FWD test
+        main.step("Pingall")
+        ping_result = main.FALSE
+        time1 = time.time()
+        ping_result = main.Mininet1.pingall()
+        time2 = time.time()
+        print "Time for pingall: %2f seconds" % (time2 - time1)
+      
+        case4_result = switch_mastership and ping_result
+        if ping_result == main.TRUE:
+            main.log.report("Pingall Test in reactive mode to discover the hosts successful")
+        else:
+            main.log.report("Pingall Test in reactive mode to discover the hosts failed")
+
+        utilities.assert_equals(expect=main.TRUE, actual=case4_result,onpass="Controller assignment and Pingall Test successful",onfail="Controller assignment and Pingall Test NOT successful")
+
+    
+
+    def CASE5(self,main) :
+        import json
+        from subprocess import Popen, PIPE
+        from sts.topology.teston_topology import TestONTopology # assumes that sts is already in you PYTHONPATH
+        ONOS1_ip = main.params['CTRL']['ip1']
+        ONOS2_ip = main.params['CTRL']['ip2']
+        ONOS3_ip = main.params['CTRL']['ip3']
+        
+        main.log.report("This testcase is testing if all ONOS nodes are in topology sync with mininet and its peer ONOS nodes")
+        main.log.report("__________________________________")        
+        main.case ("Testing Mininet topology with the topology of multi instances ONOS") 
+        main.step("Collecting topology information from ONOS")
+        devices1 = main.ONOScli1.devices()
+        devices2 = main.ONOScli2.devices()
+        devices3 = main.ONOScli3.devices()
+        #print "devices1 = ", devices1
+        #print "devices2 = ", devices2
+        #print "devices3 = ", devices3
+        hosts1 = main.ONOScli1.hosts()
+        hosts2 = main.ONOScli2.hosts()
+        hosts3 = main.ONOScli3.hosts()
+        #print "hosts1 = ", hosts1
+        #print "hosts2 = ", hosts2
+        #print "hosts3 = ", hosts3
+        ports1 = main.ONOScli1.ports()
+        ports2 = main.ONOScli2.ports()
+        ports3 = main.ONOScli3.ports()
+        #print "ports1 = ", ports1
+        #print "ports2 = ", ports2    
+        #print "ports3 = ", ports3
+        links1 = main.ONOScli1.links()
+        links2 = main.ONOScli2.links()
+        links3 = main.ONOScli3.links()
+        #print "links1 = ", links1
+        #print "links2 = ", links2
+        #print "links3 = ", links3
+        
+        print "**************"
+        
+        main.step("Start continuous pings")
+        main.Mininet2.pingLong(src=main.params['PING']['source1'],
+                            target=main.params['PING']['target1'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source2'],
+                            target=main.params['PING']['target2'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source3'],
+                            target=main.params['PING']['target3'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source4'],
+                            target=main.params['PING']['target4'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source5'],
+                            target=main.params['PING']['target5'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source6'],
+                            target=main.params['PING']['target6'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source7'],
+                            target=main.params['PING']['target7'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source8'],
+                            target=main.params['PING']['target8'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source9'],
+                            target=main.params['PING']['target9'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source10'],
+                            target=main.params['PING']['target10'],pingTime=500)
+
+        main.step("Create TestONTopology object")
+        global ctrls
+        ctrls = []
+        count = 1
+        while True:
+            temp = ()
+            if ('ip' + str(count)) in main.params['CTRL']:
+                temp = temp + (getattr(main,('ONOS' + str(count))),)
+                temp = temp + ("ONOS"+str(count),)
+                temp = temp + (main.params['CTRL']['ip'+str(count)],)
+                temp = temp + (eval(main.params['CTRL']['port'+str(count)]),)
+                ctrls.append(temp)
+                count = count + 1
+            else:
+                break
+        global MNTopo
+        Topo = TestONTopology(main.Mininet1, ctrls) # can also add Intent API info for intent operations
+        MNTopo = Topo
+
+        Topology_Check = main.TRUE
+        main.step("Compare ONOS Topology to MN Topology")
+        
+        switches_results1 =  main.Mininet1.compare_switches(MNTopo, json.loads(devices1))
+        print "switches_Result1 = ", switches_results1
+        utilities.assert_equals(expect=main.TRUE, actual=switches_results1,
+                onpass="ONOS1 Switches view is correct",
+                onfail="ONOS1 Switches view is incorrect")
+
+        switches_results2 =  main.Mininet1.compare_switches(MNTopo, json.loads(devices2))
+        utilities.assert_equals(expect=main.TRUE, actual=switches_results2,
+                onpass="ONOS2 Switches view is correct",
+                onfail="ONOS2 Switches view is incorrect")
+    
+        switches_results3 =  main.Mininet1.compare_switches(MNTopo, json.loads(devices3))
+        utilities.assert_equals(expect=main.TRUE, actual=switches_results3,
+                onpass="ONOS3 Switches view is correct",
+                onfail="ONOS3 Switches view is incorrect")
+
+        '''
+        ports_results1 =  main.Mininet1.compare_ports(MNTopo, json.loads(ports1))
+        utilities.assert_equals(expect=main.TRUE, actual=ports_results1,
+                onpass="ONOS1 Ports view is correct",
+                onfail="ONOS1 Ports view is incorrect")
+
+        ports_results2 =  main.Mininet1.compare_ports(MNTopo, json.loads(ports2))
+        utilities.assert_equals(expect=main.TRUE, actual=ports_results2,
+                onpass="ONOS2 Ports view is correct",
+                onfail="ONOS2 Ports view is incorrect")
+
+        ports_results3 =  main.Mininet1.compare_ports(MNTopo, json.loads(ports3))
+        utilities.assert_equals(expect=main.TRUE, actual=ports_results3,
+                onpass="ONOS3 Ports view is correct",
+                onfail="ONOS3 Ports view is incorrect")
+        '''        
+
+        links_results1 =  main.Mininet1.compare_links(MNTopo, json.loads(links1))
+        utilities.assert_equals(expect=main.TRUE, actual=links_results1,
+                onpass="ONOS1 Links view is correct",
+                onfail="ONOS1 Links view is incorrect")
+
+        links_results2 =  main.Mininet1.compare_links(MNTopo, json.loads(links2))
+        utilities.assert_equals(expect=main.TRUE, actual=links_results2,
+                onpass="ONOS2 Links view is correct",
+                onfail="ONOS2 Links view is incorrect")
+
+        links_results3 =  main.Mininet1.compare_links(MNTopo, json.loads(links3))
+        utilities.assert_equals(expect=main.TRUE, actual=links_results3,
+                onpass="ONOS2 Links view is correct",
+                onfail="ONOS2 Links view is incorrect")
+
+        #topo_result = switches_results1 and switches_results2 and switches_results3\
+                #and ports_results1 and ports_results2 and ports_results3\
+                #and links_results1 and links_results2 and links_results3
+        
+        topo_result = switches_results1 and switches_results2 and switches_results3\
+                and links_results1 and links_results2 and links_results3
+
+        if topo_result == main.TRUE:
+            main.log.report("Topology Check Test with mininet and ONOS instances successful")
+        else:
+            main.log.report("Topology Check Test with mininet and ONOS instances failed")
+
+        utilities.assert_equals(expect=main.TRUE, actual=topo_result,
+                onpass="Topology Check Test successful",
+                onfail="Topology Check Test NOT successful")
+
+
+
+
+    def CASE10(self):
+        main.log.report("This testcase uninstalls the reactive forwarding app")
+        main.log.report("__________________________________")
+        main.case("Uninstalling reactive forwarding app")
+        #Unistall onos-app-fwd app to disable reactive forwarding
+        appUninstall_result1 = main.ONOScli1.feature_uninstall("onos-app-fwd")
+        appUninstall_result2 = main.ONOScli2.feature_uninstall("onos-app-fwd")
+        appUninstall_result3 = main.ONOScli3.feature_uninstall("onos-app-fwd")
+        main.log.info("onos-app-fwd uninstalled")
+
+        #After reactive forwarding is disabled, the reactive flows on switches timeout in 10-15s
+        #So sleep for 15s
+        time.sleep(15)
+        
+        hosts = main.ONOScli1.hosts()
+        main.log.info(hosts)
+        
+        case10_result = appUninstall_result1 and appUninstall_result2 and appUninstall_result3
+        utilities.assert_equals(expect=main.TRUE, actual=case10_result,onpass="Reactive forwarding app uninstallation successful",onfail="Reactive forwarding app uninstallation failed")
+
+
+    def CASE6(self):
+        main.log.report("This testcase is testing the addition of host intents and then doing pingall")
+        main.log.report("__________________________________")        
+        main.case("Obtaining hostsfor adding host intents")
+        main.step("Get hosts")
+        hosts = main.ONOScli1.hosts()
+        main.log.info(hosts)
+
+        main.step("Get all devices id")
+        devices_id_list = main.ONOScli1.get_all_devices_id()
+        main.log.info(devices_id_list) 
+
+        #ONOS displays the hosts in hex format unlike mininet which does in decimal format
+        #So take care while adding intents
+        
+        '''
+        main.step("Add host intents for mn hosts(h8-h18,h9-h19,h10-h20,h11-h21,h12-h22,h13-h23,h14-h24,h15-h25,h16-h26,h17-h27)")
+        hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:08/-1", "00:00:00:00:00:12/-1")
+        hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:09/-1", "00:00:00:00:00:13/-1")
+        hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:0A/-1", "00:00:00:00:00:14/-1")
+        hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:0B/-1", "00:00:00:00:00:15/-1")
+        hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:0C/-1", "00:00:00:00:00:16/-1")
+        hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:0D/-1", "00:00:00:00:00:17/-1")
+        hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:0E/-1", "00:00:00:00:00:18/-1")
+        hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:0F/-1", "00:00:00:00:00:19/-1")
+        hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:10/-1", "00:00:00:00:00:1A/-1")
+        hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:11/-1", "00:00:00:00:00:1B/-1") 
+        '''
+
+        for i in range(8,18):
+            main.log.info("Adding host intent between h"+str(i)+" and h"+str(i+10))
+            host1 =  "00:00:00:00:00:" + str(hex(i)[2:]).zfill(2).upper()
+            host2 =  "00:00:00:00:00:" + str(hex(i+10)[2:]).zfill(2).upper()
+            #NOTE: get host can return None
+            #TODO: handle this
+            host1_id = main.ONOScli1.get_host(host1)['id']
+            host2_id = main.ONOScli1.get_host(host2)['id']
+            tmp_result = main.ONOScli1.add_host_intent(host1_id, host2_id )
+
+        flowHandle = main.ONOScli1.flows()
+        #print "flowHandle = ", flowHandle
+        main.log.info("flows:" +flowHandle)
+
+        count = 1
+        i = 8
+        Ping_Result = main.TRUE
+        while i <18 :
+            main.log.info("\n\nh"+str(i)+" is Pinging h" + str(i+10))
+            ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+10))
+            if ping == main.FALSE and count <5:
+                count+=1
+                #i = 8
+                Ping_Result = main.FALSE
+                main.log.report("Ping between h" + str(i) + " and h" + str(i+10) + " failed. Making attempt number "+str(count) + " in 2 seconds")
+                time.sleep(2)
+            elif ping==main.FALSE:
+                main.log.report("All ping attempts between h" + str(i) + " and h" + str(i+10) +"have failed")
+                i=19
+                Ping_Result = main.FALSE
+            elif ping==main.TRUE:
+                main.log.info("Ping test between h" + str(i) + " and h" + str(i+10) + "passed!")
+                i+=1
+                Ping_Result = main.TRUE
+            else:
+                main.log.info("Unknown error")
+                Ping_Result = main.ERROR
+        if Ping_Result==main.FALSE:
+            main.log.report("Host intents have not ben installed correctly. Cleaning up")
+            #main.cleanup()
+            #main.exit()
+        if Ping_Result==main.TRUE:
+            main.log.report("Host intents have been installed correctly")
+
+        case6_result = Ping_Result
+        utilities.assert_equals(expect=main.TRUE, actual=case6_result,
+                onpass="Host intent addition and Pingall Test successful",
+                onfail="Host intent addition and Pingall Test NOT successful")
+
+
+    def CASE7 (self,main):
+       
+        ONOS1_ip = main.params['CTRL']['ip1']
+
+        link_sleep = int(main.params['timers']['LinkDiscovery'])
+
+        main.log.report("This testscase is killing a link to ensure that link discovery is consistent")
+        main.log.report("__________________________________")        
+        main.case("Killing a link to Ensure that Link Discovery is Working Properly")
+        main.step("Start continuous pings")
+       
+        main.Mininet2.pingLong(src=main.params['PING']['source1'],
+                            target=main.params['PING']['target1'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source2'],
+                            target=main.params['PING']['target2'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source3'],
+                            target=main.params['PING']['target3'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source4'],
+                            target=main.params['PING']['target4'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source5'],
+                            target=main.params['PING']['target5'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source6'],
+                            target=main.params['PING']['target6'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source7'],
+                            target=main.params['PING']['target7'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source8'],
+                            target=main.params['PING']['target8'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source9'],
+                            target=main.params['PING']['target9'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source10'],
+                            target=main.params['PING']['target10'],pingTime=500)
+
+
+        main.step("Determine the current number of switches and links")
+        topology_output = main.ONOScli1.topology()
+        topology_result = main.ONOSbench.get_topology(topology_output)
+        activeSwitches = topology_result['devices']
+        links = topology_result['links']
+        print "activeSwitches = ", type(activeSwitches)
+        print "links = ", type(links)
+        main.log.info("Currently there are %s switches and %s links"  %(str(activeSwitches), str(links)))
+
+        main.step("Kill Link between s3 and s28")
+        main.Mininet1.link(END1="s3",END2="s28",OPTION="down")
+        time.sleep(link_sleep)
+        topology_output = main.ONOScli2.topology()
+        Link_Down = main.ONOSbench.check_status(topology_output,activeSwitches,str(int(links)-2))
+        if Link_Down == main.TRUE:
+            main.log.report("Link Down discovered properly")
+        utilities.assert_equals(expect=main.TRUE,actual=Link_Down,
+                onpass="Link Down discovered properly",
+                onfail="Link down was not discovered in "+ str(link_sleep) + " seconds")
+        
+        main.step("Bring link between s3 and s28 back up")
+        Link_Up = main.Mininet1.link(END1="s3",END2="s28",OPTION="up")
+        time.sleep(link_sleep)
+        topology_output = main.ONOScli2.topology()
+        Link_Up = main.ONOSbench.check_status(topology_output,activeSwitches,str(links))
+        if Link_Up == main.TRUE:
+            main.log.report("Link up discovered properly")
+        utilities.assert_equals(expect=main.TRUE,actual=Link_Up,
+                onpass="Link up discovered properly",
+                onfail="Link up was not discovered in "+ str(link_sleep) + " seconds")
+
+        main.step("Compare ONOS Topology to MN Topology")
+        main.case ("Testing Mininet topology with the topology of multi instances ONOS") 
+        main.step("Collecting topology information from ONOS")
+        devices1 = main.ONOScli1.devices()
+        devices2 = main.ONOScli2.devices()
+        devices3 = main.ONOScli3.devices()
+        print "devices1 = ", devices1
+        print "devices2 = ", devices2
+        print "devices3 = ", devices3
+        hosts1 = main.ONOScli1.hosts()
+        hosts2 = main.ONOScli2.hosts()
+        hosts3 = main.ONOScli3.hosts()
+        #print "hosts1 = ", hosts1
+        #print "hosts2 = ", hosts2
+        #print "hosts3 = ", hosts3
+        ports1 = main.ONOScli1.ports()
+        ports2 = main.ONOScli2.ports()
+        ports3 = main.ONOScli3.ports()
+        #print "ports1 = ", ports1
+        #print "ports2 = ", ports2    
+        #print "ports3 = ", ports3
+        links1 = main.ONOScli1.links()
+        links2 = main.ONOScli2.links()
+        links3 = main.ONOScli3.links()
+        #print "links1 = ", links1
+        #print "links2 = ", links2
+        #print "links3 = ", links3
+        
+        print "**************"
+        
+        main.step("Start continuous pings")
+        main.Mininet2.pingLong(src=main.params['PING']['source1'],
+                            target=main.params['PING']['target1'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source2'],
+                            target=main.params['PING']['target2'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source3'],
+                            target=main.params['PING']['target3'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source4'],
+                            target=main.params['PING']['target4'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source5'],
+                            target=main.params['PING']['target5'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source6'],
+                            target=main.params['PING']['target6'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source7'],
+                            target=main.params['PING']['target7'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source8'],
+                            target=main.params['PING']['target8'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source9'],
+                            target=main.params['PING']['target9'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source10'],
+                            target=main.params['PING']['target10'],pingTime=500)
+
+        main.step("Create TestONTopology object")
+        global ctrls
+        ctrls = []
+        count = 1
+        while True:
+            temp = ()
+            if ('ip' + str(count)) in main.params['CTRL']:
+                temp = temp + (getattr(main,('ONOS' + str(count))),)
+                temp = temp + ("ONOS"+str(count),)
+                temp = temp + (main.params['CTRL']['ip'+str(count)],)
+                temp = temp + (eval(main.params['CTRL']['port'+str(count)]),)
+                ctrls.append(temp)
+                count = count + 1
+            else:
+                break
+        global MNTopo
+        Topo = TestONTopology(main.Mininet1, ctrls) # can also add Intent API info for intent operations
+        MNTopo = Topo
+
+        Topology_Check = main.TRUE
+        main.step("Compare ONOS Topology to MN Topology")
+        
+        switches_results1 =  main.Mininet1.compare_switches(MNTopo, json.loads(devices1))
+        print "switches_Result1 = ", switches_results1
+        utilities.assert_equals(expect=main.TRUE, actual=switches_results1,
+                onpass="ONOS1 Switches view is correct",
+                onfail="ONOS1 Switches view is incorrect")
+
+        switches_results2 =  main.Mininet1.compare_switches(MNTopo, json.loads(devices2))
+        utilities.assert_equals(expect=main.TRUE, actual=switches_results2,
+                onpass="ONOS2 Switches view is correct",
+                onfail="ONOS2 Switches view is incorrect")
+    
+        switches_results3 =  main.Mininet1.compare_switches(MNTopo, json.loads(devices3))
+        utilities.assert_equals(expect=main.TRUE, actual=switches_results3,
+                onpass="ONOS3 Switches view is correct",
+                onfail="ONOS3 Switches view is incorrect")
+
+        '''
+        ports_results1 =  main.Mininet1.compare_ports(MNTopo, json.loads(ports1))
+        utilities.assert_equals(expect=main.TRUE, actual=ports_results1,
+                onpass="ONOS1 Ports view is correct",
+                onfail="ONOS1 Ports view is incorrect")
+
+        ports_results2 =  main.Mininet1.compare_ports(MNTopo, json.loads(ports2))
+        utilities.assert_equals(expect=main.TRUE, actual=ports_results2,
+                onpass="ONOS2 Ports view is correct",
+                onfail="ONOS2 Ports view is incorrect")
+
+        ports_results3 =  main.Mininet1.compare_ports(MNTopo, json.loads(ports3))
+        utilities.assert_equals(expect=main.TRUE, actual=ports_results3,
+                onpass="ONOS3 Ports view is correct",
+                onfail="ONOS3 Ports view is incorrect")
+        '''        
+
+        links_results1 =  main.Mininet1.compare_links(MNTopo, json.loads(links1))
+        utilities.assert_equals(expect=main.TRUE, actual=links_results1,
+                onpass="ONOS1 Links view is correct",
+                onfail="ONOS1 Links view is incorrect")
+
+        links_results2 =  main.Mininet1.compare_links(MNTopo, json.loads(links2))
+        utilities.assert_equals(expect=main.TRUE, actual=links_results2,
+                onpass="ONOS2 Links view is correct",
+                onfail="ONOS2 Links view is incorrect")
+
+        links_results3 =  main.Mininet1.compare_links(MNTopo, json.loads(links3))
+        utilities.assert_equals(expect=main.TRUE, actual=links_results3,
+                onpass="ONOS2 Links view is correct",
+                onfail="ONOS2 Links view is incorrect")
+               
+        #topo_result = switches_results1 and switches_results2 and switches_results3\
+                #and ports_results1 and ports_results2 and ports_results3\
+                #and links_results1 and links_results2 and links_results3
+        
+        topo_result = switches_results1 and switches_results2 and switches_results3\
+                and links_results1 and links_results2 and links_results3
+
+        utilities.assert_equals(expect=main.TRUE, actual=topo_result and Link_Up and Link_Down,
+                onpass="Topology Check Test successful",
+                onfail="Topology Check Test NOT successful")
+
+
+    def CASE8(self):
+        '''
+        Intent removal
+        ''' 
+        main.log.report("This testcase removes host any previously added intents")
+        main.log.report("__________________________________")        
+        main.log.info("Removing any previously installed intents")
+        main.case("Removing intents")
+        main.step("Obtain the intent id's")
+        intent_result = main.ONOScli1.intents(json_format = False)
+        
+        intent_linewise = intent_result.split("\n")
+        intentList = []
+        for line in intent_linewise:
+            if line.startswith("id="):
+                intentList.append(line)
+
+        intentids = []
+        for line in intentList:
+            intentids.append(line.split(",")[0].split("=")[1])
+        for id in intentids:
+            main.log.info("id = " +id)
+
+        main.step("Iterate through the intentids list and remove each intent")
+        for id in intentids:
+            main.ONOScli1.remove_intent(intent_id = id)
+
+        intent_result = main.ONOScli1.intents(json_format = False)
+        main.log.info("intent_result = " +intent_result)
+        case8_result = main.TRUE
+        
+        i = 8
+        Ping_Result = main.TRUE
+        while i <18 :
+            main.log.info("\n\nh"+str(i)+" is Pinging h" + str(i+10))
+            ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+10))
+            if ping==main.TRUE:
+                i = 19
+                Ping_Result = main.TRUE
+            elif ping==main.FALSE:
+                i+=1
+                Ping_Result = main.FALSE
+            else:
+                main.log.info("Unknown error")
+                Ping_Result = main.ERROR
+        
+        #Note: If the ping result failed, that means the intents have been withdrawn correctly.
+        if Ping_Result==main.TRUE:
+            main.log.report("Host intents have not been withdrawn correctly")
+            #main.cleanup()
+            #main.exit()
+        if Ping_Result==main.FALSE:
+            main.log.report("Host intents have been withdrawn correctly")
+
+        case8_result = case8_result and Ping_Result
+
+        if case8_result == main.FALSE:
+            main.log.report("Intent removal successful")
+        else:
+            main.log.report("Intent removal failed")
+                        
+        utilities.assert_equals(expect=main.FALSE, actual=case8_result,
+                onpass="Intent removal test failed",
+                onfail="Intent removal test successful")
+             
+
+    def CASE9(self):
+        '''
+        This test case adds point intents. Make sure you run test case 8 which is host intent removal before executing this test case.
+        Else the host intent's flows will persist on switches and the pings would work even if there is some issue with the point intent's flows
+        '''
+        main.log.report("This testcase adds point intents and then does pingall")
+        main.log.report("__________________________________")        
+        main.log.info("Adding point intents")
+        main.case("Adding bidirectional point for mn hosts(h8-h18,h9-h19,h10-h20,h11-h21,h12-h22,h13-h23,h14-h24,h15-h25,h16-h26,h17-h27)") 
+        main.step("Add point-to-point intents for mininet hosts h8 and h18 or ONOS hosts h8 and h12")
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003008/1", "of:0000000000006018/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006018/1", "of:0000000000003008/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+       
+        main.step("Add point-to-point intents for mininet hosts h9 and h19 or ONOS hosts h9 and h13")
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003009/1", "of:0000000000006019/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006019/1", "of:0000000000003009/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+        
+        main.step("Add point-to-point intents for mininet hosts h10 and h20 or ONOS hosts hA and h14")
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003010/1", "of:0000000000006020/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006020/1", "of:0000000000003010/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+
+        main.step("Add point-to-point intents for mininet hosts h11 and h21 or ONOS hosts hB and h15")
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003011/1", "of:0000000000006021/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006021/1", "of:0000000000003011/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+            
+        main.step("Add point-to-point intents for mininet hosts h12 and h22 or ONOS hosts hC and h16")
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003012/1", "of:0000000000006022/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006022/1", "of:0000000000003012/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+            
+        main.step("Add point-to-point intents for mininet hosts h13 and h23 or ONOS hosts hD and h17")
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003013/1", "of:0000000000006023/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006023/1", "of:0000000000003013/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+
+        main.step("Add point-to-point intents for mininet hosts h14 and h24 or ONOS hosts hE and h18")
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003014/1", "of:0000000000006024/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006024/1", "of:0000000000003014/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+            
+        main.step("Add point-to-point intents for mininet hosts h15 and h25 or ONOS hosts hF and h19")
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003015/1", "of:0000000000006025/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006025/1", "of:0000000000003015/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+            
+        main.step("Add point-to-point intents for mininet hosts h16 and h26 or ONOS hosts h10 and h1A")
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003016/1", "of:0000000000006026/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006026/1", "of:0000000000003016/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+
+
+        main.step("Add point-to-point intents for mininet hosts h17 and h27 or ONOS hosts h11 and h1B")
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003017/1", "of:0000000000006027/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+       
+        ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006027/1", "of:0000000000003017/1")
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info("Point to point intent install successful")
+            #main.log.info(get_intent_result)
+
+        print("_______________________________________________________________________________________")
+
+        flowHandle = main.ONOScli1.flows()
+        #print "flowHandle = ", flowHandle
+        main.log.info("flows :" + flowHandle)        
+
+        count = 1
+        i = 8
+        Ping_Result = main.TRUE
+        while i <18 :
+            main.log.info("\n\nh"+str(i)+" is Pinging h" + str(i+10))
+            ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+10))
+            if ping == main.FALSE and count <5:
+                count+=1
+                #i = 8
+                Ping_Result = main.FALSE
+                main.log.report("Ping between h" + str(i) + " and h" + str(i+10) + " failed. Making attempt number "+str(count) + " in 2 seconds")
+                time.sleep(2)
+            elif ping==main.FALSE:
+                main.log.report("All ping attempts between h" + str(i) + " and h" + str(i+10) +"have failed")
+                i=19
+                Ping_Result = main.FALSE
+            elif ping==main.TRUE:
+                main.log.info("Ping test between h" + str(i) + " and h" + str(i+10) + "passed!")
+                i+=1
+                Ping_Result = main.TRUE
+            else:
+                main.log.info("Unknown error")
+                Ping_Result = main.ERROR
+        if Ping_Result==main.FALSE:
+            main.log.report("Ping all test after Point intents addition failed. Cleaning up")
+            #main.cleanup()
+            #main.exit()
+        if Ping_Result==main.TRUE:
+            main.log.report("Ping all test after Point intents addition successful")
+
+        case8_result = Ping_Result
+        utilities.assert_equals(expect=main.TRUE, actual=case8_result,
+                onpass="Ping all test after Point intents addition successful",
+                onfail="Ping all test after Point intents addition failed")
+
+    def CASE31(self):
+        ''' 
+            This test case adds point intent related to SDN-IP matching on ICMP (ethertype=IPV4, ipProto=1)
+        '''
+        import json
+
+        main.log.report("This test case adds point intent related to SDN-IP matching on ICMP")
+        main.case("Adding bidirectional point intent related to SDN-IP matching on ICMP")
+        main.step("Adding bidirectional point intent")
+        #add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32 --ethType=IPV4 --ipProto=1  of:0000000000003008/1 of:0000000000006018/1
+        
+        hosts_json = json.loads(main.ONOScli1.hosts())
+        for  i in range(8,11):
+            main.log.info("Adding point intent between h"+str(i)+" and h"+str(i+10))
+            host1 =  "00:00:00:00:00:" + str(hex(i)[2:]).zfill(2).upper()
+            host2 =  "00:00:00:00:00:" + str(hex(i+10)[2:]).zfill(2).upper()
+            host1_id = main.ONOScli1.get_host(host1)['id']
+            host2_id = main.ONOScli1.get_host(host2)['id']
+            for host in hosts_json:
+                if host['id'] == host1_id:
+                    ip1 = host['ips'][0]
+                    ip1 = str(ip1+"/32")
+                    device1 = host['location']['device']
+                    device1 = str(device1+"/1")
+                elif host['id'] == host2_id:
+                    ip2 = str(host['ips'][0])+"/32"
+                    device2 = host['location']["device"]
+                    device2 = str(device2+"/1")
+                
+            p_intent_result1 = main.ONOScli1.add_point_intent(ingress_device=device1, egress_device=device2, ipSrc=ip1, ipDst=ip2,
+                                  ethType=main.params['SDNIP']['ethType'], ipProto=main.params['SDNIP']['icmpProto'])
+            
+            get_intent_result = main.ONOScli1.intents(json_format = False)
+            main.log.info(get_intent_result)
+ 
+            p_intent_result2 = main.ONOScli1.add_point_intent(ingress_device=device2, egress_device=device1, ipSrc=ip2, ipDst=ip1, 
+                                  ethType=main.params['SDNIP']['ethType'], ipProto=main.params['SDNIP']['icmpProto']) 
+            
+            get_intent_result = main.ONOScli1.intents(json_format = False)
+            main.log.info(get_intent_result)
+            if (p_intent_result1 and p_intent_result2) == main.TRUE:
+                #get_intent_result = main.ONOScli1.intents()
+                #main.log.info(get_intent_result)
+                main.log.info("Point intent related to SDN-IP matching on ICMP install successful")
+       
+        time.sleep(15) 
+        get_intent_result = main.ONOScli1.intents(json_format = False)
+        main.log.info("intents = "+ get_intent_result)
+        get_flows_result = main.ONOScli1.flows()
+        main.log.info("flows = " + get_flows_result)
+        
+        count = 1
+        i = 8
+        Ping_Result = main.TRUE
+        while i <11 :
+            main.log.info("\n\nh"+str(i)+" is Pinging h" + str(i+10))
+            ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+10))
+            if ping == main.FALSE and count <3:
+                count+=1
+                #i = 8
+                Ping_Result = main.FALSE
+                main.log.report("Ping between h" + str(i) + " and h" + str(i+10) + " failed. Making attempt number "+str(count) + " in 2 seconds")
+                time.sleep(2)
+            elif ping==main.FALSE:
+                main.log.report("All ping attempts between h" + str(i) + " and h" + str(i+10) +"have failed")
+                i=19
+                Ping_Result = main.FALSE
+            elif ping==main.TRUE:
+                main.log.info("Ping test between h" + str(i) + " and h" + str(i+10) + "passed!")
+                i+=1
+                Ping_Result = main.TRUE
+            else:
+                main.log.info("Unknown error")
+                Ping_Result = main.ERROR
+        if Ping_Result==main.FALSE:
+            main.log.report("Ping test after Point intents related to SDN-IP matching on ICMP failed.")
+            #main.cleanup()
+            #main.exit()
+        if Ping_Result==main.TRUE:
+            main.log.report("Ping all test after Point intents related to SDN-IP matching on ICMP successful")
+                   
+        case31_result = Ping_Result and p_intent_result1 and p_intent_result2
+        utilities.assert_equals(expect=main.TRUE, actual=case31_result,
+                onpass="Point intent related to SDN-IP matching on ICMP and ping test successful",
+                onfail="Point intent related to SDN-IP matching on ICMP and ping test failed")
+   
+    def CASE32(self):
+        ''' 
+            This test case adds point intent related to SDN-IP matching on TCP (ethertype=IPV4, ipProto=6, DefaultPort for iperf=5001)
+            Note: Although BGP port is 179, we are using 5001 because iperf is used for verifying and iperf's default port is 5001
+        '''
+        import json
+
+        main.log.report("This test case adds point intent related to SDN-IP matching on TCP")
+        main.case("Adding bidirectional point intent related to SDN-IP matching on TCP")
+        main.step("Adding bidirectional point intent")
+        """
+        add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32 --ethType=IPV4 --ipProto=6 --tcpDst=5001  of:0000000000003008/1 of:0000000000006018/1
+
+        add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32 --ethType=IPV4 --ipProto=6 --tcpDst=5001  of:0000000000006018/1 of:0000000000003008/1
+    
+        add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32 --ethType=IPV4 --ipProto=6 --tcpSrc=5001  of:0000000000003008/1 of:0000000000006018/1
+
+        add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32 --ethType=IPV4 --ipProto=6 --tcpSrc=5001  of:0000000000006018/1 of:0000000000003008/1
+
+        """           
+    
+        hosts_json = json.loads(main.ONOScli1.hosts())
+        for  i in range(8,9):
+            main.log.info("Adding point intent between h"+str(i)+" and h"+str(i+10))
+            host1 =  "00:00:00:00:00:" + str(hex(i)[2:]).zfill(2).upper()
+            host2 =  "00:00:00:00:00:" + str(hex(i+10)[2:]).zfill(2).upper()
+            host1_id = main.ONOScli1.get_host(host1)['id']
+            host2_id = main.ONOScli1.get_host(host2)['id']
+            for host in hosts_json:
+                if host['id'] == host1_id:
+                    ip1 = host['ips'][0]
+                    ip1 = str(ip1+"/32")
+                    device1 = host['location']['device']
+                    device1 = str(device1+"/1")
+                elif host['id'] == host2_id:
+                    ip2 = str(host['ips'][0])+"/32"
+                    device2 = host['location']["device"]
+                    device2 = str(device2+"/1")
+                
+            p_intent_result1 = main.ONOScli1.add_point_intent(ingress_device=device1, egress_device=device2, ipSrc=ip1, ipDst=ip2,
+                                  ethType=main.params['SDNIP']['ethType'], ipProto=main.params['SDNIP']['tcpProto'], tcpDst=main.params['SDNIP']['dstPort']) 
+            p_intent_result2 = main.ONOScli1.add_point_intent(ingress_device=device2, egress_device=device1, ipSrc=ip2, ipDst=ip1, 
+                                  ethType=main.params['SDNIP']['ethType'], ipProto=main.params['SDNIP']['tcpProto'], tcpDst=main.params['SDNIP']['dstPort'])
+
+            p_intent_result3 = main.ONOScli1.add_point_intent(ingress_device=device1, egress_device=device2, ipSrc=ip1, ipDst=ip2,
+                                  ethType=main.params['SDNIP']['ethType'], ipProto=main.params['SDNIP']['tcpProto'], tcpSrc=main.params['SDNIP']['srcPort'])
+            p_intent_result4 = main.ONOScli1.add_point_intent(ingress_device=device2, egress_device=device1, ipSrc=ip2, ipDst=ip1,
+                                  ethType=main.params['SDNIP']['ethType'], ipProto=main.params['SDNIP']['tcpProto'], tcpSrc=main.params['SDNIP']['srcPort']) 
+
+            p_intent_result = p_intent_result1 and p_intent_result2 and p_intent_result3 and p_intent_result4
+            if p_intent_result ==main.TRUE:
+                get_intent_result = main.ONOScli1.intents(json_format = False)
+                main.log.info(get_intent_result)
+                main.log.info("Point intent related to SDN-IP matching on TCP install successful")
+        
+        iperf_result = main.Mininet1.iperf('h8', 'h18') 
+        if iperf_result == main.TRUE:
+            main.log.report("iperf test successful")
+        else:
+            main.log.report("iperf test failed")
+
+
+        case32_result = p_intent_result and iperf_result
+        utilities.assert_equals(expect=main.TRUE, actual=case32_result,
+                onpass="Ping all test after Point intents addition related to SDN-IP on TCP match successful",
+                onfail="Ping all test after Point intents addition related to SDN-IP on TCP match failed")
+
+
+    def CASE33(self):
+        ''' 
+            This test case adds multipoint to singlepoint  intent related to SDN-IP matching on destination ip and the action is to rewrite the mac address 
+            Here the mac address to be rewritten is the mac address of the egress device
+        '''
+        import json
+        import time
+
+        main.log.report("This test case adds multipoint to singlepoint intent related to SDN-IP matching on destination ip and rewrite mac address action")
+        main.case("Adding multipoint to singlepoint intent related to SDN-IP matching on destination ip")
+        main.step("Adding bidirectional multipoint to singlepoint intent")
+        """
+        add-multi-to-single-intent --ipDst=10.0.3.0/24 --setEthDst=00:00:00:00:00:12 of:0000000000003008/1 0000000000003009/1 of:0000000000006018/1
+        
+        add-multi-to-single-intent --ipDst=10.0.1.0/24 --setEthDst=00:00:00:00:00:08 of:0000000000006018/1 0000000000003009/1 of:0000000000003008/1 
+        """    
+        
+        main.case("Installing multipoint to single point intent with rewrite mac address")
+        main.step("Uninstalling proxy arp app")
+        #Unistall onos-app-proxyarp app to disable reactive forwarding
+        appUninstall_result1 = main.ONOScli1.feature_uninstall("onos-app-proxyarp")
+        appUninstall_result2 = main.ONOScli2.feature_uninstall("onos-app-proxyarp")
+        appUninstall_result3 = main.ONOScli3.feature_uninstall("onos-app-proxyarp")
+        main.log.info("onos-app-proxyarp uninstalled") 
+
+        main.step("Changing ipaddress of hosts h8,h9 and h18")
+        main.Mininet1.changeIP(host='h8', intf='h8-eth0', newIP='10.0.1.1', newNetmask='255.255.255.0') 
+        main.Mininet1.changeIP(host='h9', intf='h9-eth0', newIP='10.0.2.1', newNetmask='255.255.255.0')
+        main.Mininet1.changeIP(host='h10', intf='h10-eth0', newIP='10.0.3.1', newNetmask='255.255.255.0')
+
+        main.step("Changing default gateway of hosts h8,h9 and h18")
+        main.Mininet1.changeDefaultGateway(host='h8', newGW='10.0.1.254')
+        main.Mininet1.changeDefaultGateway(host='h9', newGW='10.0.2.254')
+        main.Mininet1.changeDefaultGateway(host='h10', newGW='10.0.3.254')
+
+        main.step("Assigning random mac address to the default gateways since proxyarp app is uninstalled")
+        main.Mininet1.addStaticMACAddress(host='h8', GW='10.0.1.254', macaddr='00:00:00:00:11:11')
+        main.Mininet1.addStaticMACAddress(host='h9', GW='10.0.2.254', macaddr='00:00:00:00:22:22')
+        main.Mininet1.addStaticMACAddress(host='h10', GW='10.0.3.254', macaddr='00:00:00:00:33:33')
+         
+        main.step("Verify static gateway and MAC address assignment")
+        main.Mininet1.verifyStaticGWandMAC(host='h8')
+        main.Mininet1.verifyStaticGWandMAC(host='h9')
+        main.Mininet1.verifyStaticGWandMAC(host='h10')
+        
+        main.step("Adding multipoint to singlepoint intent")               
+        p_intent_result1 = main.ONOScli1.add_multipoint_to_singlepoint_intent(ingress_device1=main.params['MULTIPOINT_INTENT']['device1'], ingress_device2=main.params['MULTIPOINT_INTENT']['device2'],
+                                 egress_device=main.params['MULTIPOINT_INTENT']['device3'], ipDst=main.params['MULTIPOINT_INTENT']['ip1'], setEthDst=main.params['MULTIPOINT_INTENT']['mac1']) 
+        
+        p_intent_result2 = main.ONOScli1.add_multipoint_to_singlepoint_intent(ingress_device1=main.params['MULTIPOINT_INTENT']['device3'], ingress_device2=main.params['MULTIPOINT_INTENT']['device2'],                            
+                                egress_device=main.params['MULTIPOINT_INTENT']['device1'], ipDst=main.params['MULTIPOINT_INTENT']['ip2'], setEthDst=main.params['MULTIPOINT_INTENT']['mac2'])    
+
+
+        get_intent_result = main.ONOScli1.intents(json_format = False)
+        main.log.info("intents = "+ get_intent_result)
+        
+        time.sleep(10)
+        get_flows_result = main.ONOScli1.flows(json_format = False)
+        main.log.info("flows = " + get_flows_result) 
+
+        count = 1
+        i = 8
+        Ping_Result = main.TRUE
+       
+        main.log.info("\n\nh"+str(i)+" is Pinging h" + str(i+2))
+        ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+2))
+        if ping == main.FALSE and count <3:
+            count+=1
+            Ping_Result = main.FALSE
+            main.log.report("Ping between h" + str(i) + " and h" + str(i+2) + " failed. Making attempt number "+str(count) + " in 2 seconds")
+            time.sleep(2)
+        elif ping==main.FALSE:
+            main.log.report("All ping attempts between h" + str(i) + " and h" + str(i+10) +"have failed")
+            Ping_Result = main.FALSE
+        elif ping==main.TRUE:
+            main.log.info("Ping test between h" + str(i) + " and h" + str(i+2) + "passed!")
+            Ping_Result = main.TRUE
+        else:
+            main.log.info("Unknown error")
+            Ping_Result = main.ERROR
+        
+        if Ping_Result==main.FALSE:
+            main.log.report("Ping test failed.")
+            #main.cleanup()
+            #main.exit()
+        if Ping_Result==main.TRUE:
+            main.log.report("Ping all successful")
+
+
+        p_intent_result = p_intent_result1 and p_intent_result2
+        if p_intent_result ==main.TRUE:
+            main.log.info("Multi point intent with rewrite mac address installation successful")
+        else:
+            main.log.info("Multi point intent with rewrite mac address installation failed")
+      
+        case33_result = p_intent_result and Ping_Result
+        utilities.assert_equals(expect=main.TRUE, actual=case33_result,
+                onpass="Ping all test after multipoint to single point intent addition with rewrite mac address successful",
+                onfail="Ping all test after multipoint to single point intent addition with rewrite mac address failed")  
diff --git a/TestON/tests/MultiProd/MultiProd.bak1 b/TestON/tests/MultiProd/MultiProd.bak1
new file mode 100644
index 0000000..6b67f63
--- /dev/null
+++ b/TestON/tests/MultiProd/MultiProd.bak1
@@ -0,0 +1,1523 @@
+
+# Testing the basic functionality of ONOS Next
+# For sanity and driver functionality excercises only.
+
+import time
+import sys
+import os
+import re
+import time
+import json
+
+time.sleep( 1 )
+
+
+class MultiProd:
+
+    def __init__( self ):
+        self.default = ''
+
+    def CASE1( self, main ):
+        """
+        Startup sequence:
+        cell <name>
+        onos-verify-cell
+        onos-remove-raft-logs
+        git pull
+        mvn clean install
+        onos-package
+        onos-install -f
+        onos-wait-for-start
+        """
+        cell_name = main.params[ 'ENV' ][ 'cellName' ]
+        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS1_port = main.params[ 'CTRL' ][ 'port1' ]
+        ONOS2_port = main.params[ 'CTRL' ][ 'port2' ]
+        ONOS3_port = main.params[ 'CTRL' ][ 'port3' ]
+
+        main.case( "Setting up test environment" )
+        main.log.report(
+            "This testcase is testing setting up test environment" )
+        main.log.report( "__________________________________" )
+
+        main.step( "Applying cell variable to environment" )
+        cell_result1 = main.ONOSbench.set_cell( cell_name )
+        #cell_result2 = main.ONOScli1.set_cell( cell_name )
+        #cell_result3 = main.ONOScli2.set_cell( cell_name )
+        #cell_result4 = main.ONOScli3.set_cell( cell_name )
+        verify_result = main.ONOSbench.verify_cell()
+        cell_result = cell_result1
+
+        main.step( "Removing raft logs before a clen installation of ONOS" )
+        remove_log_Result = main.ONOSbench.onos_remove_raft_logs()
+
+        main.step( "Git checkout and pull master and get version" )
+        main.ONOSbench.git_checkout( "master" )
+        git_pull_result = main.ONOSbench.git_pull()
+        print "git_pull_result = ", git_pull_result
+        version_result = main.ONOSbench.get_version( report=True )
+
+        if git_pull_result == 1:
+            main.step( "Using mvn clean & install" )
+            clean_install_result = main.ONOSbench.clean_install()
+            #clean_install_result = main.TRUE
+
+        main.step( "Creating ONOS package" )
+        package_result = main.ONOSbench.onos_package()
+
+        #main.step( "Creating a cell" )
+        # cell_create_result = main.ONOSbench.create_cell_file( **************
+        # )
+
+        main.step( "Installing ONOS package" )
+        onos1_install_result = main.ONOSbench.onos_install(
+            options="-f",
+            node=ONOS1_ip )
+        onos2_install_result = main.ONOSbench.onos_install(
+            options="-f",
+            node=ONOS2_ip )
+        onos3_install_result = main.ONOSbench.onos_install(
+            options="-f",
+            node=ONOS3_ip )
+        onos_install_result = onos1_install_result and onos2_install_result and onos3_install_result
+        if onos_install_result == main.TRUE:
+            main.log.report( "Installing ONOS package successful" )
+        else:
+            main.log.report( "Installing ONOS package failed" )
+
+        onos1_isup = main.ONOSbench.isup( ONOS1_ip )
+        onos2_isup = main.ONOSbench.isup( ONOS2_ip )
+        onos3_isup = main.ONOSbench.isup( ONOS3_ip )
+        onos_isup = onos1_isup and onos2_isup and onos3_isup
+        if onos_isup == main.TRUE:
+            main.log.report( "ONOS instances are up and ready" )
+        else:
+            main.log.report( "ONOS instances may not be up" )
+
+        main.step( "Starting ONOS service" )
+        start_result = main.TRUE
+        #start_result = main.ONOSbench.onos_start( ONOS1_ip )
+        startcli1 = main.ONOScli1.start_onos_cli( ONOS_ip=ONOS1_ip )
+        startcli2 = main.ONOScli2.start_onos_cli( ONOS_ip=ONOS2_ip )
+        startcli3 = main.ONOScli3.start_onos_cli( ONOS_ip=ONOS3_ip )
+        print startcli1
+        print startcli2
+        print startcli3
+
+        case1_result = ( package_result and
+                         cell_result and verify_result and onos_install_result and
+                         onos_isup and start_result )
+        utilities.assert_equals( expect=main.TRUE, actual=case1_result,
+                                 onpass="Test startup successful",
+                                 onfail="Test startup NOT successful" )
+
+    def CASE11( self, main ):
+        """
+        Cleanup sequence:
+        onos-service <node_ip> stop
+        onos-uninstall
+
+        TODO: Define rest of cleanup
+
+        """
+        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
+
+        main.case( "Cleaning up test environment" )
+
+        main.step( "Testing ONOS kill function" )
+        kill_result1 = main.ONOSbench.onos_kill( ONOS1_ip )
+        kill_result2 = main.ONOSbench.onos_kill( ONOS2_ip )
+        kill_result3 = main.ONOSbench.onos_kill( ONOS3_ip )
+
+        main.step( "Stopping ONOS service" )
+        stop_result1 = main.ONOSbench.onos_stop( ONOS1_ip )
+        stop_result2 = main.ONOSbench.onos_stop( ONOS2_ip )
+        stop_result3 = main.ONOSbench.onos_stop( ONOS3_ip )
+
+        main.step( "Uninstalling ONOS service" )
+        uninstall_result = main.ONOSbench.onos_uninstall()
+
+    def CASE3( self, main ):
+        """
+        Test 'onos' command and its functionality in driver
+        """
+        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
+
+        main.case( "Testing 'onos' command" )
+
+        main.step( "Sending command 'onos -w <onos-ip> system:name'" )
+        cmdstr1 = "system:name"
+        cmd_result1 = main.ONOSbench.onos_cli( ONOS1_ip, cmdstr1 )
+        main.log.info( "onos command returned: " + cmd_result1 )
+        cmd_result2 = main.ONOSbench.onos_cli( ONOS2_ip, cmdstr1 )
+        main.log.info( "onos command returned: " + cmd_result2 )
+        cmd_result3 = main.ONOSbench.onos_cli( ONOS3_ip, cmdstr1 )
+        main.log.info( "onos command returned: " + cmd_result3 )
+
+        main.step( "Sending command 'onos -w <onos-ip> onos:topology'" )
+        cmdstr2 = "onos:topology"
+        cmd_result4 = main.ONOSbench.onos_cli( ONOS1_ip, cmdstr2 )
+        main.log.info( "onos command returned: " + cmd_result4 )
+        cmd_result5 = main.ONOSbench.onos_cli( ONOS2_ip, cmdstr2 )
+        main.log.info( "onos command returned: " + cmd_result5 )
+        cmd_result6 = main.ONOSbench.onos_cli( ONOS6_ip, cmdstr2 )
+        main.log.info( "onos command returned: " + cmd_result6 )
+
+    def CASE4( self, main ):
+        import re
+        import time
+        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS1_port = main.params[ 'CTRL' ][ 'port1' ]
+        ONOS2_port = main.params[ 'CTRL' ][ 'port2' ]
+        ONOS3_port = main.params[ 'CTRL' ][ 'port3' ]
+
+        main.log.report(
+            "This testcase is testing the assignment of all the switches to all controllers and discovering the hosts in reactive mode" )
+        main.log.report( "__________________________________" )
+        main.case( "Pingall Test(No intents are added)" )
+        main.step( "Assigning switches to controllers" )
+        for i in range( 1, 29 ):  # 1 to ( num of switches +1 )
+            main.Mininet1.assign_sw_controller(
+                sw=str( i ),
+                count=3,
+                ip1=ONOS1_ip,
+                port1=ONOS1_port,
+                ip2=ONOS2_ip,
+                port2=ONOS2_port,
+                ip3=ONOS3_ip,
+                port3=ONOS3_port )
+
+        switch_mastership = main.TRUE
+        for i in range( 1, 29 ):
+            response = main.Mininet1.get_sw_controller( "s" + str( i ) )
+            print( "Response is " + str( response ) )
+            if re.search( "tcp:" + ONOS1_ip, response ):
+                switch_mastership = switch_mastership and main.TRUE
+            else:
+                switch_mastership = main.FALSE
+
+        if switch_mastership == main.TRUE:
+            main.log.report( "Controller assignment successfull" )
+        else:
+            main.log.report( "Controller assignment failed" )
+        # REACTIVE FWD test
+        main.step( "Pingall" )
+        ping_result = main.FALSE
+        time1 = time.time()
+        ping_result = main.Mininet1.pingall()
+        time2 = time.time()
+        print "Time for pingall: %2f seconds" % ( time2 - time1 )
+
+        case4_result = switch_mastership and ping_result
+        if ping_result == main.TRUE:
+            main.log.report(
+                "Pingall Test in reactive mode to discover the hosts successful" )
+        else:
+            main.log.report(
+                "Pingall Test in reactive mode to discover the hosts failed" )
+
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case4_result,
+            onpass="Controller assignment and Pingall Test successful",
+            onfail="Controller assignment and Pingall Test NOT successful" )
+
+    def CASE5( self, main ):
+        import json
+        from subprocess import Popen, PIPE
+        # assumes that sts is already in you PYTHONPATH
+        from sts.topology.teston_topology import TestONTopology
+        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
+
+        main.log.report(
+            "This testcase is testing if all ONOS nodes are in topology sync with mininet and its peer ONOS nodes" )
+        main.log.report( "__________________________________" )
+        main.case(
+            "Testing Mininet topology with the topology of multi instances ONOS" )
+        main.step( "Collecting topology information from ONOS" )
+        devices1 = main.ONOScli1.devices()
+        devices2 = main.ONOScli2.devices()
+        devices3 = main.ONOScli3.devices()
+        # print "devices1 = ", devices1
+        # print "devices2 = ", devices2
+        # print "devices3 = ", devices3
+        hosts1 = main.ONOScli1.hosts()
+        hosts2 = main.ONOScli2.hosts()
+        hosts3 = main.ONOScli3.hosts()
+        # print "hosts1 = ", hosts1
+        # print "hosts2 = ", hosts2
+        # print "hosts3 = ", hosts3
+        ports1 = main.ONOScli1.ports()
+        ports2 = main.ONOScli2.ports()
+        ports3 = main.ONOScli3.ports()
+        # print "ports1 = ", ports1
+        # print "ports2 = ", ports2
+        # print "ports3 = ", ports3
+        links1 = main.ONOScli1.links()
+        links2 = main.ONOScli2.links()
+        links3 = main.ONOScli3.links()
+        # print "links1 = ", links1
+        # print "links2 = ", links2
+        # print "links3 = ", links3
+
+        print "**************"
+
+        main.step( "Start continuous pings" )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source1' ],
+            target=main.params[ 'PING' ][ 'target1' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source2' ],
+            target=main.params[ 'PING' ][ 'target2' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source3' ],
+            target=main.params[ 'PING' ][ 'target3' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source4' ],
+            target=main.params[ 'PING' ][ 'target4' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source5' ],
+            target=main.params[ 'PING' ][ 'target5' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source6' ],
+            target=main.params[ 'PING' ][ 'target6' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source7' ],
+            target=main.params[ 'PING' ][ 'target7' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source8' ],
+            target=main.params[ 'PING' ][ 'target8' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source9' ],
+            target=main.params[ 'PING' ][ 'target9' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source10' ],
+            target=main.params[ 'PING' ][ 'target10' ],
+            pingTime=500 )
+
+        main.step( "Create TestONTopology object" )
+        global ctrls
+        ctrls = []
+        count = 1
+        while True:
+            temp = ()
+            if ( 'ip' + str( count ) ) in main.params[ 'CTRL' ]:
+                temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
+                temp = temp + ( "ONOS" + str( count ), )
+                temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
+                temp = temp + \
+                    ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
+                ctrls.append( temp )
+                count = count + 1
+            else:
+                break
+        global MNTopo
+        Topo = TestONTopology(
+            main.Mininet1,
+            ctrls )  # can also add Intent API info for intent operations
+        MNTopo = Topo
+
+        Topology_Check = main.TRUE
+        main.step( "Compare ONOS Topology to MN Topology" )
+
+        switches_results1 = main.Mininet1.compare_switches(
+            MNTopo,
+            json.loads( devices1 ) )
+        print "switches_Result1 = ", switches_results1
+        utilities.assert_equals( expect=main.TRUE, actual=switches_results1,
+                                 onpass="ONOS1 Switches view is correct",
+                                 onfail="ONOS1 Switches view is incorrect" )
+
+        switches_results2 = main.Mininet1.compare_switches(
+            MNTopo,
+            json.loads( devices2 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=switches_results2,
+                                 onpass="ONOS2 Switches view is correct",
+                                 onfail="ONOS2 Switches view is incorrect" )
+
+        switches_results3 = main.Mininet1.compare_switches(
+            MNTopo,
+            json.loads( devices3 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=switches_results3,
+                                 onpass="ONOS3 Switches view is correct",
+                                 onfail="ONOS3 Switches view is incorrect" )
+
+        """
+        ports_results1 =  main.Mininet1.compare_ports( MNTopo, json.loads( ports1 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=ports_results1,
+                onpass="ONOS1 Ports view is correct",
+                onfail="ONOS1 Ports view is incorrect" )
+
+        ports_results2 =  main.Mininet1.compare_ports( MNTopo, json.loads( ports2 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=ports_results2,
+                onpass="ONOS2 Ports view is correct",
+                onfail="ONOS2 Ports view is incorrect" )
+
+        ports_results3 =  main.Mininet1.compare_ports( MNTopo, json.loads( ports3 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=ports_results3,
+                onpass="ONOS3 Ports view is correct",
+                onfail="ONOS3 Ports view is incorrect" )
+        """
+        links_results1 = main.Mininet1.compare_links(
+            MNTopo,
+            json.loads( links1 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=links_results1,
+                                 onpass="ONOS1 Links view is correct",
+                                 onfail="ONOS1 Links view is incorrect" )
+
+        links_results2 = main.Mininet1.compare_links(
+            MNTopo,
+            json.loads( links2 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=links_results2,
+                                 onpass="ONOS2 Links view is correct",
+                                 onfail="ONOS2 Links view is incorrect" )
+
+        links_results3 = main.Mininet1.compare_links(
+            MNTopo,
+            json.loads( links3 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=links_results3,
+                                 onpass="ONOS2 Links view is correct",
+                                 onfail="ONOS2 Links view is incorrect" )
+
+        #topo_result = switches_results1 and switches_results2 and switches_results3\
+        # and ports_results1 and ports_results2 and ports_results3\
+        # and links_results1 and links_results2 and links_results3
+
+        topo_result = switches_results1 and switches_results2 and switches_results3\
+            and links_results1 and links_results2 and links_results3
+
+        if topo_result == main.TRUE:
+            main.log.report(
+                "Topology Check Test with mininet and ONOS instances successful" )
+        else:
+            main.log.report(
+                "Topology Check Test with mininet and ONOS instances failed" )
+
+        utilities.assert_equals( expect=main.TRUE, actual=topo_result,
+                                 onpass="Topology Check Test successful",
+                                 onfail="Topology Check Test NOT successful" )
+
+    def CASE10( self ):
+        main.log.report(
+            "This testcase uninstalls the reactive forwarding app" )
+        main.log.report( "__________________________________" )
+        main.case( "Uninstalling reactive forwarding app" )
+        # Unistall onos-app-fwd app to disable reactive forwarding
+        appUninstall_result1 = main.ONOScli1.feature_uninstall(
+            "onos-app-fwd" )
+        appUninstall_result2 = main.ONOScli2.feature_uninstall(
+            "onos-app-fwd" )
+        appUninstall_result3 = main.ONOScli3.feature_uninstall(
+            "onos-app-fwd" )
+        main.log.info( "onos-app-fwd uninstalled" )
+
+        # After reactive forwarding is disabled, the reactive flows on switches timeout in 10-15s
+        # So sleep for 15s
+        time.sleep( 15 )
+
+        hosts = main.ONOScli1.hosts()
+        main.log.info( hosts )
+
+        case10_result = appUninstall_result1 and appUninstall_result2 and appUninstall_result3
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case10_result,
+            onpass="Reactive forwarding app uninstallation successful",
+            onfail="Reactive forwarding app uninstallation failed" )
+
+    def CASE6( self ):
+        main.log.report(
+            "This testcase is testing the addition of host intents and then doing pingall" )
+        main.log.report( "__________________________________" )
+        main.case( "Obtaining hostsfor adding host intents" )
+        main.step( "Get hosts" )
+        hosts = main.ONOScli1.hosts()
+        main.log.info( hosts )
+
+        main.step( "Get all devices id" )
+        devices_id_list = main.ONOScli1.get_all_devices_id()
+        main.log.info( devices_id_list )
+
+        # ONOS displays the hosts in hex format unlike mininet which does in decimal format
+        # So take care while adding intents
+
+        """
+        main.step( "Add host intents for mn hosts(h8-h18,h9-h19,h10-h20,h11-h21,h12-h22,h13-h23,h14-h24,h15-h25,h16-h26,h17-h27)" )
+        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:08/-1", "00:00:00:00:00:12/-1" )
+        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:09/-1", "00:00:00:00:00:13/-1" )
+        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0A/-1", "00:00:00:00:00:14/-1" )
+        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0B/-1", "00:00:00:00:00:15/-1" )
+        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0C/-1", "00:00:00:00:00:16/-1" )
+        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0D/-1", "00:00:00:00:00:17/-1" )
+        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0E/-1", "00:00:00:00:00:18/-1" )
+        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0F/-1", "00:00:00:00:00:19/-1" )
+        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:10/-1", "00:00:00:00:00:1A/-1" )
+        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:11/-1", "00:00:00:00:00:1B/-1" )
+        """
+        for i in range( 8, 18 ):
+            main.log.info(
+                "Adding host intent between h" + str( i ) + " and h" + str( i + 10 ) )
+            host1 = "00:00:00:00:00:" + \
+                str( hex( i )[ 2: ] ).zfill( 2 ).upper()
+            host2 = "00:00:00:00:00:" + \
+                str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
+            # NOTE: get host can return None
+            # TODO: handle this
+            host1_id = main.ONOScli1.get_host( host1 )[ 'id' ]
+            host2_id = main.ONOScli1.get_host( host2 )[ 'id' ]
+            tmp_result = main.ONOScli1.add_host_intent( host1_id, host2_id )
+
+        flowHandle = main.ONOScli1.flows()
+        # print "flowHandle = ", flowHandle
+        main.log.info( "flows:" + flowHandle )
+
+        count = 1
+        i = 8
+        Ping_Result = main.TRUE
+        while i < 18:
+            main.log.info(
+                "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
+            ping = main.Mininet1.pingHost(
+                src="h" + str( i ), target="h" + str( i + 10 ) )
+            if ping == main.FALSE and count < 5:
+                count += 1
+                #i = 8
+                Ping_Result = main.FALSE
+                main.log.report( "Ping between h" +
+                                 str( i ) +
+                                 " and h" +
+                                 str( i +
+                                      10 ) +
+                                 " failed. Making attempt number " +
+                                 str( count ) +
+                                 " in 2 seconds" )
+                time.sleep( 2 )
+            elif ping == main.FALSE:
+                main.log.report( "All ping attempts between h" +
+                                 str( i ) +
+                                 " and h" +
+                                 str( i +
+                                      10 ) +
+                                 "have failed" )
+                i = 19
+                Ping_Result = main.FALSE
+            elif ping == main.TRUE:
+                main.log.info( "Ping test between h" +
+                               str( i ) +
+                               " and h" +
+                               str( i +
+                                    10 ) +
+                               "passed!" )
+                i += 1
+                Ping_Result = main.TRUE
+            else:
+                main.log.info( "Unknown error" )
+                Ping_Result = main.ERROR
+        if Ping_Result == main.FALSE:
+            main.log.report(
+                "Host intents have not ben installed correctly. Cleaning up" )
+            # main.cleanup()
+            # main.exit()
+        if Ping_Result == main.TRUE:
+            main.log.report( "Host intents have been installed correctly" )
+
+        case6_result = Ping_Result
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case6_result,
+            onpass="Host intent addition and Pingall Test successful",
+            onfail="Host intent addition and Pingall Test NOT successful" )
+
+    def CASE7( self, main ):
+
+        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
+
+        link_sleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
+
+        main.log.report(
+            "This testscase is killing a link to ensure that link discovery is consistent" )
+        main.log.report( "__________________________________" )
+        main.case(
+            "Killing a link to Ensure that Link Discovery is Working Properly" )
+        main.step( "Start continuous pings" )
+
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source1' ],
+            target=main.params[ 'PING' ][ 'target1' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source2' ],
+            target=main.params[ 'PING' ][ 'target2' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source3' ],
+            target=main.params[ 'PING' ][ 'target3' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source4' ],
+            target=main.params[ 'PING' ][ 'target4' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source5' ],
+            target=main.params[ 'PING' ][ 'target5' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source6' ],
+            target=main.params[ 'PING' ][ 'target6' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source7' ],
+            target=main.params[ 'PING' ][ 'target7' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source8' ],
+            target=main.params[ 'PING' ][ 'target8' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source9' ],
+            target=main.params[ 'PING' ][ 'target9' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source10' ],
+            target=main.params[ 'PING' ][ 'target10' ],
+            pingTime=500 )
+
+        main.step( "Determine the current number of switches and links" )
+        topology_output = main.ONOScli1.topology()
+        topology_result = main.ONOSbench.get_topology( topology_output )
+        activeSwitches = topology_result[ 'devices' ]
+        links = topology_result[ 'links' ]
+        print "activeSwitches = ", type( activeSwitches )
+        print "links = ", type( links )
+        main.log.info(
+            "Currently there are %s switches and %s links" %
+            ( str( activeSwitches ), str( links ) ) )
+
+        main.step( "Kill Link between s3 and s28" )
+        main.Mininet1.link( END1="s3", END2="s28", OPTION="down" )
+        time.sleep( link_sleep )
+        topology_output = main.ONOScli2.topology()
+        Link_Down = main.ONOSbench.check_status(
+            topology_output, activeSwitches, str(
+                int( links ) - 2 ) )
+        if Link_Down == main.TRUE:
+            main.log.report( "Link Down discovered properly" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=Link_Down,
+            onpass="Link Down discovered properly",
+            onfail="Link down was not discovered in " +
+            str( link_sleep ) +
+            " seconds" )
+
+        main.step( "Bring link between s3 and s28 back up" )
+        Link_Up = main.Mininet1.link( END1="s3", END2="s28", OPTION="up" )
+        time.sleep( link_sleep )
+        topology_output = main.ONOScli2.topology()
+        Link_Up = main.ONOSbench.check_status(
+            topology_output,
+            activeSwitches,
+            str( links ) )
+        if Link_Up == main.TRUE:
+            main.log.report( "Link up discovered properly" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=Link_Up,
+            onpass="Link up discovered properly",
+            onfail="Link up was not discovered in " +
+            str( link_sleep ) +
+            " seconds" )
+
+        main.step( "Compare ONOS Topology to MN Topology" )
+        main.case(
+            "Testing Mininet topology with the topology of multi instances ONOS" )
+        main.step( "Collecting topology information from ONOS" )
+        devices1 = main.ONOScli1.devices()
+        devices2 = main.ONOScli2.devices()
+        devices3 = main.ONOScli3.devices()
+        print "devices1 = ", devices1
+        print "devices2 = ", devices2
+        print "devices3 = ", devices3
+        hosts1 = main.ONOScli1.hosts()
+        hosts2 = main.ONOScli2.hosts()
+        hosts3 = main.ONOScli3.hosts()
+        # print "hosts1 = ", hosts1
+        # print "hosts2 = ", hosts2
+        # print "hosts3 = ", hosts3
+        ports1 = main.ONOScli1.ports()
+        ports2 = main.ONOScli2.ports()
+        ports3 = main.ONOScli3.ports()
+        # print "ports1 = ", ports1
+        # print "ports2 = ", ports2
+        # print "ports3 = ", ports3
+        links1 = main.ONOScli1.links()
+        links2 = main.ONOScli2.links()
+        links3 = main.ONOScli3.links()
+        # print "links1 = ", links1
+        # print "links2 = ", links2
+        # print "links3 = ", links3
+
+        print "**************"
+
+        main.step( "Start continuous pings" )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source1' ],
+            target=main.params[ 'PING' ][ 'target1' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source2' ],
+            target=main.params[ 'PING' ][ 'target2' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source3' ],
+            target=main.params[ 'PING' ][ 'target3' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source4' ],
+            target=main.params[ 'PING' ][ 'target4' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source5' ],
+            target=main.params[ 'PING' ][ 'target5' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source6' ],
+            target=main.params[ 'PING' ][ 'target6' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source7' ],
+            target=main.params[ 'PING' ][ 'target7' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source8' ],
+            target=main.params[ 'PING' ][ 'target8' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source9' ],
+            target=main.params[ 'PING' ][ 'target9' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source10' ],
+            target=main.params[ 'PING' ][ 'target10' ],
+            pingTime=500 )
+
+        main.step( "Create TestONTopology object" )
+        global ctrls
+        ctrls = []
+        count = 1
+        while True:
+            temp = ()
+            if ( 'ip' + str( count ) ) in main.params[ 'CTRL' ]:
+                temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
+                temp = temp + ( "ONOS" + str( count ), )
+                temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
+                temp = temp + \
+                    ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
+                ctrls.append( temp )
+                count = count + 1
+            else:
+                break
+        global MNTopo
+        Topo = TestONTopology(
+            main.Mininet1,
+            ctrls )  # can also add Intent API info for intent operations
+        MNTopo = Topo
+
+        Topology_Check = main.TRUE
+        main.step( "Compare ONOS Topology to MN Topology" )
+
+        switches_results1 = main.Mininet1.compare_switches(
+            MNTopo,
+            json.loads( devices1 ) )
+        print "switches_Result1 = ", switches_results1
+        utilities.assert_equals( expect=main.TRUE, actual=switches_results1,
+                                 onpass="ONOS1 Switches view is correct",
+                                 onfail="ONOS1 Switches view is incorrect" )
+
+        switches_results2 = main.Mininet1.compare_switches(
+            MNTopo,
+            json.loads( devices2 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=switches_results2,
+                                 onpass="ONOS2 Switches view is correct",
+                                 onfail="ONOS2 Switches view is incorrect" )
+
+        switches_results3 = main.Mininet1.compare_switches(
+            MNTopo,
+            json.loads( devices3 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=switches_results3,
+                                 onpass="ONOS3 Switches view is correct",
+                                 onfail="ONOS3 Switches view is incorrect" )
+
+        """
+        ports_results1 =  main.Mininet1.compare_ports( MNTopo, json.loads( ports1 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=ports_results1,
+                onpass="ONOS1 Ports view is correct",
+                onfail="ONOS1 Ports view is incorrect" )
+
+        ports_results2 =  main.Mininet1.compare_ports( MNTopo, json.loads( ports2 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=ports_results2,
+                onpass="ONOS2 Ports view is correct",
+                onfail="ONOS2 Ports view is incorrect" )
+
+        ports_results3 =  main.Mininet1.compare_ports( MNTopo, json.loads( ports3 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=ports_results3,
+                onpass="ONOS3 Ports view is correct",
+                onfail="ONOS3 Ports view is incorrect" )
+        """
+        links_results1 = main.Mininet1.compare_links(
+            MNTopo,
+            json.loads( links1 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=links_results1,
+                                 onpass="ONOS1 Links view is correct",
+                                 onfail="ONOS1 Links view is incorrect" )
+
+        links_results2 = main.Mininet1.compare_links(
+            MNTopo,
+            json.loads( links2 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=links_results2,
+                                 onpass="ONOS2 Links view is correct",
+                                 onfail="ONOS2 Links view is incorrect" )
+
+        links_results3 = main.Mininet1.compare_links(
+            MNTopo,
+            json.loads( links3 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=links_results3,
+                                 onpass="ONOS2 Links view is correct",
+                                 onfail="ONOS2 Links view is incorrect" )
+
+        #topo_result = switches_results1 and switches_results2 and switches_results3\
+        # and ports_results1 and ports_results2 and ports_results3\
+        # and links_results1 and links_results2 and links_results3
+
+        topo_result = switches_results1 and switches_results2 and switches_results3\
+            and links_results1 and links_results2 and links_results3
+
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=topo_result and Link_Up and Link_Down,
+            onpass="Topology Check Test successful",
+            onfail="Topology Check Test NOT successful" )
+
+    def CASE8( self ):
+        """
+        Intent removal
+        """
+        main.log.report(
+            "This testcase removes host any previously added intents" )
+        main.log.report( "__________________________________" )
+        main.log.info( "Removing any previously installed intents" )
+        main.case( "Removing intents" )
+        main.step( "Obtain the intent id's" )
+        intent_result = main.ONOScli1.intents( json_format=False )
+
+        intent_linewise = intent_result.split( "\n" )
+        intentList = []
+        for line in intent_linewise:
+            if line.startswith( "id=" ):
+                intentList.append( line )
+
+        intentids = []
+        for line in intentList:
+            intentids.append( line.split( "," )[ 0 ].split( "=" )[ 1 ] )
+        for id in intentids:
+            main.log.info( "id = " + id )
+
+        main.step(
+            "Iterate through the intentids list and remove each intent" )
+        for id in intentids:
+            main.ONOScli1.remove_intent( intent_id=id )
+
+        intent_result = main.ONOScli1.intents( json_format=False )
+        main.log.info( "intent_result = " + intent_result )
+        case8_result = main.TRUE
+
+        i = 8
+        Ping_Result = main.TRUE
+        while i < 18:
+            main.log.info(
+                "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
+            ping = main.Mininet1.pingHost(
+                src="h" + str( i ), target="h" + str( i + 10 ) )
+            if ping == main.TRUE:
+                i = 19
+                Ping_Result = main.TRUE
+            elif ping == main.FALSE:
+                i += 1
+                Ping_Result = main.FALSE
+            else:
+                main.log.info( "Unknown error" )
+                Ping_Result = main.ERROR
+
+        # Note: If the ping result failed, that means the intents have been
+        # withdrawn correctly.
+        if Ping_Result == main.TRUE:
+            main.log.report( "Host intents have not been withdrawn correctly" )
+            # main.cleanup()
+            # main.exit()
+        if Ping_Result == main.FALSE:
+            main.log.report( "Host intents have been withdrawn correctly" )
+
+        case8_result = case8_result and Ping_Result
+
+        if case8_result == main.FALSE:
+            main.log.report( "Intent removal successful" )
+        else:
+            main.log.report( "Intent removal failed" )
+
+        utilities.assert_equals( expect=main.FALSE, actual=case8_result,
+                                 onpass="Intent removal test failed",
+                                 onfail="Intent removal test successful" )
+
+    def CASE9( self ):
+        """
+        This test case adds point intents. Make sure you run test case 8 which is host intent removal before executing this test case.
+        Else the host intent's flows will persist on switches and the pings would work even if there is some issue with the point intent's flows
+        """
+        main.log.report(
+            "This testcase adds point intents and then does pingall" )
+        main.log.report( "__________________________________" )
+        main.log.info( "Adding point intents" )
+        main.case(
+            "Adding bidirectional point for mn hosts(h8-h18,h9-h19,h10-h20,h11-h21,h12-h22,h13-h23,h14-h24,h15-h25,h16-h26,h17-h27)" )
+        main.step(
+            "Add point-to-point intents for mininet hosts h8 and h18 or ONOS hosts h8 and h12" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003008/1",
+            "of:0000000000006018/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006018/1",
+            "of:0000000000003008/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        main.step(
+            "Add point-to-point intents for mininet hosts h9 and h19 or ONOS hosts h9 and h13" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003009/1",
+            "of:0000000000006019/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006019/1",
+            "of:0000000000003009/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        main.step(
+            "Add point-to-point intents for mininet hosts h10 and h20 or ONOS hosts hA and h14" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003010/1",
+            "of:0000000000006020/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006020/1",
+            "of:0000000000003010/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        main.step(
+            "Add point-to-point intents for mininet hosts h11 and h21 or ONOS hosts hB and h15" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003011/1",
+            "of:0000000000006021/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006021/1",
+            "of:0000000000003011/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        main.step(
+            "Add point-to-point intents for mininet hosts h12 and h22 or ONOS hosts hC and h16" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003012/1",
+            "of:0000000000006022/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006022/1",
+            "of:0000000000003012/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        main.step(
+            "Add point-to-point intents for mininet hosts h13 and h23 or ONOS hosts hD and h17" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003013/1",
+            "of:0000000000006023/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006023/1",
+            "of:0000000000003013/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        main.step(
+            "Add point-to-point intents for mininet hosts h14 and h24 or ONOS hosts hE and h18" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003014/1",
+            "of:0000000000006024/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006024/1",
+            "of:0000000000003014/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        main.step(
+            "Add point-to-point intents for mininet hosts h15 and h25 or ONOS hosts hF and h19" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003015/1",
+            "of:0000000000006025/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006025/1",
+            "of:0000000000003015/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        main.step(
+            "Add point-to-point intents for mininet hosts h16 and h26 or ONOS hosts h10 and h1A" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003016/1",
+            "of:0000000000006026/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006026/1",
+            "of:0000000000003016/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        main.step(
+            "Add point-to-point intents for mininet hosts h17 and h27 or ONOS hosts h11 and h1B" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003017/1",
+            "of:0000000000006027/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006027/1",
+            "of:0000000000003017/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        print(
+            "_______________________________________________________________________________________" )
+
+        flowHandle = main.ONOScli1.flows()
+        # print "flowHandle = ", flowHandle
+        main.log.info( "flows :" + flowHandle )
+
+        count = 1
+        i = 8
+        Ping_Result = main.TRUE
+        while i < 18:
+            main.log.info(
+                "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
+            ping = main.Mininet1.pingHost(
+                src="h" + str( i ), target="h" + str( i + 10 ) )
+            if ping == main.FALSE and count < 5:
+                count += 1
+                #i = 8
+                Ping_Result = main.FALSE
+                main.log.report( "Ping between h" +
+                                 str( i ) +
+                                 " and h" +
+                                 str( i +
+                                      10 ) +
+                                 " failed. Making attempt number " +
+                                 str( count ) +
+                                 " in 2 seconds" )
+                time.sleep( 2 )
+            elif ping == main.FALSE:
+                main.log.report( "All ping attempts between h" +
+                                 str( i ) +
+                                 " and h" +
+                                 str( i +
+                                      10 ) +
+                                 "have failed" )
+                i = 19
+                Ping_Result = main.FALSE
+            elif ping == main.TRUE:
+                main.log.info( "Ping test between h" +
+                               str( i ) +
+                               " and h" +
+                               str( i +
+                                    10 ) +
+                               "passed!" )
+                i += 1
+                Ping_Result = main.TRUE
+            else:
+                main.log.info( "Unknown error" )
+                Ping_Result = main.ERROR
+        if Ping_Result == main.FALSE:
+            main.log.report(
+                "Ping all test after Point intents addition failed. Cleaning up" )
+            # main.cleanup()
+            # main.exit()
+        if Ping_Result == main.TRUE:
+            main.log.report(
+                "Ping all test after Point intents addition successful" )
+
+        case8_result = Ping_Result
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case8_result,
+            onpass="Ping all test after Point intents addition successful",
+            onfail="Ping all test after Point intents addition failed" )
+
+    def CASE31( self ):
+        """
+            This test case adds point intent related to SDN-IP matching on ICMP ( ethertype=IPV4, ipProto=1 )
+        """
+        import json
+
+        main.log.report(
+            "This test case adds point intent related to SDN-IP matching on ICMP" )
+        main.case(
+            "Adding bidirectional point intent related to SDN-IP matching on ICMP" )
+        main.step( "Adding bidirectional point intent" )
+        # add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32
+        # --ethType=IPV4 --ipProto=1  of:0000000000003008/1
+        # of:0000000000006018/1
+
+        hosts_json = json.loads( main.ONOScli1.hosts() )
+        for i in range( 8, 11 ):
+            main.log.info(
+                "Adding point intent between h" + str( i ) + " and h" + str( i + 10 ) )
+            host1 = "00:00:00:00:00:" + \
+                str( hex( i )[ 2: ] ).zfill( 2 ).upper()
+            host2 = "00:00:00:00:00:" + \
+                str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
+            host1_id = main.ONOScli1.get_host( host1 )[ 'id' ]
+            host2_id = main.ONOScli1.get_host( host2 )[ 'id' ]
+            for host in hosts_json:
+                if host[ 'id' ] == host1_id:
+                    ip1 = host[ 'ips' ][ 0 ]
+                    ip1 = str( ip1 + "/32" )
+                    device1 = host[ 'location' ][ 'device' ]
+                    device1 = str( device1 + "/1" )
+                elif host[ 'id' ] == host2_id:
+                    ip2 = str( host[ 'ips' ][ 0 ] ) + "/32"
+                    device2 = host[ 'location' ][ "device" ]
+                    device2 = str( device2 + "/1" )
+
+            p_intent_result1 = main.ONOScli1.add_point_intent(
+                ingress_device=device1,
+                egress_device=device2,
+                ipSrc=ip1,
+                ipDst=ip2,
+                ethType=main.params[ 'SDNIP' ][ 'ethType' ],
+                ipProto=main.params[ 'SDNIP' ][ 'icmpProto' ] )
+
+            get_intent_result = main.ONOScli1.intents( json_format=False )
+            main.log.info( get_intent_result )
+
+            p_intent_result2 = main.ONOScli1.add_point_intent(
+                ingress_device=device2,
+                egress_device=device1,
+                ipSrc=ip2,
+                ipDst=ip1,
+                ethType=main.params[ 'SDNIP' ][ 'ethType' ],
+                ipProto=main.params[ 'SDNIP' ][ 'icmpProto' ] )
+
+            get_intent_result = main.ONOScli1.intents( json_format=False )
+            main.log.info( get_intent_result )
+            if ( p_intent_result1 and p_intent_result2 ) == main.TRUE:
+                #get_intent_result = main.ONOScli1.intents()
+                # main.log.info( get_intent_result )
+                main.log.info(
+                    "Point intent related to SDN-IP matching on ICMP install successful" )
+
+        time.sleep( 15 )
+        get_intent_result = main.ONOScli1.intents( json_format=False )
+        main.log.info( "intents = " + get_intent_result )
+        get_flows_result = main.ONOScli1.flows()
+        main.log.info( "flows = " + get_flows_result )
+
+        count = 1
+        i = 8
+        Ping_Result = main.TRUE
+        while i < 11:
+            main.log.info(
+                "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
+            ping = main.Mininet1.pingHost(
+                src="h" + str( i ), target="h" + str( i + 10 ) )
+            if ping == main.FALSE and count < 3:
+                count += 1
+                #i = 8
+                Ping_Result = main.FALSE
+                main.log.report( "Ping between h" +
+                                 str( i ) +
+                                 " and h" +
+                                 str( i +
+                                      10 ) +
+                                 " failed. Making attempt number " +
+                                 str( count ) +
+                                 " in 2 seconds" )
+                time.sleep( 2 )
+            elif ping == main.FALSE:
+                main.log.report( "All ping attempts between h" +
+                                 str( i ) +
+                                 " and h" +
+                                 str( i +
+                                      10 ) +
+                                 "have failed" )
+                i = 19
+                Ping_Result = main.FALSE
+            elif ping == main.TRUE:
+                main.log.info( "Ping test between h" +
+                               str( i ) +
+                               " and h" +
+                               str( i +
+                                    10 ) +
+                               "passed!" )
+                i += 1
+                Ping_Result = main.TRUE
+            else:
+                main.log.info( "Unknown error" )
+                Ping_Result = main.ERROR
+        if Ping_Result == main.FALSE:
+            main.log.report(
+                "Ping test after Point intents related to SDN-IP matching on ICMP failed." )
+            # main.cleanup()
+            # main.exit()
+        if Ping_Result == main.TRUE:
+            main.log.report(
+                "Ping all test after Point intents related to SDN-IP matching on ICMP successful" )
+
+        case31_result = Ping_Result and p_intent_result1 and p_intent_result2
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case31_result,
+            onpass="Point intent related to SDN-IP matching on ICMP and ping test successful",
+            onfail="Point intent related to SDN-IP matching on ICMP and ping test failed" )
+
+    def CASE32( self ):
+        """
+            This test case adds point intent related to SDN-IP matching on TCP ( ethertype=IPV4, ipProto=6, DefaultPort for iperf=5001 )
+            Note: Although BGP port is 179, we are using 5001 because iperf is used for verifying and iperf's default port is 5001
+        """
+        import json
+
+        main.log.report(
+            "This test case adds point intent related to SDN-IP matching on TCP" )
+        main.case(
+            "Adding bidirectional point intent related to SDN-IP matching on TCP" )
+        main.step( "Adding bidirectional point intent" )
+        """
+        add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32 --ethType=IPV4 --ipProto=6 --tcpDst=5001  of:0000000000003008/1 of:0000000000006018/1
+
+        add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32 --ethType=IPV4 --ipProto=6 --tcpDst=5001  of:0000000000006018/1 of:0000000000003008/1
+
+        add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32 --ethType=IPV4 --ipProto=6 --tcpSrc=5001  of:0000000000003008/1 of:0000000000006018/1
+
+        add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32 --ethType=IPV4 --ipProto=6 --tcpSrc=5001  of:0000000000006018/1 of:0000000000003008/1
+
+        """
+        hosts_json = json.loads( main.ONOScli1.hosts() )
+        for i in range( 8, 9 ):
+            main.log.info(
+                "Adding point intent between h" + str( i ) + " and h" + str( i + 10 ) )
+            host1 = "00:00:00:00:00:" + \
+                str( hex( i )[ 2: ] ).zfill( 2 ).upper()
+            host2 = "00:00:00:00:00:" + \
+                str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
+            host1_id = main.ONOScli1.get_host( host1 )[ 'id' ]
+            host2_id = main.ONOScli1.get_host( host2 )[ 'id' ]
+            for host in hosts_json:
+                if host[ 'id' ] == host1_id:
+                    ip1 = host[ 'ips' ][ 0 ]
+                    ip1 = str( ip1 + "/32" )
+                    device1 = host[ 'location' ][ 'device' ]
+                    device1 = str( device1 + "/1" )
+                elif host[ 'id' ] == host2_id:
+                    ip2 = str( host[ 'ips' ][ 0 ] ) + "/32"
+                    device2 = host[ 'location' ][ "device" ]
+                    device2 = str( device2 + "/1" )
+
+            p_intent_result1 = main.ONOScli1.add_point_intent(
+                ingress_device=device1,
+                egress_device=device2,
+                ipSrc=ip1,
+                ipDst=ip2,
+                ethType=main.params[ 'SDNIP' ][ 'ethType' ],
+                ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
+                tcpDst=main.params[ 'SDNIP' ][ 'dstPort' ] )
+            p_intent_result2 = main.ONOScli1.add_point_intent(
+                ingress_device=device2,
+                egress_device=device1,
+                ipSrc=ip2,
+                ipDst=ip1,
+                ethType=main.params[ 'SDNIP' ][ 'ethType' ],
+                ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
+                tcpDst=main.params[ 'SDNIP' ][ 'dstPort' ] )
+
+            p_intent_result3 = main.ONOScli1.add_point_intent(
+                ingress_device=device1,
+                egress_device=device2,
+                ipSrc=ip1,
+                ipDst=ip2,
+                ethType=main.params[ 'SDNIP' ][ 'ethType' ],
+                ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
+                tcpSrc=main.params[ 'SDNIP' ][ 'srcPort' ] )
+            p_intent_result4 = main.ONOScli1.add_point_intent(
+                ingress_device=device2,
+                egress_device=device1,
+                ipSrc=ip2,
+                ipDst=ip1,
+                ethType=main.params[ 'SDNIP' ][ 'ethType' ],
+                ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
+                tcpSrc=main.params[ 'SDNIP' ][ 'srcPort' ] )
+
+            p_intent_result = p_intent_result1 and p_intent_result2 and p_intent_result3 and p_intent_result4
+            if p_intent_result == main.TRUE:
+                get_intent_result = main.ONOScli1.intents( json_format=False )
+                main.log.info( get_intent_result )
+                main.log.info(
+                    "Point intent related to SDN-IP matching on TCP install successful" )
+
+        iperf_result = main.Mininet1.iperf( 'h8', 'h18' )
+        if iperf_result == main.TRUE:
+            main.log.report( "iperf test successful" )
+        else:
+            main.log.report( "iperf test failed" )
+
+        case32_result = p_intent_result and iperf_result
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case32_result,
+            onpass="Ping all test after Point intents addition related to SDN-IP on TCP match successful",
+            onfail="Ping all test after Point intents addition related to SDN-IP on TCP match failed" )
+
+    def CASE33( self ):
+        """
+            This test case adds multipoint to singlepoint  intent related to SDN-IP matching on destination ip and the action is to rewrite the mac address
+            Here the mac address to be rewritten is the mac address of the egress device
+        """
+        import json
+        import time
+
+        main.log.report(
+            "This test case adds multipoint to singlepoint intent related to SDN-IP matching on destination ip and rewrite mac address action" )
+        main.case(
+            "Adding multipoint to singlepoint intent related to SDN-IP matching on destination ip" )
+        main.step( "Adding bidirectional multipoint to singlepoint intent" )
+        """
+        add-multi-to-single-intent --ipDst=10.0.3.0/24 --setEthDst=00:00:00:00:00:12 of:0000000000003008/1 0000000000003009/1 of:0000000000006018/1
+
+        add-multi-to-single-intent --ipDst=10.0.1.0/24 --setEthDst=00:00:00:00:00:08 of:0000000000006018/1 0000000000003009/1 of:0000000000003008/1
+        """
+        main.case(
+            "Installing multipoint to single point intent with rewrite mac address" )
+        main.step( "Uninstalling proxy arp app" )
+        # Unistall onos-app-proxyarp app to disable reactive forwarding
+        appUninstall_result1 = main.ONOScli1.feature_uninstall(
+            "onos-app-proxyarp" )
+        appUninstall_result2 = main.ONOScli2.feature_uninstall(
+            "onos-app-proxyarp" )
+        appUninstall_result3 = main.ONOScli3.feature_uninstall(
+            "onos-app-proxyarp" )
+        main.log.info( "onos-app-proxyarp uninstalled" )
+
+        main.step( "Changing ipaddress of hosts h8,h9 and h18" )
+        main.Mininet1.changeIP(
+            host='h8',
+            intf='h8-eth0',
+            newIP='10.0.1.1',
+            newNetmask='255.255.255.0' )
+        main.Mininet1.changeIP(
+            host='h9',
+            intf='h9-eth0',
+            newIP='10.0.2.1',
+            newNetmask='255.255.255.0' )
+        main.Mininet1.changeIP(
+            host='h10',
+            intf='h10-eth0',
+            newIP='10.0.3.1',
+            newNetmask='255.255.255.0' )
+
+        main.step( "Changing default gateway of hosts h8,h9 and h18" )
+        main.Mininet1.changeDefaultGateway( host='h8', newGW='10.0.1.254' )
+        main.Mininet1.changeDefaultGateway( host='h9', newGW='10.0.2.254' )
+        main.Mininet1.changeDefaultGateway( host='h10', newGW='10.0.3.254' )
+
+        main.step(
+            "Assigning random mac address to the default gateways since proxyarp app is uninstalled" )
+        main.Mininet1.addStaticMACAddress(
+            host='h8',
+            GW='10.0.1.254',
+            macaddr='00:00:00:00:11:11' )
+        main.Mininet1.addStaticMACAddress(
+            host='h9',
+            GW='10.0.2.254',
+            macaddr='00:00:00:00:22:22' )
+        main.Mininet1.addStaticMACAddress(
+            host='h10',
+            GW='10.0.3.254',
+            macaddr='00:00:00:00:33:33' )
+
+        main.step( "Verify static gateway and MAC address assignment" )
+        main.Mininet1.verifyStaticGWandMAC( host='h8' )
+        main.Mininet1.verifyStaticGWandMAC( host='h9' )
+        main.Mininet1.verifyStaticGWandMAC( host='h10' )
+
+        main.step( "Adding multipoint to singlepoint intent" )
+        p_intent_result1 = main.ONOScli1.add_multipoint_to_singlepoint_intent(
+            ingress_device1=main.params[ 'MULTIPOINT_INTENT' ][ 'device1' ],
+            ingress_device2=main.params[ 'MULTIPOINT_INTENT' ][ 'device2' ],
+            egress_device=main.params[ 'MULTIPOINT_INTENT' ][ 'device3' ],
+            ipDst=main.params[ 'MULTIPOINT_INTENT' ][ 'ip1' ],
+            setEthDst=main.params[ 'MULTIPOINT_INTENT' ][ 'mac1' ] )
+
+        p_intent_result2 = main.ONOScli1.add_multipoint_to_singlepoint_intent(
+            ingress_device1=main.params[ 'MULTIPOINT_INTENT' ][ 'device3' ],
+            ingress_device2=main.params[ 'MULTIPOINT_INTENT' ][ 'device2' ],
+            egress_device=main.params[ 'MULTIPOINT_INTENT' ][ 'device1' ],
+            ipDst=main.params[ 'MULTIPOINT_INTENT' ][ 'ip2' ],
+            setEthDst=main.params[ 'MULTIPOINT_INTENT' ][ 'mac2' ] )
+
+        get_intent_result = main.ONOScli1.intents( json_format=False )
+        main.log.info( "intents = " + get_intent_result )
+
+        time.sleep( 10 )
+        get_flows_result = main.ONOScli1.flows( json_format=False )
+        main.log.info( "flows = " + get_flows_result )
+
+        count = 1
+        i = 8
+        Ping_Result = main.TRUE
+
+        main.log.info( "\n\nh" + str( i ) + " is Pinging h" + str( i + 2 ) )
+        ping = main.Mininet1.pingHost(
+            src="h" + str( i ), target="h" + str( i + 2 ) )
+        if ping == main.FALSE and count < 3:
+            count += 1
+            Ping_Result = main.FALSE
+            main.log.report( "Ping between h" +
+                             str( i ) +
+                             " and h" +
+                             str( i +
+                                  2 ) +
+                             " failed. Making attempt number " +
+                             str( count ) +
+                             " in 2 seconds" )
+            time.sleep( 2 )
+        elif ping == main.FALSE:
+            main.log.report( "All ping attempts between h" +
+                             str( i ) +
+                             " and h" +
+                             str( i +
+                                  10 ) +
+                             "have failed" )
+            Ping_Result = main.FALSE
+        elif ping == main.TRUE:
+            main.log.info( "Ping test between h" +
+                           str( i ) +
+                           " and h" +
+                           str( i +
+                                2 ) +
+                           "passed!" )
+            Ping_Result = main.TRUE
+        else:
+            main.log.info( "Unknown error" )
+            Ping_Result = main.ERROR
+
+        if Ping_Result == main.FALSE:
+            main.log.report( "Ping test failed." )
+            # main.cleanup()
+            # main.exit()
+        if Ping_Result == main.TRUE:
+            main.log.report( "Ping all successful" )
+
+        p_intent_result = p_intent_result1 and p_intent_result2
+        if p_intent_result == main.TRUE:
+            main.log.info(
+                "Multi point intent with rewrite mac address installation successful" )
+        else:
+            main.log.info(
+                "Multi point intent with rewrite mac address installation failed" )
+
+        case33_result = p_intent_result and Ping_Result
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case33_result,
+            onpass="Ping all test after multipoint to single point intent addition with rewrite mac address successful",
+            onfail="Ping all test after multipoint to single point intent addition with rewrite mac address failed" )
diff --git a/TestON/tests/MultiProd/MultiProd.params b/TestON/tests/MultiProd/MultiProd.params
index 8bf1600..6e5c85e 100755
--- a/TestON/tests/MultiProd/MultiProd.params
+++ b/TestON/tests/MultiProd/MultiProd.params
@@ -1,6 +1,6 @@
 <PARAMS>
     
-    <testcases>1,4,10,5,6,7,8,6,8,9,31,32,8,33</testcases>    
+    <testcases>1,4,10,5,6,7,8,6,8,9,8,31,32,8,33,8</testcases>    
 
     #Environment variables
     <ENV>
diff --git a/TestON/tests/MultiProd/MultiProd.py b/TestON/tests/MultiProd/MultiProd.py
index 6b67f63..d3ed757 100644
--- a/TestON/tests/MultiProd/MultiProd.py
+++ b/TestON/tests/MultiProd/MultiProd.py
@@ -11,7 +11,6 @@
 
 time.sleep( 1 )
 
-
 class MultiProd:
 
     def __init__( self ):
@@ -29,13 +28,13 @@
         onos-install -f
         onos-wait-for-start
         """
-        cell_name = main.params[ 'ENV' ][ 'cellName' ]
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
-        ONOS1_port = main.params[ 'CTRL' ][ 'port1' ]
-        ONOS2_port = main.params[ 'CTRL' ][ 'port2' ]
-        ONOS3_port = main.params[ 'CTRL' ][ 'port3' ]
+        cellName = main.params[ 'ENV' ][ 'cellName' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS1Port = main.params[ 'CTRL' ][ 'port1' ]
+        ONOS2Port = main.params[ 'CTRL' ][ 'port2' ]
+        ONOS3Port = main.params[ 'CTRL' ][ 'port3' ]
 
         main.case( "Setting up test environment" )
         main.log.report(
@@ -43,190 +42,193 @@
         main.log.report( "__________________________________" )
 
         main.step( "Applying cell variable to environment" )
-        cell_result1 = main.ONOSbench.set_cell( cell_name )
-        #cell_result2 = main.ONOScli1.set_cell( cell_name )
-        #cell_result3 = main.ONOScli2.set_cell( cell_name )
-        #cell_result4 = main.ONOScli3.set_cell( cell_name )
-        verify_result = main.ONOSbench.verify_cell()
-        cell_result = cell_result1
+        cellResult1 = main.ONOSbench.setCell( cellName )
+        # cellResult2 = main.ONOScli1.setCell( cellName )
+        # cellResult3 = main.ONOScli2.setCell( cellName )
+        # cellResult4 = main.ONOScli3.setCell( cellName )
+        verifyResult = main.ONOSbench.verifyCell()
+        cellResult = cellResult1
 
         main.step( "Removing raft logs before a clen installation of ONOS" )
-        remove_log_Result = main.ONOSbench.onos_remove_raft_logs()
+        removeLogResult = main.ONOSbench.onosRemoveRaftLogs()
 
-        main.step( "Git checkout and pull master and get version" )
-        main.ONOSbench.git_checkout( "master" )
-        git_pull_result = main.ONOSbench.git_pull()
-        print "git_pull_result = ", git_pull_result
-        version_result = main.ONOSbench.get_version( report=True )
+        main.step( "Git checkout, pull and get version" )
+        #main.ONOSbench.gitCheckout( "master" )
+        gitPullResult = main.ONOSbench.gitPull()
+        print "git_pull_result = ", gitPullResult
+        versionResult = main.ONOSbench.getVersion( report=True )
 
-        if git_pull_result == 1:
+        if gitPullResult == 1:
             main.step( "Using mvn clean & install" )
-            clean_install_result = main.ONOSbench.clean_install()
-            #clean_install_result = main.TRUE
+            cleanInstallResult = main.ONOSbench.cleanInstall()
+            # cleanInstallResult = main.TRUE
 
         main.step( "Creating ONOS package" )
-        package_result = main.ONOSbench.onos_package()
+        packageResult = main.ONOSbench.onosPackage()
 
-        #main.step( "Creating a cell" )
-        # cell_create_result = main.ONOSbench.create_cell_file( **************
+        # main.step( "Creating a cell" )
+        # cellCreateResult = main.ONOSbench.createCellFile( **************
         # )
 
         main.step( "Installing ONOS package" )
-        onos1_install_result = main.ONOSbench.onos_install(
+        onos1InstallResult = main.ONOSbench.onosInstall(
             options="-f",
-            node=ONOS1_ip )
-        onos2_install_result = main.ONOSbench.onos_install(
+            node=ONOS1Ip )
+        onos2InstallResult = main.ONOSbench.onosInstall(
             options="-f",
-            node=ONOS2_ip )
-        onos3_install_result = main.ONOSbench.onos_install(
+            node=ONOS2Ip )
+        onos3InstallResult = main.ONOSbench.onosInstall(
             options="-f",
-            node=ONOS3_ip )
-        onos_install_result = onos1_install_result and onos2_install_result and onos3_install_result
-        if onos_install_result == main.TRUE:
+            node=ONOS3Ip )
+        onosInstallResult = onos1InstallResult and onos2InstallResult and\
+                onos3InstallResult
+        if onosInstallResult == main.TRUE:
             main.log.report( "Installing ONOS package successful" )
         else:
             main.log.report( "Installing ONOS package failed" )
 
-        onos1_isup = main.ONOSbench.isup( ONOS1_ip )
-        onos2_isup = main.ONOSbench.isup( ONOS2_ip )
-        onos3_isup = main.ONOSbench.isup( ONOS3_ip )
-        onos_isup = onos1_isup and onos2_isup and onos3_isup
-        if onos_isup == main.TRUE:
+        onos1Isup = main.ONOSbench.isup( ONOS1Ip )
+        onos2Isup = main.ONOSbench.isup( ONOS2Ip )
+        onos3Isup = main.ONOSbench.isup( ONOS3Ip )
+        onosIsup = onos1Isup and onos2Isup and onos3Isup
+        if onosIsup == main.TRUE:
             main.log.report( "ONOS instances are up and ready" )
         else:
             main.log.report( "ONOS instances may not be up" )
 
         main.step( "Starting ONOS service" )
-        start_result = main.TRUE
-        #start_result = main.ONOSbench.onos_start( ONOS1_ip )
-        startcli1 = main.ONOScli1.start_onos_cli( ONOS_ip=ONOS1_ip )
-        startcli2 = main.ONOScli2.start_onos_cli( ONOS_ip=ONOS2_ip )
-        startcli3 = main.ONOScli3.start_onos_cli( ONOS_ip=ONOS3_ip )
+        startResult = main.TRUE
+        # startResult = main.ONOSbench.onosStart( ONOS1Ip )
+        startcli1 = main.ONOScli1.startOnosCli( ONOSIp=ONOS1Ip )
+        startcli2 = main.ONOScli2.startOnosCli( ONOSIp=ONOS2Ip )
+        startcli3 = main.ONOScli3.startOnosCli( ONOSIp=ONOS3Ip )
         print startcli1
         print startcli2
         print startcli3
 
-        case1_result = ( package_result and
-                         cell_result and verify_result and onos_install_result and
-                         onos_isup and start_result )
-        utilities.assert_equals( expect=main.TRUE, actual=case1_result,
-                                 onpass="Test startup successful",
-                                 onfail="Test startup NOT successful" )
+        case1Result = ( packageResult and
+                        cellResult and verifyResult and onosInstallResult and
+                        onosIsup and startResult )
+        utilities.assertEquals( expect=main.TRUE, actual=case1Result,
+                                onpass="Test startup successful",
+                                onfail="Test startup NOT successful" )
 
     def CASE11( self, main ):
         """
         Cleanup sequence:
-        onos-service <node_ip> stop
+        onos-service <nodeIp> stop
         onos-uninstall
 
         TODO: Define rest of cleanup
 
         """
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
 
         main.case( "Cleaning up test environment" )
 
         main.step( "Testing ONOS kill function" )
-        kill_result1 = main.ONOSbench.onos_kill( ONOS1_ip )
-        kill_result2 = main.ONOSbench.onos_kill( ONOS2_ip )
-        kill_result3 = main.ONOSbench.onos_kill( ONOS3_ip )
+        killResult1 = main.ONOSbench.onosKill( ONOS1Ip )
+        killResult2 = main.ONOSbench.onosKill( ONOS2Ip )
+        killResult3 = main.ONOSbench.onosKill( ONOS3Ip )
 
         main.step( "Stopping ONOS service" )
-        stop_result1 = main.ONOSbench.onos_stop( ONOS1_ip )
-        stop_result2 = main.ONOSbench.onos_stop( ONOS2_ip )
-        stop_result3 = main.ONOSbench.onos_stop( ONOS3_ip )
+        stopResult1 = main.ONOSbench.onosStop( ONOS1Ip )
+        stopResult2 = main.ONOSbench.onosStop( ONOS2Ip )
+        stopResult3 = main.ONOSbench.onosStop( ONOS3Ip )
 
         main.step( "Uninstalling ONOS service" )
-        uninstall_result = main.ONOSbench.onos_uninstall()
+        uninstallResult = main.ONOSbench.onosUninstall()
 
     def CASE3( self, main ):
         """
         Test 'onos' command and its functionality in driver
         """
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
 
         main.case( "Testing 'onos' command" )
 
         main.step( "Sending command 'onos -w <onos-ip> system:name'" )
         cmdstr1 = "system:name"
-        cmd_result1 = main.ONOSbench.onos_cli( ONOS1_ip, cmdstr1 )
-        main.log.info( "onos command returned: " + cmd_result1 )
-        cmd_result2 = main.ONOSbench.onos_cli( ONOS2_ip, cmdstr1 )
-        main.log.info( "onos command returned: " + cmd_result2 )
-        cmd_result3 = main.ONOSbench.onos_cli( ONOS3_ip, cmdstr1 )
-        main.log.info( "onos command returned: " + cmd_result3 )
+        cmdResult1 = main.ONOSbench.onosCli( ONOS1Ip, cmdstr1 )
+        main.log.info( "onos command returned: " + cmdResult1 )
+        cmdResult2 = main.ONOSbench.onosCli( ONOS2Ip, cmdstr1 )
+        main.log.info( "onos command returned: " + cmdResult2 )
+        cmdResult3 = main.ONOSbench.onosCli( ONOS3Ip, cmdstr1 )
+        main.log.info( "onos command returned: " + cmdResult3 )
 
         main.step( "Sending command 'onos -w <onos-ip> onos:topology'" )
         cmdstr2 = "onos:topology"
-        cmd_result4 = main.ONOSbench.onos_cli( ONOS1_ip, cmdstr2 )
-        main.log.info( "onos command returned: " + cmd_result4 )
-        cmd_result5 = main.ONOSbench.onos_cli( ONOS2_ip, cmdstr2 )
-        main.log.info( "onos command returned: " + cmd_result5 )
-        cmd_result6 = main.ONOSbench.onos_cli( ONOS6_ip, cmdstr2 )
-        main.log.info( "onos command returned: " + cmd_result6 )
+        cmdResult4 = main.ONOSbench.onosCli( ONOS1Ip, cmdstr2 )
+        main.log.info( "onos command returned: " + cmdResult4 )
+        cmdResult5 = main.ONOSbench.onosCli( ONOS2Ip, cmdstr2 )
+        main.log.info( "onos command returned: " + cmdResult5 )
+        cmdResult6 = main.ONOSbench.onosCli( ONOS6Ip, cmdstr2 )
+        main.log.info( "onos command returned: " + cmdResult6 )
 
     def CASE4( self, main ):
         import re
         import time
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
-        ONOS1_port = main.params[ 'CTRL' ][ 'port1' ]
-        ONOS2_port = main.params[ 'CTRL' ][ 'port2' ]
-        ONOS3_port = main.params[ 'CTRL' ][ 'port3' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS1Port = main.params[ 'CTRL' ][ 'port1' ]
+        ONOS2Port = main.params[ 'CTRL' ][ 'port2' ]
+        ONOS3Port = main.params[ 'CTRL' ][ 'port3' ]
 
         main.log.report(
-            "This testcase is testing the assignment of all the switches to all controllers and discovering the hosts in reactive mode" )
+            "This testcase is testing the assignment of all the switches" +
+            " to all controllers and discovering the hosts in reactive mode" )
         main.log.report( "__________________________________" )
         main.case( "Pingall Test(No intents are added)" )
         main.step( "Assigning switches to controllers" )
         for i in range( 1, 29 ):  # 1 to ( num of switches +1 )
-            main.Mininet1.assign_sw_controller(
+            main.Mininet1.assignSwController(
                 sw=str( i ),
                 count=3,
-                ip1=ONOS1_ip,
-                port1=ONOS1_port,
-                ip2=ONOS2_ip,
-                port2=ONOS2_port,
-                ip3=ONOS3_ip,
-                port3=ONOS3_port )
+                ip1=ONOS1Ip,
+                port1=ONOS1Port,
+                ip2=ONOS2Ip,
+                port2=ONOS2Port,
+                ip3=ONOS3Ip,
+                port3=ONOS3Port )
 
-        switch_mastership = main.TRUE
+        switchMastership = main.TRUE
         for i in range( 1, 29 ):
-            response = main.Mininet1.get_sw_controller( "s" + str( i ) )
+            response = main.Mininet1.getSwController( "s" + str( i ) )
             print( "Response is " + str( response ) )
-            if re.search( "tcp:" + ONOS1_ip, response ):
-                switch_mastership = switch_mastership and main.TRUE
+            if re.search( "tcp:" + ONOS1Ip, response ):
+                switchMastership = switchMastership and main.TRUE
             else:
-                switch_mastership = main.FALSE
+                switchMastership = main.FALSE
 
-        if switch_mastership == main.TRUE:
+        if switchMastership == main.TRUE:
             main.log.report( "Controller assignment successfull" )
         else:
             main.log.report( "Controller assignment failed" )
         # REACTIVE FWD test
         main.step( "Pingall" )
-        ping_result = main.FALSE
+        pingResult = main.FALSE
         time1 = time.time()
-        ping_result = main.Mininet1.pingall()
+        pingResult = main.Mininet1.pingall()
         time2 = time.time()
         print "Time for pingall: %2f seconds" % ( time2 - time1 )
 
-        case4_result = switch_mastership and ping_result
-        if ping_result == main.TRUE:
+        case4Result = switchMastership and pingResult
+        if pingResult == main.TRUE:
             main.log.report(
-                "Pingall Test in reactive mode to discover the hosts successful" )
+                "Pingall Test in reactive mode to" +
+                " discover the hosts successful" )
         else:
             main.log.report(
                 "Pingall Test in reactive mode to discover the hosts failed" )
 
-        utilities.assert_equals(
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=case4_result,
+            actual=case4Result,
             onpass="Controller assignment and Pingall Test successful",
             onfail="Controller assignment and Pingall Test NOT successful" )
 
@@ -235,15 +237,17 @@
         from subprocess import Popen, PIPE
         # assumes that sts is already in you PYTHONPATH
         from sts.topology.teston_topology import TestONTopology
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
 
         main.log.report(
-            "This testcase is testing if all ONOS nodes are in topology sync with mininet and its peer ONOS nodes" )
+            "This testcase is testing if all ONOS nodes are in topologyi" +
+            " sync with mininet and its peer ONOS nodes" )
         main.log.report( "__________________________________" )
         main.case(
-            "Testing Mininet topology with the topology of multi instances ONOS" )
+            "Testing Mininet topology with the" +
+            " topology of multi instances ONOS" )
         main.step( "Collecting topology information from ONOS" )
         devices1 = main.ONOScli1.devices()
         devices2 = main.ONOScli2.devices()
@@ -336,85 +340,91 @@
             ctrls )  # can also add Intent API info for intent operations
         MNTopo = Topo
 
-        Topology_Check = main.TRUE
+        TopologyCheck = main.TRUE
         main.step( "Compare ONOS Topology to MN Topology" )
 
-        switches_results1 = main.Mininet1.compare_switches(
+        switchesResults1 = main.Mininet1.compareSwitches(
             MNTopo,
             json.loads( devices1 ) )
-        print "switches_Result1 = ", switches_results1
-        utilities.assert_equals( expect=main.TRUE, actual=switches_results1,
-                                 onpass="ONOS1 Switches view is correct",
-                                 onfail="ONOS1 Switches view is incorrect" )
+        print "switches_Result1 = ", switchesResults1
+        utilities.assertEquals( expect=main.TRUE, actual=switchesResults1,
+                                onpass="ONOS1 Switches view is correct",
+                                onfail="ONOS1 Switches view is incorrect" )
 
-        switches_results2 = main.Mininet1.compare_switches(
+        switchesResults2 = main.Mininet1.compareSwitches(
             MNTopo,
             json.loads( devices2 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=switches_results2,
-                                 onpass="ONOS2 Switches view is correct",
-                                 onfail="ONOS2 Switches view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=switchesResults2,
+                                onpass="ONOS2 Switches view is correct",
+                                onfail="ONOS2 Switches view is incorrect" )
 
-        switches_results3 = main.Mininet1.compare_switches(
+        switchesResults3 = main.Mininet1.compareSwitches(
             MNTopo,
             json.loads( devices3 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=switches_results3,
-                                 onpass="ONOS3 Switches view is correct",
-                                 onfail="ONOS3 Switches view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=switchesResults3,
+                                onpass="ONOS3 Switches view is correct",
+                                onfail="ONOS3 Switches view is incorrect" )
 
         """
-        ports_results1 =  main.Mininet1.compare_ports( MNTopo, json.loads( ports1 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=ports_results1,
+        portsResults1 =  main.Mininet1.comparePorts( MNTopo,
+        json.loads( ports1 ) )
+        utilities.assertEquals( expect=main.TRUE, actual=portsResults1,
                 onpass="ONOS1 Ports view is correct",
                 onfail="ONOS1 Ports view is incorrect" )
 
-        ports_results2 =  main.Mininet1.compare_ports( MNTopo, json.loads( ports2 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=ports_results2,
+        portsResults2 =  main.Mininet1.comparePorts( MNTopo,
+        json.loads( ports2 ) )
+        utilities.assertEquals( expect=main.TRUE, actual=portsResults2,
                 onpass="ONOS2 Ports view is correct",
                 onfail="ONOS2 Ports view is incorrect" )
 
-        ports_results3 =  main.Mininet1.compare_ports( MNTopo, json.loads( ports3 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=ports_results3,
+        portsResults3 =  main.Mininet1.comparePorts( MNTopo,
+        json.loads( ports3 ) )
+        utilities.assertEquals( expect=main.TRUE, actual=portsResults3,
                 onpass="ONOS3 Ports view is correct",
                 onfail="ONOS3 Ports view is incorrect" )
         """
-        links_results1 = main.Mininet1.compare_links(
+        linksResults1 = main.Mininet1.compareLinks(
             MNTopo,
             json.loads( links1 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=links_results1,
-                                 onpass="ONOS1 Links view is correct",
-                                 onfail="ONOS1 Links view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=linksResults1,
+                                onpass="ONOS1 Links view is correct",
+                                onfail="ONOS1 Links view is incorrect" )
 
-        links_results2 = main.Mininet1.compare_links(
+        linksResults2 = main.Mininet1.compareLinks(
             MNTopo,
             json.loads( links2 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=links_results2,
-                                 onpass="ONOS2 Links view is correct",
-                                 onfail="ONOS2 Links view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=linksResults2,
+                                onpass="ONOS2 Links view is correct",
+                                onfail="ONOS2 Links view is incorrect" )
 
-        links_results3 = main.Mininet1.compare_links(
+        linksResults3 = main.Mininet1.compareLinks(
             MNTopo,
             json.loads( links3 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=links_results3,
-                                 onpass="ONOS2 Links view is correct",
-                                 onfail="ONOS2 Links view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=linksResults3,
+                                onpass="ONOS2 Links view is correct",
+                                onfail="ONOS2 Links view is incorrect" )
 
-        #topo_result = switches_results1 and switches_results2 and switches_results3\
-        # and ports_results1 and ports_results2 and ports_results3\
-        # and links_results1 and links_results2 and links_results3
+        # topoResult = switchesResults1 and switchesResults2
+        # and switchesResults3\
+        # and portsResults1 and portsResults2 and portsResults3\
+        # and linksResults1 and linksResults2 and linksResults3
 
-        topo_result = switches_results1 and switches_results2 and switches_results3\
-            and links_results1 and links_results2 and links_results3
+        topoResult = switchesResults1 and switchesResults2 and\
+                     switchesResults3 and linksResults1 and linksResults2 and\
+                     linksResults3
 
-        if topo_result == main.TRUE:
+        if topoResult == main.TRUE:
             main.log.report(
-                "Topology Check Test with mininet and ONOS instances successful" )
+                "Topology Check Test with mininet" +
+                "and ONOS instances successful" )
         else:
             main.log.report(
                 "Topology Check Test with mininet and ONOS instances failed" )
 
-        utilities.assert_equals( expect=main.TRUE, actual=topo_result,
-                                 onpass="Topology Check Test successful",
-                                 onfail="Topology Check Test NOT successful" )
+        utilities.assertEquals( expect=main.TRUE, actual=topoResult,
+                                onpass="Topology Check Test successful",
+                                onfail="Topology Check Test NOT successful" )
 
     def CASE10( self ):
         main.log.report(
@@ -422,31 +432,34 @@
         main.log.report( "__________________________________" )
         main.case( "Uninstalling reactive forwarding app" )
         # Unistall onos-app-fwd app to disable reactive forwarding
-        appUninstall_result1 = main.ONOScli1.feature_uninstall(
+        appUninstallResult1 = main.ONOScli1.featureUninstall(
             "onos-app-fwd" )
-        appUninstall_result2 = main.ONOScli2.feature_uninstall(
+        appUninstallResult2 = main.ONOScli2.featureUninstall(
             "onos-app-fwd" )
-        appUninstall_result3 = main.ONOScli3.feature_uninstall(
+        appUninstallResult3 = main.ONOScli3.featureUninstall(
             "onos-app-fwd" )
         main.log.info( "onos-app-fwd uninstalled" )
 
-        # After reactive forwarding is disabled, the reactive flows on switches timeout in 10-15s
+        # After reactive forwarding is disabled,
+        # the reactive flows on switches timeout in 10-15s
         # So sleep for 15s
         time.sleep( 15 )
 
         hosts = main.ONOScli1.hosts()
         main.log.info( hosts )
 
-        case10_result = appUninstall_result1 and appUninstall_result2 and appUninstall_result3
-        utilities.assert_equals(
+        case10Result = appUninstallResult1 and\
+                appUninstallResult2 and appUninstallResult3
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=case10_result,
+            actual=case10Result,
             onpass="Reactive forwarding app uninstallation successful",
             onfail="Reactive forwarding app uninstallation failed" )
 
     def CASE6( self ):
         main.log.report(
-            "This testcase is testing the addition of host intents and then doing pingall" )
+            "This testcase is testing the addition of" +
+            " host intents and then doing pingall" )
         main.log.report( "__________________________________" )
         main.case( "Obtaining hostsfor adding host intents" )
         main.step( "Get hosts" )
@@ -454,45 +467,57 @@
         main.log.info( hosts )
 
         main.step( "Get all devices id" )
-        devices_id_list = main.ONOScli1.get_all_devices_id()
-        main.log.info( devices_id_list )
+        devicesIdList = main.ONOScli1.getAllDevicesId()
+        main.log.info( devicesIdList )
 
-        # ONOS displays the hosts in hex format unlike mininet which does in decimal format
+        # ONOS displays the hosts in hex format
+        # unlike mininet which does in decimal format
         # So take care while adding intents
 
         """
-        main.step( "Add host intents for mn hosts(h8-h18,h9-h19,h10-h20,h11-h21,h12-h22,h13-h23,h14-h24,h15-h25,h16-h26,h17-h27)" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:08/-1", "00:00:00:00:00:12/-1" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:09/-1", "00:00:00:00:00:13/-1" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0A/-1", "00:00:00:00:00:14/-1" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0B/-1", "00:00:00:00:00:15/-1" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0C/-1", "00:00:00:00:00:16/-1" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0D/-1", "00:00:00:00:00:17/-1" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0E/-1", "00:00:00:00:00:18/-1" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0F/-1", "00:00:00:00:00:19/-1" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:10/-1", "00:00:00:00:00:1A/-1" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:11/-1", "00:00:00:00:00:1B/-1" )
+        main.step( "Add host intents for mn hosts(h8-h18,h9-h19,h10-h20,
+        h11-h21,h12-h22,h13-h23,h14-h24,h15-h25,h16-h26,h17-h27)" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:08/-1",
+        "00:00:00:00:00:12/-1" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:09/-1",
+        "00:00:00:00:00:13/-1" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:0A/-1",
+        "00:00:00:00:00:14/-1" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:0B/-1",
+        "00:00:00:00:00:15/-1" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:0C/-1",
+        "00:00:00:00:00:16/-1" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:0D/-1",
+        "00:00:00:00:00:17/-1" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:0E/-1",
+        "00:00:00:00:00:18/-1" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:0F/-1",
+        "00:00:00:00:00:19/-1" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:10/-1",
+        "00:00:00:00:00:1A/-1" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:11/-1",
+        "00:00:00:00:00:1B/-1" )
         """
         for i in range( 8, 18 ):
             main.log.info(
-                "Adding host intent between h" + str( i ) + " and h" + str( i + 10 ) )
+                "Adding host intent between h" + str( i ) +
+                " and h" + str( i + 10 ) )
             host1 = "00:00:00:00:00:" + \
                 str( hex( i )[ 2: ] ).zfill( 2 ).upper()
             host2 = "00:00:00:00:00:" + \
                 str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
             # NOTE: get host can return None
             # TODO: handle this
-            host1_id = main.ONOScli1.get_host( host1 )[ 'id' ]
-            host2_id = main.ONOScli1.get_host( host2 )[ 'id' ]
-            tmp_result = main.ONOScli1.add_host_intent( host1_id, host2_id )
+            host1Id = main.ONOScli1.getHost( host1 )[ 'id' ]
+            host2Id = main.ONOScli1.getHost( host2 )[ 'id' ]
+            tmpResult = main.ONOScli1.addHostIntent( host1Id, host2Id )
 
         flowHandle = main.ONOScli1.flows()
-        # print "flowHandle = ", flowHandle
         main.log.info( "flows:" + flowHandle )
 
         count = 1
         i = 8
-        Ping_Result = main.TRUE
+        PingResult = main.TRUE
         while i < 18:
             main.log.info(
                 "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
@@ -500,8 +525,8 @@
                 src="h" + str( i ), target="h" + str( i + 10 ) )
             if ping == main.FALSE and count < 5:
                 count += 1
-                #i = 8
-                Ping_Result = main.FALSE
+                # i = 8
+                PingResult = main.FALSE
                 main.log.report( "Ping between h" +
                                  str( i ) +
                                  " and h" +
@@ -519,7 +544,7 @@
                                       10 ) +
                                  "have failed" )
                 i = 19
-                Ping_Result = main.FALSE
+                PingResult = main.FALSE
             elif ping == main.TRUE:
                 main.log.info( "Ping test between h" +
                                str( i ) +
@@ -528,36 +553,38 @@
                                     10 ) +
                                "passed!" )
                 i += 1
-                Ping_Result = main.TRUE
+                PingResult = main.TRUE
             else:
                 main.log.info( "Unknown error" )
-                Ping_Result = main.ERROR
-        if Ping_Result == main.FALSE:
+                PingResult = main.ERROR
+        if PingResult == main.FALSE:
             main.log.report(
                 "Host intents have not ben installed correctly. Cleaning up" )
             # main.cleanup()
             # main.exit()
-        if Ping_Result == main.TRUE:
+        if PingResult == main.TRUE:
             main.log.report( "Host intents have been installed correctly" )
 
-        case6_result = Ping_Result
-        utilities.assert_equals(
+        case6Result = PingResult
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=case6_result,
+            actual=case6Result,
             onpass="Host intent addition and Pingall Test successful",
             onfail="Host intent addition and Pingall Test NOT successful" )
 
     def CASE7( self, main ):
 
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
 
-        link_sleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
+        linkSleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
 
         main.log.report(
-            "This testscase is killing a link to ensure that link discovery is consistent" )
+            "This testscase is killing a link to" +
+            " ensure that link discovery is consistent" )
         main.log.report( "__________________________________" )
         main.case(
-            "Killing a link to Ensure that Link Discovery is Working Properly" )
+            "Killing a link to Ensure that Link" +
+            " Discovery is Working Properly" )
         main.step( "Start continuous pings" )
 
         main.Mininet2.pingLong(
@@ -602,10 +629,10 @@
             pingTime=500 )
 
         main.step( "Determine the current number of switches and links" )
-        topology_output = main.ONOScli1.topology()
-        topology_result = main.ONOSbench.get_topology( topology_output )
-        activeSwitches = topology_result[ 'devices' ]
-        links = topology_result[ 'links' ]
+        topologyOutput = main.ONOScli1.topology()
+        topologyResult = main.ONOSbench.getTopology( topologyOutput )
+        activeSwitches = topologyResult[ 'devices' ]
+        links = topologyResult[ 'links' ]
         print "activeSwitches = ", type( activeSwitches )
         print "links = ", type( links )
         main.log.info(
@@ -614,42 +641,43 @@
 
         main.step( "Kill Link between s3 and s28" )
         main.Mininet1.link( END1="s3", END2="s28", OPTION="down" )
-        time.sleep( link_sleep )
-        topology_output = main.ONOScli2.topology()
-        Link_Down = main.ONOSbench.check_status(
-            topology_output, activeSwitches, str(
+        time.sleep( linkSleep )
+        topologyOutput = main.ONOScli2.topology()
+        LinkDown = main.ONOSbench.checkStatus(
+            topologyOutput, activeSwitches, str(
                 int( links ) - 2 ) )
-        if Link_Down == main.TRUE:
+        if LinkDown == main.TRUE:
             main.log.report( "Link Down discovered properly" )
-        utilities.assert_equals(
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=Link_Down,
+            actual=LinkDown,
             onpass="Link Down discovered properly",
             onfail="Link down was not discovered in " +
-            str( link_sleep ) +
+            str( linkSleep ) +
             " seconds" )
 
         main.step( "Bring link between s3 and s28 back up" )
-        Link_Up = main.Mininet1.link( END1="s3", END2="s28", OPTION="up" )
-        time.sleep( link_sleep )
-        topology_output = main.ONOScli2.topology()
-        Link_Up = main.ONOSbench.check_status(
-            topology_output,
+        LinkUp = main.Mininet1.link( END1="s3", END2="s28", OPTION="up" )
+        time.sleep( linkSleep )
+        topologyOutput = main.ONOScli2.topology()
+        LinkUp = main.ONOSbench.checkStatus(
+            topologyOutput,
             activeSwitches,
             str( links ) )
-        if Link_Up == main.TRUE:
+        if LinkUp == main.TRUE:
             main.log.report( "Link up discovered properly" )
-        utilities.assert_equals(
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=Link_Up,
+            actual=LinkUp,
             onpass="Link up discovered properly",
             onfail="Link up was not discovered in " +
-            str( link_sleep ) +
+            str( linkSleep ) +
             " seconds" )
 
         main.step( "Compare ONOS Topology to MN Topology" )
         main.case(
-            "Testing Mininet topology with the topology of multi instances ONOS" )
+            "Testing Mininet topology with the" +
+            " topology of multi instances ONOS" )
         main.step( "Collecting topology information from ONOS" )
         devices1 = main.ONOScli1.devices()
         devices2 = main.ONOScli2.devices()
@@ -742,78 +770,83 @@
             ctrls )  # can also add Intent API info for intent operations
         MNTopo = Topo
 
-        Topology_Check = main.TRUE
+        TopologyCheck = main.TRUE
         main.step( "Compare ONOS Topology to MN Topology" )
 
-        switches_results1 = main.Mininet1.compare_switches(
+        switchesResults1 = main.Mininet1.compareSwitches(
             MNTopo,
             json.loads( devices1 ) )
-        print "switches_Result1 = ", switches_results1
-        utilities.assert_equals( expect=main.TRUE, actual=switches_results1,
-                                 onpass="ONOS1 Switches view is correct",
-                                 onfail="ONOS1 Switches view is incorrect" )
+        print "switches_Result1 = ", switchesResults1
+        utilities.assertEquals( expect=main.TRUE, actual=switchesResults1,
+                                onpass="ONOS1 Switches view is correct",
+                                onfail="ONOS1 Switches view is incorrect" )
 
-        switches_results2 = main.Mininet1.compare_switches(
+        switchesResults2 = main.Mininet1.compareSwitches(
             MNTopo,
             json.loads( devices2 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=switches_results2,
-                                 onpass="ONOS2 Switches view is correct",
-                                 onfail="ONOS2 Switches view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=switchesResults2,
+                                onpass="ONOS2 Switches view is correct",
+                                onfail="ONOS2 Switches view is incorrect" )
 
-        switches_results3 = main.Mininet1.compare_switches(
+        switchesResults3 = main.Mininet1.compareSwitches(
             MNTopo,
             json.loads( devices3 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=switches_results3,
-                                 onpass="ONOS3 Switches view is correct",
-                                 onfail="ONOS3 Switches view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=switchesResults3,
+                                onpass="ONOS3 Switches view is correct",
+                                onfail="ONOS3 Switches view is incorrect" )
 
         """
-        ports_results1 =  main.Mininet1.compare_ports( MNTopo, json.loads( ports1 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=ports_results1,
+        portsResults1 =  main.Mininet1.comparePorts( MNTopo,
+        json.loads( ports1 ) )
+        utilities.assertEquals( expect=main.TRUE, actual=portsResults1,
                 onpass="ONOS1 Ports view is correct",
                 onfail="ONOS1 Ports view is incorrect" )
 
-        ports_results2 =  main.Mininet1.compare_ports( MNTopo, json.loads( ports2 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=ports_results2,
+        portsResults2 =  main.Mininet1.comparePorts( MNTopo,
+        json.loads( ports2 ) )
+        utilities.assertEquals( expect=main.TRUE, actual=portsResults2,
                 onpass="ONOS2 Ports view is correct",
                 onfail="ONOS2 Ports view is incorrect" )
 
-        ports_results3 =  main.Mininet1.compare_ports( MNTopo, json.loads( ports3 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=ports_results3,
+        portsResults3 =  main.Mininet1.comparePorts( MNTopo,
+        json.loads( ports3 ) )
+        utilities.assertEquals( expect=main.TRUE, actual=portsResults3,
                 onpass="ONOS3 Ports view is correct",
                 onfail="ONOS3 Ports view is incorrect" )
         """
-        links_results1 = main.Mininet1.compare_links(
+        linksResults1 = main.Mininet1.compareLinks(
             MNTopo,
             json.loads( links1 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=links_results1,
-                                 onpass="ONOS1 Links view is correct",
-                                 onfail="ONOS1 Links view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=linksResults1,
+                                onpass="ONOS1 Links view is correct",
+                                onfail="ONOS1 Links view is incorrect" )
 
-        links_results2 = main.Mininet1.compare_links(
+        linksResults2 = main.Mininet1.compareLinks(
             MNTopo,
             json.loads( links2 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=links_results2,
-                                 onpass="ONOS2 Links view is correct",
-                                 onfail="ONOS2 Links view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=linksResults2,
+                                onpass="ONOS2 Links view is correct",
+                                onfail="ONOS2 Links view is incorrect" )
 
-        links_results3 = main.Mininet1.compare_links(
+        linksResults3 = main.Mininet1.compareLinks(
             MNTopo,
             json.loads( links3 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=links_results3,
-                                 onpass="ONOS2 Links view is correct",
-                                 onfail="ONOS2 Links view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=linksResults3,
+                                onpass="ONOS2 Links view is correct",
+                                onfail="ONOS2 Links view is incorrect" )
 
-        #topo_result = switches_results1 and switches_results2 and switches_results3\
-        # and ports_results1 and ports_results2 and ports_results3\
-        # and links_results1 and links_results2 and links_results3
+        # topoResult = switchesResults1 and switchesResults2
+        # and switchesResults3\
+        # and portsResults1 and portsResults2 and portsResults3\
+        # and linksResults1 and linksResults2 and linksResults3
 
-        topo_result = switches_results1 and switches_results2 and switches_results3\
-            and links_results1 and links_results2 and links_results3
+        topoResult = switchesResults1 and switchesResults2\
+                and switchesResults3 and linksResults1 and\
+                linksResults2 and linksResults3
 
-        utilities.assert_equals(
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=topo_result and Link_Up and Link_Down,
+            actual=topoResult and LinkUp and LinkDown,
             onpass="Topology Check Test successful",
             onfail="Topology Check Test NOT successful" )
 
@@ -822,16 +855,16 @@
         Intent removal
         """
         main.log.report(
-            "This testcase removes host any previously added intents" )
+            "This testcase removes any previously added intents" )
         main.log.report( "__________________________________" )
         main.log.info( "Removing any previously installed intents" )
         main.case( "Removing intents" )
         main.step( "Obtain the intent id's" )
-        intent_result = main.ONOScli1.intents( json_format=False )
+        intentResult = main.ONOScli1.intents( jsonFormat=False )
 
-        intent_linewise = intent_result.split( "\n" )
+        intentLinewise = intentResult.split( "\n" )
         intentList = []
-        for line in intent_linewise:
+        for line in intentLinewise:
             if line.startswith( "id=" ):
                 intentList.append( line )
 
@@ -844,14 +877,14 @@
         main.step(
             "Iterate through the intentids list and remove each intent" )
         for id in intentids:
-            main.ONOScli1.remove_intent( intent_id=id )
+            main.ONOScli1.removeIntent( intentId=id )
 
-        intent_result = main.ONOScli1.intents( json_format=False )
-        main.log.info( "intent_result = " + intent_result )
-        case8_result = main.TRUE
+        intentResult = main.ONOScli1.intents( jsonFormat=False )
+        main.log.info( "intent_result = " + intentResult )
+        case8Result = main.TRUE
 
         i = 8
-        Ping_Result = main.TRUE
+        PingResult = main.TRUE
         while i < 18:
             main.log.info(
                 "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
@@ -859,227 +892,241 @@
                 src="h" + str( i ), target="h" + str( i + 10 ) )
             if ping == main.TRUE:
                 i = 19
-                Ping_Result = main.TRUE
+                PingResult = main.TRUE
             elif ping == main.FALSE:
                 i += 1
-                Ping_Result = main.FALSE
+                PingResult = main.FALSE
             else:
                 main.log.info( "Unknown error" )
-                Ping_Result = main.ERROR
+                PingResult = main.ERROR
 
         # Note: If the ping result failed, that means the intents have been
         # withdrawn correctly.
-        if Ping_Result == main.TRUE:
+        if PingResult == main.TRUE:
             main.log.report( "Host intents have not been withdrawn correctly" )
             # main.cleanup()
             # main.exit()
-        if Ping_Result == main.FALSE:
+        if PingResult == main.FALSE:
             main.log.report( "Host intents have been withdrawn correctly" )
 
-        case8_result = case8_result and Ping_Result
+        case8Result = case8Result and PingResult
 
-        if case8_result == main.FALSE:
+        if case8Result == main.FALSE:
             main.log.report( "Intent removal successful" )
         else:
             main.log.report( "Intent removal failed" )
 
-        utilities.assert_equals( expect=main.FALSE, actual=case8_result,
-                                 onpass="Intent removal test failed",
-                                 onfail="Intent removal test successful" )
+        utilities.assertEquals( expect=main.FALSE, actual=case8Result,
+                                onpass="Intent removal test failed",
+                                onfail="Intent removal test successful" )
 
     def CASE9( self ):
         """
-        This test case adds point intents. Make sure you run test case 8 which is host intent removal before executing this test case.
-        Else the host intent's flows will persist on switches and the pings would work even if there is some issue with the point intent's flows
+        This test case adds point intents. Make sure you run test case 8
+        which is host intent removal before executing this test case.
+        Else the host intent's flows will persist on switches and the pings
+        would work even if there is some issue with the point intent's flows
         """
         main.log.report(
             "This testcase adds point intents and then does pingall" )
         main.log.report( "__________________________________" )
         main.log.info( "Adding point intents" )
         main.case(
-            "Adding bidirectional point for mn hosts(h8-h18,h9-h19,h10-h20,h11-h21,h12-h22,h13-h23,h14-h24,h15-h25,h16-h26,h17-h27)" )
+            "Adding bidirectional point for mn hosts(h8-h18,h9-h19,h10-h20," +
+            "h11-h21,h12-h22,h13-h23,h14-h24,h15-h25,h16-h26,h17-h27)" )
         main.step(
-            "Add point-to-point intents for mininet hosts h8 and h18 or ONOS hosts h8 and h12" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet hosts" +
+            " h8 and h18 or ONOS hosts h8 and h12" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003008/1",
             "of:0000000000006018/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006018/1",
             "of:0000000000003008/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         main.step(
-            "Add point-to-point intents for mininet hosts h9 and h19 or ONOS hosts h9 and h13" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet hosts" +
+            " h9 and h19 or ONOS hosts h9 and h13" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003009/1",
             "of:0000000000006019/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006019/1",
             "of:0000000000003009/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         main.step(
-            "Add point-to-point intents for mininet hosts h10 and h20 or ONOS hosts hA and h14" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet" +
+            " hosts h10 and h20 or ONOS hosts hA and h14" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003010/1",
             "of:0000000000006020/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006020/1",
             "of:0000000000003010/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         main.step(
-            "Add point-to-point intents for mininet hosts h11 and h21 or ONOS hosts hB and h15" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet" +
+            " hosts h11 and h21 or ONOS hosts hB and h15" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003011/1",
             "of:0000000000006021/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006021/1",
             "of:0000000000003011/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         main.step(
-            "Add point-to-point intents for mininet hosts h12 and h22 or ONOS hosts hC and h16" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet" +
+            " hosts h12 and h22 or ONOS hosts hC and h16" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003012/1",
             "of:0000000000006022/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006022/1",
             "of:0000000000003012/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         main.step(
-            "Add point-to-point intents for mininet hosts h13 and h23 or ONOS hosts hD and h17" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet " +
+            "hosts h13 and h23 or ONOS hosts hD and h17" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003013/1",
             "of:0000000000006023/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006023/1",
             "of:0000000000003013/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         main.step(
-            "Add point-to-point intents for mininet hosts h14 and h24 or ONOS hosts hE and h18" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet hosts" +
+            " h14 and h24 or ONOS hosts hE and h18" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003014/1",
             "of:0000000000006024/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006024/1",
             "of:0000000000003014/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         main.step(
-            "Add point-to-point intents for mininet hosts h15 and h25 or ONOS hosts hF and h19" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet hosts" +
+            " h15 and h25 or ONOS hosts hF and h19" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003015/1",
             "of:0000000000006025/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006025/1",
             "of:0000000000003015/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         main.step(
-            "Add point-to-point intents for mininet hosts h16 and h26 or ONOS hosts h10 and h1A" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet hosts" +
+            " h16 and h26 or ONOS hosts h10 and h1A" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003016/1",
             "of:0000000000006026/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006026/1",
             "of:0000000000003016/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         main.step(
-            "Add point-to-point intents for mininet hosts h17 and h27 or ONOS hosts h11 and h1B" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet hosts h17" +
+            " and h27 or ONOS hosts h11 and h1B" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003017/1",
             "of:0000000000006027/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006027/1",
             "of:0000000000003017/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         print(
-            "_______________________________________________________________________________________" )
+            "_______________________________________________________" +
+            "________________________________" )
 
         flowHandle = main.ONOScli1.flows()
         # print "flowHandle = ", flowHandle
@@ -1087,7 +1134,7 @@
 
         count = 1
         i = 8
-        Ping_Result = main.TRUE
+        PingResult = main.TRUE
         while i < 18:
             main.log.info(
                 "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
@@ -1095,8 +1142,8 @@
                 src="h" + str( i ), target="h" + str( i + 10 ) )
             if ping == main.FALSE and count < 5:
                 count += 1
-                #i = 8
-                Ping_Result = main.FALSE
+                # i = 8
+                PingResult = main.FALSE
                 main.log.report( "Ping between h" +
                                  str( i ) +
                                  " and h" +
@@ -1114,7 +1161,7 @@
                                       10 ) +
                                  "have failed" )
                 i = 19
-                Ping_Result = main.FALSE
+                PingResult = main.FALSE
             elif ping == main.TRUE:
                 main.log.info( "Ping test between h" +
                                str( i ) +
@@ -1123,98 +1170,104 @@
                                     10 ) +
                                "passed!" )
                 i += 1
-                Ping_Result = main.TRUE
+                PingResult = main.TRUE
             else:
                 main.log.info( "Unknown error" )
-                Ping_Result = main.ERROR
-        if Ping_Result == main.FALSE:
+                PingResult = main.ERROR
+        if PingResult == main.FALSE:
             main.log.report(
-                "Ping all test after Point intents addition failed. Cleaning up" )
+                "Ping all test after Point intents" +
+                " addition failed. Cleaning up" )
             # main.cleanup()
             # main.exit()
-        if Ping_Result == main.TRUE:
+        if PingResult == main.TRUE:
             main.log.report(
                 "Ping all test after Point intents addition successful" )
 
-        case8_result = Ping_Result
-        utilities.assert_equals(
+        case8Result = PingResult
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=case8_result,
+            actual=case8Result,
             onpass="Ping all test after Point intents addition successful",
             onfail="Ping all test after Point intents addition failed" )
 
     def CASE31( self ):
         """
-            This test case adds point intent related to SDN-IP matching on ICMP ( ethertype=IPV4, ipProto=1 )
+            This test case adds point intent related to
+            SDN-IP matching on ICMP ( ethertype=IPV4, ipProto=1 )
         """
         import json
 
         main.log.report(
-            "This test case adds point intent related to SDN-IP matching on ICMP" )
+            "This test case adds point intent " +
+            "related to SDN-IP matching on ICMP" )
         main.case(
-            "Adding bidirectional point intent related to SDN-IP matching on ICMP" )
+            "Adding bidirectional point intent related" +
+            " to SDN-IP matching on ICMP" )
         main.step( "Adding bidirectional point intent" )
         # add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32
         # --ethType=IPV4 --ipProto=1  of:0000000000003008/1
         # of:0000000000006018/1
 
-        hosts_json = json.loads( main.ONOScli1.hosts() )
+        hostsJson = json.loads( main.ONOScli1.hosts() )
         for i in range( 8, 11 ):
             main.log.info(
-                "Adding point intent between h" + str( i ) + " and h" + str( i + 10 ) )
+                "Adding point intent between h" + str( i ) +
+                " and h" + str( i + 10 ) )
             host1 = "00:00:00:00:00:" + \
                 str( hex( i )[ 2: ] ).zfill( 2 ).upper()
             host2 = "00:00:00:00:00:" + \
                 str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
-            host1_id = main.ONOScli1.get_host( host1 )[ 'id' ]
-            host2_id = main.ONOScli1.get_host( host2 )[ 'id' ]
-            for host in hosts_json:
-                if host[ 'id' ] == host1_id:
+            host1Id = main.ONOScli1.getHost( host1 )[ 'id' ]
+            host2Id = main.ONOScli1.getHost( host2 )[ 'id' ]
+            for host in hostsJson:
+                if host[ 'id' ] == host1Id:
                     ip1 = host[ 'ips' ][ 0 ]
                     ip1 = str( ip1 + "/32" )
                     device1 = host[ 'location' ][ 'device' ]
                     device1 = str( device1 + "/1" )
-                elif host[ 'id' ] == host2_id:
+                elif host[ 'id' ] == host2Id:
                     ip2 = str( host[ 'ips' ][ 0 ] ) + "/32"
                     device2 = host[ 'location' ][ "device" ]
                     device2 = str( device2 + "/1" )
 
-            p_intent_result1 = main.ONOScli1.add_point_intent(
-                ingress_device=device1,
-                egress_device=device2,
+            pIntentResult1 = main.ONOScli1.addPointIntent(
+                ingressDevice=device1,
+                egressDevice=device2,
                 ipSrc=ip1,
                 ipDst=ip2,
                 ethType=main.params[ 'SDNIP' ][ 'ethType' ],
                 ipProto=main.params[ 'SDNIP' ][ 'icmpProto' ] )
 
-            get_intent_result = main.ONOScli1.intents( json_format=False )
-            main.log.info( get_intent_result )
+            getIntentResult = main.ONOScli1.intents( jsonFormat=False )
+            main.log.info( getIntentResult )
 
-            p_intent_result2 = main.ONOScli1.add_point_intent(
-                ingress_device=device2,
-                egress_device=device1,
+            pIntentResult2 = main.ONOScli1.addPointIntent(
+                ingressDevice=device2,
+                egressDevice=device1,
                 ipSrc=ip2,
                 ipDst=ip1,
                 ethType=main.params[ 'SDNIP' ][ 'ethType' ],
                 ipProto=main.params[ 'SDNIP' ][ 'icmpProto' ] )
 
-            get_intent_result = main.ONOScli1.intents( json_format=False )
-            main.log.info( get_intent_result )
-            if ( p_intent_result1 and p_intent_result2 ) == main.TRUE:
-                #get_intent_result = main.ONOScli1.intents()
-                # main.log.info( get_intent_result )
+            getIntentResult = main.ONOScli1.intents( jsonFormat=False )
+            main.log.info( getIntentResult )
+            if ( pIntentResult1 and pIntentResult2 ) == main.TRUE:
+                # getIntentResult = main.ONOScli1.intents()
+                # main.log.info( getIntentResult )
                 main.log.info(
-                    "Point intent related to SDN-IP matching on ICMP install successful" )
+                    "Point intent related to SDN-IP matching" +
+                    " on ICMP install successful" )
 
         time.sleep( 15 )
-        get_intent_result = main.ONOScli1.intents( json_format=False )
-        main.log.info( "intents = " + get_intent_result )
-        get_flows_result = main.ONOScli1.flows()
-        main.log.info( "flows = " + get_flows_result )
+        getIntentResult = main.ONOScli1.intents( jsonFormat=False )
+        main.log.info( "intents = " + getIntentResult )
+        getFlowsResult = main.ONOScli1.flows()
+        main.log.info( "flows = " + getFlowsResult )
 
         count = 1
         i = 8
-        Ping_Result = main.TRUE
+        PingResult = main.TRUE
         while i < 11:
             main.log.info(
                 "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
@@ -1222,8 +1275,8 @@
                 src="h" + str( i ), target="h" + str( i + 10 ) )
             if ping == main.FALSE and count < 3:
                 count += 1
-                #i = 8
-                Ping_Result = main.FALSE
+                # i = 8
+                PingResult = main.FALSE
                 main.log.report( "Ping between h" +
                                  str( i ) +
                                  " and h" +
@@ -1241,7 +1294,7 @@
                                       10 ) +
                                  "have failed" )
                 i = 19
-                Ping_Result = main.FALSE
+                PingResult = main.FALSE
             elif ping == main.TRUE:
                 main.log.info( "Ping test between h" +
                                str( i ) +
@@ -1250,150 +1303,186 @@
                                     10 ) +
                                "passed!" )
                 i += 1
-                Ping_Result = main.TRUE
+                PingResult = main.TRUE
             else:
                 main.log.info( "Unknown error" )
-                Ping_Result = main.ERROR
-        if Ping_Result == main.FALSE:
+                PingResult = main.ERROR
+        if PingResult == main.FALSE:
             main.log.report(
-                "Ping test after Point intents related to SDN-IP matching on ICMP failed." )
+                "Ping test after Point intents related to" +
+                " SDN-IP matching on ICMP failed." )
             # main.cleanup()
             # main.exit()
-        if Ping_Result == main.TRUE:
+        if PingResult == main.TRUE:
             main.log.report(
-                "Ping all test after Point intents related to SDN-IP matching on ICMP successful" )
+                "Ping all test after Point intents related to" +
+                " SDN-IP matching on ICMP successful" )
 
-        case31_result = Ping_Result and p_intent_result1 and p_intent_result2
-        utilities.assert_equals(
+        case31Result = PingResult and pIntentResult1 and pIntentResult2
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=case31_result,
-            onpass="Point intent related to SDN-IP matching on ICMP and ping test successful",
-            onfail="Point intent related to SDN-IP matching on ICMP and ping test failed" )
+            actual=case31Result,
+            onpass="Point intent related to SDN-IP " +
+            "matching on ICMP and ping test successful",
+            onfail="Point intent related to SDN-IP" +
+            " matching on ICMP and ping test failed" )
 
     def CASE32( self ):
         """
-            This test case adds point intent related to SDN-IP matching on TCP ( ethertype=IPV4, ipProto=6, DefaultPort for iperf=5001 )
-            Note: Although BGP port is 179, we are using 5001 because iperf is used for verifying and iperf's default port is 5001
+            This test case adds point intent related to SDN-IP matching on TCP
+            ( ethertype=IPV4, ipProto=6, DefaultPort for iperf=5001 )
+            Note: Although BGP port is 179, we are using 5001 because iperf
+            is used for verifying and iperf's default port is 5001
         """
         import json
 
         main.log.report(
-            "This test case adds point intent related to SDN-IP matching on TCP" )
+            "This test case adds point intent" +
+            " related to SDN-IP matching on TCP" )
         main.case(
-            "Adding bidirectional point intent related to SDN-IP matching on TCP" )
+            "Adding bidirectional point intent related" +
+            " to SDN-IP matching on TCP" )
         main.step( "Adding bidirectional point intent" )
         """
-        add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32 --ethType=IPV4 --ipProto=6 --tcpDst=5001  of:0000000000003008/1 of:0000000000006018/1
+        add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32
+        --ethType=IPV4 --ipProto=6 --tcpDst=5001  of:0000000000003008/1
+        of:0000000000006018/1
 
-        add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32 --ethType=IPV4 --ipProto=6 --tcpDst=5001  of:0000000000006018/1 of:0000000000003008/1
+        add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32
+        --ethType=IPV4 --ipProto=6 --tcpDst=5001  of:0000000000006018/1
+        of:0000000000003008/1
 
-        add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32 --ethType=IPV4 --ipProto=6 --tcpSrc=5001  of:0000000000003008/1 of:0000000000006018/1
+        add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32
+        --ethType=IPV4 --ipProto=6 --tcpSrc=5001  of:0000000000003008/1
+        of:0000000000006018/1
 
-        add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32 --ethType=IPV4 --ipProto=6 --tcpSrc=5001  of:0000000000006018/1 of:0000000000003008/1
+        add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32
+        --ethType=IPV4 --ipProto=6 --tcpSrc=5001  of:0000000000006018/1
+        of:0000000000003008/1
 
         """
-        hosts_json = json.loads( main.ONOScli1.hosts() )
+        hostsJson = json.loads( main.ONOScli1.hosts() )
         for i in range( 8, 9 ):
             main.log.info(
-                "Adding point intent between h" + str( i ) + " and h" + str( i + 10 ) )
+                "Adding point intent between h" + str( i ) +
+                " and h" + str( i + 10 ) )
             host1 = "00:00:00:00:00:" + \
                 str( hex( i )[ 2: ] ).zfill( 2 ).upper()
             host2 = "00:00:00:00:00:" + \
                 str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
-            host1_id = main.ONOScli1.get_host( host1 )[ 'id' ]
-            host2_id = main.ONOScli1.get_host( host2 )[ 'id' ]
-            for host in hosts_json:
-                if host[ 'id' ] == host1_id:
+            host1Id = main.ONOScli1.getHost( host1 )[ 'id' ]
+            host2Id = main.ONOScli1.getHost( host2 )[ 'id' ]
+            for host in hostsJson:
+                if host[ 'id' ] == host1Id:
                     ip1 = host[ 'ips' ][ 0 ]
                     ip1 = str( ip1 + "/32" )
                     device1 = host[ 'location' ][ 'device' ]
                     device1 = str( device1 + "/1" )
-                elif host[ 'id' ] == host2_id:
+                elif host[ 'id' ] == host2Id:
                     ip2 = str( host[ 'ips' ][ 0 ] ) + "/32"
                     device2 = host[ 'location' ][ "device" ]
                     device2 = str( device2 + "/1" )
 
-            p_intent_result1 = main.ONOScli1.add_point_intent(
-                ingress_device=device1,
-                egress_device=device2,
+            pIntentResult1 = main.ONOScli1.addPointIntent(
+                ingressDevice=device1,
+                egressDevice=device2,
                 ipSrc=ip1,
                 ipDst=ip2,
                 ethType=main.params[ 'SDNIP' ][ 'ethType' ],
                 ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
                 tcpDst=main.params[ 'SDNIP' ][ 'dstPort' ] )
-            p_intent_result2 = main.ONOScli1.add_point_intent(
-                ingress_device=device2,
-                egress_device=device1,
+            pIntentResult2 = main.ONOScli1.addPointIntent(
+                ingressDevice=device2,
+                egressDevice=device1,
                 ipSrc=ip2,
                 ipDst=ip1,
                 ethType=main.params[ 'SDNIP' ][ 'ethType' ],
                 ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
                 tcpDst=main.params[ 'SDNIP' ][ 'dstPort' ] )
 
-            p_intent_result3 = main.ONOScli1.add_point_intent(
-                ingress_device=device1,
-                egress_device=device2,
+            pIntentResult3 = main.ONOScli1.addPointIntent(
+                ingressDevice=device1,
+                egressDevice=device2,
                 ipSrc=ip1,
                 ipDst=ip2,
                 ethType=main.params[ 'SDNIP' ][ 'ethType' ],
                 ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
                 tcpSrc=main.params[ 'SDNIP' ][ 'srcPort' ] )
-            p_intent_result4 = main.ONOScli1.add_point_intent(
-                ingress_device=device2,
-                egress_device=device1,
+            pIntentResult4 = main.ONOScli1.addPointIntent(
+                ingressDevice=device2,
+                egressDevice=device1,
                 ipSrc=ip2,
                 ipDst=ip1,
                 ethType=main.params[ 'SDNIP' ][ 'ethType' ],
                 ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
                 tcpSrc=main.params[ 'SDNIP' ][ 'srcPort' ] )
 
-            p_intent_result = p_intent_result1 and p_intent_result2 and p_intent_result3 and p_intent_result4
-            if p_intent_result == main.TRUE:
-                get_intent_result = main.ONOScli1.intents( json_format=False )
-                main.log.info( get_intent_result )
-                main.log.info(
-                    "Point intent related to SDN-IP matching on TCP install successful" )
+            pIntentResult = pIntentResult1 and pIntentResult2 and\
+                    pIntentResult3 and pIntentResult4
+            if pIntentResult == main.TRUE:
+                getIntentResult = main.ONOScli1.intents( jsonFormat=False )
+                main.log.info( getIntentResult )
+                main.log.report(
+                    "Point intent related to SDN-IP matching" +
+                    " on TCP install successful" )
+            else:
+                main.log.report(
+                    "Point intent related to SDN-IP matching" +
+                    " on TCP install failed" )
 
-        iperf_result = main.Mininet1.iperf( 'h8', 'h18' )
-        if iperf_result == main.TRUE:
+        iperfResult = main.Mininet1.iperf( 'h8', 'h18' )
+        if iperfResult == main.TRUE:
             main.log.report( "iperf test successful" )
         else:
             main.log.report( "iperf test failed" )
 
-        case32_result = p_intent_result and iperf_result
-        utilities.assert_equals(
+        case32Result = pIntentResult and iperfResult
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=case32_result,
-            onpass="Ping all test after Point intents addition related to SDN-IP on TCP match successful",
-            onfail="Ping all test after Point intents addition related to SDN-IP on TCP match failed" )
+            actual=case32Result,
+            onpass="Ping all test after Point intents addition related " +
+            "to SDN-IP on TCP match successful",
+            onfail="Ping all test after Point intents addition related " +
+            "to SDN-IP on TCP match failed" )
 
     def CASE33( self ):
         """
-            This test case adds multipoint to singlepoint  intent related to SDN-IP matching on destination ip and the action is to rewrite the mac address
-            Here the mac address to be rewritten is the mac address of the egress device
+            This test case adds multipoint to singlepoint  intent related to
+            SDN-IP matching on destination ip and the action is to rewrite
+            the mac address
+            Here the mac address to be rewritten is the mac address of the
+            egress device
         """
         import json
         import time
 
         main.log.report(
-            "This test case adds multipoint to singlepoint intent related to SDN-IP matching on destination ip and rewrite mac address action" )
+            "This test case adds multipoint to singlepoint intent related to" +
+            " SDN-IP matching on destination ip and " +
+            "rewrite mac address action" )
         main.case(
-            "Adding multipoint to singlepoint intent related to SDN-IP matching on destination ip" )
+            "Adding multipoint to singlepoint intent related to SDN-IP" +
+            " matching on destination ip" )
         main.step( "Adding bidirectional multipoint to singlepoint intent" )
         """
-        add-multi-to-single-intent --ipDst=10.0.3.0/24 --setEthDst=00:00:00:00:00:12 of:0000000000003008/1 0000000000003009/1 of:0000000000006018/1
+        add-multi-to-single-intent --ipDst=10.0.3.0/24
+        --setEthDst=00:00:00:00:00:12 of:0000000000003008/1 0000000000003009/1
+        of:0000000000006018/1
 
-        add-multi-to-single-intent --ipDst=10.0.1.0/24 --setEthDst=00:00:00:00:00:08 of:0000000000006018/1 0000000000003009/1 of:0000000000003008/1
+        add-multi-to-single-intent --ipDst=10.0.1.0/24
+        --setEthDst=00:00:00:00:00:08 of:0000000000006018/1 0000000000003009/1
+        of:0000000000003008/1
         """
         main.case(
-            "Installing multipoint to single point intent with rewrite mac address" )
+            "Installing multipoint to single point " +
+            "intent with rewrite mac address" )
         main.step( "Uninstalling proxy arp app" )
         # Unistall onos-app-proxyarp app to disable reactive forwarding
-        appUninstall_result1 = main.ONOScli1.feature_uninstall(
+        appUninstallResult1 = main.ONOScli1.featureUninstall(
             "onos-app-proxyarp" )
-        appUninstall_result2 = main.ONOScli2.feature_uninstall(
+        appUninstallResult2 = main.ONOScli2.featureUninstall(
             "onos-app-proxyarp" )
-        appUninstall_result3 = main.ONOScli3.feature_uninstall(
+        appUninstallResult3 = main.ONOScli3.featureUninstall(
             "onos-app-proxyarp" )
         main.log.info( "onos-app-proxyarp uninstalled" )
 
@@ -1420,7 +1509,8 @@
         main.Mininet1.changeDefaultGateway( host='h10', newGW='10.0.3.254' )
 
         main.step(
-            "Assigning random mac address to the default gateways since proxyarp app is uninstalled" )
+            "Assigning random mac address to the default gateways " +
+            "since proxyarp app is uninstalled" )
         main.Mininet1.addStaticMACAddress(
             host='h8',
             GW='10.0.1.254',
@@ -1440,37 +1530,37 @@
         main.Mininet1.verifyStaticGWandMAC( host='h10' )
 
         main.step( "Adding multipoint to singlepoint intent" )
-        p_intent_result1 = main.ONOScli1.add_multipoint_to_singlepoint_intent(
-            ingress_device1=main.params[ 'MULTIPOINT_INTENT' ][ 'device1' ],
-            ingress_device2=main.params[ 'MULTIPOINT_INTENT' ][ 'device2' ],
-            egress_device=main.params[ 'MULTIPOINT_INTENT' ][ 'device3' ],
+        pIntentResult1 = main.ONOScli1.addMultipointToSinglepointIntent(
+            ingressDevice1=main.params[ 'MULTIPOINT_INTENT' ][ 'device1' ],
+            ingressDevice2=main.params[ 'MULTIPOINT_INTENT' ][ 'device2' ],
+            egressDevice=main.params[ 'MULTIPOINT_INTENT' ][ 'device3' ],
             ipDst=main.params[ 'MULTIPOINT_INTENT' ][ 'ip1' ],
             setEthDst=main.params[ 'MULTIPOINT_INTENT' ][ 'mac1' ] )
 
-        p_intent_result2 = main.ONOScli1.add_multipoint_to_singlepoint_intent(
-            ingress_device1=main.params[ 'MULTIPOINT_INTENT' ][ 'device3' ],
-            ingress_device2=main.params[ 'MULTIPOINT_INTENT' ][ 'device2' ],
-            egress_device=main.params[ 'MULTIPOINT_INTENT' ][ 'device1' ],
+        pIntentResult2 = main.ONOScli1.addMultipointToSinglepointIntent(
+            ingressDevice1=main.params[ 'MULTIPOINT_INTENT' ][ 'device3' ],
+            ingressDevice2=main.params[ 'MULTIPOINT_INTENT' ][ 'device2' ],
+            egressDevice=main.params[ 'MULTIPOINT_INTENT' ][ 'device1' ],
             ipDst=main.params[ 'MULTIPOINT_INTENT' ][ 'ip2' ],
             setEthDst=main.params[ 'MULTIPOINT_INTENT' ][ 'mac2' ] )
 
-        get_intent_result = main.ONOScli1.intents( json_format=False )
-        main.log.info( "intents = " + get_intent_result )
+        getIntentResult = main.ONOScli1.intents( jsonFormat=False )
+        main.log.info( "intents = " + getIntentResult )
 
         time.sleep( 10 )
-        get_flows_result = main.ONOScli1.flows( json_format=False )
-        main.log.info( "flows = " + get_flows_result )
+        getFlowsResult = main.ONOScli1.flows( jsonFormat=False )
+        main.log.info( "flows = " + getFlowsResult )
 
         count = 1
         i = 8
-        Ping_Result = main.TRUE
+        PingResult = main.TRUE
 
         main.log.info( "\n\nh" + str( i ) + " is Pinging h" + str( i + 2 ) )
         ping = main.Mininet1.pingHost(
             src="h" + str( i ), target="h" + str( i + 2 ) )
         if ping == main.FALSE and count < 3:
             count += 1
-            Ping_Result = main.FALSE
+            PingResult = main.FALSE
             main.log.report( "Ping between h" +
                              str( i ) +
                              " and h" +
@@ -1487,7 +1577,7 @@
                              str( i +
                                   10 ) +
                              "have failed" )
-            Ping_Result = main.FALSE
+            PingResult = main.FALSE
         elif ping == main.TRUE:
             main.log.info( "Ping test between h" +
                            str( i ) +
@@ -1495,29 +1585,33 @@
                            str( i +
                                 2 ) +
                            "passed!" )
-            Ping_Result = main.TRUE
+            PingResult = main.TRUE
         else:
             main.log.info( "Unknown error" )
-            Ping_Result = main.ERROR
+            PingResult = main.ERROR
 
-        if Ping_Result == main.FALSE:
+        if PingResult == main.FALSE:
             main.log.report( "Ping test failed." )
             # main.cleanup()
             # main.exit()
-        if Ping_Result == main.TRUE:
+        if PingResult == main.TRUE:
             main.log.report( "Ping all successful" )
 
-        p_intent_result = p_intent_result1 and p_intent_result2
-        if p_intent_result == main.TRUE:
+        pIntentResult = pIntentResult1 and pIntentResult2
+        if pIntentResult == main.TRUE:
             main.log.info(
-                "Multi point intent with rewrite mac address installation successful" )
+                "Multi point intent with rewrite mac " +
+                "address installation successful" )
         else:
             main.log.info(
-                "Multi point intent with rewrite mac address installation failed" )
+                "Multi point intent with rewrite mac" +
+                " address installation failed" )
 
-        case33_result = p_intent_result and Ping_Result
-        utilities.assert_equals(
+        case33Result = pIntentResult and PingResult
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=case33_result,
-            onpass="Ping all test after multipoint to single point intent addition with rewrite mac address successful",
-            onfail="Ping all test after multipoint to single point intent addition with rewrite mac address failed" )
+            actual=case33Result,
+            onpass="Ping all test after multipoint to single point" +
+            " intent addition with rewrite mac address successful",
+            onfail="Ping all test after multipoint to single point intent" +
+            " addition with rewrite mac address failed" )
diff --git a/TestON/tests/MultiProd/MultiProd.py.fixed b/TestON/tests/MultiProd/MultiProd.py.fixed
new file mode 100644
index 0000000..e0e772a
--- /dev/null
+++ b/TestON/tests/MultiProd/MultiProd.py.fixed
@@ -0,0 +1,1566 @@
+
+# Testing the basic functionality of ONOS Next
+# For sanity and driver functionality excercises only.
+
+import time
+import json
+
+time.sleep( 1 )
+
+
+class MultiProd:
+
+    def __init__( self ):
+        self.default = ''
+
+    def CASE1( self, main ):
+        """
+        Startup sequence:
+        cell <name>
+        onos-verify-cell
+        onos-remove-raft-logs
+        git pull
+        mvn clean install
+        onos-package
+        onos-install -f
+        onos-wait-for-start
+        """
+        cell_name = main.params[ 'ENV' ][ 'cellName' ]
+        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
+
+        main.case( "Setting up test environment" )
+        main.log.report(
+            "This testcase is testing setting up test environment" )
+        main.log.report( "__________________________________" )
+
+        main.step( "Applying cell variable to environment" )
+        cell_result1 = main.ONOSbench.set_cell( cell_name )
+        # cell_result2 = main.ONOScli1.set_cell( cell_name )
+        # cell_result3 = main.ONOScli2.set_cell( cell_name )
+        # cell_result4 = main.ONOScli3.set_cell( cell_name )
+        verify_result = main.ONOSbench.verify_cell()
+        cell_result = cell_result1
+
+        main.step( "Removing raft logs before a clen installation of ONOS" )
+        main.ONOSbench.onos_remove_raft_logs()
+
+        main.step( "Git checkout and pull master and get version" )
+        main.ONOSbench.git_checkout( "master" )
+        git_pull_result = main.ONOSbench.git_pull()
+        print "git_pull_result = ", git_pull_result
+        main.ONOSbench.get_version( report=True )
+
+        if git_pull_result == 1:
+            main.step( "Using mvn clean & install" )
+            main.ONOSbench.clean_install()
+
+        main.step( "Creating ONOS package" )
+        package_result = main.ONOSbench.onos_package()
+
+        # main.step( "Creating a cell" )
+        # cell_create_result = main.ONOSbench.create_cell_file( **************
+        # )
+
+        main.step( "Installing ONOS package" )
+        onos1_install_result = main.ONOSbench.onos_install(
+            options="-f",
+            node=ONOS1_ip )
+        onos2_install_result = main.ONOSbench.onos_install(
+            options="-f",
+            node=ONOS2_ip )
+        onos3_install_result = main.ONOSbench.onos_install(
+            options="-f",
+            node=ONOS3_ip )
+        onos_install_result = onos1_install_result and onos2_install_result \
+                                and onos3_install_result
+        if onos_install_result == main.TRUE:
+            main.log.report( "Installing ONOS package successful" )
+        else:
+            main.log.report( "Installing ONOS package failed" )
+
+        onos1_isup = main.ONOSbench.isup( ONOS1_ip )
+        onos2_isup = main.ONOSbench.isup( ONOS2_ip )
+        onos3_isup = main.ONOSbench.isup( ONOS3_ip )
+        onos_isup = onos1_isup and onos2_isup and onos3_isup
+        if onos_isup == main.TRUE:
+            main.log.report( "ONOS instances are up and ready" )
+        else:
+            main.log.report( "ONOS instances may not be up" )
+
+        main.step( "Starting ONOS service" )
+        start_result = main.TRUE
+        # start_result = main.ONOSbench.onos_start( ONOS1_ip )
+        startcli1 = main.ONOScli1.start_onos_cli( ONOS_ip=ONOS1_ip )
+        startcli2 = main.ONOScli2.start_onos_cli( ONOS_ip=ONOS2_ip )
+        startcli3 = main.ONOScli3.start_onos_cli( ONOS_ip=ONOS3_ip )
+        print startcli1
+        print startcli2
+        print startcli3
+
+        case1_result = ( package_result and cell_result and
+                         verify_result and onos_install_result
+                         and onos_isup and start_result )
+        utilities.assert_equals( expect=main.TRUE, actual=case1_result,
+                                 onpass="Test startup successful",
+                                 onfail="Test startup NOT successful" )
+
+    def CASE11( self, main ):
+        """
+        Cleanup sequence:
+        onos-service <node_ip> stop
+        onos-uninstall
+
+        TODO: Define rest of cleanup
+
+        """
+        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
+
+        main.case( "Cleaning up test environment" )
+
+        main.step( "Testing ONOS kill function" )
+        kill_result1 = main.ONOSbench.onos_kill( ONOS1_ip )
+        kill_result2 = main.ONOSbench.onos_kill( ONOS2_ip )
+        kill_result3 = main.ONOSbench.onos_kill( ONOS3_ip )
+        kill_result = kill_result1 and kill_result2 and kill_result3
+
+        main.step( "Stopping ONOS service" )
+        stop_result1 = main.ONOSbench.onos_stop( ONOS1_ip )
+        stop_result2 = main.ONOSbench.onos_stop( ONOS2_ip )
+        stop_result3 = main.ONOSbench.onos_stop( ONOS3_ip )
+        stop_result = stop_result1 and stop_result2 and stop_result3
+ 
+        main.step( "Uninstalling ONOS service" )
+        uninstall_result = main.ONOSbench.onos_uninstall()
+
+        case11_result = kill_result and stop_result and uninstall_result
+        utilities.assert_equals( expect=main.TRUE, actual=case11_result,
+                                 onpass="Cleanup successful",
+                                 onfail="Cleanup failed" )
+
+    def CASE3( self, main ):
+        """
+        Test 'onos' command and its functionality in driver
+        """
+        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
+
+        main.case( "Testing 'onos' command" )
+
+        main.step( "Sending command 'onos -w <onos-ip> system:name'" )
+        cmdstr1 = "system:name"
+        cmd_result1 = main.ONOSbench.onos_cli( ONOS1_ip, cmdstr1 )
+        main.log.info( "onos command returned: " + cmd_result1 )
+        cmd_result2 = main.ONOSbench.onos_cli( ONOS2_ip, cmdstr1 )
+        main.log.info( "onos command returned: " + cmd_result2 )
+        cmd_result3 = main.ONOSbench.onos_cli( ONOS3_ip, cmdstr1 )
+        main.log.info( "onos command returned: " + cmd_result3 )
+
+        main.step( "Sending command 'onos -w <onos-ip> onos:topology'" )
+        cmdstr2 = "onos:topology"
+        cmd_result4 = main.ONOSbench.onos_cli( ONOS1_ip, cmdstr2 )
+        main.log.info( "onos command returned: " + cmd_result4 )
+        cmd_result5 = main.ONOSbench.onos_cli( ONOS2_ip, cmdstr2 )
+        main.log.info( "onos command returned: " + cmd_result5 )
+        cmd_result6 = main.ONOSbench.onos_cli( ONOS3_ip, cmdstr2 )
+        main.log.info( "onos command returned: " + cmd_result6 )
+
+    def CASE4( self, main ):
+        import re
+        import time
+        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS1_port = main.params[ 'CTRL' ][ 'port1' ]
+        ONOS2_port = main.params[ 'CTRL' ][ 'port2' ]
+        ONOS3_port = main.params[ 'CTRL' ][ 'port3' ]
+
+        main.log.report(
+            "This testcase is testing the assignment of all the switches to \
+            all controllers and discovering the hosts in reactive mode" )
+        main.log.report( "__________________________________" )
+        main.case( "Pingall Test(No intents are added)" )
+        main.step( "Assigning switches to controllers" )
+        for i in range( 1, 29 ):  # 1 to ( num of switches +1 )
+            main.Mininet1.assign_sw_controller(
+                sw=str( i ),
+                count=3,
+                ip1=ONOS1_ip,
+                port1=ONOS1_port,
+                ip2=ONOS2_ip,
+                port2=ONOS2_port,
+                ip3=ONOS3_ip,
+                port3=ONOS3_port )
+
+        switch_mastership = main.TRUE
+        for i in range( 1, 29 ):
+            response = main.Mininet1.get_sw_controller( "s" + str( i ) )
+            print( "Response is " + str( response ) )
+            if re.search( "tcp:" + ONOS1_ip, response ):
+                switch_mastership = switch_mastership and main.TRUE
+            else:
+                switch_mastership = main.FALSE
+
+        if switch_mastership == main.TRUE:
+            main.log.report( "Controller assignment successfull" )
+        else:
+            main.log.report( "Controller assignment failed" )
+        # REACTIVE FWD test
+        main.step( "Pingall" )
+        ping_result = main.FALSE
+        time1 = time.time()
+        ping_result = main.Mininet1.pingall()
+        time2 = time.time()
+        print "Time for pingall: %2f seconds" % ( time2 - time1 )
+
+        case4_result = switch_mastership and ping_result
+        if ping_result == main.TRUE:
+            main.log.report( "Pingall Test in reactive mode to discover \
+                             the hosts successful" )
+        else:
+            main.log.report( "Pingall Test in reactive mode to discover \
+                             the hosts failed" )
+
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case4_result,
+            onpass="Controller assignment and Pingall Test successful",
+            onfail="Controller assignment and Pingall Test NOT successful" )
+
+    def CASE5( self, main ):
+        import json
+        from subprocess import Popen, PIPE
+        # assumes that sts is already in you PYTHONPATH
+        from sts.topology.teston_topology import TestONTopology
+
+        main.log.report( "This testcase is testing if all ONOS nodes are in \
+                         topology sync with mininet and its peer ONOS nodes" )
+        main.log.report( "__________________________________" )
+        main.case(
+            "Testing Mininet topology with the topology \
+            of multi instances ONOS" )
+        main.step( "Collecting topology information from ONOS" )
+        devices1 = main.ONOScli1.devices()
+        devices2 = main.ONOScli2.devices()
+        devices3 = main.ONOScli3.devices()
+        hosts1 = main.ONOScli1.hosts()
+        hosts2 = main.ONOScli2.hosts()
+        hosts3 = main.ONOScli3.hosts()
+        ports1 = main.ONOScli1.ports()
+        ports2 = main.ONOScli2.ports()
+        ports3 = main.ONOScli3.ports()
+        links1 = main.ONOScli1.links()
+        links2 = main.ONOScli2.links()
+        links3 = main.ONOScli3.links()
+
+        main.step( "Start continuous pings" )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source1' ],
+            target=main.params[ 'PING' ][ 'target1' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source2' ],
+            target=main.params[ 'PING' ][ 'target2' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source3' ],
+            target=main.params[ 'PING' ][ 'target3' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source4' ],
+            target=main.params[ 'PING' ][ 'target4' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source5' ],
+            target=main.params[ 'PING' ][ 'target5' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source6' ],
+            target=main.params[ 'PING' ][ 'target6' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source7' ],
+            target=main.params[ 'PING' ][ 'target7' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source8' ],
+            target=main.params[ 'PING' ][ 'target8' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source9' ],
+            target=main.params[ 'PING' ][ 'target9' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source10' ],
+            target=main.params[ 'PING' ][ 'target10' ],
+            pingTime=500 )
+
+        main.step( "Create TestONTopology object" )
+        global ctrls
+        ctrls = []
+        count = 1
+        while True:
+            temp = ()
+            if ( 'ip' + str( count ) ) in main.params[ 'CTRL' ]:
+                temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
+                temp = temp + ( "ONOS" + str( count ), )
+                temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
+                temp = temp + \
+                    ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
+                ctrls.append( temp )
+                count = count + 1
+            else:
+                break
+        global MNTopo
+        Topo = TestONTopology(
+            main.Mininet1,
+            ctrls )  # can also add Intent API info for intent operations
+        MNTopo = Topo
+
+        Topology_Check = main.TRUE
+        main.step( "Compare ONOS Topology to MN Topology" )
+
+        switches_results1 = main.Mininet1.compare_switches(
+            MNTopo,
+            json.loads( devices1 ) )
+        print "switches_Result1 = ", switches_results1
+        utilities.assert_equals( expect=main.TRUE, actual=switches_results1,
+                                 onpass="ONOS1 Switches view is correct",
+                                 onfail="ONOS1 Switches view is incorrect" )
+
+        switches_results2 = main.Mininet1.compare_switches(
+            MNTopo,
+            json.loads( devices2 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=switches_results2,
+                                 onpass="ONOS2 Switches view is correct",
+                                 onfail="ONOS2 Switches view is incorrect" )
+
+        switches_results3 = main.Mininet1.compare_switches(
+            MNTopo,
+            json.loads( devices3 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=switches_results3,
+                                 onpass="ONOS3 Switches view is correct",
+                                 onfail="ONOS3 Switches view is incorrect" )
+
+        ports_results1 = main.Mininet1.compare_ports(
+                            MNTopo, json.loads( ports1 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=ports_results1,
+                onpass="ONOS1 Ports view is correct",
+                onfail="ONOS1 Ports view is incorrect" )
+
+        ports_results2 = main.Mininet1.compare_ports(
+                            MNTopo, json.loads( ports2 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=ports_results2,
+                onpass="ONOS2 Ports view is correct",
+                onfail="ONOS2 Ports view is incorrect" )
+
+        ports_results3 = main.Mininet1.compare_ports(
+                            MNTopo, json.loads( ports3 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=ports_results3,
+                onpass="ONOS3 Ports view is correct",
+                onfail="ONOS3 Ports view is incorrect" )
+        
+        links_results1 = main.Mininet1.compare_links(
+            MNTopo,
+            json.loads( links1 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=links_results1,
+                                 onpass="ONOS1 Links view is correct",
+                                 onfail="ONOS1 Links view is incorrect" )
+
+        links_results2 = main.Mininet1.compare_links(
+            MNTopo,
+            json.loads( links2 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=links_results2,
+                                 onpass="ONOS2 Links view is correct",
+                                 onfail="ONOS2 Links view is incorrect" )
+
+        links_results3 = main.Mininet1.compare_links(
+            MNTopo,
+            json.loads( links3 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=links_results3,
+                                 onpass="ONOS2 Links view is correct",
+                                 onfail="ONOS2 Links view is incorrect" )
+
+        topo_result = switches_results1 and switches_results2 and \
+        switches_results3\
+        and ports_results1 and ports_results2 and ports_results3\
+        and links_results1 and links_results2 and links_results3
+
+        '''
+            topo_result = switches_results1 and switches_results2 and \
+                        switches_results3 and links_results1 and \
+                        links_results2 and links_results3
+        '''
+
+        if topo_result == main.TRUE:
+            main.log.report(
+                "Topology Check Test with mininet and \
+                ONOS instances successful" )
+        else:
+            main.log.report(
+                "Topology Check Test with mininet and \
+                ONOS instances failed" )
+
+        utilities.assert_equals( expect=main.TRUE, actual=topo_result,
+                                 onpass="Topology Check Test successful",
+                                 onfail="Topology Check Test NOT successful" )
+
+    def CASE10( self ):
+        main.log.report(
+            "This testcase uninstalls the reactive forwarding app" )
+        main.log.report( "__________________________________" )
+        main.case( "Uninstalling reactive forwarding app" )
+        # Unistall onos-app-fwd app to disable reactive forwarding
+        appUninstall_result1 = main.ONOScli1.feature_uninstall(
+            "onos-app-fwd" )
+        appUninstall_result2 = main.ONOScli2.feature_uninstall(
+            "onos-app-fwd" )
+        appUninstall_result3 = main.ONOScli3.feature_uninstall(
+            "onos-app-fwd" )
+        main.log.info( "onos-app-fwd uninstalled" )
+
+        # After reactive forwarding is disabled,
+        # the reactive flows on switches timeout in 10-15s
+        # So sleep for 15s
+        time.sleep( 15 )
+
+        hosts = main.ONOScli1.hosts()
+        main.log.info( hosts )
+
+        case10_result = appUninstall_result1 and appUninstall_result2 and \
+                        appUninstall_result3
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case10_result,
+            onpass="Reactive forwarding app uninstallation successful",
+            onfail="Reactive forwarding app uninstallation failed" )
+
+    def CASE6( self ):
+        main.log.report(
+            "This testcase is testing the addition of host intents and \
+            then doing pingall" )
+        main.log.report( "__________________________________" )
+        main.case( "Obtaining hostsfor adding host intents" )
+        main.step( "Get hosts" )
+        hosts = main.ONOScli1.hosts()
+        main.log.info( hosts )
+
+        main.step( "Get all devices id" )
+        devices_id_list = main.ONOScli1.get_all_devices_id()
+        main.log.info( devices_id_list )
+
+        # ONOS displays the hosts in hex format unlike mininet
+        # which does in decimal format
+        # So take care while adding intents
+
+        """
+        main.step(
+            "Add host intents for mn hosts
+            (h8-h18,h9-h19,h10-h20,h11-h21,h12-h22,h13-h23,h14-h24,
+            h15-h25,h16-h26,h17-h27)" )
+        hth_intent_result = main.ONOScli1.add_host_intent(
+                            "00:00:00:00:00:08/-1", "00:00:00:00:00:12/-1" )
+        hth_intent_result = main.ONOScli1.add_host_intent(
+                            "00:00:00:00:00:09/-1", "00:00:00:00:00:13/-1" )
+        hth_intent_result = main.ONOScli1.add_host_intent(
+                            "00:00:00:00:00:0A/-1", "00:00:00:00:00:14/-1" )
+        hth_intent_result = main.ONOScli1.add_host_intent(
+                            "00:00:00:00:00:0B/-1", "00:00:00:00:00:15/-1" )
+        hth_intent_result = main.ONOScli1.add_host_intent(
+                            "00:00:00:00:00:0C/-1", "00:00:00:00:00:16/-1" )
+        hth_intent_result = main.ONOScli1.add_host_intent(
+                            "00:00:00:00:00:0D/-1", "00:00:00:00:00:17/-1" )
+        hth_intent_result = main.ONOScli1.add_host_intent(
+                            "00:00:00:00:00:0E/-1", "00:00:00:00:00:18/-1" )
+        hth_intent_result = main.ONOScli1.add_host_intent(
+                            "00:00:00:00:00:0F/-1", "00:00:00:00:00:19/-1" )
+        hth_intent_result = main.ONOScli1.add_host_intent(
+                            "00:00:00:00:00:10/-1", "00:00:00:00:00:1A/-1" )
+        hth_intent_result = main.ONOScli1.add_host_intent(
+                            "00:00:00:00:00:11/-1", "00:00:00:00:00:1B/-1" )
+        """
+        for i in range( 8, 18 ):
+            main.log.info(
+                "Adding host intent between h" + str( i ) +
+                " and h" + str( i + 10 ) )
+            host1 = "00:00:00:00:00:" + \
+                    str( hex( i )[ 2: ] ).zfill( 2 ).upper()
+            host2 = "00:00:00:00:00:" + \
+                    str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
+            # NOTE: get host can return None
+            # TODO: handle this
+            host1_id = main.ONOScli1.get_host( host1 )[ 'id' ]
+            host2_id = main.ONOScli1.get_host( host2 )[ 'id' ]
+            tmp_result = main.ONOScli1.add_host_intent( host1_id, host2_id )
+
+        flowHandle = main.ONOScli1.flows()
+        main.log.info( "flows:" + flowHandle )
+
+        count = 1
+        i = 8
+        Ping_Result = main.TRUE
+        while i < 18:
+            main.log.info(
+                "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
+            ping = main.Mininet1.pingHost(
+                src="h" + str( i ), target="h" + str( i + 10 ) )
+            if ping == main.FALSE and count < 5:
+                count += 1
+                # i = 8
+                Ping_Result = main.FALSE
+                main.log.report( "Ping between h" +
+                                 str( i ) +
+                                 " and h" +
+                                 str( i +
+                                      10 ) +
+                                 " failed. Making attempt number " +
+                                 str( count ) +
+                                 " in 2 seconds" )
+                time.sleep( 2 )
+            elif ping == main.FALSE:
+                main.log.report( "All ping attempts between h" +
+                                 str( i ) +
+                                 " and h" +
+                                 str( i +
+                                      10 ) +
+                                 "have failed" )
+                i = 19
+                Ping_Result = main.FALSE
+            elif ping == main.TRUE:
+                main.log.info( "Ping test between h" +
+                               str( i ) +
+                               " and h" +
+                               str( i +
+                                    10 ) +
+                               "passed!" )
+                i += 1
+                Ping_Result = main.TRUE
+            else:
+                main.log.info( "Unknown error" )
+                Ping_Result = main.ERROR
+        if Ping_Result == main.FALSE:
+            main.log.report(
+                "Host intents have not ben installed correctly. Cleaning up" )
+            # main.cleanup()
+            # main.exit()
+        if Ping_Result == main.TRUE:
+            main.log.report( "Host intents have been installed correctly" )
+
+        case6_result = Ping_Result
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case6_result,
+            onpass="Host intent addition and Pingall Test successful",
+            onfail="Host intent addition and Pingall Test NOT successful" )
+
+    def CASE7( self, main ):
+
+        from sts.topology.teston_topology import TestONTopology
+        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
+
+        link_sleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
+
+        main.log.report(
+            "This testscase is killing a link to ensure that \
+            link discovery is consistent" )
+        main.log.report( "__________________________________" )
+        main.case(
+            "Killing a link to ensure that \
+            Link Discovery is Working Properly" )
+        main.step( "Start continuous pings" )
+
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source1' ],
+            target=main.params[ 'PING' ][ 'target1' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source2' ],
+            target=main.params[ 'PING' ][ 'target2' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source3' ],
+            target=main.params[ 'PING' ][ 'target3' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source4' ],
+            target=main.params[ 'PING' ][ 'target4' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source5' ],
+            target=main.params[ 'PING' ][ 'target5' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source6' ],
+            target=main.params[ 'PING' ][ 'target6' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source7' ],
+            target=main.params[ 'PING' ][ 'target7' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source8' ],
+            target=main.params[ 'PING' ][ 'target8' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source9' ],
+            target=main.params[ 'PING' ][ 'target9' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source10' ],
+            target=main.params[ 'PING' ][ 'target10' ],
+            pingTime=500 )
+
+        main.step( "Determine the current number of switches and links" )
+        topology_output = main.ONOScli1.topology()
+        topology_result = main.ONOSbench.get_topology( topology_output )
+        activeSwitches = topology_result[ 'devices' ]
+        links = topology_result[ 'links' ]
+        main.log.info(
+            "Currently there are %s switches and %s links" %
+            ( str( activeSwitches ), str( links ) ) )
+
+        main.step( "Kill Link between s3 and s28" )
+        main.Mininet1.link( END1="s3", END2="s28", OPTION="down" )
+        time.sleep( link_sleep )
+        topology_output = main.ONOScli2.topology()
+        Link_Down = main.ONOSbench.check_status(
+            topology_output, activeSwitches, str(
+                int( links ) - 2 ) )
+        if Link_Down == main.TRUE:
+            main.log.report( "Link Down discovered properly" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=Link_Down,
+            onpass="Link Down discovered properly",
+            onfail="Link down was not discovered in " +
+            str( link_sleep ) +
+            " seconds" )
+
+        main.step( "Bring link between s3 and s28 back up" )
+        Link_Up = main.Mininet1.link( END1="s3", END2="s28", OPTION="up" )
+        time.sleep( link_sleep )
+        topology_output = main.ONOScli2.topology()
+        Link_Up = main.ONOSbench.check_status(
+            topology_output,
+            activeSwitches,
+            str( links ) )
+        if Link_Up == main.TRUE:
+            main.log.report( "Link up discovered properly" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=Link_Up,
+            onpass="Link up discovered properly",
+            onfail="Link up was not discovered in " +
+            str( link_sleep ) +
+            " seconds" )
+
+        main.step( "Compare ONOS Topology to MN Topology" )
+        main.case(
+            "Testing Mininet topology with the topology of \
+            multi instances ONOS" )
+        main.step( "Collecting topology information from ONOS" )
+        devices1 = main.ONOScli1.devices()
+        devices2 = main.ONOScli2.devices()
+        devices3 = main.ONOScli3.devices()
+        hosts1 = main.ONOScli1.hosts()
+        hosts2 = main.ONOScli2.hosts()
+        hosts3 = main.ONOScli3.hosts()
+        ports1 = main.ONOScli1.ports()
+        ports2 = main.ONOScli2.ports()
+        ports3 = main.ONOScli3.ports()
+        links1 = main.ONOScli1.links()
+        links2 = main.ONOScli2.links()
+        links3 = main.ONOScli3.links()
+
+        main.step( "Start continuous pings" )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source1' ],
+            target=main.params[ 'PING' ][ 'target1' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source2' ],
+            target=main.params[ 'PING' ][ 'target2' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source3' ],
+            target=main.params[ 'PING' ][ 'target3' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source4' ],
+            target=main.params[ 'PING' ][ 'target4' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source5' ],
+            target=main.params[ 'PING' ][ 'target5' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source6' ],
+            target=main.params[ 'PING' ][ 'target6' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source7' ],
+            target=main.params[ 'PING' ][ 'target7' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source8' ],
+            target=main.params[ 'PING' ][ 'target8' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source9' ],
+            target=main.params[ 'PING' ][ 'target9' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source10' ],
+            target=main.params[ 'PING' ][ 'target10' ],
+            pingTime=500 )
+
+        main.step( "Create TestONTopology object" )
+        global ctrls
+        ctrls = []
+        count = 1
+        while True:
+            temp = ()
+            if ( 'ip' + str( count ) ) in main.params[ 'CTRL' ]:
+                temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
+                temp = temp + ( "ONOS" + str( count ), )
+                temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
+                temp = temp + \
+                    ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
+                ctrls.append( temp )
+                count = count + 1
+            else:
+                break
+        global MNTopo
+        Topo = TestONTopology(
+            main.Mininet1,
+            ctrls )  # can also add Intent API info for intent operations
+        MNTopo = Topo
+
+        Topology_Check = main.TRUE
+        main.step( "Compare ONOS Topology to MN Topology" )
+
+        switches_results1 = main.Mininet1.compare_switches(
+            MNTopo,
+            json.loads( devices1 ) )
+        print "switches_Result1 = ", switches_results1
+        utilities.assert_equals( expect=main.TRUE, actual=switches_results1,
+                                 onpass="ONOS1 Switches view is correct",
+                                 onfail="ONOS1 Switches view is incorrect" )
+
+        switches_results2 = main.Mininet1.compare_switches(
+            MNTopo,
+            json.loads( devices2 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=switches_results2,
+                                 onpass="ONOS2 Switches view is correct",
+                                 onfail="ONOS2 Switches view is incorrect" )
+
+        switches_results3 = main.Mininet1.compare_switches(
+            MNTopo,
+            json.loads( devices3 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=switches_results3,
+                                 onpass="ONOS3 Switches view is correct",
+                                 onfail="ONOS3 Switches view is incorrect" )
+
+        """
+        ports_results1 =  main.Mininet1.compare_ports(
+                            MNTopo, json.loads( ports1 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=ports_results1,
+                onpass="ONOS1 Ports view is correct",
+                onfail="ONOS1 Ports view is incorrect" )
+
+        ports_results2 =  main.Mininet1.compare_ports(
+                            MNTopo, json.loads( ports2 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=ports_results2,
+                onpass="ONOS2 Ports view is correct",
+                onfail="ONOS2 Ports view is incorrect" )
+
+        ports_results3 =  main.Mininet1.compare_ports(
+                            MNTopo, json.loads( ports3 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=ports_results3,
+                onpass="ONOS3 Ports view is correct",
+                onfail="ONOS3 Ports view is incorrect" )
+        """
+        links_results1 = main.Mininet1.compare_links(
+            MNTopo,
+            json.loads( links1 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=links_results1,
+                                 onpass="ONOS1 Links view is correct",
+                                 onfail="ONOS1 Links view is incorrect" )
+
+        links_results2 = main.Mininet1.compare_links(
+            MNTopo,
+            json.loads( links2 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=links_results2,
+                                 onpass="ONOS2 Links view is correct",
+                                 onfail="ONOS2 Links view is incorrect" )
+
+        links_results3 = main.Mininet1.compare_links(
+            MNTopo,
+            json.loads( links3 ) )
+        utilities.assert_equals( expect=main.TRUE, actual=links_results3,
+                                 onpass="ONOS2 Links view is correct",
+                                 onfail="ONOS2 Links view is incorrect" )
+
+        # topo_result = switches_results1 and switches_results2 and \
+        # switches_results3  and ports_results1 and ports_results2 and \
+        # ports_results3 and links_results1 and links_results2 and \
+        # links_results3
+
+        topo_result = switches_results1 and switches_results2 \
+                        and switches_results3 and links_results1 and \
+                        links_results2 and links_results3
+
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=topo_result and Link_Up and Link_Down,
+            onpass="Topology Check Test successful",
+            onfail="Topology Check Test NOT successful" )
+
+    def CASE8( self ):
+        """
+        Intent removal
+        """
+        main.log.report(
+            "This testcase removes host any previously added intents" )
+        main.log.report( "__________________________________" )
+        main.log.info( "Removing any previously installed intents" )
+        main.case( "Removing intents" )
+        main.step( "Obtain the intent id's" )
+        intent_result = main.ONOScli1.intents( json_format=False )
+
+        intent_linewise = intent_result.split( "\n" )
+        intentList = []
+        for line in intent_linewise:
+            if line.startswith( "id=" ):
+                intentList.append( line )
+
+        intentids = []
+        for line in intentList:
+            intentids.append( line.split( "," )[ 0 ].split( "=" )[ 1 ] )
+        for id in intentids:
+            main.log.info( "id = " + id )
+
+        main.step(
+            "Iterate through the intentids list and remove each intent" )
+        for id in intentids:
+            main.ONOScli1.remove_intent( intent_id=id )
+
+        intent_result = main.ONOScli1.intents( json_format=False )
+        main.log.info( "intent_result = " + intent_result )
+        case8_result = main.TRUE
+
+        i = 8
+        Ping_Result = main.TRUE
+        while i < 18:
+            main.log.info(
+                "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
+            ping = main.Mininet1.pingHost(
+                src="h" + str( i ), target="h" + str( i + 10 ) )
+            if ping == main.TRUE:
+                i = 19
+                Ping_Result = main.TRUE
+            elif ping == main.FALSE:
+                i += 1
+                Ping_Result = main.FALSE
+            else:
+                main.log.info( "Unknown error" )
+                Ping_Result = main.ERROR
+
+        # Note: If the ping result failed, that means the intents have been
+        # withdrawn correctly.
+        if Ping_Result == main.TRUE:
+            main.log.report( "Host intents have not been withdrawn correctly" )
+            # main.cleanup()
+            # main.exit()
+        if Ping_Result == main.FALSE:
+            main.log.report( "Host intents have been withdrawn correctly" )
+
+        case8_result = case8_result and Ping_Result
+
+        if case8_result == main.FALSE:
+            main.log.report( "Intent removal successful" )
+        else:
+            main.log.report( "Intent removal failed" )
+
+        utilities.assert_equals( expect=main.FALSE, actual=case8_result,
+                                 onpass="Intent removal test failed",
+                                 onfail="Intent removal test successful" )
+
+    def CASE9( self ):
+        """
+        This test case adds point intents. Make sure you run test case 8
+        which is host intent removal before executing this test case.
+        Else the host intents flows will persist on switches and the ping
+         would work even if there is some issue with the point intent's flows
+        """
+        main.log.report(
+            "This testcase adds point intents and then does pingall" )
+        main.log.report( "__________________________________" )
+        main.log.info( "Adding point intents" )
+        main.case(
+                    "Adding bidirectional point for mn hosts \
+                    h8-h18 h9-h19 h10-h20 h11-h21 h12-h22 h13-h23 \
+                    h14-h24 h15-h25 h16-h26 h17-h27" )
+
+        main.step( "Add point-to-point intents for mininet hosts \
+                   h8 and h18 or ONOS hosts h8 and h12" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003008/1",
+            "of:0000000000006018/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006018/1",
+            "of:0000000000003008/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        main.step( "Add point-to-point intents for mininet hosts \
+                    h9 and h19 or ONOS hosts h9 and h13" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003009/1",
+            "of:0000000000006019/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006019/1",
+            "of:0000000000003009/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        main.step( "Add point-to-point intents for mininet hosts \
+                    h10 and h20 or ONOS hosts hA and h14" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003010/1",
+            "of:0000000000006020/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006020/1",
+            "of:0000000000003010/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        main.step( "Add point-to-point intents for mininet hosts \
+                    h11 and h21 or ONOS hosts hB and h15" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003011/1",
+            "of:0000000000006021/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006021/1",
+            "of:0000000000003011/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        main.step( "Add point-to-point intents for mininet hosts \
+                    h12 and h22 or ONOS hosts hC and h16" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003012/1",
+            "of:0000000000006022/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006022/1",
+            "of:0000000000003012/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        main.step( "Add point-to-point intents for mininet hosts \
+                    h13 and h23 or ONOS hosts hD and h17" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003013/1",
+            "of:0000000000006023/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006023/1",
+            "of:0000000000003013/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        main.step( "Add point-to-point intents for mininet hosts \
+                    h14 and h24 or ONOS hosts hE and h18" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003014/1",
+            "of:0000000000006024/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006024/1",
+            "of:0000000000003014/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        main.step( "Add point-to-point intents for mininet hosts \
+                    h15 and h25 or ONOS hosts hF and h19" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003015/1",
+            "of:0000000000006025/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006025/1",
+            "of:0000000000003015/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        main.step( "Add point-to-point intents for mininet hosts \
+                    h16 and h26 or ONOS hosts h10 and h1A" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003016/1",
+            "of:0000000000006026/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006026/1",
+            "of:0000000000003016/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        main.step( "Add point-to-point intents for mininet hosts \
+                    h17 and h27 or ONOS hosts h11 and h1B" )
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000003017/1",
+            "of:0000000000006027/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "of:0000000000006027/1",
+            "of:0000000000003017/1" )
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOScli1.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( get_intent_result )
+
+        print("___________________________________________________________" )
+
+        flowHandle = main.ONOScli1.flows()
+        main.log.info( "flows :" + flowHandle )
+
+        count = 1
+        i = 8
+        Ping_Result = main.TRUE
+        while i < 18:
+            main.log.info(
+                "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
+            ping = main.Mininet1.pingHost(
+                src="h" + str( i ), target="h" + str( i + 10 ) )
+            if ping == main.FALSE and count < 5:
+                count += 1
+                # i = 8
+                Ping_Result = main.FALSE
+                main.log.report( "Ping between h" +
+                                 str( i ) +
+                                 " and h" +
+                                 str( i +
+                                      10 ) +
+                                 " failed. Making attempt number " +
+                                 str( count ) +
+                                 " in 2 seconds" )
+                time.sleep( 2 )
+            elif ping == main.FALSE:
+                main.log.report( "All ping attempts between h" +
+                                 str( i ) +
+                                 " and h" +
+                                 str( i +
+                                      10 ) +
+                                 "have failed" )
+                i = 19
+                Ping_Result = main.FALSE
+            elif ping == main.TRUE:
+                main.log.info( "Ping test between h" +
+                               str( i ) +
+                               " and h" +
+                               str( i +
+                                    10 ) +
+                               "passed!" )
+                i += 1
+                Ping_Result = main.TRUE
+            else:
+                main.log.info( "Unknown error" )
+                Ping_Result = main.ERROR
+
+        if Ping_Result == main.FALSE:
+            main.log.report(
+                "Ping all test after Point intents addition failed. \
+                Cleaning up" )
+            # main.cleanup()
+            # main.exit()
+        if Ping_Result == main.TRUE:
+            main.log.report(
+                "Ping all test after Point intents addition successful" )
+
+        case8_result = Ping_Result
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case8_result,
+            onpass="Ping all test after Point intents addition successful",
+            onfail="Ping all test after Point intents addition failed" )
+
+    def CASE31( self ):
+        """
+            This test case adds point intent related to SDN-IP
+            matching on ICMP ( ethertype=IPV4, ipProto=1 )
+        """
+        import json
+
+        main.log.report(
+            '''This test case adds point intent related to SDN-IP
+            matching on ICMP''' )
+        main.case(
+            '''Adding bidirectional point intent related to SDN-IP
+            matching on ICMP''' )
+        main.step( "Adding bidirectional point intent" )
+        # add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32
+        # --ethType=IPV4 --ipProto=1  of:0000000000003008/1
+        # of:0000000000006018/1
+
+        hosts_json = json.loads( main.ONOScli1.hosts() )
+        for i in range( 8, 11 ):
+            main.log.info(
+                "Adding point intent between h" + str( i ) +
+                " and h" + str( i + 10 ) )
+            host1 = "00:00:00:00:00:" + \
+                str( hex( i )[ 2: ] ).zfill( 2 ).upper()
+            host2 = "00:00:00:00:00:" + \
+                str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
+            host1_id = main.ONOScli1.get_host( host1 )[ 'id' ]
+            host2_id = main.ONOScli1.get_host( host2 )[ 'id' ]
+            for host in hosts_json:
+                if host[ 'id' ] == host1_id:
+                    ip1 = host[ 'ips' ][ 0 ]
+                    ip1 = str( ip1 + "/32" )
+                    device1 = host[ 'location' ][ 'device' ]
+                    device1 = str( device1 + "/1" )
+                elif host[ 'id' ] == host2_id:
+                    ip2 = str( host[ 'ips' ][ 0 ] ) + "/32"
+                    device2 = host[ 'location' ][ "device" ]
+                    device2 = str( device2 + "/1" )
+
+            p_intent_result1 = main.ONOScli1.add_point_intent(
+                ingress_device=device1,
+                egress_device=device2,
+                ipSrc=ip1,
+                ipDst=ip2,
+                ethType=main.params[ 'SDNIP' ][ 'ethType' ],
+                ipProto=main.params[ 'SDNIP' ][ 'icmpProto' ] )
+
+            get_intent_result = main.ONOScli1.intents( json_format=False )
+            main.log.info( get_intent_result )
+
+            p_intent_result2 = main.ONOScli1.add_point_intent(
+                ingress_device=device2,
+                egress_device=device1,
+                ipSrc=ip2,
+                ipDst=ip1,
+                ethType=main.params[ 'SDNIP' ][ 'ethType' ],
+                ipProto=main.params[ 'SDNIP' ][ 'icmpProto' ] )
+
+            get_intent_result = main.ONOScli1.intents( json_format=False )
+            main.log.info( get_intent_result )
+            if ( p_intent_result1 and p_intent_result2 ) == main.TRUE:
+                # get_intent_result = main.ONOScli1.intents()
+                # main.log.info( get_intent_result )
+                main.log.info(
+                    '''Point intent related to SDN-IP matching on ICMP install
+                    successful''' )
+
+        time.sleep( 15 )
+        get_intent_result = main.ONOScli1.intents( json_format=False )
+        main.log.info( "intents = " + get_intent_result )
+        get_flows_result = main.ONOScli1.flows()
+        main.log.info( "flows = " + get_flows_result )
+
+        count = 1
+        i = 8
+        Ping_Result = main.TRUE
+        while i < 11:
+            main.log.info(
+                "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
+            ping = main.Mininet1.pingHost(
+                src="h" + str( i ), target="h" + str( i + 10 ) )
+            if ping == main.FALSE and count < 3:
+                count += 1
+                # i = 8
+                Ping_Result = main.FALSE
+                main.log.report( "Ping between h" +
+                                 str( i ) +
+                                 " and h" +
+                                 str( i +
+                                      10 ) +
+                                 " failed. Making attempt number " +
+                                 str( count ) +
+                                 " in 2 seconds" )
+                time.sleep( 2 )
+            elif ping == main.FALSE:
+                main.log.report( "All ping attempts between h" +
+                                 str( i ) +
+                                 " and h" +
+                                 str( i +
+                                      10 ) +
+                                 "have failed" )
+                i = 19
+                Ping_Result = main.FALSE
+            elif ping == main.TRUE:
+                main.log.info( "Ping test between h" +
+                               str( i ) +
+                               " and h" +
+                               str( i +
+                                    10 ) +
+                               "passed!" )
+                i += 1
+                Ping_Result = main.TRUE
+            else:
+                main.log.info( "Unknown error" )
+                Ping_Result = main.ERROR
+        if Ping_Result == main.FALSE:
+            main.log.report(
+                "Ping test after Point intents related to SDN-IP \
+                matching on ICMP failed." )
+            # main.cleanup()
+            # main.exit()
+        if Ping_Result == main.TRUE:
+            main.log.report(
+                "Ping all test after Point intents related to SDN-IP \
+                matching on ICMP successful" )
+
+        case31_result = Ping_Result and p_intent_result1 and p_intent_result2
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case31_result,
+            onpass="Point intent related to SDN-IP matching on ICMP and \
+                    ping test successful",
+            onfail="Point intent related to SDN-IP matching on ICMP and \
+                    ping test failed" )
+
+    def CASE32( self ):
+        '''
+            This test case adds point intent related to SDN-IP matching on TCP
+            ( ethertype=IPV4, ipProto=6, DefaultPort for iperf=5001 )
+            Note: Although BGP port is 179, we are using 5001 because iperf is
+            used for verifying and iperf's default port is 5001
+        '''
+        import json
+
+        main.log.report( '''This test case adds point intent related
+                         to SDN-IP matching on TCP''' )
+        main.case( '''Adding bidirectional point intent related to SDN-IP
+                    matching on TCP''' )
+        main.step( "Adding bidirectional point intent" )
+
+        """
+        add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32
+                    --ethType=IPV4 --ipProto=6 --tcpDst=5001
+                    of:0000000000003008/1 of:0000000000006018/1
+
+        add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32
+                    --ethType=IPV4 --ipProto=6 --tcpDst=5001
+                    of:0000000000006018/1 of:0000000000003008/1
+
+        add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32
+                    --ethType=IPV4 --ipProto=6 --tcpSrc=5001
+                    of:0000000000003008/1 of:0000000000006018/1
+
+        add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32
+                    --ethType=IPV4 --ipProto=6 --tcpSrc=5001
+                    of:0000000000006018/1 of:0000000000003008/1
+
+        """
+        hosts_json = json.loads( main.ONOScli1.hosts() )
+        for i in range( 8, 9 ):
+            main.log.info(
+                "Adding point intent between h" + str( i ) +
+                " and h" + str( i + 10 ) )
+            host1 = "00:00:00:00:00:" + \
+                    str( hex( i )[ 2: ] ).zfill( 2 ).upper()
+            host2 = "00:00:00:00:00:" + \
+                    str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
+            host1_id = main.ONOScli1.get_host( host1 )[ 'id' ]
+            host2_id = main.ONOScli1.get_host( host2 )[ 'id' ]
+            for host in hosts_json:
+                if host[ 'id' ] == host1_id:
+                    ip1 = host[ 'ips' ][ 0 ]
+                    ip1 = str( ip1 + "/32" )
+                    device1 = host[ 'location' ][ 'device' ]
+                    device1 = str( device1 + "/1" )
+                elif host[ 'id' ] == host2_id:
+                    ip2 = str( host[ 'ips' ][ 0 ] ) + "/32"
+                    device2 = host[ 'location' ][ "device" ]
+                    device2 = str( device2 + "/1" )
+
+            p_intent_result1 = main.ONOScli1.add_point_intent(
+                ingress_device=device1,
+                egress_device=device2,
+                ipSrc=ip1,
+                ipDst=ip2,
+                ethType=main.params[ 'SDNIP' ][ 'ethType' ],
+                ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
+                tcpDst=main.params[ 'SDNIP' ][ 'dstPort' ] )
+            p_intent_result2 = main.ONOScli1.add_point_intent(
+                ingress_device=device2,
+                egress_device=device1,
+                ipSrc=ip2,
+                ipDst=ip1,
+                ethType=main.params[ 'SDNIP' ][ 'ethType' ],
+                ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
+                tcpDst=main.params[ 'SDNIP' ][ 'dstPort' ] )
+
+            p_intent_result3 = main.ONOScli1.add_point_intent(
+                ingress_device=device1,
+                egress_device=device2,
+                ipSrc=ip1,
+                ipDst=ip2,
+                ethType=main.params[ 'SDNIP' ][ 'ethType' ],
+                ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
+                tcpSrc=main.params[ 'SDNIP' ][ 'srcPort' ] )
+            p_intent_result4 = main.ONOScli1.add_point_intent(
+                ingress_device=device2,
+                egress_device=device1,
+                ipSrc=ip2,
+                ipDst=ip1,
+                ethType=main.params[ 'SDNIP' ][ 'ethType' ],
+                ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
+                tcpSrc=main.params[ 'SDNIP' ][ 'srcPort' ] )
+
+            p_intent_result = p_intent_result1 and p_intent_result2 and \
+                                p_intent_result3 and p_intent_result4
+            if p_intent_result == main.TRUE:
+                get_intent_result = main.ONOScli1.intents( json_format=False )
+                main.log.info( get_intent_result )
+                main.log.info( '''Point intent related to SDN-IP matching
+                                on TCP install successful''' )
+
+        iperf_result = main.Mininet1.iperf( 'h8', 'h18' )
+        if iperf_result == main.TRUE:
+            main.log.report( "iperf test successful" )
+        else:
+            main.log.report( "iperf test failed" )
+
+        case32_result = p_intent_result and iperf_result
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case32_result,
+            onpass="Ping all test after Point intents addition related to \
+                    SDN-IP on TCP match successful",
+            onfail="Ping all test after Point intents addition related to \
+                    SDN-IP on TCP match failed" )
+
+    def CASE33( self ):
+        """
+            This test case adds multipoint to singlepoint  intent related
+            to SDN-IP matching on destination ip and the action is to
+            rewrite the mac address.
+            Here the mac address to be rewritten is the mac address
+            of the egress device
+        """
+        import json
+        import time
+
+        main.log.report( "This test case adds multipoint to singlepoint intent\
+                         related to SDN-IP matching on destination ip and\
+                         rewrite mac address action" )
+        main.case( "Adding multipoint to singlepoint intent related to SDN-IP\
+                    matching on destination ip" )
+        main.step( "Adding bidirectional multipoint to singlepoint intent" )
+        """
+        add-multi-to-single-intent --ipDst=10.0.3.0/24
+            --setEthDst=00:00:00:00:00:12
+            of:0000000000003008/1 0000000000003009/1 of:0000000000006018/1
+
+        add-multi-to-single-intent --ipDst=10.0.1.0/24
+            --setEthDst=00:00:00:00:00:08
+            of:0000000000006018/1 0000000000003009/1 of:0000000000003008/1
+        """
+        main.case( "Installing multipoint to single point intent with\
+                   rewrite mac address" )
+        main.step( "Uninstalling proxy arp app" )
+        # Unistall onos-app-proxyarp app to disable reactive forwarding
+        appUninstall_result1 = main.ONOScli1.feature_uninstall(
+            "onos-app-proxyarp" )
+        appUninstall_result2 = main.ONOScli2.feature_uninstall(
+            "onos-app-proxyarp" )
+        appUninstall_result3 = main.ONOScli3.feature_uninstall(
+            "onos-app-proxyarp" )
+        main.log.info( "onos-app-proxyarp uninstalled" )
+
+        main.step( "Changing ipaddress of hosts h8,h9 and h18" )
+        main.Mininet1.changeIP(
+            host='h8',
+            intf='h8-eth0',
+            newIP='10.0.1.1',
+            newNetmask='255.255.255.0' )
+        main.Mininet1.changeIP(
+            host='h9',
+            intf='h9-eth0',
+            newIP='10.0.2.1',
+            newNetmask='255.255.255.0' )
+        main.Mininet1.changeIP(
+            host='h10',
+            intf='h10-eth0',
+            newIP='10.0.3.1',
+            newNetmask='255.255.255.0' )
+
+        main.step( "Changing default gateway of hosts h8,h9 and h18" )
+        main.Mininet1.changeDefaultGateway( host='h8', newGW='10.0.1.254' )
+        main.Mininet1.changeDefaultGateway( host='h9', newGW='10.0.2.254' )
+        main.Mininet1.changeDefaultGateway( host='h10', newGW='10.0.3.254' )
+
+        main.step( "Assigning random mac address to the default gateways\
+                    since proxyarp app is uninstalled" )
+        main.Mininet1.addStaticMACAddress(
+            host='h8',
+            GW='10.0.1.254',
+            macaddr='00:00:00:00:11:11' )
+        main.Mininet1.addStaticMACAddress(
+            host='h9',
+            GW='10.0.2.254',
+            macaddr='00:00:00:00:22:22' )
+        main.Mininet1.addStaticMACAddress(
+            host='h10',
+            GW='10.0.3.254',
+            macaddr='00:00:00:00:33:33' )
+
+        main.step( "Verify static gateway and MAC address assignment" )
+        main.Mininet1.verifyStaticGWandMAC( host='h8' )
+        main.Mininet1.verifyStaticGWandMAC( host='h9' )
+        main.Mininet1.verifyStaticGWandMAC( host='h10' )
+
+        main.step( "Adding multipoint to singlepoint intent" )
+        p_intent_result1 = main.ONOScli1.add_multipoint_to_singlepoint_intent(
+            ingress_device1=main.params[ 'MULTIPOINT_INTENT' ][ 'device1' ],
+            ingress_device2=main.params[ 'MULTIPOINT_INTENT' ][ 'device2' ],
+            egress_device=main.params[ 'MULTIPOINT_INTENT' ][ 'device3' ],
+            ipDst=main.params[ 'MULTIPOINT_INTENT' ][ 'ip1' ],
+            setEthDst=main.params[ 'MULTIPOINT_INTENT' ][ 'mac1' ] )
+
+        p_intent_result2 = main.ONOScli1.add_multipoint_to_singlepoint_intent(
+            ingress_device1=main.params[ 'MULTIPOINT_INTENT' ][ 'device3' ],
+            ingress_device2=main.params[ 'MULTIPOINT_INTENT' ][ 'device2' ],
+            egress_device=main.params[ 'MULTIPOINT_INTENT' ][ 'device1' ],
+            ipDst=main.params[ 'MULTIPOINT_INTENT' ][ 'ip2' ],
+            setEthDst=main.params[ 'MULTIPOINT_INTENT' ][ 'mac2' ] )
+
+        get_intent_result = main.ONOScli1.intents( json_format=False )
+        main.log.info( "intents = " + get_intent_result )
+
+        time.sleep( 10 )
+        get_flows_result = main.ONOScli1.flows( json_format=False )
+        main.log.info( "flows = " + get_flows_result )
+
+        count = 1
+        i = 8
+        Ping_Result = main.TRUE
+
+        main.log.info( "\n\nh" + str( i ) + " is Pinging h" + str( i + 2 ) )
+        ping = main.Mininet1.pingHost(
+            src="h" + str( i ), target="h" + str( i + 2 ) )
+        if ping == main.FALSE and count < 3:
+            count += 1
+            Ping_Result = main.FALSE
+            main.log.report( "Ping between h" +
+                             str( i ) +
+                             " and h" +
+                             str( i +
+                                  2 ) +
+                             " failed. Making attempt number " +
+                             str( count ) +
+                             " in 2 seconds" )
+            time.sleep( 2 )
+        elif ping == main.FALSE:
+            main.log.report( "All ping attempts between h" +
+                             str( i ) +
+                             " and h" +
+                             str( i +
+                                  10 ) +
+                             "have failed" )
+            Ping_Result = main.FALSE
+        elif ping == main.TRUE:
+            main.log.info( "Ping test between h" +
+                           str( i ) +
+                           " and h" +
+                           str( i +
+                                2 ) +
+                           "passed!" )
+            Ping_Result = main.TRUE
+        else:
+            main.log.info( "Unknown error" )
+            Ping_Result = main.ERROR
+
+        if Ping_Result == main.FALSE:
+            main.log.report( "Ping test failed." )
+            # main.cleanup()
+            # main.exit()
+        if Ping_Result == main.TRUE:
+            main.log.report( "Ping all successful" )
+
+        p_intent_result = p_intent_result1 and p_intent_result2
+        if p_intent_result == main.TRUE:
+            main.log.info( "Multi point intent with rewrite mac address\
+                            installation successful" )
+        else:
+            main.log.info( "Multi point intent with rewrite mac address\
+                            installation failed" )
+
+        case33_result = p_intent_result and Ping_Result
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case33_result,
+            onpass="Ping all test after multipoint to single point intent \
+                    addition with rewrite mac address successful",
+            onfail="Ping all test after multipoint to single point intent \
+                    addition with rewrite mac address failed" )
+
diff --git a/TestON/tests/MultiProd13/MultiProd13.params b/TestON/tests/MultiProd13/MultiProd13.params
index 8bf1600..6e5c85e 100755
--- a/TestON/tests/MultiProd13/MultiProd13.params
+++ b/TestON/tests/MultiProd13/MultiProd13.params
@@ -1,6 +1,6 @@
 <PARAMS>
     
-    <testcases>1,4,10,5,6,7,8,6,8,9,31,32,8,33</testcases>    
+    <testcases>1,4,10,5,6,7,8,6,8,9,8,31,32,8,33,8</testcases>    
 
     #Environment variables
     <ENV>
diff --git a/TestON/tests/MultiProd13/MultiProd13.py b/TestON/tests/MultiProd13/MultiProd13.py
index f26cd5c..d3ed757 100644
--- a/TestON/tests/MultiProd13/MultiProd13.py
+++ b/TestON/tests/MultiProd13/MultiProd13.py
@@ -11,8 +11,7 @@
 
 time.sleep( 1 )
 
-
-class MultiProd13:
+class MultiProd:
 
     def __init__( self ):
         self.default = ''
@@ -29,13 +28,13 @@
         onos-install -f
         onos-wait-for-start
         """
-        cell_name = main.params[ 'ENV' ][ 'cellName' ]
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
-        ONOS1_port = main.params[ 'CTRL' ][ 'port1' ]
-        ONOS2_port = main.params[ 'CTRL' ][ 'port2' ]
-        ONOS3_port = main.params[ 'CTRL' ][ 'port3' ]
+        cellName = main.params[ 'ENV' ][ 'cellName' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS1Port = main.params[ 'CTRL' ][ 'port1' ]
+        ONOS2Port = main.params[ 'CTRL' ][ 'port2' ]
+        ONOS3Port = main.params[ 'CTRL' ][ 'port3' ]
 
         main.case( "Setting up test environment" )
         main.log.report(
@@ -43,190 +42,193 @@
         main.log.report( "__________________________________" )
 
         main.step( "Applying cell variable to environment" )
-        cell_result1 = main.ONOSbench.set_cell( cell_name )
-        #cell_result2 = main.ONOScli1.set_cell( cell_name )
-        #cell_result3 = main.ONOScli2.set_cell( cell_name )
-        #cell_result4 = main.ONOScli3.set_cell( cell_name )
-        verify_result = main.ONOSbench.verify_cell()
-        cell_result = cell_result1
+        cellResult1 = main.ONOSbench.setCell( cellName )
+        # cellResult2 = main.ONOScli1.setCell( cellName )
+        # cellResult3 = main.ONOScli2.setCell( cellName )
+        # cellResult4 = main.ONOScli3.setCell( cellName )
+        verifyResult = main.ONOSbench.verifyCell()
+        cellResult = cellResult1
 
         main.step( "Removing raft logs before a clen installation of ONOS" )
-        remove_log_Result = main.ONOSbench.onos_remove_raft_logs()
+        removeLogResult = main.ONOSbench.onosRemoveRaftLogs()
 
-        main.step( "Git checkout and pull master and get version" )
-        main.ONOSbench.git_checkout( "master" )
-        git_pull_result = main.ONOSbench.git_pull()
-        print "git_pull_result = ", git_pull_result
-        version_result = main.ONOSbench.get_version( report=True )
+        main.step( "Git checkout, pull and get version" )
+        #main.ONOSbench.gitCheckout( "master" )
+        gitPullResult = main.ONOSbench.gitPull()
+        print "git_pull_result = ", gitPullResult
+        versionResult = main.ONOSbench.getVersion( report=True )
 
-        if git_pull_result == 1:
+        if gitPullResult == 1:
             main.step( "Using mvn clean & install" )
-            clean_install_result = main.ONOSbench.clean_install()
-            #clean_install_result = main.TRUE
+            cleanInstallResult = main.ONOSbench.cleanInstall()
+            # cleanInstallResult = main.TRUE
 
         main.step( "Creating ONOS package" )
-        package_result = main.ONOSbench.onos_package()
+        packageResult = main.ONOSbench.onosPackage()
 
-        #main.step( "Creating a cell" )
-        # cell_create_result = main.ONOSbench.create_cell_file( **************
+        # main.step( "Creating a cell" )
+        # cellCreateResult = main.ONOSbench.createCellFile( **************
         # )
 
         main.step( "Installing ONOS package" )
-        onos1_install_result = main.ONOSbench.onos_install(
+        onos1InstallResult = main.ONOSbench.onosInstall(
             options="-f",
-            node=ONOS1_ip )
-        onos2_install_result = main.ONOSbench.onos_install(
+            node=ONOS1Ip )
+        onos2InstallResult = main.ONOSbench.onosInstall(
             options="-f",
-            node=ONOS2_ip )
-        onos3_install_result = main.ONOSbench.onos_install(
+            node=ONOS2Ip )
+        onos3InstallResult = main.ONOSbench.onosInstall(
             options="-f",
-            node=ONOS3_ip )
-        onos_install_result = onos1_install_result and onos2_install_result and onos3_install_result
-        if onos_install_result == main.TRUE:
+            node=ONOS3Ip )
+        onosInstallResult = onos1InstallResult and onos2InstallResult and\
+                onos3InstallResult
+        if onosInstallResult == main.TRUE:
             main.log.report( "Installing ONOS package successful" )
         else:
             main.log.report( "Installing ONOS package failed" )
 
-        onos1_isup = main.ONOSbench.isup( ONOS1_ip )
-        onos2_isup = main.ONOSbench.isup( ONOS2_ip )
-        onos3_isup = main.ONOSbench.isup( ONOS3_ip )
-        onos_isup = onos1_isup and onos2_isup and onos3_isup
-        if onos_isup == main.TRUE:
+        onos1Isup = main.ONOSbench.isup( ONOS1Ip )
+        onos2Isup = main.ONOSbench.isup( ONOS2Ip )
+        onos3Isup = main.ONOSbench.isup( ONOS3Ip )
+        onosIsup = onos1Isup and onos2Isup and onos3Isup
+        if onosIsup == main.TRUE:
             main.log.report( "ONOS instances are up and ready" )
         else:
             main.log.report( "ONOS instances may not be up" )
 
         main.step( "Starting ONOS service" )
-        start_result = main.TRUE
-        #start_result = main.ONOSbench.onos_start( ONOS1_ip )
-        startcli1 = main.ONOScli1.start_onos_cli( ONOS_ip=ONOS1_ip )
-        startcli2 = main.ONOScli2.start_onos_cli( ONOS_ip=ONOS2_ip )
-        startcli3 = main.ONOScli3.start_onos_cli( ONOS_ip=ONOS3_ip )
+        startResult = main.TRUE
+        # startResult = main.ONOSbench.onosStart( ONOS1Ip )
+        startcli1 = main.ONOScli1.startOnosCli( ONOSIp=ONOS1Ip )
+        startcli2 = main.ONOScli2.startOnosCli( ONOSIp=ONOS2Ip )
+        startcli3 = main.ONOScli3.startOnosCli( ONOSIp=ONOS3Ip )
         print startcli1
         print startcli2
         print startcli3
 
-        case1_result = ( package_result and
-                         cell_result and verify_result and onos_install_result and
-                         onos_isup and start_result )
-        utilities.assert_equals( expect=main.TRUE, actual=case1_result,
-                                 onpass="Test startup successful",
-                                 onfail="Test startup NOT successful" )
+        case1Result = ( packageResult and
+                        cellResult and verifyResult and onosInstallResult and
+                        onosIsup and startResult )
+        utilities.assertEquals( expect=main.TRUE, actual=case1Result,
+                                onpass="Test startup successful",
+                                onfail="Test startup NOT successful" )
 
     def CASE11( self, main ):
         """
         Cleanup sequence:
-        onos-service <node_ip> stop
+        onos-service <nodeIp> stop
         onos-uninstall
 
         TODO: Define rest of cleanup
 
         """
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
 
         main.case( "Cleaning up test environment" )
 
         main.step( "Testing ONOS kill function" )
-        kill_result1 = main.ONOSbench.onos_kill( ONOS1_ip )
-        kill_result2 = main.ONOSbench.onos_kill( ONOS2_ip )
-        kill_result3 = main.ONOSbench.onos_kill( ONOS3_ip )
+        killResult1 = main.ONOSbench.onosKill( ONOS1Ip )
+        killResult2 = main.ONOSbench.onosKill( ONOS2Ip )
+        killResult3 = main.ONOSbench.onosKill( ONOS3Ip )
 
         main.step( "Stopping ONOS service" )
-        stop_result1 = main.ONOSbench.onos_stop( ONOS1_ip )
-        stop_result2 = main.ONOSbench.onos_stop( ONOS2_ip )
-        stop_result3 = main.ONOSbench.onos_stop( ONOS3_ip )
+        stopResult1 = main.ONOSbench.onosStop( ONOS1Ip )
+        stopResult2 = main.ONOSbench.onosStop( ONOS2Ip )
+        stopResult3 = main.ONOSbench.onosStop( ONOS3Ip )
 
         main.step( "Uninstalling ONOS service" )
-        uninstall_result = main.ONOSbench.onos_uninstall()
+        uninstallResult = main.ONOSbench.onosUninstall()
 
     def CASE3( self, main ):
         """
         Test 'onos' command and its functionality in driver
         """
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
 
         main.case( "Testing 'onos' command" )
 
         main.step( "Sending command 'onos -w <onos-ip> system:name'" )
         cmdstr1 = "system:name"
-        cmd_result1 = main.ONOSbench.onos_cli( ONOS1_ip, cmdstr1 )
-        main.log.info( "onos command returned: " + cmd_result1 )
-        cmd_result2 = main.ONOSbench.onos_cli( ONOS2_ip, cmdstr1 )
-        main.log.info( "onos command returned: " + cmd_result2 )
-        cmd_result3 = main.ONOSbench.onos_cli( ONOS3_ip, cmdstr1 )
-        main.log.info( "onos command returned: " + cmd_result3 )
+        cmdResult1 = main.ONOSbench.onosCli( ONOS1Ip, cmdstr1 )
+        main.log.info( "onos command returned: " + cmdResult1 )
+        cmdResult2 = main.ONOSbench.onosCli( ONOS2Ip, cmdstr1 )
+        main.log.info( "onos command returned: " + cmdResult2 )
+        cmdResult3 = main.ONOSbench.onosCli( ONOS3Ip, cmdstr1 )
+        main.log.info( "onos command returned: " + cmdResult3 )
 
         main.step( "Sending command 'onos -w <onos-ip> onos:topology'" )
         cmdstr2 = "onos:topology"
-        cmd_result4 = main.ONOSbench.onos_cli( ONOS1_ip, cmdstr2 )
-        main.log.info( "onos command returned: " + cmd_result4 )
-        cmd_result5 = main.ONOSbench.onos_cli( ONOS2_ip, cmdstr2 )
-        main.log.info( "onos command returned: " + cmd_result5 )
-        cmd_result6 = main.ONOSbench.onos_cli( ONOS6_ip, cmdstr2 )
-        main.log.info( "onos command returned: " + cmd_result6 )
+        cmdResult4 = main.ONOSbench.onosCli( ONOS1Ip, cmdstr2 )
+        main.log.info( "onos command returned: " + cmdResult4 )
+        cmdResult5 = main.ONOSbench.onosCli( ONOS2Ip, cmdstr2 )
+        main.log.info( "onos command returned: " + cmdResult5 )
+        cmdResult6 = main.ONOSbench.onosCli( ONOS6Ip, cmdstr2 )
+        main.log.info( "onos command returned: " + cmdResult6 )
 
     def CASE4( self, main ):
         import re
         import time
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
-        ONOS1_port = main.params[ 'CTRL' ][ 'port1' ]
-        ONOS2_port = main.params[ 'CTRL' ][ 'port2' ]
-        ONOS3_port = main.params[ 'CTRL' ][ 'port3' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS1Port = main.params[ 'CTRL' ][ 'port1' ]
+        ONOS2Port = main.params[ 'CTRL' ][ 'port2' ]
+        ONOS3Port = main.params[ 'CTRL' ][ 'port3' ]
 
         main.log.report(
-            "This testcase is testing the assignment of all the switches to all controllers and discovering the hosts in reactive mode" )
+            "This testcase is testing the assignment of all the switches" +
+            " to all controllers and discovering the hosts in reactive mode" )
         main.log.report( "__________________________________" )
         main.case( "Pingall Test(No intents are added)" )
         main.step( "Assigning switches to controllers" )
         for i in range( 1, 29 ):  # 1 to ( num of switches +1 )
-            main.Mininet1.assign_sw_controller(
+            main.Mininet1.assignSwController(
                 sw=str( i ),
                 count=3,
-                ip1=ONOS1_ip,
-                port1=ONOS1_port,
-                ip2=ONOS2_ip,
-                port2=ONOS2_port,
-                ip3=ONOS3_ip,
-                port3=ONOS3_port )
+                ip1=ONOS1Ip,
+                port1=ONOS1Port,
+                ip2=ONOS2Ip,
+                port2=ONOS2Port,
+                ip3=ONOS3Ip,
+                port3=ONOS3Port )
 
-        switch_mastership = main.TRUE
+        switchMastership = main.TRUE
         for i in range( 1, 29 ):
-            response = main.Mininet1.get_sw_controller( "s" + str( i ) )
+            response = main.Mininet1.getSwController( "s" + str( i ) )
             print( "Response is " + str( response ) )
-            if re.search( "tcp:" + ONOS1_ip, response ):
-                switch_mastership = switch_mastership and main.TRUE
+            if re.search( "tcp:" + ONOS1Ip, response ):
+                switchMastership = switchMastership and main.TRUE
             else:
-                switch_mastership = main.FALSE
+                switchMastership = main.FALSE
 
-        if switch_mastership == main.TRUE:
+        if switchMastership == main.TRUE:
             main.log.report( "Controller assignment successfull" )
         else:
             main.log.report( "Controller assignment failed" )
         # REACTIVE FWD test
         main.step( "Pingall" )
-        ping_result = main.FALSE
+        pingResult = main.FALSE
         time1 = time.time()
-        ping_result = main.Mininet1.pingall()
+        pingResult = main.Mininet1.pingall()
         time2 = time.time()
         print "Time for pingall: %2f seconds" % ( time2 - time1 )
 
-        case4_result = switch_mastership and ping_result
-        if ping_result == main.TRUE:
+        case4Result = switchMastership and pingResult
+        if pingResult == main.TRUE:
             main.log.report(
-                "Pingall Test in reactive mode to discover the hosts successful" )
+                "Pingall Test in reactive mode to" +
+                " discover the hosts successful" )
         else:
             main.log.report(
                 "Pingall Test in reactive mode to discover the hosts failed" )
 
-        utilities.assert_equals(
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=case4_result,
+            actual=case4Result,
             onpass="Controller assignment and Pingall Test successful",
             onfail="Controller assignment and Pingall Test NOT successful" )
 
@@ -235,15 +237,17 @@
         from subprocess import Popen, PIPE
         # assumes that sts is already in you PYTHONPATH
         from sts.topology.teston_topology import TestONTopology
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
 
         main.log.report(
-            "This testcase is testing if all ONOS nodes are in topology sync with mininet and its peer ONOS nodes" )
+            "This testcase is testing if all ONOS nodes are in topologyi" +
+            " sync with mininet and its peer ONOS nodes" )
         main.log.report( "__________________________________" )
         main.case(
-            "Testing Mininet topology with the topology of multi instances ONOS" )
+            "Testing Mininet topology with the" +
+            " topology of multi instances ONOS" )
         main.step( "Collecting topology information from ONOS" )
         devices1 = main.ONOScli1.devices()
         devices2 = main.ONOScli2.devices()
@@ -336,85 +340,91 @@
             ctrls )  # can also add Intent API info for intent operations
         MNTopo = Topo
 
-        Topology_Check = main.TRUE
+        TopologyCheck = main.TRUE
         main.step( "Compare ONOS Topology to MN Topology" )
 
-        switches_results1 = main.Mininet1.compare_switches(
+        switchesResults1 = main.Mininet1.compareSwitches(
             MNTopo,
             json.loads( devices1 ) )
-        print "switches_Result1 = ", switches_results1
-        utilities.assert_equals( expect=main.TRUE, actual=switches_results1,
-                                 onpass="ONOS1 Switches view is correct",
-                                 onfail="ONOS1 Switches view is incorrect" )
+        print "switches_Result1 = ", switchesResults1
+        utilities.assertEquals( expect=main.TRUE, actual=switchesResults1,
+                                onpass="ONOS1 Switches view is correct",
+                                onfail="ONOS1 Switches view is incorrect" )
 
-        switches_results2 = main.Mininet1.compare_switches(
+        switchesResults2 = main.Mininet1.compareSwitches(
             MNTopo,
             json.loads( devices2 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=switches_results2,
-                                 onpass="ONOS2 Switches view is correct",
-                                 onfail="ONOS2 Switches view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=switchesResults2,
+                                onpass="ONOS2 Switches view is correct",
+                                onfail="ONOS2 Switches view is incorrect" )
 
-        switches_results3 = main.Mininet1.compare_switches(
+        switchesResults3 = main.Mininet1.compareSwitches(
             MNTopo,
             json.loads( devices3 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=switches_results3,
-                                 onpass="ONOS3 Switches view is correct",
-                                 onfail="ONOS3 Switches view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=switchesResults3,
+                                onpass="ONOS3 Switches view is correct",
+                                onfail="ONOS3 Switches view is incorrect" )
 
         """
-        ports_results1 =  main.Mininet1.compare_ports( MNTopo, json.loads( ports1 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=ports_results1,
+        portsResults1 =  main.Mininet1.comparePorts( MNTopo,
+        json.loads( ports1 ) )
+        utilities.assertEquals( expect=main.TRUE, actual=portsResults1,
                 onpass="ONOS1 Ports view is correct",
                 onfail="ONOS1 Ports view is incorrect" )
 
-        ports_results2 =  main.Mininet1.compare_ports( MNTopo, json.loads( ports2 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=ports_results2,
+        portsResults2 =  main.Mininet1.comparePorts( MNTopo,
+        json.loads( ports2 ) )
+        utilities.assertEquals( expect=main.TRUE, actual=portsResults2,
                 onpass="ONOS2 Ports view is correct",
                 onfail="ONOS2 Ports view is incorrect" )
 
-        ports_results3 =  main.Mininet1.compare_ports( MNTopo, json.loads( ports3 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=ports_results3,
+        portsResults3 =  main.Mininet1.comparePorts( MNTopo,
+        json.loads( ports3 ) )
+        utilities.assertEquals( expect=main.TRUE, actual=portsResults3,
                 onpass="ONOS3 Ports view is correct",
                 onfail="ONOS3 Ports view is incorrect" )
         """
-        links_results1 = main.Mininet1.compare_links(
+        linksResults1 = main.Mininet1.compareLinks(
             MNTopo,
             json.loads( links1 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=links_results1,
-                                 onpass="ONOS1 Links view is correct",
-                                 onfail="ONOS1 Links view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=linksResults1,
+                                onpass="ONOS1 Links view is correct",
+                                onfail="ONOS1 Links view is incorrect" )
 
-        links_results2 = main.Mininet1.compare_links(
+        linksResults2 = main.Mininet1.compareLinks(
             MNTopo,
             json.loads( links2 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=links_results2,
-                                 onpass="ONOS2 Links view is correct",
-                                 onfail="ONOS2 Links view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=linksResults2,
+                                onpass="ONOS2 Links view is correct",
+                                onfail="ONOS2 Links view is incorrect" )
 
-        links_results3 = main.Mininet1.compare_links(
+        linksResults3 = main.Mininet1.compareLinks(
             MNTopo,
             json.loads( links3 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=links_results3,
-                                 onpass="ONOS2 Links view is correct",
-                                 onfail="ONOS2 Links view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=linksResults3,
+                                onpass="ONOS2 Links view is correct",
+                                onfail="ONOS2 Links view is incorrect" )
 
-        #topo_result = switches_results1 and switches_results2 and switches_results3\
-        # and ports_results1 and ports_results2 and ports_results3\
-        # and links_results1 and links_results2 and links_results3
+        # topoResult = switchesResults1 and switchesResults2
+        # and switchesResults3\
+        # and portsResults1 and portsResults2 and portsResults3\
+        # and linksResults1 and linksResults2 and linksResults3
 
-        topo_result = switches_results1 and switches_results2 and switches_results3\
-            and links_results1 and links_results2 and links_results3
+        topoResult = switchesResults1 and switchesResults2 and\
+                     switchesResults3 and linksResults1 and linksResults2 and\
+                     linksResults3
 
-        if topo_result == main.TRUE:
+        if topoResult == main.TRUE:
             main.log.report(
-                "Topology Check Test with mininet and ONOS instances successful" )
+                "Topology Check Test with mininet" +
+                "and ONOS instances successful" )
         else:
             main.log.report(
                 "Topology Check Test with mininet and ONOS instances failed" )
 
-        utilities.assert_equals( expect=main.TRUE, actual=topo_result,
-                                 onpass="Topology Check Test successful",
-                                 onfail="Topology Check Test NOT successful" )
+        utilities.assertEquals( expect=main.TRUE, actual=topoResult,
+                                onpass="Topology Check Test successful",
+                                onfail="Topology Check Test NOT successful" )
 
     def CASE10( self ):
         main.log.report(
@@ -422,31 +432,34 @@
         main.log.report( "__________________________________" )
         main.case( "Uninstalling reactive forwarding app" )
         # Unistall onos-app-fwd app to disable reactive forwarding
-        appUninstall_result1 = main.ONOScli1.feature_uninstall(
+        appUninstallResult1 = main.ONOScli1.featureUninstall(
             "onos-app-fwd" )
-        appUninstall_result2 = main.ONOScli2.feature_uninstall(
+        appUninstallResult2 = main.ONOScli2.featureUninstall(
             "onos-app-fwd" )
-        appUninstall_result3 = main.ONOScli3.feature_uninstall(
+        appUninstallResult3 = main.ONOScli3.featureUninstall(
             "onos-app-fwd" )
         main.log.info( "onos-app-fwd uninstalled" )
 
-        # After reactive forwarding is disabled, the reactive flows on switches timeout in 10-15s
+        # After reactive forwarding is disabled,
+        # the reactive flows on switches timeout in 10-15s
         # So sleep for 15s
         time.sleep( 15 )
 
         hosts = main.ONOScli1.hosts()
         main.log.info( hosts )
 
-        case10_result = appUninstall_result1 and appUninstall_result2 and appUninstall_result3
-        utilities.assert_equals(
+        case10Result = appUninstallResult1 and\
+                appUninstallResult2 and appUninstallResult3
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=case10_result,
+            actual=case10Result,
             onpass="Reactive forwarding app uninstallation successful",
             onfail="Reactive forwarding app uninstallation failed" )
 
     def CASE6( self ):
         main.log.report(
-            "This testcase is testing the addition of host intents and then doing pingall" )
+            "This testcase is testing the addition of" +
+            " host intents and then doing pingall" )
         main.log.report( "__________________________________" )
         main.case( "Obtaining hostsfor adding host intents" )
         main.step( "Get hosts" )
@@ -454,45 +467,57 @@
         main.log.info( hosts )
 
         main.step( "Get all devices id" )
-        devices_id_list = main.ONOScli1.get_all_devices_id()
-        main.log.info( devices_id_list )
+        devicesIdList = main.ONOScli1.getAllDevicesId()
+        main.log.info( devicesIdList )
 
-        # ONOS displays the hosts in hex format unlike mininet which does in decimal format
+        # ONOS displays the hosts in hex format
+        # unlike mininet which does in decimal format
         # So take care while adding intents
 
         """
-        main.step( "Add host intents for mn hosts(h8-h18,h9-h19,h10-h20,h11-h21,h12-h22,h13-h23,h14-h24,h15-h25,h16-h26,h17-h27)" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:08/-1", "00:00:00:00:00:12/-1" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:09/-1", "00:00:00:00:00:13/-1" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0A/-1", "00:00:00:00:00:14/-1" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0B/-1", "00:00:00:00:00:15/-1" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0C/-1", "00:00:00:00:00:16/-1" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0D/-1", "00:00:00:00:00:17/-1" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0E/-1", "00:00:00:00:00:18/-1" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0F/-1", "00:00:00:00:00:19/-1" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:10/-1", "00:00:00:00:00:1A/-1" )
-        hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:11/-1", "00:00:00:00:00:1B/-1" )
+        main.step( "Add host intents for mn hosts(h8-h18,h9-h19,h10-h20,
+        h11-h21,h12-h22,h13-h23,h14-h24,h15-h25,h16-h26,h17-h27)" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:08/-1",
+        "00:00:00:00:00:12/-1" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:09/-1",
+        "00:00:00:00:00:13/-1" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:0A/-1",
+        "00:00:00:00:00:14/-1" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:0B/-1",
+        "00:00:00:00:00:15/-1" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:0C/-1",
+        "00:00:00:00:00:16/-1" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:0D/-1",
+        "00:00:00:00:00:17/-1" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:0E/-1",
+        "00:00:00:00:00:18/-1" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:0F/-1",
+        "00:00:00:00:00:19/-1" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:10/-1",
+        "00:00:00:00:00:1A/-1" )
+        hthIntentResult = main.ONOScli1.addHostIntent( "00:00:00:00:00:11/-1",
+        "00:00:00:00:00:1B/-1" )
         """
         for i in range( 8, 18 ):
             main.log.info(
-                "Adding host intent between h" + str( i ) + " and h" + str( i + 10 ) )
+                "Adding host intent between h" + str( i ) +
+                " and h" + str( i + 10 ) )
             host1 = "00:00:00:00:00:" + \
                 str( hex( i )[ 2: ] ).zfill( 2 ).upper()
             host2 = "00:00:00:00:00:" + \
                 str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
             # NOTE: get host can return None
             # TODO: handle this
-            host1_id = main.ONOScli1.get_host( host1 )[ 'id' ]
-            host2_id = main.ONOScli1.get_host( host2 )[ 'id' ]
-            tmp_result = main.ONOScli1.add_host_intent( host1_id, host2_id )
+            host1Id = main.ONOScli1.getHost( host1 )[ 'id' ]
+            host2Id = main.ONOScli1.getHost( host2 )[ 'id' ]
+            tmpResult = main.ONOScli1.addHostIntent( host1Id, host2Id )
 
         flowHandle = main.ONOScli1.flows()
-        # print "flowHandle = ", flowHandle
         main.log.info( "flows:" + flowHandle )
 
         count = 1
         i = 8
-        Ping_Result = main.TRUE
+        PingResult = main.TRUE
         while i < 18:
             main.log.info(
                 "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
@@ -500,8 +525,8 @@
                 src="h" + str( i ), target="h" + str( i + 10 ) )
             if ping == main.FALSE and count < 5:
                 count += 1
-                #i = 8
-                Ping_Result = main.FALSE
+                # i = 8
+                PingResult = main.FALSE
                 main.log.report( "Ping between h" +
                                  str( i ) +
                                  " and h" +
@@ -519,7 +544,7 @@
                                       10 ) +
                                  "have failed" )
                 i = 19
-                Ping_Result = main.FALSE
+                PingResult = main.FALSE
             elif ping == main.TRUE:
                 main.log.info( "Ping test between h" +
                                str( i ) +
@@ -528,36 +553,38 @@
                                     10 ) +
                                "passed!" )
                 i += 1
-                Ping_Result = main.TRUE
+                PingResult = main.TRUE
             else:
                 main.log.info( "Unknown error" )
-                Ping_Result = main.ERROR
-        if Ping_Result == main.FALSE:
+                PingResult = main.ERROR
+        if PingResult == main.FALSE:
             main.log.report(
                 "Host intents have not ben installed correctly. Cleaning up" )
             # main.cleanup()
             # main.exit()
-        if Ping_Result == main.TRUE:
+        if PingResult == main.TRUE:
             main.log.report( "Host intents have been installed correctly" )
 
-        case6_result = Ping_Result
-        utilities.assert_equals(
+        case6Result = PingResult
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=case6_result,
+            actual=case6Result,
             onpass="Host intent addition and Pingall Test successful",
             onfail="Host intent addition and Pingall Test NOT successful" )
 
     def CASE7( self, main ):
 
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
 
-        link_sleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
+        linkSleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
 
         main.log.report(
-            "This testscase is killing a link to ensure that link discovery is consistent" )
+            "This testscase is killing a link to" +
+            " ensure that link discovery is consistent" )
         main.log.report( "__________________________________" )
         main.case(
-            "Killing a link to Ensure that Link Discovery is Working Properly" )
+            "Killing a link to Ensure that Link" +
+            " Discovery is Working Properly" )
         main.step( "Start continuous pings" )
 
         main.Mininet2.pingLong(
@@ -602,10 +629,10 @@
             pingTime=500 )
 
         main.step( "Determine the current number of switches and links" )
-        topology_output = main.ONOScli1.topology()
-        topology_result = main.ONOSbench.get_topology( topology_output )
-        activeSwitches = topology_result[ 'devices' ]
-        links = topology_result[ 'links' ]
+        topologyOutput = main.ONOScli1.topology()
+        topologyResult = main.ONOSbench.getTopology( topologyOutput )
+        activeSwitches = topologyResult[ 'devices' ]
+        links = topologyResult[ 'links' ]
         print "activeSwitches = ", type( activeSwitches )
         print "links = ", type( links )
         main.log.info(
@@ -614,42 +641,43 @@
 
         main.step( "Kill Link between s3 and s28" )
         main.Mininet1.link( END1="s3", END2="s28", OPTION="down" )
-        time.sleep( link_sleep )
-        topology_output = main.ONOScli2.topology()
-        Link_Down = main.ONOSbench.check_status(
-            topology_output, activeSwitches, str(
+        time.sleep( linkSleep )
+        topologyOutput = main.ONOScli2.topology()
+        LinkDown = main.ONOSbench.checkStatus(
+            topologyOutput, activeSwitches, str(
                 int( links ) - 2 ) )
-        if Link_Down == main.TRUE:
+        if LinkDown == main.TRUE:
             main.log.report( "Link Down discovered properly" )
-        utilities.assert_equals(
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=Link_Down,
+            actual=LinkDown,
             onpass="Link Down discovered properly",
             onfail="Link down was not discovered in " +
-            str( link_sleep ) +
+            str( linkSleep ) +
             " seconds" )
 
         main.step( "Bring link between s3 and s28 back up" )
-        Link_Up = main.Mininet1.link( END1="s3", END2="s28", OPTION="up" )
-        time.sleep( link_sleep )
-        topology_output = main.ONOScli2.topology()
-        Link_Up = main.ONOSbench.check_status(
-            topology_output,
+        LinkUp = main.Mininet1.link( END1="s3", END2="s28", OPTION="up" )
+        time.sleep( linkSleep )
+        topologyOutput = main.ONOScli2.topology()
+        LinkUp = main.ONOSbench.checkStatus(
+            topologyOutput,
             activeSwitches,
             str( links ) )
-        if Link_Up == main.TRUE:
+        if LinkUp == main.TRUE:
             main.log.report( "Link up discovered properly" )
-        utilities.assert_equals(
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=Link_Up,
+            actual=LinkUp,
             onpass="Link up discovered properly",
             onfail="Link up was not discovered in " +
-            str( link_sleep ) +
+            str( linkSleep ) +
             " seconds" )
 
         main.step( "Compare ONOS Topology to MN Topology" )
         main.case(
-            "Testing Mininet topology with the topology of multi instances ONOS" )
+            "Testing Mininet topology with the" +
+            " topology of multi instances ONOS" )
         main.step( "Collecting topology information from ONOS" )
         devices1 = main.ONOScli1.devices()
         devices2 = main.ONOScli2.devices()
@@ -742,78 +770,83 @@
             ctrls )  # can also add Intent API info for intent operations
         MNTopo = Topo
 
-        Topology_Check = main.TRUE
+        TopologyCheck = main.TRUE
         main.step( "Compare ONOS Topology to MN Topology" )
 
-        switches_results1 = main.Mininet1.compare_switches(
+        switchesResults1 = main.Mininet1.compareSwitches(
             MNTopo,
             json.loads( devices1 ) )
-        print "switches_Result1 = ", switches_results1
-        utilities.assert_equals( expect=main.TRUE, actual=switches_results1,
-                                 onpass="ONOS1 Switches view is correct",
-                                 onfail="ONOS1 Switches view is incorrect" )
+        print "switches_Result1 = ", switchesResults1
+        utilities.assertEquals( expect=main.TRUE, actual=switchesResults1,
+                                onpass="ONOS1 Switches view is correct",
+                                onfail="ONOS1 Switches view is incorrect" )
 
-        switches_results2 = main.Mininet1.compare_switches(
+        switchesResults2 = main.Mininet1.compareSwitches(
             MNTopo,
             json.loads( devices2 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=switches_results2,
-                                 onpass="ONOS2 Switches view is correct",
-                                 onfail="ONOS2 Switches view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=switchesResults2,
+                                onpass="ONOS2 Switches view is correct",
+                                onfail="ONOS2 Switches view is incorrect" )
 
-        switches_results3 = main.Mininet1.compare_switches(
+        switchesResults3 = main.Mininet1.compareSwitches(
             MNTopo,
             json.loads( devices3 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=switches_results3,
-                                 onpass="ONOS3 Switches view is correct",
-                                 onfail="ONOS3 Switches view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=switchesResults3,
+                                onpass="ONOS3 Switches view is correct",
+                                onfail="ONOS3 Switches view is incorrect" )
 
         """
-        ports_results1 =  main.Mininet1.compare_ports( MNTopo, json.loads( ports1 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=ports_results1,
+        portsResults1 =  main.Mininet1.comparePorts( MNTopo,
+        json.loads( ports1 ) )
+        utilities.assertEquals( expect=main.TRUE, actual=portsResults1,
                 onpass="ONOS1 Ports view is correct",
                 onfail="ONOS1 Ports view is incorrect" )
 
-        ports_results2 =  main.Mininet1.compare_ports( MNTopo, json.loads( ports2 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=ports_results2,
+        portsResults2 =  main.Mininet1.comparePorts( MNTopo,
+        json.loads( ports2 ) )
+        utilities.assertEquals( expect=main.TRUE, actual=portsResults2,
                 onpass="ONOS2 Ports view is correct",
                 onfail="ONOS2 Ports view is incorrect" )
 
-        ports_results3 =  main.Mininet1.compare_ports( MNTopo, json.loads( ports3 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=ports_results3,
+        portsResults3 =  main.Mininet1.comparePorts( MNTopo,
+        json.loads( ports3 ) )
+        utilities.assertEquals( expect=main.TRUE, actual=portsResults3,
                 onpass="ONOS3 Ports view is correct",
                 onfail="ONOS3 Ports view is incorrect" )
         """
-        links_results1 = main.Mininet1.compare_links(
+        linksResults1 = main.Mininet1.compareLinks(
             MNTopo,
             json.loads( links1 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=links_results1,
-                                 onpass="ONOS1 Links view is correct",
-                                 onfail="ONOS1 Links view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=linksResults1,
+                                onpass="ONOS1 Links view is correct",
+                                onfail="ONOS1 Links view is incorrect" )
 
-        links_results2 = main.Mininet1.compare_links(
+        linksResults2 = main.Mininet1.compareLinks(
             MNTopo,
             json.loads( links2 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=links_results2,
-                                 onpass="ONOS2 Links view is correct",
-                                 onfail="ONOS2 Links view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=linksResults2,
+                                onpass="ONOS2 Links view is correct",
+                                onfail="ONOS2 Links view is incorrect" )
 
-        links_results3 = main.Mininet1.compare_links(
+        linksResults3 = main.Mininet1.compareLinks(
             MNTopo,
             json.loads( links3 ) )
-        utilities.assert_equals( expect=main.TRUE, actual=links_results3,
-                                 onpass="ONOS2 Links view is correct",
-                                 onfail="ONOS2 Links view is incorrect" )
+        utilities.assertEquals( expect=main.TRUE, actual=linksResults3,
+                                onpass="ONOS2 Links view is correct",
+                                onfail="ONOS2 Links view is incorrect" )
 
-        #topo_result = switches_results1 and switches_results2 and switches_results3\
-        # and ports_results1 and ports_results2 and ports_results3\
-        # and links_results1 and links_results2 and links_results3
+        # topoResult = switchesResults1 and switchesResults2
+        # and switchesResults3\
+        # and portsResults1 and portsResults2 and portsResults3\
+        # and linksResults1 and linksResults2 and linksResults3
 
-        topo_result = switches_results1 and switches_results2 and switches_results3\
-            and links_results1 and links_results2 and links_results3
+        topoResult = switchesResults1 and switchesResults2\
+                and switchesResults3 and linksResults1 and\
+                linksResults2 and linksResults3
 
-        utilities.assert_equals(
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=topo_result and Link_Up and Link_Down,
+            actual=topoResult and LinkUp and LinkDown,
             onpass="Topology Check Test successful",
             onfail="Topology Check Test NOT successful" )
 
@@ -822,16 +855,16 @@
         Intent removal
         """
         main.log.report(
-            "This testcase removes host any previously added intents" )
+            "This testcase removes any previously added intents" )
         main.log.report( "__________________________________" )
         main.log.info( "Removing any previously installed intents" )
         main.case( "Removing intents" )
         main.step( "Obtain the intent id's" )
-        intent_result = main.ONOScli1.intents( json_format=False )
+        intentResult = main.ONOScli1.intents( jsonFormat=False )
 
-        intent_linewise = intent_result.split( "\n" )
+        intentLinewise = intentResult.split( "\n" )
         intentList = []
-        for line in intent_linewise:
+        for line in intentLinewise:
             if line.startswith( "id=" ):
                 intentList.append( line )
 
@@ -844,14 +877,14 @@
         main.step(
             "Iterate through the intentids list and remove each intent" )
         for id in intentids:
-            main.ONOScli1.remove_intent( intent_id=id )
+            main.ONOScli1.removeIntent( intentId=id )
 
-        intent_result = main.ONOScli1.intents( json_format=False )
-        main.log.info( "intent_result = " + intent_result )
-        case8_result = main.TRUE
+        intentResult = main.ONOScli1.intents( jsonFormat=False )
+        main.log.info( "intent_result = " + intentResult )
+        case8Result = main.TRUE
 
         i = 8
-        Ping_Result = main.TRUE
+        PingResult = main.TRUE
         while i < 18:
             main.log.info(
                 "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
@@ -859,227 +892,241 @@
                 src="h" + str( i ), target="h" + str( i + 10 ) )
             if ping == main.TRUE:
                 i = 19
-                Ping_Result = main.TRUE
+                PingResult = main.TRUE
             elif ping == main.FALSE:
                 i += 1
-                Ping_Result = main.FALSE
+                PingResult = main.FALSE
             else:
                 main.log.info( "Unknown error" )
-                Ping_Result = main.ERROR
+                PingResult = main.ERROR
 
         # Note: If the ping result failed, that means the intents have been
         # withdrawn correctly.
-        if Ping_Result == main.TRUE:
+        if PingResult == main.TRUE:
             main.log.report( "Host intents have not been withdrawn correctly" )
             # main.cleanup()
             # main.exit()
-        if Ping_Result == main.FALSE:
+        if PingResult == main.FALSE:
             main.log.report( "Host intents have been withdrawn correctly" )
 
-        case8_result = case8_result and Ping_Result
+        case8Result = case8Result and PingResult
 
-        if case8_result == main.FALSE:
+        if case8Result == main.FALSE:
             main.log.report( "Intent removal successful" )
         else:
             main.log.report( "Intent removal failed" )
 
-        utilities.assert_equals( expect=main.FALSE, actual=case8_result,
-                                 onpass="Intent removal test failed",
-                                 onfail="Intent removal test successful" )
+        utilities.assertEquals( expect=main.FALSE, actual=case8Result,
+                                onpass="Intent removal test failed",
+                                onfail="Intent removal test successful" )
 
     def CASE9( self ):
         """
-        This test case adds point intents. Make sure you run test case 8 which is host intent removal before executing this test case.
-        Else the host intent's flows will persist on switches and the pings would work even if there is some issue with the point intent's flows
+        This test case adds point intents. Make sure you run test case 8
+        which is host intent removal before executing this test case.
+        Else the host intent's flows will persist on switches and the pings
+        would work even if there is some issue with the point intent's flows
         """
         main.log.report(
             "This testcase adds point intents and then does pingall" )
         main.log.report( "__________________________________" )
         main.log.info( "Adding point intents" )
         main.case(
-            "Adding bidirectional point for mn hosts(h8-h18,h9-h19,h10-h20,h11-h21,h12-h22,h13-h23,h14-h24,h15-h25,h16-h26,h17-h27)" )
+            "Adding bidirectional point for mn hosts(h8-h18,h9-h19,h10-h20," +
+            "h11-h21,h12-h22,h13-h23,h14-h24,h15-h25,h16-h26,h17-h27)" )
         main.step(
-            "Add point-to-point intents for mininet hosts h8 and h18 or ONOS hosts h8 and h12" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet hosts" +
+            " h8 and h18 or ONOS hosts h8 and h12" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003008/1",
             "of:0000000000006018/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006018/1",
             "of:0000000000003008/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         main.step(
-            "Add point-to-point intents for mininet hosts h9 and h19 or ONOS hosts h9 and h13" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet hosts" +
+            " h9 and h19 or ONOS hosts h9 and h13" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003009/1",
             "of:0000000000006019/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006019/1",
             "of:0000000000003009/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         main.step(
-            "Add point-to-point intents for mininet hosts h10 and h20 or ONOS hosts hA and h14" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet" +
+            " hosts h10 and h20 or ONOS hosts hA and h14" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003010/1",
             "of:0000000000006020/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006020/1",
             "of:0000000000003010/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         main.step(
-            "Add point-to-point intents for mininet hosts h11 and h21 or ONOS hosts hB and h15" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet" +
+            " hosts h11 and h21 or ONOS hosts hB and h15" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003011/1",
             "of:0000000000006021/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006021/1",
             "of:0000000000003011/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         main.step(
-            "Add point-to-point intents for mininet hosts h12 and h22 or ONOS hosts hC and h16" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet" +
+            " hosts h12 and h22 or ONOS hosts hC and h16" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003012/1",
             "of:0000000000006022/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006022/1",
             "of:0000000000003012/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         main.step(
-            "Add point-to-point intents for mininet hosts h13 and h23 or ONOS hosts hD and h17" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet " +
+            "hosts h13 and h23 or ONOS hosts hD and h17" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003013/1",
             "of:0000000000006023/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006023/1",
             "of:0000000000003013/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         main.step(
-            "Add point-to-point intents for mininet hosts h14 and h24 or ONOS hosts hE and h18" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet hosts" +
+            " h14 and h24 or ONOS hosts hE and h18" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003014/1",
             "of:0000000000006024/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006024/1",
             "of:0000000000003014/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         main.step(
-            "Add point-to-point intents for mininet hosts h15 and h25 or ONOS hosts hF and h19" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet hosts" +
+            " h15 and h25 or ONOS hosts hF and h19" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003015/1",
             "of:0000000000006025/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006025/1",
             "of:0000000000003015/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         main.step(
-            "Add point-to-point intents for mininet hosts h16 and h26 or ONOS hosts h10 and h1A" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet hosts" +
+            " h16 and h26 or ONOS hosts h10 and h1A" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003016/1",
             "of:0000000000006026/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006026/1",
             "of:0000000000003016/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         main.step(
-            "Add point-to-point intents for mininet hosts h17 and h27 or ONOS hosts h11 and h1B" )
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+            "Add point-to-point intents for mininet hosts h17" +
+            " and h27 or ONOS hosts h11 and h1B" )
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000003017/1",
             "of:0000000000006027/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOScli1.add_point_intent(
+        ptpIntentResult = main.ONOScli1.addPointIntent(
             "of:0000000000006027/1",
             "of:0000000000003017/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOScli1.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOScli1.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
         print(
-            "_______________________________________________________________________________________" )
+            "_______________________________________________________" +
+            "________________________________" )
 
         flowHandle = main.ONOScli1.flows()
         # print "flowHandle = ", flowHandle
@@ -1087,7 +1134,7 @@
 
         count = 1
         i = 8
-        Ping_Result = main.TRUE
+        PingResult = main.TRUE
         while i < 18:
             main.log.info(
                 "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
@@ -1095,8 +1142,8 @@
                 src="h" + str( i ), target="h" + str( i + 10 ) )
             if ping == main.FALSE and count < 5:
                 count += 1
-                #i = 8
-                Ping_Result = main.FALSE
+                # i = 8
+                PingResult = main.FALSE
                 main.log.report( "Ping between h" +
                                  str( i ) +
                                  " and h" +
@@ -1114,7 +1161,7 @@
                                       10 ) +
                                  "have failed" )
                 i = 19
-                Ping_Result = main.FALSE
+                PingResult = main.FALSE
             elif ping == main.TRUE:
                 main.log.info( "Ping test between h" +
                                str( i ) +
@@ -1123,98 +1170,104 @@
                                     10 ) +
                                "passed!" )
                 i += 1
-                Ping_Result = main.TRUE
+                PingResult = main.TRUE
             else:
                 main.log.info( "Unknown error" )
-                Ping_Result = main.ERROR
-        if Ping_Result == main.FALSE:
+                PingResult = main.ERROR
+        if PingResult == main.FALSE:
             main.log.report(
-                "Ping all test after Point intents addition failed. Cleaning up" )
+                "Ping all test after Point intents" +
+                " addition failed. Cleaning up" )
             # main.cleanup()
             # main.exit()
-        if Ping_Result == main.TRUE:
+        if PingResult == main.TRUE:
             main.log.report(
                 "Ping all test after Point intents addition successful" )
 
-        case8_result = Ping_Result
-        utilities.assert_equals(
+        case8Result = PingResult
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=case8_result,
+            actual=case8Result,
             onpass="Ping all test after Point intents addition successful",
             onfail="Ping all test after Point intents addition failed" )
 
     def CASE31( self ):
         """
-            This test case adds point intent related to SDN-IP matching on ICMP ( ethertype=IPV4, ipProto=1 )
+            This test case adds point intent related to
+            SDN-IP matching on ICMP ( ethertype=IPV4, ipProto=1 )
         """
         import json
 
         main.log.report(
-            "This test case adds point intent related to SDN-IP matching on ICMP" )
+            "This test case adds point intent " +
+            "related to SDN-IP matching on ICMP" )
         main.case(
-            "Adding bidirectional point intent related to SDN-IP matching on ICMP" )
+            "Adding bidirectional point intent related" +
+            " to SDN-IP matching on ICMP" )
         main.step( "Adding bidirectional point intent" )
         # add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32
         # --ethType=IPV4 --ipProto=1  of:0000000000003008/1
         # of:0000000000006018/1
 
-        hosts_json = json.loads( main.ONOScli1.hosts() )
+        hostsJson = json.loads( main.ONOScli1.hosts() )
         for i in range( 8, 11 ):
             main.log.info(
-                "Adding point intent between h" + str( i ) + " and h" + str( i + 10 ) )
+                "Adding point intent between h" + str( i ) +
+                " and h" + str( i + 10 ) )
             host1 = "00:00:00:00:00:" + \
                 str( hex( i )[ 2: ] ).zfill( 2 ).upper()
             host2 = "00:00:00:00:00:" + \
                 str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
-            host1_id = main.ONOScli1.get_host( host1 )[ 'id' ]
-            host2_id = main.ONOScli1.get_host( host2 )[ 'id' ]
-            for host in hosts_json:
-                if host[ 'id' ] == host1_id:
+            host1Id = main.ONOScli1.getHost( host1 )[ 'id' ]
+            host2Id = main.ONOScli1.getHost( host2 )[ 'id' ]
+            for host in hostsJson:
+                if host[ 'id' ] == host1Id:
                     ip1 = host[ 'ips' ][ 0 ]
                     ip1 = str( ip1 + "/32" )
                     device1 = host[ 'location' ][ 'device' ]
                     device1 = str( device1 + "/1" )
-                elif host[ 'id' ] == host2_id:
+                elif host[ 'id' ] == host2Id:
                     ip2 = str( host[ 'ips' ][ 0 ] ) + "/32"
                     device2 = host[ 'location' ][ "device" ]
                     device2 = str( device2 + "/1" )
 
-            p_intent_result1 = main.ONOScli1.add_point_intent(
-                ingress_device=device1,
-                egress_device=device2,
+            pIntentResult1 = main.ONOScli1.addPointIntent(
+                ingressDevice=device1,
+                egressDevice=device2,
                 ipSrc=ip1,
                 ipDst=ip2,
                 ethType=main.params[ 'SDNIP' ][ 'ethType' ],
                 ipProto=main.params[ 'SDNIP' ][ 'icmpProto' ] )
 
-            get_intent_result = main.ONOScli1.intents( json_format=False )
-            main.log.info( get_intent_result )
+            getIntentResult = main.ONOScli1.intents( jsonFormat=False )
+            main.log.info( getIntentResult )
 
-            p_intent_result2 = main.ONOScli1.add_point_intent(
-                ingress_device=device2,
-                egress_device=device1,
+            pIntentResult2 = main.ONOScli1.addPointIntent(
+                ingressDevice=device2,
+                egressDevice=device1,
                 ipSrc=ip2,
                 ipDst=ip1,
                 ethType=main.params[ 'SDNIP' ][ 'ethType' ],
                 ipProto=main.params[ 'SDNIP' ][ 'icmpProto' ] )
 
-            get_intent_result = main.ONOScli1.intents( json_format=False )
-            main.log.info( get_intent_result )
-            if ( p_intent_result1 and p_intent_result2 ) == main.TRUE:
-                #get_intent_result = main.ONOScli1.intents()
-                # main.log.info( get_intent_result )
+            getIntentResult = main.ONOScli1.intents( jsonFormat=False )
+            main.log.info( getIntentResult )
+            if ( pIntentResult1 and pIntentResult2 ) == main.TRUE:
+                # getIntentResult = main.ONOScli1.intents()
+                # main.log.info( getIntentResult )
                 main.log.info(
-                    "Point intent related to SDN-IP matching on ICMP install successful" )
+                    "Point intent related to SDN-IP matching" +
+                    " on ICMP install successful" )
 
         time.sleep( 15 )
-        get_intent_result = main.ONOScli1.intents( json_format=False )
-        main.log.info( "intents = " + get_intent_result )
-        get_flows_result = main.ONOScli1.flows()
-        main.log.info( "flows = " + get_flows_result )
+        getIntentResult = main.ONOScli1.intents( jsonFormat=False )
+        main.log.info( "intents = " + getIntentResult )
+        getFlowsResult = main.ONOScli1.flows()
+        main.log.info( "flows = " + getFlowsResult )
 
         count = 1
         i = 8
-        Ping_Result = main.TRUE
+        PingResult = main.TRUE
         while i < 11:
             main.log.info(
                 "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
@@ -1222,8 +1275,8 @@
                 src="h" + str( i ), target="h" + str( i + 10 ) )
             if ping == main.FALSE and count < 3:
                 count += 1
-                #i = 8
-                Ping_Result = main.FALSE
+                # i = 8
+                PingResult = main.FALSE
                 main.log.report( "Ping between h" +
                                  str( i ) +
                                  " and h" +
@@ -1241,7 +1294,7 @@
                                       10 ) +
                                  "have failed" )
                 i = 19
-                Ping_Result = main.FALSE
+                PingResult = main.FALSE
             elif ping == main.TRUE:
                 main.log.info( "Ping test between h" +
                                str( i ) +
@@ -1250,150 +1303,186 @@
                                     10 ) +
                                "passed!" )
                 i += 1
-                Ping_Result = main.TRUE
+                PingResult = main.TRUE
             else:
                 main.log.info( "Unknown error" )
-                Ping_Result = main.ERROR
-        if Ping_Result == main.FALSE:
+                PingResult = main.ERROR
+        if PingResult == main.FALSE:
             main.log.report(
-                "Ping test after Point intents related to SDN-IP matching on ICMP failed." )
+                "Ping test after Point intents related to" +
+                " SDN-IP matching on ICMP failed." )
             # main.cleanup()
             # main.exit()
-        if Ping_Result == main.TRUE:
+        if PingResult == main.TRUE:
             main.log.report(
-                "Ping all test after Point intents related to SDN-IP matching on ICMP successful" )
+                "Ping all test after Point intents related to" +
+                " SDN-IP matching on ICMP successful" )
 
-        case31_result = Ping_Result and p_intent_result1 and p_intent_result2
-        utilities.assert_equals(
+        case31Result = PingResult and pIntentResult1 and pIntentResult2
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=case31_result,
-            onpass="Point intent related to SDN-IP matching on ICMP and ping test successful",
-            onfail="Point intent related to SDN-IP matching on ICMP and ping test failed" )
+            actual=case31Result,
+            onpass="Point intent related to SDN-IP " +
+            "matching on ICMP and ping test successful",
+            onfail="Point intent related to SDN-IP" +
+            " matching on ICMP and ping test failed" )
 
     def CASE32( self ):
         """
-            This test case adds point intent related to SDN-IP matching on TCP ( ethertype=IPV4, ipProto=6, DefaultPort for iperf=5001 )
-            Note: Although BGP port is 179, we are using 5001 because iperf is used for verifying and iperf's default port is 5001
+            This test case adds point intent related to SDN-IP matching on TCP
+            ( ethertype=IPV4, ipProto=6, DefaultPort for iperf=5001 )
+            Note: Although BGP port is 179, we are using 5001 because iperf
+            is used for verifying and iperf's default port is 5001
         """
         import json
 
         main.log.report(
-            "This test case adds point intent related to SDN-IP matching on TCP" )
+            "This test case adds point intent" +
+            " related to SDN-IP matching on TCP" )
         main.case(
-            "Adding bidirectional point intent related to SDN-IP matching on TCP" )
+            "Adding bidirectional point intent related" +
+            " to SDN-IP matching on TCP" )
         main.step( "Adding bidirectional point intent" )
         """
-        add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32 --ethType=IPV4 --ipProto=6 --tcpDst=5001  of:0000000000003008/1 of:0000000000006018/1
+        add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32
+        --ethType=IPV4 --ipProto=6 --tcpDst=5001  of:0000000000003008/1
+        of:0000000000006018/1
 
-        add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32 --ethType=IPV4 --ipProto=6 --tcpDst=5001  of:0000000000006018/1 of:0000000000003008/1
+        add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32
+        --ethType=IPV4 --ipProto=6 --tcpDst=5001  of:0000000000006018/1
+        of:0000000000003008/1
 
-        add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32 --ethType=IPV4 --ipProto=6 --tcpSrc=5001  of:0000000000003008/1 of:0000000000006018/1
+        add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32
+        --ethType=IPV4 --ipProto=6 --tcpSrc=5001  of:0000000000003008/1
+        of:0000000000006018/1
 
-        add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32 --ethType=IPV4 --ipProto=6 --tcpSrc=5001  of:0000000000006018/1 of:0000000000003008/1
+        add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32
+        --ethType=IPV4 --ipProto=6 --tcpSrc=5001  of:0000000000006018/1
+        of:0000000000003008/1
 
         """
-        hosts_json = json.loads( main.ONOScli1.hosts() )
+        hostsJson = json.loads( main.ONOScli1.hosts() )
         for i in range( 8, 9 ):
             main.log.info(
-                "Adding point intent between h" + str( i ) + " and h" + str( i + 10 ) )
+                "Adding point intent between h" + str( i ) +
+                " and h" + str( i + 10 ) )
             host1 = "00:00:00:00:00:" + \
                 str( hex( i )[ 2: ] ).zfill( 2 ).upper()
             host2 = "00:00:00:00:00:" + \
                 str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
-            host1_id = main.ONOScli1.get_host( host1 )[ 'id' ]
-            host2_id = main.ONOScli1.get_host( host2 )[ 'id' ]
-            for host in hosts_json:
-                if host[ 'id' ] == host1_id:
+            host1Id = main.ONOScli1.getHost( host1 )[ 'id' ]
+            host2Id = main.ONOScli1.getHost( host2 )[ 'id' ]
+            for host in hostsJson:
+                if host[ 'id' ] == host1Id:
                     ip1 = host[ 'ips' ][ 0 ]
                     ip1 = str( ip1 + "/32" )
                     device1 = host[ 'location' ][ 'device' ]
                     device1 = str( device1 + "/1" )
-                elif host[ 'id' ] == host2_id:
+                elif host[ 'id' ] == host2Id:
                     ip2 = str( host[ 'ips' ][ 0 ] ) + "/32"
                     device2 = host[ 'location' ][ "device" ]
                     device2 = str( device2 + "/1" )
 
-            p_intent_result1 = main.ONOScli1.add_point_intent(
-                ingress_device=device1,
-                egress_device=device2,
+            pIntentResult1 = main.ONOScli1.addPointIntent(
+                ingressDevice=device1,
+                egressDevice=device2,
                 ipSrc=ip1,
                 ipDst=ip2,
                 ethType=main.params[ 'SDNIP' ][ 'ethType' ],
                 ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
                 tcpDst=main.params[ 'SDNIP' ][ 'dstPort' ] )
-            p_intent_result2 = main.ONOScli1.add_point_intent(
-                ingress_device=device2,
-                egress_device=device1,
+            pIntentResult2 = main.ONOScli1.addPointIntent(
+                ingressDevice=device2,
+                egressDevice=device1,
                 ipSrc=ip2,
                 ipDst=ip1,
                 ethType=main.params[ 'SDNIP' ][ 'ethType' ],
                 ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
                 tcpDst=main.params[ 'SDNIP' ][ 'dstPort' ] )
 
-            p_intent_result3 = main.ONOScli1.add_point_intent(
-                ingress_device=device1,
-                egress_device=device2,
+            pIntentResult3 = main.ONOScli1.addPointIntent(
+                ingressDevice=device1,
+                egressDevice=device2,
                 ipSrc=ip1,
                 ipDst=ip2,
                 ethType=main.params[ 'SDNIP' ][ 'ethType' ],
                 ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
                 tcpSrc=main.params[ 'SDNIP' ][ 'srcPort' ] )
-            p_intent_result4 = main.ONOScli1.add_point_intent(
-                ingress_device=device2,
-                egress_device=device1,
+            pIntentResult4 = main.ONOScli1.addPointIntent(
+                ingressDevice=device2,
+                egressDevice=device1,
                 ipSrc=ip2,
                 ipDst=ip1,
                 ethType=main.params[ 'SDNIP' ][ 'ethType' ],
                 ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
                 tcpSrc=main.params[ 'SDNIP' ][ 'srcPort' ] )
 
-            p_intent_result = p_intent_result1 and p_intent_result2 and p_intent_result3 and p_intent_result4
-            if p_intent_result == main.TRUE:
-                get_intent_result = main.ONOScli1.intents( json_format=False )
-                main.log.info( get_intent_result )
-                main.log.info(
-                    "Point intent related to SDN-IP matching on TCP install successful" )
+            pIntentResult = pIntentResult1 and pIntentResult2 and\
+                    pIntentResult3 and pIntentResult4
+            if pIntentResult == main.TRUE:
+                getIntentResult = main.ONOScli1.intents( jsonFormat=False )
+                main.log.info( getIntentResult )
+                main.log.report(
+                    "Point intent related to SDN-IP matching" +
+                    " on TCP install successful" )
+            else:
+                main.log.report(
+                    "Point intent related to SDN-IP matching" +
+                    " on TCP install failed" )
 
-        iperf_result = main.Mininet1.iperf( 'h8', 'h18' )
-        if iperf_result == main.TRUE:
+        iperfResult = main.Mininet1.iperf( 'h8', 'h18' )
+        if iperfResult == main.TRUE:
             main.log.report( "iperf test successful" )
         else:
             main.log.report( "iperf test failed" )
 
-        case32_result = p_intent_result and iperf_result
-        utilities.assert_equals(
+        case32Result = pIntentResult and iperfResult
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=case32_result,
-            onpass="Ping all test after Point intents addition related to SDN-IP on TCP match successful",
-            onfail="Ping all test after Point intents addition related to SDN-IP on TCP match failed" )
+            actual=case32Result,
+            onpass="Ping all test after Point intents addition related " +
+            "to SDN-IP on TCP match successful",
+            onfail="Ping all test after Point intents addition related " +
+            "to SDN-IP on TCP match failed" )
 
     def CASE33( self ):
         """
-            This test case adds multipoint to singlepoint  intent related to SDN-IP matching on destination ip and the action is to rewrite the mac address
-            Here the mac address to be rewritten is the mac address of the egress device
+            This test case adds multipoint to singlepoint  intent related to
+            SDN-IP matching on destination ip and the action is to rewrite
+            the mac address
+            Here the mac address to be rewritten is the mac address of the
+            egress device
         """
         import json
         import time
 
         main.log.report(
-            "This test case adds multipoint to singlepoint intent related to SDN-IP matching on destination ip and rewrite mac address action" )
+            "This test case adds multipoint to singlepoint intent related to" +
+            " SDN-IP matching on destination ip and " +
+            "rewrite mac address action" )
         main.case(
-            "Adding multipoint to singlepoint intent related to SDN-IP matching on destination ip" )
+            "Adding multipoint to singlepoint intent related to SDN-IP" +
+            " matching on destination ip" )
         main.step( "Adding bidirectional multipoint to singlepoint intent" )
         """
-        add-multi-to-single-intent --ipDst=10.0.3.0/24 --setEthDst=00:00:00:00:00:12 of:0000000000003008/1 0000000000003009/1 of:0000000000006018/1
+        add-multi-to-single-intent --ipDst=10.0.3.0/24
+        --setEthDst=00:00:00:00:00:12 of:0000000000003008/1 0000000000003009/1
+        of:0000000000006018/1
 
-        add-multi-to-single-intent --ipDst=10.0.1.0/24 --setEthDst=00:00:00:00:00:08 of:0000000000006018/1 0000000000003009/1 of:0000000000003008/1
+        add-multi-to-single-intent --ipDst=10.0.1.0/24
+        --setEthDst=00:00:00:00:00:08 of:0000000000006018/1 0000000000003009/1
+        of:0000000000003008/1
         """
         main.case(
-            "Installing multipoint to single point intent with rewrite mac address" )
+            "Installing multipoint to single point " +
+            "intent with rewrite mac address" )
         main.step( "Uninstalling proxy arp app" )
         # Unistall onos-app-proxyarp app to disable reactive forwarding
-        appUninstall_result1 = main.ONOScli1.feature_uninstall(
+        appUninstallResult1 = main.ONOScli1.featureUninstall(
             "onos-app-proxyarp" )
-        appUninstall_result2 = main.ONOScli2.feature_uninstall(
+        appUninstallResult2 = main.ONOScli2.featureUninstall(
             "onos-app-proxyarp" )
-        appUninstall_result3 = main.ONOScli3.feature_uninstall(
+        appUninstallResult3 = main.ONOScli3.featureUninstall(
             "onos-app-proxyarp" )
         main.log.info( "onos-app-proxyarp uninstalled" )
 
@@ -1420,7 +1509,8 @@
         main.Mininet1.changeDefaultGateway( host='h10', newGW='10.0.3.254' )
 
         main.step(
-            "Assigning random mac address to the default gateways since proxyarp app is uninstalled" )
+            "Assigning random mac address to the default gateways " +
+            "since proxyarp app is uninstalled" )
         main.Mininet1.addStaticMACAddress(
             host='h8',
             GW='10.0.1.254',
@@ -1440,37 +1530,37 @@
         main.Mininet1.verifyStaticGWandMAC( host='h10' )
 
         main.step( "Adding multipoint to singlepoint intent" )
-        p_intent_result1 = main.ONOScli1.add_multipoint_to_singlepoint_intent(
-            ingress_device1=main.params[ 'MULTIPOINT_INTENT' ][ 'device1' ],
-            ingress_device2=main.params[ 'MULTIPOINT_INTENT' ][ 'device2' ],
-            egress_device=main.params[ 'MULTIPOINT_INTENT' ][ 'device3' ],
+        pIntentResult1 = main.ONOScli1.addMultipointToSinglepointIntent(
+            ingressDevice1=main.params[ 'MULTIPOINT_INTENT' ][ 'device1' ],
+            ingressDevice2=main.params[ 'MULTIPOINT_INTENT' ][ 'device2' ],
+            egressDevice=main.params[ 'MULTIPOINT_INTENT' ][ 'device3' ],
             ipDst=main.params[ 'MULTIPOINT_INTENT' ][ 'ip1' ],
             setEthDst=main.params[ 'MULTIPOINT_INTENT' ][ 'mac1' ] )
 
-        p_intent_result2 = main.ONOScli1.add_multipoint_to_singlepoint_intent(
-            ingress_device1=main.params[ 'MULTIPOINT_INTENT' ][ 'device3' ],
-            ingress_device2=main.params[ 'MULTIPOINT_INTENT' ][ 'device2' ],
-            egress_device=main.params[ 'MULTIPOINT_INTENT' ][ 'device1' ],
+        pIntentResult2 = main.ONOScli1.addMultipointToSinglepointIntent(
+            ingressDevice1=main.params[ 'MULTIPOINT_INTENT' ][ 'device3' ],
+            ingressDevice2=main.params[ 'MULTIPOINT_INTENT' ][ 'device2' ],
+            egressDevice=main.params[ 'MULTIPOINT_INTENT' ][ 'device1' ],
             ipDst=main.params[ 'MULTIPOINT_INTENT' ][ 'ip2' ],
             setEthDst=main.params[ 'MULTIPOINT_INTENT' ][ 'mac2' ] )
 
-        get_intent_result = main.ONOScli1.intents( json_format=False )
-        main.log.info( "intents = " + get_intent_result )
+        getIntentResult = main.ONOScli1.intents( jsonFormat=False )
+        main.log.info( "intents = " + getIntentResult )
 
         time.sleep( 10 )
-        get_flows_result = main.ONOScli1.flows( json_format=False )
-        main.log.info( "flows = " + get_flows_result )
+        getFlowsResult = main.ONOScli1.flows( jsonFormat=False )
+        main.log.info( "flows = " + getFlowsResult )
 
         count = 1
         i = 8
-        Ping_Result = main.TRUE
+        PingResult = main.TRUE
 
         main.log.info( "\n\nh" + str( i ) + " is Pinging h" + str( i + 2 ) )
         ping = main.Mininet1.pingHost(
             src="h" + str( i ), target="h" + str( i + 2 ) )
         if ping == main.FALSE and count < 3:
             count += 1
-            Ping_Result = main.FALSE
+            PingResult = main.FALSE
             main.log.report( "Ping between h" +
                              str( i ) +
                              " and h" +
@@ -1487,7 +1577,7 @@
                              str( i +
                                   10 ) +
                              "have failed" )
-            Ping_Result = main.FALSE
+            PingResult = main.FALSE
         elif ping == main.TRUE:
             main.log.info( "Ping test between h" +
                            str( i ) +
@@ -1495,29 +1585,33 @@
                            str( i +
                                 2 ) +
                            "passed!" )
-            Ping_Result = main.TRUE
+            PingResult = main.TRUE
         else:
             main.log.info( "Unknown error" )
-            Ping_Result = main.ERROR
+            PingResult = main.ERROR
 
-        if Ping_Result == main.FALSE:
+        if PingResult == main.FALSE:
             main.log.report( "Ping test failed." )
             # main.cleanup()
             # main.exit()
-        if Ping_Result == main.TRUE:
+        if PingResult == main.TRUE:
             main.log.report( "Ping all successful" )
 
-        p_intent_result = p_intent_result1 and p_intent_result2
-        if p_intent_result == main.TRUE:
+        pIntentResult = pIntentResult1 and pIntentResult2
+        if pIntentResult == main.TRUE:
             main.log.info(
-                "Multi point intent with rewrite mac address installation successful" )
+                "Multi point intent with rewrite mac " +
+                "address installation successful" )
         else:
             main.log.info(
-                "Multi point intent with rewrite mac address installation failed" )
+                "Multi point intent with rewrite mac" +
+                " address installation failed" )
 
-        case33_result = p_intent_result and Ping_Result
-        utilities.assert_equals(
+        case33Result = pIntentResult and PingResult
+        utilities.assertEquals(
             expect=main.TRUE,
-            actual=case33_result,
-            onpass="Ping all test after multipoint to single point intent addition with rewrite mac address successful",
-            onfail="Ping all test after multipoint to single point intent addition with rewrite mac address failed" )
+            actual=case33Result,
+            onpass="Ping all test after multipoint to single point" +
+            " intent addition with rewrite mac address successful",
+            onfail="Ping all test after multipoint to single point intent" +
+            " addition with rewrite mac address failed" )
diff --git a/TestON/tests/OpticalFunc13/OpticalFunc13.params b/TestON/tests/OpticalFunc13/OpticalFunc13.params
new file mode 100755
index 0000000..173d48b
--- /dev/null
+++ b/TestON/tests/OpticalFunc13/OpticalFunc13.params
@@ -0,0 +1,47 @@
+<PARAMS>
+    
+    <testcases>1,21,22,23</testcases>
+
+    #Environment variables
+    <ENV>
+        <cellName>driver_test</cellName>
+    </ENV>
+
+    <CTRL>
+        <ip1>10.128.20.11</ip1>
+        <port1>6633</port1>
+    </CTRL>
+
+    <PING>
+        <source1>h8</source1>
+        <source2>h9</source2>
+        <source3>h10</source3>
+        <source4>h11</source4>
+        <source5>h12</source5>
+        <source6>h13</source6>
+        <source7>h14</source7>
+        <source8>h15</source8>
+        <source9>h16</source9>
+        <source10>h17</source10>
+        <target1>10.0.0.18</target1>
+        <target2>10.0.0.19</target2>
+        <target3>10.0.0.20</target3>
+        <target4>10.0.0.21</target4>
+        <target5>10.0.0.22</target5>
+        <target6>10.0.0.23</target6>
+        <target7>10.0.0.24</target7>
+        <target8>10.0.0.25</target8>
+        <target9>10.0.0.26</target9>
+        <target10>10.0.0.27</target10>
+    </PING>
+
+    <timers>
+        <LinkDiscovery>5</LinkDiscovery>
+        <SwitchDiscovery>31</SwitchDiscovery>
+    </timers>
+
+    <OPTICAL>
+        <jsonfile> /home/admin/ONOS/tools/test/topos/oe-nonlinear-4.json </jsonfile>
+    </OPTICAL>    
+
+</PARAMS>
diff --git a/TestON/tests/OpticalFunc13/OpticalFunc13.py b/TestON/tests/OpticalFunc13/OpticalFunc13.py
new file mode 100755
index 0000000..7ddd532
--- /dev/null
+++ b/TestON/tests/OpticalFunc13/OpticalFunc13.py
@@ -0,0 +1,248 @@
+
+#Testing the basic functionality of ONOS Next
+#For sanity and driver functionality excercises only.
+
+import time
+import sys
+import os
+import re
+import time
+import json
+
+time.sleep(1)
+class OpticalFunc13:
+    def __init__(self):
+        self.default = ''
+
+    def CASE1(self, main):
+        '''
+        Startup sequence:
+        git pull
+        mvn clean install
+        onos-package
+        cell <name>
+        onos-verify-cell
+        onos-install -f
+        onos-wait-for-start
+        '''
+        
+        cell_name = main.params['ENV']['cellName']
+        ONOS1_ip = main.params['CTRL']['ip1']
+        ONOS1_port = main.params['CTRL']['port1']
+        
+        main.case("Setting up test environment")
+        
+        main.step("Git checkout and pull master and get version")
+        main.ONOSbench.git_checkout("master")
+        git_pull_result = main.ONOSbench.git_pull()
+        print "git_pull_result = ", git_pull_result
+        version_result = main.ONOSbench.get_version()
+        main.log.report(main.ONOSbench.get_version())
+        if git_pull_result == 1:
+            main.step("Using mvn clean & install")
+            clean_install_result = main.ONOSbench.clean_install()
+            #clean_install_result = main.TRUE
+
+        main.step("Applying cell variable to environment")
+        cell_result1 = main.ONOSbench.set_cell(cell_name)
+        verify_result = main.ONOSbench.verify_cell()
+        cell_result2 = main.ONOS2.set_cell(cell_name)
+        #verify_result = main.ONOS2.verify_cell()
+        main.ONOS2.start_onos_cli(ONOS_ip=main.params['CTRL']['ip1'])
+        
+        cell_result = cell_result1 and cell_result2
+
+        main.step("Creating ONOS package")
+        package_result = main.ONOSbench.onos_package()
+
+        #main.step("Creating a cell")
+        #cell_create_result = main.ONOSbench.create_cell_file(**************)
+
+        main.step("Installing ONOS package")
+        onos_install_result = main.ONOSbench.onos_install()
+        onos1_isup = main.ONOSbench.isup()
+   
+        main.step("Starting ONOS service")
+        start_result = main.ONOSbench.onos_start(ONOS1_ip)
+
+        case1_result = (package_result and\
+                cell_result and verify_result and onos_install_result and\
+                onos1_isup and start_result )
+        utilities.assert_equals(expect=main.TRUE, actual=case1_result,
+                onpass="Test startup successful",
+                onfail="Test startup NOT successful")
+
+    def CASE11(self, main):
+        '''
+        Cleanup sequence:
+        onos-service <node_ip> stop
+        onos-uninstall
+
+        TODO: Define rest of cleanup
+        
+        '''
+
+        ONOS1_ip = main.params['CTRL']['ip1']
+
+        main.case("Cleaning up test environment")
+
+        main.step("Testing ONOS kill function")
+        kill_result = main.ONOSbench.onos_kill(ONOS1_ip)
+
+        main.step("Stopping ONOS service")
+        stop_result = main.ONOSbench.onos_stop(ONOS1_ip)
+
+        main.step("Uninstalling ONOS service") 
+        uninstall_result = main.ONOSbench.onos_uninstall()
+
+
+    def CASE21(self, main):
+        import time
+        '''
+            On ONOS bench, run this command: ./~/ONOS/tools/test/bin/onos-topo-cfg
+            which starts the rest and copies the links json file to the onos instance
+            Note that in case of Packet Optical, the links are not learnt from the topology, instead the links are learnt 
+            from the json config file
+        '''
+        main.log.report("This testcase starts the packet layer topology and REST")
+        main.log.report("_____________________________________________")
+        sart_console_result = main.LincOE1.start_console()
+        optical_mn_script = main.LincOE2.run_optical_mn_script()
+        onos_topo_cfg_result = main.ONOSbench.run_onos_topo_cfg(instance_name = main.params['CTRL']['ip1'], json_file = main.params['OPTICAL']['jsonfile'])
+         
+
+
+    def CASE22(self, main):
+        '''
+            Curretly we use, 4 linear switch optical topology and 2 packet layer mininet switches each with one host.
+             Therefore, the roadmCount variable = 4, packetLayerSWCount variable = 2, hostCount =2
+            and this is hardcoded in the testcase. If the topology changes, these hardcoded values need to be changed
+        '''
+
+        main.log.report("This testcase compares the optical+packet topology against what is expected")
+        main.ONOS2.start_onos_cli(ONOS_ip=main.params['CTRL']['ip1'])
+        devices_result = main.ONOS2.devices(json_format = False)
+
+        print "devices_result = ", devices_result
+        devices_linewise = devices_result.split("\n")
+        devices_linewise = devices_linewise[1:-1]
+        roadmCount = 0
+        packetLayerSWCount = 0
+        for line in devices_linewise:
+            components = line.split(",")
+            availability = components[1].split("=")[1]
+            type = components[3].split("=")[1]
+            if availability == 'true' and type == 'ROADM':
+                roadmCount += 1
+            elif availability == 'true' and type =='SWITCH':
+                packetLayerSWCount += 1
+        if roadmCount == 4:
+            print "Number of Optical Switches = %d and is correctly detected" %roadmCount
+            main.log.info ("Number of Optical Switches = " +str(roadmCount) +" and is correctly detected")
+            opticalSW_result = main.TRUE
+        else:
+            print "Number of Optical Switches = %d and is wrong" %roadCount
+            main.log.info ("Number of Optical Switches = " +str(roadmCount) +" and is wrong")
+            opticalSW_result = main.FALSE
+
+        if packetLayerSWCount == 2:
+            print "Number of Packet layer or mininet Switches = %d and is correctly detected" %packetLayerSWCount
+            main.log.info("Number of Packet layer or mininet Switches = " +str(packetLayerSWCount) + " and is correctly detected")
+            packetSW_result = main.TRUE
+        else:
+            print "Number of Packet layer or mininet Switches = %d and is wrong" %packetLayerSWCount
+            main.log.info("Number of Packet layer or mininet Switches = " +str(packetLayerSWCount) + " and is wrong")
+            packetSW_result = main.FALSE
+        print "_________________________________"
+        
+        links_result = main.ONOS2.links(json_format = False)
+        print "links_result = ", links_result
+        print "_________________________________"
+        
+
+
+        #Discover hosts using pingall
+        pingall_result = main.LincOE2.pingall()    
+    
+        hosts_result = main.ONOS2.hosts(json_format = False)
+        print "hosts_result = ", hosts_result   
+        print "_________________________________"
+        hosts_linewise = hosts_result.split("\n")
+        hosts_linewise = hosts_linewise[1:-1]
+        hostCount = 0
+        for line in hosts_linewise:
+            hostid = line.split(",")[0].split("=")[1]
+            hostCount +=1
+        if hostCount ==2:
+            print "Number of hosts = %d and is correctly detected" %hostCount
+            main.log.info("Number of hosts = " + str(hostCount) +" and is correctly detected")
+            hostDiscovery = main.TRUE
+        else:
+            print "Number of hosts = %d and is wrong" %hostCount
+            main.log.info("Number of hosts = " + str(hostCount) +" and is wrong")
+            hostDiscovery = main.FALSE
+        
+        case22_result = opticalSW_result and packetSW_result and hostDiscovery
+        utilities.assert_equals(expect=main.TRUE, actual=case22_result,
+                onpass="Packet optical topology discovery successful",
+                onfail="Packet optical topology discovery failed")
+
+    def CASE23(self, main):
+        import time
+        '''
+            Add bidirectional point intents between 2 packet layer(mininet) devices and 
+            ping mininet hosts
+        '''
+        main.log.report("This testcase adds bidirectional point intents between 2 packet layer(mininet) devices and ping mininet hosts")
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000ffffffff0001", 1, "of:0000ffffffff0002", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+
+        ptp_intent_result = main.ONOS2.add_point_intent("of:0000ffffffff0002", 1, "of:0000ffffffff0001", 1)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+
+        time.sleep(10)
+        flowHandle = main.ONOS2.flows()
+        #print "flowHandle = ", flowHandle
+        main.log.info("flows :" + flowHandle)
+        intentHandle = main.ONOS2.intents()        
+        main.log.info("intents :" + intentHandle)        
+ 
+        Ping_Result = main.TRUE
+        count = 1
+        main.log.info("\n\nh1 is Pinging h2")
+        ping = main.LincOE2.pingHostOptical(src="h1", target="h2")
+        #ping = main.LincOE2.pinghost()
+        if ping == main.FALSE and count<5:
+            count+=1
+            Ping_Result = main.FALSE
+            main.log.report("Ping between h1 and h2  failed. Making attempt number "+str(count) + " in 2 seconds")
+            time.sleep(2)
+            ping = main.LincOE2.pingHostOptical(src="h1", target="h2")
+            #ping = main.LincOE2.pinghost()
+        elif ping==main.FALSE:
+            main.log.report("All ping attempts between h1 and h2 have failed")
+            Ping_Result = main.FALSE
+        elif ping==main.TRUE:
+            main.log.info("Ping test between h1 and h2 passed!")
+            Ping_Result = main.TRUE
+        else:
+            main.log.info("Unknown error")
+            Ping_Result = main.ERROR
+        
+        if Ping_Result==main.FALSE:
+            main.log.report("Point intents for packet optical have not ben installed correctly. Cleaning up")
+        if Ping_Result==main.TRUE:
+            main.log.report("Point Intents for packet optical have been installed correctly")
+
+        case23_result = Ping_Result
+        utilities.assert_equals(expect=main.TRUE, actual=case23_result,
+                onpass="Point intents addition for packet optical and Pingall Test successful",
+                onfail="Point intents addition for packet optical and Pingall Test NOT successful")
+
+
diff --git a/TestON/tests/OpticalFunc13/OpticalFunc13.topo b/TestON/tests/OpticalFunc13/OpticalFunc13.topo
new file mode 100755
index 0000000..a3d6cfd
--- /dev/null
+++ b/TestON/tests/OpticalFunc13/OpticalFunc13.topo
@@ -0,0 +1,94 @@
+<TOPOLOGY>
+    <COMPONENT>
+
+        <ONOSbench>
+            <host>10.128.10.11</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosDriver</type>
+            <connect_order>1</connect_order>
+            <COMPONENTS> </COMPONENTS>
+        </ONOSbench>
+
+        <ONOS1>
+            <host>10.128.10.11</host>
+            <user>sdn</user>
+            <password>sdn</password>
+            <type>OnosDriver</type>
+            <connect_order>2</connect_order>
+            <COMPONENTS> </COMPONENTS>
+        </ONOS1>
+
+        <ONOS2>
+            <host>10.128.10.11</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosCliDriver</type>
+            <connect_order>3</connect_order>
+            <COMPONENTS> </COMPONENTS>
+        </ONOS2>
+
+        <Mininet1>
+            <host>10.128.10.11</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>MininetCliDriver</type>
+            <connect_order>4</connect_order>
+            <COMPONENTS>
+                #Specify the Option for mininet
+                <arg1> --custom ~/mininet/custom/topo-HA.py </arg1>
+                <arg2> --topo mytopo </arg2>
+                <arg3> --switch ovs,protocols=OpenFlow13 </arg3>
+                <controller> remote </controller>
+            </COMPONENTS>
+        </Mininet1>
+
+        <Mininet2>
+            <host>10.128.10.11</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>RemoteMininetDriver</type>
+            <connect_order>5</connect_order>
+            <COMPONENTS>
+                #Specify the Option for mininet
+                <arg1> --custom ~/mininet/custom/topo-HA.py </arg1>
+                <arg2> --topo mytopo </arg2>
+                <arg3> --switch ovs,protocols=OpenFlow13 </arg3>
+                <controller> remote </controller>
+            </COMPONENTS>
+        </Mininet2>
+
+         <LincOE1>
+            <host>10.128.20.30</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>LincOEDriver</type>
+            <connect_order>6</connect_order>
+            <COMPONENTS>
+                <arg1> </arg1>
+            </COMPONENTS>
+        </LincOE1>
+
+         <LincOE2>
+            <host>10.128.20.30</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>RemoteMininetDriver</type>
+            <connect_order>7</connect_order>
+            <COMPONENTS>
+                <arg1> sudo python /home/admin/optical.py </arg1>
+                <arg2> </arg2>
+            </COMPONENTS>
+        </LincOE2>
+
+        <LincOE3>
+            <host>10.128.20.30</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>RemoteMininetDriver</type>
+            <connect_order>8</connect_order>
+        </LincOE3>
+ 
+    
+    </COMPONENT>
+</TOPOLOGY>
diff --git a/TestON/tests/OpticalFunc13/__init__.py b/TestON/tests/OpticalFunc13/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/tests/OpticalFunc13/__init__.py
diff --git a/TestON/tests/ProdFunc/ProdFunc.params b/TestON/tests/ProdFunc/ProdFunc.params
index 5de8118..1189301 100755
--- a/TestON/tests/ProdFunc/ProdFunc.params
+++ b/TestON/tests/ProdFunc/ProdFunc.params
@@ -1,7 +1,6 @@
 <PARAMS>
     
     <testcases>1,4,10,5,6,7,8,9,2,8,20,21,22,10,23,24</testcases>
-
     #Environment variables
     <ENV>
         <cellName>driver_test</cellName>
diff --git a/TestON/tests/ProdFunc/ProdFunc.py b/TestON/tests/ProdFunc/ProdFunc.py
index 6f4b72b..5e31df3 100755
--- a/TestON/tests/ProdFunc/ProdFunc.py
+++ b/TestON/tests/ProdFunc/ProdFunc.py
@@ -43,8 +43,8 @@
         main.step( "Removing raft logs before a clen installation of ONOS" )
         main.ONOSbench.onosRemoveRaftLogs()
 
-        main.step( "Git checkout and pull master and get version" )
-        main.ONOSbench.gitCheckout( "master" )
+        main.step( "Git checkout and get version" )
+        #main.ONOSbench.gitCheckout( "master" )
         gitPullResult = main.ONOSbench.gitPull()
         main.log.info( "git_pull_result = " + gitPullResult )
         main.ONOSbench.getVersion( report=True )
@@ -84,8 +84,8 @@
                         and onosInstallResult and
                         onos1Isup and startResult )
         utilities.assert_equals( expect=main.TRUE, actual=case1Result,
-                                onpass="Test startup successful",
-                                onfail="Test startup NOT successful" )
+                                 onpass="Test startup successful",
+                                 onfail="Test startup NOT successful" )
 
     def CASE2( self, main ):
         """
@@ -122,8 +122,8 @@
         else:
             case2Result = main.TRUE
         utilities.assert_equals( expect=main.TRUE, actual=case2Result,
-                                onpass="Switch down discovery successful",
-                                onfail="Switch down discovery failed" )
+                                 onpass="Switch down discovery successful",
+                                 onfail="Switch down discovery failed" )
 
     def CASE11( self, main ):
         """
@@ -149,8 +149,8 @@
 
         case11Result = killResult and stopResult and uninstallResult
         utilities.assert_equals( expect=main.TRUE, actual=case11Result,
-                                onpass="Cleanup successful",
-                                onfail="Cleanup failed" )
+                                 onpass="Cleanup successful",
+                                 onfail="Cleanup failed" )
 
     def CASE3( self, main ):
         """
@@ -178,8 +178,8 @@
         cellName = main.params[ 'ENV' ][ 'cellName' ]
         ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
 
-        main.log.report( "This testcase exits the mininet cli and reinstalls\
-                        ONOS to switch over to Packet Optical topology" )
+        main.log.report( "This testcase exits the mininet cli and reinstalls" +
+                         "ONOS to switch over to Packet Optical topology" )
         main.log.report( "_____________________________________________" )
         main.case( "Disconnecting mininet and restarting ONOS" )
         main.step( "Disconnecting mininet and restarting ONOS" )
@@ -214,10 +214,10 @@
         utilities.assert_equals(
             expect=main.TRUE,
             actual=case20Result,
-            onpass="Exiting functionality mininet topology and reinstalling \
-                    ONOS successful",
-            onfail="Exiting functionality mininet topology and reinstalling \
-                    ONOS failed" )
+            onpass= "Exiting functionality mininet topology and reinstalling" +
+                    " ONOS successful",
+            onfail= "Exiting functionality mininet topology and reinstalling" +
+                    " ONOS failed" )
 
     def CASE21( self, main ):
         """
@@ -262,8 +262,8 @@
             these hardcoded values need to be changed
         """
         main.log.report(
-            "This testcase compares the optical+packet topology against what\
-             is expected" )
+            "This testcase compares the optical+packet topology against what" +
+            " is expected" )
         main.case( "Topology comparision" )
         main.step( "Topology comparision" )
         main.ONOS3.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
@@ -283,8 +283,8 @@
             elif availability == 'true' and type == 'SWITCH':
                 packetLayerSWCount += 1
         if roadmCount == 4:
-            print "Number of Optical Switches = %d and is \
-                    correctly detected" % roadmCount
+            print "Number of Optical Switches = %d and is" % roadmCount +\
+                  " correctly detected"
             main.log.info(
                 "Number of Optical Switches = " +
                 str( roadmCount ) +
@@ -299,16 +299,16 @@
             opticalSWResult = main.FALSE
 
         if packetLayerSWCount == 2:
-            print "Number of Packet layer or mininet Switches = %d and \
-                    is correctly detected" % packetLayerSWCount
+            print "Number of Packet layer or mininet Switches = %d "\
+                    % packetLayerSWCount + "and is correctly detected"
             main.log.info(
                 "Number of Packet layer or mininet Switches = " +
                 str( packetLayerSWCount ) +
                 " and is correctly detected" )
             packetSWResult = main.TRUE
         else:
-            print "Number of Packet layer or mininet Switches = %d and \
-                    is wrong" % packetLayerSWCount
+            print "Number of Packet layer or mininet Switches = %d and"\
+                    % packetLayerSWCount + " is wrong"
             main.log.info(
                 "Number of Packet layer or mininet Switches = " +
                 str( packetLayerSWCount ) +
@@ -362,8 +362,8 @@
             ping mininet hosts
         """
         main.log.report(
-            "This testcase adds bidirectional point intents between 2 \
-                packet layer( mininet ) devices and ping mininet hosts" )
+            "This testcase adds bidirectional point intents between 2 " +
+            "packet layer( mininet ) devices and ping mininet hosts" )
         main.case( "Topology comparision" )
         main.step( "Adding point intents" )
         ptpIntentResult = main.ONOS3.addPointIntent(
@@ -414,21 +414,21 @@
 
         if PingResult == main.FALSE:
             main.log.report(
-                "Point intents for packet optical have not ben installed\
-                correctly. Cleaning up" )
+                "Point intents for packet optical have not ben installed" +
+                " correctly. Cleaning up" )
         if PingResult == main.TRUE:
             main.log.report(
-                "Point Intents for packet optical have been\
-                installed correctly" )
+                "Point Intents for packet optical have been " +
+                "installed correctly" )
 
         case23Result = PingResult
         utilities.assert_equals(
             expect=main.TRUE,
             actual=case23Result,
-            onpass="Point intents addition for packet optical and\
-                    Pingall Test successful",
-            onfail="Point intents addition for packet optical and\
-                    Pingall Test NOT successful" )
+            onpass= "Point intents addition for packet optical and" +
+                    "Pingall Test successful",
+            onfail= "Point intents addition for packet optical and" +
+                    "Pingall Test NOT successful" )
 
     def CASE24( self, main ):
         import time
@@ -461,11 +461,11 @@
                     linksState = item[ 'state' ]
                     if linksState == "INACTIVE":
                         main.log.info(
-                            "Links state is inactive as expected due to one \
-                            of the ports being down" )
+                            "Links state is inactive as expected due to one" +
+                            " of the ports being down" )
                         main.log.report(
-                            "Links state is inactive as expected due to one \
-                            of the ports being down" )
+                            "Links state is inactive as expected due to one" +
+                            " of the ports being down" )
                         linksStateResult = main.TRUE
                         break
                     else:
@@ -511,15 +511,15 @@
 
         case24Result = PingResult and linksStateResult
         utilities.assert_equals( expect=main.TRUE, actual=case24Result,
-                                onpass="Packet optical rerouting successful",
-                                onfail="Packet optical rerouting failed" )
+                                 onpass="Packet optical rerouting successful",
+                                 onfail="Packet optical rerouting failed" )
 
     def CASE4( self, main ):
         import re
         import time
-        main.log.report( "This testcase is testing the assignment of \
-                         all the switches to all the controllers and \
-                         discovering the hists in reactive mode" )
+        main.log.report( "This testcase is testing the assignment of" +
+                         " all the switches to all the controllers and" +
+                         " discovering the hists in reactive mode" )
         main.log.report( "__________________________________" )
         main.case( "Pingall Test" )
         main.step( "Assigning switches to controllers" )
@@ -644,11 +644,11 @@
 
         case4Result = SwitchMastership and pingResult
         if pingResult == main.TRUE:
-            main.log.report( "Pingall Test in reactive mode to \
-                             discover the hosts successful" )
+            main.log.report( "Pingall Test in reactive mode to" +
+                             " discover the hosts successful" )
         else:
-            main.log.report( "Pingall Test in reactive mode to \
-                              discover the hosts failed" )
+            main.log.report( "Pingall Test in reactive mode to" +
+                             " discover the hosts failed" )
 
         utilities.assert_equals(
             expect=main.TRUE,
@@ -681,8 +681,8 @@
             onfail="Reactive forwarding app uninstallation failed" )
 
     def CASE6( self ):
-        main.log.report( "This testcase is testing the addition of \
-                         host intents and then does pingall" )
+        main.log.report( "This testcase is testing the addition of" +
+                         " host intents and then does pingall" )
         main.log.report( "__________________________________" )
         main.case( "Obtaining host id's" )
         main.step( "Get hosts" )
@@ -785,7 +785,7 @@
                 PingResult = main.ERROR
         if PingResult == main.FALSE:
             main.log.report(
-                "Ping all test after Host intent addition failed. Cleaning up" )
+                "Ping all test after Host intent addition failed.Cleaning up" )
             # main.cleanup()
             # main.exit()
         if PingResult == main.TRUE:
@@ -802,10 +802,10 @@
     def CASE5( self, main ):
         import json
         # assumes that sts is already in you PYTHONPATH
-        from sts.topology.testonTopology import TestONTopology
+        from sts.topology.teston_topology import TestONTopology
         # main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
-        main.log.report( "This testcase is testing if all ONOS nodes \
-                         are in topology sync with mininet" )
+        main.log.report( "This testcase is testing if all ONOS nodes" +
+                         " are in topology sync with mininet" )
         main.log.report( "__________________________________" )
         main.case( "Comparing Mininet topology with the topology of ONOS" )
         main.step( "Start continuous pings" )
@@ -912,17 +912,17 @@
             onfail="Topology checks failed" )
 
     def CASE7( self, main ):
-        from sts.topology.testonTopology import TestONTopology
+        from sts.topology.teston_topology import TestONTopology
 
         linkSleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
 
-        main.log.report( "This testscase is killing a link to ensure that \
-                         link discovery is consistent" )
+        main.log.report( "This testscase is killing a link to ensure that" +
+                         " link discovery is consistent" )
         main.log.report( "__________________________________" )
-        main.log.report( "Killing a link to ensure that link discovery \
-                         is consistent" )
-        main.case( "Killing a link to Ensure that Link Discovery \
-                   is Working Properly" )
+        main.log.report( "Killing a link to ensure that link discovery" +
+                         " is consistent" )
+        main.case( "Killing a link to Ensure that Link Discovery" +
+                   "is Working Properly" )
         """
         main.step( "Start continuous pings" )
 
@@ -1050,15 +1050,15 @@
 
         result = LinkDown and LinkUp and TopologyCheck
         utilities.assert_equals( expect=main.TRUE, actual=result,
-                                onpass="Link failure is discovered correctly",
-                                onfail="Link Discovery failed" )
+                                 onpass="Link failure is discovered correctly",
+                                 onfail="Link Discovery failed" )
 
     def CASE8( self ):
         """
         Host intents removal
         """
-        main.log.report( "This testcase removes any previously added intents \
-                         before adding the same intents or point intents" )
+        main.log.report( "This testcase removes any previously added intents" +
+                         " before adding the same intents or point intents" )
         main.log.report( "__________________________________" )
         main.log.info( "Host intents removal" )
         main.case( "Removing host intents" )
@@ -1127,8 +1127,8 @@
             main.log.report( "Intent removal failed" )
 
         utilities.assert_equals( expect=main.FALSE, actual=case8Result,
-                                onpass="Intent removal test failed",
-                                onfail="Intent removal test passed" )
+                                 onpass="Intent removal test passed",
+                                 onfail="Intent removal test failed" )
 
     def CASE9( self ):
         main.log.report(
@@ -1136,12 +1136,13 @@
         main.log.report( "__________________________________" )
         main.log.info( "Adding point intents" )
         main.case(
-            "Adding bidirectional point for mn hosts \
-                  ( h8-h18, h9-h19, h10-h20, h11-h21, h12-h22,\
-                   h13-h23, h14-h24, h15-h25, h16-h26, h17-h27 )" )
-        main.step(
-            "Add point intents for mininet hosts h8 and h18 or \
-                  ONOS hosts h8 and h12" )
+            "Adding bidirectional point for mn hosts" +
+            "( h8-h18, h9-h19, h10-h20, h11-h21, h12-h22, " +
+            "h13-h23, h14-h24, h15-h25, h16-h26, h17-h27 )" )
+
+        main.step( "Add point intents for mn hosts h8 and h18 or" +
+                   "ONOS hosts h8 and h12" )
+        # main.step(var1)
         ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003008/1",
             "of:0000000000006018/1" )
@@ -1158,9 +1159,8 @@
             main.log.info( "Point to point intent install successful" )
             # main.log.info( getIntentResult )
 
-        main.step(
-            "Add point intents for mininet hosts h9 and h19 or \
-                  ONOS hosts h9 and h13" )
+        var2 = "Add point intents for mn hosts h9&h19 or ONOS hosts h9&h13"
+        main.step(var2)
         ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003009/1",
             "of:0000000000006019/1" )
@@ -1177,9 +1177,8 @@
             main.log.info( "Point to point intent install successful" )
             # main.log.info( getIntentResult )
 
-        main.step(
-            "Add point intents for mininet hosts h10 and h20 or \
-                  ONOS hosts hA and h14" )
+        var3 = "Add point intents for MN hosts h10&h20 or ONOS hosts hA&h14"
+        main.step(var3)
         ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003010/1",
             "of:0000000000006020/1" )
@@ -1196,9 +1195,9 @@
             main.log.info( "Point to point intent install successful" )
             # main.log.info( getIntentResult )
 
-        main.step(
-            "Add point intents for mininet hosts h11 and h21 or \
-                  ONOS hosts hB and h15" )
+        var4 = "Add point intents for mininet hosts h11 and h21 or" +\
+               " ONOS hosts hB and h15"
+        main.case(var4)
         ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003011/1",
             "of:0000000000006021/1" )
@@ -1215,9 +1214,9 @@
             main.log.info( "Point to point intent install successful" )
             # main.log.info( getIntentResult )
 
-        main.step(
-            "Add point intents for mininet hosts h12 and h22 \
-                  ONOS hosts hC and h16" )
+        var5 = "Add point intents for mininet hosts h12 and h22 " +\
+               "ONOS hosts hC and h16"
+        main.case(var5)
         ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003012/1",
             "of:0000000000006022/1" )
@@ -1234,9 +1233,9 @@
             main.log.info( "Point to point intent install successful" )
             # main.log.info( getIntentResult )
 
-        main.step(
-            "Add point intents for mininet hosts h13 and h23 or \
-                  ONOS hosts hD and h17" )
+        var6 = "Add point intents for mininet hosts h13 and h23 or" +\
+               " ONOS hosts hD and h17"
+        main.case(var6)
         ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003013/1",
             "of:0000000000006023/1" )
@@ -1253,9 +1252,9 @@
             main.log.info( "Point to point intent install successful" )
             # main.log.info( getIntentResult )
 
-        main.step(
-            "Add point intents for mininet hosts h14 and h24 or \
-                  ONOS hosts hE and h18" )
+        var7 = "Add point intents for mininet hosts h14 and h24 or" +\
+               " ONOS hosts hE and h18"
+        main.case(var7)
         ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003014/1",
             "of:0000000000006024/1" )
@@ -1272,9 +1271,9 @@
             main.log.info( "Point to point intent install successful" )
             # main.log.info( getIntentResult )
 
-        main.step(
-            "Add point intents for mininet hosts h15 and h25 or \
-                  ONOS hosts hF and h19" )
+        var8 = "Add point intents for mininet hosts h15 and h25 or" +\
+               " ONOS hosts hF and h19"
+        main.case(var8)
         ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003015/1",
             "of:0000000000006025/1" )
@@ -1291,9 +1290,9 @@
             main.log.info( "Point to point intent install successful" )
             # main.log.info( getIntentResult )
 
-        main.step(
-            "Add intents for mininet hosts h16 and h26 or \
-                  ONOS hosts h10 and h1A" )
+        var9 = "Add intents for mininet hosts h16 and h26 or" +\
+               " ONOS hosts h10 and h1A"
+        main.case(var9)
         ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003016/1",
             "of:0000000000006026/1" )
@@ -1310,9 +1309,9 @@
             main.log.info( "Point to point intent install successful" )
             # main.log.info( getIntentResult )
 
-        main.step(
-            "Add point intents for mininet hosts h17 and h27 or \
-                  ONOS hosts h11 and h1B" )
+        var10 = "Add point intents for mininet hosts h17 and h27 or" +\
+                " ONOS hosts h11 and h1B"
+        main.case(var10)
         ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003017/1",
             "of:0000000000006027/1" )
diff --git a/TestON/tests/ProdFunc/ProdFunc.py.fixed b/TestON/tests/ProdFunc/ProdFunc.py.fixed
new file mode 100644
index 0000000..6f4b72b
--- /dev/null
+++ b/TestON/tests/ProdFunc/ProdFunc.py.fixed
@@ -0,0 +1,1395 @@
+
+# Testing the basic functionality of ONOS Next
+# For sanity and driver functionality excercises only.
+
+import time
+# import sys
+# import os
+# import re
+import json
+
+time.sleep( 1 )
+
+
+class ProdFunc:
+
+    def __init__( self ):
+        self.default = ''
+
+    def CASE1( self, main ):
+        """
+        Startup sequence:
+        cell <name>
+        onos-verify-cell
+        onos-remove-raft-log
+        git pull
+        mvn clean install
+        onos-package
+        onos-install -f
+        onos-wait-for-start
+        """
+        cellName = main.params[ 'ENV' ][ 'cellName' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+
+        main.case( "Setting up test environment" )
+        main.log.report(
+            "This testcase is testing setting up test environment" )
+        main.log.report( "__________________________________" )
+
+        main.step( "Applying cell variable to environment" )
+        cellResult = main.ONOSbench.setCell( cellName )
+        verifyResult = main.ONOSbench.verifyCell()
+
+        main.step( "Removing raft logs before a clen installation of ONOS" )
+        main.ONOSbench.onosRemoveRaftLogs()
+
+        main.step( "Git checkout and pull master and get version" )
+        main.ONOSbench.gitCheckout( "master" )
+        gitPullResult = main.ONOSbench.gitPull()
+        main.log.info( "git_pull_result = " + gitPullResult )
+        main.ONOSbench.getVersion( report=True )
+
+        if gitPullResult == 1:
+            main.step( "Using mvn clean & install" )
+            main.ONOSbench.cleanInstall()
+        elif gitPullResult == 0:
+            main.log.report(
+                "Git Pull Failed, look into logs for detailed reason" )
+            main.cleanup()
+            main.exit()
+
+        main.step( "Creating ONOS package" )
+        packageResult = main.ONOSbench.onosPackage()
+
+        main.step( "Installing ONOS package" )
+        onosInstallResult = main.ONOSbench.onosInstall()
+        if onosInstallResult == main.TRUE:
+            main.log.report( "Installing ONOS package successful" )
+        else:
+            main.log.report( "Installing ONOS package failed" )
+
+        onos1Isup = main.ONOSbench.isup()
+        if onos1Isup == main.TRUE:
+            main.log.report( "ONOS instance is up and ready" )
+        else:
+            main.log.report( "ONOS instance may not be up" )
+
+        main.step( "Starting ONOS service" )
+        startResult = main.ONOSbench.onosStart( ONOS1Ip )
+
+        main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
+
+        case1Result = ( packageResult and
+                        cellResult and verifyResult
+                        and onosInstallResult and
+                        onos1Isup and startResult )
+        utilities.assert_equals( expect=main.TRUE, actual=case1Result,
+                                onpass="Test startup successful",
+                                onfail="Test startup NOT successful" )
+
+    def CASE2( self, main ):
+        """
+        Switch Down
+        """
+        # NOTE: You should probably run a topology check after this
+        import time
+
+        main.case( "Switch down discovery" )
+        main.log.report( "This testcase is testing a switch down discovery" )
+        main.log.report( "__________________________________" )
+
+        switchSleep = int( main.params[ 'timers' ][ 'SwitchDiscovery' ] )
+
+        description = "Killing a switch to ensure it is discovered correctly"
+        main.log.report( description )
+        main.case( description )
+
+        # TODO: Make this switch parameterizable
+        main.step( "Kill s28 " )
+        main.log.report( "Deleting s28" )
+        # FIXME: use new dynamic topo functions
+        main.Mininet1.delSwitch( "s28" )
+        main.log.info(
+            "Waiting " +
+            str( switchSleep ) +
+            " seconds for switch down to be discovered" )
+        time.sleep( switchSleep )
+        # Peek at the deleted switch
+        device = main.ONOS2.getDevice( dpid="0028" )
+        print "device = ", device
+        if device[ u'available' ] == 'False':
+            case2Result = main.FALSE
+        else:
+            case2Result = main.TRUE
+        utilities.assert_equals( expect=main.TRUE, actual=case2Result,
+                                onpass="Switch down discovery successful",
+                                onfail="Switch down discovery failed" )
+
+    def CASE11( self, main ):
+        """
+        Cleanup sequence:
+        onos-service <nodeIp> stop
+        onos-uninstall
+
+        TODO: Define rest of cleanup
+
+        """
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+
+        main.case( "Cleaning up test environment" )
+
+        main.step( "Testing ONOS kill function" )
+        killResult = main.ONOSbench.onosKill( ONOS1Ip )
+
+        main.step( "Stopping ONOS service" )
+        stopResult = main.ONOSbench.onosStop( ONOS1Ip )
+
+        main.step( "Uninstalling ONOS service" )
+        uninstallResult = main.ONOSbench.onosUninstall()
+
+        case11Result = killResult and stopResult and uninstallResult
+        utilities.assert_equals( expect=main.TRUE, actual=case11Result,
+                                onpass="Cleanup successful",
+                                onfail="Cleanup failed" )
+
+    def CASE3( self, main ):
+        """
+        Test 'onos' command and its functionality in driver
+        """
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+
+        main.case( "Testing 'onos' command" )
+
+        main.step( "Sending command 'onos -w <onos-ip> system:name'" )
+        cmdstr1 = "system:name"
+        cmdResult1 = main.ONOSbench.onosCli( ONOS1Ip, cmdstr1 )
+        main.log.info( "onos command returned: " + cmdResult1 )
+
+        main.step( "Sending command 'onos -w <onos-ip> onos:topology'" )
+        cmdstr2 = "onos:topology"
+        cmdResult2 = main.ONOSbench.onosCli( ONOS1Ip, cmdstr2 )
+        main.log.info( "onos command returned: " + cmdResult2 )
+
+    def CASE20( self ):
+        """
+            Exit from mininet cli
+            reinstall ONOS
+        """
+        cellName = main.params[ 'ENV' ][ 'cellName' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+
+        main.log.report( "This testcase exits the mininet cli and reinstalls\
+                        ONOS to switch over to Packet Optical topology" )
+        main.log.report( "_____________________________________________" )
+        main.case( "Disconnecting mininet and restarting ONOS" )
+        main.step( "Disconnecting mininet and restarting ONOS" )
+        mininetDisconnect = main.Mininet1.disconnect()
+
+        main.step( "Removing raft logs before a clen installation of ONOS" )
+        main.ONOSbench.onosRemoveRaftLogs()
+
+        main.step( "Applying cell variable to environment" )
+        cellResult = main.ONOSbench.setCell( cellName )
+        verifyResult = main.ONOSbench.verifyCell()
+
+        onosInstallResult = main.ONOSbench.onosInstall()
+        if onosInstallResult == main.TRUE:
+            main.log.report( "Installing ONOS package successful" )
+        else:
+            main.log.report( "Installing ONOS package failed" )
+
+        onos1Isup = main.ONOSbench.isup()
+        if onos1Isup == main.TRUE:
+            main.log.report( "ONOS instance is up and ready" )
+        else:
+            main.log.report( "ONOS instance may not be up" )
+
+        main.step( "Starting ONOS service" )
+        startResult = main.ONOSbench.onosStart( ONOS1Ip )
+
+        main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
+        case20Result = mininetDisconnect and cellResult and verifyResult \
+            and onosInstallResult and onos1Isup and \
+            startResult
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case20Result,
+            onpass="Exiting functionality mininet topology and reinstalling \
+                    ONOS successful",
+            onfail="Exiting functionality mininet topology and reinstalling \
+                    ONOS failed" )
+
+    def CASE21( self, main ):
+        """
+            On ONOS bench, run this command:
+             ./~/ONOS/tools/test/bin/onos-topo-cfg
+            which starts the rest and copies the links
+            json file to the onos instance.
+            Note that in case of Packet Optical, the links are not learnt
+            from the topology, instead the links are learnt
+            from the json config file
+        """
+        main.log.report(
+            "This testcase starts the packet layer topology and REST" )
+        main.log.report( "_____________________________________________" )
+        main.case( "Starting LINC-OE and other components" )
+        main.step( "Starting LINC-OE and other components" )
+        startConsoleResult = main.LincOE1.startConsole()
+        opticalMnScript = main.LincOE2.runOpticalMnScript()
+        onosTopoCfgResult = main.ONOSbench.runOnosTopoCfg(
+            instanceName=main.params[ 'CTRL' ][ 'ip1' ],
+            jsonFile=main.params[ 'OPTICAL' ][ 'jsonfile' ] )
+
+        print "start_console_result =", startConsoleResult
+        print "optical_mn_script = ", opticalMnScript
+        print "onos_topo_cfg_result =", onosTopoCfgResult
+
+        case21Result = startConsoleResult and opticalMnScript and \
+            onosTopoCfgResult
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case21Result,
+            onpass="Packet optical topology spawned successsfully",
+            onfail="Packet optical topology spawning failed" )
+
+    def CASE22( self, main ):
+        """
+            Curretly we use, 4 linear switch optical topology and
+            2 packet layer mininet switches each with one host.
+            Therefore, the roadmCount variable = 4,
+            packetLayerSWCount variable = 2 and hostCount = 2
+            and this is hardcoded in the testcase. If the topology changes,
+            these hardcoded values need to be changed
+        """
+        main.log.report(
+            "This testcase compares the optical+packet topology against what\
+             is expected" )
+        main.case( "Topology comparision" )
+        main.step( "Topology comparision" )
+        main.ONOS3.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
+        devicesResult = main.ONOS3.devices( jsonFormat=False )
+
+        print "devices_result = ", devicesResult
+        devicesLinewise = devicesResult.split( "\n" )
+        devicesLinewise = devicesLinewise[ 1:-1 ]
+        roadmCount = 0
+        packetLayerSWCount = 0
+        for line in devicesLinewise:
+            components = line.split( "," )
+            availability = components[ 1 ].split( "=" )[ 1 ]
+            type = components[ 3 ].split( "=" )[ 1 ]
+            if availability == 'true' and type == 'ROADM':
+                roadmCount += 1
+            elif availability == 'true' and type == 'SWITCH':
+                packetLayerSWCount += 1
+        if roadmCount == 4:
+            print "Number of Optical Switches = %d and is \
+                    correctly detected" % roadmCount
+            main.log.info(
+                "Number of Optical Switches = " +
+                str( roadmCount ) +
+                " and is correctly detected" )
+            opticalSWResult = main.TRUE
+        else:
+            print "Number of Optical Switches = %d and is wrong" % roadmCount
+            main.log.info(
+                "Number of Optical Switches = " +
+                str( roadmCount ) +
+                " and is wrong" )
+            opticalSWResult = main.FALSE
+
+        if packetLayerSWCount == 2:
+            print "Number of Packet layer or mininet Switches = %d and \
+                    is correctly detected" % packetLayerSWCount
+            main.log.info(
+                "Number of Packet layer or mininet Switches = " +
+                str( packetLayerSWCount ) +
+                " and is correctly detected" )
+            packetSWResult = main.TRUE
+        else:
+            print "Number of Packet layer or mininet Switches = %d and \
+                    is wrong" % packetLayerSWCount
+            main.log.info(
+                "Number of Packet layer or mininet Switches = " +
+                str( packetLayerSWCount ) +
+                " and is wrong" )
+            packetSWResult = main.FALSE
+        print "_________________________________"
+
+        linksResult = main.ONOS3.links( jsonFormat=False )
+        print "links_result = ", linksResult
+        print "_________________________________"
+
+        # NOTE:Since only point intents are added, there is no
+        # requirement to discover the hosts
+        # Therfore, the below portion of the code is commented.
+        """
+        #Discover hosts using pingall
+        pingallResult = main.LincOE2.pingall()
+
+        hostsResult = main.ONOS3.hosts( jsonFormat=False )
+        main.log.info( "hosts_result = "+hostsResult )
+        main.log.info( "_________________________________" )
+        hostsLinewise = hostsResult.split( "\n" )
+        hostsLinewise = hostsLinewise[ 1:-1 ]
+        hostCount = 0
+        for line in hostsLinewise:
+            hostid = line.split( "," )[ 0 ].split( "=" )[ 1 ]
+            hostCount +=1
+        if hostCount ==2:
+            print "Number of hosts = %d and is correctly detected" %hostCount
+            main.log.info( "Number of hosts = " + str( hostCount ) +" and \
+                            is correctly detected" )
+            hostDiscovery = main.TRUE
+        else:
+            print "Number of hosts = %d and is wrong" %hostCount
+            main.log.info( "Number of hosts = " + str( hostCount ) +" and \
+                            is wrong" )
+            hostDiscovery = main.FALSE
+        """
+        case22Result = opticalSWResult and packetSWResult
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case22Result,
+            onpass="Packet optical topology discovery successful",
+            onfail="Packet optical topology discovery failed" )
+
+    def CASE23( self, main ):
+        import time
+        """
+            Add bidirectional point intents between 2 packet layer( mininet )
+            devices and
+            ping mininet hosts
+        """
+        main.log.report(
+            "This testcase adds bidirectional point intents between 2 \
+                packet layer( mininet ) devices and ping mininet hosts" )
+        main.case( "Topology comparision" )
+        main.step( "Adding point intents" )
+        ptpIntentResult = main.ONOS3.addPointIntent(
+            "of:0000ffffffff0001/1",
+            "of:0000ffffffff0002/1" )
+        if ptpIntentResult == main.TRUE:
+            main.ONOS3.intents( jsonFormat=False )
+            main.log.info( "Point to point intent install successful" )
+
+        ptpIntentResult = main.ONOS3.addPointIntent(
+            "of:0000ffffffff0002/1",
+            "of:0000ffffffff0001/1" )
+        if ptpIntentResult == main.TRUE:
+            main.ONOS3.intents( jsonFormat=False )
+            main.log.info( "Point to point intent install successful" )
+
+        time.sleep( 10 )
+        flowHandle = main.ONOS3.flows()
+        main.log.info( "flows :" + flowHandle )
+
+        # Sleep for 30 seconds to provide time for the intent state to change
+        time.sleep( 30 )
+        intentHandle = main.ONOS3.intents( jsonFormat=False )
+        main.log.info( "intents :" + intentHandle )
+
+        PingResult = main.TRUE
+        count = 1
+        main.log.info( "\n\nh1 is Pinging h2" )
+        ping = main.LincOE2.pingHostOptical( src="h1", target="h2" )
+        # ping = main.LincOE2.pinghost()
+        if ping == main.FALSE and count < 5:
+            count += 1
+            PingResult = main.FALSE
+            main.log.info(
+                "Ping between h1 and h2  failed. Making attempt number " +
+                str( count ) +
+                " in 2 seconds" )
+            time.sleep( 2 )
+        elif ping == main.FALSE:
+            main.log.info( "All ping attempts between h1 and h2 have failed" )
+            PingResult = main.FALSE
+        elif ping == main.TRUE:
+            main.log.info( "Ping test between h1 and h2 passed!" )
+            PingResult = main.TRUE
+        else:
+            main.log.info( "Unknown error" )
+            PingResult = main.ERROR
+
+        if PingResult == main.FALSE:
+            main.log.report(
+                "Point intents for packet optical have not ben installed\
+                correctly. Cleaning up" )
+        if PingResult == main.TRUE:
+            main.log.report(
+                "Point Intents for packet optical have been\
+                installed correctly" )
+
+        case23Result = PingResult
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case23Result,
+            onpass="Point intents addition for packet optical and\
+                    Pingall Test successful",
+            onfail="Point intents addition for packet optical and\
+                    Pingall Test NOT successful" )
+
+    def CASE24( self, main ):
+        import time
+        import json
+        """
+            Test Rerouting of Packet Optical by bringing a port down
+            ( port 22 ) of a switch( switchID=1 ), so that link
+            ( between switch1 port22 - switch4-port30 ) is inactive
+            and do a ping test. If rerouting is successful,
+            ping should pass. also check the flows
+        """
+        main.log.report(
+            "This testcase tests rerouting and pings mininet hosts" )
+        main.case( "Test rerouting and pings mininet hosts" )
+        main.step( "Bring a port down and verify the link state" )
+        main.LincOE1.portDown( swId="1", ptId="22" )
+        linksNonjson = main.ONOS3.links( jsonFormat=False )
+        main.log.info( "links = " + linksNonjson )
+
+        links = main.ONOS3.links()
+        main.log.info( "links = " + links )
+
+        linksResult = json.loads( links )
+        linksStateResult = main.FALSE
+        for item in linksResult:
+            if item[ 'src' ][ 'device' ] == "of:0000ffffffffff01" and item[
+                    'src' ][ 'port' ] == "22":
+                if item[ 'dst' ][ 'device' ] == "of:0000ffffffffff04" and item[
+                        'dst' ][ 'port' ] == "30":
+                    linksState = item[ 'state' ]
+                    if linksState == "INACTIVE":
+                        main.log.info(
+                            "Links state is inactive as expected due to one \
+                            of the ports being down" )
+                        main.log.report(
+                            "Links state is inactive as expected due to one \
+                            of the ports being down" )
+                        linksStateResult = main.TRUE
+                        break
+                    else:
+                        main.log.info(
+                            "Links state is not inactive as expected" )
+                        main.log.report(
+                            "Links state is not inactive as expected" )
+                        linksStateResult = main.FALSE
+
+        print "links_state_result = ", linksStateResult
+        time.sleep( 10 )
+        flowHandle = main.ONOS3.flows()
+        main.log.info( "flows :" + flowHandle )
+
+        main.step( "Verify Rerouting by a ping test" )
+        PingResult = main.TRUE
+        count = 1
+        main.log.info( "\n\nh1 is Pinging h2" )
+        ping = main.LincOE2.pingHostOptical( src="h1", target="h2" )
+        # ping = main.LincOE2.pinghost()
+        if ping == main.FALSE and count < 5:
+            count += 1
+            PingResult = main.FALSE
+            main.log.info(
+                "Ping between h1 and h2  failed. Making attempt number " +
+                str( count ) +
+                " in 2 seconds" )
+            time.sleep( 2 )
+        elif ping == main.FALSE:
+            main.log.info( "All ping attempts between h1 and h2 have failed" )
+            PingResult = main.FALSE
+        elif ping == main.TRUE:
+            main.log.info( "Ping test between h1 and h2 passed!" )
+            PingResult = main.TRUE
+        else:
+            main.log.info( "Unknown error" )
+            PingResult = main.ERROR
+
+        if PingResult == main.TRUE:
+            main.log.report( "Ping test successful " )
+        if PingResult == main.FALSE:
+            main.log.report( "Ping test failed" )
+
+        case24Result = PingResult and linksStateResult
+        utilities.assert_equals( expect=main.TRUE, actual=case24Result,
+                                onpass="Packet optical rerouting successful",
+                                onfail="Packet optical rerouting failed" )
+
+    def CASE4( self, main ):
+        import re
+        import time
+        main.log.report( "This testcase is testing the assignment of \
+                         all the switches to all the controllers and \
+                         discovering the hists in reactive mode" )
+        main.log.report( "__________________________________" )
+        main.case( "Pingall Test" )
+        main.step( "Assigning switches to controllers" )
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS1Port = main.params[ 'CTRL' ][ 'port1' ]
+        for i in range( 1, 29 ):
+            if i == 1:
+                main.Mininet1.assignSwController(
+                    sw=str( i ),
+                    ip1=ONOS1Ip,
+                    port1=ONOS1Port )
+            elif i >= 2 and i < 5:
+                main.Mininet1.assignSwController(
+                    sw=str( i ),
+                    ip1=ONOS1Ip,
+                    port1=ONOS1Port )
+            elif i >= 5 and i < 8:
+                main.Mininet1.assignSwController(
+                    sw=str( i ),
+                    ip1=ONOS1Ip,
+                    port1=ONOS1Port )
+            elif i >= 8 and i < 18:
+                main.Mininet1.assignSwController(
+                    sw=str( i ),
+                    ip1=ONOS1Ip,
+                    port1=ONOS1Port )
+            elif i >= 18 and i < 28:
+                main.Mininet1.assignSwController(
+                    sw=str( i ),
+                    ip1=ONOS1Ip,
+                    port1=ONOS1Port )
+            else:
+                main.Mininet1.assignSwController(
+                    sw=str( i ),
+                    ip1=ONOS1Ip,
+                    port1=ONOS1Port )
+        SwitchMastership = main.TRUE
+        for i in range( 1, 29 ):
+            if i == 1:
+                response = main.Mininet1.getSwController( "s" + str( i ) )
+                print( "Response is " + str( response ) )
+                if re.search( "tcp:" + ONOS1Ip, response ):
+                    SwitchMastership = SwitchMastership and main.TRUE
+                else:
+                    SwitchMastership = main.FALSE
+            elif i >= 2 and i < 5:
+                response = main.Mininet1.getSwController( "s" + str( i ) )
+                print( "Response is " + str( response ) )
+                if re.search( "tcp:" + ONOS1Ip, response ):
+                    SwitchMastership = SwitchMastership and main.TRUE
+                else:
+                    SwitchMastership = main.FALSE
+            elif i >= 5 and i < 8:
+                response = main.Mininet1.getSwController( "s" + str( i ) )
+                print( "Response is " + str( response ) )
+                if re.search( "tcp:" + ONOS1Ip, response ):
+                    SwitchMastership = SwitchMastership and main.TRUE
+                else:
+                    SwitchMastership = main.FALSE
+            elif i >= 8 and i < 18:
+                response = main.Mininet1.getSwController( "s" + str( i ) )
+                print( "Response is " + str( response ) )
+                if re.search( "tcp:" + ONOS1Ip, response ):
+                    SwitchMastership = SwitchMastership and main.TRUE
+                else:
+                    SwitchMastership = main.FALSE
+            elif i >= 18 and i < 28:
+                response = main.Mininet1.getSwController( "s" + str( i ) )
+                print( "Response is " + str( response ) )
+                if re.search( "tcp:" + ONOS1Ip, response ):
+                    SwitchMastership = SwitchMastership and main.TRUE
+                else:
+                    SwitchMastership = main.FALSE
+            else:
+                response = main.Mininet1.getSwController( "s" + str( i ) )
+                print( "Response is" + str( response ) )
+                if re.search( "tcp:" + ONOS1Ip, response ):
+                    SwitchMastership = SwitchMastership and main.TRUE
+                else:
+                    SwitchMastership = main.FALSE
+
+        if SwitchMastership == main.TRUE:
+            main.log.report( "Controller assignmnet successful" )
+        else:
+            main.log.report( "Controller assignmnet failed" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=SwitchMastership,
+            onpass="MasterControllers assigned correctly" )
+        """
+        for i in range ( 1,29 ):
+            main.Mininet1.assignSwController( sw=str( i ),count=5,
+                    ip1=ONOS1Ip,port1=ONOS1Port,
+                    ip2=ONOS2Ip,port2=ONOS2Port,
+                    ip3=ONOS3Ip,port3=ONOS3Port,
+                    ip4=ONOS4Ip,port4=ONOS4Port,
+                    ip5=ONOS5Ip,port5=ONOS5Port )
+        """
+        # REACTIVE FWD test
+
+        main.step( "Get list of hosts from Mininet" )
+        hostList = main.Mininet1.getHosts()
+        main.log.info( hostList )
+
+        main.step( "Get host list in ONOS format" )
+        hostOnosList = main.ONOS2.getHostsId( hostList )
+        main.log.info( hostOnosList )
+        # time.sleep( 5 )
+
+        main.step( "Pingall" )
+        pingResult = main.FALSE
+        while pingResult == main.FALSE:
+            time1 = time.time()
+            pingResult = main.Mininet1.pingall()
+            time2 = time.time()
+            print "Time for pingall: %2f seconds" % ( time2 - time1 )
+
+        # Start onos cli again because u might have dropped out of
+        # onos prompt to the shell prompt
+        # if there was no activity
+        main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
+
+        case4Result = SwitchMastership and pingResult
+        if pingResult == main.TRUE:
+            main.log.report( "Pingall Test in reactive mode to \
+                             discover the hosts successful" )
+        else:
+            main.log.report( "Pingall Test in reactive mode to \
+                              discover the hosts failed" )
+
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case4Result,
+            onpass="Controller assignment and Pingall Test successful",
+            onfail="Controller assignment and Pingall Test NOT successful" )
+
+    def CASE10( self ):
+        main.log.report(
+            "This testcase uninstalls the reactive forwarding app" )
+        main.log.report( "__________________________________" )
+        main.case( "Uninstalling reactive forwarding app" )
+        # Unistall onos-app-fwd app to disable reactive forwarding
+        appUninstallResult = main.ONOS2.featureUninstall( "onos-app-fwd" )
+        main.log.info( "onos-app-fwd uninstalled" )
+
+        # After reactive forwarding is disabled, the reactive flows on
+        # switches timeout in 10-15s
+        # So sleep for 15s
+        time.sleep( 15 )
+
+        flows = main.ONOS2.flows()
+        main.log.info( flows )
+
+        case10Result = appUninstallResult
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case10Result,
+            onpass="Reactive forwarding app uninstallation successful",
+            onfail="Reactive forwarding app uninstallation failed" )
+
+    def CASE6( self ):
+        main.log.report( "This testcase is testing the addition of \
+                         host intents and then does pingall" )
+        main.log.report( "__________________________________" )
+        main.case( "Obtaining host id's" )
+        main.step( "Get hosts" )
+        hosts = main.ONOS2.hosts()
+        main.log.info( hosts )
+
+        main.step( "Get all devices id" )
+        devicesIdList = main.ONOS2.getAllDevicesId()
+        main.log.info( devicesIdList )
+
+        # ONOS displays the hosts in hex format unlike mininet which does
+        # in decimal format
+        # So take care while adding intents
+        """
+        main.step( "Add host-to-host intents for mininet hosts h8 and h18 or
+                    ONOS hosts h8 and h12" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:08/-1", "00:00:00:00:00:12/-1" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:09/-1", "00:00:00:00:00:13/-1" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:0A/-1", "00:00:00:00:00:14/-1" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:0B/-1", "00:00:00:00:00:15/-1" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:0C/-1", "00:00:00:00:00:16/-1" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:0D/-1", "00:00:00:00:00:17/-1" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:0E/-1", "00:00:00:00:00:18/-1" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:0F/-1", "00:00:00:00:00:19/-1" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:10/-1", "00:00:00:00:00:1A/-1" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:11/-1", "00:00:00:00:00:1B/-1" )
+        print "______________________________________________________"
+        """
+        for i in range( 8, 18 ):
+            main.log.info(
+                "Adding host intent between h" + str( i ) +
+                " and h" + str( i + 10 ) )
+            host1 = "00:00:00:00:00:" + \
+                str( hex( i )[ 2: ] ).zfill( 2 ).upper()
+            host2 = "00:00:00:00:00:" + \
+                str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
+            # NOTE: get host can return None
+            # TODO: handle this
+            host1Id = main.ONOS2.getHost( host1 )[ 'id' ]
+            host2Id = main.ONOS2.getHost( host2 )[ 'id' ]
+            main.ONOS2.addHostIntent( host1Id, host2Id )
+
+        time.sleep( 10 )
+        hIntents = main.ONOS2.intents( jsonFormat=False )
+        main.log.info( "intents:" + hIntents )
+        main.ONOS2.flows()
+
+        count = 1
+        i = 8
+        PingResult = main.TRUE
+        # while i<10:
+        while i < 18:
+            main.log.info(
+                "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
+            ping = main.Mininet1.pingHost(
+                src="h" + str( i ), target="h" + str( i + 10 ) )
+            if ping == main.FALSE and count < 5:
+                count += 1
+                # i = 8
+                PingResult = main.FALSE
+                main.log.report( "Ping between h" +
+                                 str( i ) +
+                                 " and h" +
+                                 str( i +
+                                      10 ) +
+                                 " failed. Making attempt number " +
+                                 str( count ) +
+                                 " in 2 seconds" )
+                time.sleep( 2 )
+            elif ping == main.FALSE:
+                main.log.report( "All ping attempts between h" +
+                                 str( i ) +
+                                 " and h" +
+                                 str( i +
+                                      10 ) +
+                                 "have failed" )
+                i = 19
+                PingResult = main.FALSE
+            elif ping == main.TRUE:
+                main.log.info( "Ping test between h" +
+                               str( i ) +
+                               " and h" +
+                               str( i +
+                                    10 ) +
+                               "passed!" )
+                i += 1
+                PingResult = main.TRUE
+            else:
+                main.log.info( "Unknown error" )
+                PingResult = main.ERROR
+        if PingResult == main.FALSE:
+            main.log.report(
+                "Ping all test after Host intent addition failed. Cleaning up" )
+            # main.cleanup()
+            # main.exit()
+        if PingResult == main.TRUE:
+            main.log.report(
+                "Ping all test after Host intent addition successful" )
+
+        case6Result = PingResult
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case6Result,
+            onpass="Pingall Test after Host intents addition successful",
+            onfail="Pingall Test after Host intents addition failed" )
+
+    def CASE5( self, main ):
+        import json
+        # assumes that sts is already in you PYTHONPATH
+        from sts.topology.testonTopology import TestONTopology
+        # main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
+        main.log.report( "This testcase is testing if all ONOS nodes \
+                         are in topology sync with mininet" )
+        main.log.report( "__________________________________" )
+        main.case( "Comparing Mininet topology with the topology of ONOS" )
+        main.step( "Start continuous pings" )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source1' ],
+            target=main.params[ 'PING' ][ 'target1' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source2' ],
+            target=main.params[ 'PING' ][ 'target2' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source3' ],
+            target=main.params[ 'PING' ][ 'target3' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source4' ],
+            target=main.params[ 'PING' ][ 'target4' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source5' ],
+            target=main.params[ 'PING' ][ 'target5' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source6' ],
+            target=main.params[ 'PING' ][ 'target6' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source7' ],
+            target=main.params[ 'PING' ][ 'target7' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source8' ],
+            target=main.params[ 'PING' ][ 'target8' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source9' ],
+            target=main.params[ 'PING' ][ 'target9' ],
+            pingTime=500 )
+        main.Mininet2.pingLong(
+            src=main.params[ 'PING' ][ 'source10' ],
+            target=main.params[ 'PING' ][ 'target10' ],
+            pingTime=500 )
+
+        main.step( "Create TestONTopology object" )
+        global ctrls
+        ctrls = []
+        count = 1
+        while True:
+            temp = ()
+            if ( 'ip' + str( count ) ) in main.params[ 'CTRL' ]:
+                temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
+                temp = temp + ( "ONOS" + str( count ), )
+                temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
+                temp = temp + \
+                    ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
+                ctrls.append( temp )
+                count = count + 1
+            else:
+                break
+        global MNTopo
+        Topo = TestONTopology(
+            main.Mininet1,
+            ctrls )  # can also add Intent API info for intent operations
+        MNTopo = Topo
+
+        TopologyCheck = main.TRUE
+        main.step( "Compare ONOS Topology to MN Topology" )
+        devicesJson = main.ONOS2.devices()
+        linksJson = main.ONOS2.links()
+        # portsJson = main.ONOS2.ports()
+
+        result1 = main.Mininet1.compareSwitches(
+            MNTopo,
+            json.loads( devicesJson ) )
+        result2 = main.Mininet1.compareLinks(
+            MNTopo,
+            json.loads( linksJson ) )
+        # result3 = main.Mininet1.comparePorts(
+        # MNTopo, json.loads( portsJson ) )
+
+        # result = result1 and result2 and result3
+        result = result1 and result2
+
+        print "***********************"
+        if result == main.TRUE:
+            main.log.report( "ONOS" + " Topology matches MN Topology" )
+        else:
+            main.log.report( "ONOS" + " Topology does not match MN Topology" )
+
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=result,
+            onpass="ONOS" +
+            " Topology matches MN Topology",
+            onfail="ONOS" +
+            " Topology does not match MN Topology" )
+
+        TopologyCheck = TopologyCheck and result
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=TopologyCheck,
+            onpass="Topology checks passed",
+            onfail="Topology checks failed" )
+
+    def CASE7( self, main ):
+        from sts.topology.testonTopology import TestONTopology
+
+        linkSleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
+
+        main.log.report( "This testscase is killing a link to ensure that \
+                         link discovery is consistent" )
+        main.log.report( "__________________________________" )
+        main.log.report( "Killing a link to ensure that link discovery \
+                         is consistent" )
+        main.case( "Killing a link to Ensure that Link Discovery \
+                   is Working Properly" )
+        """
+        main.step( "Start continuous pings" )
+
+        main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source1' ],
+                               target=main.params[ 'PING' ][ 'target1' ],
+                               pingTime=500 )
+        main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source2' ],
+                               target=main.params[ 'PING' ][ 'target2' ],
+                               pingTime=500 )
+        main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source3' ],
+                               target=main.params[ 'PING' ][ 'target3' ],
+                               pingTime=500 )
+        main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source4' ],
+                               target=main.params[ 'PING' ][ 'target4' ],
+                               pingTime=500 )
+        main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source5' ],
+                               target=main.params[ 'PING' ][ 'target5' ],
+                               pingTime=500 )
+        main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source6' ],
+                               target=main.params[ 'PING' ][ 'target6' ],
+                               pingTime=500 )
+        main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source7' ],
+                               target=main.params[ 'PING' ][ 'target7' ],
+                               pingTime=500 )
+        main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source8' ],
+                               target=main.params[ 'PING' ][ 'target8' ],
+                               pingTime=500 )
+        main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source9' ],
+                               target=main.params[ 'PING' ][ 'target9' ],
+                               pingTime=500 )
+        main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source10' ],
+                               target=main.params[ 'PING' ][ 'target10' ],
+                               pingTime=500 )
+        """
+        main.step( "Determine the current number of switches and links" )
+        topologyOutput = main.ONOS2.topology()
+        topologyResult = main.ONOS1.getTopology( topologyOutput )
+        activeSwitches = topologyResult[ 'devices' ]
+        links = topologyResult[ 'links' ]
+        print "activeSwitches = ", type( activeSwitches )
+        print "links = ", type( links )
+        main.log.info(
+            "Currently there are %s switches and %s links" %
+            ( str( activeSwitches ), str( links ) ) )
+
+        main.step( "Kill Link between s3 and s28" )
+        main.Mininet1.link( END1="s3", END2="s28", OPTION="down" )
+        time.sleep( linkSleep )
+        topologyOutput = main.ONOS2.topology()
+        LinkDown = main.ONOS1.checkStatus(
+            topologyOutput, activeSwitches, str(
+                int( links ) - 2 ) )
+        if LinkDown == main.TRUE:
+            main.log.report( "Link Down discovered properly" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=LinkDown,
+            onpass="Link Down discovered properly",
+            onfail="Link down was not discovered in " +
+            str( linkSleep ) +
+            " seconds" )
+
+        # Check ping result here..add code for it
+
+        main.step( "Bring link between s3 and s28 back up" )
+        LinkUp = main.Mininet1.link( END1="s3", END2="s28", OPTION="up" )
+        time.sleep( linkSleep )
+        topologyOutput = main.ONOS2.topology()
+        LinkUp = main.ONOS1.checkStatus(
+            topologyOutput,
+            activeSwitches,
+            str( links ) )
+        if LinkUp == main.TRUE:
+            main.log.report( "Link up discovered properly" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=LinkUp,
+            onpass="Link up discovered properly",
+            onfail="Link up was not discovered in " +
+            str( linkSleep ) +
+            " seconds" )
+
+        # NOTE Check ping result here..add code for it
+
+        main.step( "Compare ONOS Topology to MN Topology" )
+        Topo = TestONTopology(
+            main.Mininet1,
+            ctrls )  # can also add Intent API info for intent operations
+        MNTopo = Topo
+        TopologyCheck = main.TRUE
+
+        devicesJson = main.ONOS2.devices()
+        linksJson = main.ONOS2.links()
+        portsJson = main.ONOS2.ports()
+
+        result1 = main.Mininet1.compareSwitches(
+            MNTopo,
+            json.loads( devicesJson ) )
+        result2 = main.Mininet1.compareLinks(
+            MNTopo,
+            json.loads( linksJson ) )
+        # result3 = main.Mininet1.comparePorts(
+        # MNTopo, json.loads( portsJson ) )
+
+        # result = result1 and result2 and result3
+        result = result1 and result2
+        print "***********************"
+
+        if result == main.TRUE:
+            main.log.report( "ONOS" + " Topology matches MN Topology" )
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=result,
+            onpass="ONOS" +
+            " Topology matches MN Topology",
+            onfail="ONOS" +
+            " Topology does not match MN Topology" )
+
+        TopologyCheck = TopologyCheck and result
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=TopologyCheck,
+            onpass="Topology checks passed",
+            onfail="Topology checks failed" )
+
+        result = LinkDown and LinkUp and TopologyCheck
+        utilities.assert_equals( expect=main.TRUE, actual=result,
+                                onpass="Link failure is discovered correctly",
+                                onfail="Link Discovery failed" )
+
+    def CASE8( self ):
+        """
+        Host intents removal
+        """
+        main.log.report( "This testcase removes any previously added intents \
+                         before adding the same intents or point intents" )
+        main.log.report( "__________________________________" )
+        main.log.info( "Host intents removal" )
+        main.case( "Removing host intents" )
+        main.step( "Obtain the intent id's" )
+        intentResult = main.ONOS2.intents( jsonFormat=False )
+        main.log.info( "intent_result = " + intentResult )
+
+        intentLinewise = intentResult.split( "\n" )
+        intentList = []
+        for line in intentLinewise:
+            if line.startswith( "id=" ):
+                intentList.append( line )
+
+        intentids = []
+        for line in intentList:
+            intentids.append( line.split( "," )[ 0 ].split( "=" )[ 1 ] )
+        for id in intentids:
+            print "id = ", id
+
+        main.step(
+            "Iterate through the intentids list and remove each intent" )
+        for id in intentids:
+            main.ONOS2.removeIntent( intentId=id )
+
+        intentResult = main.ONOS2.intents( jsonFormat=False )
+        main.log.info( "intent_result = " + intentResult )
+
+        case8Result = main.TRUE
+        if case8Result == main.TRUE:
+            main.log.report( "Intent removal successful" )
+        else:
+            main.log.report( "Intent removal failed" )
+
+        PingResult = main.TRUE
+        if case8Result == main.TRUE:
+            i = 8
+            while i < 18:
+                main.log.info(
+                    "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
+                ping = main.Mininet1.pingHost(
+                    src="h" + str( i ), target="h" + str( i + 10 ) )
+                if ping == main.TRUE:
+                    i = 19
+                    PingResult = PingResult and main.TRUE
+                elif ping == main.FALSE:
+                    i += 1
+                    PingResult = PingResult and main.FALSE
+                else:
+                    main.log.info( "Unknown error" )
+                    PingResult = main.ERROR
+
+            # Note: If the ping result failed, that means the intents have been
+            # withdrawn correctly.
+        if PingResult == main.TRUE:
+            main.log.report( "Host intents have not been withdrawn correctly" )
+            # main.cleanup()
+            # main.exit()
+        if PingResult == main.FALSE:
+            main.log.report( "Host intents have been withdrawn correctly" )
+
+        case8Result = case8Result and PingResult
+
+        if case8Result == main.FALSE:
+            main.log.report( "Intent removal successful" )
+        else:
+            main.log.report( "Intent removal failed" )
+
+        utilities.assert_equals( expect=main.FALSE, actual=case8Result,
+                                onpass="Intent removal test failed",
+                                onfail="Intent removal test passed" )
+
+    def CASE9( self ):
+        main.log.report(
+            "This testcase adds point intents and then does pingall" )
+        main.log.report( "__________________________________" )
+        main.log.info( "Adding point intents" )
+        main.case(
+            "Adding bidirectional point for mn hosts \
+                  ( h8-h18, h9-h19, h10-h20, h11-h21, h12-h22,\
+                   h13-h23, h14-h24, h15-h25, h16-h26, h17-h27 )" )
+        main.step(
+            "Add point intents for mininet hosts h8 and h18 or \
+                  ONOS hosts h8 and h12" )
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000003008/1",
+            "of:0000000000006018/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( getIntentResult )
+
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000006018/1",
+            "of:0000000000003008/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( getIntentResult )
+
+        main.step(
+            "Add point intents for mininet hosts h9 and h19 or \
+                  ONOS hosts h9 and h13" )
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000003009/1",
+            "of:0000000000006019/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( getIntentResult )
+
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000006019/1",
+            "of:0000000000003009/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( getIntentResult )
+
+        main.step(
+            "Add point intents for mininet hosts h10 and h20 or \
+                  ONOS hosts hA and h14" )
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000003010/1",
+            "of:0000000000006020/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( getIntentResult )
+
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000006020/1",
+            "of:0000000000003010/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( getIntentResult )
+
+        main.step(
+            "Add point intents for mininet hosts h11 and h21 or \
+                  ONOS hosts hB and h15" )
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000003011/1",
+            "of:0000000000006021/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( getIntentResult )
+
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000006021/1",
+            "of:0000000000003011/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( getIntentResult )
+
+        main.step(
+            "Add point intents for mininet hosts h12 and h22 \
+                  ONOS hosts hC and h16" )
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000003012/1",
+            "of:0000000000006022/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( getIntentResult )
+
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000006022/1",
+            "of:0000000000003012/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( getIntentResult )
+
+        main.step(
+            "Add point intents for mininet hosts h13 and h23 or \
+                  ONOS hosts hD and h17" )
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000003013/1",
+            "of:0000000000006023/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( getIntentResult )
+
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000006023/1",
+            "of:0000000000003013/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( getIntentResult )
+
+        main.step(
+            "Add point intents for mininet hosts h14 and h24 or \
+                  ONOS hosts hE and h18" )
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000003014/1",
+            "of:0000000000006024/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( getIntentResult )
+
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000006024/1",
+            "of:0000000000003014/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( getIntentResult )
+
+        main.step(
+            "Add point intents for mininet hosts h15 and h25 or \
+                  ONOS hosts hF and h19" )
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000003015/1",
+            "of:0000000000006025/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( getIntentResult )
+
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000006025/1",
+            "of:0000000000003015/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( getIntentResult )
+
+        main.step(
+            "Add intents for mininet hosts h16 and h26 or \
+                  ONOS hosts h10 and h1A" )
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000003016/1",
+            "of:0000000000006026/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( getIntentResult )
+
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000006026/1",
+            "of:0000000000003016/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            # main.log.info( getIntentResult )
+
+        main.step(
+            "Add point intents for mininet hosts h17 and h27 or \
+                  ONOS hosts h11 and h1B" )
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000003017/1",
+            "of:0000000000006027/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            main.log.info( getIntentResult )
+
+        ptpIntentResult = main.ONOS2.addPointIntent(
+            "of:0000000000006027/1",
+            "of:0000000000003017/1" )
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
+            main.log.info( "Point to point intent install successful" )
+            main.log.info( getIntentResult )
+
+        print(
+            "___________________________________________________________" )
+
+        flowHandle = main.ONOS2.flows()
+        # print "flowHandle = ", flowHandle
+        main.log.info( "flows :" + flowHandle )
+
+        count = 1
+        i = 8
+        PingResult = main.TRUE
+        while i < 18:
+            main.log.info(
+                "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
+            ping = main.Mininet1.pingHost(
+                src="h" + str( i ), target="h" + str( i + 10 ) )
+            if ping == main.FALSE and count < 5:
+                count += 1
+                # i = 8
+                PingResult = main.FALSE
+                main.log.report( "Ping between h" +
+                                 str( i ) +
+                                 " and h" +
+                                 str( i +
+                                      10 ) +
+                                 " failed. Making attempt number " +
+                                 str( count ) +
+                                 " in 2 seconds" )
+                time.sleep( 2 )
+            elif ping == main.FALSE:
+                main.log.report( "All ping attempts between h" +
+                                 str( i ) +
+                                 " and h" +
+                                 str( i +
+                                      10 ) +
+                                 "have failed" )
+                i = 19
+                PingResult = main.FALSE
+            elif ping == main.TRUE:
+                main.log.info( "Ping test between h" +
+                               str( i ) +
+                               " and h" +
+                               str( i +
+                                    10 ) +
+                               "passed!" )
+                i += 1
+                PingResult = main.TRUE
+            else:
+                main.log.info( "Unknown error" )
+                PingResult = main.ERROR
+
+        if PingResult == main.FALSE:
+            main.log.report(
+                "Point intents have not ben installed correctly. Cleaning up" )
+            # main.cleanup()
+            # main.exit()
+        if PingResult == main.TRUE:
+            main.log.report( "Point Intents have been installed correctly" )
+
+        case9Result = PingResult
+        utilities.assert_equals(
+            expect=main.TRUE,
+            actual=case9Result,
+            onpass="Point intents addition and Pingall Test successful",
+            onfail="Point intents addition and Pingall Test NOT successful" )
diff --git a/TestON/tests/ProdFunc13/ProdFunc13.py b/TestON/tests/ProdFunc13/ProdFunc13.py
index 1775ebb..b1246c2 100644
--- a/TestON/tests/ProdFunc13/ProdFunc13.py
+++ b/TestON/tests/ProdFunc13/ProdFunc13.py
@@ -3,9 +3,9 @@
 # For sanity and driver functionality excercises only.
 
 import time
-import sys
-import os
-import re
+# import sys
+# import os
+# import re
 import json
 
 time.sleep( 1 )
@@ -28,9 +28,8 @@
         onos-install -f
         onos-wait-for-start
         """
-        cell_name = main.params[ 'ENV' ][ 'cellName' ]
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS1_port = main.params[ 'CTRL' ][ 'port1' ]
+        cellName = main.params[ 'ENV' ][ 'cellName' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
 
         main.case( "Setting up test environment" )
         main.log.report(
@@ -38,53 +37,53 @@
         main.log.report( "__________________________________" )
 
         main.step( "Applying cell variable to environment" )
-        cell_result = main.ONOSbench.set_cell( cell_name )
-        verify_result = main.ONOSbench.verify_cell()
+        cellResult = main.ONOSbench.setCell( cellName )
+        verifyResult = main.ONOSbench.verifyCell()
 
         main.step( "Removing raft logs before a clen installation of ONOS" )
-        main.ONOSbench.onos_remove_raft_logs()
+        main.ONOSbench.onosRemoveRaftLogs()
 
-        main.step( "Git checkout and pull master and get version" )
-        main.ONOSbench.git_checkout( "master" )
-        git_pull_result = main.ONOSbench.git_pull()
-        main.log.info( "git_pull_result = " + git_pull_result )
-        version_result = main.ONOSbench.get_version( report=True )
+        main.step( "Git checkout, pull and get version" )
+        #main.ONOSbench.gitCheckout( "master" )
+        gitPullResult = main.ONOSbench.gitPull()
+        main.log.info( "git_pull_result = " + gitPullResult )
+        main.ONOSbench.getVersion( report=True )
 
-        if git_pull_result == 1:
+        if gitPullResult == 1:
             main.step( "Using mvn clean & install" )
-            clean_install_result = main.ONOSbench.clean_install()
-            #clean_install_result = main.TRUE
-        elif git_pull_result == 0:
+            main.ONOSbench.cleanInstall()
+        elif gitPullResult == 0:
             main.log.report(
                 "Git Pull Failed, look into logs for detailed reason" )
             main.cleanup()
             main.exit()
 
         main.step( "Creating ONOS package" )
-        package_result = main.ONOSbench.onos_package()
+        packageResult = main.ONOSbench.onosPackage()
 
         main.step( "Installing ONOS package" )
-        onos_install_result = main.ONOSbench.onos_install()
-        if onos_install_result == main.TRUE:
+        onosInstallResult = main.ONOSbench.onosInstall()
+        if onosInstallResult == main.TRUE:
             main.log.report( "Installing ONOS package successful" )
         else:
             main.log.report( "Installing ONOS package failed" )
 
-        onos1_isup = main.ONOSbench.isup()
-        if onos1_isup == main.TRUE:
+        onos1Isup = main.ONOSbench.isup()
+        if onos1Isup == main.TRUE:
             main.log.report( "ONOS instance is up and ready" )
         else:
             main.log.report( "ONOS instance may not be up" )
 
         main.step( "Starting ONOS service" )
-        start_result = main.ONOSbench.onos_start( ONOS1_ip )
+        startResult = main.ONOSbench.onosStart( ONOS1Ip )
 
-        main.ONOS2.start_onos_cli( ONOS_ip=main.params[ 'CTRL' ][ 'ip1' ] )
+        main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
 
-        case1_result = ( package_result and
-                         cell_result and verify_result and onos_install_result and
-                         onos1_isup and start_result )
-        utilities.assert_equals( expect=main.TRUE, actual=case1_result,
+        case1Result = ( packageResult and
+                        cellResult and verifyResult
+                        and onosInstallResult and
+                        onos1Isup and startResult )
+        utilities.assert_equals( expect=main.TRUE, actual=case1Result,
                                  onpass="Test startup successful",
                                  onfail="Test startup NOT successful" )
 
@@ -94,13 +93,12 @@
         """
         # NOTE: You should probably run a topology check after this
         import time
-        import json
 
         main.case( "Switch down discovery" )
         main.log.report( "This testcase is testing a switch down discovery" )
         main.log.report( "__________________________________" )
 
-        switch_sleep = int( main.params[ 'timers' ][ 'SwitchDiscovery' ] )
+        switchSleep = int( main.params[ 'timers' ][ 'SwitchDiscovery' ] )
 
         description = "Killing a switch to ensure it is discovered correctly"
         main.log.report( description )
@@ -110,120 +108,125 @@
         main.step( "Kill s28 " )
         main.log.report( "Deleting s28" )
         # FIXME: use new dynamic topo functions
-        main.Mininet1.del_switch( "s28" )
+        main.Mininet1.delSwitch( "s28" )
         main.log.info(
             "Waiting " +
-            str( switch_sleep ) +
+            str( switchSleep ) +
             " seconds for switch down to be discovered" )
-        time.sleep( switch_sleep )
+        time.sleep( switchSleep )
         # Peek at the deleted switch
-        device = main.ONOS2.get_device( dpid="0028" )
+        device = main.ONOS2.getDevice( dpid="0028" )
         print "device = ", device
         if device[ u'available' ] == 'False':
-            case2_result = main.FALSE
+            case2Result = main.FALSE
         else:
-            case2_result = main.TRUE
-        utilities.assert_equals( expect=main.TRUE, actual=case2_result,
+            case2Result = main.TRUE
+        utilities.assert_equals( expect=main.TRUE, actual=case2Result,
                                  onpass="Switch down discovery successful",
                                  onfail="Switch down discovery failed" )
 
     def CASE11( self, main ):
         """
         Cleanup sequence:
-        onos-service <node_ip> stop
+        onos-service <nodeIp> stop
         onos-uninstall
 
         TODO: Define rest of cleanup
 
         """
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
 
         main.case( "Cleaning up test environment" )
 
         main.step( "Testing ONOS kill function" )
-        kill_result = main.ONOSbench.onos_kill( ONOS1_ip )
+        killResult = main.ONOSbench.onosKill( ONOS1Ip )
 
         main.step( "Stopping ONOS service" )
-        stop_result = main.ONOSbench.onos_stop( ONOS1_ip )
+        stopResult = main.ONOSbench.onosStop( ONOS1Ip )
 
         main.step( "Uninstalling ONOS service" )
-        uninstall_result = main.ONOSbench.onos_uninstall()
+        uninstallResult = main.ONOSbench.onosUninstall()
+
+        case11Result = killResult and stopResult and uninstallResult
+        utilities.assert_equals( expect=main.TRUE, actual=case11Result,
+                                 onpass="Cleanup successful",
+                                 onfail="Cleanup failed" )
 
     def CASE3( self, main ):
         """
         Test 'onos' command and its functionality in driver
         """
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
 
         main.case( "Testing 'onos' command" )
 
         main.step( "Sending command 'onos -w <onos-ip> system:name'" )
         cmdstr1 = "system:name"
-        cmd_result1 = main.ONOSbench.onos_cli( ONOS1_ip, cmdstr1 )
-        main.log.info( "onos command returned: " + cmd_result1 )
+        cmdResult1 = main.ONOSbench.onosCli( ONOS1Ip, cmdstr1 )
+        main.log.info( "onos command returned: " + cmdResult1 )
 
         main.step( "Sending command 'onos -w <onos-ip> onos:topology'" )
         cmdstr2 = "onos:topology"
-        cmd_result2 = main.ONOSbench.onos_cli( ONOS1_ip, cmdstr2 )
-        main.log.info( "onos command returned: " + cmd_result2 )
+        cmdResult2 = main.ONOSbench.onosCli( ONOS1Ip, cmdstr2 )
+        main.log.info( "onos command returned: " + cmdResult2 )
 
     def CASE20( self ):
         """
             Exit from mininet cli
             reinstall ONOS
         """
-        cell_name = main.params[ 'ENV' ][ 'cellName' ]
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS1_port = main.params[ 'CTRL' ][ 'port1' ]
+        cellName = main.params[ 'ENV' ][ 'cellName' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
 
-        main.log.report(
-            "This testcase exits the mininet cli and reinstalls ONOS to switch over to Packet Optical topology" )
+        main.log.report( "This testcase exits the mininet cli and reinstalls" +
+                         "ONOS to switch over to Packet Optical topology" )
         main.log.report( "_____________________________________________" )
         main.case( "Disconnecting mininet and restarting ONOS" )
         main.step( "Disconnecting mininet and restarting ONOS" )
-        mininet_disconnect = main.Mininet1.disconnect()
+        mininetDisconnect = main.Mininet1.disconnect()
 
         main.step( "Removing raft logs before a clen installation of ONOS" )
-        main.ONOSbench.onos_remove_raft_logs()
+        main.ONOSbench.onosRemoveRaftLogs()
 
         main.step( "Applying cell variable to environment" )
-        cell_result = main.ONOSbench.set_cell( cell_name )
-        verify_result = main.ONOSbench.verify_cell()
+        cellResult = main.ONOSbench.setCell( cellName )
+        verifyResult = main.ONOSbench.verifyCell()
 
-        onos_install_result = main.ONOSbench.onos_install()
-        if onos_install_result == main.TRUE:
+        onosInstallResult = main.ONOSbench.onosInstall()
+        if onosInstallResult == main.TRUE:
             main.log.report( "Installing ONOS package successful" )
         else:
             main.log.report( "Installing ONOS package failed" )
 
-        onos1_isup = main.ONOSbench.isup()
-        if onos1_isup == main.TRUE:
+        onos1Isup = main.ONOSbench.isup()
+        if onos1Isup == main.TRUE:
             main.log.report( "ONOS instance is up and ready" )
         else:
             main.log.report( "ONOS instance may not be up" )
 
         main.step( "Starting ONOS service" )
-        start_result = main.ONOSbench.onos_start( ONOS1_ip )
+        startResult = main.ONOSbench.onosStart( ONOS1Ip )
 
-        main.ONOS2.start_onos_cli( ONOS_ip=main.params[ 'CTRL' ][ 'ip1' ] )
-        print "mininet_disconnect =", mininet_disconnect
-        print "onos_install_result =", onos_install_result
-        print "onos1_isup =", onos1_isup
-        print "start_result =", start_result
-
-        case20_result = mininet_disconnect and cell_result and onos_install_result and onos1_isup and start_result
+        main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
+        case20Result = mininetDisconnect and cellResult and verifyResult \
+            and onosInstallResult and onos1Isup and \
+            startResult
         utilities.assert_equals(
             expect=main.TRUE,
-            actual=case20_result,
-            onpass="Exiting functionality mininet topology and reinstalling ONOS successful",
-            onfail="Exiting functionality mininet topology and reinstalling ONOS failed" )
+            actual=case20Result,
+            onpass= "Exiting functionality mininet topology and reinstalling" +
+                    " ONOS successful",
+            onfail= "Exiting functionality mininet topology and reinstalling" +
+                    " ONOS failed" )
 
     def CASE21( self, main ):
-        import time
         """
-            On ONOS bench, run this command: ./~/ONOS/tools/test/bin/onos-topo-cfg
-            which starts the rest and copies the links json file to the onos instance
-            Note that in case of Packet Optical, the links are not learnt from the topology, instead the links are learnt
+            On ONOS bench, run this command:
+             ./~/ONOS/tools/test/bin/onos-topo-cfg
+            which starts the rest and copies the links
+            json file to the onos instance.
+            Note that in case of Packet Optical, the links are not learnt
+            from the topology, instead the links are learnt
             from the json config file
         """
         main.log.report(
@@ -231,42 +234,47 @@
         main.log.report( "_____________________________________________" )
         main.case( "Starting LINC-OE and other components" )
         main.step( "Starting LINC-OE and other components" )
-        start_console_result = main.LincOE1.start_console()
-        optical_mn_script = main.LincOE2.run_optical_mn_script()
-        onos_topo_cfg_result = main.ONOSbench.run_onos_topo_cfg(
-            instance_name=main.params[ 'CTRL' ][ 'ip1' ],
-            json_file=main.params[ 'OPTICAL' ][ 'jsonfile' ] )
+        startConsoleResult = main.LincOE1.startConsole()
+        opticalMnScript = main.LincOE2.runOpticalMnScript()
+        onosTopoCfgResult = main.ONOSbench.runOnosTopoCfg(
+            instanceName=main.params[ 'CTRL' ][ 'ip1' ],
+            jsonFile=main.params[ 'OPTICAL' ][ 'jsonfile' ] )
 
-        print "start_console_result =", start_console_result
-        print "optical_mn_script = ", optical_mn_script
-        print "onos_topo_cfg_result =", onos_topo_cfg_result
+        print "start_console_result =", startConsoleResult
+        print "optical_mn_script = ", opticalMnScript
+        print "onos_topo_cfg_result =", onosTopoCfgResult
 
-        case21_result = start_console_result and optical_mn_script and onos_topo_cfg_result
+        case21Result = startConsoleResult and opticalMnScript and \
+            onosTopoCfgResult
         utilities.assert_equals(
             expect=main.TRUE,
-            actual=case21_result,
+            actual=case21Result,
             onpass="Packet optical topology spawned successsfully",
             onfail="Packet optical topology spawning failed" )
 
     def CASE22( self, main ):
         """
-            Curretly we use, 4 linear switch optical topology and 2 packet layer mininet switches each with one host.
-             Therefore, the roadmCount variable = 4, packetLayerSWCount variable = 2, hostCount =2
-            and this is hardcoded in the testcase. If the topology changes, these hardcoded values need to be changed
+            Curretly we use, 4 linear switch optical topology and
+            2 packet layer mininet switches each with one host.
+            Therefore, the roadmCount variable = 4,
+            packetLayerSWCount variable = 2 and hostCount = 2
+            and this is hardcoded in the testcase. If the topology changes,
+            these hardcoded values need to be changed
         """
         main.log.report(
-            "This testcase compares the optical+packet topology against what is expected" )
+            "This testcase compares the optical+packet topology against what" +
+            " is expected" )
         main.case( "Topology comparision" )
         main.step( "Topology comparision" )
-        main.ONOS3.start_onos_cli( ONOS_ip=main.params[ 'CTRL' ][ 'ip1' ] )
-        devices_result = main.ONOS3.devices( json_format=False )
+        main.ONOS3.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
+        devicesResult = main.ONOS3.devices( jsonFormat=False )
 
-        print "devices_result = ", devices_result
-        devices_linewise = devices_result.split( "\n" )
-        devices_linewise = devices_linewise[ 1:-1 ]
+        print "devices_result = ", devicesResult
+        devicesLinewise = devicesResult.split( "\n" )
+        devicesLinewise = devicesLinewise[ 1:-1 ]
         roadmCount = 0
         packetLayerSWCount = 0
-        for line in devices_linewise:
+        for line in devicesLinewise:
             components = line.split( "," )
             availability = components[ 1 ].split( "=" )[ 1 ]
             type = components[ 3 ].split( "=" )[ 1 ]
@@ -275,93 +283,101 @@
             elif availability == 'true' and type == 'SWITCH':
                 packetLayerSWCount += 1
         if roadmCount == 4:
-            print "Number of Optical Switches = %d and is correctly detected" % roadmCount
+            print "Number of Optical Switches = %d and is" % roadmCount +\
+                  " correctly detected"
             main.log.info(
                 "Number of Optical Switches = " +
                 str( roadmCount ) +
                 " and is correctly detected" )
-            opticalSW_result = main.TRUE
+            opticalSWResult = main.TRUE
         else:
-            print "Number of Optical Switches = %d and is wrong" % roadCount
+            print "Number of Optical Switches = %d and is wrong" % roadmCount
             main.log.info(
                 "Number of Optical Switches = " +
                 str( roadmCount ) +
                 " and is wrong" )
-            opticalSW_result = main.FALSE
+            opticalSWResult = main.FALSE
 
         if packetLayerSWCount == 2:
-            print "Number of Packet layer or mininet Switches = %d and is correctly detected" % packetLayerSWCount
+            print "Number of Packet layer or mininet Switches = %d "\
+                    % packetLayerSWCount + "and is correctly detected"
             main.log.info(
                 "Number of Packet layer or mininet Switches = " +
                 str( packetLayerSWCount ) +
                 " and is correctly detected" )
-            packetSW_result = main.TRUE
+            packetSWResult = main.TRUE
         else:
-            print "Number of Packet layer or mininet Switches = %d and is wrong" % packetLayerSWCount
+            print "Number of Packet layer or mininet Switches = %d and"\
+                    % packetLayerSWCount + " is wrong"
             main.log.info(
                 "Number of Packet layer or mininet Switches = " +
                 str( packetLayerSWCount ) +
                 " and is wrong" )
-            packetSW_result = main.FALSE
+            packetSWResult = main.FALSE
         print "_________________________________"
 
-        links_result = main.ONOS3.links( json_format=False )
-        print "links_result = ", links_result
+        linksResult = main.ONOS3.links( jsonFormat=False )
+        print "links_result = ", linksResult
         print "_________________________________"
 
-        # NOTE:Since only point intents are added, there is no requirement to discover the hosts
+        # NOTE:Since only point intents are added, there is no
+        # requirement to discover the hosts
         # Therfore, the below portion of the code is commented.
         """
         #Discover hosts using pingall
-        pingall_result = main.LincOE2.pingall()
+        pingallResult = main.LincOE2.pingall()
 
-        hosts_result = main.ONOS3.hosts( json_format=False )
-        main.log.info( "hosts_result = "+hosts_result )
+        hostsResult = main.ONOS3.hosts( jsonFormat=False )
+        main.log.info( "hosts_result = "+hostsResult )
         main.log.info( "_________________________________" )
-        hosts_linewise = hosts_result.split( "\n" )
-        hosts_linewise = hosts_linewise[ 1:-1 ]
+        hostsLinewise = hostsResult.split( "\n" )
+        hostsLinewise = hostsLinewise[ 1:-1 ]
         hostCount = 0
-        for line in hosts_linewise:
+        for line in hostsLinewise:
             hostid = line.split( "," )[ 0 ].split( "=" )[ 1 ]
             hostCount +=1
         if hostCount ==2:
             print "Number of hosts = %d and is correctly detected" %hostCount
-            main.log.info( "Number of hosts = " + str( hostCount ) +" and is correctly detected" )
+            main.log.info( "Number of hosts = " + str( hostCount ) +" and \
+                            is correctly detected" )
             hostDiscovery = main.TRUE
         else:
             print "Number of hosts = %d and is wrong" %hostCount
-            main.log.info( "Number of hosts = " + str( hostCount ) +" and is wrong" )
+            main.log.info( "Number of hosts = " + str( hostCount ) +" and \
+                            is wrong" )
             hostDiscovery = main.FALSE
         """
-        case22_result = opticalSW_result and packetSW_result
+        case22Result = opticalSWResult and packetSWResult
         utilities.assert_equals(
             expect=main.TRUE,
-            actual=case22_result,
+            actual=case22Result,
             onpass="Packet optical topology discovery successful",
             onfail="Packet optical topology discovery failed" )
 
     def CASE23( self, main ):
         import time
         """
-            Add bidirectional point intents between 2 packet layer( mininet ) devices and
+            Add bidirectional point intents between 2 packet layer( mininet )
+            devices and
             ping mininet hosts
         """
         main.log.report(
-            "This testcase adds bidirectional point intents between 2 packet layer(mininet) devices and ping mininet hosts" )
+            "This testcase adds bidirectional point intents between 2 " +
+            "packet layer( mininet ) devices and ping mininet hosts" )
         main.case( "Topology comparision" )
         main.step( "Adding point intents" )
-        ptp_intent_result = main.ONOS3.add_point_intent(
+        ptpIntentResult = main.ONOS3.addPointIntent(
             "of:0000ffffffff0001/1",
             "of:0000ffffffff0002/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS3.intents( json_format=False )
+        if ptpIntentResult == main.TRUE:
+            main.ONOS3.intents( jsonFormat=False )
             main.log.info( "Point to point intent install successful" )
 
-        ptp_intent_result = main.ONOS3.add_point_intent(
+        ptpIntentResult = main.ONOS3.addPointIntent(
             "of:0000ffffffff0002/1",
             "of:0000ffffffff0001/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS3.intents( json_format=False )
+        if ptpIntentResult == main.TRUE:
+            main.ONOS3.intents( jsonFormat=False )
             main.log.info( "Point to point intent install successful" )
 
         time.sleep( 10 )
@@ -370,17 +386,17 @@
 
         # Sleep for 30 seconds to provide time for the intent state to change
         time.sleep( 30 )
-        intentHandle = main.ONOS3.intents( json_format=False )
+        intentHandle = main.ONOS3.intents( jsonFormat=False )
         main.log.info( "intents :" + intentHandle )
 
-        Ping_Result = main.TRUE
+        PingResult = main.TRUE
         count = 1
         main.log.info( "\n\nh1 is Pinging h2" )
         ping = main.LincOE2.pingHostOptical( src="h1", target="h2" )
-        #ping = main.LincOE2.pinghost()
+        # ping = main.LincOE2.pinghost()
         if ping == main.FALSE and count < 5:
             count += 1
-            Ping_Result = main.FALSE
+            PingResult = main.FALSE
             main.log.info(
                 "Ping between h1 and h2  failed. Making attempt number " +
                 str( count ) +
@@ -388,82 +404,91 @@
             time.sleep( 2 )
         elif ping == main.FALSE:
             main.log.info( "All ping attempts between h1 and h2 have failed" )
-            Ping_Result = main.FALSE
+            PingResult = main.FALSE
         elif ping == main.TRUE:
             main.log.info( "Ping test between h1 and h2 passed!" )
-            Ping_Result = main.TRUE
+            PingResult = main.TRUE
         else:
             main.log.info( "Unknown error" )
-            Ping_Result = main.ERROR
+            PingResult = main.ERROR
 
-        if Ping_Result == main.FALSE:
+        if PingResult == main.FALSE:
             main.log.report(
-                "Point intents for packet optical have not ben installed correctly. Cleaning up" )
-        if Ping_Result == main.TRUE:
+                "Point intents for packet optical have not ben installed" +
+                " correctly. Cleaning up" )
+        if PingResult == main.TRUE:
             main.log.report(
-                "Point Intents for packet optical have been installed correctly" )
+                "Point Intents for packet optical have been " +
+                "installed correctly" )
 
-        case23_result = Ping_Result
+        case23Result = PingResult
         utilities.assert_equals(
             expect=main.TRUE,
-            actual=case23_result,
-            onpass="Point intents addition for packet optical and Pingall Test successful",
-            onfail="Point intents addition for packet optical and Pingall Test NOT successful" )
+            actual=case23Result,
+            onpass= "Point intents addition for packet optical and" +
+                    "Pingall Test successful",
+            onfail= "Point intents addition for packet optical and" +
+                    "Pingall Test NOT successful" )
 
     def CASE24( self, main ):
         import time
         import json
         """
-            Test Rerouting of Packet Optical by bringing a port down ( port 22 ) of a switch( switchID=1 ), so that link ( between switch1 port22 - switch4-port30 ) is inactive
-            and do a ping test. If rerouting is successful, ping should pass. also check the flows
+            Test Rerouting of Packet Optical by bringing a port down
+            ( port 22 ) of a switch( switchID=1 ), so that link
+            ( between switch1 port22 - switch4-port30 ) is inactive
+            and do a ping test. If rerouting is successful,
+            ping should pass. also check the flows
         """
         main.log.report(
             "This testcase tests rerouting and pings mininet hosts" )
         main.case( "Test rerouting and pings mininet hosts" )
         main.step( "Bring a port down and verify the link state" )
-        main.LincOE1.port_down( sw_id="1", pt_id="22" )
-        links_nonjson = main.ONOS3.links( json_format=False )
-        main.log.info( "links = " + links_nonjson )
+        main.LincOE1.portDown( swId="1", ptId="22" )
+        linksNonjson = main.ONOS3.links( jsonFormat=False )
+        main.log.info( "links = " + linksNonjson )
 
         links = main.ONOS3.links()
         main.log.info( "links = " + links )
 
-        links_result = json.loads( links )
-        links_state_result = main.FALSE
-        for item in links_result:
+        linksResult = json.loads( links )
+        linksStateResult = main.FALSE
+        for item in linksResult:
             if item[ 'src' ][ 'device' ] == "of:0000ffffffffff01" and item[
                     'src' ][ 'port' ] == "22":
                 if item[ 'dst' ][ 'device' ] == "of:0000ffffffffff04" and item[
                         'dst' ][ 'port' ] == "30":
-                    links_state = item[ 'state' ]
-                    if links_state == "INACTIVE":
+                    linksState = item[ 'state' ]
+                    if linksState == "INACTIVE":
                         main.log.info(
-                            "Links state is inactive as expected due to one of the ports being down" )
+                            "Links state is inactive as expected due to one" +
+                            " of the ports being down" )
                         main.log.report(
-                            "Links state is inactive as expected due to one of the ports being down" )
-                        links_state_result = main.TRUE
+                            "Links state is inactive as expected due to one" +
+                            " of the ports being down" )
+                        linksStateResult = main.TRUE
                         break
                     else:
                         main.log.info(
                             "Links state is not inactive as expected" )
                         main.log.report(
                             "Links state is not inactive as expected" )
-                        links_state_result = main.FALSE
+                        linksStateResult = main.FALSE
 
-        print "links_state_result = ", links_state_result
+        print "links_state_result = ", linksStateResult
         time.sleep( 10 )
         flowHandle = main.ONOS3.flows()
         main.log.info( "flows :" + flowHandle )
 
         main.step( "Verify Rerouting by a ping test" )
-        Ping_Result = main.TRUE
+        PingResult = main.TRUE
         count = 1
         main.log.info( "\n\nh1 is Pinging h2" )
         ping = main.LincOE2.pingHostOptical( src="h1", target="h2" )
-        #ping = main.LincOE2.pinghost()
+        # ping = main.LincOE2.pinghost()
         if ping == main.FALSE and count < 5:
             count += 1
-            Ping_Result = main.FALSE
+            PingResult = main.FALSE
             main.log.info(
                 "Ping between h1 and h2  failed. Making attempt number " +
                 str( count ) +
@@ -471,159 +496,163 @@
             time.sleep( 2 )
         elif ping == main.FALSE:
             main.log.info( "All ping attempts between h1 and h2 have failed" )
-            Ping_Result = main.FALSE
+            PingResult = main.FALSE
         elif ping == main.TRUE:
             main.log.info( "Ping test between h1 and h2 passed!" )
-            Ping_Result = main.TRUE
+            PingResult = main.TRUE
         else:
             main.log.info( "Unknown error" )
-            Ping_Result = main.ERROR
+            PingResult = main.ERROR
 
-        if Ping_Result == main.TRUE:
+        if PingResult == main.TRUE:
             main.log.report( "Ping test successful " )
-        if Ping_Result == main.FALSE:
+        if PingResult == main.FALSE:
             main.log.report( "Ping test failed" )
 
-        case24_result = Ping_Result and links_state_result
-        utilities.assert_equals( expect=main.TRUE, actual=case24_result,
+        case24Result = PingResult and linksStateResult
+        utilities.assert_equals( expect=main.TRUE, actual=case24Result,
                                  onpass="Packet optical rerouting successful",
                                  onfail="Packet optical rerouting failed" )
 
     def CASE4( self, main ):
         import re
         import time
-        main.log.report(
-            "This testcase is testing the assignment of all the switches to all the controllers and discovering the hosts in reactive mode" )
+        main.log.report( "This testcase is testing the assignment of" +
+                         " all the switches to all the controllers and" +
+                         " discovering the hists in reactive mode" )
         main.log.report( "__________________________________" )
         main.case( "Pingall Test" )
         main.step( "Assigning switches to controllers" )
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS1Port = main.params[ 'CTRL' ][ 'port1' ]
         for i in range( 1, 29 ):
             if i == 1:
-                main.Mininet1.assign_sw_controller(
+                main.Mininet1.assignSwController(
                     sw=str( i ),
-                    ip1=ONOS1_ip,
-                    port1=ONOS1_port )
+                    ip1=ONOS1Ip,
+                    port1=ONOS1Port )
             elif i >= 2 and i < 5:
-                main.Mininet1.assign_sw_controller(
+                main.Mininet1.assignSwController(
                     sw=str( i ),
-                    ip1=ONOS1_ip,
-                    port1=ONOS1_port )
+                    ip1=ONOS1Ip,
+                    port1=ONOS1Port )
             elif i >= 5 and i < 8:
-                main.Mininet1.assign_sw_controller(
+                main.Mininet1.assignSwController(
                     sw=str( i ),
-                    ip1=ONOS1_ip,
-                    port1=ONOS1_port )
+                    ip1=ONOS1Ip,
+                    port1=ONOS1Port )
             elif i >= 8 and i < 18:
-                main.Mininet1.assign_sw_controller(
+                main.Mininet1.assignSwController(
                     sw=str( i ),
-                    ip1=ONOS1_ip,
-                    port1=ONOS1_port )
+                    ip1=ONOS1Ip,
+                    port1=ONOS1Port )
             elif i >= 18 and i < 28:
-                main.Mininet1.assign_sw_controller(
+                main.Mininet1.assignSwController(
                     sw=str( i ),
-                    ip1=ONOS1_ip,
-                    port1=ONOS1_port )
+                    ip1=ONOS1Ip,
+                    port1=ONOS1Port )
             else:
-                main.Mininet1.assign_sw_controller(
+                main.Mininet1.assignSwController(
                     sw=str( i ),
-                    ip1=ONOS1_ip,
-                    port1=ONOS1_port )
-        Switch_Mastership = main.TRUE
+                    ip1=ONOS1Ip,
+                    port1=ONOS1Port )
+        SwitchMastership = main.TRUE
         for i in range( 1, 29 ):
             if i == 1:
-                response = main.Mininet1.get_sw_controller( "s" + str( i ) )
+                response = main.Mininet1.getSwController( "s" + str( i ) )
                 print( "Response is " + str( response ) )
-                if re.search( "tcp:" + ONOS1_ip, response ):
-                    Switch_Mastership = Switch_Mastership and main.TRUE
+                if re.search( "tcp:" + ONOS1Ip, response ):
+                    SwitchMastership = SwitchMastership and main.TRUE
                 else:
-                    Switch_Mastership = main.FALSE
+                    SwitchMastership = main.FALSE
             elif i >= 2 and i < 5:
-                response = main.Mininet1.get_sw_controller( "s" + str( i ) )
+                response = main.Mininet1.getSwController( "s" + str( i ) )
                 print( "Response is " + str( response ) )
-                if re.search( "tcp:" + ONOS1_ip, response ):
-                    Switch_Mastership = Switch_Mastership and main.TRUE
+                if re.search( "tcp:" + ONOS1Ip, response ):
+                    SwitchMastership = SwitchMastership and main.TRUE
                 else:
-                    Switch_Mastership = main.FALSE
+                    SwitchMastership = main.FALSE
             elif i >= 5 and i < 8:
-                response = main.Mininet1.get_sw_controller( "s" + str( i ) )
+                response = main.Mininet1.getSwController( "s" + str( i ) )
                 print( "Response is " + str( response ) )
-                if re.search( "tcp:" + ONOS1_ip, response ):
-                    Switch_Mastership = Switch_Mastership and main.TRUE
+                if re.search( "tcp:" + ONOS1Ip, response ):
+                    SwitchMastership = SwitchMastership and main.TRUE
                 else:
-                    Switch_Mastership = main.FALSE
+                    SwitchMastership = main.FALSE
             elif i >= 8 and i < 18:
-                response = main.Mininet1.get_sw_controller( "s" + str( i ) )
+                response = main.Mininet1.getSwController( "s" + str( i ) )
                 print( "Response is " + str( response ) )
-                if re.search( "tcp:" + ONOS1_ip, response ):
-                    Switch_Mastership = Switch_Mastership and main.TRUE
+                if re.search( "tcp:" + ONOS1Ip, response ):
+                    SwitchMastership = SwitchMastership and main.TRUE
                 else:
-                    Switch_Mastership = main.FALSE
+                    SwitchMastership = main.FALSE
             elif i >= 18 and i < 28:
-                response = main.Mininet1.get_sw_controller( "s" + str( i ) )
+                response = main.Mininet1.getSwController( "s" + str( i ) )
                 print( "Response is " + str( response ) )
-                if re.search( "tcp:" + ONOS1_ip, response ):
-                    Switch_Mastership = Switch_Mastership and main.TRUE
+                if re.search( "tcp:" + ONOS1Ip, response ):
+                    SwitchMastership = SwitchMastership and main.TRUE
                 else:
-                    Switch_Mastership = main.FALSE
+                    SwitchMastership = main.FALSE
             else:
-                response = main.Mininet1.get_sw_controller( "s" + str( i ) )
+                response = main.Mininet1.getSwController( "s" + str( i ) )
                 print( "Response is" + str( response ) )
-                if re.search( "tcp:" + ONOS1_ip, response ):
-                    Switch_Mastership = Switch_Mastership and main.TRUE
+                if re.search( "tcp:" + ONOS1Ip, response ):
+                    SwitchMastership = SwitchMastership and main.TRUE
                 else:
-                    Switch_Mastership = main.FALSE
+                    SwitchMastership = main.FALSE
 
-        if Switch_Mastership == main.TRUE:
+        if SwitchMastership == main.TRUE:
             main.log.report( "Controller assignmnet successful" )
         else:
             main.log.report( "Controller assignmnet failed" )
         utilities.assert_equals(
             expect=main.TRUE,
-            actual=Switch_Mastership,
+            actual=SwitchMastership,
             onpass="MasterControllers assigned correctly" )
         """
         for i in range ( 1,29 ):
-            main.Mininet1.assign_sw_controller( sw=str( i ),count=5,
-                    ip1=ONOS1_ip,port1=ONOS1_port,
-                    ip2=ONOS2_ip,port2=ONOS2_port,
-                    ip3=ONOS3_ip,port3=ONOS3_port,
-                    ip4=ONOS4_ip,port4=ONOS4_port,
-                    ip5=ONOS5_ip,port5=ONOS5_port )
+            main.Mininet1.assignSwController( sw=str( i ),count=5,
+                    ip1=ONOS1Ip,port1=ONOS1Port,
+                    ip2=ONOS2Ip,port2=ONOS2Port,
+                    ip3=ONOS3Ip,port3=ONOS3Port,
+                    ip4=ONOS4Ip,port4=ONOS4Port,
+                    ip5=ONOS5Ip,port5=ONOS5Port )
         """
         # REACTIVE FWD test
 
         main.step( "Get list of hosts from Mininet" )
-        host_list = main.Mininet1.get_hosts()
-        main.log.info( host_list )
+        hostList = main.Mininet1.getHosts()
+        main.log.info( hostList )
 
         main.step( "Get host list in ONOS format" )
-        host_onos_list = main.ONOS2.get_hosts_id( host_list )
-        main.log.info( host_onos_list )
+        hostOnosList = main.ONOS2.getHostsId( hostList )
+        main.log.info( hostOnosList )
         # time.sleep( 5 )
 
         main.step( "Pingall" )
-        ping_result = main.FALSE
-        while ping_result == main.FALSE:
+        pingResult = main.FALSE
+        while pingResult == main.FALSE:
             time1 = time.time()
-            ping_result = main.Mininet1.pingall()
+            pingResult = main.Mininet1.pingall()
             time2 = time.time()
             print "Time for pingall: %2f seconds" % ( time2 - time1 )
 
-        # Start onos cli again because u might have dropped out of onos prompt to the shell prompt
+        # Start onos cli again because u might have dropped out of
+        # onos prompt to the shell prompt
         # if there was no activity
-        main.ONOS2.start_onos_cli( ONOS_ip=main.params[ 'CTRL' ][ 'ip1' ] )
+        main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
 
-        case4_result = Switch_Mastership and ping_result
-        if ping_result == main.TRUE:
-            main.log.report(
-                "Pingall Test in reactive mode to discover the hosts successful" )
+        case4Result = SwitchMastership and pingResult
+        if pingResult == main.TRUE:
+            main.log.report( "Pingall Test in reactive mode to" +
+                             " discover the hosts successful" )
         else:
-            main.log.report(
-                "Pingall Test in reactive mode to discover the hosts failed" )
+            main.log.report( "Pingall Test in reactive mode to" +
+                             " discover the hosts failed" )
 
         utilities.assert_equals(
             expect=main.TRUE,
-            actual=case4_result,
+            actual=case4Result,
             onpass="Controller assignment and Pingall Test successful",
             onfail="Controller assignment and Pingall Test NOT successful" )
 
@@ -633,74 +662,87 @@
         main.log.report( "__________________________________" )
         main.case( "Uninstalling reactive forwarding app" )
         # Unistall onos-app-fwd app to disable reactive forwarding
-        appUninstall_result = main.ONOS2.feature_uninstall( "onos-app-fwd" )
+        appUninstallResult = main.ONOS2.featureUninstall( "onos-app-fwd" )
         main.log.info( "onos-app-fwd uninstalled" )
 
-        # After reactive forwarding is disabled, the reactive flows on switches timeout in 10-15s
+        # After reactive forwarding is disabled, the reactive flows on
+        # switches timeout in 10-15s
         # So sleep for 15s
         time.sleep( 15 )
 
         flows = main.ONOS2.flows()
         main.log.info( flows )
 
-        case10_result = appUninstall_result
+        case10Result = appUninstallResult
         utilities.assert_equals(
             expect=main.TRUE,
-            actual=case10_result,
+            actual=case10Result,
             onpass="Reactive forwarding app uninstallation successful",
             onfail="Reactive forwarding app uninstallation failed" )
 
     def CASE6( self ):
-        main.log.report(
-            "This testcase is testing the addition of host intents and then does pingall" )
+        main.log.report( "This testcase is testing the addition of" +
+                         " host intents and then does pingall" )
         main.log.report( "__________________________________" )
         main.case( "Obtaining host id's" )
         main.step( "Get hosts" )
         hosts = main.ONOS2.hosts()
-        # main.log.info( hosts )
+        main.log.info( hosts )
 
         main.step( "Get all devices id" )
-        devices_id_list = main.ONOS2.get_all_devices_id()
-        # main.log.info( devices_id_list )
+        devicesIdList = main.ONOS2.getAllDevicesId()
+        main.log.info( devicesIdList )
 
-        # ONOS displays the hosts in hex format unlike mininet which does in decimal format
+        # ONOS displays the hosts in hex format unlike mininet which does
+        # in decimal format
         # So take care while adding intents
         """
-        main.step( "Add host-to-host intents for mininet hosts h8 and h18 or ONOS hosts h8 and h12" )
-        hth_intent_result = main.ONOS2.add_host_intent( "00:00:00:00:00:08/-1", "00:00:00:00:00:12/-1" )
-        hth_intent_result = main.ONOS2.add_host_intent( "00:00:00:00:00:09/-1", "00:00:00:00:00:13/-1" )
-        hth_intent_result = main.ONOS2.add_host_intent( "00:00:00:00:00:0A/-1", "00:00:00:00:00:14/-1" )
-        hth_intent_result = main.ONOS2.add_host_intent( "00:00:00:00:00:0B/-1", "00:00:00:00:00:15/-1" )
-        hth_intent_result = main.ONOS2.add_host_intent( "00:00:00:00:00:0C/-1", "00:00:00:00:00:16/-1" )
-        hth_intent_result = main.ONOS2.add_host_intent( "00:00:00:00:00:0D/-1", "00:00:00:00:00:17/-1" )
-        hth_intent_result = main.ONOS2.add_host_intent( "00:00:00:00:00:0E/-1", "00:00:00:00:00:18/-1" )
-        hth_intent_result = main.ONOS2.add_host_intent( "00:00:00:00:00:0F/-1", "00:00:00:00:00:19/-1" )
-        hth_intent_result = main.ONOS2.add_host_intent( "00:00:00:00:00:10/-1", "00:00:00:00:00:1A/-1" )
-        hth_intent_result = main.ONOS2.add_host_intent( "00:00:00:00:00:11/-1", "00:00:00:00:00:1B/-1" )
-        print "_____________________________________________________________________________________"
+        main.step( "Add host-to-host intents for mininet hosts h8 and h18 or
+                    ONOS hosts h8 and h12" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:08/-1", "00:00:00:00:00:12/-1" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:09/-1", "00:00:00:00:00:13/-1" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:0A/-1", "00:00:00:00:00:14/-1" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:0B/-1", "00:00:00:00:00:15/-1" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:0C/-1", "00:00:00:00:00:16/-1" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:0D/-1", "00:00:00:00:00:17/-1" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:0E/-1", "00:00:00:00:00:18/-1" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:0F/-1", "00:00:00:00:00:19/-1" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:10/-1", "00:00:00:00:00:1A/-1" )
+        hthIntentResult = main.ONOS2.addHostIntent(
+                            "00:00:00:00:00:11/-1", "00:00:00:00:00:1B/-1" )
+        print "______________________________________________________"
         """
         for i in range( 8, 18 ):
             main.log.info(
-                "Adding host intent between h" + str( i ) + " and h" + str( i + 10 ) )
+                "Adding host intent between h" + str( i ) +
+                " and h" + str( i + 10 ) )
             host1 = "00:00:00:00:00:" + \
                 str( hex( i )[ 2: ] ).zfill( 2 ).upper()
             host2 = "00:00:00:00:00:" + \
                 str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
             # NOTE: get host can return None
             # TODO: handle this
-            host1_id = main.ONOS2.get_host( host1 )[ 'id' ]
-            host2_id = main.ONOS2.get_host( host2 )[ 'id' ]
-            tmp_result = main.ONOS2.add_host_intent( host1_id, host2_id )
+            host1Id = main.ONOS2.getHost( host1 )[ 'id' ]
+            host2Id = main.ONOS2.getHost( host2 )[ 'id' ]
+            main.ONOS2.addHostIntent( host1Id, host2Id )
 
         time.sleep( 10 )
-        h_intents = main.ONOS2.intents( json_format=False )
-        main.log.info( "intents:" + h_intents )
-        flowHandle = main.ONOS2.flows()
-        #main.log.info( "flow:" +flowHandle )
+        hIntents = main.ONOS2.intents( jsonFormat=False )
+        main.log.info( "intents:" + hIntents )
+        main.ONOS2.flows()
 
         count = 1
         i = 8
-        Ping_Result = main.TRUE
+        PingResult = main.TRUE
         # while i<10:
         while i < 18:
             main.log.info(
@@ -709,8 +751,8 @@
                 src="h" + str( i ), target="h" + str( i + 10 ) )
             if ping == main.FALSE and count < 5:
                 count += 1
-                #i = 8
-                Ping_Result = main.FALSE
+                # i = 8
+                PingResult = main.FALSE
                 main.log.report( "Ping between h" +
                                  str( i ) +
                                  " and h" +
@@ -728,7 +770,7 @@
                                       10 ) +
                                  "have failed" )
                 i = 19
-                Ping_Result = main.FALSE
+                PingResult = main.FALSE
             elif ping == main.TRUE:
                 main.log.info( "Ping test between h" +
                                str( i ) +
@@ -737,39 +779,33 @@
                                     10 ) +
                                "passed!" )
                 i += 1
-                Ping_Result = main.TRUE
+                PingResult = main.TRUE
             else:
                 main.log.info( "Unknown error" )
-                Ping_Result = main.ERROR
-        if Ping_Result == main.FALSE:
+                PingResult = main.ERROR
+        if PingResult == main.FALSE:
             main.log.report(
-                "Ping all test after Host intent addition failed. Cleaning up" )
+                "Ping all test after Host intent addition failed.Cleaning up" )
             # main.cleanup()
             # main.exit()
-        if Ping_Result == main.TRUE:
+        if PingResult == main.TRUE:
             main.log.report(
                 "Ping all test after Host intent addition successful" )
 
-        case6_result = Ping_Result
+        case6Result = PingResult
         utilities.assert_equals(
             expect=main.TRUE,
-            actual=case6_result,
+            actual=case6Result,
             onpass="Pingall Test after Host intents addition successful",
             onfail="Pingall Test after Host intents addition failed" )
 
     def CASE5( self, main ):
         import json
-        from subprocess import Popen, PIPE
         # assumes that sts is already in you PYTHONPATH
         from sts.topology.teston_topology import TestONTopology
-        # main.ONOS2.start_onos_cli( ONOS_ip=main.params[ 'CTRL' ][ 'ip1' ] )
-        deviceResult = main.ONOS2.devices()
-        linksResult = main.ONOS2.links()
-        #portsResult = main.ONOS2.ports()
-        print "**************"
-
-        main.log.report(
-            "This testcase is testing if all ONOS nodes are in topology sync with mininet" )
+        # main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
+        main.log.report( "This testcase is testing if all ONOS nodes" +
+                         " are in topology sync with mininet" )
         main.log.report( "__________________________________" )
         main.case( "Comparing Mininet topology with the topology of ONOS" )
         main.step( "Start continuous pings" )
@@ -836,22 +872,22 @@
             ctrls )  # can also add Intent API info for intent operations
         MNTopo = Topo
 
-        Topology_Check = main.TRUE
+        TopologyCheck = main.TRUE
         main.step( "Compare ONOS Topology to MN Topology" )
-        devices_json = main.ONOS2.devices()
-        links_json = main.ONOS2.links()
-        #ports_json = main.ONOS2.ports()
-        print "devices_json= ", devices_json
+        devicesJson = main.ONOS2.devices()
+        linksJson = main.ONOS2.links()
+        # portsJson = main.ONOS2.ports()
 
-        result1 = main.Mininet1.compare_switches(
+        result1 = main.Mininet1.compareSwitches(
             MNTopo,
-            json.loads( devices_json ) )
-        result2 = main.Mininet1.compare_links(
+            json.loads( devicesJson ) )
+        result2 = main.Mininet1.compareLinks(
             MNTopo,
-            json.loads( links_json ) )
-        #result3 = main.Mininet1.compare_ports( MNTopo, json.loads( ports_json ) )
+            json.loads( linksJson ) )
+        # result3 = main.Mininet1.comparePorts(
+        # MNTopo, json.loads( portsJson ) )
 
-        #result = result1 and result2 and result3
+        # result = result1 and result2 and result3
         result = result1 and result2
 
         print "***********************"
@@ -868,55 +904,64 @@
             onfail="ONOS" +
             " Topology does not match MN Topology" )
 
-        Topology_Check = Topology_Check and result
+        TopologyCheck = TopologyCheck and result
         utilities.assert_equals(
             expect=main.TRUE,
-            actual=Topology_Check,
+            actual=TopologyCheck,
             onpass="Topology checks passed",
             onfail="Topology checks failed" )
 
     def CASE7( self, main ):
+        from sts.topology.teston_topology import TestONTopology
 
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
+        linkSleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
 
-        link_sleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
-
-        main.log.report(
-            "This testscase is killing a link to ensure that link discovery is consistent" )
+        main.log.report( "This testscase is killing a link to ensure that" +
+                         " link discovery is consistent" )
         main.log.report( "__________________________________" )
-        main.log.report(
-            "Killing a link to ensure that link discovery is consistent" )
-        main.case(
-            "Killing a link to Ensure that Link Discovery is Working Properly" )
+        main.log.report( "Killing a link to ensure that link discovery" +
+                         " is consistent" )
+        main.case( "Killing a link to Ensure that Link Discovery" +
+                   "is Working Properly" )
         """
         main.step( "Start continuous pings" )
 
         main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source1' ],
-                            target=main.params[ 'PING' ][ 'target1' ],pingTime=500 )
+                               target=main.params[ 'PING' ][ 'target1' ],
+                               pingTime=500 )
         main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source2' ],
-                            target=main.params[ 'PING' ][ 'target2' ],pingTime=500 )
+                               target=main.params[ 'PING' ][ 'target2' ],
+                               pingTime=500 )
         main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source3' ],
-                            target=main.params[ 'PING' ][ 'target3' ],pingTime=500 )
+                               target=main.params[ 'PING' ][ 'target3' ],
+                               pingTime=500 )
         main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source4' ],
-                            target=main.params[ 'PING' ][ 'target4' ],pingTime=500 )
+                               target=main.params[ 'PING' ][ 'target4' ],
+                               pingTime=500 )
         main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source5' ],
-                            target=main.params[ 'PING' ][ 'target5' ],pingTime=500 )
+                               target=main.params[ 'PING' ][ 'target5' ],
+                               pingTime=500 )
         main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source6' ],
-                            target=main.params[ 'PING' ][ 'target6' ],pingTime=500 )
+                               target=main.params[ 'PING' ][ 'target6' ],
+                               pingTime=500 )
         main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source7' ],
-                            target=main.params[ 'PING' ][ 'target7' ],pingTime=500 )
+                               target=main.params[ 'PING' ][ 'target7' ],
+                               pingTime=500 )
         main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source8' ],
-                            target=main.params[ 'PING' ][ 'target8' ],pingTime=500 )
+                               target=main.params[ 'PING' ][ 'target8' ],
+                               pingTime=500 )
         main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source9' ],
-                            target=main.params[ 'PING' ][ 'target9' ],pingTime=500 )
+                               target=main.params[ 'PING' ][ 'target9' ],
+                               pingTime=500 )
         main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source10' ],
-                            target=main.params[ 'PING' ][ 'target10' ],pingTime=500 )
+                               target=main.params[ 'PING' ][ 'target10' ],
+                               pingTime=500 )
         """
         main.step( "Determine the current number of switches and links" )
-        topology_output = main.ONOS2.topology()
-        topology_result = main.ONOS1.get_topology( topology_output )
-        activeSwitches = topology_result[ 'devices' ]
-        links = topology_result[ 'links' ]
+        topologyOutput = main.ONOS2.topology()
+        topologyResult = main.ONOS1.getTopology( topologyOutput )
+        activeSwitches = topologyResult[ 'devices' ]
+        links = topologyResult[ 'links' ]
         print "activeSwitches = ", type( activeSwitches )
         print "links = ", type( links )
         main.log.info(
@@ -925,39 +970,39 @@
 
         main.step( "Kill Link between s3 and s28" )
         main.Mininet1.link( END1="s3", END2="s28", OPTION="down" )
-        time.sleep( link_sleep )
-        topology_output = main.ONOS2.topology()
-        Link_Down = main.ONOS1.check_status(
-            topology_output, activeSwitches, str(
+        time.sleep( linkSleep )
+        topologyOutput = main.ONOS2.topology()
+        LinkDown = main.ONOS1.checkStatus(
+            topologyOutput, activeSwitches, str(
                 int( links ) - 2 ) )
-        if Link_Down == main.TRUE:
+        if LinkDown == main.TRUE:
             main.log.report( "Link Down discovered properly" )
         utilities.assert_equals(
             expect=main.TRUE,
-            actual=Link_Down,
+            actual=LinkDown,
             onpass="Link Down discovered properly",
             onfail="Link down was not discovered in " +
-            str( link_sleep ) +
+            str( linkSleep ) +
             " seconds" )
 
         # Check ping result here..add code for it
 
         main.step( "Bring link between s3 and s28 back up" )
-        Link_Up = main.Mininet1.link( END1="s3", END2="s28", OPTION="up" )
-        time.sleep( link_sleep )
-        topology_output = main.ONOS2.topology()
-        Link_Up = main.ONOS1.check_status(
-            topology_output,
+        LinkUp = main.Mininet1.link( END1="s3", END2="s28", OPTION="up" )
+        time.sleep( linkSleep )
+        topologyOutput = main.ONOS2.topology()
+        LinkUp = main.ONOS1.checkStatus(
+            topologyOutput,
             activeSwitches,
             str( links ) )
-        if Link_Up == main.TRUE:
+        if LinkUp == main.TRUE:
             main.log.report( "Link up discovered properly" )
         utilities.assert_equals(
             expect=main.TRUE,
-            actual=Link_Up,
+            actual=LinkUp,
             onpass="Link up discovered properly",
             onfail="Link up was not discovered in " +
-            str( link_sleep ) +
+            str( linkSleep ) +
             " seconds" )
 
         # NOTE Check ping result here..add code for it
@@ -967,22 +1012,22 @@
             main.Mininet1,
             ctrls )  # can also add Intent API info for intent operations
         MNTopo = Topo
-        Topology_Check = main.TRUE
+        TopologyCheck = main.TRUE
 
-        devices_json = main.ONOS2.devices()
-        links_json = main.ONOS2.links()
-        ports_json = main.ONOS2.ports()
-        print "devices_json= ", devices_json
+        devicesJson = main.ONOS2.devices()
+        linksJson = main.ONOS2.links()
+        portsJson = main.ONOS2.ports()
 
-        result1 = main.Mininet1.compare_switches(
+        result1 = main.Mininet1.compareSwitches(
             MNTopo,
-            json.loads( devices_json ) )
-        result2 = main.Mininet1.compare_links(
+            json.loads( devicesJson ) )
+        result2 = main.Mininet1.compareLinks(
             MNTopo,
-            json.loads( links_json ) )
-        #result3 = main.Mininet1.compare_ports( MNTopo, json.loads( ports_json ) )
+            json.loads( linksJson ) )
+        # result3 = main.Mininet1.comparePorts(
+        # MNTopo, json.loads( portsJson ) )
 
-        #result = result1 and result2 and result3
+        # result = result1 and result2 and result3
         result = result1 and result2
         print "***********************"
 
@@ -996,14 +1041,14 @@
             onfail="ONOS" +
             " Topology does not match MN Topology" )
 
-        Topology_Check = Topology_Check and result
+        TopologyCheck = TopologyCheck and result
         utilities.assert_equals(
             expect=main.TRUE,
-            actual=Topology_Check,
+            actual=TopologyCheck,
             onpass="Topology checks passed",
             onfail="Topology checks failed" )
 
-        result = Link_Down and Link_Up and Topology_Check
+        result = LinkDown and LinkUp and TopologyCheck
         utilities.assert_equals( expect=main.TRUE, actual=result,
                                  onpass="Link failure is discovered correctly",
                                  onfail="Link Discovery failed" )
@@ -1012,18 +1057,18 @@
         """
         Host intents removal
         """
-        main.log.report(
-            "This testcase removes any previously added intents before adding the same intents or point intents" )
+        main.log.report( "This testcase removes any previously added intents" +
+                         " before adding the same intents or point intents" )
         main.log.report( "__________________________________" )
         main.log.info( "Host intents removal" )
         main.case( "Removing host intents" )
         main.step( "Obtain the intent id's" )
-        intent_result = main.ONOS2.intents( json_format=False )
-        main.log.info( "intent_result = " + intent_result )
+        intentResult = main.ONOS2.intents( jsonFormat=False )
+        main.log.info( "intent_result = " + intentResult )
 
-        intent_linewise = intent_result.split( "\n" )
+        intentLinewise = intentResult.split( "\n" )
         intentList = []
-        for line in intent_linewise:
+        for line in intentLinewise:
             if line.startswith( "id=" ):
                 intentList.append( line )
 
@@ -1036,19 +1081,19 @@
         main.step(
             "Iterate through the intentids list and remove each intent" )
         for id in intentids:
-            main.ONOS2.remove_intent( intent_id=id )
+            main.ONOS2.removeIntent( intentId=id )
 
-        intent_result = main.ONOS2.intents( json_format=False )
-        main.log.info( "intent_result = " + intent_result )
+        intentResult = main.ONOS2.intents( jsonFormat=False )
+        main.log.info( "intent_result = " + intentResult )
 
-        case8_result = main.TRUE
-        if case8_result == main.TRUE:
+        case8Result = main.TRUE
+        if case8Result == main.TRUE:
             main.log.report( "Intent removal successful" )
         else:
             main.log.report( "Intent removal failed" )
 
-        Ping_Result = main.TRUE
-        if case8_result == main.TRUE:
+        PingResult = main.TRUE
+        if case8Result == main.TRUE:
             i = 8
             while i < 18:
                 main.log.info(
@@ -1057,33 +1102,33 @@
                     src="h" + str( i ), target="h" + str( i + 10 ) )
                 if ping == main.TRUE:
                     i = 19
-                    Ping_Result = Ping_Result and main.TRUE
+                    PingResult = PingResult and main.TRUE
                 elif ping == main.FALSE:
                     i += 1
-                    Ping_Result = Ping_Result and main.FALSE
+                    PingResult = PingResult and main.FALSE
                 else:
                     main.log.info( "Unknown error" )
-                    Ping_Result = main.ERROR
+                    PingResult = main.ERROR
 
             # Note: If the ping result failed, that means the intents have been
             # withdrawn correctly.
-        if Ping_Result == main.TRUE:
+        if PingResult == main.TRUE:
             main.log.report( "Host intents have not been withdrawn correctly" )
             # main.cleanup()
             # main.exit()
-        if Ping_Result == main.FALSE:
+        if PingResult == main.FALSE:
             main.log.report( "Host intents have been withdrawn correctly" )
 
-        case8_result = case8_result and Ping_Result
+        case8Result = case8Result and PingResult
 
-        if case8_result == main.FALSE:
+        if case8Result == main.FALSE:
             main.log.report( "Intent removal successful" )
         else:
             main.log.report( "Intent removal failed" )
 
-        utilities.assert_equals( expect=main.FALSE, actual=case8_result,
-                                 onpass="Intent removal test failed",
-                                 onfail="Intent removal test passed" )
+        utilities.assert_equals( expect=main.FALSE, actual=case8Result,
+                                 onpass="Intent removal test passed",
+                                 onfail="Intent removal test failed" )
 
     def CASE9( self ):
         main.log.report(
@@ -1091,189 +1136,200 @@
         main.log.report( "__________________________________" )
         main.log.info( "Adding point intents" )
         main.case(
-            "Adding bidirectional point for mn hosts(h8-h18,h9-h19,h10-h20,h11-h21,h12-h22,h13-h23,h14-h24,h15-h25,h16-h26,h17-h27)" )
-        main.step(
-            "Add point-to-point intents for mininet hosts h8 and h18 or ONOS hosts h8 and h12" )
-        ptp_intent_result = main.ONOS2.add_point_intent(
+            '''Adding bidirectional point for mn hosts
+            ( h8-h18, h9-h19, h10-h20, h11-h21, h12-h22,
+                h13-h23, h14-h24, h15-h25, h16-h26, h17-h27 )''' )
+
+        main.step( "Add point intents for mn hosts h8 and h18 or" +
+                   "ONOS hosts h8 and h12" )
+        # main.step(var1)
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003008/1",
             "of:0000000000006018/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOS2.add_point_intent(
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000006018/1",
             "of:0000000000003008/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        main.step(
-            "Add point-to-point intents for mininet hosts h9 and h19 or ONOS hosts h9 and h13" )
-        ptp_intent_result = main.ONOS2.add_point_intent(
+        var2 = "Add point intents for mn hosts h9&h19 or ONOS hosts h9&h13"
+        main.step(var2)
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003009/1",
             "of:0000000000006019/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOS2.add_point_intent(
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000006019/1",
             "of:0000000000003009/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        main.step(
-            "Add point-to-point intents for mininet hosts h10 and h20 or ONOS hosts hA and h14" )
-        ptp_intent_result = main.ONOS2.add_point_intent(
+        var3 = "Add point intents for MN hosts h10&h20 or ONOS hosts hA&h14"
+        main.step(var3)
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003010/1",
             "of:0000000000006020/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOS2.add_point_intent(
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000006020/1",
             "of:0000000000003010/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        main.step(
-            "Add point-to-point intents for mininet hosts h11 and h21 or ONOS hosts hB and h15" )
-        ptp_intent_result = main.ONOS2.add_point_intent(
+        var4 = "Add point intents for mininet hosts h11 and h21 or" +\
+               " ONOS hosts hB and h15"
+        main.case(var4)
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003011/1",
             "of:0000000000006021/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOS2.add_point_intent(
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000006021/1",
             "of:0000000000003011/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        main.step(
-            "Add point-to-point intents for mininet hosts h12 and h22 or ONOS hosts hC and h16" )
-        ptp_intent_result = main.ONOS2.add_point_intent(
+        var5 = "Add point intents for mininet hosts h12 and h22 " +\
+               "ONOS hosts hC and h16"
+        main.case(var5)
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003012/1",
             "of:0000000000006022/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOS2.add_point_intent(
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000006022/1",
             "of:0000000000003012/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        main.step(
-            "Add point-to-point intents for mininet hosts h13 and h23 or ONOS hosts hD and h17" )
-        ptp_intent_result = main.ONOS2.add_point_intent(
+        var6 = "Add point intents for mininet hosts h13 and h23 or" +\
+               " ONOS hosts hD and h17"
+        main.case(var6)
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003013/1",
             "of:0000000000006023/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOS2.add_point_intent(
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000006023/1",
             "of:0000000000003013/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        main.step(
-            "Add point-to-point intents for mininet hosts h14 and h24 or ONOS hosts hE and h18" )
-        ptp_intent_result = main.ONOS2.add_point_intent(
+        var7 = "Add point intents for mininet hosts h14 and h24 or" +\
+               " ONOS hosts hE and h18"
+        main.case(var7)
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003014/1",
             "of:0000000000006024/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOS2.add_point_intent(
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000006024/1",
             "of:0000000000003014/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        main.step(
-            "Add point-to-point intents for mininet hosts h15 and h25 or ONOS hosts hF and h19" )
-        ptp_intent_result = main.ONOS2.add_point_intent(
+        var8 = "Add point intents for mininet hosts h15 and h25 or" +\
+               " ONOS hosts hF and h19"
+        main.case(var8)
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003015/1",
             "of:0000000000006025/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOS2.add_point_intent(
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000006025/1",
             "of:0000000000003015/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        main.step(
-            "Add point-to-point intents for mininet hosts h16 and h26 or ONOS hosts h10 and h1A" )
-        ptp_intent_result = main.ONOS2.add_point_intent(
+        var9 = "Add intents for mininet hosts h16 and h26 or" +\
+               " ONOS hosts h10 and h1A"
+        main.case(var9)
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003016/1",
             "of:0000000000006026/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOS2.add_point_intent(
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000006026/1",
             "of:0000000000003016/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            # main.log.info( getIntentResult )
 
-        main.step(
-            "Add point-to-point intents for mininet hosts h17 and h27 or ONOS hosts h11 and h1B" )
-        ptp_intent_result = main.ONOS2.add_point_intent(
+        var10 = "Add point intents for mininet hosts h17 and h27 or" +\
+                " ONOS hosts h11 and h1B"
+        main.case(var10)
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000003017/1",
             "of:0000000000006027/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            main.log.info( getIntentResult )
 
-        ptp_intent_result = main.ONOS2.add_point_intent(
+        ptpIntentResult = main.ONOS2.addPointIntent(
             "of:0000000000006027/1",
             "of:0000000000003017/1" )
-        if ptp_intent_result == main.TRUE:
-            get_intent_result = main.ONOS2.intents()
+        if ptpIntentResult == main.TRUE:
+            getIntentResult = main.ONOS2.intents()
             main.log.info( "Point to point intent install successful" )
-            # main.log.info( get_intent_result )
+            main.log.info( getIntentResult )
 
         print(
-            "_______________________________________________________________________________________" )
+            "___________________________________________________________" )
 
         flowHandle = main.ONOS2.flows()
         # print "flowHandle = ", flowHandle
@@ -1281,7 +1337,7 @@
 
         count = 1
         i = 8
-        Ping_Result = main.TRUE
+        PingResult = main.TRUE
         while i < 18:
             main.log.info(
                 "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
@@ -1289,8 +1345,8 @@
                 src="h" + str( i ), target="h" + str( i + 10 ) )
             if ping == main.FALSE and count < 5:
                 count += 1
-                #i = 8
-                Ping_Result = main.FALSE
+                # i = 8
+                PingResult = main.FALSE
                 main.log.report( "Ping between h" +
                                  str( i ) +
                                  " and h" +
@@ -1308,7 +1364,7 @@
                                       10 ) +
                                  "have failed" )
                 i = 19
-                Ping_Result = main.FALSE
+                PingResult = main.FALSE
             elif ping == main.TRUE:
                 main.log.info( "Ping test between h" +
                                str( i ) +
@@ -1317,22 +1373,22 @@
                                     10 ) +
                                "passed!" )
                 i += 1
-                Ping_Result = main.TRUE
+                PingResult = main.TRUE
             else:
                 main.log.info( "Unknown error" )
-                Ping_Result = main.ERROR
+                PingResult = main.ERROR
 
-        if Ping_Result == main.FALSE:
+        if PingResult == main.FALSE:
             main.log.report(
                 "Point intents have not ben installed correctly. Cleaning up" )
             # main.cleanup()
             # main.exit()
-        if Ping_Result == main.TRUE:
+        if PingResult == main.TRUE:
             main.log.report( "Point Intents have been installed correctly" )
 
-        case9_result = Ping_Result
+        case9Result = PingResult
         utilities.assert_equals(
             expect=main.TRUE,
-            actual=case9_result,
+            actual=case9Result,
             onpass="Point intents addition and Pingall Test successful",
             onfail="Point intents addition and Pingall Test NOT successful" )
diff --git a/TestON/tests/TopoPerfNext/Backup/TopoPerfNext.py b/TestON/tests/TopoPerfNext/Backup/TopoPerfNext.py
new file mode 100644
index 0000000..cc40b94
--- /dev/null
+++ b/TestON/tests/TopoPerfNext/Backup/TopoPerfNext.py
@@ -0,0 +1,1710 @@
+#TopoPerfNext
+#
+#Topology Performance test for ONOS-next
+#
+#andrew@onlab.us
+#
+#If your machine does not come with numpy
+#run the following command:
+#sudo apt-get install python-numpy python-scipy 
+
+import time
+import sys
+import os
+import re
+
+class TopoPerfNext:
+    def __init__(self):
+        self.default = ''
+
+    def CASE1(self, main):
+        '''
+        ONOS startup sequence
+        '''
+        import time
+        
+        ## Global cluster count for scale-out purposes
+        global cluster_count
+        #Set initial cluster count
+        cluster_count = 1 
+        ##
+
+        cell_name = main.params['ENV']['cellName']
+
+        git_pull = main.params['GIT']['autoPull']
+        checkout_branch = main.params['GIT']['checkout']
+
+        ONOS1_ip = main.params['CTRL']['ip1']
+        ONOS2_ip = main.params['CTRL']['ip2']
+        ONOS3_ip = main.params['CTRL']['ip3']
+        
+        #### Hardcoded ONOS nodes particular to my env ####
+        ONOS4_ip = "10.128.174.4"
+        ONOS5_ip = "10.128.174.5"
+        ONOS6_ip = "10.128.174.6"
+        ONOS7_ip = "10.128.174.7"
+        #### ####
+
+        MN1_ip = main.params['MN']['ip1']
+        BENCH_ip = main.params['BENCH']['ip']
+
+        topo_cfg_file = main.params['TEST']['topo_config_file']
+        topo_cfg_name = main.params['TEST']['topo_config_name']
+        
+        main.case("Setting up test environment")
+        main.log.info("Copying topology event accumulator config"+\
+            " to ONOS /package/etc")
+        main.ONOSbench.handle.sendline("cp ~/"+\
+            topo_cfg_file+\
+            " ~/ONOS/tools/package/etc/"+\
+            topo_cfg_name)
+        main.ONOSbench.handle.expect("\$")
+
+        main.log.report("Setting up test environment")
+
+        main.step("Cleaning previously installed ONOS if any")
+        main.ONOSbench.onos_uninstall(node_ip=ONOS2_ip)
+        main.ONOSbench.onos_uninstall(node_ip=ONOS3_ip)
+        main.ONOSbench.onos_uninstall(node_ip=ONOS4_ip)
+        main.ONOSbench.onos_uninstall(node_ip=ONOS5_ip)
+        main.ONOSbench.onos_uninstall(node_ip=ONOS6_ip)
+        main.ONOSbench.onos_uninstall(node_ip=ONOS7_ip)
+
+        main.step("Creating cell file")
+        cell_file_result = main.ONOSbench.create_cell_file(
+                BENCH_ip, cell_name, MN1_ip, "onos-core,onos-app-metrics",
+                ONOS1_ip)
+
+        main.step("Applying cell file to environment")
+        cell_apply_result = main.ONOSbench.set_cell(cell_name)
+        verify_cell_result = main.ONOSbench.verify_cell()
+        
+        #NOTE: This step may be removed after proper 
+        #      copy cat log functionality
+        main.step("Removing raft/copy-cat logs from ONOS nodes")
+        main.ONOSbench.onos_remove_raft_logs()
+        time.sleep(30)
+
+        main.step("Git checkout and pull "+checkout_branch)
+        if git_pull == 'on':
+            checkout_result = \
+                    main.ONOSbench.git_checkout(checkout_branch)
+            pull_result = main.ONOSbench.git_pull()
+        else:
+            checkout_result = main.TRUE
+            pull_result = main.TRUE
+            main.log.info("Skipped git checkout and pull")
+
+        main.log.report("Commit information - ")
+        main.ONOSbench.get_version(report=True)
+
+        main.step("Using mvn clean & install")
+        mvn_result = main.ONOSbench.clean_install()
+        mvn_result = main.TRUE
+
+        main.step("Set cell for ONOS cli env")
+        main.ONOS1cli.set_cell(cell_name)
+        #main.ONOS2cli.set_cell(cell_name)
+        #main.ONOS3cli.set_cell(cell_name)
+
+        main.step("Creating ONOS package")
+        package_result = main.ONOSbench.onos_package()
+
+        main.step("Installing ONOS package")
+        install1_result = main.ONOSbench.onos_install(node=ONOS1_ip)
+        #install2_result = main.ONOSbench.onos_install(node=ONOS2_ip)
+        #install3_result = main.ONOSbench.onos_install(node=ONOS3_ip)
+
+        time.sleep(10)
+
+        main.step("Start onos cli")
+        cli1 = main.ONOS1cli.start_onos_cli(ONOS1_ip)
+        #cli2 = main.ONOS2cli.start_onos_cli(ONOS2_ip)
+        #cli3 = main.ONOS3cli.start_onos_cli(ONOS3_ip)
+
+        utilities.assert_equals(expect=main.TRUE,
+                actual= cell_file_result and cell_apply_result and\
+                        verify_cell_result and checkout_result and\
+                        pull_result and mvn_result and\
+                        install1_result, #and install2_result and\
+                        #install3_result,
+                onpass="Test Environment setup successful",
+                onfail="Failed to setup test environment")
+
+    def CASE2(self, main):
+        '''
+        Assign s1 to ONOS1 and measure latency
+        
+        There are 4 levels of latency measurements to this test:
+        1) End-to-end measurement: Complete end-to-end measurement
+           from TCP (SYN/ACK) handshake to Graph change
+        2) OFP-to-graph measurement: 'ONOS processing' snippet of
+           measurement from OFP Vendor message to Graph change
+        3) OFP-to-device measurement: 'ONOS processing without 
+           graph change' snippet of measurement from OFP vendor
+           message to Device change timestamp
+        4) T0-to-device measurement: Measurement that includes
+           the switch handshake to devices timestamp without 
+           the graph view change. (TCP handshake -> Device 
+           change)
+        '''
+        import time
+        import subprocess
+        import json
+        import requests
+        import os
+        import numpy
+        global cluster_count
+
+        ONOS1_ip = main.params['CTRL']['ip1']
+        ONOS2_ip = main.params['CTRL']['ip2']
+        ONOS3_ip = main.params['CTRL']['ip3']
+        ONOS4_ip = main.params['CTRL']['ip4']
+        ONOS5_ip = main.params['CTRL']['ip5']
+        ONOS6_ip = main.params['CTRL']['ip6']
+        ONOS7_ip = main.params['CTRL']['ip7']
+
+        ONOS_user = main.params['CTRL']['user']
+
+        default_sw_port = main.params['CTRL']['port1']
+       
+        #Number of iterations of case
+        num_iter = main.params['TEST']['numIter']
+        #Number of first 'x' iterations to ignore:
+        iter_ignore = int(main.params['TEST']['iterIgnore'])
+
+        #Timestamp 'keys' for json metrics output.
+        #These are subject to change, hence moved into params
+        deviceTimestamp = main.params['JSON']['deviceTimestamp']
+        graphTimestamp = main.params['JSON']['graphTimestamp']
+
+        debug_mode = main.params['TEST']['debugMode']
+        onos_log = main.params['TEST']['onosLogFile']
+
+        #Threshold for the test
+        threshold_str = main.params['TEST']['singleSwThreshold']
+        threshold_obj = threshold_str.split(",")
+        threshold_min = int(threshold_obj[0])
+        threshold_max = int(threshold_obj[1])
+
+        #List of switch add latency collected from
+        #all iterations
+        latency_end_to_end_list = []
+        latency_ofp_to_graph_list = []
+        latency_ofp_to_device_list = []
+        latency_t0_to_device_list = []
+        latency_tcp_to_ofp_list = []
+
+        #Directory/file to store tshark results
+        tshark_of_output = "/tmp/tshark_of_topo.txt"
+        tshark_tcp_output = "/tmp/tshark_tcp_topo.txt"
+
+        #String to grep in tshark output
+        tshark_tcp_string = "TCP 74 "+default_sw_port
+        tshark_of_string = "OFP 86 Vendor"
+     
+        #Initialize assertion to TRUE
+        assertion = main.TRUE
+      
+        local_time = time.strftime('%x %X')
+        local_time = local_time.replace("/","")
+        local_time = local_time.replace(" ","_")
+        local_time = local_time.replace(":","")
+        if debug_mode == 'on':
+            main.ONOS1.tshark_pcap("eth0",
+                    "/tmp/single_sw_lat_pcap_"+local_time) 
+
+            main.log.info("Debug mode is on")
+
+        main.log.report("Latency of adding one switch to controller")
+        main.log.report("First "+str(iter_ignore)+" iterations ignored"+
+                " for jvm warmup time")
+        main.log.report("Total iterations of test: "+str(num_iter))
+
+        for i in range(0, int(num_iter)):
+            main.log.info("Starting tshark capture")
+
+            #* TCP [ACK, SYN] is used as t0_a, the
+            #  very first "exchange" between ONOS and 
+            #  the switch for end-to-end measurement
+            #* OFP [Stats Reply] is used for t0_b
+            #  the very last OFP message between ONOS
+            #  and the switch for ONOS measurement
+            main.ONOS1.tshark_grep(tshark_tcp_string,
+                    tshark_tcp_output)
+            main.ONOS1.tshark_grep(tshark_of_string,
+                    tshark_of_output)
+
+            #Wait and ensure tshark is started and 
+            #capturing
+            time.sleep(10)
+
+            main.log.info("Assigning s1 to controller")
+
+            main.Mininet1.assign_sw_controller(sw="1",
+                    ip1=ONOS1_ip, port1=default_sw_port)
+
+            #Wait and ensure switch is assigned
+            #before stopping tshark
+            time.sleep(30)
+   
+            main.log.info("Stopping all Tshark processes")
+            main.ONOS1.stop_tshark()
+
+            #tshark output is saved in ONOS. Use subprocess
+            #to copy over files to TestON for parsing
+            main.log.info("Copying over tshark files")
+            
+            #TCP CAPTURE ****
+            #Copy the tshark output from ONOS machine to
+            #TestON machine in tshark_tcp_output directory>file
+            os.system("scp "+ONOS_user+"@"+ONOS1_ip+":"+
+                    tshark_tcp_output+" /tmp/") 
+            tcp_file = open(tshark_tcp_output, 'r')
+            temp_text = tcp_file.readline()
+            temp_text = temp_text.split(" ")
+
+            main.log.info("Object read in from TCP capture: "+
+                    str(temp_text))
+            if len(temp_text) > 1:
+                t0_tcp = float(temp_text[1])*1000.0
+            else:
+                main.log.error("Tshark output file for TCP"+
+                        " returned unexpected results")
+                t0_tcp = 0
+                assertion = main.FALSE
+            
+            tcp_file.close()
+            #****************
+
+            #OF CAPTURE ****
+            os.system("scp "+ONOS_user+"@"+ONOS1_ip+":"+
+                    tshark_of_output+" /tmp/")
+            of_file = open(tshark_of_output, 'r')
+           
+            line_ofp = ""
+            #Read until last line of file
+            while True:
+                temp_text = of_file.readline()
+                if temp_text !='':
+                    line_ofp = temp_text
+                else:
+                    break 
+            obj = line_ofp.split(" ")
+            
+            main.log.info("Object read in from OFP capture: "+
+                    str(line_ofp))
+    
+            if len(line_ofp) > 1:
+                t0_ofp = float(obj[1])*1000.0
+            else:
+                main.log.error("Tshark output file for OFP"+
+                        " returned unexpected results")
+                t0_ofp = 0
+                assertion = main.FALSE
+            
+            of_file.close()
+            #****************
+           
+            json_str_1 = main.ONOS1cli.topology_events_metrics()
+            #Initialize scale-out variables 
+            json_str_2 = "" 
+            json_str_3 = ""
+            json_str_4 = ""
+            json_str_5 = ""
+            json_str_6 = ""
+            json_str_7 = ""
+
+            json_obj_1 = json.loads(json_str_1)
+            json_obj_2 = json.loads(json_str_2)
+            json_obj_3 = json.loads(json_str_3)
+            #Initialize scale-out variables
+            json_obj_4 = ""
+            json_obj_5 = ""
+            json_obj_6 = ""
+            json_obj_7 = ""
+
+            #Include scale-out measurements when applicable
+            if cluster_count == 5:
+                json_str_4 = main.ONOS4cli.topology_events_metrics()
+                json_str_5 = main.ONOS5cli.topology_events_metrics()
+                
+                json_obj_4 = json.loads(json_str_4)
+                json_obj_5 = json.loads(json_str_5)
+            elif cluster_count == 6:
+                main.log.info("TODO: create even number cluster events")
+            elif cluster_count == 7:
+                json_str_6 = main.ONOS6cli.topology_events_metrics()
+                json_str_7 = main.ONOS7cli.topology_events_metrics()
+
+                json_obj_6 = json.loads(json_str_6)
+                json_obj_7 = json.loads(json_str_7)
+
+            #Obtain graph timestamp. This timestsamp captures
+            #the epoch time at which the topology graph was updated.
+            graph_timestamp_1 = \
+                    json_obj_1[graphTimestamp]['value']
+            graph_timestamp_2 = \
+                    json_obj_2[graphTimestamp]['value']
+            graph_timestamp_3 = \
+                    json_obj_3[graphTimestamp]['value']
+
+            #Obtain device timestamp. This timestamp captures
+            #the epoch time at which the device event happened
+            device_timestamp_1 = \
+                    json_obj_1[deviceTimestamp]['value'] 
+            device_timestamp_2 = \
+                    json_obj_2[deviceTimestamp]['value'] 
+            device_timestamp_3 = \
+                    json_obj_3[deviceTimestamp]['value'] 
+
+            #t0 to device processing latency 
+            delta_device_1 = int(device_timestamp_1) - int(t0_tcp)
+            delta_device_2 = int(device_timestamp_2) - int(t0_tcp)
+            delta_device_3 = int(device_timestamp_3) - int(t0_tcp)
+        
+            #Get average of delta from all instances
+            avg_delta_device = \
+                    (int(delta_device_1)+\
+                     int(delta_device_2)+\
+                     int(delta_device_3)) / 3
+
+            #Ensure avg delta meets the threshold before appending
+            if avg_delta_device > 0.0 and avg_delta_device < 10000\
+                    and int(i) > iter_ignore:
+                latency_t0_to_device_list.append(avg_delta_device)
+            else:
+                main.log.info("Results for t0-to-device ignored"+\
+                        "due to excess in threshold / warmup iteration.")
+
+            #t0 to graph processing latency (end-to-end)
+            delta_graph_1 = int(graph_timestamp_1) - int(t0_tcp)
+            delta_graph_2 = int(graph_timestamp_2) - int(t0_tcp)
+            delta_graph_3 = int(graph_timestamp_3) - int(t0_tcp)
+        
+            #Get average of delta from all instances
+            #TODO: use max delta graph
+            #max_delta_graph = max(three)
+            avg_delta_graph = \
+                    (int(delta_graph_1)+\
+                     int(delta_graph_2)+\
+                     int(delta_graph_3)) / 3
+
+            #Ensure avg delta meets the threshold before appending
+            if avg_delta_graph > 0.0 and avg_delta_graph < 10000\
+                    and int(i) > iter_ignore:
+                latency_end_to_end_list.append(avg_delta_graph)
+            else:
+                main.log.info("Results for end-to-end ignored"+\
+                        "due to excess in threshold")
+
+            #ofp to graph processing latency (ONOS processing)
+            delta_ofp_graph_1 = int(graph_timestamp_1) - int(t0_ofp)
+            delta_ofp_graph_2 = int(graph_timestamp_2) - int(t0_ofp)
+            delta_ofp_graph_3 = int(graph_timestamp_3) - int(t0_ofp)
+            
+            avg_delta_ofp_graph = \
+                    (int(delta_ofp_graph_1)+\
+                     int(delta_ofp_graph_2)+\
+                     int(delta_ofp_graph_3)) / 3
+            
+            if avg_delta_ofp_graph > threshold_min \
+                    and avg_delta_ofp_graph < threshold_max\
+                    and int(i) > iter_ignore:
+                latency_ofp_to_graph_list.append(avg_delta_ofp_graph)
+            elif avg_delta_ofp_graph > (-10) and \
+                    avg_delta_ofp_graph < 0.0 and\
+                    int(i) > iter_ignore:
+                main.log.info("Sub-millisecond result likely; "+
+                    "negative result was rounded to 0")
+                #NOTE: Current metrics framework does not 
+                #support sub-millisecond accuracy. Therefore,
+                #if the result is negative, we can reasonably
+                #conclude sub-millisecond results and just 
+                #append the best rounded effort - 0 ms. 
+                latency_ofp_to_graph_list.append(0)
+            else:
+                main.log.info("Results for ofp-to-graph "+\
+                        "ignored due to excess in threshold")
+
+            #ofp to device processing latency (ONOS processing)
+            delta_ofp_device_1 = float(device_timestamp_1) - float(t0_ofp)
+            delta_ofp_device_2 = float(device_timestamp_2) - float(t0_ofp)
+            delta_ofp_device_3 = float(device_timestamp_3) - float(t0_ofp)
+            
+            avg_delta_ofp_device = \
+                    (float(delta_ofp_device_1)+\
+                     float(delta_ofp_device_2)+\
+                     float(delta_ofp_device_3)) / 3
+            
+            #NOTE: ofp - delta measurements are occasionally negative
+            #      due to system time misalignment.
+            latency_ofp_to_device_list.append(avg_delta_ofp_device)
+
+            delta_ofp_tcp = int(t0_ofp) - int(t0_tcp)
+            if delta_ofp_tcp > threshold_min \
+                    and delta_ofp_tcp < threshold_max and\
+                    int(i) > iter_ignore:
+                latency_tcp_to_ofp_list.append(delta_ofp_tcp)
+            else:
+                main.log.info("Results fo tcp-to-ofp "+\
+                        "ignored due to excess in threshold")
+
+            #TODO:
+            #Fetch logs upon threshold excess
+
+            main.log.info("ONOS1 delta end-to-end: "+
+                    str(delta_graph_1) + " ms")
+            main.log.info("ONOS2 delta end-to-end: "+
+                    str(delta_graph_2) + " ms")
+            main.log.info("ONOS3 delta end-to-end: "+
+                    str(delta_graph_3) + " ms")
+
+            main.log.info("ONOS1 delta OFP - graph: "+
+                    str(delta_ofp_graph_1) + " ms")
+            main.log.info("ONOS2 delta OFP - graph: "+
+                    str(delta_ofp_graph_2) + " ms")
+            main.log.info("ONOS3 delta OFP - graph: "+
+                    str(delta_ofp_graph_3) + " ms")
+            
+            main.log.info("ONOS1 delta device - t0: "+
+                    str(delta_device_1) + " ms")
+            main.log.info("ONOS2 delta device - t0: "+
+                    str(delta_device_2) + " ms")
+            main.log.info("ONOS3 delta device - t0: "+
+                    str(delta_device_3) + " ms")
+         
+            main.log.info("TCP to OFP delta: "+
+                    str(delta_ofp_tcp) + " ms")
+            #main.log.info("ONOS1 delta OFP - device: "+
+            #        str(delta_ofp_device_1) + " ms")
+            #main.log.info("ONOS2 delta OFP - device: "+
+            #        str(delta_ofp_device_2) + " ms")
+            #main.log.info("ONOS3 delta OFP - device: "+
+            #        str(delta_ofp_device_3) + " ms")
+
+            main.step("Remove switch from controller")
+            main.Mininet1.delete_sw_controller("s1")
+
+            time.sleep(5)
+
+        #END of for loop iteration
+
+        #If there is at least 1 element in each list,
+        #pass the test case
+        if len(latency_end_to_end_list) > 0 and\
+           len(latency_ofp_to_graph_list) > 0 and\
+           len(latency_ofp_to_device_list) > 0 and\
+           len(latency_t0_to_device_list) > 0 and\
+           len(latency_tcp_to_ofp_list) > 0:
+            assertion = main.TRUE
+        elif len(latency_end_to_end_list) == 0:
+            #The appending of 0 here is to prevent 
+            #the min,max,sum functions from failing 
+            #below
+            latency_end_to_end_list.append(0)
+            assertion = main.FALSE
+        elif len(latency_ofp_to_graph_list) == 0:
+            latency_ofp_to_graph_list.append(0)
+            assertion = main.FALSE
+        elif len(latency_ofp_to_device_list) == 0:
+            latency_ofp_to_device_list.append(0)
+            assertion = main.FALSE
+        elif len(latency_t0_to_device_list) == 0:
+            latency_t0_to_device_list.append(0)
+            assertion = main.FALSE
+        elif len(latency_tcp_to_ofp_list) == 0:
+            latency_tcp_to_ofp_list.append(0)
+            assertion = main.FALSE
+
+        #Calculate min, max, avg of latency lists
+        latency_end_to_end_max = \
+                int(max(latency_end_to_end_list))
+        latency_end_to_end_min = \
+                int(min(latency_end_to_end_list))
+        latency_end_to_end_avg = \
+                (int(sum(latency_end_to_end_list)) / \
+                 len(latency_end_to_end_list))
+        latency_end_to_end_std_dev = \
+                str(round(numpy.std(latency_end_to_end_list),1))
+
+        latency_ofp_to_graph_max = \
+                int(max(latency_ofp_to_graph_list))
+        latency_ofp_to_graph_min = \
+                int(min(latency_ofp_to_graph_list))
+        latency_ofp_to_graph_avg = \
+                (int(sum(latency_ofp_to_graph_list)) / \
+                 len(latency_ofp_to_graph_list))
+        latency_ofp_to_graph_std_dev = \
+                str(round(numpy.std(latency_ofp_to_graph_list),1))
+
+        latency_ofp_to_device_max = \
+                int(max(latency_ofp_to_device_list))
+        latency_ofp_to_device_min = \
+                int(min(latency_ofp_to_device_list))
+        latency_ofp_to_device_avg = \
+                (int(sum(latency_ofp_to_device_list)) / \
+                 len(latency_ofp_to_device_list))
+        latency_ofp_to_device_std_dev = \
+                str(round(numpy.std(latency_ofp_to_device_list),1))
+
+        latency_t0_to_device_max = \
+                int(max(latency_t0_to_device_list))
+        latency_t0_to_device_min = \
+                int(min(latency_t0_to_device_list))
+        latency_t0_to_device_avg = \
+                (int(sum(latency_t0_to_device_list)) / \
+                 len(latency_t0_to_device_list))
+        latency_ofp_to_device_std_dev = \
+                str(round(numpy.std(latency_t0_to_device_list),1))
+
+        latency_tcp_to_ofp_max = \
+                int(max(latency_tcp_to_ofp_list))
+        latency_tcp_to_ofp_min = \
+                int(min(latency_tcp_to_ofp_list))
+        latency_tcp_to_ofp_avg = \
+                (int(sum(latency_tcp_to_ofp_list)) / \
+                 len(latency_tcp_to_ofp_list))
+        latency_tcp_to_ofp_std_dev = \
+                str(round(numpy.std(latency_tcp_to_ofp_list),1))
+
+        main.log.report("Switch add - End-to-end latency: "+\
+                "Avg: "+str(latency_end_to_end_avg)+" ms "+
+                "Std Deviation: "+latency_end_to_end_std_dev+" ms")
+        main.log.report("Switch add - OFP-to-Graph latency: "+\
+                "Note: results are not accurate to sub-millisecond. "+
+                "Any sub-millisecond results are rounded to 0 ms. ")
+        main.log.report("Avg: "+str(latency_ofp_to_graph_avg)+" ms "+
+                "Std Deviation: "+latency_ofp_to_graph_std_dev+" ms")
+        main.log.report("Switch add - TCP-to-OFP latency: "+\
+                "Avg: "+str(latency_tcp_to_ofp_avg)+" ms "+
+                "Std Deviation: "+latency_tcp_to_ofp_std_dev+" ms")
+
+        if debug_mode == 'on':
+            main.ONOS1.cp_logs_to_dir("/opt/onos/log/karaf.log",
+                    "/tmp/", copy_file_name="sw_lat_karaf")
+
+        utilities.assert_equals(expect=main.TRUE, actual=assertion,
+                onpass="Switch latency test successful",
+                onfail="Switch latency test failed")
+
+    def CASE3(self, main):
+        '''
+        Bring port up / down and measure latency.
+        Port enable / disable is simulated by ifconfig up / down
+        
+        In ONOS-next, we must ensure that the port we are 
+        manipulating is connected to another switch with a valid
+        connection. Otherwise, graph view will not be updated.
+        '''
+        import time
+        import subprocess
+        import os
+        import requests
+        import json
+        import numpy
+
+        ONOS1_ip = main.params['CTRL']['ip1']
+        ONOS2_ip = main.params['CTRL']['ip2']
+        ONOS3_ip = main.params['CTRL']['ip3']
+        ONOS_user = main.params['CTRL']['user']
+
+        default_sw_port = main.params['CTRL']['port1']
+      
+        assertion = main.TRUE
+        #Number of iterations of case
+        num_iter = main.params['TEST']['numIter']
+       
+        #Timestamp 'keys' for json metrics output.
+        #These are subject to change, hence moved into params
+        deviceTimestamp = main.params['JSON']['deviceTimestamp']
+        graphTimestamp = main.params['JSON']['graphTimestamp']
+        
+        debug_mode = main.params['TEST']['debugMode']
+
+        local_time = time.strftime('%x %X')
+        local_time = local_time.replace("/","")
+        local_time = local_time.replace(" ","_")
+        local_time = local_time.replace(":","")
+        if debug_mode == 'on':
+            main.ONOS1.tshark_pcap("eth0",
+                    "/tmp/port_lat_pcap_"+local_time) 
+
+        #Threshold for this test case
+        up_threshold_str = main.params['TEST']['portUpThreshold']
+        down_threshold_str = main.params['TEST']['portDownThreshold']
+        
+        up_threshold_obj = up_threshold_str.split(",")
+        down_threshold_obj = down_threshold_str.split(",")
+
+        up_threshold_min = int(up_threshold_obj[0])
+        up_threshold_max = int(up_threshold_obj[1])
+
+        down_threshold_min = int(down_threshold_obj[0])
+        down_threshold_max = int(down_threshold_obj[1])
+
+        #NOTE: Some hardcoded variables you may need to configure
+        #      besides the params
+            
+        tshark_port_status = "OFP 130 Port Status"
+
+        tshark_port_up = "/tmp/tshark_port_up.txt"
+        tshark_port_down = "/tmp/tshark_port_down.txt"
+        interface_config = "s1-eth1"
+
+        main.log.report("Port enable / disable latency")
+        main.log.report("Simulated by ifconfig up / down")
+        main.log.report("Total iterations of test: "+str(num_iter))
+
+        main.step("Assign switches s1 and s2 to controller 1")
+        main.Mininet1.assign_sw_controller(sw="1",ip1=ONOS1_ip,
+                port1=default_sw_port)
+        main.Mininet1.assign_sw_controller(sw="2",ip1=ONOS1_ip,
+                port1=default_sw_port)
+
+        #Give enough time for metrics to propagate the 
+        #assign controller event. Otherwise, these events may
+        #carry over to our measurements
+        time.sleep(15)
+
+        port_up_device_to_ofp_list = []
+        port_up_graph_to_ofp_list = []
+        port_down_device_to_ofp_list = []
+        port_down_graph_to_ofp_list = []
+
+        for i in range(0, int(num_iter)):
+            main.step("Starting wireshark capture for port status down")
+            main.ONOS1.tshark_grep(tshark_port_status,
+                    tshark_port_down)
+            
+            time.sleep(5)
+
+            #Disable interface that is connected to switch 2
+            main.step("Disable port: "+interface_config)
+            main.Mininet1.handle.sendline("sh ifconfig "+
+                    interface_config+" down")
+            main.Mininet1.handle.expect("mininet>")
+
+            time.sleep(3)
+            main.ONOS1.tshark_stop()
+            
+            main.step("Obtain t1 by metrics call")
+            json_str_up_1 = main.ONOS1cli.topology_events_metrics()
+            json_str_up_2 = main.ONOS2cli.topology_events_metrics()
+            json_str_up_3 = main.ONOS3cli.topology_events_metrics()
+
+            json_obj_1 = json.loads(json_str_up_1)
+            json_obj_2 = json.loads(json_str_up_2)
+            json_obj_3 = json.loads(json_str_up_3)
+            
+            #Copy tshark output file from ONOS to TestON instance
+            #/tmp directory
+            os.system("scp "+ONOS_user+"@"+ONOS1_ip+":"+
+                    tshark_port_down+" /tmp/")
+
+            f_port_down = open(tshark_port_down, 'r')
+            #Get first line of port down event from tshark
+            f_line = f_port_down.readline()
+            obj_down = f_line.split(" ")
+            if len(f_line) > 0:
+                timestamp_begin_pt_down = int(float(obj_down[1])*1000)
+                main.log.info("Port down begin timestamp: "+
+                        str(timestamp_begin_pt_down))
+            else:
+                main.log.info("Tshark output file returned unexpected"+
+                        " results: "+str(obj_down))
+                timestamp_begin_pt_down = 0
+            
+            f_port_down.close()
+
+            main.log.info("TEST tshark obj: "+str(obj_down))
+
+            time.sleep(3)
+
+            #Obtain graph timestamp. This timestsamp captures
+            #the epoch time at which the topology graph was updated.
+            graph_timestamp_1 = \
+                    json_obj_1[graphTimestamp]['value']
+            graph_timestamp_2 = \
+                    json_obj_2[graphTimestamp]['value']
+            graph_timestamp_3 = \
+                    json_obj_3[graphTimestamp]['value']
+
+            main.log.info("TEST graph timestamp ONOS1: "+
+                    str(graph_timestamp_1))
+
+            #Obtain device timestamp. This timestamp captures
+            #the epoch time at which the device event happened
+            device_timestamp_1 = \
+                    json_obj_1[deviceTimestamp]['value'] 
+            device_timestamp_2 = \
+                    json_obj_2[deviceTimestamp]['value'] 
+            device_timestamp_3 = \
+                    json_obj_3[deviceTimestamp]['value'] 
+
+            #Get delta between graph event and OFP 
+            pt_down_graph_to_ofp_1 = int(graph_timestamp_1) -\
+                    int(timestamp_begin_pt_down)
+            pt_down_graph_to_ofp_2 = int(graph_timestamp_2) -\
+                    int(timestamp_begin_pt_down)
+            pt_down_graph_to_ofp_3 = int(graph_timestamp_3) -\
+                    int(timestamp_begin_pt_down)
+
+            #Get delta between device event and OFP
+            pt_down_device_to_ofp_1 = int(device_timestamp_1) -\
+                    int(timestamp_begin_pt_down)
+            pt_down_device_to_ofp_2 = int(device_timestamp_2) -\
+                    int(timestamp_begin_pt_down)
+            pt_down_device_to_ofp_3 = int(device_timestamp_3) -\
+                    int(timestamp_begin_pt_down)
+       
+            #Caluclate average across clusters
+            pt_down_graph_to_ofp_avg =\
+                    (int(pt_down_graph_to_ofp_1) +
+                     int(pt_down_graph_to_ofp_2) + 
+                     int(pt_down_graph_to_ofp_3)) / 3
+            pt_down_device_to_ofp_avg = \
+                    (int(pt_down_device_to_ofp_1) + 
+                     int(pt_down_device_to_ofp_2) +
+                     int(pt_down_device_to_ofp_3)) / 3
+
+            if pt_down_graph_to_ofp_avg > down_threshold_min and \
+                    pt_down_graph_to_ofp_avg < down_threshold_max:
+                port_down_graph_to_ofp_list.append(
+                    pt_down_graph_to_ofp_avg)
+                main.log.info("Port down: graph to ofp avg: "+
+                    str(pt_down_graph_to_ofp_avg) + " ms")
+            else:
+                main.log.info("Average port down graph-to-ofp result" +
+                        " exceeded the threshold: "+
+                        str(pt_down_graph_to_ofp_avg))
+
+            if pt_down_device_to_ofp_avg > 0 and \
+                    pt_down_device_to_ofp_avg < 1000:
+                port_down_device_to_ofp_list.append(
+                    pt_down_device_to_ofp_avg)
+                main.log.info("Port down: device to ofp avg: "+
+                    str(pt_down_device_to_ofp_avg) + " ms")
+            else:
+                main.log.info("Average port down device-to-ofp result" +
+                        " exceeded the threshold: "+
+                        str(pt_down_device_to_ofp_avg))
+
+            #Port up events 
+            main.step("Enable port and obtain timestamp")
+            main.step("Starting wireshark capture for port status up")
+            main.ONOS1.tshark_grep(tshark_port_status, tshark_port_up)
+            time.sleep(5)
+
+            main.Mininet1.handle.sendline("sh ifconfig "+
+                    interface_config+" up")
+            main.Mininet1.handle.expect("mininet>")
+            
+            #Allow time for tshark to capture event
+            time.sleep(3)
+            main.ONOS1.tshark_stop()
+
+            #Obtain metrics shortly afterwards
+            #This timestsamp captures
+            #the epoch time at which the topology graph was updated.
+            main.step("Obtain t1 by REST call")
+            json_str_up_1 = main.ONOS1cli.topology_events_metrics()
+            json_str_up_2 = main.ONOS2cli.topology_events_metrics()
+            json_str_up_3 = main.ONOS3cli.topology_events_metrics()
+            
+            json_obj_1 = json.loads(json_str_up_1)
+            json_obj_2 = json.loads(json_str_up_2)
+            json_obj_3 = json.loads(json_str_up_3)
+
+            os.system("scp "+ONOS_user+"@"+ONOS1_ip+":"+
+                    tshark_port_up+" /tmp/")
+
+            f_port_up = open(tshark_port_up, 'r')
+            f_line = f_port_up.readline()
+            obj_up = f_line.split(" ")
+            if len(f_line) > 0:
+                timestamp_begin_pt_up = int(float(obj_up[1])*1000)
+                main.log.info("Port up begin timestamp: "+
+                        str(timestamp_begin_pt_up))
+            else:
+                main.log.info("Tshark output file returned unexpected"+
+                        " results.")
+                timestamp_begin_pt_up = 0
+            
+            f_port_up.close()
+
+            graph_timestamp_1 = \
+                    json_obj_1[graphTimestamp]['value']
+            graph_timestamp_2 = \
+                    json_obj_2[graphTimestamp]['value']
+            graph_timestamp_3 = \
+                    json_obj_3[graphTimestamp]['value']
+
+            #Obtain device timestamp. This timestamp captures
+            #the epoch time at which the device event happened
+            device_timestamp_1 = \
+                    json_obj_1[deviceTimestamp]['value'] 
+            device_timestamp_2 = \
+                    json_obj_2[deviceTimestamp]['value'] 
+            device_timestamp_3 = \
+                    json_obj_3[deviceTimestamp]['value'] 
+
+            #Get delta between graph event and OFP 
+            pt_up_graph_to_ofp_1 = int(graph_timestamp_1) -\
+                    int(timestamp_begin_pt_up)
+            pt_up_graph_to_ofp_2 = int(graph_timestamp_2) -\
+                    int(timestamp_begin_pt_up)
+            pt_up_graph_to_ofp_3 = int(graph_timestamp_3) -\
+                    int(timestamp_begin_pt_up)
+
+            #Get delta between device event and OFP
+            pt_up_device_to_ofp_1 = int(device_timestamp_1) -\
+                    int(timestamp_begin_pt_up)
+            pt_up_device_to_ofp_2 = int(device_timestamp_2) -\
+                    int(timestamp_begin_pt_up)
+            pt_up_device_to_ofp_3 = int(device_timestamp_3) -\
+                    int(timestamp_begin_pt_up)
+
+            main.log.info("ONOS1 delta G2O: "+str(pt_up_graph_to_ofp_1))
+            main.log.info("ONOS2 delta G2O: "+str(pt_up_graph_to_ofp_2))
+            main.log.info("ONOS3 delta G2O: "+str(pt_up_graph_to_ofp_3))
+
+            main.log.info("ONOS1 delta D2O: "+str(pt_up_device_to_ofp_1))
+            main.log.info("ONOS2 delta D2O: "+str(pt_up_device_to_ofp_2)) 
+            main.log.info("ONOS3 delta D2O: "+str(pt_up_device_to_ofp_3)) 
+
+            pt_up_graph_to_ofp_avg = \
+                    (int(pt_up_graph_to_ofp_1) + 
+                     int(pt_up_graph_to_ofp_2) +
+                     int(pt_up_graph_to_ofp_3)) / 3
+
+            pt_up_device_to_ofp_avg = \
+                    (int(pt_up_device_to_ofp_1) + 
+                     int(pt_up_device_to_ofp_2) +
+                     int(pt_up_device_to_ofp_3)) / 3
+
+            if pt_up_graph_to_ofp_avg > up_threshold_min and \
+                    pt_up_graph_to_ofp_avg < up_threshold_max: 
+                port_up_graph_to_ofp_list.append(
+                        pt_up_graph_to_ofp_avg)
+                main.log.info("Port down: graph to ofp avg: "+
+                    str(pt_up_graph_to_ofp_avg) + " ms")
+            else:
+                main.log.info("Average port up graph-to-ofp result"+
+                        " exceeded the threshold: "+
+                        str(pt_up_graph_to_ofp_avg))
+            
+            if pt_up_device_to_ofp_avg > up_threshold_min and \
+                    pt_up_device_to_ofp_avg < up_threshold_max:
+                port_up_device_to_ofp_list.append(
+                        pt_up_device_to_ofp_avg)
+                main.log.info("Port up: device to ofp avg: "+
+                    str(pt_up_device_to_ofp_avg) + " ms")
+            else:
+                main.log.info("Average port up device-to-ofp result"+
+                        " exceeded the threshold: "+
+                        str(pt_up_device_to_ofp_avg))
+            
+            #END ITERATION FOR LOOP
+        
+        #Check all list for latency existence and set assertion
+        if (port_down_graph_to_ofp_list and port_down_device_to_ofp_list\
+           and port_up_graph_to_ofp_list and port_up_device_to_ofp_list):
+            assertion = main.TRUE
+
+        #Calculate and report latency measurements
+        port_down_graph_to_ofp_min = min(port_down_graph_to_ofp_list)
+        port_down_graph_to_ofp_max = max(port_down_graph_to_ofp_list)
+        port_down_graph_to_ofp_avg = \
+                (sum(port_down_graph_to_ofp_list) / 
+                 len(port_down_graph_to_ofp_list))
+        port_down_graph_to_ofp_std_dev = \
+                str(round(numpy.std(port_down_graph_to_ofp_list),1))
+        
+        main.log.report("Port down graph-to-ofp "+
+                "Avg: "+str(port_down_graph_to_ofp_avg)+" ms "+
+                "Std Deviation: "+port_down_graph_to_ofp_std_dev+" ms")
+        
+        port_down_device_to_ofp_min = min(port_down_device_to_ofp_list)
+        port_down_device_to_ofp_max = max(port_down_device_to_ofp_list)
+        port_down_device_to_ofp_avg = \
+                (sum(port_down_device_to_ofp_list) /\
+                 len(port_down_device_to_ofp_list))
+        port_down_device_to_ofp_std_dev = \
+                str(round(numpy.std(port_down_device_to_ofp_list),1))
+        
+        main.log.report("Port down device-to-ofp "+
+                "Avg: "+str(port_down_device_to_ofp_avg)+" ms "+
+                "Std Deviation: "+port_down_device_to_ofp_std_dev+" ms")
+        
+        port_up_graph_to_ofp_min = min(port_up_graph_to_ofp_list)
+        port_up_graph_to_ofp_max = max(port_up_graph_to_ofp_list)
+        port_up_graph_to_ofp_avg = \
+                (sum(port_up_graph_to_ofp_list) /\
+                 len(port_up_graph_to_ofp_list))
+        port_up_graph_to_ofp_std_dev = \
+                str(round(numpy.std(port_up_graph_to_ofp_list),1))
+        
+        main.log.report("Port up graph-to-ofp "+
+                "Avg: "+str(port_up_graph_to_ofp_avg)+" ms "+
+                "Std Deviation: "+port_up_graph_to_ofp_std_dev+" ms")
+          
+        port_up_device_to_ofp_min = min(port_up_device_to_ofp_list)
+        port_up_device_to_ofp_max = max(port_up_device_to_ofp_list)
+        port_up_device_to_ofp_avg = \
+                (sum(port_up_device_to_ofp_list) /\
+                 len(port_up_device_to_ofp_list))
+        port_up_device_to_ofp_std_dev = \
+                str(round(numpy.std(port_up_device_to_ofp_list),1))
+        
+        main.log.report("Port up device-to-ofp "+
+                "Avg: "+str(port_up_device_to_ofp_avg)+" ms "+
+                "Std Deviation: "+port_up_device_to_ofp_std_dev+" ms")
+
+        utilities.assert_equals(expect=main.TRUE, actual=assertion,
+                onpass="Port discovery latency calculation successful",
+                onfail="Port discovery test failed")
+
+    def CASE4(self, main):
+        '''
+        Link down event using loss rate 100%
+        
+        Important:
+            Use a simple 2 switch topology with 1 link between
+            the two switches. Ensure that mac addresses of the 
+            switches are 1 / 2 respectively
+        '''
+        import time
+        import subprocess
+        import os
+        import requests
+        import json
+        import numpy 
+    
+        ONOS1_ip = main.params['CTRL']['ip1']
+        ONOS2_ip = main.params['CTRL']['ip2']
+        ONOS3_ip = main.params['CTRL']['ip3']
+        ONOS_user = main.params['CTRL']['user']
+
+        default_sw_port = main.params['CTRL']['port1']
+       
+        #Number of iterations of case
+        num_iter = main.params['TEST']['numIter']
+       
+        #Timestamp 'keys' for json metrics output.
+        #These are subject to change, hence moved into params
+        deviceTimestamp = main.params['JSON']['deviceTimestamp']
+        linkTimestamp = main.params['JSON']['linkTimestamp'] 
+        graphTimestamp = main.params['JSON']['graphTimestamp']
+        
+        debug_mode = main.params['TEST']['debugMode']
+
+        local_time = time.strftime('%x %X')
+        local_time = local_time.replace("/","")
+        local_time = local_time.replace(" ","_")
+        local_time = local_time.replace(":","")
+        if debug_mode == 'on':
+            main.ONOS1.tshark_pcap("eth0",
+                    "/tmp/link_lat_pcap_"+local_time) 
+
+        #Threshold for this test case
+        up_threshold_str = main.params['TEST']['linkUpThreshold']
+        down_threshold_str = main.params['TEST']['linkDownThreshold']
+
+        up_threshold_obj = up_threshold_str.split(",")
+        down_threshold_obj = down_threshold_str.split(",")
+
+        up_threshold_min = int(up_threshold_obj[0])
+        up_threshold_max = int(up_threshold_obj[1])
+
+        down_threshold_min = int(down_threshold_obj[0])
+        down_threshold_max = int(down_threshold_obj[1])
+
+        assertion = main.TRUE
+        #Link event timestamp to system time list
+        link_down_link_to_system_list = []
+        link_up_link_to_system_list = []
+        #Graph event timestamp to system time list
+        link_down_graph_to_system_list = []
+        link_up_graph_to_system_list = [] 
+
+        main.log.report("Link up / down discovery latency between "+
+                "two switches")
+        main.log.report("Simulated by setting loss-rate 100%")
+        main.log.report("'tc qdisc add dev <intfs> root netem loss 100%'") 
+        main.log.report("Total iterations of test: "+str(num_iter))
+
+        main.step("Assign all switches")
+        main.Mininet1.assign_sw_controller(sw="1",
+                ip1=ONOS1_ip, port1=default_sw_port)
+        main.Mininet1.assign_sw_controller(sw="2",
+                ip1=ONOS1_ip, port1=default_sw_port)
+
+        main.step("Verifying switch assignment")
+        result_s1 = main.Mininet1.get_sw_controller(sw="s1")
+        result_s2 = main.Mininet1.get_sw_controller(sw="s2")
+          
+        #Allow time for events to finish before taking measurements
+        time.sleep(10)
+
+        link_down1 = False
+        link_down2 = False
+        link_down3 = False
+        #Start iteration of link event test
+        for i in range(0, int(num_iter)):
+            main.step("Getting initial system time as t0")
+        
+            #System time in epoch ms
+            timestamp_link_down_t0 = time.time() * 1000
+            #Link down is simulated by 100% loss rate using traffic 
+            #control command
+            main.Mininet1.handle.sendline(
+                    "sh tc qdisc add dev s1-eth1 root netem loss 100%")
+
+            #TODO: Iterate through 'links' command to verify that
+            #      link s1 -> s2 went down (loop timeout 30 seconds) 
+            #      on all 3 ONOS instances
+            main.log.info("Checking ONOS for link update")
+            loop_count = 0
+            while( not (link_down1 and link_down2 and link_down3)\
+                    and loop_count < 30 ):
+                json_str1 = main.ONOS1cli.links()
+                json_str2 = main.ONOS2cli.links()
+                json_str3 = main.ONOS3cli.links()
+                
+                if not (json_str1 and json_str2 and json_str3):
+                    main.log.error("CLI command returned error ")
+                    break
+                else:
+                    json_obj1 = json.loads(json_str1)
+                    json_obj2 = json.loads(json_str2)
+                    json_obj3 = json.loads(json_str3)
+                for obj1 in json_obj1:
+                    if '01' not in obj1['src']['device']:
+                        link_down1 = True
+                        main.log.info("Link down from "+
+                                "s1 -> s2 on ONOS1 detected")
+                for obj2 in json_obj2:
+                    if '01' not in obj2['src']['device']:
+                        link_down2 = True
+                        main.log.info("Link down from "+
+                                "s1 -> s2 on ONOS2 detected")
+                for obj3 in json_obj3:
+                    if '01' not in obj3['src']['device']:
+                        link_down3 = True
+                        main.log.info("Link down from "+
+                                "s1 -> s2 on ONOS3 detected")
+                
+                loop_count += 1
+                #If CLI doesn't like the continuous requests
+                #and exits in this loop, increase the sleep here.
+                #Consequently, while loop timeout will increase
+                time.sleep(1)
+    
+            #Give time for metrics measurement to catch up
+            #NOTE: May need to be configured more accurately
+            time.sleep(10)
+            #If we exited the while loop and link down 1,2,3 are still 
+            #false, then ONOS has failed to discover link down event
+            if not (link_down1 and link_down2 and link_down3):
+                main.log.info("Link down discovery failed")
+                
+                link_down_lat_graph1 = 0
+                link_down_lat_graph2 = 0
+                link_down_lat_graph3 = 0
+                link_down_lat_device1 = 0
+                link_down_lat_device2 = 0
+                link_down_lat_device3 = 0
+                
+                assertion = main.FALSE
+            else:
+                json_topo_metrics_1 =\
+                        main.ONOS1cli.topology_events_metrics()
+                json_topo_metrics_2 =\
+                        main.ONOS2cli.topology_events_metrics()
+                json_topo_metrics_3 =\
+                        main.ONOS3cli.topology_events_metrics()
+                json_topo_metrics_1 = json.loads(json_topo_metrics_1)
+                json_topo_metrics_2 = json.loads(json_topo_metrics_2)
+                json_topo_metrics_3 = json.loads(json_topo_metrics_3)
+
+                main.log.info("Obtaining graph and device timestamp")
+                graph_timestamp_1 = \
+                    json_topo_metrics_1[graphTimestamp]['value']
+                graph_timestamp_2 = \
+                    json_topo_metrics_2[graphTimestamp]['value']
+                graph_timestamp_3 = \
+                    json_topo_metrics_3[graphTimestamp]['value']
+
+                link_timestamp_1 = \
+                    json_topo_metrics_1[linkTimestamp]['value']
+                link_timestamp_2 = \
+                    json_topo_metrics_2[linkTimestamp]['value']
+                link_timestamp_3 = \
+                    json_topo_metrics_3[linkTimestamp]['value']
+
+                if graph_timestamp_1 and graph_timestamp_2 and\
+                        graph_timestamp_3 and link_timestamp_1 and\
+                        link_timestamp_2 and link_timestamp_3:
+                    link_down_lat_graph1 = int(graph_timestamp_1) -\
+                            int(timestamp_link_down_t0)
+                    link_down_lat_graph2 = int(graph_timestamp_2) -\
+                            int(timestamp_link_down_t0)
+                    link_down_lat_graph3 = int(graph_timestamp_3) -\
+                            int(timestamp_link_down_t0)
+                
+                    link_down_lat_link1 = int(link_timestamp_1) -\
+                            int(timestamp_link_down_t0)
+                    link_down_lat_link2 = int(link_timestamp_2) -\
+                            int(timestamp_link_down_t0)
+                    link_down_lat_link3 = int(link_timestamp_3) -\
+                            int(timestamp_link_down_t0)
+                else:
+                    main.log.error("There was an error calculating"+
+                        " the delta for link down event")
+                    link_down_lat_graph1 = 0
+                    link_down_lat_graph2 = 0
+                    link_down_lat_graph3 = 0
+                    
+                    link_down_lat_device1 = 0
+                    link_down_lat_device2 = 0
+                    link_down_lat_device3 = 0
+        
+            main.log.info("Link down latency ONOS1 iteration "+
+                    str(i)+" (end-to-end): "+
+                    str(link_down_lat_graph1)+" ms")
+            main.log.info("Link down latency ONOS2 iteration "+
+                    str(i)+" (end-to-end): "+
+                    str(link_down_lat_graph2)+" ms")
+            main.log.info("Link down latency ONOS3 iteration "+
+                    str(i)+" (end-to-end): "+
+                    str(link_down_lat_graph3)+" ms")
+            
+            main.log.info("Link down latency ONOS1 iteration "+
+                    str(i)+" (link-event-to-system-timestamp): "+
+                    str(link_down_lat_link1)+" ms")
+            main.log.info("Link down latency ONOS2 iteration "+
+                    str(i)+" (link-event-to-system-timestamp): "+
+                    str(link_down_lat_link2)+" ms")
+            main.log.info("Link down latency ONOS3 iteration "+
+                    str(i)+" (link-event-to-system-timestamp): "+
+                    str(link_down_lat_link3))
+      
+            #Calculate avg of node calculations
+            link_down_lat_graph_avg =\
+                    (link_down_lat_graph1 +
+                     link_down_lat_graph2 +
+                     link_down_lat_graph3) / 3
+            link_down_lat_link_avg =\
+                    (link_down_lat_link1 +
+                     link_down_lat_link2 +
+                     link_down_lat_link3) / 3
+
+            #Set threshold and append latency to list
+            if link_down_lat_graph_avg > down_threshold_min and\
+               link_down_lat_graph_avg < down_threshold_max:
+                link_down_graph_to_system_list.append(
+                        link_down_lat_graph_avg)
+            else:
+                main.log.info("Link down latency exceeded threshold")
+                main.log.info("Results for iteration "+str(i)+
+                        "have been omitted")
+            if link_down_lat_link_avg > down_threshold_min and\
+               link_down_lat_link_avg < down_threshold_max:
+                link_down_link_to_system_list.append(
+                        link_down_lat_link_avg)
+            else:
+                main.log.info("Link down latency exceeded threshold")
+                main.log.info("Results for iteration "+str(i)+
+                        "have been omitted")
+
+            #NOTE: To remove loss rate and measure latency:
+            #       'sh tc qdisc del dev s1-eth1 root'
+            timestamp_link_up_t0 = time.time() * 1000
+            main.Mininet1.handle.sendline("sh tc qdisc del dev "+
+                    "s1-eth1 root")
+            main.Mininet1.handle.expect("mininet>")
+            
+            main.log.info("Checking ONOS for link update")
+            
+            link_down1 = True
+            link_down2 = True
+            link_down3 = True
+            loop_count = 0
+            while( (link_down1 and link_down2 and link_down3)\
+                    and loop_count < 30 ):
+                json_str1 = main.ONOS1cli.links()
+                json_str2 = main.ONOS2cli.links()
+                json_str3 = main.ONOS3cli.links()
+                if not (json_str1 and json_str2 and json_str3):
+                    main.log.error("CLI command returned error ")
+                    break
+                else:
+                    json_obj1 = json.loads(json_str1)
+                    json_obj2 = json.loads(json_str2)
+                    json_obj3 = json.loads(json_str3)
+                
+                for obj1 in json_obj1:
+                    if '01' in obj1['src']['device']:
+                        link_down1 = False 
+                        main.log.info("Link up from "+
+                            "s1 -> s2 on ONOS1 detected")
+                for obj2 in json_obj2:
+                    if '01' in obj2['src']['device']:
+                        link_down2 = False 
+                        main.log.info("Link up from "+
+                            "s1 -> s2 on ONOS2 detected")
+                for obj3 in json_obj3:
+                    if '01' in obj3['src']['device']:
+                        link_down3 = False 
+                        main.log.info("Link up from "+
+                            "s1 -> s2 on ONOS3 detected")
+                
+                loop_count += 1
+                time.sleep(1)
+            
+            if (link_down1 and link_down2 and link_down3):
+                main.log.info("Link up discovery failed")
+                
+                link_up_lat_graph1 = 0
+                link_up_lat_graph2 = 0
+                link_up_lat_graph3 = 0
+                link_up_lat_device1 = 0
+                link_up_lat_device2 = 0
+                link_up_lat_device3 = 0
+                
+                assertion = main.FALSE
+            else:
+                json_topo_metrics_1 =\
+                        main.ONOS1cli.topology_events_metrics()
+                json_topo_metrics_2 =\
+                        main.ONOS2cli.topology_events_metrics()
+                json_topo_metrics_3 =\
+                        main.ONOS3cli.topology_events_metrics()
+                json_topo_metrics_1 = json.loads(json_topo_metrics_1)
+                json_topo_metrics_2 = json.loads(json_topo_metrics_2)
+                json_topo_metrics_3 = json.loads(json_topo_metrics_3)
+
+                main.log.info("Obtaining graph and device timestamp")
+                graph_timestamp_1 = \
+                    json_topo_metrics_1[graphTimestamp]['value']
+                graph_timestamp_2 = \
+                    json_topo_metrics_2[graphTimestamp]['value']
+                graph_timestamp_3 = \
+                    json_topo_metrics_3[graphTimestamp]['value']
+
+                link_timestamp_1 = \
+                    json_topo_metrics_1[linkTimestamp]['value']
+                link_timestamp_2 = \
+                    json_topo_metrics_2[linkTimestamp]['value']
+                link_timestamp_3 = \
+                    json_topo_metrics_3[linkTimestamp]['value']
+
+                if graph_timestamp_1 and graph_timestamp_2 and\
+                        graph_timestamp_3 and link_timestamp_1 and\
+                        link_timestamp_2 and link_timestamp_3:
+                    link_up_lat_graph1 = int(graph_timestamp_1) -\
+                            int(timestamp_link_up_t0)
+                    link_up_lat_graph2 = int(graph_timestamp_2) -\
+                            int(timestamp_link_up_t0)
+                    link_up_lat_graph3 = int(graph_timestamp_3) -\
+                            int(timestamp_link_up_t0)
+                
+                    link_up_lat_link1 = int(link_timestamp_1) -\
+                            int(timestamp_link_up_t0)
+                    link_up_lat_link2 = int(link_timestamp_2) -\
+                            int(timestamp_link_up_t0)
+                    link_up_lat_link3 = int(link_timestamp_3) -\
+                            int(timestamp_link_up_t0)
+                else:
+                    main.log.error("There was an error calculating"+
+                        " the delta for link down event")
+                    link_up_lat_graph1 = 0
+                    link_up_lat_graph2 = 0
+                    link_up_lat_graph3 = 0
+                    
+                    link_up_lat_device1 = 0
+                    link_up_lat_device2 = 0
+                    link_up_lat_device3 = 0
+       
+            if debug_mode == 'on':
+                main.log.info("Link up latency ONOS1 iteration "+
+                    str(i)+" (end-to-end): "+
+                    str(link_up_lat_graph1)+" ms")
+                main.log.info("Link up latency ONOS2 iteration "+
+                    str(i)+" (end-to-end): "+
+                    str(link_up_lat_graph2)+" ms")
+                main.log.info("Link up latency ONOS3 iteration "+
+                    str(i)+" (end-to-end): "+
+                    str(link_up_lat_graph3)+" ms")
+            
+                main.log.info("Link up latency ONOS1 iteration "+
+                    str(i)+" (link-event-to-system-timestamp): "+
+                    str(link_up_lat_link1)+" ms")
+                main.log.info("Link up latency ONOS2 iteration "+
+                    str(i)+" (link-event-to-system-timestamp): "+
+                    str(link_up_lat_link2)+" ms")
+                main.log.info("Link up latency ONOS3 iteration "+
+                    str(i)+" (link-event-to-system-timestamp): "+
+                    str(link_up_lat_link3))
+      
+            #Calculate avg of node calculations
+            link_up_lat_graph_avg =\
+                    (link_up_lat_graph1 +
+                     link_up_lat_graph2 +
+                     link_up_lat_graph3) / 3
+            link_up_lat_link_avg =\
+                    (link_up_lat_link1 +
+                     link_up_lat_link2 +
+                     link_up_lat_link3) / 3
+
+            #Set threshold and append latency to list
+            if link_up_lat_graph_avg > up_threshold_min and\
+               link_up_lat_graph_avg < up_threshold_max:
+                link_up_graph_to_system_list.append(
+                        link_up_lat_graph_avg)
+            else:
+                main.log.info("Link up latency exceeded threshold")
+                main.log.info("Results for iteration "+str(i)+
+                        "have been omitted")
+            if link_up_lat_link_avg > up_threshold_min and\
+               link_up_lat_link_avg < up_threshold_max:
+                link_up_link_to_system_list.append(
+                        link_up_lat_link_avg)
+            else:
+                main.log.info("Link up latency exceeded threshold")
+                main.log.info("Results for iteration "+str(i)+
+                        "have been omitted")
+
+        #Calculate min, max, avg of list and report
+        link_down_min = min(link_down_graph_to_system_list)
+        link_down_max = max(link_down_graph_to_system_list)
+        link_down_avg = sum(link_down_graph_to_system_list) / \
+                        len(link_down_graph_to_system_list)
+        link_up_min = min(link_up_graph_to_system_list)
+        link_up_max = max(link_up_graph_to_system_list)
+        link_up_avg = sum(link_up_graph_to_system_list) / \
+                        len(link_up_graph_to_system_list)
+        link_down_std_dev = \
+                str(round(numpy.std(link_down_graph_to_system_list),1))
+        link_up_std_dev = \
+                str(round(numpy.std(link_up_graph_to_system_list),1))
+
+        main.log.report("Link down latency " +
+                "Avg: "+str(link_down_avg)+" ms "+
+                "Std Deviation: "+link_down_std_dev+" ms")
+        main.log.report("Link up latency "+
+                "Avg: "+str(link_up_avg)+" ms "+
+                "Std Deviation: "+link_up_std_dev+" ms")
+
+        utilities.assert_equals(expect=main.TRUE, actual=assertion,
+                onpass="Link discovery latency calculation successful",
+                onfail="Link discovery latency case failed")
+
+    def CASE5(self, main):
+        '''
+        100 Switch discovery latency
+
+        Important:
+            This test case can be potentially dangerous if 
+            your machine has previously set iptables rules.
+            One of the steps of the test case will flush
+            all existing iptables rules.
+        Note:
+            You can specify the number of switches in the 
+            params file to adjust the switch discovery size
+            (and specify the corresponding topology in Mininet1 
+            .topo file)
+        '''
+        import time
+        import subprocess
+        import os
+        import requests
+        import json
+
+        ONOS1_ip = main.params['CTRL']['ip1']
+        ONOS2_ip = main.params['CTRL']['ip2']
+        ONOS3_ip = main.params['CTRL']['ip3']
+        MN1_ip = main.params['MN']['ip1']
+        ONOS_user = main.params['CTRL']['user']
+
+        default_sw_port = main.params['CTRL']['port1']
+       
+        #Number of iterations of case
+        num_iter = main.params['TEST']['numIter']
+        num_sw = main.params['TEST']['numSwitch']
+
+        #Timestamp 'keys' for json metrics output.
+        #These are subject to change, hence moved into params
+        deviceTimestamp = main.params['JSON']['deviceTimestamp']
+        graphTimestamp = main.params['JSON']['graphTimestamp']
+        
+        debug_mode = main.params['TEST']['debugMode']
+
+        local_time = time.strftime('%X')
+        local_time = local_time.replace("/","")
+        local_time = local_time.replace(" ","_")
+        local_time = local_time.replace(":","")
+        if debug_mode == 'on':
+            main.ONOS1.tshark_pcap("eth0",
+                    "/tmp/100_sw_lat_pcap_"+local_time) 
+ 
+        #Threshold for this test case
+        sw_disc_threshold_str = main.params['TEST']['swDisc100Threshold']
+        sw_disc_threshold_obj = sw_disc_threshold_str.split(",")
+        sw_disc_threshold_min = int(sw_disc_threshold_obj[0])
+        sw_disc_threshold_max = int(sw_disc_threshold_obj[1])
+
+        tshark_ofp_output = "/tmp/tshark_ofp_"+num_sw+"sw.txt"
+        tshark_tcp_output = "/tmp/tshark_tcp_"+num_sw+"sw.txt"
+
+        tshark_ofp_result_list = []
+        tshark_tcp_result_list = []
+
+        sw_discovery_lat_list = []
+
+        main.case(num_sw+" Switch discovery latency")
+        main.step("Assigning all switches to ONOS1")
+        for i in range(1, int(num_sw)+1):
+            main.Mininet1.assign_sw_controller(
+                    sw=str(i),
+                    ip1=ONOS1_ip,
+                    port1=default_sw_port)
+        
+        #Ensure that nodes are configured with ptpd
+        #Just a warning message
+        main.log.info("Please check ptpd configuration to ensure"+\
+                " All nodes' system times are in sync")
+        time.sleep(5)
+
+        for i in range(0, int(num_iter)):
+            
+            main.step("Set iptables rule to block incoming sw connections")
+            #Set iptables rule to block incoming switch connections
+            #The rule description is as follows:
+            #   Append to INPUT rule,
+            #   behavior DROP that matches following:
+            #       * packet type: tcp
+            #       * source IP: MN1_ip
+            #       * destination PORT: 6633
+            main.ONOS1.handle.sendline(
+                    "sudo iptables -A INPUT -p tcp -s "+MN1_ip+
+                    " --dport "+default_sw_port+" -j DROP")
+            main.ONOS1.handle.expect("\$") 
+            #   Append to OUTPUT rule, 
+            #   behavior DROP that matches following:
+            #       * packet type: tcp
+            #       * source IP: MN1_ip
+            #       * destination PORT: 6633
+            main.ONOS1.handle.sendline(
+                    "sudo iptables -A OUTPUT -p tcp -s "+MN1_ip+
+                    " --dport "+default_sw_port+" -j DROP")
+            main.ONOS1.handle.expect("\$")
+            #Give time to allow rule to take effect
+            #NOTE: Sleep period may need to be configured 
+            #      based on the number of switches in the topology
+            main.log.info("Please wait for switch connection to "+
+                    "time out")
+            time.sleep(60)
+            
+            #Gather vendor OFP with tshark
+            main.ONOS1.tshark_grep("OFP 86 Vendor", 
+                    tshark_ofp_output)
+            main.ONOS1.tshark_grep("TCP 74 ",
+                    tshark_tcp_output)
+
+            #NOTE: Remove all iptables rule quickly (flush)
+            #      Before removal, obtain TestON timestamp at which 
+            #      removal took place
+            #      (ensuring nodes are configured via ptp)
+            #      sudo iptables -F
+            
+            t0_system = time.time() * 1000
+            main.ONOS1.handle.sendline(
+                    "sudo iptables -F")
+
+            #Counter to track loop count
+            counter_loop = 0
+            counter_avail1 = 0
+            counter_avail2 = 0
+            counter_avail3 = 0
+            onos1_dev = False
+            onos2_dev = False
+            onos3_dev = False
+            while counter_loop < 60:
+                #Continue to check devices for all device 
+                #availability. When all devices in all 3
+                #ONOS instances indicate that devices are available
+                #obtain graph event timestamp for t1.
+                device_str_obj1 = main.ONOS1cli.devices()
+                device_str_obj2 = main.ONOS2cli.devices()
+                device_str_obj3 = main.ONOS3cli.devices()
+
+                device_json1 = json.loads(device_str_obj1)                
+                device_json2 = json.loads(device_str_obj2)                
+                device_json3 = json.loads(device_str_obj3)           
+                
+                for device1 in device_json1:
+                    if device1['available'] == True:
+                        counter_avail1 += 1
+                        if counter_avail1 == int(num_sw):
+                            onos1_dev = True
+                            main.log.info("All devices have been "+
+                                    "discovered on ONOS1")
+                    else:
+                        counter_avail1 = 0
+                for device2 in device_json2:
+                    if device2['available'] == True:
+                        counter_avail2 += 1
+                        if counter_avail2 == int(num_sw):
+                            onos2_dev = True
+                            main.log.info("All devices have been "+
+                                    "discovered on ONOS2")
+                    else:
+                        counter_avail2 = 0
+                for device3 in device_json3:
+                    if device3['available'] == True:
+                        counter_avail3 += 1
+                        if counter_avail3 == int(num_sw):
+                            onos3_dev = True
+                            main.log.info("All devices have been "+
+                                    "discovered on ONOS3")
+                    else:
+                        counter_avail3 = 0
+
+                if onos1_dev and onos2_dev and onos3_dev:
+                    main.log.info("All devices have been discovered "+
+                            "on all ONOS instances")
+                    json_str_topology_metrics_1 =\
+                        main.ONOS1cli.topology_events_metrics()
+                    json_str_topology_metrics_2 =\
+                        main.ONOS2cli.topology_events_metrics()
+                    json_str_topology_metrics_3 =\
+                        main.ONOS3cli.topology_events_metrics()
+                   
+                    #Exit while loop if all devices discovered
+                    break 
+                
+                counter_loop += 1
+                #Give some time in between CLI calls
+                #(will not affect measurement)
+                time.sleep(3)
+
+            main.ONOS1.tshark_stop()
+            
+            os.system("scp "+ONOS_user+"@"+ONOS1_ip+":"+
+                    tshark_ofp_output+" /tmp/") 
+            os.system("scp "+ONOS_user+"@"+ONOS1_ip+":"+
+                    tshark_tcp_output+" /tmp/")
+
+            #TODO: Automate OFP output analysis
+            #Debug mode - print out packets captured at runtime     
+            if debug_mode == 'on': 
+                ofp_file = open(tshark_ofp_output, 'r')
+                main.log.info("Tshark OFP Vendor output: ")
+                for line in ofp_file:
+                    tshark_ofp_result_list.append(line)
+                    main.log.info(line)
+                ofp_file.close()
+
+                tcp_file = open(tshark_tcp_output, 'r')
+                main.log.info("Tshark TCP 74 output: ")
+                for line in tcp_file:
+                    tshark_tcp_result_list.append(line)
+                    main.log.info(line)
+                tcp_file.close()
+
+            json_obj_1 = json.loads(json_str_topology_metrics_1)
+            json_obj_2 = json.loads(json_str_topology_metrics_2)
+            json_obj_3 = json.loads(json_str_topology_metrics_3)
+
+            graph_timestamp_1 = \
+                    json_obj_1[graphTimestamp]['value']
+            graph_timestamp_2 = \
+                    json_obj_2[graphTimestamp]['value']
+            graph_timestamp_3 = \
+                    json_obj_3[graphTimestamp]['value']
+
+            graph_lat_1 = int(graph_timestamp_1) - int(t0_system)
+            graph_lat_2 = int(graph_timestamp_2) - int(t0_system)
+            graph_lat_3 = int(graph_timestamp_3) - int(t0_system)
+
+            avg_graph_lat = \
+                    (int(graph_lat_1) +\
+                     int(graph_lat_2) +\
+                     int(graph_lat_3)) / 3
+    
+            if avg_graph_lat > sw_disc_threshold_min \
+                    and avg_graph_lat < sw_disc_threshold_max:
+                sw_discovery_lat_list.append(
+                        avg_graph_lat)
+            else:
+                main.log.info("100 Switch discovery latency "+
+                        "exceeded the threshold.")
+            
+            #END ITERATION FOR LOOP
+
+        sw_lat_min = min(sw_discovery_lat_list)
+        sw_lat_max = max(sw_discovery_lat_list)
+        sw_lat_avg = sum(sw_discovery_lat_list) /\
+                     len(sw_discovery_lat_list)
+
+        main.log.report("100 Switch discovery lat "+\
+                "Min: "+str(sw_lat_min)+" ms"+\
+                "Max: "+str(sw_lat_max)+" ms"+\
+                "Avg: "+str(sw_lat_avg)+" ms")
+
+    def CASE6(self, main):
+        '''
+        Increase number of nodes and initiate CLI
+        '''
+        import time
+        
+        ONOS1_ip = main.params['CTRL']['ip1']
+        ONOS2_ip = main.params['CTRL']['ip2']
+        ONOS3_ip = main.params['CTRL']['ip3']
+        ONOS4_ip = main.params['CTRL']['ip4']
+        ONOS5_ip = main.params['CTRL']['ip5']
+        ONOS6_ip = main.params['CTRL']['ip6']
+        ONOS7_ip = main.params['CTRL']['ip7']
+
+        cell_name = main.params['ENV']['cellName']
+    
+        global cluster_count
+        
+        #Cluster size increased everytime the case is defined
+        cluster_count += 2 
+
+        main.log.report("Increasing cluster size to "+
+                str(cluster_count))
+
+        install_result = main.FALSE
+        if cluster_count == 5:
+            main.log.info("Installing nodes 4 and 5")
+            node4_result = \
+                main.ONOSbench.onos_install(node=ONOS4_ip)
+            node5_result = \
+                main.ONOSbench.onos_install(node=ONOS5_ip)
+            install_result = node4_result and node5_result
+
+            time.sleep(5)
+
+            main.ONOS4cli.start_onos_cli(ONOS4_ip)
+            main.ONOS5cli.start_onos_cli(ONOS5_ip)
+
+        elif cluster_count == 7:
+            main.log.info("Installing nodes 4 and 5")
+            node6_result = \
+                main.ONOSbench.onos_install(node=ONOS6_ip)
+            node7_result = \
+                main.ONOSbench.onos_install(node=ONOS7_ip)
+            install_result = node6_result and node7_result
+
+            time.sleep(5)
+
+            main.ONOS6cli.start_onos_cli(ONOS6_ip)
+            main.ONOS7cli.start_onos_cli(ONOS7_ip)
+
+
+
+
diff --git a/TestON/tests/TopoPerfNext/TopoPerfNext.params b/TestON/tests/TopoPerfNext/TopoPerfNext.params
index 851522c..45de48d 100644
--- a/TestON/tests/TopoPerfNext/TopoPerfNext.params
+++ b/TestON/tests/TopoPerfNext/TopoPerfNext.params
@@ -1,5 +1,5 @@
 <PARAMS>
-    <testcases>1,2,3</testcases>
+    <testcases>1,2,3,6,2,3,6,2,3,6,2,3</testcases>
 
     <ENV>
         <cellName>topo_perf_test</cellName>
@@ -19,6 +19,11 @@
         <port2>6633</port2>
         <ip3>10.128.174.3</ip3>
         <port3>6633</port3>
+        <ip4>10.128.174.4</ip4>
+        
+        <ip5>10.128.174.5</ip5>
+        <ip6>10.128.174.6</ip6>
+        <ip7>10.128.174.7</ip7>
     </CTRL>
 
     <MN>
@@ -37,16 +42,17 @@
         #pcap file located at /tmp/'capture_name'
         <debugMode>off</debugMode>
         <onosLogFile>/opt/onos/log/karaf*</onosLogFile>
+        <mci>off</mci>
 
-        <topo_config_file>
+        <topoConfigFile>
         single_topo_event_accumulator.cfg
-        </topo_config_file>
-        <topo_config_name>
+        </topoConfigFile>
+        <topoConfigName>
         org.onlab.onos.net.topology.impl.DefaultTopologyProvider.cfg
-        </topo_config_name>
+        </topoConfigName>
 
         #Number of times to iterate each case
-        <numIter>20</numIter>
+        <numIter>5</numIter>
         <numSwitch>2</numSwitch>
         #Number of iterations to ignore initially
         <iterIgnore>2</iterIgnore>
diff --git a/TestON/tests/TopoPerfNext/TopoPerfNext.py b/TestON/tests/TopoPerfNext/TopoPerfNext.py
index 87d7378..12e53e5 100644
--- a/TestON/tests/TopoPerfNext/TopoPerfNext.py
+++ b/TestON/tests/TopoPerfNext/TopoPerfNext.py
@@ -25,106 +25,117 @@
         """
         import time
 
-        cell_name = main.params[ 'ENV' ][ 'cellName' ]
+        # Global cluster count for scale-out purposes
+        global clusterCount
+        # Set initial cluster count
+        clusterCount = 1
+        ##
 
-        git_pull = main.params[ 'GIT' ][ 'autoPull' ]
-        checkout_branch = main.params[ 'GIT' ][ 'checkout' ]
+        cellName = main.params[ 'ENV' ][ 'cellName' ]
 
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
+        gitPull = main.params[ 'GIT' ][ 'autoPull' ]
+        checkoutBranch = main.params[ 'GIT' ][ 'checkout' ]
 
-        #### Hardcoded ONOS nodes particular to my env ####
-        ONOS4_ip = "10.128.174.4"
-        ONOS5_ip = "10.128.174.5"
-        ONOS6_ip = "10.128.174.6"
-        ONOS7_ip = "10.128.174.7"
-        #### ####
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS4Ip = main.params[ 'CTRL' ][ 'ip4' ] 
+        ONOS5Ip = main.params[ 'CTRL' ][ 'ip5' ]
+        ONOS6Ip = main.params[ 'CTRL' ][ 'ip6' ]
+        ONOS7Ip = main.params[ 'CTRL' ][ 'ip7' ] 
 
-        MN1_ip = main.params[ 'MN' ][ 'ip1' ]
-        BENCH_ip = main.params[ 'BENCH' ][ 'ip' ]
+        MN1Ip = main.params[ 'MN' ][ 'ip1' ]
+        BENCHIp = main.params[ 'BENCH' ][ 'ip' ]
 
-        topo_cfg_file = main.params[ 'TEST' ][ 'topo_config_file' ]
-        topo_cfg_name = main.params[ 'TEST' ][ 'topo_config_name' ]
+        topoCfgFile = main.params[ 'TEST' ][ 'topoConfigFile' ]
+        topoCfgName = main.params[ 'TEST' ][ 'topoConfigName' ]
 
+        mvnCleanInstall = main.params[ 'TEST' ][ 'mci' ]
+        
         main.case( "Setting up test environment" )
         main.log.info( "Copying topology event accumulator config" +
                        " to ONOS /package/etc" )
         main.ONOSbench.handle.sendline( "cp ~/" +
-                                        topo_cfg_file +
+                                        topoCfgFile +
                                         " ~/ONOS/tools/package/etc/" +
-                                        topo_cfg_name )
+                                        topoCfgName )
         main.ONOSbench.handle.expect( "\$" )
 
         main.log.report( "Setting up test environment" )
 
         main.step( "Cleaning previously installed ONOS if any" )
-        main.ONOSbench.onos_uninstall( node_ip=ONOS4_ip )
-        main.ONOSbench.onos_uninstall( node_ip=ONOS5_ip )
-        main.ONOSbench.onos_uninstall( node_ip=ONOS6_ip )
-        main.ONOSbench.onos_uninstall( node_ip=ONOS7_ip )
+        main.ONOSbench.onosUninstall( nodeIp=ONOS2Ip )
+        main.ONOSbench.onosUninstall( nodeIp=ONOS3Ip )
+        main.ONOSbench.onosUninstall( nodeIp=ONOS4Ip )
+        main.ONOSbench.onosUninstall( nodeIp=ONOS5Ip )
+        main.ONOSbench.onosUninstall( nodeIp=ONOS6Ip )
+        #main.ONOSbench.onosUninstall( nodeIp=ONOS7Ip )
 
         main.step( "Creating cell file" )
-        cell_file_result = main.ONOSbench.create_cell_file(
-            BENCH_ip, cell_name, MN1_ip, "onos-core,onos-app-metrics",
-            ONOS1_ip, ONOS2_ip, ONOS3_ip )
+        cellFileResult = main.ONOSbench.createCellFile(
+            BENCHIp, cellName, MN1Ip,
+            "onos-core,onos-app-metrics,onos-app-gui",
+            ONOS1Ip )
 
         main.step( "Applying cell file to environment" )
-        cell_apply_result = main.ONOSbench.set_cell( cell_name )
-        verify_cell_result = main.ONOSbench.verify_cell()
+        cellApplyResult = main.ONOSbench.setCell( cellName )
+        verifyCellResult = main.ONOSbench.verifyCell()
 
         # NOTE: This step may be removed after proper
         #      copy cat log functionality
         main.step( "Removing raft/copy-cat logs from ONOS nodes" )
-        main.ONOSbench.onos_remove_raft_logs()
+        main.ONOSbench.onosRemoveRaftLogs()
         time.sleep( 30 )
 
-        main.step( "Git checkout and pull " + checkout_branch )
-        if git_pull == 'on':
-            checkout_result = \
-                main.ONOSbench.git_checkout( checkout_branch )
-            pull_result = main.ONOSbench.git_pull()
+        main.step( "Git checkout and pull " + checkoutBranch )
+        if gitPull == 'on':
+            # checkoutResult = \
+                    #        main.ONOSbench.gitCheckout( checkoutBranch )
+            checkoutResult = main.TRUE
+            pullResult = main.ONOSbench.gitPull()
         else:
-            checkout_result = main.TRUE
-            pull_result = main.TRUE
+            checkoutResult = main.TRUE
+            pullResult = main.TRUE
             main.log.info( "Skipped git checkout and pull" )
 
-        # TODO: Uncomment when wiki posting works
-        #main.log.report( "Commit information - " )
-        # main.ONOSbench.get_version( report=True )
+        main.log.report( "Commit information - " )
+        main.ONOSbench.getVersion( report=True )
 
         main.step( "Using mvn clean & install" )
-        #mvn_result = main.ONOSbench.clean_install()
-        mvn_result = main.TRUE
+        if mvnCleanInstall == 'on':
+            mvnResult = main.ONOSbench.cleanInstall()
+        elif mvnCleanInstall == 'off':
+            main.log.info("mci turned off by settings")
+            mvnResult = main.TRUE
 
         main.step( "Set cell for ONOS cli env" )
-        main.ONOS1cli.set_cell( cell_name )
-        main.ONOS2cli.set_cell( cell_name )
-        main.ONOS3cli.set_cell( cell_name )
+        main.ONOS1cli.setCell( cellName )
+        # main.ONOS2cli.setCell( cellName )
+        # main.ONOS3cli.setCell( cellName )
 
         main.step( "Creating ONOS package" )
-        package_result = main.ONOSbench.onos_package()
+        packageResult = main.ONOSbench.onosPackage()
 
         main.step( "Installing ONOS package" )
-        install1_result = main.ONOSbench.onos_install( node=ONOS1_ip )
-        install2_result = main.ONOSbench.onos_install( node=ONOS2_ip )
-        install3_result = main.ONOSbench.onos_install( node=ONOS3_ip )
+        install1Result = main.ONOSbench.onosInstall( node=ONOS1Ip )
+        #install2Result = main.ONOSbench.onosInstall( node=ONOS2Ip )
+        #install3Result = main.ONOSbench.onosInstall( node=ONOS3Ip )
 
         time.sleep( 10 )
 
         main.step( "Start onos cli" )
-        cli1 = main.ONOS1cli.start_onos_cli( ONOS1_ip )
-        cli2 = main.ONOS2cli.start_onos_cli( ONOS2_ip )
-        cli3 = main.ONOS3cli.start_onos_cli( ONOS3_ip )
+        cli1 = main.ONOS1cli.startOnosCli( ONOS1Ip )
+        #cli2 = main.ONOS2cli.startOnosCli( ONOS2Ip )
+        #cli3 = main.ONOS3cli.startOnosCli( ONOS3Ip )
 
         utilities.assert_equals( expect=main.TRUE,
-                                 actual=cell_file_result and cell_apply_result and
-                                 verify_cell_result and checkout_result and
-                                 pull_result and mvn_result and
-                                 install1_result and install2_result and
-                                 install3_result,
-                                 onpass="Test Environment setup successful",
-                                 onfail="Failed to setup test environment" )
+                                actual=cellFileResult and cellApplyResult and
+                                verifyCellResult and checkoutResult and
+                                pullResult and mvnResult and
+                                install1Result,  # and install2Result and
+                                # install3Result,
+                                onpass="Test Environment setup successful",
+                                onfail="Failed to setup test environment" )
 
     def CASE2( self, main ):
         """
@@ -149,83 +160,86 @@
         import requests
         import os
         import numpy
+        global clusterCount
 
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
-        ONOS_user = main.params[ 'CTRL' ][ 'user' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS4Ip = main.params[ 'CTRL' ][ 'ip4' ]
+        ONOS5Ip = main.params[ 'CTRL' ][ 'ip5' ]
+        ONOS6Ip = main.params[ 'CTRL' ][ 'ip6' ]
+        ONOS7Ip = main.params[ 'CTRL' ][ 'ip7' ]
 
-        default_sw_port = main.params[ 'CTRL' ][ 'port1' ]
+        ONOSUser = main.params[ 'CTRL' ][ 'user' ]
+
+        defaultSwPort = main.params[ 'CTRL' ][ 'port1' ]
 
         # Number of iterations of case
-        num_iter = main.params[ 'TEST' ][ 'numIter' ]
+        numIter = main.params[ 'TEST' ][ 'numIter' ]
         # Number of first 'x' iterations to ignore:
-        iter_ignore = int( main.params[ 'TEST' ][ 'iterIgnore' ] )
+        iterIgnore = int( main.params[ 'TEST' ][ 'iterIgnore' ] )
 
         # Timestamp 'keys' for json metrics output.
         # These are subject to change, hence moved into params
         deviceTimestamp = main.params[ 'JSON' ][ 'deviceTimestamp' ]
         graphTimestamp = main.params[ 'JSON' ][ 'graphTimestamp' ]
 
-        debug_mode = main.params[ 'TEST' ][ 'debugMode' ]
-        onos_log = main.params[ 'TEST' ][ 'onosLogFile' ]
+        debugMode = main.params[ 'TEST' ][ 'debugMode' ]
+        onosLog = main.params[ 'TEST' ][ 'onosLogFile' ]
 
         # Threshold for the test
-        threshold_str = main.params[ 'TEST' ][ 'singleSwThreshold' ]
-        threshold_obj = threshold_str.split( "," )
-        threshold_min = int( threshold_obj[ 0 ] )
-        threshold_max = int( threshold_obj[ 1 ] )
+        thresholdStr = main.params[ 'TEST' ][ 'singleSwThreshold' ]
+        thresholdObj = thresholdStr.split( "," )
+        thresholdMin = int( thresholdObj[ 0 ] )
+        thresholdMax = int( thresholdObj[ 1 ] )
 
         # List of switch add latency collected from
         # all iterations
-        latency_end_to_end_list = []
-        latency_ofp_to_graph_list = []
-        latency_ofp_to_device_list = []
-        latency_t0_to_device_list = []
-        latency_tcp_to_ofp_list = []
+        latencyEndToEndList = []
+        latencyOfpToGraphList = []
+        latencyOfpToDeviceList = []
+        latencyT0ToDeviceList = []
+        latencyTcpToOfpList = []
 
         # Directory/file to store tshark results
-        tshark_of_output = "/tmp/tshark_of_topo.txt"
-        tshark_tcp_output = "/tmp/tshark_tcp_topo.txt"
+        tsharkOfOutput = "/tmp/tshark_of_topo.txt"
+        tsharkTcpOutput = "/tmp/tshark_tcp_topo.txt"
 
         # String to grep in tshark output
-        tshark_tcp_string = "TCP 74 " + default_sw_port
-        tshark_of_string = "OFP 86 Vendor"
+        tsharkTcpString = "TCP 74 " + defaultSwPort
+        tsharkOfString = "OFP 86 Vendor"
 
         # Initialize assertion to TRUE
         assertion = main.TRUE
 
-        local_time = time.strftime( '%x %X' )
-        local_time = local_time.replace( "/", "" )
-        local_time = local_time.replace( " ", "_" )
-        local_time = local_time.replace( ":", "" )
-        if debug_mode == 'on':
-            main.ONOS1.tshark_pcap( "eth0",
-                                    "/tmp/single_sw_lat_pcap_" + local_time )
+        localTime = time.strftime( '%x %X' )
+        localTime = localTime.replace( "/", "" )
+        localTime = localTime.replace( " ", "_" )
+        localTime = localTime.replace( ":", "" )
+        if debugMode == 'on':
+            main.ONOS1.tsharkPcap( "eth0",
+                                   "/tmp/single_sw_lat_pcap_" + localTime )
 
-            main.log.info( "TEST" )
+            main.log.info( "Debug mode is on" )
 
         main.log.report( "Latency of adding one switch to controller" )
-        main.log.report(
-            "First " +
-            str( iter_ignore ) +
-            " iterations ignored" +
-            " for jvm warmup time" )
-        main.log.report( "Total iterations of test: " + str( num_iter ) )
+        main.log.report( "First " + str( iterIgnore ) + " iterations ignored" +
+                         " for jvm warmup time" )
+        main.log.report( "Total iterations of test: " + str( numIter ) )
 
-        for i in range( 0, int( num_iter ) ):
+        for i in range( 0, int( numIter ) ):
             main.log.info( "Starting tshark capture" )
 
-            #* TCP [ ACK, SYN ] is used as t0_a, the
+            #* TCP [ ACK, SYN ] is used as t0A, the
             #  very first "exchange" between ONOS and
             #  the switch for end-to-end measurement
-            #* OFP [ Stats Reply ] is used for t0_b
+            #* OFP [ Stats Reply ] is used for t0B
             #  the very last OFP message between ONOS
             #  and the switch for ONOS measurement
-            main.ONOS1.tshark_grep( tshark_tcp_string,
-                                    tshark_tcp_output )
-            main.ONOS1.tshark_grep( tshark_of_string,
-                                    tshark_of_output )
+            main.ONOS1.tsharkGrep( tsharkTcpString,
+                                   tsharkTcpOutput )
+            main.ONOS1.tsharkGrep( tsharkOfString,
+                                   tsharkOfOutput )
 
             # Wait and ensure tshark is started and
             # capturing
@@ -233,17 +247,17 @@
 
             main.log.info( "Assigning s1 to controller" )
 
-            main.Mininet1.assign_sw_controller(
+            main.Mininet1.assignSwController(
                 sw="1",
-                ip1=ONOS1_ip,
-                port1=default_sw_port )
+                ip1=ONOS1Ip,
+                port1=defaultSwPort )
 
             # Wait and ensure switch is assigned
             # before stopping tshark
             time.sleep( 30 )
 
             main.log.info( "Stopping all Tshark processes" )
-            main.ONOS1.stop_tshark()
+            main.ONOS1.stopTshark()
 
             # tshark output is saved in ONOS. Use subprocess
             # to copy over files to TestON for parsing
@@ -251,137 +265,251 @@
 
             # TCP CAPTURE ****
             # Copy the tshark output from ONOS machine to
-            # TestON machine in tshark_tcp_output directory>file
-            os.system( "scp " + ONOS_user + "@" + ONOS1_ip + ":" +
-                       tshark_tcp_output + " /tmp/" )
-            tcp_file = open( tshark_tcp_output, 'r' )
-            temp_text = tcp_file.readline()
-            temp_text = temp_text.split( " " )
+            # TestON machine in tsharkTcpOutput directory>file
+            os.system( "scp " + ONOSUser + "@" + ONOS1Ip + ":" +
+                       tsharkTcpOutput + " /tmp/" )
+            tcpFile = open( tsharkTcpOutput, 'r' )
+            tempText = tcpFile.readline()
+            tempText = tempText.split( " " )
 
             main.log.info( "Object read in from TCP capture: " +
-                           str( temp_text ) )
-            if len( temp_text ) > 1:
-                t0_tcp = float( temp_text[ 1 ] ) * 1000.0
+                           str( tempText ) )
+            if len( tempText ) > 1:
+                t0Tcp = float( tempText[ 1 ] ) * 1000.0
             else:
                 main.log.error( "Tshark output file for TCP" +
                                 " returned unexpected results" )
-                t0_tcp = 0
+                t0Tcp = 0
                 assertion = main.FALSE
 
-            tcp_file.close()
+            tcpFile.close()
             #****************
 
             # OF CAPTURE ****
-            os.system( "scp " + ONOS_user + "@" + ONOS1_ip + ":" +
-                       tshark_of_output + " /tmp/" )
-            of_file = open( tshark_of_output, 'r' )
+            os.system( "scp " + ONOSUser + "@" + ONOS1Ip + ":" +
+                       tsharkOfOutput + " /tmp/" )
+            ofFile = open( tsharkOfOutput, 'r' )
 
-            line_ofp = ""
+            lineOfp = ""
             # Read until last line of file
             while True:
-                temp_text = of_file.readline()
-                if temp_text != '':
-                    line_ofp = temp_text
+                tempText = ofFile.readline()
+                if tempText != '':
+                    lineOfp = tempText
                 else:
                     break
-            obj = line_ofp.split( " " )
+            obj = lineOfp.split( " " )
 
             main.log.info( "Object read in from OFP capture: " +
-                           str( line_ofp ) )
+                           str( lineOfp ) )
 
-            if len( line_ofp ) > 1:
-                t0_ofp = float( obj[ 1 ] ) * 1000.0
+            if len( lineOfp ) > 1:
+                t0Ofp = float( obj[ 1 ] ) * 1000.0
             else:
                 main.log.error( "Tshark output file for OFP" +
                                 " returned unexpected results" )
-                t0_ofp = 0
+                t0Ofp = 0
                 assertion = main.FALSE
 
-            of_file.close()
+            ofFile.close()
             #****************
 
-            json_str_1 = main.ONOS1cli.topology_events_metrics()
-            json_str_2 = main.ONOS2cli.topology_events_metrics()
-            json_str_3 = main.ONOS3cli.topology_events_metrics()
+            jsonStr1 = main.ONOS1cli.topologyEventsMetrics()
+            # Initialize scale-out variables
+            jsonStr2 = ""
+            jsonStr3 = ""
+            jsonStr4 = ""
+            jsonStr5 = ""
+            jsonStr6 = ""
+            jsonStr7 = ""
 
-            json_obj_1 = json.loads( json_str_1 )
-            json_obj_2 = json.loads( json_str_2 )
-            json_obj_3 = json.loads( json_str_3 )
+            jsonObj1 = json.loads( jsonStr1 )
+            # Initialize scale-out variables
+            jsonObj2 = ""
+            jsonObj3 = ""
+            jsonObj4 = ""
+            jsonObj5 = ""
+            jsonObj6 = ""
+            jsonObj7 = ""
 
             # Obtain graph timestamp. This timestsamp captures
             # the epoch time at which the topology graph was updated.
-            graph_timestamp_1 = \
-                json_obj_1[ graphTimestamp ][ 'value' ]
-            graph_timestamp_2 = \
-                json_obj_2[ graphTimestamp ][ 'value' ]
-            graph_timestamp_3 = \
-                json_obj_3[ graphTimestamp ][ 'value' ]
-
+            graphTimestamp1 = \
+                jsonObj1[ graphTimestamp ][ 'value' ]
             # Obtain device timestamp. This timestamp captures
             # the epoch time at which the device event happened
-            device_timestamp_1 = \
-                json_obj_1[ deviceTimestamp ][ 'value' ]
-            device_timestamp_2 = \
-                json_obj_2[ deviceTimestamp ][ 'value' ]
-            device_timestamp_3 = \
-                json_obj_3[ deviceTimestamp ][ 'value' ]
+            deviceTimestamp1 = \
+                jsonObj1[ deviceTimestamp ][ 'value' ]
 
             # t0 to device processing latency
-            delta_device_1 = int( device_timestamp_1 ) - int( t0_tcp )
-            delta_device_2 = int( device_timestamp_2 ) - int( t0_tcp )
-            delta_device_3 = int( device_timestamp_3 ) - int( t0_tcp )
+            deltaDevice1 = int( deviceTimestamp1 ) - int( t0Tcp )
+
+            # t0 to graph processing latency ( end-to-end )
+            deltaGraph1 = int( graphTimestamp1 ) - int( t0Tcp )
+
+            # ofp to graph processing latency ( ONOS processing )
+            deltaOfpGraph1 = int( graphTimestamp1 ) - int( t0Ofp )
+
+            # ofp to device processing latency ( ONOS processing )
+            deltaOfpDevice1 = float( deviceTimestamp1 ) - float( t0Ofp )
+
+            # TODO: Create even cluster number events
+
+            # Include scale-out measurements when applicable
+            if clusterCount >= 3:
+                jsonStr2 = main.ONOS2cli.topologyEventsMetrics()
+                jsonStr3 = main.ONOS3cli.topologyEventsMetrics()
+                jsonObj2 = json.loads( jsonStr2 )
+                jsonObj3 = json.loads( jsonStr3 )
+                graphTimestamp2 = \
+                    jsonObj2[ graphTimestamp ][ 'value' ]
+                graphTimestamp3 = \
+                    jsonObj3[ graphTimestamp ][ 'value' ]
+                deviceTimestamp2 = \
+                    jsonObj2[ deviceTimestamp ][ 'value' ]
+                deviceTimestamp3 = \
+                    jsonObj3[ deviceTimestamp ][ 'value' ]
+                deltaDevice2 = int( deviceTimestamp2 ) - int( t0Tcp )
+                deltaDevice3 = int( deviceTimestamp3 ) - int( t0Tcp )
+                deltaGraph2 = int( graphTimestamp2 ) - int( t0Tcp )
+                deltaGraph3 = int( graphTimestamp3 ) - int( t0Tcp )
+                deltaOfpGraph2 = int( graphTimestamp2 ) - int( t0Ofp )
+                deltaOfpGraph3 = int( graphTimestamp3 ) - int( t0Ofp )
+                deltaOfpDevice2 = float( deviceTimestamp2 ) -\
+                    float( t0Ofp )
+                deltaOfpDevice3 = float( deviceTimestamp3 ) -\
+                    float( t0Ofp )
+            else:
+                deltaDevice2 = 0
+                deltaDevice3 = 0
+                deltaGraph2 = 0
+                deltaGraph3 = 0
+                deltaOfpGraph2 = 0
+                deltaOfpGraph3 = 0
+                deltaOfpDevice2 = 0
+                deltaOfpDevice3 = 0
+
+            if clusterCount >= 5:
+                jsonStr4 = main.ONOS4cli.topologyEventsMetrics()
+                jsonStr5 = main.ONOS5cli.topologyEventsMetrics()
+                jsonObj4 = json.loads( jsonStr4 )
+                jsonObj5 = json.loads( jsonStr5 )
+                graphTimestamp4 = \
+                    jsonObj4[ graphTimestamp ][ 'value' ]
+                graphTimestamp5 = \
+                    jsonObj5[ graphTimestamp ][ 'value' ]
+                deviceTimestamp4 = \
+                    jsonObj4[ deviceTimestamp ][ 'value' ]
+                deviceTimestamp5 = \
+                    jsonObj5[ deviceTimestamp ][ 'value' ]
+                deltaDevice4 = int( deviceTimestamp4 ) - int( t0Tcp )
+                deltaDevice5 = int( deviceTimestamp5 ) - int( t0Tcp )
+                deltaGraph4 = int( graphTimestamp4 ) - int( t0Tcp )
+                deltaGraph5 = int( graphTimestamp5 ) - int( t0Tcp )
+                deltaOfpGraph4 = int( graphTimestamp4 ) - int( t0Ofp )
+                deltaOfpGraph5 = int( graphTimestamp5 ) - int( t0Ofp )
+                deltaOfpDevice4 = float( deviceTimestamp4 ) -\
+                    float( t0Ofp )
+                deltaOfpDevice5 = float( deviceTimestamp5 ) -\
+                    float( t0Ofp )
+            else:
+                deltaDevice4 = 0
+                deltaDevice5 = 0
+                deltaGraph4 = 0
+                deltaGraph5 = 0
+                deltaOfpGraph4 = 0
+                deltaOfpGraph5 = 0
+                deltaOfpDevice4 = 0
+                deltaOfpDevice5 = 0
+
+            if clusterCount >= 7:
+                jsonStr6 = main.ONOS6cli.topologyEventsMetrics()
+                jsonStr7 = main.ONOS7cli.topologyEventsMetrics()
+                jsonObj6 = json.loads( jsonStr6 )
+                jsonObj7 = json.loads( jsonStr7 )
+                graphTimestamp6 = \
+                    jsonObj6[ graphTimestamp ][ 'value' ]
+                graphTimestamp7 = \
+                    jsonObj7[ graphTimestamp ][ 'value' ]
+                deviceTimestamp6 = \
+                    jsonObj6[ deviceTimestamp ][ 'value' ]
+                deviceTimestamp7 = \
+                    jsonObj7[ deviceTimestamp ][ 'value' ]
+                deltaDevice6 = int( deviceTimestamp6 ) - int( t0Tcp )
+                deltaDevice7 = int( deviceTimestamp7 ) - int( t0Tcp )
+                deltaGraph6 = int( graphTimestamp6 ) - int( t0Tcp )
+                deltaGraph7 = int( graphTimestamp7 ) - int( t0Tcp )
+                deltaOfpGraph6 = int( graphTimestamp6 ) - int( t0Ofp )
+                deltaOfpGraph7 = int( graphTimestamp7 ) - int( t0Ofp )
+                deltaOfpDevice6 = float( deviceTimestamp6 ) -\
+                    float( t0Ofp )
+                deltaOfpDevice7 = float( deviceTimestamp7 ) -\
+                    float( t0Ofp )
+            else:
+                deltaDevice6 = 0
+                deltaDevice7 = 0
+                deltaGraph6 = 0
+                deltaGraph7 = 0
+                deltaOfpGraph6 = 0
+                deltaOfpGraph7 = 0
+                deltaOfpDevice6 = 0
+                deltaOfpDevice7 = 0
 
             # Get average of delta from all instances
-            avg_delta_device = \
-                ( int( delta_device_1 ) +
-                  int( delta_device_2 ) +
-                  int( delta_device_3 ) ) / 3
+            avgDeltaDevice = \
+                ( int( deltaDevice1 ) +
+                  int( deltaDevice2 ) +
+                  int( deltaDevice3 ) +
+                  int( deltaDevice4 ) +
+                  int( deltaDevice5 ) +
+                  int( deltaDevice6 ) +
+                  int( deltaDevice7 ) ) / clusterCount
 
             # Ensure avg delta meets the threshold before appending
-            if avg_delta_device > 0.0 and avg_delta_device < 10000\
-                    and int( i ) > iter_ignore:
-                latency_t0_to_device_list.append( avg_delta_device )
+            if avgDeltaDevice > 0.0 and avgDeltaDevice < 10000\
+                    and int( i ) > iterIgnore:
+                latencyT0ToDeviceList.append( avgDeltaDevice )
             else:
                 main.log.info(
                     "Results for t0-to-device ignored" +
                     "due to excess in threshold / warmup iteration." )
 
-            # t0 to graph processing latency ( end-to-end )
-            delta_graph_1 = int( graph_timestamp_1 ) - int( t0_tcp )
-            delta_graph_2 = int( graph_timestamp_2 ) - int( t0_tcp )
-            delta_graph_3 = int( graph_timestamp_3 ) - int( t0_tcp )
-
             # Get average of delta from all instances
-            avg_delta_graph = \
-                ( int( delta_graph_1 ) +
-                  int( delta_graph_2 ) +
-                  int( delta_graph_3 ) ) / 3
+            # TODO: use max delta graph
+            #maxDeltaGraph = max( three )
+            avgDeltaGraph = \
+                ( int( deltaGraph1 ) +
+                  int( deltaGraph2 ) +
+                  int( deltaGraph3 ) +
+                  int( deltaGraph4 ) +
+                  int( deltaGraph5 ) +
+                  int( deltaGraph6 ) +
+                  int( deltaGraph7 ) ) / clusterCount
 
             # Ensure avg delta meets the threshold before appending
-            if avg_delta_graph > 0.0 and avg_delta_graph < 10000\
-                    and int( i ) > iter_ignore:
-                latency_end_to_end_list.append( avg_delta_graph )
+            if avgDeltaGraph > 0.0 and avgDeltaGraph < 10000\
+                    and int( i ) > iterIgnore:
+                latencyEndToEndList.append( avgDeltaGraph )
             else:
                 main.log.info( "Results for end-to-end ignored" +
                                "due to excess in threshold" )
 
-            # ofp to graph processing latency ( ONOS processing )
-            delta_ofp_graph_1 = int( graph_timestamp_1 ) - int( t0_ofp )
-            delta_ofp_graph_2 = int( graph_timestamp_2 ) - int( t0_ofp )
-            delta_ofp_graph_3 = int( graph_timestamp_3 ) - int( t0_ofp )
+            avgDeltaOfpGraph = \
+                ( int( deltaOfpGraph1 ) +
+                  int( deltaOfpGraph2 ) +
+                  int( deltaOfpGraph3 ) +
+                  int( deltaOfpGraph4 ) +
+                  int( deltaOfpGraph5 ) +
+                  int( deltaOfpGraph6 ) +
+                  int( deltaOfpGraph7 ) ) / clusterCount
 
-            avg_delta_ofp_graph = \
-                ( int( delta_ofp_graph_1 ) +
-                  int( delta_ofp_graph_2 ) +
-                  int( delta_ofp_graph_3 ) ) / 3
-
-            if avg_delta_ofp_graph > threshold_min \
-                    and avg_delta_ofp_graph < threshold_max\
-                    and int( i ) > iter_ignore:
-                latency_ofp_to_graph_list.append( avg_delta_ofp_graph )
-            elif avg_delta_ofp_graph > ( -10 ) and \
-                    avg_delta_ofp_graph < 0.0 and\
-                    int( i ) > iter_ignore:
+            if avgDeltaOfpGraph > thresholdMin \
+                    and avgDeltaOfpGraph < thresholdMax\
+                    and int( i ) > iterIgnore:
+                latencyOfpToGraphList.append( avgDeltaOfpGraph )
+            elif avgDeltaOfpGraph > ( -10 ) and \
+                    avgDeltaOfpGraph < 0.0 and\
+                    int( i ) > iterIgnore:
                 main.log.info( "Sub-millisecond result likely; " +
                                "negative result was rounded to 0" )
                 # NOTE: Current metrics framework does not
@@ -389,30 +517,29 @@
                 # if the result is negative, we can reasonably
                 # conclude sub-millisecond results and just
                 # append the best rounded effort - 0 ms.
-                latency_ofp_to_graph_list.append( 0 )
+                latencyOfpToGraphList.append( 0 )
             else:
                 main.log.info( "Results for ofp-to-graph " +
                                "ignored due to excess in threshold" )
 
-            # ofp to device processing latency ( ONOS processing )
-            delta_ofp_device_1 = float( device_timestamp_1 ) - float( t0_ofp )
-            delta_ofp_device_2 = float( device_timestamp_2 ) - float( t0_ofp )
-            delta_ofp_device_3 = float( device_timestamp_3 ) - float( t0_ofp )
-
-            avg_delta_ofp_device = \
-                ( float( delta_ofp_device_1 ) +
-                  float( delta_ofp_device_2 ) +
-                  float( delta_ofp_device_3 ) ) / 3
+            avgDeltaOfpDevice = \
+                ( float( deltaOfpDevice1 ) +
+                  float( deltaOfpDevice2 ) +
+                  float( deltaOfpDevice3 ) +
+                  float( deltaOfpDevice4 ) +
+                  float( deltaOfpDevice5 ) +
+                  float( deltaOfpDevice6 ) +
+                  float( deltaOfpDevice7 ) ) / clusterCount
 
             # NOTE: ofp - delta measurements are occasionally negative
             #      due to system time misalignment.
-            latency_ofp_to_device_list.append( avg_delta_ofp_device )
+            latencyOfpToDeviceList.append( avgDeltaOfpDevice )
 
-            delta_ofp_tcp = int( t0_ofp ) - int( t0_tcp )
-            if delta_ofp_tcp > threshold_min \
-                    and delta_ofp_tcp < threshold_max and\
-                    int( i ) > iter_ignore:
-                latency_tcp_to_ofp_list.append( delta_ofp_tcp )
+            deltaOfpTcp = int( t0Ofp ) - int( t0Tcp )
+            if deltaOfpTcp > thresholdMin \
+                    and deltaOfpTcp < thresholdMax and\
+                    int( i ) > iterIgnore:
+                latencyTcpToOfpList.append( deltaOfpTcp )
             else:
                 main.log.info( "Results fo tcp-to-ofp " +
                                "ignored due to excess in threshold" )
@@ -421,37 +548,19 @@
             # Fetch logs upon threshold excess
 
             main.log.info( "ONOS1 delta end-to-end: " +
-                           str( delta_graph_1 ) + " ms" )
-            main.log.info( "ONOS2 delta end-to-end: " +
-                           str( delta_graph_2 ) + " ms" )
-            main.log.info( "ONOS3 delta end-to-end: " +
-                           str( delta_graph_3 ) + " ms" )
+                           str( deltaGraph1 ) + " ms" )
 
             main.log.info( "ONOS1 delta OFP - graph: " +
-                           str( delta_ofp_graph_1 ) + " ms" )
-            main.log.info( "ONOS2 delta OFP - graph: " +
-                           str( delta_ofp_graph_2 ) + " ms" )
-            main.log.info( "ONOS3 delta OFP - graph: " +
-                           str( delta_ofp_graph_3 ) + " ms" )
+                           str( deltaOfpGraph1 ) + " ms" )
 
             main.log.info( "ONOS1 delta device - t0: " +
-                           str( delta_device_1 ) + " ms" )
-            main.log.info( "ONOS2 delta device - t0: " +
-                           str( delta_device_2 ) + " ms" )
-            main.log.info( "ONOS3 delta device - t0: " +
-                           str( delta_device_3 ) + " ms" )
+                           str( deltaDevice1 ) + " ms" )
 
             main.log.info( "TCP to OFP delta: " +
-                           str( delta_ofp_tcp ) + " ms" )
-            # main.log.info( "ONOS1 delta OFP - device: "+
-            #        str( delta_ofp_device_1 ) + " ms" )
-            # main.log.info( "ONOS2 delta OFP - device: "+
-            #        str( delta_ofp_device_2 ) + " ms" )
-            # main.log.info( "ONOS3 delta OFP - device: "+
-            #        str( delta_ofp_device_3 ) + " ms" )
+                           str( deltaOfpTcp ) + " ms" )
 
             main.step( "Remove switch from controller" )
-            main.Mininet1.delete_sw_controller( "s1" )
+            main.Mininet1.deleteSwController( "s1" )
 
             time.sleep( 5 )
 
@@ -459,117 +568,104 @@
 
         # If there is at least 1 element in each list,
         # pass the test case
-        if len( latency_end_to_end_list ) > 0 and\
-           len( latency_ofp_to_graph_list ) > 0 and\
-           len( latency_ofp_to_device_list ) > 0 and\
-           len( latency_t0_to_device_list ) > 0 and\
-           len( latency_tcp_to_ofp_list ) > 0:
+        if len( latencyEndToEndList ) > 0 and\
+           len( latencyOfpToGraphList ) > 0 and\
+           len( latencyOfpToDeviceList ) > 0 and\
+           len( latencyT0ToDeviceList ) > 0 and\
+           len( latencyTcpToOfpList ) > 0:
             assertion = main.TRUE
-        elif len( latency_end_to_end_list ) == 0:
+        elif len( latencyEndToEndList ) == 0:
             # The appending of 0 here is to prevent
             # the min,max,sum functions from failing
             # below
-            latency_end_to_end_list.append( 0 )
+            latencyEndToEndList.append( 0 )
             assertion = main.FALSE
-        elif len( latency_ofp_to_graph_list ) == 0:
-            latency_ofp_to_graph_list.append( 0 )
+        elif len( latencyOfpToGraphList ) == 0:
+            latencyOfpToGraphList.append( 0 )
             assertion = main.FALSE
-        elif len( latency_ofp_to_device_list ) == 0:
-            latency_ofp_to_device_list.append( 0 )
+        elif len( latencyOfpToDeviceList ) == 0:
+            latencyOfpToDeviceList.append( 0 )
             assertion = main.FALSE
-        elif len( latency_t0_to_device_list ) == 0:
-            latency_t0_to_device_list.append( 0 )
+        elif len( latencyT0ToDeviceList ) == 0:
+            latencyT0ToDeviceList.append( 0 )
             assertion = main.FALSE
-        elif len( latency_tcp_to_ofp_list ) == 0:
-            latency_tcp_to_ofp_list.append( 0 )
+        elif len( latencyTcpToOfpList ) == 0:
+            latencyTcpToOfpList.append( 0 )
             assertion = main.FALSE
 
         # Calculate min, max, avg of latency lists
-        latency_end_to_end_max = \
-            int( max( latency_end_to_end_list ) )
-        latency_end_to_end_min = \
-            int( min( latency_end_to_end_list ) )
-        latency_end_to_end_avg = \
-            ( int( sum( latency_end_to_end_list ) ) /
-              len( latency_end_to_end_list ) )
-        latency_end_to_end_std_dev = \
-            str( round( numpy.std( latency_end_to_end_list ), 1 ) )
+        latencyEndToEndMax = \
+            int( max( latencyEndToEndList ) )
+        latencyEndToEndMin = \
+            int( min( latencyEndToEndList ) )
+        latencyEndToEndAvg = \
+            ( int( sum( latencyEndToEndList ) ) /
+              len( latencyEndToEndList ) )
+        latencyEndToEndStdDev = \
+            str( round( numpy.std( latencyEndToEndList ), 1 ) )
 
-        latency_ofp_to_graph_max = \
-            int( max( latency_ofp_to_graph_list ) )
-        latency_ofp_to_graph_min = \
-            int( min( latency_ofp_to_graph_list ) )
-        latency_ofp_to_graph_avg = \
-            ( int( sum( latency_ofp_to_graph_list ) ) /
-              len( latency_ofp_to_graph_list ) )
-        latency_ofp_to_graph_std_dev = \
-            str( round( numpy.std( latency_ofp_to_graph_list ), 1 ) )
+        latencyOfpToGraphMax = \
+            int( max( latencyOfpToGraphList ) )
+        latencyOfpToGraphMin = \
+            int( min( latencyOfpToGraphList ) )
+        latencyOfpToGraphAvg = \
+            ( int( sum( latencyOfpToGraphList ) ) /
+              len( latencyOfpToGraphList ) )
+        latencyOfpToGraphStdDev = \
+            str( round( numpy.std( latencyOfpToGraphList ), 1 ) )
 
-        latency_ofp_to_device_max = \
-            int( max( latency_ofp_to_device_list ) )
-        latency_ofp_to_device_min = \
-            int( min( latency_ofp_to_device_list ) )
-        latency_ofp_to_device_avg = \
-            ( int( sum( latency_ofp_to_device_list ) ) /
-              len( latency_ofp_to_device_list ) )
-        latency_ofp_to_device_std_dev = \
-            str( round( numpy.std( latency_ofp_to_device_list ), 1 ) )
+        latencyOfpToDeviceMax = \
+            int( max( latencyOfpToDeviceList ) )
+        latencyOfpToDeviceMin = \
+            int( min( latencyOfpToDeviceList ) )
+        latencyOfpToDeviceAvg = \
+            ( int( sum( latencyOfpToDeviceList ) ) /
+              len( latencyOfpToDeviceList ) )
+        latencyOfpToDeviceStdDev = \
+            str( round( numpy.std( latencyOfpToDeviceList ), 1 ) )
 
-        latency_t0_to_device_max = \
-            int( max( latency_t0_to_device_list ) )
-        latency_t0_to_device_min = \
-            int( min( latency_t0_to_device_list ) )
-        latency_t0_to_device_avg = \
-            ( int( sum( latency_t0_to_device_list ) ) /
-              len( latency_t0_to_device_list ) )
-        latency_ofp_to_device_std_dev = \
-            str( round( numpy.std( latency_t0_to_device_list ), 1 ) )
+        latencyT0ToDeviceMax = \
+            int( max( latencyT0ToDeviceList ) )
+        latencyT0ToDeviceMin = \
+            int( min( latencyT0ToDeviceList ) )
+        latencyT0ToDeviceAvg = \
+            ( int( sum( latencyT0ToDeviceList ) ) /
+              len( latencyT0ToDeviceList ) )
+        latencyOfpToDeviceStdDev = \
+            str( round( numpy.std( latencyT0ToDeviceList ), 1 ) )
 
-        latency_tcp_to_ofp_max = \
-            int( max( latency_tcp_to_ofp_list ) )
-        latency_tcp_to_ofp_min = \
-            int( min( latency_tcp_to_ofp_list ) )
-        latency_tcp_to_ofp_avg = \
-            ( int( sum( latency_tcp_to_ofp_list ) ) /
-              len( latency_tcp_to_ofp_list ) )
-        latency_tcp_to_ofp_std_dev = \
-            str( round( numpy.std( latency_tcp_to_ofp_list ), 1 ) )
+        latencyTcpToOfpMax = \
+            int( max( latencyTcpToOfpList ) )
+        latencyTcpToOfpMin = \
+            int( min( latencyTcpToOfpList ) )
+        latencyTcpToOfpAvg = \
+            ( int( sum( latencyTcpToOfpList ) ) /
+              len( latencyTcpToOfpList ) )
+        latencyTcpToOfpStdDev = \
+            str( round( numpy.std( latencyTcpToOfpList ), 1 ) )
 
-        main.log.report(
-            "Switch add - End-to-end latency: " +
-            "Avg: " +
-            str( latency_end_to_end_avg ) +
-            " ms " +
-            "Std Deviation: " +
-            latency_end_to_end_std_dev +
-            " ms" )
+        main.log.report( "Cluster size: " + str( clusterCount ) +
+                         " node(s)" )
+        main.log.report( "Switch add - End-to-end latency: " +
+                         "Avg: " + str( latencyEndToEndAvg ) + " ms " +
+                         "Std Deviation: " + latencyEndToEndStdDev + " ms" )
         main.log.report(
             "Switch add - OFP-to-Graph latency: " +
             "Note: results are not accurate to sub-millisecond. " +
             "Any sub-millisecond results are rounded to 0 ms. " )
-        main.log.report(
-            "Avg: " +
-            str( latency_ofp_to_graph_avg ) +
-            " ms " +
-            "Std Deviation: " +
-            latency_ofp_to_graph_std_dev +
-            " ms" )
-        main.log.report(
-            "Switch add - TCP-to-OFP latency: " +
-            "Avg: " +
-            str( latency_tcp_to_ofp_avg ) +
-            " ms " +
-            "Std Deviation: " +
-            latency_tcp_to_ofp_std_dev +
-            " ms" )
+        main.log.report( "Avg: " + str( latencyOfpToGraphAvg ) + " ms " +
+                         "Std Deviation: " + latencyOfpToGraphStdDev + " ms" )
+        main.log.report( "Switch add - TCP-to-OFP latency: " +
+                         "Avg: " + str( latencyTcpToOfpAvg ) + " ms " +
+                         "Std Deviation: " + latencyTcpToOfpStdDev + " ms" )
 
-        if debug_mode == 'on':
-            main.ONOS1.cp_logs_to_dir( "/opt/onos/log/karaf.log",
-                                       "/tmp/", copy_file_name="sw_lat_karaf" )
+        if debugMode == 'on':
+            main.ONOS1.cpLogsToDir( "/opt/onos/log/karaf.log",
+                                      "/tmp/", copyFileName="sw_lat_karaf" )
 
         utilities.assert_equals( expect=main.TRUE, actual=assertion,
-                                 onpass="Switch latency test successful",
-                                 onfail="Switch latency test failed" )
+                                onpass="Switch latency test successful",
+                                onfail="Switch latency test failed" )
 
     def CASE3( self, main ):
         """
@@ -586,383 +682,504 @@
         import requests
         import json
         import numpy
+        global clusterCount
 
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
-        ONOS_user = main.params[ 'CTRL' ][ 'user' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOSUser = main.params[ 'CTRL' ][ 'user' ]
 
-        default_sw_port = main.params[ 'CTRL' ][ 'port1' ]
+        defaultSwPort = main.params[ 'CTRL' ][ 'port1' ]
 
         assertion = main.TRUE
         # Number of iterations of case
-        num_iter = main.params[ 'TEST' ][ 'numIter' ]
+        numIter = main.params[ 'TEST' ][ 'numIter' ]
 
         # Timestamp 'keys' for json metrics output.
         # These are subject to change, hence moved into params
         deviceTimestamp = main.params[ 'JSON' ][ 'deviceTimestamp' ]
         graphTimestamp = main.params[ 'JSON' ][ 'graphTimestamp' ]
 
-        debug_mode = main.params[ 'TEST' ][ 'debugMode' ]
+        debugMode = main.params[ 'TEST' ][ 'debugMode' ]
 
-        local_time = time.strftime( '%x %X' )
-        local_time = local_time.replace( "/", "" )
-        local_time = local_time.replace( " ", "_" )
-        local_time = local_time.replace( ":", "" )
-        if debug_mode == 'on':
-            main.ONOS1.tshark_pcap( "eth0",
-                                    "/tmp/port_lat_pcap_" + local_time )
+        localTime = time.strftime( '%x %X' )
+        localTime = localTime.replace( "/", "" )
+        localTime = localTime.replace( " ", "_" )
+        localTime = localTime.replace( ":", "" )
+        if debugMode == 'on':
+            main.ONOS1.tsharkPcap( "eth0",
+                                   "/tmp/port_lat_pcap_" + localTime )
 
         # Threshold for this test case
-        up_threshold_str = main.params[ 'TEST' ][ 'portUpThreshold' ]
-        down_threshold_str = main.params[ 'TEST' ][ 'portDownThreshold' ]
+        upThresholdStr = main.params[ 'TEST' ][ 'portUpThreshold' ]
+        downThresholdStr = main.params[ 'TEST' ][ 'portDownThreshold' ]
 
-        up_threshold_obj = up_threshold_str.split( "," )
-        down_threshold_obj = down_threshold_str.split( "," )
+        upThresholdObj = upThresholdStr.split( "," )
+        downThresholdObj = downThresholdStr.split( "," )
 
-        up_threshold_min = int( up_threshold_obj[ 0 ] )
-        up_threshold_max = int( up_threshold_obj[ 1 ] )
+        upThresholdMin = int( upThresholdObj[ 0 ] )
+        upThresholdMax = int( upThresholdObj[ 1 ] )
 
-        down_threshold_min = int( down_threshold_obj[ 0 ] )
-        down_threshold_max = int( down_threshold_obj[ 1 ] )
+        downThresholdMin = int( downThresholdObj[ 0 ] )
+        downThresholdMax = int( downThresholdObj[ 1 ] )
 
         # NOTE: Some hardcoded variables you may need to configure
         #      besides the params
 
-        tshark_port_status = "OFP 130 Port Status"
+        tsharkPortStatus = "OFP 130 Port Status"
 
-        tshark_port_up = "/tmp/tshark_port_up.txt"
-        tshark_port_down = "/tmp/tshark_port_down.txt"
-        interface_config = "s1-eth1"
+        tsharkPortUp = "/tmp/tshark_port_up.txt"
+        tsharkPortDown = "/tmp/tshark_port_down.txt"
+        interfaceConfig = "s1-eth1"
 
         main.log.report( "Port enable / disable latency" )
         main.log.report( "Simulated by ifconfig up / down" )
-        main.log.report( "Total iterations of test: " + str( num_iter ) )
+        main.log.report( "Total iterations of test: " + str( numIter ) )
 
         main.step( "Assign switches s1 and s2 to controller 1" )
-        main.Mininet1.assign_sw_controller( sw="1", ip1=ONOS1_ip,
-                                            port1=default_sw_port )
-        main.Mininet1.assign_sw_controller( sw="2", ip1=ONOS1_ip,
-                                            port1=default_sw_port )
+        main.Mininet1.assignSwController( sw="1", ip1=ONOS1Ip,
+                                           port1=defaultSwPort )
+        main.Mininet1.assignSwController( sw="2", ip1=ONOS1Ip,
+                                           port1=defaultSwPort )
 
         # Give enough time for metrics to propagate the
         # assign controller event. Otherwise, these events may
         # carry over to our measurements
         time.sleep( 15 )
 
-        port_up_device_to_ofp_list = []
-        port_up_graph_to_ofp_list = []
-        port_down_device_to_ofp_list = []
-        port_down_graph_to_ofp_list = []
+        portUpDeviceToOfpList = []
+        portUpGraphToOfpList = []
+        portDownDeviceToOfpList = []
+        portDownGraphToOfpList = []
 
-        for i in range( 0, int( num_iter ) ):
+        for i in range( 0, int( numIter ) ):
             main.step( "Starting wireshark capture for port status down" )
-            main.ONOS1.tshark_grep( tshark_port_status,
-                                    tshark_port_down )
+            main.ONOS1.tsharkGrep( tsharkPortStatus,
+                                   tsharkPortDown )
 
             time.sleep( 5 )
 
             # Disable interface that is connected to switch 2
-            main.step( "Disable port: " + interface_config )
+            main.step( "Disable port: " + interfaceConfig )
             main.Mininet1.handle.sendline( "sh ifconfig " +
-                                           interface_config + " down" )
+                                           interfaceConfig + " down" )
             main.Mininet1.handle.expect( "mininet>" )
 
             time.sleep( 3 )
-            main.ONOS1.tshark_stop()
-
-            main.step( "Obtain t1 by metrics call" )
-            json_str_up_1 = main.ONOS1cli.topology_events_metrics()
-            json_str_up_2 = main.ONOS2cli.topology_events_metrics()
-            json_str_up_3 = main.ONOS3cli.topology_events_metrics()
-
-            json_obj_1 = json.loads( json_str_up_1 )
-            json_obj_2 = json.loads( json_str_up_2 )
-            json_obj_3 = json.loads( json_str_up_3 )
+            main.ONOS1.tsharkStop()
 
             # Copy tshark output file from ONOS to TestON instance
             #/tmp directory
-            os.system( "scp " + ONOS_user + "@" + ONOS1_ip + ":" +
-                       tshark_port_down + " /tmp/" )
+            os.system( "scp " + ONOSUser + "@" + ONOS1Ip + ":" +
+                       tsharkPortDown + " /tmp/" )
 
-            f_port_down = open( tshark_port_down, 'r' )
+            fPortDown = open( tsharkPortDown, 'r' )
             # Get first line of port down event from tshark
-            f_line = f_port_down.readline()
-            obj_down = f_line.split( " " )
-            if len( f_line ) > 0:
-                timestamp_begin_pt_down = int( float( obj_down[ 1 ] ) * 1000 )
+            fLine = fPortDown.readline()
+            objDown = fLine.split( " " )
+            if len( fLine ) > 0:
+                # NOTE: objDown[ 1 ] is a very unreliable
+                #      way to determine the timestamp. If
+                #      results seem way off, check the object
+                #      itself by printing it out
+                timestampBeginPtDown = int( float( objDown[ 1 ] ) * 1000 )
+                # For some reason, wireshark decides to record the
+                # timestamp at the 3rd object position instead of
+                # 2nd at unpredictable times. This statement is
+                # used to capture that odd behavior and use the
+                # correct epoch time
+                if timestampBeginPtDown < 1400000000000:
+                    timestampBeginPtDown = \
+                        int( float( objDown[ 2 ] ) * 1000 )
+
                 main.log.info( "Port down begin timestamp: " +
-                               str( timestamp_begin_pt_down ) )
+                               str( timestampBeginPtDown ) )
             else:
                 main.log.info( "Tshark output file returned unexpected" +
-                               " results: " + str( obj_down ) )
-                timestamp_begin_pt_down = 0
+                               " results: " + str( objDown ) )
+                timestampBeginPtDown = 0
+            fPortDown.close()
 
-            f_port_down.close()
+            main.step( "Obtain t1 by metrics call" )
+            jsonStrUp1 = main.ONOS1cli.topologyEventsMetrics()
+            jsonObj1 = json.loads( jsonStrUp1 )
+            # Obtain graph timestamp. This timestsamp captures
+            # the epoch time at which the topology graph was updated.
+            graphTimestamp1 = \
+                jsonObj1[ graphTimestamp ][ 'value' ]
+            # Obtain device timestamp. This timestamp captures
+            # the epoch time at which the device event happened
+            deviceTimestamp1 = \
+                jsonObj1[ deviceTimestamp ][ 'value' ]
+            # Get delta between graph event and OFP
+            ptDownGraphToOfp1 = int( graphTimestamp1 ) -\
+                int( timestampBeginPtDown )
+            # Get delta between device event and OFP
+            ptDownDeviceToOfp1 = int( deviceTimestamp1 ) -\
+                int( timestampBeginPtDown )
 
-            main.log.info( "TEST tshark obj: " + str( obj_down ) )
+            if clusterCount >= 3:
+                jsonStrUp2 = main.ONOS2cli.topologyEventsMetrics()
+                jsonStrUp3 = main.ONOS3cli.topologyEventsMetrics()
+                jsonObj2 = json.loads( jsonStrUp2 )
+                jsonObj3 = json.loads( jsonStrUp3 )
+                graphTimestamp2 = \
+                    jsonObj2[ graphTimestamp ][ 'value' ]
+                graphTimestamp3 = \
+                    jsonObj3[ graphTimestamp ][ 'value' ]
+                deviceTimestamp2 = \
+                    jsonObj2[ deviceTimestamp ][ 'value' ]
+                deviceTimestamp3 = \
+                    jsonObj3[ deviceTimestamp ][ 'value' ]
+                ptDownGraphToOfp2 = int( graphTimestamp2 ) -\
+                    int( timestampBeginPtDown )
+                ptDownGraphToOfp3 = int( graphTimestamp3 ) -\
+                    int( timestampBeginPtDown )
+                ptDownDeviceToOfp2 = int( deviceTimestamp2 ) -\
+                    int( timestampBeginPtDown )
+                ptDownDeviceToOfp3 = int( deviceTimestamp3 ) -\
+                    int( timestampBeginPtDown )
+            else:
+                ptDownGraphToOfp2 = 0
+                ptDownGraphToOfp3 = 0
+                ptDownDeviceToOfp2 = 0
+                ptDownDeviceToOfp3 = 0
+
+            if clusterCount >= 5:
+                jsonStrUp4 = main.ONOS4cli.topologyEventsMetrics()
+                jsonStrUp5 = main.ONOS5cli.topologyEventsMetrics()
+                jsonObj4 = json.loads( jsonStrUp4 )
+                jsonObj5 = json.loads( jsonStrUp5 )
+                graphTimestamp4 = \
+                    jsonObj4[ graphTimestamp ][ 'value' ]
+                graphTimestamp5 = \
+                    jsonObj5[ graphTimestamp ][ 'value' ]
+                deviceTimestamp4 = \
+                    jsonObj4[ deviceTimestamp ][ 'value' ]
+                deviceTimestamp5 = \
+                    jsonObj5[ deviceTimestamp ][ 'value' ]
+                ptDownGraphToOfp4 = int( graphTimestamp4 ) -\
+                    int( timestampBeginPtDown )
+                ptDownGraphToOfp5 = int( graphTimestamp5 ) -\
+                    int( timestampBeginPtDown )
+                ptDownDeviceToOfp4 = int( deviceTimestamp4 ) -\
+                    int( timestampBeginPtDown )
+                ptDownDeviceToOfp5 = int( deviceTimestamp5 ) -\
+                    int( timestampBeginPtDown )
+            else:
+                ptDownGraphToOfp4 = 0
+                ptDownGraphToOfp5 = 0
+                ptDownDeviceToOfp4 = 0
+                ptDownDeviceToOfp5 = 0
+
+            if clusterCount >= 7:
+                jsonStrUp6 = main.ONOS6cli.topologyEventsMetrics()
+                jsonStrUp7 = main.ONOS7cli.topologyEventsMetrics()
+                jsonObj6 = json.loads( jsonStrUp6 )
+                jsonObj7 = json.loads( jsonStrUp7 )
+                graphTimestamp6 = \
+                    jsonObj6[ graphTimestamp ][ 'value' ]
+                graphTimestamp7 = \
+                    jsonObj7[ graphTimestamp ][ 'value' ]
+                deviceTimestamp6 = \
+                    jsonObj6[ deviceTimestamp ][ 'value' ]
+                deviceTimestamp7 = \
+                    jsonObj7[ deviceTimestamp ][ 'value' ]
+                ptDownGraphToOfp6 = int( graphTimestamp6 ) -\
+                    int( timestampBeginPtDown )
+                ptDownGraphToOfp7 = int( graphTimestamp7 ) -\
+                    int( timestampBeginPtDown )
+                ptDownDeviceToOfp6 = int( deviceTimestamp6 ) -\
+                    int( timestampBeginPtDown )
+                ptDownDeviceToOfp7 = int( deviceTimestamp7 ) -\
+                    int( timestampBeginPtDown )
+            else:
+                ptDownGraphToOfp6 = 0
+                ptDownGraphToOfp7 = 0
+                ptDownDeviceToOfp6 = 0
+                ptDownDeviceToOfp7 = 0
 
             time.sleep( 3 )
 
-            # Obtain graph timestamp. This timestsamp captures
-            # the epoch time at which the topology graph was updated.
-            graph_timestamp_1 = \
-                json_obj_1[ graphTimestamp ][ 'value' ]
-            graph_timestamp_2 = \
-                json_obj_2[ graphTimestamp ][ 'value' ]
-            graph_timestamp_3 = \
-                json_obj_3[ graphTimestamp ][ 'value' ]
-
-            main.log.info( "TEST graph timestamp ONOS1: " +
-                           str( graph_timestamp_1 ) )
-
-            # Obtain device timestamp. This timestamp captures
-            # the epoch time at which the device event happened
-            device_timestamp_1 = \
-                json_obj_1[ deviceTimestamp ][ 'value' ]
-            device_timestamp_2 = \
-                json_obj_2[ deviceTimestamp ][ 'value' ]
-            device_timestamp_3 = \
-                json_obj_3[ deviceTimestamp ][ 'value' ]
-
-            # Get delta between graph event and OFP
-            pt_down_graph_to_ofp_1 = int( graph_timestamp_1 ) -\
-                int( timestamp_begin_pt_down )
-            pt_down_graph_to_ofp_2 = int( graph_timestamp_2 ) -\
-                int( timestamp_begin_pt_down )
-            pt_down_graph_to_ofp_3 = int( graph_timestamp_3 ) -\
-                int( timestamp_begin_pt_down )
-
-            # Get delta between device event and OFP
-            pt_down_device_to_ofp_1 = int( device_timestamp_1 ) -\
-                int( timestamp_begin_pt_down )
-            pt_down_device_to_ofp_2 = int( device_timestamp_2 ) -\
-                int( timestamp_begin_pt_down )
-            pt_down_device_to_ofp_3 = int( device_timestamp_3 ) -\
-                int( timestamp_begin_pt_down )
-
             # Caluclate average across clusters
-            pt_down_graph_to_ofp_avg =\
-                ( int( pt_down_graph_to_ofp_1 ) +
-                  int( pt_down_graph_to_ofp_2 ) +
-                  int( pt_down_graph_to_ofp_3 ) ) / 3
-            pt_down_device_to_ofp_avg = \
-                ( int( pt_down_device_to_ofp_1 ) +
-                  int( pt_down_device_to_ofp_2 ) +
-                  int( pt_down_device_to_ofp_3 ) ) / 3
+            ptDownGraphToOfpAvg =\
+                ( int( ptDownGraphToOfp1 ) +
+                  int( ptDownGraphToOfp2 ) +
+                  int( ptDownGraphToOfp3 ) +
+                  int( ptDownGraphToOfp4 ) +
+                  int( ptDownGraphToOfp5 ) +
+                  int( ptDownGraphToOfp6 ) +
+                  int( ptDownGraphToOfp7 ) ) / clusterCount
+            ptDownDeviceToOfpAvg = \
+                ( int( ptDownDeviceToOfp1 ) +
+                  int( ptDownDeviceToOfp2 ) +
+                  int( ptDownDeviceToOfp3 ) +
+                  int( ptDownDeviceToOfp4 ) +
+                  int( ptDownDeviceToOfp5 ) +
+                  int( ptDownDeviceToOfp6 ) +
+                  int( ptDownDeviceToOfp7 ) ) / clusterCount
 
-            if pt_down_graph_to_ofp_avg > down_threshold_min and \
-                    pt_down_graph_to_ofp_avg < down_threshold_max:
-                port_down_graph_to_ofp_list.append(
-                    pt_down_graph_to_ofp_avg )
+            if ptDownGraphToOfpAvg > downThresholdMin and \
+                    ptDownGraphToOfpAvg < downThresholdMax:
+                portDownGraphToOfpList.append(
+                    ptDownGraphToOfpAvg )
                 main.log.info( "Port down: graph to ofp avg: " +
-                               str( pt_down_graph_to_ofp_avg ) + " ms" )
+                               str( ptDownGraphToOfpAvg ) + " ms" )
             else:
                 main.log.info( "Average port down graph-to-ofp result" +
                                " exceeded the threshold: " +
-                               str( pt_down_graph_to_ofp_avg ) )
+                               str( ptDownGraphToOfpAvg ) )
 
-            if pt_down_device_to_ofp_avg > 0 and \
-                    pt_down_device_to_ofp_avg < 1000:
-                port_down_device_to_ofp_list.append(
-                    pt_down_device_to_ofp_avg )
+            if ptDownDeviceToOfpAvg > 0 and \
+                    ptDownDeviceToOfpAvg < 1000:
+                portDownDeviceToOfpList.append(
+                    ptDownDeviceToOfpAvg )
                 main.log.info( "Port down: device to ofp avg: " +
-                               str( pt_down_device_to_ofp_avg ) + " ms" )
+                               str( ptDownDeviceToOfpAvg ) + " ms" )
             else:
                 main.log.info( "Average port down device-to-ofp result" +
                                " exceeded the threshold: " +
-                               str( pt_down_device_to_ofp_avg ) )
+                               str( ptDownDeviceToOfpAvg ) )
 
             # Port up events
             main.step( "Enable port and obtain timestamp" )
             main.step( "Starting wireshark capture for port status up" )
-            main.ONOS1.tshark_grep( tshark_port_status, tshark_port_up )
+            main.ONOS1.tsharkGrep( tsharkPortStatus, tsharkPortUp )
             time.sleep( 5 )
 
             main.Mininet1.handle.sendline( "sh ifconfig " +
-                                           interface_config + " up" )
+                                           interfaceConfig + " up" )
             main.Mininet1.handle.expect( "mininet>" )
 
             # Allow time for tshark to capture event
+            time.sleep( 5 )
+            main.ONOS1.tsharkStop()
+
             time.sleep( 3 )
-            main.ONOS1.tshark_stop()
+            os.system( "scp " + ONOSUser + "@" + ONOS1Ip + ":" +
+                       tsharkPortUp + " /tmp/" )
+            fPortUp = open( tsharkPortUp, 'r' )
+            fLine = fPortUp.readline()
+            objUp = fLine.split( " " )
+            if len( fLine ) > 0:
+                timestampBeginPtUp = int( float( objUp[ 1 ] ) * 1000 )
+                if timestampBeginPtUp < 1400000000000:
+                    timestampBeginPtUp = \
+                        int( float( objUp[ 2 ] ) * 1000 )
+                main.log.info( "Port up begin timestamp: " +
+                               str( timestampBeginPtUp ) )
+            else:
+                main.log.info( "Tshark output file returned unexpected" +
+                               " results." )
+                timestampBeginPtUp = 0
+            fPortUp.close()
 
             # Obtain metrics shortly afterwards
             # This timestsamp captures
             # the epoch time at which the topology graph was updated.
             main.step( "Obtain t1 by REST call" )
-            json_str_up_1 = main.ONOS1cli.topology_events_metrics()
-            json_str_up_2 = main.ONOS2cli.topology_events_metrics()
-            json_str_up_3 = main.ONOS3cli.topology_events_metrics()
-
-            json_obj_1 = json.loads( json_str_up_1 )
-            json_obj_2 = json.loads( json_str_up_2 )
-            json_obj_3 = json.loads( json_str_up_3 )
-
-            os.system( "scp " + ONOS_user + "@" + ONOS1_ip + ":" +
-                       tshark_port_up + " /tmp/" )
-
-            f_port_up = open( tshark_port_up, 'r' )
-            f_line = f_port_up.readline()
-            obj_up = f_line.split( " " )
-            if len( f_line ) > 0:
-                timestamp_begin_pt_up = int( float( obj_up[ 1 ] ) * 1000 )
-                main.log.info( "Port up begin timestamp: " +
-                               str( timestamp_begin_pt_up ) )
-            else:
-                main.log.info( "Tshark output file returned unexpected" +
-                               " results." )
-                timestamp_begin_pt_up = 0
-
-            f_port_up.close()
-
-            graph_timestamp_1 = \
-                json_obj_1[ graphTimestamp ][ 'value' ]
-            graph_timestamp_2 = \
-                json_obj_2[ graphTimestamp ][ 'value' ]
-            graph_timestamp_3 = \
-                json_obj_3[ graphTimestamp ][ 'value' ]
-
+            jsonStrUp1 = main.ONOS1cli.topologyEventsMetrics()
+            jsonObj1 = json.loads( jsonStrUp1 )
+            graphTimestamp1 = \
+                jsonObj1[ graphTimestamp ][ 'value' ]
             # Obtain device timestamp. This timestamp captures
             # the epoch time at which the device event happened
-            device_timestamp_1 = \
-                json_obj_1[ deviceTimestamp ][ 'value' ]
-            device_timestamp_2 = \
-                json_obj_2[ deviceTimestamp ][ 'value' ]
-            device_timestamp_3 = \
-                json_obj_3[ deviceTimestamp ][ 'value' ]
-
+            deviceTimestamp1 = \
+                jsonObj1[ deviceTimestamp ][ 'value' ]
             # Get delta between graph event and OFP
-            pt_up_graph_to_ofp_1 = int( graph_timestamp_1 ) -\
-                int( timestamp_begin_pt_up )
-            pt_up_graph_to_ofp_2 = int( graph_timestamp_2 ) -\
-                int( timestamp_begin_pt_up )
-            pt_up_graph_to_ofp_3 = int( graph_timestamp_3 ) -\
-                int( timestamp_begin_pt_up )
-
+            ptUpGraphToOfp1 = int( graphTimestamp1 ) -\
+                int( timestampBeginPtUp )
             # Get delta between device event and OFP
-            pt_up_device_to_ofp_1 = int( device_timestamp_1 ) -\
-                int( timestamp_begin_pt_up )
-            pt_up_device_to_ofp_2 = int( device_timestamp_2 ) -\
-                int( timestamp_begin_pt_up )
-            pt_up_device_to_ofp_3 = int( device_timestamp_3 ) -\
-                int( timestamp_begin_pt_up )
+            ptUpDeviceToOfp1 = int( deviceTimestamp1 ) -\
+                int( timestampBeginPtUp )
 
-            main.log.info( "ONOS1 delta G2O: " + str( pt_up_graph_to_ofp_1 ) )
-            main.log.info( "ONOS2 delta G2O: " + str( pt_up_graph_to_ofp_2 ) )
-            main.log.info( "ONOS3 delta G2O: " + str( pt_up_graph_to_ofp_3 ) )
+            if clusterCount >= 3:
+                jsonStrUp2 = main.ONOS2cli.topologyEventsMetrics()
+                jsonStrUp3 = main.ONOS3cli.topologyEventsMetrics()
+                jsonObj2 = json.loads( jsonStrUp2 )
+                jsonObj3 = json.loads( jsonStrUp3 )
+                graphTimestamp2 = \
+                    jsonObj2[ graphTimestamp ][ 'value' ]
+                graphTimestamp3 = \
+                    jsonObj3[ graphTimestamp ][ 'value' ]
+                deviceTimestamp2 = \
+                    jsonObj2[ deviceTimestamp ][ 'value' ]
+                deviceTimestamp3 = \
+                    jsonObj3[ deviceTimestamp ][ 'value' ]
+                ptUpGraphToOfp2 = int( graphTimestamp2 ) -\
+                    int( timestampBeginPtUp )
+                ptUpGraphToOfp3 = int( graphTimestamp3 ) -\
+                    int( timestampBeginPtUp )
+                ptUpDeviceToOfp2 = int( deviceTimestamp2 ) -\
+                    int( timestampBeginPtUp )
+                ptUpDeviceToOfp3 = int( deviceTimestamp3 ) -\
+                    int( timestampBeginPtUp )
+            else:
+                ptUpGraphToOfp2 = 0
+                ptUpGraphToOfp3 = 0
+                ptUpDeviceToOfp2 = 0
+                ptUpDeviceToOfp3 = 0
 
-            main.log.info( "ONOS1 delta D2O: " + str( pt_up_device_to_ofp_1 ) )
-            main.log.info( "ONOS2 delta D2O: " + str( pt_up_device_to_ofp_2 ) )
-            main.log.info( "ONOS3 delta D2O: " + str( pt_up_device_to_ofp_3 ) )
+            if clusterCount >= 5:
+                jsonStrUp4 = main.ONOS4cli.topologyEventsMetrics()
+                jsonStrUp5 = main.ONOS5cli.topologyEventsMetrics()
+                jsonObj4 = json.loads( jsonStrUp4 )
+                jsonObj5 = json.loads( jsonStrUp5 )
+                graphTimestamp4 = \
+                    jsonObj4[ graphTimestamp ][ 'value' ]
+                graphTimestamp5 = \
+                    jsonObj5[ graphTimestamp ][ 'value' ]
+                deviceTimestamp4 = \
+                    jsonObj4[ deviceTimestamp ][ 'value' ]
+                deviceTimestamp5 = \
+                    jsonObj5[ deviceTimestamp ][ 'value' ]
+                ptUpGraphToOfp4 = int( graphTimestamp4 ) -\
+                    int( timestampBeginPtUp )
+                ptUpGraphToOfp5 = int( graphTimestamp5 ) -\
+                    int( timestampBeginPtUp )
+                ptUpDeviceToOfp4 = int( deviceTimestamp4 ) -\
+                    int( timestampBeginPtUp )
+                ptUpDeviceToOfp5 = int( deviceTimestamp5 ) -\
+                    int( timestampBeginPtUp )
+            else:
+                ptUpGraphToOfp4 = 0
+                ptUpGraphToOfp5 = 0
+                ptUpDeviceToOfp4 = 0
+                ptUpDeviceToOfp5 = 0
 
-            pt_up_graph_to_ofp_avg = \
-                ( int( pt_up_graph_to_ofp_1 ) +
-                  int( pt_up_graph_to_ofp_2 ) +
-                  int( pt_up_graph_to_ofp_3 ) ) / 3
+            if clusterCount >= 7:
+                jsonStrUp6 = main.ONOS6cli.topologyEventsMetrics()
+                jsonStrUp7 = main.ONOS7cli.topologyEventsMetrics()
+                jsonObj6 = json.loads( jsonStrUp6 )
+                jsonObj7 = json.loads( jsonStrUp7 )
+                graphTimestamp6 = \
+                    jsonObj6[ graphTimestamp ][ 'value' ]
+                graphTimestamp7 = \
+                    jsonObj7[ graphTimestamp ][ 'value' ]
+                deviceTimestamp6 = \
+                    jsonObj6[ deviceTimestamp ][ 'value' ]
+                deviceTimestamp7 = \
+                    jsonObj7[ deviceTimestamp ][ 'value' ]
+                ptUpGraphToOfp6 = int( graphTimestamp6 ) -\
+                    int( timestampBeginPtUp )
+                ptUpGraphToOfp7 = int( graphTimestamp7 ) -\
+                    int( timestampBeginPtUp )
+                ptUpDeviceToOfp6 = int( deviceTimestamp6 ) -\
+                    int( timestampBeginPtUp )
+                ptUpDeviceToOfp7 = int( deviceTimestamp7 ) -\
+                    int( timestampBeginPtUp )
+            else:
+                ptUpGraphToOfp6 = 0
+                ptUpGraphToOfp7 = 0
+                ptUpDeviceToOfp6 = 0
+                ptUpDeviceToOfp7 = 0
 
-            pt_up_device_to_ofp_avg = \
-                ( int( pt_up_device_to_ofp_1 ) +
-                  int( pt_up_device_to_ofp_2 ) +
-                  int( pt_up_device_to_ofp_3 ) ) / 3
+            ptUpGraphToOfpAvg = \
+                ( int( ptUpGraphToOfp1 ) +
+                  int( ptUpGraphToOfp2 ) +
+                  int( ptUpGraphToOfp3 ) +
+                  int( ptUpGraphToOfp4 ) +
+                  int( ptUpGraphToOfp5 ) +
+                  int( ptUpGraphToOfp6 ) +
+                  int( ptUpGraphToOfp7 ) ) / clusterCount
 
-            if pt_up_graph_to_ofp_avg > up_threshold_min and \
-                    pt_up_graph_to_ofp_avg < up_threshold_max:
-                port_up_graph_to_ofp_list.append(
-                    pt_up_graph_to_ofp_avg )
+            ptUpDeviceToOfpAvg = \
+                ( int( ptUpDeviceToOfp1 ) +
+                  int( ptUpDeviceToOfp2 ) +
+                  int( ptUpDeviceToOfp3 ) +
+                  int( ptUpDeviceToOfp4 ) +
+                  int( ptUpDeviceToOfp5 ) +
+                  int( ptUpDeviceToOfp6 ) +
+                  int( ptUpDeviceToOfp7 ) ) / clusterCount
+
+            if ptUpGraphToOfpAvg > upThresholdMin and \
+                    ptUpGraphToOfpAvg < upThresholdMax:
+                portUpGraphToOfpList.append(
+                    ptUpGraphToOfpAvg )
                 main.log.info( "Port down: graph to ofp avg: " +
-                               str( pt_up_graph_to_ofp_avg ) + " ms" )
+                               str( ptUpGraphToOfpAvg ) + " ms" )
             else:
                 main.log.info( "Average port up graph-to-ofp result" +
                                " exceeded the threshold: " +
-                               str( pt_up_graph_to_ofp_avg ) )
+                               str( ptUpGraphToOfpAvg ) )
 
-            if pt_up_device_to_ofp_avg > up_threshold_min and \
-                    pt_up_device_to_ofp_avg < up_threshold_max:
-                port_up_device_to_ofp_list.append(
-                    pt_up_device_to_ofp_avg )
+            if ptUpDeviceToOfpAvg > upThresholdMin and \
+                    ptUpDeviceToOfpAvg < upThresholdMax:
+                portUpDeviceToOfpList.append(
+                    ptUpDeviceToOfpAvg )
                 main.log.info( "Port up: device to ofp avg: " +
-                               str( pt_up_device_to_ofp_avg ) + " ms" )
+                               str( ptUpDeviceToOfpAvg ) + " ms" )
             else:
                 main.log.info( "Average port up device-to-ofp result" +
                                " exceeded the threshold: " +
-                               str( pt_up_device_to_ofp_avg ) )
+                               str( ptUpDeviceToOfpAvg ) )
 
             # END ITERATION FOR LOOP
 
         # Check all list for latency existence and set assertion
-        if ( port_down_graph_to_ofp_list and port_down_device_to_ofp_list
-                and port_up_graph_to_ofp_list and port_up_device_to_ofp_list ):
+        if ( portDownGraphToOfpList and portDownDeviceToOfpList
+                and portUpGraphToOfpList and portUpDeviceToOfpList ):
             assertion = main.TRUE
 
+        main.log.report( "Cluster size: " + str( clusterCount ) +
+                         " node(s)" )
         # Calculate and report latency measurements
-        port_down_graph_to_ofp_min = min( port_down_graph_to_ofp_list )
-        port_down_graph_to_ofp_max = max( port_down_graph_to_ofp_list )
-        port_down_graph_to_ofp_avg = \
-            ( sum( port_down_graph_to_ofp_list ) /
-              len( port_down_graph_to_ofp_list ) )
-        port_down_graph_to_ofp_std_dev = \
-            str( round( numpy.std( port_down_graph_to_ofp_list ), 1 ) )
+        portDownGraphToOfpMin = min( portDownGraphToOfpList )
+        portDownGraphToOfpMax = max( portDownGraphToOfpList )
+        portDownGraphToOfpAvg = \
+            ( sum( portDownGraphToOfpList ) /
+              len( portDownGraphToOfpList ) )
+        portDownGraphToOfpStdDev = \
+            str( round( numpy.std( portDownGraphToOfpList ), 1 ) )
 
-        main.log.report(
-            "Port down graph-to-ofp " +
-            "Avg: " +
-            str( port_down_graph_to_ofp_avg ) +
-            " ms " +
-            "Std Deviation: " +
-            port_down_graph_to_ofp_std_dev +
-            " ms" )
+        main.log.report( "Port down graph-to-ofp " +
+                         "Avg: " + str( portDownGraphToOfpAvg ) + " ms " +
+                         "Std Deviation: " + portDownGraphToOfpStdDev + " ms" )
 
-        port_down_device_to_ofp_min = min( port_down_device_to_ofp_list )
-        port_down_device_to_ofp_max = max( port_down_device_to_ofp_list )
-        port_down_device_to_ofp_avg = \
-            ( sum( port_down_device_to_ofp_list ) /
-              len( port_down_device_to_ofp_list ) )
-        port_down_device_to_ofp_std_dev = \
-            str( round( numpy.std( port_down_device_to_ofp_list ), 1 ) )
+        portDownDeviceToOfpMin = min( portDownDeviceToOfpList )
+        portDownDeviceToOfpMax = max( portDownDeviceToOfpList )
+        portDownDeviceToOfpAvg = \
+            ( sum( portDownDeviceToOfpList ) /
+              len( portDownDeviceToOfpList ) )
+        portDownDeviceToOfpStdDev = \
+            str( round( numpy.std( portDownDeviceToOfpList ), 1 ) )
 
         main.log.report(
             "Port down device-to-ofp " +
             "Avg: " +
-            str( port_down_device_to_ofp_avg ) +
+            str( portDownDeviceToOfpAvg ) +
             " ms " +
             "Std Deviation: " +
-            port_down_device_to_ofp_std_dev +
+            portDownDeviceToOfpStdDev +
             " ms" )
 
-        port_up_graph_to_ofp_min = min( port_up_graph_to_ofp_list )
-        port_up_graph_to_ofp_max = max( port_up_graph_to_ofp_list )
-        port_up_graph_to_ofp_avg = \
-            ( sum( port_up_graph_to_ofp_list ) /
-              len( port_up_graph_to_ofp_list ) )
-        port_up_graph_to_ofp_std_dev = \
-            str( round( numpy.std( port_up_graph_to_ofp_list ), 1 ) )
+        portUpGraphToOfpMin = min( portUpGraphToOfpList )
+        portUpGraphToOfpMax = max( portUpGraphToOfpList )
+        portUpGraphToOfpAvg = \
+            ( sum( portUpGraphToOfpList ) /
+              len( portUpGraphToOfpList ) )
+        portUpGraphToOfpStdDev = \
+            str( round( numpy.std( portUpGraphToOfpList ), 1 ) )
 
-        main.log.report(
-            "Port up graph-to-ofp " +
-            "Avg: " +
-            str( port_up_graph_to_ofp_avg ) +
-            " ms " +
-            "Std Deviation: " +
-            port_up_graph_to_ofp_std_dev +
-            " ms" )
+        main.log.report( "Port up graph-to-ofp " +
+                         "Avg: " + str( portUpGraphToOfpAvg ) + " ms " +
+                         "Std Deviation: " + portUpGraphToOfpStdDev + " ms" )
 
-        port_up_device_to_ofp_min = min( port_up_device_to_ofp_list )
-        port_up_device_to_ofp_max = max( port_up_device_to_ofp_list )
-        port_up_device_to_ofp_avg = \
-            ( sum( port_up_device_to_ofp_list ) /
-              len( port_up_device_to_ofp_list ) )
-        port_up_device_to_ofp_std_dev = \
-            str( round( numpy.std( port_up_device_to_ofp_list ), 1 ) )
+        portUpDeviceToOfpMin = min( portUpDeviceToOfpList )
+        portUpDeviceToOfpMax = max( portUpDeviceToOfpList )
+        portUpDeviceToOfpAvg = \
+            ( sum( portUpDeviceToOfpList ) /
+              len( portUpDeviceToOfpList ) )
+        portUpDeviceToOfpStdDev = \
+            str( round( numpy.std( portUpDeviceToOfpList ), 1 ) )
 
-        main.log.report(
-            "Port up device-to-ofp " +
-            "Avg: " +
-            str( port_up_device_to_ofp_avg ) +
-            " ms " +
-            "Std Deviation: " +
-            port_up_device_to_ofp_std_dev +
-            " ms" )
+        main.log.report( "Port up device-to-ofp " +
+                         "Avg: " + str( portUpDeviceToOfpAvg ) + " ms " +
+                         "Std Deviation: " + portUpDeviceToOfpStdDev + " ms" )
+
+        # Remove switches from controller for next test
+        main.Mininet1.deleteSwController( "s1" )
+        main.Mininet1.deleteSwController( "s2" )
 
         utilities.assert_equals(
             expect=main.TRUE,
@@ -986,15 +1203,15 @@
         import json
         import numpy
 
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
-        ONOS_user = main.params[ 'CTRL' ][ 'user' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOSUser = main.params[ 'CTRL' ][ 'user' ]
 
-        default_sw_port = main.params[ 'CTRL' ][ 'port1' ]
+        defaultSwPort = main.params[ 'CTRL' ][ 'port1' ]
 
         # Number of iterations of case
-        num_iter = main.params[ 'TEST' ][ 'numIter' ]
+        numIter = main.params[ 'TEST' ][ 'numIter' ]
 
         # Timestamp 'keys' for json metrics output.
         # These are subject to change, hence moved into params
@@ -1002,68 +1219,65 @@
         linkTimestamp = main.params[ 'JSON' ][ 'linkTimestamp' ]
         graphTimestamp = main.params[ 'JSON' ][ 'graphTimestamp' ]
 
-        debug_mode = main.params[ 'TEST' ][ 'debugMode' ]
+        debugMode = main.params[ 'TEST' ][ 'debugMode' ]
 
-        local_time = time.strftime( '%x %X' )
-        local_time = local_time.replace( "/", "" )
-        local_time = local_time.replace( " ", "_" )
-        local_time = local_time.replace( ":", "" )
-        if debug_mode == 'on':
-            main.ONOS1.tshark_pcap( "eth0",
-                                    "/tmp/link_lat_pcap_" + local_time )
+        localTime = time.strftime( '%x %X' )
+        localTime = localTime.replace( "/", "" )
+        localTime = localTime.replace( " ", "_" )
+        localTime = localTime.replace( ":", "" )
+        if debugMode == 'on':
+            main.ONOS1.tsharkPcap( "eth0",
+                                   "/tmp/link_lat_pcap_" + localTime )
 
         # Threshold for this test case
-        up_threshold_str = main.params[ 'TEST' ][ 'linkUpThreshold' ]
-        down_threshold_str = main.params[ 'TEST' ][ 'linkDownThreshold' ]
+        upThresholdStr = main.params[ 'TEST' ][ 'linkUpThreshold' ]
+        downThresholdStr = main.params[ 'TEST' ][ 'linkDownThreshold' ]
 
-        up_threshold_obj = up_threshold_str.split( "," )
-        down_threshold_obj = down_threshold_str.split( "," )
+        upThresholdObj = upThresholdStr.split( "," )
+        downThresholdObj = downThresholdStr.split( "," )
 
-        up_threshold_min = int( up_threshold_obj[ 0 ] )
-        up_threshold_max = int( up_threshold_obj[ 1 ] )
+        upThresholdMin = int( upThresholdObj[ 0 ] )
+        upThresholdMax = int( upThresholdObj[ 1 ] )
 
-        down_threshold_min = int( down_threshold_obj[ 0 ] )
-        down_threshold_max = int( down_threshold_obj[ 1 ] )
+        downThresholdMin = int( downThresholdObj[ 0 ] )
+        downThresholdMax = int( downThresholdObj[ 1 ] )
 
         assertion = main.TRUE
         # Link event timestamp to system time list
-        link_down_link_to_system_list = []
-        link_up_link_to_system_list = []
+        linkDownLinkToSystemList = []
+        linkUpLinkToSystemList = []
         # Graph event timestamp to system time list
-        link_down_graph_to_system_list = []
-        link_up_graph_to_system_list = []
+        linkDownGraphToSystemList = []
+        linkUpGraphToSystemList = []
 
         main.log.report( "Link up / down discovery latency between " +
                          "two switches" )
         main.log.report( "Simulated by setting loss-rate 100%" )
         main.log.report( "'tc qdisc add dev <intfs> root netem loss 100%'" )
-        main.log.report( "Total iterations of test: " + str( num_iter ) )
+        main.log.report( "Total iterations of test: " + str( numIter ) )
 
         main.step( "Assign all switches" )
-        main.Mininet1.assign_sw_controller(
-            sw="1",
-            ip1=ONOS1_ip,
-            port1=default_sw_port )
-        main.Mininet1.assign_sw_controller(
-            sw="2",
-            ip1=ONOS1_ip,
-            port1=default_sw_port )
+        main.Mininet1.assignSwController( sw="1",
+                                           ip1=ONOS1Ip, port1=defaultSwPort )
+        main.Mininet1.assignSwController( sw="2",
+                                           ip1=ONOS1Ip, port1=defaultSwPort )
 
         main.step( "Verifying switch assignment" )
-        result_s1 = main.Mininet1.get_sw_controller( sw="s1" )
-        result_s2 = main.Mininet1.get_sw_controller( sw="s2" )
+        resultS1 = main.Mininet1.getSwController( sw="s1" )
+        resultS2 = main.Mininet1.getSwController( sw="s2" )
 
         # Allow time for events to finish before taking measurements
         time.sleep( 10 )
 
-        link_down1 = False
-        link_down2 = False
-        link_down3 = False
+        linkDown1 = False
+        linkDown2 = False
+        linkDown3 = False
         # Start iteration of link event test
-        for i in range( 0, int( num_iter ) ):
+        for i in range( 0, int( numIter ) ):
             main.step( "Getting initial system time as t0" )
 
-            timestamp_link_down_t0 = time.time() * 1000
+            # System time in epoch ms
+            timestampLinkDownT0 = time.time() * 1000
             # Link down is simulated by 100% loss rate using traffic
             # control command
             main.Mininet1.handle.sendline(
@@ -1073,37 +1287,37 @@
             #      link s1 -> s2 went down ( loop timeout 30 seconds )
             #      on all 3 ONOS instances
             main.log.info( "Checking ONOS for link update" )
-            loop_count = 0
-            while( not ( link_down1 and link_down2 and link_down3 )
-                    and loop_count < 30 ):
-                json_str1 = main.ONOS1cli.links()
-                json_str2 = main.ONOS2cli.links()
-                json_str3 = main.ONOS3cli.links()
+            loopCount = 0
+            while( not ( linkDown1 and linkDown2 and linkDown3 )
+                    and loopCount < 30 ):
+                jsonStr1 = main.ONOS1cli.links()
+                jsonStr2 = main.ONOS2cli.links()
+                jsonStr3 = main.ONOS3cli.links()
 
-                if not ( json_str1 and json_str2 and json_str3 ):
+                if not ( jsonStr1 and jsonStr2 and jsonStr3 ):
                     main.log.error( "CLI command returned error " )
                     break
                 else:
-                    json_obj1 = json.loads( json_str1 )
-                    json_obj2 = json.loads( json_str2 )
-                    json_obj3 = json.loads( json_str3 )
-                for obj1 in json_obj1:
+                    jsonObj1 = json.loads( jsonStr1 )
+                    jsonObj2 = json.loads( jsonStr2 )
+                    jsonObj3 = json.loads( jsonStr3 )
+                for obj1 in jsonObj1:
                     if '01' not in obj1[ 'src' ][ 'device' ]:
-                        link_down1 = True
+                        linkDown1 = True
                         main.log.info( "Link down from " +
                                        "s1 -> s2 on ONOS1 detected" )
-                for obj2 in json_obj2:
+                for obj2 in jsonObj2:
                     if '01' not in obj2[ 'src' ][ 'device' ]:
-                        link_down2 = True
+                        linkDown2 = True
                         main.log.info( "Link down from " +
                                        "s1 -> s2 on ONOS2 detected" )
-                for obj3 in json_obj3:
+                for obj3 in jsonObj3:
                     if '01' not in obj3[ 'src' ][ 'device' ]:
-                        link_down3 = True
+                        linkDown3 = True
                         main.log.info( "Link down from " +
                                        "s1 -> s2 on ONOS3 detected" )
 
-                loop_count += 1
+                loopCount += 1
                 # If CLI doesn't like the continuous requests
                 # and exits in this loop, increase the sleep here.
                 # Consequently, while loop timeout will increase
@@ -1114,113 +1328,113 @@
             time.sleep( 10 )
             # If we exited the while loop and link down 1,2,3 are still
             # false, then ONOS has failed to discover link down event
-            if not ( link_down1 and link_down2 and link_down3 ):
+            if not ( linkDown1 and linkDown2 and linkDown3 ):
                 main.log.info( "Link down discovery failed" )
 
-                link_down_lat_graph1 = 0
-                link_down_lat_graph2 = 0
-                link_down_lat_graph3 = 0
-                link_down_lat_device1 = 0
-                link_down_lat_device2 = 0
-                link_down_lat_device3 = 0
+                linkDownLatGraph1 = 0
+                linkDownLatGraph2 = 0
+                linkDownLatGraph3 = 0
+                linkDownLatDevice1 = 0
+                linkDownLatDevice2 = 0
+                linkDownLatDevice3 = 0
 
                 assertion = main.FALSE
             else:
-                json_topo_metrics_1 =\
-                    main.ONOS1cli.topology_events_metrics()
-                json_topo_metrics_2 =\
-                    main.ONOS2cli.topology_events_metrics()
-                json_topo_metrics_3 =\
-                    main.ONOS3cli.topology_events_metrics()
-                json_topo_metrics_1 = json.loads( json_topo_metrics_1 )
-                json_topo_metrics_2 = json.loads( json_topo_metrics_2 )
-                json_topo_metrics_3 = json.loads( json_topo_metrics_3 )
+                jsonTopoMetrics1 =\
+                    main.ONOS1cli.topologyEventsMetrics()
+                jsonTopoMetrics2 =\
+                    main.ONOS2cli.topologyEventsMetrics()
+                jsonTopoMetrics3 =\
+                    main.ONOS3cli.topologyEventsMetrics()
+                jsonTopoMetrics1 = json.loads( jsonTopoMetrics1 )
+                jsonTopoMetrics2 = json.loads( jsonTopoMetrics2 )
+                jsonTopoMetrics3 = json.loads( jsonTopoMetrics3 )
 
                 main.log.info( "Obtaining graph and device timestamp" )
-                graph_timestamp_1 = \
-                    json_topo_metrics_1[ graphTimestamp ][ 'value' ]
-                graph_timestamp_2 = \
-                    json_topo_metrics_2[ graphTimestamp ][ 'value' ]
-                graph_timestamp_3 = \
-                    json_topo_metrics_3[ graphTimestamp ][ 'value' ]
+                graphTimestamp1 = \
+                    jsonTopoMetrics1[ graphTimestamp ][ 'value' ]
+                graphTimestamp2 = \
+                    jsonTopoMetrics2[ graphTimestamp ][ 'value' ]
+                graphTimestamp3 = \
+                    jsonTopoMetrics3[ graphTimestamp ][ 'value' ]
 
-                link_timestamp_1 = \
-                    json_topo_metrics_1[ linkTimestamp ][ 'value' ]
-                link_timestamp_2 = \
-                    json_topo_metrics_2[ linkTimestamp ][ 'value' ]
-                link_timestamp_3 = \
-                    json_topo_metrics_3[ linkTimestamp ][ 'value' ]
+                linkTimestamp1 = \
+                    jsonTopoMetrics1[ linkTimestamp ][ 'value' ]
+                linkTimestamp2 = \
+                    jsonTopoMetrics2[ linkTimestamp ][ 'value' ]
+                linkTimestamp3 = \
+                    jsonTopoMetrics3[ linkTimestamp ][ 'value' ]
 
-                if graph_timestamp_1 and graph_timestamp_2 and\
-                        graph_timestamp_3 and link_timestamp_1 and\
-                        link_timestamp_2 and link_timestamp_3:
-                    link_down_lat_graph1 = int( graph_timestamp_1 ) -\
-                        int( timestamp_link_down_t0 )
-                    link_down_lat_graph2 = int( graph_timestamp_2 ) -\
-                        int( timestamp_link_down_t0 )
-                    link_down_lat_graph3 = int( graph_timestamp_3 ) -\
-                        int( timestamp_link_down_t0 )
+                if graphTimestamp1 and graphTimestamp2 and\
+                        graphTimestamp3 and linkTimestamp1 and\
+                        linkTimestamp2 and linkTimestamp3:
+                    linkDownLatGraph1 = int( graphTimestamp1 ) -\
+                        int( timestampLinkDownT0 )
+                    linkDownLatGraph2 = int( graphTimestamp2 ) -\
+                        int( timestampLinkDownT0 )
+                    linkDownLatGraph3 = int( graphTimestamp3 ) -\
+                        int( timestampLinkDownT0 )
 
-                    link_down_lat_link1 = int( link_timestamp_1 ) -\
-                        int( timestamp_link_down_t0 )
-                    link_down_lat_link2 = int( link_timestamp_2 ) -\
-                        int( timestamp_link_down_t0 )
-                    link_down_lat_link3 = int( link_timestamp_3 ) -\
-                        int( timestamp_link_down_t0 )
+                    linkDownLatLink1 = int( linkTimestamp1 ) -\
+                        int( timestampLinkDownT0 )
+                    linkDownLatLink2 = int( linkTimestamp2 ) -\
+                        int( timestampLinkDownT0 )
+                    linkDownLatLink3 = int( linkTimestamp3 ) -\
+                        int( timestampLinkDownT0 )
                 else:
                     main.log.error( "There was an error calculating" +
                                     " the delta for link down event" )
-                    link_down_lat_graph1 = 0
-                    link_down_lat_graph2 = 0
-                    link_down_lat_graph3 = 0
+                    linkDownLatGraph1 = 0
+                    linkDownLatGraph2 = 0
+                    linkDownLatGraph3 = 0
 
-                    link_down_lat_device1 = 0
-                    link_down_lat_device2 = 0
-                    link_down_lat_device3 = 0
+                    linkDownLatDevice1 = 0
+                    linkDownLatDevice2 = 0
+                    linkDownLatDevice3 = 0
 
             main.log.info( "Link down latency ONOS1 iteration " +
                            str( i ) + " (end-to-end): " +
-                           str( link_down_lat_graph1 ) + " ms" )
+                           str( linkDownLatGraph1 ) + " ms" )
             main.log.info( "Link down latency ONOS2 iteration " +
                            str( i ) + " (end-to-end): " +
-                           str( link_down_lat_graph2 ) + " ms" )
+                           str( linkDownLatGraph2 ) + " ms" )
             main.log.info( "Link down latency ONOS3 iteration " +
                            str( i ) + " (end-to-end): " +
-                           str( link_down_lat_graph3 ) + " ms" )
+                           str( linkDownLatGraph3 ) + " ms" )
 
             main.log.info( "Link down latency ONOS1 iteration " +
                            str( i ) + " (link-event-to-system-timestamp): " +
-                           str( link_down_lat_link1 ) + " ms" )
+                           str( linkDownLatLink1 ) + " ms" )
             main.log.info( "Link down latency ONOS2 iteration " +
                            str( i ) + " (link-event-to-system-timestamp): " +
-                           str( link_down_lat_link2 ) + " ms" )
+                           str( linkDownLatLink2 ) + " ms" )
             main.log.info( "Link down latency ONOS3 iteration " +
                            str( i ) + " (link-event-to-system-timestamp): " +
-                           str( link_down_lat_link3 ) )
+                           str( linkDownLatLink3 ) )
 
             # Calculate avg of node calculations
-            link_down_lat_graph_avg =\
-                ( link_down_lat_graph1 +
-                  link_down_lat_graph2 +
-                  link_down_lat_graph3 ) / 3
-            link_down_lat_link_avg =\
-                ( link_down_lat_link1 +
-                  link_down_lat_link2 +
-                  link_down_lat_link3 ) / 3
+            linkDownLatGraphAvg =\
+                ( linkDownLatGraph1 +
+                  linkDownLatGraph2 +
+                  linkDownLatGraph3 ) / 3
+            linkDownLatLinkAvg =\
+                ( linkDownLatLink1 +
+                  linkDownLatLink2 +
+                  linkDownLatLink3 ) / 3
 
             # Set threshold and append latency to list
-            if link_down_lat_graph_avg > down_threshold_min and\
-               link_down_lat_graph_avg < down_threshold_max:
-                link_down_graph_to_system_list.append(
-                    link_down_lat_graph_avg )
+            if linkDownLatGraphAvg > downThresholdMin and\
+               linkDownLatGraphAvg < downThresholdMax:
+                linkDownGraphToSystemList.append(
+                    linkDownLatGraphAvg )
             else:
                 main.log.info( "Link down latency exceeded threshold" )
                 main.log.info( "Results for iteration " + str( i ) +
                                "have been omitted" )
-            if link_down_lat_link_avg > down_threshold_min and\
-               link_down_lat_link_avg < down_threshold_max:
-                link_down_link_to_system_list.append(
-                    link_down_lat_link_avg )
+            if linkDownLatLinkAvg > downThresholdMin and\
+               linkDownLatLinkAvg < downThresholdMax:
+                linkDownLinkToSystemList.append(
+                    linkDownLatLinkAvg )
             else:
                 main.log.info( "Link down latency exceeded threshold" )
                 main.log.info( "Results for iteration " + str( i ) +
@@ -1228,190 +1442,190 @@
 
             # NOTE: To remove loss rate and measure latency:
             #       'sh tc qdisc del dev s1-eth1 root'
-            timestamp_link_up_t0 = time.time() * 1000
+            timestampLinkUpT0 = time.time() * 1000
             main.Mininet1.handle.sendline( "sh tc qdisc del dev " +
                                            "s1-eth1 root" )
             main.Mininet1.handle.expect( "mininet>" )
 
             main.log.info( "Checking ONOS for link update" )
 
-            link_down1 = True
-            link_down2 = True
-            link_down3 = True
-            loop_count = 0
-            while( ( link_down1 and link_down2 and link_down3 )
-                    and loop_count < 30 ):
-                json_str1 = main.ONOS1cli.links()
-                json_str2 = main.ONOS2cli.links()
-                json_str3 = main.ONOS3cli.links()
-                if not ( json_str1 and json_str2 and json_str3 ):
+            linkDown1 = True
+            linkDown2 = True
+            linkDown3 = True
+            loopCount = 0
+            while( ( linkDown1 and linkDown2 and linkDown3 )
+                    and loopCount < 30 ):
+                jsonStr1 = main.ONOS1cli.links()
+                jsonStr2 = main.ONOS2cli.links()
+                jsonStr3 = main.ONOS3cli.links()
+                if not ( jsonStr1 and jsonStr2 and jsonStr3 ):
                     main.log.error( "CLI command returned error " )
                     break
                 else:
-                    json_obj1 = json.loads( json_str1 )
-                    json_obj2 = json.loads( json_str2 )
-                    json_obj3 = json.loads( json_str3 )
+                    jsonObj1 = json.loads( jsonStr1 )
+                    jsonObj2 = json.loads( jsonStr2 )
+                    jsonObj3 = json.loads( jsonStr3 )
 
-                for obj1 in json_obj1:
+                for obj1 in jsonObj1:
                     if '01' in obj1[ 'src' ][ 'device' ]:
-                        link_down1 = False
+                        linkDown1 = False
                         main.log.info( "Link up from " +
                                        "s1 -> s2 on ONOS1 detected" )
-                for obj2 in json_obj2:
+                for obj2 in jsonObj2:
                     if '01' in obj2[ 'src' ][ 'device' ]:
-                        link_down2 = False
+                        linkDown2 = False
                         main.log.info( "Link up from " +
                                        "s1 -> s2 on ONOS2 detected" )
-                for obj3 in json_obj3:
+                for obj3 in jsonObj3:
                     if '01' in obj3[ 'src' ][ 'device' ]:
-                        link_down3 = False
+                        linkDown3 = False
                         main.log.info( "Link up from " +
                                        "s1 -> s2 on ONOS3 detected" )
 
-                loop_count += 1
+                loopCount += 1
                 time.sleep( 1 )
 
-            if ( link_down1 and link_down2 and link_down3 ):
+            if ( linkDown1 and linkDown2 and linkDown3 ):
                 main.log.info( "Link up discovery failed" )
 
-                link_up_lat_graph1 = 0
-                link_up_lat_graph2 = 0
-                link_up_lat_graph3 = 0
-                link_up_lat_device1 = 0
-                link_up_lat_device2 = 0
-                link_up_lat_device3 = 0
+                linkUpLatGraph1 = 0
+                linkUpLatGraph2 = 0
+                linkUpLatGraph3 = 0
+                linkUpLatDevice1 = 0
+                linkUpLatDevice2 = 0
+                linkUpLatDevice3 = 0
 
                 assertion = main.FALSE
             else:
-                json_topo_metrics_1 =\
-                    main.ONOS1cli.topology_events_metrics()
-                json_topo_metrics_2 =\
-                    main.ONOS2cli.topology_events_metrics()
-                json_topo_metrics_3 =\
-                    main.ONOS3cli.topology_events_metrics()
-                json_topo_metrics_1 = json.loads( json_topo_metrics_1 )
-                json_topo_metrics_2 = json.loads( json_topo_metrics_2 )
-                json_topo_metrics_3 = json.loads( json_topo_metrics_3 )
+                jsonTopoMetrics1 =\
+                    main.ONOS1cli.topologyEventsMetrics()
+                jsonTopoMetrics2 =\
+                    main.ONOS2cli.topologyEventsMetrics()
+                jsonTopoMetrics3 =\
+                    main.ONOS3cli.topologyEventsMetrics()
+                jsonTopoMetrics1 = json.loads( jsonTopoMetrics1 )
+                jsonTopoMetrics2 = json.loads( jsonTopoMetrics2 )
+                jsonTopoMetrics3 = json.loads( jsonTopoMetrics3 )
 
                 main.log.info( "Obtaining graph and device timestamp" )
-                graph_timestamp_1 = \
-                    json_topo_metrics_1[ graphTimestamp ][ 'value' ]
-                graph_timestamp_2 = \
-                    json_topo_metrics_2[ graphTimestamp ][ 'value' ]
-                graph_timestamp_3 = \
-                    json_topo_metrics_3[ graphTimestamp ][ 'value' ]
+                graphTimestamp1 = \
+                    jsonTopoMetrics1[ graphTimestamp ][ 'value' ]
+                graphTimestamp2 = \
+                    jsonTopoMetrics2[ graphTimestamp ][ 'value' ]
+                graphTimestamp3 = \
+                    jsonTopoMetrics3[ graphTimestamp ][ 'value' ]
 
-                link_timestamp_1 = \
-                    json_topo_metrics_1[ linkTimestamp ][ 'value' ]
-                link_timestamp_2 = \
-                    json_topo_metrics_2[ linkTimestamp ][ 'value' ]
-                link_timestamp_3 = \
-                    json_topo_metrics_3[ linkTimestamp ][ 'value' ]
+                linkTimestamp1 = \
+                    jsonTopoMetrics1[ linkTimestamp ][ 'value' ]
+                linkTimestamp2 = \
+                    jsonTopoMetrics2[ linkTimestamp ][ 'value' ]
+                linkTimestamp3 = \
+                    jsonTopoMetrics3[ linkTimestamp ][ 'value' ]
 
-                if graph_timestamp_1 and graph_timestamp_2 and\
-                        graph_timestamp_3 and link_timestamp_1 and\
-                        link_timestamp_2 and link_timestamp_3:
-                    link_up_lat_graph1 = int( graph_timestamp_1 ) -\
-                        int( timestamp_link_up_t0 )
-                    link_up_lat_graph2 = int( graph_timestamp_2 ) -\
-                        int( timestamp_link_up_t0 )
-                    link_up_lat_graph3 = int( graph_timestamp_3 ) -\
-                        int( timestamp_link_up_t0 )
+                if graphTimestamp1 and graphTimestamp2 and\
+                        graphTimestamp3 and linkTimestamp1 and\
+                        linkTimestamp2 and linkTimestamp3:
+                    linkUpLatGraph1 = int( graphTimestamp1 ) -\
+                        int( timestampLinkUpT0 )
+                    linkUpLatGraph2 = int( graphTimestamp2 ) -\
+                        int( timestampLinkUpT0 )
+                    linkUpLatGraph3 = int( graphTimestamp3 ) -\
+                        int( timestampLinkUpT0 )
 
-                    link_up_lat_link1 = int( link_timestamp_1 ) -\
-                        int( timestamp_link_up_t0 )
-                    link_up_lat_link2 = int( link_timestamp_2 ) -\
-                        int( timestamp_link_up_t0 )
-                    link_up_lat_link3 = int( link_timestamp_3 ) -\
-                        int( timestamp_link_up_t0 )
+                    linkUpLatLink1 = int( linkTimestamp1 ) -\
+                        int( timestampLinkUpT0 )
+                    linkUpLatLink2 = int( linkTimestamp2 ) -\
+                        int( timestampLinkUpT0 )
+                    linkUpLatLink3 = int( linkTimestamp3 ) -\
+                        int( timestampLinkUpT0 )
                 else:
                     main.log.error( "There was an error calculating" +
                                     " the delta for link down event" )
-                    link_up_lat_graph1 = 0
-                    link_up_lat_graph2 = 0
-                    link_up_lat_graph3 = 0
+                    linkUpLatGraph1 = 0
+                    linkUpLatGraph2 = 0
+                    linkUpLatGraph3 = 0
 
-                    link_up_lat_device1 = 0
-                    link_up_lat_device2 = 0
-                    link_up_lat_device3 = 0
+                    linkUpLatDevice1 = 0
+                    linkUpLatDevice2 = 0
+                    linkUpLatDevice3 = 0
 
-            if debug_mode == 'on':
+            if debugMode == 'on':
                 main.log.info( "Link up latency ONOS1 iteration " +
                                str( i ) + " (end-to-end): " +
-                               str( link_up_lat_graph1 ) + " ms" )
+                               str( linkUpLatGraph1 ) + " ms" )
                 main.log.info( "Link up latency ONOS2 iteration " +
                                str( i ) + " (end-to-end): " +
-                               str( link_up_lat_graph2 ) + " ms" )
+                               str( linkUpLatGraph2 ) + " ms" )
                 main.log.info( "Link up latency ONOS3 iteration " +
                                str( i ) + " (end-to-end): " +
-                               str( link_up_lat_graph3 ) + " ms" )
+                               str( linkUpLatGraph3 ) + " ms" )
 
                 main.log.info(
                     "Link up latency ONOS1 iteration " +
                     str( i ) +
                     " (link-event-to-system-timestamp): " +
-                    str( link_up_lat_link1 ) +
+                    str( linkUpLatLink1 ) +
                     " ms" )
                 main.log.info(
                     "Link up latency ONOS2 iteration " +
                     str( i ) +
                     " (link-event-to-system-timestamp): " +
-                    str( link_up_lat_link2 ) +
+                    str( linkUpLatLink2 ) +
                     " ms" )
                 main.log.info(
                     "Link up latency ONOS3 iteration " +
                     str( i ) +
                     " (link-event-to-system-timestamp): " +
-                    str( link_up_lat_link3 ) )
+                    str( linkUpLatLink3 ) )
 
             # Calculate avg of node calculations
-            link_up_lat_graph_avg =\
-                ( link_up_lat_graph1 +
-                  link_up_lat_graph2 +
-                  link_up_lat_graph3 ) / 3
-            link_up_lat_link_avg =\
-                ( link_up_lat_link1 +
-                  link_up_lat_link2 +
-                  link_up_lat_link3 ) / 3
+            linkUpLatGraphAvg =\
+                ( linkUpLatGraph1 +
+                  linkUpLatGraph2 +
+                  linkUpLatGraph3 ) / 3
+            linkUpLatLinkAvg =\
+                ( linkUpLatLink1 +
+                  linkUpLatLink2 +
+                  linkUpLatLink3 ) / 3
 
             # Set threshold and append latency to list
-            if link_up_lat_graph_avg > up_threshold_min and\
-               link_up_lat_graph_avg < up_threshold_max:
-                link_up_graph_to_system_list.append(
-                    link_up_lat_graph_avg )
+            if linkUpLatGraphAvg > upThresholdMin and\
+               linkUpLatGraphAvg < upThresholdMax:
+                linkUpGraphToSystemList.append(
+                    linkUpLatGraphAvg )
             else:
                 main.log.info( "Link up latency exceeded threshold" )
                 main.log.info( "Results for iteration " + str( i ) +
                                "have been omitted" )
-            if link_up_lat_link_avg > up_threshold_min and\
-               link_up_lat_link_avg < up_threshold_max:
-                link_up_link_to_system_list.append(
-                    link_up_lat_link_avg )
+            if linkUpLatLinkAvg > upThresholdMin and\
+               linkUpLatLinkAvg < upThresholdMax:
+                linkUpLinkToSystemList.append(
+                    linkUpLatLinkAvg )
             else:
                 main.log.info( "Link up latency exceeded threshold" )
                 main.log.info( "Results for iteration " + str( i ) +
                                "have been omitted" )
 
         # Calculate min, max, avg of list and report
-        link_down_min = min( link_down_graph_to_system_list )
-        link_down_max = max( link_down_graph_to_system_list )
-        link_down_avg = sum( link_down_graph_to_system_list ) / \
-            len( link_down_graph_to_system_list )
-        link_up_min = min( link_up_graph_to_system_list )
-        link_up_max = max( link_up_graph_to_system_list )
-        link_up_avg = sum( link_up_graph_to_system_list ) / \
-            len( link_up_graph_to_system_list )
-        link_down_std_dev = \
-            str( round( numpy.std( link_down_graph_to_system_list ), 1 ) )
-        link_up_std_dev = \
-            str( round( numpy.std( link_up_graph_to_system_list ), 1 ) )
+        linkDownMin = min( linkDownGraphToSystemList )
+        linkDownMax = max( linkDownGraphToSystemList )
+        linkDownAvg = sum( linkDownGraphToSystemList ) / \
+            len( linkDownGraphToSystemList )
+        linkUpMin = min( linkUpGraphToSystemList )
+        linkUpMax = max( linkUpGraphToSystemList )
+        linkUpAvg = sum( linkUpGraphToSystemList ) / \
+            len( linkUpGraphToSystemList )
+        linkDownStdDev = \
+            str( round( numpy.std( linkDownGraphToSystemList ), 1 ) )
+        linkUpStdDev = \
+            str( round( numpy.std( linkUpGraphToSystemList ), 1 ) )
 
         main.log.report( "Link down latency " +
-                         "Avg: " + str( link_down_avg ) + " ms " +
-                         "Std Deviation: " + link_down_std_dev + " ms" )
+                         "Avg: " + str( linkDownAvg ) + " ms " +
+                         "Std Deviation: " + linkDownStdDev + " ms" )
         main.log.report( "Link up latency " +
-                         "Avg: " + str( link_up_avg ) + " ms " +
-                         "Std Deviation: " + link_up_std_dev + " ms" )
+                         "Avg: " + str( linkUpAvg ) + " ms " +
+                         "Std Deviation: " + linkUpStdDev + " ms" )
 
         utilities.assert_equals(
             expect=main.TRUE,
@@ -1440,54 +1654,54 @@
         import requests
         import json
 
-        ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-        ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
-        ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
-        MN1_ip = main.params[ 'MN' ][ 'ip1' ]
-        ONOS_user = main.params[ 'CTRL' ][ 'user' ]
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
+        MN1Ip = main.params[ 'MN' ][ 'ip1' ]
+        ONOSUser = main.params[ 'CTRL' ][ 'user' ]
 
-        default_sw_port = main.params[ 'CTRL' ][ 'port1' ]
+        defaultSwPort = main.params[ 'CTRL' ][ 'port1' ]
 
         # Number of iterations of case
-        num_iter = main.params[ 'TEST' ][ 'numIter' ]
-        num_sw = main.params[ 'TEST' ][ 'numSwitch' ]
+        numIter = main.params[ 'TEST' ][ 'numIter' ]
+        numSw = main.params[ 'TEST' ][ 'numSwitch' ]
 
         # Timestamp 'keys' for json metrics output.
         # These are subject to change, hence moved into params
         deviceTimestamp = main.params[ 'JSON' ][ 'deviceTimestamp' ]
         graphTimestamp = main.params[ 'JSON' ][ 'graphTimestamp' ]
 
-        debug_mode = main.params[ 'TEST' ][ 'debugMode' ]
+        debugMode = main.params[ 'TEST' ][ 'debugMode' ]
 
-        local_time = time.strftime( '%X' )
-        local_time = local_time.replace( "/", "" )
-        local_time = local_time.replace( " ", "_" )
-        local_time = local_time.replace( ":", "" )
-        if debug_mode == 'on':
-            main.ONOS1.tshark_pcap( "eth0",
-                                    "/tmp/100_sw_lat_pcap_" + local_time )
+        localTime = time.strftime( '%X' )
+        localTime = localTime.replace( "/", "" )
+        localTime = localTime.replace( " ", "_" )
+        localTime = localTime.replace( ":", "" )
+        if debugMode == 'on':
+            main.ONOS1.tsharkPcap( "eth0",
+                                   "/tmp/100_sw_lat_pcap_" + localTime )
 
         # Threshold for this test case
-        sw_disc_threshold_str = main.params[ 'TEST' ][ 'swDisc100Threshold' ]
-        sw_disc_threshold_obj = sw_disc_threshold_str.split( "," )
-        sw_disc_threshold_min = int( sw_disc_threshold_obj[ 0 ] )
-        sw_disc_threshold_max = int( sw_disc_threshold_obj[ 1 ] )
+        swDiscThresholdStr = main.params[ 'TEST' ][ 'swDisc100Threshold' ]
+        swDiscThresholdObj = swDiscThresholdStr.split( "," )
+        swDiscThresholdMin = int( swDiscThresholdObj[ 0 ] )
+        swDiscThresholdMax = int( swDiscThresholdObj[ 1 ] )
 
-        tshark_ofp_output = "/tmp/tshark_ofp_" + num_sw + "sw.txt"
-        tshark_tcp_output = "/tmp/tshark_tcp_" + num_sw + "sw.txt"
+        tsharkOfpOutput = "/tmp/tshark_ofp_" + numSw + "sw.txt"
+        tsharkTcpOutput = "/tmp/tshark_tcp_" + numSw + "sw.txt"
 
-        tshark_ofp_result_list = []
-        tshark_tcp_result_list = []
+        tsharkOfpResultList = []
+        tsharkTcpResultList = []
 
-        sw_discovery_lat_list = []
+        swDiscoveryLatList = []
 
-        main.case( num_sw + " Switch discovery latency" )
+        main.case( numSw + " Switch discovery latency" )
         main.step( "Assigning all switches to ONOS1" )
-        for i in range( 1, int( num_sw ) + 1 ):
-            main.Mininet1.assign_sw_controller(
+        for i in range( 1, int( numSw ) + 1 ):
+            main.Mininet1.assignSwController(
                 sw=str( i ),
-                ip1=ONOS1_ip,
-                port1=default_sw_port )
+                ip1=ONOS1Ip,
+                port1=defaultSwPort )
 
         # Ensure that nodes are configured with ptpd
         # Just a warning message
@@ -1495,7 +1709,7 @@
                        " All nodes' system times are in sync" )
         time.sleep( 5 )
 
-        for i in range( 0, int( num_iter ) ):
+        for i in range( 0, int( numIter ) ):
 
             main.step( "Set iptables rule to block incoming sw connections" )
             # Set iptables rule to block incoming switch connections
@@ -1503,20 +1717,20 @@
             #   Append to INPUT rule,
             #   behavior DROP that matches following:
             #       * packet type: tcp
-            #       * source IP: MN1_ip
+            #       * source IP: MN1Ip
             #       * destination PORT: 6633
             main.ONOS1.handle.sendline(
-                "sudo iptables -A INPUT -p tcp -s " + MN1_ip +
-                " --dport " + default_sw_port + " -j DROP" )
+                "sudo iptables -A INPUT -p tcp -s " + MN1Ip +
+                " --dport " + defaultSwPort + " -j DROP" )
             main.ONOS1.handle.expect( "\$" )
             #   Append to OUTPUT rule,
             #   behavior DROP that matches following:
             #       * packet type: tcp
-            #       * source IP: MN1_ip
+            #       * source IP: MN1Ip
             #       * destination PORT: 6633
             main.ONOS1.handle.sendline(
-                "sudo iptables -A OUTPUT -p tcp -s " + MN1_ip +
-                " --dport " + default_sw_port + " -j DROP" )
+                "sudo iptables -A OUTPUT -p tcp -s " + MN1Ip +
+                " --dport " + defaultSwPort + " -j DROP" )
             main.ONOS1.handle.expect( "\$" )
             # Give time to allow rule to take effect
             # NOTE: Sleep period may need to be configured
@@ -1526,10 +1740,10 @@
             time.sleep( 60 )
 
             # Gather vendor OFP with tshark
-            main.ONOS1.tshark_grep( "OFP 86 Vendor",
-                                    tshark_ofp_output )
-            main.ONOS1.tshark_grep( "TCP 74 ",
-                                    tshark_tcp_output )
+            main.ONOS1.tsharkGrep( "OFP 86 Vendor",
+                                   tsharkOfpOutput )
+            main.ONOS1.tsharkGrep( "TCP 74 ",
+                                   tsharkTcpOutput )
 
             # NOTE: Remove all iptables rule quickly ( flush )
             #      Before removal, obtain TestON timestamp at which
@@ -1537,137 +1751,201 @@
             #      ( ensuring nodes are configured via ptp )
             #      sudo iptables -F
 
-            t0_system = time.time() * 1000
+            t0System = time.time() * 1000
             main.ONOS1.handle.sendline(
                 "sudo iptables -F" )
 
             # Counter to track loop count
-            counter_loop = 0
-            counter_avail1 = 0
-            counter_avail2 = 0
-            counter_avail3 = 0
-            onos1_dev = False
-            onos2_dev = False
-            onos3_dev = False
-            while counter_loop < 60:
+            counterLoop = 0
+            counterAvail1 = 0
+            counterAvail2 = 0
+            counterAvail3 = 0
+            onos1Dev = False
+            onos2Dev = False
+            onos3Dev = False
+            while counterLoop < 60:
                 # Continue to check devices for all device
                 # availability. When all devices in all 3
                 # ONOS instances indicate that devices are available
                 # obtain graph event timestamp for t1.
-                device_str_obj1 = main.ONOS1cli.devices()
-                device_str_obj2 = main.ONOS2cli.devices()
-                device_str_obj3 = main.ONOS3cli.devices()
+                deviceStrObj1 = main.ONOS1cli.devices()
+                deviceStrObj2 = main.ONOS2cli.devices()
+                deviceStrObj3 = main.ONOS3cli.devices()
 
-                device_json1 = json.loads( device_str_obj1 )
-                device_json2 = json.loads( device_str_obj2 )
-                device_json3 = json.loads( device_str_obj3 )
+                deviceJson1 = json.loads( deviceStrObj1 )
+                deviceJson2 = json.loads( deviceStrObj2 )
+                deviceJson3 = json.loads( deviceStrObj3 )
 
-                for device1 in device_json1:
+                for device1 in deviceJson1:
                     if device1[ 'available' ]:
-                        counter_avail1 += 1
-                        if counter_avail1 == int( num_sw ):
-                            onos1_dev = True
+                        counterAvail1 += 1
+                        if counterAvail1 == int( numSw ):
+                            onos1Dev = True
                             main.log.info( "All devices have been " +
                                            "discovered on ONOS1" )
                     else:
-                        counter_avail1 = 0
-                for device2 in device_json2:
+                        counterAvail1 = 0
+                for device2 in deviceJson2:
                     if device2[ 'available' ]:
-                        counter_avail2 += 1
-                        if counter_avail2 == int( num_sw ):
-                            onos2_dev = True
+                        counterAvail2 += 1
+                        if counterAvail2 == int( numSw ):
+                            onos2Dev = True
                             main.log.info( "All devices have been " +
                                            "discovered on ONOS2" )
                     else:
-                        counter_avail2 = 0
-                for device3 in device_json3:
+                        counterAvail2 = 0
+                for device3 in deviceJson3:
                     if device3[ 'available' ]:
-                        counter_avail3 += 1
-                        if counter_avail3 == int( num_sw ):
-                            onos3_dev = True
+                        counterAvail3 += 1
+                        if counterAvail3 == int( numSw ):
+                            onos3Dev = True
                             main.log.info( "All devices have been " +
                                            "discovered on ONOS3" )
                     else:
-                        counter_avail3 = 0
+                        counterAvail3 = 0
 
-                if onos1_dev and onos2_dev and onos3_dev:
+                if onos1Dev and onos2Dev and onos3Dev:
                     main.log.info( "All devices have been discovered " +
                                    "on all ONOS instances" )
-                    json_str_topology_metrics_1 =\
-                        main.ONOS1cli.topology_events_metrics()
-                    json_str_topology_metrics_2 =\
-                        main.ONOS2cli.topology_events_metrics()
-                    json_str_topology_metrics_3 =\
-                        main.ONOS3cli.topology_events_metrics()
+                    jsonStrTopologyMetrics1 =\
+                        main.ONOS1cli.topologyEventsMetrics()
+                    jsonStrTopologyMetrics2 =\
+                        main.ONOS2cli.topologyEventsMetrics()
+                    jsonStrTopologyMetrics3 =\
+                        main.ONOS3cli.topologyEventsMetrics()
 
                     # Exit while loop if all devices discovered
                     break
 
-                counter_loop += 1
+                counterLoop += 1
                 # Give some time in between CLI calls
                 #( will not affect measurement )
                 time.sleep( 3 )
 
-            main.ONOS1.tshark_stop()
+            main.ONOS1.tsharkStop()
 
-            os.system( "scp " + ONOS_user + "@" + ONOS1_ip + ":" +
-                       tshark_ofp_output + " /tmp/" )
-            os.system( "scp " + ONOS_user + "@" + ONOS1_ip + ":" +
-                       tshark_tcp_output + " /tmp/" )
+            os.system( "scp " + ONOSUser + "@" + ONOS1Ip + ":" +
+                       tsharkOfpOutput + " /tmp/" )
+            os.system( "scp " + ONOSUser + "@" + ONOS1Ip + ":" +
+                       tsharkTcpOutput + " /tmp/" )
 
             # TODO: Automate OFP output analysis
             # Debug mode - print out packets captured at runtime
-            if debug_mode == 'on':
-                ofp_file = open( tshark_ofp_output, 'r' )
+            if debugMode == 'on':
+                ofpFile = open( tsharkOfpOutput, 'r' )
                 main.log.info( "Tshark OFP Vendor output: " )
-                for line in ofp_file:
-                    tshark_ofp_result_list.append( line )
+                for line in ofpFile:
+                    tsharkOfpResultList.append( line )
                     main.log.info( line )
-                ofp_file.close()
+                ofpFile.close()
 
-                tcp_file = open( tshark_tcp_output, 'r' )
+                tcpFile = open( tsharkTcpOutput, 'r' )
                 main.log.info( "Tshark TCP 74 output: " )
-                for line in tcp_file:
-                    tshark_tcp_result_list.append( line )
+                for line in tcpFile:
+                    tsharkTcpResultList.append( line )
                     main.log.info( line )
-                tcp_file.close()
+                tcpFile.close()
 
-            json_obj_1 = json.loads( json_str_topology_metrics_1 )
-            json_obj_2 = json.loads( json_str_topology_metrics_2 )
-            json_obj_3 = json.loads( json_str_topology_metrics_3 )
+            jsonObj1 = json.loads( jsonStrTopologyMetrics1 )
+            jsonObj2 = json.loads( jsonStrTopologyMetrics2 )
+            jsonObj3 = json.loads( jsonStrTopologyMetrics3 )
 
-            graph_timestamp_1 = \
-                json_obj_1[ graphTimestamp ][ 'value' ]
-            graph_timestamp_2 = \
-                json_obj_2[ graphTimestamp ][ 'value' ]
-            graph_timestamp_3 = \
-                json_obj_3[ graphTimestamp ][ 'value' ]
+            graphTimestamp1 = \
+                jsonObj1[ graphTimestamp ][ 'value' ]
+            graphTimestamp2 = \
+                jsonObj2[ graphTimestamp ][ 'value' ]
+            graphTimestamp3 = \
+                jsonObj3[ graphTimestamp ][ 'value' ]
 
-            graph_lat_1 = int( graph_timestamp_1 ) - int( t0_system )
-            graph_lat_2 = int( graph_timestamp_2 ) - int( t0_system )
-            graph_lat_3 = int( graph_timestamp_3 ) - int( t0_system )
+            graphLat1 = int( graphTimestamp1 ) - int( t0System )
+            graphLat2 = int( graphTimestamp2 ) - int( t0System )
+            graphLat3 = int( graphTimestamp3 ) - int( t0System )
 
-            avg_graph_lat = \
-                ( int( graph_lat_1 ) +
-                  int( graph_lat_2 ) +
-                  int( graph_lat_3 ) ) / 3
+            avgGraphLat = \
+                ( int( graphLat1 ) +
+                  int( graphLat2 ) +
+                  int( graphLat3 ) ) / 3
 
-            if avg_graph_lat > sw_disc_threshold_min \
-                    and avg_graph_lat < sw_disc_threshold_max:
-                sw_discovery_lat_list.append(
-                    avg_graph_lat )
+            if avgGraphLat > swDiscThresholdMin \
+                    and avgGraphLat < swDiscThresholdMax:
+                swDiscoveryLatList.append(
+                    avgGraphLat )
             else:
                 main.log.info( "100 Switch discovery latency " +
                                "exceeded the threshold." )
 
             # END ITERATION FOR LOOP
 
-        sw_lat_min = min( sw_discovery_lat_list )
-        sw_lat_max = max( sw_discovery_lat_list )
-        sw_lat_avg = sum( sw_discovery_lat_list ) /\
-            len( sw_discovery_lat_list )
+        swLatMin = min( swDiscoveryLatList )
+        swLatMax = max( swDiscoveryLatList )
+        swLatAvg = sum( swDiscoveryLatList ) /\
+            len( swDiscoveryLatList )
 
         main.log.report( "100 Switch discovery lat " +
-                         "Min: " + str( sw_lat_min ) + " ms" +
-                         "Max: " + str( sw_lat_max ) + " ms" +
-                         "Avg: " + str( sw_lat_avg ) + " ms" )
+                         "Min: " + str( swLatMin ) + " ms" +
+                         "Max: " + str( swLatMax ) + " ms" +
+                         "Avg: " + str( swLatAvg ) + " ms" )
+
+    def CASE6( self, main ):
+        """
+        Increase number of nodes and initiate CLI
+        """
+        import time
+
+        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+        ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
+        ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
+        ONOS4Ip = main.params[ 'CTRL' ][ 'ip4' ]
+        ONOS5Ip = main.params[ 'CTRL' ][ 'ip5' ]
+        ONOS6Ip = main.params[ 'CTRL' ][ 'ip6' ]
+        ONOS7Ip = main.params[ 'CTRL' ][ 'ip7' ]
+
+        cellName = main.params[ 'ENV' ][ 'cellName' ]
+
+        global clusterCount
+
+        # Cluster size increased everytime the case is defined
+        clusterCount += 2
+
+        main.log.report( "Increasing cluster size to " +
+                         str( clusterCount ) )
+
+        installResult = main.FALSE
+        if clusterCount == 3:
+            main.log.info( "Installing nodes 2 and 3" )
+            node2Result = \
+                main.ONOSbench.onosInstall( node=ONOS2Ip )
+            node3Result = \
+                main.ONOSbench.onosInstall( node=ONOS3Ip )
+            installResult = node2Result and node3Result
+
+            time.sleep( 5 )
+
+            main.ONOS2cli.startOnosCli( ONOS2Ip )
+            main.ONOS3cli.startOnosCli( ONOS3Ip )
+
+        elif clusterCount == 5:
+            main.log.info( "Installing nodes 4 and 5" )
+            node4Result = \
+                main.ONOSbench.onosInstall( node=ONOS4Ip )
+            node5Result = \
+                main.ONOSbench.onosInstall( node=ONOS5Ip )
+            installResult = node4Result and node5Result
+
+            time.sleep( 5 )
+
+            main.ONOS4cli.startOnosCli( ONOS4Ip )
+            main.ONOS5cli.startOnosCli( ONOS5Ip )
+
+        elif clusterCount == 7:
+            main.log.info( "Installing nodes 4 and 5" )
+            node6Result = \
+                main.ONOSbench.onosInstall( node=ONOS6Ip )
+            node7Result = \
+                main.ONOSbench.onosInstall( node=ONOS7Ip )
+            installResult = node6Result and node7Result
+
+            time.sleep( 5 )
+
+            main.ONOS6cli.startOnosCli( ONOS6Ip )
+            main.ONOS7cli.startOnosCli( ONOS7Ip )
diff --git a/TestON/tests/TopoPerfNext/TopoPerfNext.topo b/TestON/tests/TopoPerfNext/TopoPerfNext.topo
index 4ee44e2..fc70784 100644
--- a/TestON/tests/TopoPerfNext/TopoPerfNext.topo
+++ b/TestON/tests/TopoPerfNext/TopoPerfNext.topo
@@ -36,6 +36,42 @@
             <connect_order>2</connect_order>
             <COMPONENTS> </COMPONENTS>
         </ONOS3cli>
+        
+        <ONOS4cli>
+            <host>10.128.174.10</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosCliDriver</type>
+            <connect_order>2</connect_order>
+            <COMPONENTS> </COMPONENTS>
+        </ONOS4cli>
+        
+        <ONOS5cli>
+            <host>10.128.174.10</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosCliDriver</type>
+            <connect_order>2</connect_order>
+            <COMPONENTS> </COMPONENTS>
+        </ONOS5cli>
+        
+        <ONOS6cli>
+            <host>10.128.174.10</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosCliDriver</type>
+            <connect_order>2</connect_order>
+            <COMPONENTS> </COMPONENTS>
+        </ONOS6cli>
+        
+        <ONOS7cli>
+            <host>10.128.174.10</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosCliDriver</type>
+            <connect_order>2</connect_order>
+            <COMPONENTS> </COMPONENTS>
+        </ONOS7cli>
 
         <ONOS1>
             <host>10.128.174.1</host>
@@ -63,6 +99,42 @@
             <connect_order>3</connect_order>
             <COMPONENTS> </COMPONENTS>
         </ONOS3>
+        
+        <ONOS4>
+            <host>10.128.174.4</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosDriver</type>
+            <connect_order>3</connect_order>
+            <COMPONENTS> </COMPONENTS>
+        </ONOS4>
+        
+        <ONOS5>
+            <host>10.128.174.5</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosDriver</type>
+            <connect_order>3</connect_order>
+            <COMPONENTS> </COMPONENTS>
+        </ONOS5>
+        
+        <ONOS6>
+            <host>10.128.174.6</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosDriver</type>
+            <connect_order>3</connect_order>
+            <COMPONENTS> </COMPONENTS>
+        </ONOS6>
+        
+        <ONOS7>
+            <host>10.128.174.7</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosDriver</type>
+            <connect_order>3</connect_order>
+            <COMPONENTS> </COMPONENTS>
+        </ONOS7>
 
         <Mininet1>
             <host>10.128.10.90</host>
diff --git a/TestON/tests/prevFuncNext/FuncNext.params b/TestON/tests/prevFuncNext/FuncNext.params
new file mode 100755
index 0000000..13a4691
--- /dev/null
+++ b/TestON/tests/prevFuncNext/FuncNext.params
@@ -0,0 +1,37 @@
+<PARAMS>
+    
+    <testcases>1,4,5,3</testcases>
+
+    #Environment variables
+    <ENV>
+        <cellName>driver_test</cellName>
+    </ENV>
+
+    <CTRL>
+        <ip1>10.128.20.11</ip1>
+        <port1>6633</port1>
+    </CTRL>
+
+    <PING>
+        <source1>h8</source1>
+        <source2>h9</source2>
+        <source3>h10</source3>
+        <source4>h11</source4>
+        <source5>h12</source5>
+        <source6>h13</source6>
+        <source7>h14</source7>
+        <source8>h15</source8>
+        <source9>h16</source9>
+        <source10>h17</source10>
+        <target1>10.0.0.18</target1>
+        <target2>10.0.0.19</target2>
+        <target3>10.0.0.20</target3>
+        <target4>10.0.0.21</target4>
+        <target5>10.0.0.22</target5>
+        <target6>10.0.0.23</target6>
+        <target7>10.0.0.24</target7>
+        <target8>10.0.0.25</target8>
+        <target9>10.0.0.26</target9>
+        <target10>10.0.0.27</target10>
+    </PING>
+</PARAMS>
diff --git a/TestON/tests/prevFuncNext/FuncNext.py b/TestON/tests/prevFuncNext/FuncNext.py
new file mode 100755
index 0000000..e556fa4
--- /dev/null
+++ b/TestON/tests/prevFuncNext/FuncNext.py
@@ -0,0 +1,311 @@
+
+#Testing the basic functionality of ONOS Next
+#For sanity and driver functionality excercises only.
+
+import time
+import sys
+import os
+import re
+import time
+
+time.sleep(1)
+class FuncNext:
+    def __init__(self):
+        self.default = ''
+
+    def CASE1(self, main):
+        '''
+        Startup sequence:
+        git pull
+        mvn clean install
+        onos-package
+        cell <name>
+        onos-verify-cell
+        onos-install -f
+        onos-wait-for-start
+        '''
+        
+        cell_name = main.params['ENV']['cellName']
+        ONOS1_ip = main.params['CTRL']['ip1']
+        ONOS1_port = main.params['CTRL']['port1']
+        
+        main.case("Setting up test environment")
+        
+        main.step("Git checkout and pull master and get version")
+        main.ONOSbench.git_checkout("master")
+        git_pull_result = main.ONOSbench.git_pull()
+        version_result = main.ONOSbench.get_version()
+
+        main.step("Using mvn clean & install")
+        #clean_install_result = main.ONOSbench.clean_install()
+        #clean_install_result = main.TRUE
+
+        main.step("Applying cell variable to environment")
+        cell_result = main.ONOSbench.set_cell(cell_name)
+        verify_result = main.ONOSbench.verify_cell()
+        cell_result = main.ONOS2.set_cell(cell_name)
+        #verify_result = main.ONOS2.verify_cell()
+        main.ONOS2.start_onos_cli(ONOS_ip=main.params['CTRL']['ip1'])
+        
+        main.step("Creating ONOS package")
+        package_result = main.ONOSbench.onos_package()
+
+        #main.step("Creating a cell")
+        #cell_create_result = main.ONOSbench.create_cell_file(**************)
+
+        main.step("Installing ONOS package")
+        onos_install_result = main.ONOSbench.onos_install()
+        onos1_isup = main.ONOSbench.isup()
+   
+        main.step("Starting ONOS service")
+        start_result = main.ONOSbench.onos_start(ONOS1_ip)
+
+        case1_result = (package_result and\
+                cell_result and verify_result and onos_install_result and\
+                onos1_isup and start_result )
+        utilities.assert_equals(expect=main.TRUE, actual=case1_result,
+                onpass="Test startup successful",
+                onfail="Test startup NOT successful")
+
+    def CASE11(self, main):
+        '''
+        Cleanup sequence:
+        onos-service <node_ip> stop
+        onos-uninstall
+
+        TODO: Define rest of cleanup
+        
+        '''
+
+        ONOS1_ip = main.params['CTRL']['ip1']
+
+        main.case("Cleaning up test environment")
+
+        main.step("Testing ONOS kill function")
+        kill_result = main.ONOSbench.onos_kill(ONOS1_ip)
+
+        main.step("Stopping ONOS service")
+        stop_result = main.ONOSbench.onos_stop(ONOS1_ip)
+
+        main.step("Uninstalling ONOS service") 
+        uninstall_result = main.ONOSbench.onos_uninstall()
+
+    def CASE3(self, main):
+        '''
+        Test 'onos' command and its functionality in driver
+        '''
+        
+        ONOS1_ip = main.params['CTRL']['ip1']
+
+        main.case("Testing 'onos' command")
+
+        main.step("Sending command 'onos -w <onos-ip> system:name'")
+        cmdstr1 = "system:name"
+        cmd_result1 = main.ONOSbench.onos_cli(ONOS1_ip, cmdstr1) 
+        main.log.info("onos command returned: "+cmd_result1)
+
+        main.step("Sending command 'onos -w <onos-ip> onos:topology'")
+        cmdstr2 = "onos:topology"
+        cmd_result2 = main.ONOSbench.onos_cli(ONOS1_ip, cmdstr2)
+        main.log.info("onos command returned: "+cmd_result2)
+
+
+
+    def CASE4(self, main):
+        import re
+        import time
+        main.case("Pingall Test")
+        main.step("Assigning switches to controllers")
+        for i in range(1,29):
+            if i ==1:
+                main.Mininet1.assign_sw_controller(sw=str(i),ip1=ONOS1_ip,port1=ONOS1_port)
+            elif i>=2 and i<5:
+                main.Mininet1.assign_sw_controller(sw=str(i),ip1=ONOS1_ip,port1=ONOS1_port)
+            elif i>=5 and i<8:
+                main.Mininet1.assign_sw_controller(sw=str(i),ip1=ONOS1_ip,port1=ONOS1_port)
+            elif i>=8 and i<18:
+                main.Mininet1.assign_sw_controller(sw=str(i),ip1=ONOS1_ip,port1=ONOS1_port)
+            elif i>=18 and i<28:
+                main.Mininet1.assign_sw_controller(sw=str(i),ip1=ONOS1_ip,port1=ONOS1_port)
+            else:
+                main.Mininet1.assign_sw_controller(sw=str(i),ip1=ONOS1_ip,port1=ONOS1_port)
+        Switch_Mastership = main.TRUE
+        for i in range (1,29):
+            if i==1:
+                response = main.Mininet1.get_sw_controller("s"+str(i))
+                print("Response is " + str(response))
+                if re.search("tcp:"+ONOS1_ip,response):
+                    Switch_Mastership = Switch_Mastership and main.TRUE
+                else:
+                    Switch_Mastership = main.FALSE
+            elif i>=2 and i<5:
+                response = main.Mininet1.get_sw_controller("s"+str(i))
+                print("Response is " + str(response))
+                if re.search("tcp:"+ONOS1_ip,response):
+                    Switch_Mastership = Switch_Mastership and main.TRUE
+                else:
+                    Switch_Mastership = main.FALSE
+            elif i>=5 and i<8:
+                response = main.Mininet1.get_sw_controller("s"+str(i))
+                print("Response is " + str(response))
+                if re.search("tcp:"+ONOS1_ip,response):
+                    Switch_Mastership = Switch_Mastership and main.TRUE
+                else:
+                    Switch_Mastership = main.FALSE
+            elif i>=8 and i<18:
+                response = main.Mininet1.get_sw_controller("s"+str(i))
+                print("Response is " + str(response))
+                if re.search("tcp:"+ONOS1_ip,response):
+                    Switch_Mastership = Switch_Mastership and main.TRUE
+                else:
+                    Switch_Mastership = main.FALSE
+            elif i>=18 and i<28:
+                response = main.Mininet1.get_sw_controller("s"+str(i))
+                print("Response is " + str(response))
+                if re.search("tcp:"+ONOS1_ip,response):
+                    Switch_Mastership = Switch_Mastership and main.TRUE
+                else:
+                    Switch_Mastership = main.FALSE
+            else:
+                response = main.Mininet1.get_sw_controller("s"+str(i))
+                print("Response is" + str(response))
+                if re.search("tcp:" +ONOS1_ip,response):
+                    Switch_Mastership = Switch_Mastership and main.TRUE
+                else:
+                    Switch_Mastership = main.FALSE
+
+        if Switch_Mastership == main.TRUE:
+            main.log.report("MasterControllers assigned correctly")
+        utilities.assert_equals(expect = main.TRUE,actual=Switch_Mastership,
+                onpass="MasterControllers assigned correctly")
+        '''
+        for i in range (1,29):
+            main.Mininet1.assign_sw_controller(sw=str(i),count=5,
+                    ip1=ONOS1_ip,port1=ONOS1_port,
+                    ip2=ONOS2_ip,port2=ONOS2_port,
+                    ip3=ONOS3_ip,port3=ONOS3_port,
+                    ip4=ONOS4_ip,port4=ONOS4_port,
+                    ip5=ONOS5_ip,port5=ONOS5_port)
+        '''
+        #REACTIVE FWD test
+
+        main.step("Get list of hosts from Mininet")
+        host_list = main.Mininet1.get_hosts()
+        main.log.info(host_list)
+
+        main.step("Get host list in ONOS format")
+        host_onos_list = main.ONOS2.get_hosts_id(host_list)
+        main.log.info(host_onos_list)
+        #time.sleep(5)
+
+        #We must use ping from hosts we want to add intents from 
+        #to make the hosts talk
+        #main.Mininet2.handle.sendline("\r")
+        #main.Mininet2.handle.sendline("h4 ping 10.1.1.1 -c 1 -W 1")
+        #time.sleep(3)
+        #main.Mininet2.handle.sendline("h5 ping 10.1.1.1 -c 1 -W 1")
+        #time.sleep(5)
+        
+        main.step("Pingall")
+        ping_result = main.FALSE
+        while ping_result == main.FALSE:
+            time1 = time.time()
+            ping_result = main.Mininet1.pingall()
+            time2 = time.time()
+            print "Time for pingall: %2f seconds" % (time2 - time1)
+      
+        #Start onos cli again because u might have dropped out of onos prompt to the shell prompt
+        #if there was no activity
+        main.ONOS2.start_onos_cli(ONOS_ip=main.params['CTRL']['ip1'])
+
+        main.step("Get hosts")
+        main.ONOS2.handle.sendline("hosts")
+        main.ONOS2.handle.expect("onos>")
+        hosts = main.ONOS2.handle.before
+        main.log.info(hosts)
+
+        main.step("Get all devices id")
+        devices_id_list = main.ONOS2.get_all_devices_id()
+        main.log.info(devices_id_list)
+        '''
+        main.step("Add point-to-point intents")
+        ptp_intent_result = main.ONOS2.add_point_intent(
+            devices_id_list[0], 1, devices_id_list[1], 2)
+        if ptp_intent_result == main.TRUE:
+            get_intent_result = main.ONOS2.intents()
+            main.log.info("Point to point intent install successful")
+            main.log.info(get_intent_result)
+        '''
+
+        case4_result = Switch_Mastership and ping_result
+        utilities.assert_equals(expect=main.TRUE, actual=case4_result,
+                onpass="Pingall Test successful",
+                onfail="Pingall Test NOT successful")
+
+    def CASE5(self,main) :
+        import time
+        from subprocess import Popen, PIPE
+        from sts.topology.teston_topology import TestONTopology # assumes that sts is already in you PYTHONPATH
+        #main.ONOS2.start_onos_cli(ONOS_ip=main.params['CTRL']['ip1'])
+        deviceResult = main.ONOS2.devices()
+        linksResult = main.ONOS2.links()
+        portsResult = main.ONOS2.ports()
+        print "**************"
+        main.step("Start continuous pings")
+        main.Mininet2.pingLong(src=main.params['PING']['source1'],
+                            target=main.params['PING']['target1'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source2'],
+                            target=main.params['PING']['target2'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source3'],
+                            target=main.params['PING']['target3'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source4'],
+                            target=main.params['PING']['target4'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source5'],
+                            target=main.params['PING']['target5'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source6'],
+                            target=main.params['PING']['target6'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source7'],
+                            target=main.params['PING']['target7'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source8'],
+                            target=main.params['PING']['target8'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source9'],
+                            target=main.params['PING']['target9'],pingTime=500)
+        main.Mininet2.pingLong(src=main.params['PING']['source10'],
+                            target=main.params['PING']['target10'],pingTime=500)
+
+        main.step("Create TestONTopology object")
+        global ctrls
+        ctrls = []
+        count = 1
+        while True:
+            temp = ()
+            if ('ip' + str(count)) in main.params['CTRL']:
+                temp = temp + (getattr(main,('ONOS' + str(count))),)
+                temp = temp + ("ONOS"+str(count),)
+                temp = temp + (main.params['CTRL']['ip'+str(count)],)
+                temp = temp + (eval(main.params['CTRL']['port'+str(count)]),)
+                ctrls.append(temp)
+                count = count + 1
+            else:
+                break
+        global MNTopo
+        Topo = TestONTopology(main.Mininet1, ctrls) # can also add Intent API info for intent operations
+        MNTopo = Topo
+
+        Topology_Check = main.TRUE
+        main.step("Compare ONOS Topology to MN Topology")
+        '''for n in range(1,6):
+            result = main.Mininet1.compare_topo(MNTopo,
+                    main.ONOS1.get_json(main.params['CTRL']['ip'+str(n)]+":"+ \
+                        main.params['CTRL']['restPort'+str(n)]+main.params['TopoRest']))
+            if result == main.TRUE:
+                main.log.report("ONOS"+str(n) + " Topology matches MN Topology")
+            utilities.assert_equals(expect=main.TRUE,actual=result,
+                    onpass="ONOS" + str(n) + " Topology matches MN Topology",
+                    onfail="ONOS" + str(n) + " Topology does not match MN Topology")
+            Topology_Check = Topology_Check and result
+        utilities.assert_equals(expect=main.TRUE,actual=Topology_Check,
+                onpass="Topology checks passed", onfail="Topology checks failed")
+        '''
+
+
diff --git a/TestON/tests/prevFuncNext/FuncNext.topo b/TestON/tests/prevFuncNext/FuncNext.topo
new file mode 100755
index 0000000..5d453a6
--- /dev/null
+++ b/TestON/tests/prevFuncNext/FuncNext.topo
@@ -0,0 +1,61 @@
+<TOPOLOGY>
+    <COMPONENT>
+
+        <ONOSbench>
+            <host>10.128.10.11</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosDriver</type>
+            <connect_order>1</connect_order>
+            <COMPONENTS> </COMPONENTS>
+        </ONOSbench>
+
+        <ONOS1>
+            <host>10.128.10.11</host>
+            <user>sdn</user>
+            <password>sdn</password>
+            <type>OnosDriver</type>
+            <connect_order>2</connect_order>
+            <COMPONENTS> </COMPONENTS>
+        </ONOS1>
+
+        <ONOS2>
+            <host>10.128.10.11</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosCliDriver</type>
+            <connect_order>3</connect_order>
+            <COMPONENTS> </COMPONENTS>
+        </ONOS2>
+
+        <Mininet1>
+            <host>10.128.10.11</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>MininetCliDriver</type>
+            <connect_order>4</connect_order>
+            <COMPONENTS>
+                #Specify the Option for mininet
+                <arg1> --custom ~/mininet/custom/topo-HA.py </arg1>
+                <arg2> --topo mytopo </arg2>
+                <arg3> --switch ovs,protocols=OpenFlow10 </arg3>
+                <controller> remote </controller>
+            </COMPONENTS>
+        </Mininet1>
+
+        <Mininet2>
+            <host>10.128.10.11</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>RemoteMininetDriver</type>
+            <connect_order>5</connect_order>
+            <COMPONENTS>
+                #Specify the Option for mininet
+                <arg1> --custom ~/mininet/custom/topo-HA.py </arg1>
+                <arg2> --topo mytopo </arg2>
+                <arg3> --switch ovs,protocols=OpenFlow10 </arg3>
+                <controller> remote </controller>
+            </COMPONENTS>
+        </Mininet2>
+    </COMPONENT>
+</TOPOLOGY>
diff --git a/TestON/tests/prevFuncNext/__init__.py b/TestON/tests/prevFuncNext/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/tests/prevFuncNext/__init__.py