diff --git a/TestON/dependencies/loadgen_NB.py b/TestON/dependencies/loadgen_NB.py
new file mode 100755
index 0000000..78d18b9
--- /dev/null
+++ b/TestON/dependencies/loadgen_NB.py
@@ -0,0 +1,225 @@
+#! /usr/bin/env python
+from time import time, sleep
+import time
+import json
+import requests
+import urllib2
+from urllib2 import URLError, HTTPError
+
+'''
+    This script is for Intent Throughput testing. Use linear 7-switch topo. Intents are from S1P1 to/from S7/P1, with incrementing src/dst Mac addresses.
+'''
+
+def setIntentJSN(node_id, intPerGroup, group_id, intent_id):
+    intents = [None for i in range(intPerGroup)]
+    oper = {}
+    index = 0
+    for i in range(intPerGroup / 2):
+        smac = str("%x" %(node_id * 0x100000000000 + 0x010000000000 + (group_id * 0x000001000000) +i + 1))
+        dmac = str("%x" %(node_id * 0x100000000000 + 0x070000000000 + (group_id * 0x000001000000) +i + 1))
+        srcMac = ':'.join(smac[i:i+2] for i in range(0, len(smac), 2))
+        dstMac = ':'.join(dmac[i:i+2] for i in range(0, len(dmac), 2))
+        srcSwitch = "00:00:00:00:00:00:00:01"
+        dstSwitch = "00:00:00:00:00:00:00:07"
+        srcPort = 1
+        dstPort = 1
+
+        oper['intentId'] = intent_id
+        oper['intentType'] = 'SHORTEST_PATH'    # XXX: Hardcode
+        oper['staticPath'] = False              # XXX: Hardcoded
+        oper['srcSwitchDpid'] = srcSwitch
+        oper['srcSwitchPort'] = srcPort
+        oper['dstSwitchDpid'] = dstSwitch
+        oper['dstSwitchPort'] = dstPort
+        oper['matchSrcMac'] = srcMac
+        oper['matchDstMac'] = dstMac
+        intents[index] = oper
+        #print ("perGroup Intents-0 are: " + json.dumps(intents) + "\n\n\n" )
+        index += 1
+        intent_id += 1
+        oper = {}
+        #print ("ID:" + str(id))
+
+        oper['intentId'] = intent_id
+        oper['intentType'] = 'SHORTEST_PATH'    # XXX: Hardcoded
+        oper['staticPath'] = False              # XXX: Hardcoded
+        oper['srcSwitchDpid'] = dstSwitch
+        oper['srcSwitchPort'] = dstPort
+        oper['dstSwitchDpid'] = srcSwitch
+        oper['dstSwitchPort'] = srcPort
+        oper['matchSrcMac'] = dstMac
+        oper['matchDstMac'] = srcMac
+        intents[index] = oper
+        index += 1 
+        intent_id += 1
+        oper = {}
+        #print ("ID: " + str(id))
+        #print ("perGroup Intents-1 are: " + json.dumps(intents) + "\n\n\n" )
+    #print ("contructed intents are: " + json.dumps(intents) + "\n\n\n")
+    return intents, intent_id
+
+def post_json(url, data):
+    """Make a REST POST call and return the JSON result
+           url: the URL to call
+           data: the data to POST"""
+    posturl = "http://%s/wm/onos/intent/high" %(url)
+    #print ("\nPost url is : " + posturl + "\n")
+    parsed_result = []
+    data_json = json.dumps(data)
+    try:
+        request = urllib2.Request(posturl, data_json)
+        request.add_header("Content-Type", "application/json")
+        response = urllib2.urlopen(request)
+        result = response.read()
+        response.close()
+        if len(result) != 0:
+            parsed_result = json.loads(result)
+    except HTTPError as exc:
+        print "ERROR:"
+        print "  REST POST URL: %s" % posturl
+        # NOTE: exc.fp contains the object with the response payload
+        error_payload = json.loads(exc.fp.read())
+        print "  REST Error Code: %s" % (error_payload['code'])
+        print "  REST Error Summary: %s" % (error_payload['summary'])
+        print "  REST Error Description: %s" % (error_payload['formattedDescription'])
+        print "  HTTP Error Code: %s" % exc.code
+        print "  HTTP Error Reason: %s" % exc.reason
+    except URLError as exc:
+        print "ERROR:"
+        print "  REST POST URL: %s" % posturl
+        print "  URL Error Reason: %s" % exc.reason
+    return parsed_result
+
+def delete_json(self, url, intPerGroup, startID):
+    """Make a REST DELETE call and return the JSON result
+           url: the URL to call"""
+    #url = "localhost:8080"
+    for i in range(intPerGroup):
+        posturl = "http://%s/wm/onos/intent/high/%s" %(url, str(i + startID))
+        parsed_result = []
+        try:
+            request = urllib2.Request(posturl)
+            request.get_method = lambda: 'DELETE'
+            response = urllib2.urlopen(request)
+            result = response.read()
+            response.close()
+            #if len(result) != 0:
+            #    parsed_result = json.loads(result)
+        except HTTPError as exc:
+            print "ERROR:"
+            print "  REST DELETE URL: %s" % posturl
+            # NOTE: exc.fp contains the object with the response payload
+            error_payload = json.loads(exc.fp.read())
+            print "  REST Error Code: %s" % (error_payload['code'])
+            print "  REST Error Summary: %s" % (error_payload['summary'])
+            print "  REST Error Description: %s" % (error_payload['formattedDescription'])
+            print "  HTTP Error Code: %s" % exc.code
+            print "  HTTP Error Reason: %s" % exc.reason
+        except URLError as exc:
+            print "ERROR:"
+            print "  REST DELETE URL: %s" % posturl
+            print "  URL Error Reason: %s" % exc.reason
+    return parsed_result
+
+def delete_all_json(url):
+    """Make a REST DELETE call and return the JSON result
+           url: the URL to call"""
+    #url = "localhost:8080"
+    posturl = "http://%s/wm/onos/intent/high" %(url)
+    parsed_result = []
+    try:
+        request = urllib2.Request(posturl)
+        request.get_method = lambda: 'DELETE'
+        response = urllib2.urlopen(request)
+        result = response.read()
+        response.close()
+        if len(result) != 0:
+            parsed_result = json.loads(result)
+    except HTTPError as exc:
+        print "ERROR:"
+        print "  REST DELETE URL: %s" % posturl
+        # NOTE: exc.fp contains the object with the response payload
+        error_payload = json.loads(exc.fp.read())
+        print "  REST Error Code: %s" % (error_payload['code'])
+        print "  REST Error Summary: %s" % (error_payload['summary'])
+        print "  REST Error Description: %s" % (error_payload['formattedDescription'])
+        print "  HTTP Error Code: %s" % exc.code
+        print "  HTTP Error Reason: %s" % exc.reason
+    except URLError as exc:
+        print "ERROR:"
+        print "  REST DELETE URL: %s" % posturl
+        print "  URL Error Reason: %s" % exc.reason
+    return parsed_result
+
+def loadIntents(node_id, urllist, intPerGroup, addrate, duration):
+    urlindex = 0
+    group = 0
+    start_id = 0
+    sleeptimer = (1.000/addrate)
+    tstart = time.time()
+    while ( (time.time() - tstart) <= duration ):
+        if urlindex < len(urllist):
+            realurlind = urlindex
+        else:
+            realurlind = 0
+            urlindex = 0
+
+        u = str(urllist[realurlind])
+        gstart = time.time()
+        intents,start_id = setIntentJSN(node_id, intPerGroup, group, start_id)
+        #print (str(intents))
+        #print ("Starting intent id: " + str(start_id))
+        result = post_json(u, intents)
+        #print json.dumps(intents[group])
+        #print ("post result: " + str(result))
+        gelapse = time.time() - gstart
+        print ("Group: " + str(group) + " with " + str(intPerGroup) + " intents were added in " + str('%.3f' %gelapse) + " seconds.")
+        sleep(sleeptimer)
+        urlindex += 1
+        group += 1
+
+    telapse = time.time() - tstart
+    #print ( "Number of groups: " + str(group) + "; Totoal " + str(args.groups * args.intPerGroup) + " intents were added in " + str(telapse) + " seconds.")
+    return telapse, group
+
+def main():
+    import argparse
+
+    parser = argparse.ArgumentParser(description="less script")
+    parser.add_argument("-n", "--node_id", dest="node_id", default = 1, type=int, help="id of the node generating the intents, this is used to distinguish intents when multiple nodes are use to generate intents")
+    parser.add_argument("-u", "--urls", dest="urls", default="10.128.10.1", type=str, help="a string to show urls to post intents to separated by space, ex. '10.128.10.1:8080 10.128.10.2:80080' ")
+    parser.add_argument("-i", "--intentsPerGroup", dest="intPerGroup", default=100, type=int, help="number of intents in one restcall group")
+    parser.add_argument("-a", "--addrate", dest="addrate", default=10, type=float, help="rate to add intents groups, groups per second")
+    parser.add_argument("-d", "--delrate", dest="delrate", default=100, type=float, help= "### Not Effective -for now intents are delete as bulk #### rate to delete intents, intents/second")
+    parser.add_argument("-l", "--length", dest="duration", default=300, type=int, help="duration/length of time the intents are posted")
+    parser.add_argument("-p", "--pause", dest="pause", default=0, type=int, help= "pausing time between add and delete of intents")
+    args = parser.parse_args()
+
+    node_id = args.node_id
+    urllist = args.urls.split()
+    intPerGroup = args.intPerGroup
+    addrate = args.addrate
+    delrate = args.delrate
+    duration = args.duration    
+    pause = args.pause
+
+    print ("Intent posting urls are: " + str(urllist))
+    print ("Number of Intents per group: " + str(intPerGroup))
+    print ("Intent group add rate: " + str(addrate) )
+    print ("Intent delete rate:" + str(delrate) )
+    print ("Duration: " + str(duration) )
+    print ("Pause between add and delete: " + str(args.pause))
+
+    telapse, group = loadIntents(node_id, urllist, intPerGroup, addrate, duration)
+    print ("\n\n#####################")
+    print ( str(group) + " groups " + " of " + str(intPerGroup) + " Intents per group - Total " + str(group * intPerGroup) + " intents were added in " + str('%.3f' %telapse) + " seconds.")
+    print ( "Effective intents posting rate is: " + str( '%.1f' %( (group * intPerGroup)/telapse ) ) + " Intents/second." )
+    print ("#####################\n\n")
+    print ("Sleep for " + str(pause) + " seconds before deleting all intents...")
+    time.sleep(pause)
+    print ("Cleaning up intents in all nodes...")
+    for url in urllist:
+        delete_all_json(url)
+        
+if __name__ == '__main__':
+    main()
diff --git a/TestON/dependencies/loadgen_SB.py b/TestON/dependencies/loadgen_SB.py
new file mode 100755
index 0000000..cfd2adf
--- /dev/null
+++ b/TestON/dependencies/loadgen_SB.py
@@ -0,0 +1,117 @@
+#!/usr/bin/python
+
+"""
+This example shows how to create an empty Mininet object
+(without a topology object) and add nodes to it manually.
+"""
+import sys
+import subprocess
+import time
+from mininet.net import Mininet
+from mininet.node import Controller
+from mininet.cli import CLI
+from mininet.log import setLogLevel, info
+
+swlist = []
+hostlist= []
+count = 0 
+
+def createSwPorts(numsw, numport):
+
+    "Create an empty network and add nodes to it."
+
+    net = Mininet()
+    swlist = []
+    hostlist= []
+    print ("Starting Mininet Network....")
+    for i in range(numsw):
+        sw = net.addSwitch( 's' + str(i), dpid = ('00000000000000' + '%0d'%i))
+        print str(sw),
+        for p in range(numport):
+            host = net.addHost("s"+str(i)+"h"+str(p))
+            hostlist.append(host)
+            print str(host),
+            net.addLink(host,sw)
+        swlist.append(sw)
+
+            
+    info( '*** Starting network\n')
+    net.start()
+
+    return swlist
+
+def loadsw(urllist, swlist, addrate, delrate, duration):
+    global numport
+    urlindex = 0
+    count = 0
+    addsleeptimer = 1.000 /addrate
+    delsleeptimer = 1.000/delrate
+    print (" Add sleeptimer: " + str('%.3f' %addsleeptimer) + "; Delete sleeptimer: " + str('%.3f' %delsleeptimer))
+    print str(swlist)
+ 
+    tstart = time.time()
+    while ( (time.time() - tstart) <= duration ):
+        #print (time.time() - tstart)
+        astart = time.time()
+        for sw in swlist:
+            if urlindex < len(urllist):
+                i = urlindex
+            else:
+                i = 0
+                urlindex = 0
+        
+            ovscmd = "sudo ovs-vsctl set-controller " + str(sw) + " tcp:" + urllist[i]
+            print ("a"),
+            s = subprocess.Popen(ovscmd, shell=True )
+            time.sleep(addsleeptimer)
+            count += 1
+            urlindex += 1
+        aelapse = time.time() - astart
+        print ("Number of switches connected: " + str(len(swlist)) + " in: " + str('%.3f' %aelapse) + "seconds.")
+
+        dstart = time.time()
+        for sw in swlist:
+            ovscmd = "sudo ovs-vsctl set-controller " + str(sw) + " tcp:127.0.0.1:6633"
+            print ("d"),
+            s = subprocess.Popen(ovscmd, shell=True )
+            time.sleep(delsleeptimer)
+            count += 1
+        delapse = time.time() - dstart
+        print ("Number of switches disconnected: " + str(len(swlist)) + " in: " + str('%.3f' %delapse) + "seconds.")
+    telapse = time.time() - tstart
+    
+    return telapse, count
+def cleanMN():
+    print ("Cleaning MN switches...")
+    s = subprocess.Popen("sudo mn -c > /dev/null 2>&1", shell=True)
+    print ("Done.")
+
+def main():
+    import argparse
+    import threading
+    from threading import Thread
+
+    parser = argparse.ArgumentParser(description="less script")
+    parser.add_argument("-u", "--urls", dest="urls", default="10.128.10.1", type=str, help="a string to show urls to post intents to separated by space, ex. '10.128.10.1:6633 10.128.10.2:6633' ")
+    parser.add_argument("-s", "--switches", dest="numsw", default=100, type=int, help="number of switches use in the load generator; together with the ports per switch config, each switch generates (numport + 2) events")
+    parser.add_argument("-p", "--ports", dest="numport", default=1, type=int, help="number of ports per switches")
+    parser.add_argument("-a", "--addrate", dest="addrate", default=10, type=float, help="rate to add intents groups, groups per second")
+    parser.add_argument("-d", "--delrate", dest="delrate", default=100, type=float, help= "rate to delete intents, intents/second")
+    parser.add_argument("-l", "--testlength", dest="duration", default=0, type=int, help= "pausing time between add and delete of intents")
+    args = parser.parse_args()
+
+    urllist = args.urls.split()
+    numsw = args.numsw
+    numport = args.numport
+    addrate = args.addrate
+    delrate = args.delrate
+    duration = args.duration
+    setLogLevel( 'info' )
+    swlist = createSwPorts(numsw,numport)
+    telapse,count = loadsw(urllist, swlist, addrate, delrate, duration)
+    print ("Total number of switches connected/disconnected: " + str(count) + "; Total events generated: " + str(count * (2 + numport)) + "; Elalpse time: " + str('%.1f' %telapse))
+    print ("Effective aggregated loading is: " + str('%.1f' %((( count * (2+ numport))) / telapse ) ) + "Events/s.")
+    cleanMN()
+
+if __name__ == '__main__':
+    main()
diff --git a/TestON/dependencies/loadgen_SB.sh b/TestON/dependencies/loadgen_SB.sh
deleted file mode 100755
index 41b12fd..0000000
--- a/TestON/dependencies/loadgen_SB.sh
+++ /dev/null
@@ -1,153 +0,0 @@
-#!/bin/bash
-'''
-This is the southbound load generator to generator topology events for tests, such as scale-out and performance testing. 
-Example command: ./loadgen_SB.sh startload "1.1.1.1:6633 2.2.2.2:6633" 100 4 100 300 11 - will have 100 switches RR connection to the list of controllers. There will be 4 dataplane ports per switch; switch connection rate (aggregated) is 100 switch/second; duration is 300 seconds; "11" is used as part of the dpid to distinguish switch generated from multiple instances of this generator. Switch disconnnect will use "127.0.0.1:10000" as its connection." 
-'''
-
-case "$1" in
-	addsw)
-		numsw=$2
-		;;
-	delsw)
-		numsw=$2
-        ;;
-    startload)
-		list_ctrl=$2;numsw=$3;numport=$4;rate=$5;duration=$6;prefix_dpid=$7
-        sleeptimer=$(echo "scale=4; (1/$rate)"|bc)
-        ;;
-    chksw)
-		numsw=$2
-        ;;
-    *)
-        #echo "Enter action:"
-        #echo "addsw number_switches - addsw 200"
-        #echo "delsw number_switches - delsw 200"
-        echo "startload list of controllers numsw numportPerSW rate(#/s) duration(s) dpid_prefix - startload "1.1.1.1 2.2.2.2 3.3.3.3" 100 4 10 300 11  #switches will be evenly spread to those controllers"
-		echo "prefix_dpid is the first two octect of dpid in hex, such as "11", or "aa"."
-		echo "This command will first add numb_of_switches to OVSDB; then generate the load as configured; when finished, delete all switches from OVSDB."
-        #echo "chsw num_switches - chsw 200 #get all switches and their current controller connection"
-        exit 1
-esac
-
-add-ovs () 
-{
-	for ((i=1;i<=$numsw;i++))
-    	do      
-    		str=$(printf '%014X' $i); dpid=$prefix_dpid$str
-			echo "adding ovs switch s$i"
-        	sudo ovs-vsctl add-br "s"$i
-			sudo ovs-vsctl set bridge "s"$i other-config:datapath-id=$dpid
-            
-            #echo "adding $numport dataplane ports to switch s$i ... "
-			for ((p=1; p<=$numport; p++))
-				do
-				echo "adding port $p to switch s$i ... "
-				sudo ovs-vsctl add-port "s"$i "s"$i"p"$p
-            done
-	done
-}
-
-del-ovs () 
-{
-	for ((i=1;i<=$numsw;i++))
-        do
-                #echo "deleting ovs switch s$i"
-                sudo ovs-vsctl del-br "s"$i 
-        done
-}
-
-conn-ovs () 
-{
-	i=1
-	while (($i<=$numsw)) 
-	do 
-		for ctrl_port in ${list_ctrl[@]}
-		do
-			if (($i!=0))
-			then
-				#ovsctrl="tcp:"$ctrl_port
-				#echo  "s"$i
-				sudo ovs-vsctl --no-wait --no-syslog set-controller "s"$i "tcp:"$ctrl_port & 
-				let i+=1
-				sleep $sleeptimer
-			fi
-		done
-	done
-}
-
-disconn-ovs () 
-{
-	i=1
-    while (($i<=$numsw)) 
-    do
-		ovsctrl="tcp:127.0.0.1:10000"
-        #echo  "s"$i
-        sudo ovs-vsctl --no-wait set-controller "s"$i $ovsctrl &
-        let i+=1
-        sleep $sleeptimer
-    done
-}
-
-get-ovs ()
-{
-    i=$numsw
-    while (($i>0)) 
-    do
-        echo "s"$i
-		sudo ovs-vsctl get-controller "s"$i
-        let i-=1
-    done
-
-}
-
-loadsw ()
-{
-	echo "adding $numsw ovs switches..."
-	add-ovs
-
-	echo "starting to generate south bound load ...."
-    	let "roundtime = numsw / rate"
-	#let "iter = duration / roundtime / 2 "
-    iter=1
-	echo "Running load for $duration seconds..."
-    start=$(date +%s )
-	time while [[ $(( $(date +%s) - start )) -lt $duration ]]
-    do
-		#echo "start time is: $start"
-		#echo "current time is: $(date +%s)"
-  		#echo "diff is: $(($(date +%s) - $start ))"
-		time conn-ovs; echo "Number of switches connected: $numsw. Events generated: $(( ($numport + 2) * $numsw )) - each switch added generates one switch event, one default port event, and $numport dataplane port events."
-		time disconn-ovs; echo "Number of switches disconnected: $numsw. Events generated: $(( ($numport + 2) * $numsw )) - each switch added generates one switch event, one default port event, and $numport dataplane port events."
-		let "iter = iter + 1"
-	done
-    echo "Iteration is: $iter"
-	let "total = (( iter * numsw * (numport + 2))) "
-	echo "************************** "
-    echo "Total number of switches connected/disconnected: $(( iter * numsw * 2 )). Total events generated: $(( 2 * total)) - each switch added generates one switch event, one default port event, and $numport dataplane port events."
-	echo "**************************"
-	echo ""
-	echo "deleting $numsw ovs switches ..."
-	del-ovs
-}
-
-case "$1" in
-    addsw)
-        time add-ovs
-        ;;
-    delsw)
-        time del-ovs
-        ;;
-    startload)
-		echo $sleeptimer
-        time loadsw
-        ;;
-    chksw)
-        time get-ovs
-        ;;
-    #*)    
-    #exit 1
-esac
-
-
-
-
diff --git a/TestON/drivers/common/cli/emulator/mininetclidriver.py b/TestON/drivers/common/cli/emulator/mininetclidriver.py
index 1e7de39..7eeaaf8 100644
--- a/TestON/drivers/common/cli/emulator/mininetclidriver.py
+++ b/TestON/drivers/common/cli/emulator/mininetclidriver.py
@@ -775,7 +775,8 @@
         '''
         import sys
         sys.path.append("~/sts")
-        from sts.topology.teston_topology import TestONTopology # assumes that sts already in you PYTHONPATH
+        #NOTE: Create this once per Test and pass the TestONTopology object around. It takes too long to create this object.
+        #      This will make it easier to use the sts methods for severing links and solve that issue
         #import sts.entities.base as base
         import json
         topo = TestONTopology(self, onos_list)
@@ -802,7 +803,7 @@
         for switch in output['switches']:
             mnDPIDs.append(switch['dpid'])
         mnDPIDs.sort()
-        print mnDPIDs
+        #print mnDPIDs
         if onos_json == "":#if rest call fails
             main.log.error(self.name + ".compare_topo(): Empty JSON object given from ONOS rest call")
             return main.FALSE
@@ -811,7 +812,7 @@
         for switch in onos['switches']:
             onosDPIDs.append(switch['dpid'].replace(":",''))
         onosDPIDs.sort()
-        print onosDPIDs
+        #print onosDPIDs
 
         if mnDPIDs!=onosDPIDs:
             switch_results = main.FALSE
@@ -846,6 +847,9 @@
 
         #######Links########
         # iterate through MN links and check if and ONOS link exists in both directions
+        # NOTE: Will currently only show mn links as down if they are cut through STS. 
+        #       We can either do everything through STS or wait for up_network_links 
+        #       and down_network_links to be fully implemented.
         for link in topo.patch_panel.network_links: 
             #print "Link: %s" % link
             #TODO: Find a more efficient search method
@@ -894,14 +898,12 @@
 
         
         results =  switch_results and port_results and link_results
-        '''
-        if not results: #To print out both topologies
-            main.log.error("Topology comparison failed, printing json objects, MN then ONOS")
-            main.log.error(str(json.dumps(output, sort_keys=True,indent=4,separators=(',', ': '))))
-            main.log.error('MN Links:')
-            for link in topo.patch_panel.network_links: main.log.error(str("\tLink: %s" % link))
-            main.log.error(str(json.dumps(onos, sort_keys=True,indent=4,separators=(',', ': '))))
-        '''
+#        if not results: #To print out both topologies
+#            main.log.error("Topology comparison failed, printing json objects, MN then ONOS")
+#            main.log.error(str(json.dumps(output, sort_keys=True,indent=4,separators=(',', ': '))))
+#            main.log.error('MN Links:')
+#            for link in topo.patch_panel.network_links: main.log.error(str("\tLink: %s" % link))
+#            main.log.error(str(json.dumps(onos, sort_keys=True,indent=4,separators=(',', ': '))))
         return results
 
 
diff --git a/TestON/tests/scaleONOS7nodes/__init__.py b/TestON/tests/scaleONOS7nodes/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/tests/scaleONOS7nodes/__init__.py
diff --git a/TestON/tests/scaleONOS7nodes/logs/scale3nodesrate1 b/TestON/tests/scaleONOS7nodes/logs/scale3nodesrate1
new file mode 100644
index 0000000..9bf2f2d
--- /dev/null
+++ b/TestON/tests/scaleONOS7nodes/logs/scale3nodesrate1
@@ -0,0 +1,176 @@
+ONOS1 
+1	0.0	0.0	0.0	0.00239947245396
+ONOS2 
+1	0.0	0.0	0.0	0.00240234871667
+ONOS3 
+5	0.0	0.0	0.0	0.0121141862312
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+1629	18.7889293392	4.48449607458	1.54147719592	3.62505307741
+ONOS2 
+1629	19.2261277938	4.60475972875	1.58370323175	3.62941581988
+ONOS3 
+1629	17.8382714302	4.24867153003	1.459765156	3.66161718472
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+3183	31.2994548933	9.22645211247	3.29904481351	6.61046866244
+ONOS2 
+3183	32.7606424407	9.56283317479	3.41481907462	6.61796407638
+ONOS3 
+3183	31.5861689913	9.24594010149	3.30141569916	6.673448832
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+4842	39.9442818508	13.4074669965	4.93312182074	9.42788406221
+ONOS2 
+4842	39.9501179617	13.4738095108	4.96166898609	9.43793553665
+ONOS3 
+4842	38.0249857507	12.9562504618	4.77594497277	9.51213793959
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+6333	43.3326254024	17.1545676648	6.55334823824	11.6061812929
+ONOS2 
+6333	43.1025815278	17.1367790337	6.5530511963	11.6177361571
+ONOS3 
+6333	43.777667171	17.1929221224	6.55828955792	11.7036190253
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+7959	46.9561811449	20.4581350129	8.03528568305	13.7759524559
+ONOS2 
+7959	46.3408669423	20.4108823645	8.02922603097	13.7889504862
+ONOS3 
+7959	45.6410475294	20.1576242077	7.92726689795	13.8850824339
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+9531	45.9906744738	22.7715112677	9.24095510988	15.6290021503
+ONOS2 
+9531	48.055448081	23.2523557438	9.41177895671	15.6430625973
+ONOS3 
+9531	47.4942907039	23.4438740596	9.53345804013	15.746412627
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+11178	48.3540408864	25.9507802704	10.8600911453	17.4138152199
+ONOS2 
+11178	47.5616430096	25.8795464358	10.8505372729	17.4285967804
+ONOS3 
+11178	48.7458886411	25.9965007518	10.8666758121	17.5380150699
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+12694	49.6724719708	28.3431418559	12.1755703493	18.8343463719
+ONOS2 
+12694	49.0146328907	28.2907017805	12.1735446036	18.849661524
+ONOS3 
+12694	48.6960578175	28.1228412863	12.0936097846	18.9623561373
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+14292	48.8589089419	30.4653291422	13.5261901847	20.242085149
+ONOS2 
+14292	49.3030435553	30.5976153949	13.5848633365	20.2578017737
+ONOS3 
+14292	48.9109659895	30.4555207991	13.5139122893	20.3733211479
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+15855	49.2637510688	32.350154998	14.7329286521	21.479967821
+ONOS2 
+15855	48.80087594	32.2746234064	14.721362789	21.4958003475
+ONOS3 
+15855	49.7070084114	32.4071423037	14.741735047	21.6129479915
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+17479	49.7954667568	34.2769555101	16.0681836861	22.6938152648
+ONOS2 
+17479	48.5948066323	33.8055349065	15.8243597438	22.71001968
+ONOS3 
+17479	50.1286934521	34.3315901641	16.077099823	22.8287509266
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+18996	50.4089945863	35.8426346551	17.200968186	23.6775401881
+ONOS2 
+18996	49.8422938084	35.7578440385	17.1873611818	23.6935523664
+ONOS3 
+18996	48.7482979129	35.4720353826	17.0666482037	23.8124199695
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+20565	48.5587834324	36.7329685213	18.1159622539	24.647671921
+ONOS2 
+20565	48.3110087382	36.676081054	18.1094495228	24.6638443055
+ONOS3 
+20565	48.93297292	36.793631721	18.1262156419	24.7827468466
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+22167	49.0508150775	38.1245132609	19.3059350415	25.5841260816
+ONOS2 
+22170	48.5221636661	38.0385655774	19.2912194483	25.6036562614
+ONOS3 
+22171	48.5824052178	37.9982884305	19.2528429078	25.7236458284
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+23639	47.9777788333	38.8926943034	20.1868609754	26.308941697
+ONOS2 
+23639	48.1528601732	38.9174026097	20.2069767591	26.3249181854
+ONOS3 
+23639	48.3280130991	38.9561603833	20.1981646715	26.4427299331
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+25268	49.8567068142	40.3154609814	21.3906394143	27.1525946206
+ONOS2 
+25268	49.260910735	40.2252713754	21.3745229372	27.1686258006
+ONOS3 
+25268	48.6285982236	40.0672365492	21.2987719637	27.2860637996
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+26786	48.5713107436	40.8577368773	22.194671911	27.82491922
+ONOS2 
+26786	48.2099421547	40.7761299471	22.1790837949	27.8408111321
+ONOS3 
+26786	48.806830681	40.9159842596	22.2060400391	27.9570400311
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+28345	49.5354143965	41.7745390383	23.1196161385	28.4949893223
+ONOS2 
+28345	48.9994356563	41.7084318627	23.1119888217	28.5101088539
+ONOS3 
+28352	48.8058937866	41.7666073305	23.2132849025	28.6323389508
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+29429	42.7205926401	41.133551867	23.6205125079	28.6600165985
+ONOS2 
+29429	42.3177151851	41.0468840661	23.6034227045	28.6753451692
+ONOS3 
+29429	43.0359873942	41.1940339927	23.632692912	28.7876408357
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+29429	25.9113492373	37.219176866	22.8461399993	27.7919878574
+ONOS2 
+29429	25.6669917087	37.1407565968	22.8296104663	27.8064105758
+ONOS3 
+29429	26.1026458256	37.2739033564	22.8579210822	27.9119214291
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+29429	14.4594435488	33.1206670242	21.9747328469	26.9749583673
+ONOS2 
+29429	14.3230834597	33.0508822562	21.9588337904	26.9884033819
+ONOS3 
+29429	14.5661937683	33.1693671304	21.9860645708	27.0878504545
+
+--------------------------------------------------------------------------------- 
diff --git a/TestON/tests/scaleONOS7nodes/scale3nodesrate1 b/TestON/tests/scaleONOS7nodes/scale3nodesrate1
new file mode 100644
index 0000000..9caaa19
--- /dev/null
+++ b/TestON/tests/scaleONOS7nodes/scale3nodesrate1
@@ -0,0 +1,176 @@
+ONOS1 
+46	0.0159911170741	0.00330570923568	0.00110803039902	0.441388322918
+ONOS2 
+169	1.4232094196	0.294208121975	0.0986147055128	1.51983829287
+ONOS3 
+171	0.0	0.0	0.0	1.55826946014
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+1798	22.6349154776	5.65275867857	1.9589352278	12.3275451079
+ONOS2 
+1798	20.8145837636	5.10869633674	1.76466018187	12.4714931153
+ONOS3 
+1798	22.0791171081	5.47471756204	1.8948008043	12.6620550588
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+3426	32.6111034518	9.70067081694	3.47552137643	19.2298566624
+ONOS2 
+3426	34.2140340329	10.1493268369	3.63676115043	19.4125205852
+ONOS3 
+3426	33.2868110325	9.74024939592	3.48023473974	19.6519137751
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+5055	41.1154795596	14.3295561289	5.31573150012	24.0283473918
+ONOS2 
+5055	40.2618482051	13.877993799	5.13339673365	24.228413302
+ONOS3 
+5055	40.3643986592	14.0755662838	5.21932817392	24.4842903967
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+6648	44.0476719882	17.5652363011	6.72454316035	27.4144919114
+ONOS2 
+6648	42.837315358	17.4660161912	6.71183843666	27.6117430147
+ONOS3 
+6660	44.6253917733	17.5746713259	6.71339463557	27.9185886652
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+8223	45.5204851503	20.4781124794	8.08545718874	29.9446955545
+ONOS2 
+8223	47.0478790956	20.9180018605	8.25491048977	30.134904835
+ONOS3 
+8223	46.0539241762	20.9125541798	8.28383012594	30.3823258358
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+9761	48.2472730422	23.9163379895	9.74938162547	31.8260874816
+ONOS2 
+9761	47.8554206671	23.5746897161	9.5837979702	32.0069787799
+ONOS3 
+9761	47.9086582813	23.7657314867	9.68161495588	32.2419983542
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+11390	48.2977231982	26.23623474	11.0124446377	33.6205734759
+ONOS2 
+11390	48.6817460585	26.4263736828	11.1034039314	33.7938746975
+ONOS3 
+11390	48.9914985281	26.3026447756	11.0160590425	34.0180954514
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+13019	49.5587788244	28.9609886715	12.535952061	35.1042945838
+ONOS2 
+13019	49.7703686117	28.7704010275	12.4112682408	35.2671782942
+ONOS3 
+13019	48.3486366824	28.6472976101	12.4114088561	35.4806994928
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+14618	49.576578555	30.8922696843	13.7378230586	36.2757731409
+ONOS2 
+14618	48.5440020686	30.7811465304	13.7316956109	36.4328337041
+ONOS3 
+14618	49.4866717797	30.8087248031	13.6891587016	36.6357205954
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+16187	49.4907941638	32.9074922652	15.0888963838	37.2077993376
+ONOS2 
+16187	49.6285423582	32.7484269078	14.9693742032	37.3552104338
+ONOS3 
+16187	48.8755660723	32.7250364726	15.0063681262	37.5478060295
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+17725	49.8836746982	34.5479805791	16.2364648337	37.9435104425
+ONOS2 
+17725	48.99884514	34.4732673007	16.246116043	38.0836022622
+ONOS3 
+17725	49.4211281632	34.4116883879	16.1694233436	38.2662174542
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+19354	49.8626223455	35.9745646504	17.3266700853	38.7671511869
+ONOS2 
+19354	48.4587733895	35.7738406011	17.2944948224	38.9024055739
+ONOS3 
+19354	49.6238625297	36.107629579	17.4523301701	39.0742037951
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+20949	48.7735412886	37.2334176044	18.4738354902	39.4261732644
+ONOS2 
+20949	49.2808245039	37.2112430739	18.3974292802	39.5555564351
+ONOS3 
+20949	49.0412343145	37.2603304894	18.4613220964	39.7222890977
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+22518	49.2233054229	38.459058778	19.5122554055	39.9666332511
+ONOS2 
+22518	49.3199190997	38.5500864358	19.5788242673	40.0902311981
+ONOS3 
+22518	48.5868586294	38.3006063004	19.437642791	40.2494766808
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+24059	49.2130863162	39.6417956777	20.6446125264	40.4016538809
+ONOS2 
+24059	48.8272590697	39.4712361736	20.518926366	40.5198056741
+ONOS3 
+24059	48.7738335012	39.5215088361	20.5824985986	40.6715650211
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+25687	48.7438034983	40.4560575512	21.5487100295	40.9303516742
+ONOS2 
+25687	49.5471148575	40.6750208451	21.6586836347	41.0440523285
+ONOS3 
+25687	49.5528136103	40.5962066501	21.5740317285	41.1905085161
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+27208	48.3440895308	41.1892039746	22.4234679597	41.246260379
+ONOS2 
+27208	49.7248389814	41.5217226735	22.5714921035	41.3552443508
+ONOS3 
+27208	48.9489326527	41.4186969689	22.5835508207	41.4954641517
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+28764	48.636023504	42.0763468157	23.4482599273	41.5834003461
+ONOS2 
+28764	49.5204659279	42.2043214958	23.4251146139	41.6880977866
+ONOS3 
+28764	48.7203412028	42.0949248759	23.4349162749	41.822682997
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+29669	41.3110354992	41.1541779314	23.753983268	40.9907471033
+ONOS2 
+29669	40.0637318705	40.9112993447	23.707965358	41.0894107566
+ONOS3 
+29669	41.8871662556	41.2877306835	23.7807095826	41.2163432863
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+29669	23.0530097167	36.6223527412	22.847948773	39.2515156116
+ONOS2 
+29669	24.299881722	37.0180744675	22.9307258039	39.3420203293
+ONOS3 
+29669	23.3745109274	36.7411989007	22.8736556812	39.4584630811
+
+--------------------------------------------------------------------------------- 
+ONOS1 
+29669	13.9823571918	33.1372750967	22.0989039162	37.6540346
+ONOS2 
+29669	13.5601880389	32.9417096657	22.0560923439	37.7370627214
+ONOS3 
+29669	14.1773575332	33.2448115489	22.1237680517	37.8440976097
+
+--------------------------------------------------------------------------------- 
diff --git a/TestON/tests/scaleONOS7nodes/scaleONOS7nodes.params b/TestON/tests/scaleONOS7nodes/scaleONOS7nodes.params
new file mode 100644
index 0000000..d485ee8
--- /dev/null
+++ b/TestON/tests/scaleONOS7nodes/scaleONOS7nodes.params
@@ -0,0 +1,78 @@
+<PARAMS>
+    <testcases>1,2</testcases>
+    <tcpdump> 
+        <intf>eth0</intf>
+        <port>port 6633</port>
+        <filename>~/packet_captures/Sanity.pcap</filename>
+    </tcpdump>
+    <CASE1>       
+        <destination>h6</destination>
+        <target>h40</target>
+    </CASE1>       
+    <PING>
+        <source1>h7</source1>
+        <target1>h32</target1>
+        <source2>h8</source2>
+        <target2>h33</target2>
+    </PING>
+    <LINK>
+        <begin>s1</begin>
+        <end>s2</end>
+    </LINK>
+    <YANK>
+        <hostname>h1</hostname>
+        <hostip>10.0.0.1</hostip>
+        <hostmac>00:00:00:00:00:01</hostmac>
+	<sw1>s1</sw1>
+        <sw6>s6</sw6>
+        <intf>s1-eth1</intf>
+    </YANK>
+    <PLUG>
+        <intf>s1-eth1</intf>
+	<sw6>s6</sw6>
+	<sw1>s1</sw1>
+    </PLUG>
+    <CTRL>
+        <ip1>10.128.10.1</ip1>
+        <port1>6633</port1>
+        <ip2>10.128.10.2</ip2>
+        <port2>6633</port2>
+        <ip3>10.128.10.3</ip3>
+        <port3>6633</port3>
+        <ip4>10.128.10.4</ip4>
+        <port4>6633</port4>
+        <ip5>10.128.10.5</ip5>
+        <port5>6633</port5>
+        <ip6>10.128.10.6</ip6>
+        <port6>6633</port6>
+        <ip7>10.128.10.7</ip7>
+        <port7>6633</port7>
+    </CTRL>
+    <INTENTREST>
+        <intentIP>10.128.10.1</intentIP>
+        <intentPort>8080</intentPort>
+        <intentURL>wm/onos/intent/high</intentURL>
+    </INTENTREST>
+    <RestIP>10.128.10.1</RestIP>
+    <RestIP2>10.128.10.2</RestIP2>
+    <RestIP3>10.128.10.3</RestIP3>
+    <RestIP4>10.128.10.4</RestIP4>
+    <RestIP5>10.128.10.5</RestIP5>
+    <RestIP6>10.128.10.6</RestIP6>
+    <RestIP7>10.128.10.7</RestIP7>
+    <NR_Switches>25</NR_Switches>
+    <NR_Links>50</NR_Links>
+    <RESTCALL>
+	<restIP1>10.128.10.1</restIP1>
+	<restIP2>10.128.10.2</restIP2>
+	<restPort>8080</restPort>
+	<restURL>/wm/onos/topology/hosts</restURL>
+    </RESTCALL>
+    <switches_num>50</switches_num>
+    <RATE1>30</RATE1>
+    <RATE2>50</RATE2>
+    <RUN_DUR>600</RUN_DUR>
+    <sleep_t>32</sleep_t>
+    <loop>22</loop>
+    <port>10</port>
+</PARAMS>      
diff --git a/TestON/tests/scaleONOS7nodes/scaleONOS7nodes.py b/TestON/tests/scaleONOS7nodes/scaleONOS7nodes.py
new file mode 100644
index 0000000..e8a286e
--- /dev/null
+++ b/TestON/tests/scaleONOS7nodes/scaleONOS7nodes.py
@@ -0,0 +1,771 @@
+class scaleONOS7nodes :
+
+
+
+    def __init__(self) :
+        self.default = ''
+
+#        def print_hello_world(self,main):
+#            print("hello world")
+#*****************************************************************************************************************************************************************************************
+#Test startup
+#Tests the startup of Zookeeper1, RamCloud1, and ONOS1 to be certain that all started up successfully
+    def CASE1(self,main) :  #Check to be sure ZK, Cass, and ONOS are up, then get ONOS version
+        main.case("Initial setup")
+        main.step("Stop ONOS")
+        import time
+        main.ONOS1.stop_all()
+        main.ONOS2.stop_all()
+        main.ONOS3.stop_all()
+#        main.print_hello_world()
+        main.ONOS4.stop_all()
+       # main.ONOS5.stop_all()
+       # main.ONOS6.stop_all()
+       # main.ONOS7.stop_all()
+        main.ONOS2.stop_rest()
+        #main.ONOS1.handle.sendline("cp ~/onos.properties.proactive ~/ONOS/conf/onos.properties")
+        #main.ONOS2.handle.sendline("cp ~/onos.properties.proactive ~/ONOS/conf/onos.properties")
+        #main.ONOS3.handle.sendline("cp ~/onos.properties.proactive ~/ONOS/conf/onos.properties")
+        #main.ONOS4.handle.sendline("cp ~/onos.properties.proactive ~/ONOS/conf/onos.properties")        
+        #main.step("Start tcpdump on mn")
+        #main.Mininet2.start_tcpdump(main.params['tcpdump']['filename'], intf = main.params['tcpdump']['intf'], port = main.params['tcpdump']['port'])
+        main.step("Start ONOS")
+        main.Zookeeper1.start()
+        main.Zookeeper2.start()
+        main.Zookeeper3.start()
+        main.Zookeeper4.start()
+        time.sleep(5)
+        
+        
+        main.RamCloud1.del_db()
+        main.RamCloud2.del_db()
+        main.RamCloud3.del_db()
+        main.RamCloud4.del_db()
+
+        time.sleep(5)
+        #main.log.report("Pulling latest code from github to all nodes")
+          
+        """
+        for i in range(2):
+            uptodate = main.ONOS1.git_pull()
+            main.ONOS2.git_pull()
+            main.ONOS3.git_pull()
+        #    main.ONOS4.git_pull()
+            ver1 = main.ONOS1.get_version()
+            ver2 = main.ONOS3.get_version()
+            if ver1==ver2:
+                break
+            elif i==1:
+                main.ONOS2.git_pull("ONOS1 master")
+                main.ONOS3.git_pull("ONOS1 master")
+               # main.ONOS4.git_pull("ONOS1 master")
+        if uptodate==0:
+       # if 1:
+            main.ONOS1.git_compile()
+            main.ONOS2.git_compile()
+            main.ONOS3.git_compile()
+           # main.ONOS4.git_compile()
+        main.ONOS1.print_version()    
+       # main.RamCloud1.git_pull()
+       # main.RamCloud2.git_pull()
+       # main.RamCloud3.git_pull()
+       # main.RamCloud4.git_pull()
+       # main.ONOS1.get_version()
+       # main.ONOS2.get_version()
+       # main.ONOS3.get_version()
+       # main.ONOS4.get_version()
+       # main.ONOS1.start_all()
+       # main.ONOS2.start_all()
+       # main.ONOS3.start_all()
+       # main.ONOS4.start_all()
+
+        """
+        main.RamCloud1.start_coor()
+        main.RamCloud1.start_serv()
+        main.RamCloud2.start_serv()
+        main.RamCloud3.start_serv()
+        #main.RamCloud4.start_serv()
+
+        main.ONOS1.start()
+        main.ONOS2.start()
+        main.ONOS3.start()
+        #main.ONOS4.start()
+
+
+
+        main.ONOS1.start_rest()
+        main.ONOS2.start_rest()
+        main.ONOS3.start_rest()
+        test= main.ONOS2.rest_status()
+        if test == main.FALSE:
+            main.ONOS1.start_rest()
+        main.ONOS1.get_version()
+        main.log.report("Startup check Zookeeper1, RamCloud1, and ONOS1 connections")
+        main.step("Testing startup Zookeeper")   
+        data =  main.Zookeeper1.isup() and main.Zookeeper2.isup() and main.Zookeeper3.isup()
+        utilities.assert_equals(expect=main.TRUE,actual=data,onpass="Zookeeper is up!",onfail="Zookeeper is down...")
+        
+        main.step("Testing startup RamCloud")   
+        data =  main.RamCloud1.status_serv() and main.RamCloud2.status_serv() and main.RamCloud3.status_serv() #and main.RamCloud4.status_serv()
+        if data == main.FALSE:
+            main.RamCloud1.stop_coor()
+            main.RamCloud1.stop_serv()
+            main.RamCloud2.stop_serv()
+            main.RamCloud3.stop_serv()
+        #    main.RamCloud4.stop_serv()
+
+            time.sleep(5)
+            main.RamCloud1.start_coor()
+            main.RamCloud1.start_serv()
+            main.RamCloud2.start_serv()
+            main.RamCloud3.start_serv()
+         #   main.RamCloud4.start_serv()
+            time.sleep(5)
+            data =  main.RamCloud1.status_serv() and main.RamCloud2.status_serv() and main.RamCloud3.status_serv() #and main.RamCloud4.status_serv()
+            
+
+        
+        utilities.assert_equals(expect=main.TRUE,actual=data,onpass="RamCloud is up!",onfail="RamCloud is down...")
+        
+        main.step("Testing startup ONOS")   
+        data = main.ONOS1.isup() and main.ONOS2.isup() and main.ONOS3.isup() #and main.ONOS4.isup()
+        for i in range(3):
+            if data == main.FALSE: 
+                #main.log.report("Something is funny... restarting ONOS")
+                #main.ONOS1.stop()
+                time.sleep(3)
+                #main.ONOS1.start()
+                #time.sleep(5) 
+                data = main.ONOS1.isup() and main.ONOS2.isup() and main.ONOS3.isup() #and main.ONOS4.isup()
+            else:
+                break
+        utilities.assert_equals(expect=main.TRUE,actual=data,onpass="ONOS is up and running!",onfail="ONOS didn't start...")
+        time.sleep(10)
+
+
+    def CASE2(self,main) :
+        ip1 = main.params['CTRL']['ip1']
+        ip2 = main.params['CTRL']['ip2']
+        ip3 = main.params['CTRL']['ip3']
+        rate1 = main.params['RATE1']
+        run_dur = main.params['RUN_DUR']
+        loop = int( main.params['loop'])
+        port = main.params['port']
+        switches_num = main.params['switches_num']
+        print loop
+        sleep_t =int( main.params['sleep_t'])
+        main.case("Starting SB load on 3 nodes from mininet with " + rate1 +"  added/removed/s for " + run_dur)
+        main.Mininet2.handle.sendline("./loadgen_SB.sh startload \"" + ip1 + " " + ip2 + " " + ip3 + "\"" + " " + switches_num + " " + port +  " " + rate1 + " " + run_dur +  "  \"11\"")
+        main.Mininet2.handle.expect("starting to generate south bound load ....", timeout=400)
+        import time
+        import json
+        open("/home/admin/TestON/tests/scaleONOS7nodes/logs/scale3nodesrate1", 'w').close()
+        url1 = "http://10.128.10.1:8080/wm/onos/metrics"
+        url2 = "http://10.128.10.2:8080/wm/onos/metrics"
+        url3 = "http://10.128.10.3:8080/wm/onos/metrics"
+        f = open("/home/admin/TestON/tests/scaleONOS7nodes/logs/scale3nodesrate1", "a")
+        #time.sleep(10)
+        for i in range(int (loop)):
+            json_str1 = main.ONOS1.get_json(url1)
+            json_str2 = main.ONOS2.get_json(url2)
+            json_str3 = main.ONOS3.get_json(url3)
+            if json_str1 != "" and json_str2 != "" and json_str3 != "":
+                # write_str = str(json_str["meters"][4]["meter"][2])
+                #print str(json_str["meters"][4])
+                #f.write(str(json_str["meters"][4]))
+                #f.write('\n')
+                #time.sleep(3)
+                f.write("ONOS1 \n")
+                f.write(str(json_str1["meters"][4]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][4]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][4]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][4]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][4]['meter']['mean_rate']))
+                f.write('\n')
+                f.write("ONOS2 \n")
+                f.write(str(json_str2["meters"][4]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][4]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][4]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][4]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][4]['meter']['mean_rate']))
+                f.write('\n')
+                f.write("ONOS3 \n")
+                f.write(str(json_str3["meters"][4]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][4]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][4]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][4]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][4]['meter']['mean_rate']))
+                f.write('\n')
+                f.write('\n')
+                
+                f.write("--------------------------------------------------------------------------------- \n") 
+                time.sleep(sleep_t)
+        f.close() 
+        main.Mininet2.handle.expect("\$", timeout=900)
+       # main.Mininet2.handle.sendline("sudo mn -c")
+        #main.Mininet2.handle.expect("\$")
+        time.sleep(5)
+       # main.Mininet2.handle.expect("\$", timeout=900)
+        
+
+    def CASE3(self,main):
+        ip1 = main.params['CTRL']['ip1']
+        ip2 = main.params['CTRL']['ip2']
+        ip3 = main.params['CTRL']['ip3']
+        import time
+        rate2 = main.params['RATE2']
+        run_dur = main.params['RUN_DUR']
+        loop = int(main.params['loop'])
+        sleep_t = int(main.params['sleep_t'])
+        port = main.params['port']
+        switches_num = main.params['switches_num']
+        main.case("Starting SB load on 3 nodes from mininet with " + rate2 +"  added/removed/s for " + run_dur)
+        main.Mininet2.handle.sendline("./loadgen_SB.sh startload \"" + ip1 + " " + ip2 + " " + ip3 + "\"" + " " + switches_num + " " + port + " " + rate2 + " " + run_dur +  "  \"11\"")
+       #main.Mininet2.handle.sendline("./loadgen_SB.sh startload \"10.128.10.1\" 100 50 1200 \"11\"")
+        main.Mininet2.handle.expect("starting to generate south bound load ....", timeout=900 )
+        
+        import json
+        
+        open("/home/admin/TestON/tests/scaleONOS7nodes/logs/scale3nodesrate2", 'w').close()
+        url1 = "http://10.128.10.1:8080/wm/onos/metrics"
+        url2 = "http://10.128.10.2:8080/wm/onos/metrics"
+        url3 = "http://10.128.10.3:8080/wm/onos/metrics"
+        f = open("/home/admin/TestON/tests/scaleONOS7nodes/logs/scale3nodesrate2", "a")
+        #time.sleep(10)
+        for i in range(int (loop)):
+            json_str1 = main.ONOS1.get_json(url1)
+            json_str2 = main.ONOS2.get_json(url2)
+            json_str3 = main.ONOS3.get_json(url3)
+            if json_str1 != "" and json_str2 != "" and json_str3 != "":
+                # write_str = str(json_str["meters"][4]["meter"][2])
+                #print str(json_str["meters"][4])
+                #f.write(str(json_str["meters"][4]))
+                #f.write('\n')
+                #time.sleep(3)
+                f.write("ONOS1 \n")
+                f.write(str(json_str1["meters"][4]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][4]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][4]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][4]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][4]['meter']['mean_rate']))
+                f.write('\n')
+                f.write("ONOS2 \n")
+                f.write(str(json_str2["meters"][4]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][4]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][4]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][4]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][4]['meter']['mean_rate']))
+                f.write('\n')
+                f.write("ONOS3 \n")
+                f.write(str(json_str3["meters"][4]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][4]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][4]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][4]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][4]['meter']['mean_rate']))
+                f.write('\n')
+                f.write('\n')
+                f.write("--------------------------------------------------------------------------------- \n") 
+                time.sleep(sleep_t)
+        f.close()
+        main.Mininet2.handle.expect("\$", timeout=900)
+       # main.Mininet2.handle.sendline("sudo mn -c")
+        #time.sleep(5)
+       # main.Mininet2.handle.expect("\$", timeout=900)
+
+
+    def CASE4(self,main):
+        
+        main.case("Starting NB Throughput test")
+        ip1 = main.params['CTRL']['ip1']
+        ip2 = main.params['CTRL']['ip2']
+        ip3 = main.params['CTRL']['ip3']
+        import time
+        import json
+
+        main.Mininet4.handle.expect("\$")
+        #main.Mininet2.handle.sendline("sudo mn --custom topo-intentTPtest.py --topo mytopo --mac --arp")
+        #main.Mininet2.handle.expect("mininet>" , timeout=400)
+        main.Mininet4.handle.sendline("sudo ovs-vsctl set-controller s1 tcp:10.128.10.1:6633")
+        main.Mininet4.handle.sendline("sudo ovs-vsctl set-controller s2 tcp:10.128.10.1:6633")
+        main.Mininet4.handle.sendline("sudo ovs-vsctl set-controller s3 tcp:10.128.10.2:6633")
+        main.Mininet4.handle.sendline("sudo ovs-vsctl set-controller s4 tcp:10.128.10.2:6633")
+        main.Mininet4.handle.sendline("sudo ovs-vsctl set-controller s5 tcp:10.128.10.3:6633")
+        main.Mininet4.handle.sendline("sudo ovs-vsctl set-controller s6 tcp:10.128.10.3:6633")
+        main.Mininet4.handle.sendline("sudo ovs-vsctl set-controller s7 tcp:10.128.10.3:6633")
+
+        main.ONOS3.handle.sendline("cd ~admin/suibin-dev")
+        main.ONOS3.handle.expect("\$")
+
+        main.ONOS3.handle.sendline("./multiLoadgen_NB.py -u \"10.128.10.1:8080 10.128.10.2:8080 10.128.10.3:8080 \" -i 4 -g 100 -a 1 -d 1 -p 0")
+        main.ONOS3.handle.expect("intent group is : 0", timeout=900)
+
+        
+        import json
+        
+        open("/home/admin/TestON/tests/scaleONOS7nodes/logs/NBscale3nodesrate1", 'w').close()
+        url1 = "http://10.128.10.1:8080/wm/onos/metrics"
+        url2 = "http://10.128.10.2:8080/wm/onos/metrics"
+        url3 = "http://10.128.10.3:8080/wm/onos/metrics"
+        f = open("/home/admin/TestON/tests/scaleONOS7nodes/logs/NBscale3nodesrate1", "a")
+        #time.sleep(10)
+        for i in range(8):
+            json_str1 = main.ONOS1.get_json(url1)
+            json_str2 = main.ONOS2.get_json(url2)
+            json_str3 = main.ONOS3.get_json(url3)
+            if json_str1 != "" and json_str2 != "" and json_str3 != "":
+                f.write("ONOS1......IncomingRate \n ")
+                f.write(str(json_str1["meters"][0]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][0]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][0]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][0]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][0]['meter']['mean_rate']))
+                f.write('\n')
+                f.write("ONOS2......IncomingRate \n")
+                f.write(str(json_str2["meters"][0]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][0]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][0]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][0]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][0]['meter']['mean_rate']))
+                f.write('\n')
+                f.write("ONOS3......IncomingRate \n")
+                f.write(str(json_str3["meters"][0]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][0]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][0]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][0]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][0]['meter']['mean_rate']))
+                f.write('\n')
+                f.write('\n')
+
+                f.write("--------------------------------------------------------------------------------- \n") 
+                
+                f.write("ONOS1......ProcessingRate \n ")
+                f.write(str(json_str1["meters"][1]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][1]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][1]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][1]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][1]['meter']['mean_rate']))
+                f.write('\n')
+                f.write("ONOS2......ProcessingRate \n")
+                f.write(str(json_str2["meters"][1]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][1]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][1]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][1]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][1]['meter']['mean_rate']))
+                f.write('\n')
+                f.write("ONOS3......ProcessingRate \n")
+                f.write(str(json_str3["meters"][1]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][1]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][1]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][1]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][1]['meter']['mean_rate']))
+                f.write('\n')
+                f.write('\n')
+
+                f.write("--------------------------------------------------------------------------------- \n") 
+                time.sleep(10)
+        f.close()
+
+        main.ONOS3.handle.expect("\$", timeout=900)
+        
+    def CASE5(self,main):
+        
+        main.case("Starting ONOS scale-up to 4 nodes ")
+        import time
+       # main.RamCloud4.start_serv()
+        main.Zookeeper1.start()
+        main.ONOS4.start()
+        main.ONOS4.start_rest()
+        time.sleep(5)
+        data = main.ONOS1.isup() and main.ONOS2.isup() and main.ONOS3.isup() and main.ONOS4.isup()
+        for i in range(3):
+            if data == main.FALSE: 
+                #main.log.report("Something is funny... restarting ONOS")
+                #main.ONOS1.stop()
+                time.sleep(3)
+                #main.ONOS1.start()
+                #time.sleep(5) 
+                data = main.ONOS1.isup() and main.ONOS2.isup() and main.ONOS3.isup() and main.ONOS4.isup()
+            else:
+                break
+        utilities.assert_equals(expect=main.TRUE,actual=data,onpass="ONOS is up and running!",onfail="ONOS didn't start...")
+        time.sleep(10)
+
+    def CASE6(self,main):
+        
+        ip1 = main.params['CTRL']['ip1']
+        ip2 = main.params['CTRL']['ip2']
+        ip3 = main.params['CTRL']['ip3']
+        ip4 = main.params['CTRL']['ip4']
+        rate1 = main.params['RATE1']
+        run_dur = main.params['RUN_DUR']
+        loop = int( main.params['loop'])
+        switches_num = main.params['switches_num']
+        port = main.params['port']
+        print loop
+        sleep_t =int( main.params['sleep_t'])
+        main.case("Starting SB load on 4 nodes from mininet with " + rate1 +"  added/removed/s for " + run_dur)
+        main.Mininet2.handle.sendline("./loadgen_SB.sh startload \"" + ip1 + " " + ip2 + " " + ip3 + " " + ip4 + "\"" + " " + switches_num + " " + port + " " + rate1 + " " + run_dur +  "  \"11\"")
+        main.Mininet2.handle.expect("starting to generate south bound load ....", timeout=900)
+        import time
+        import json
+        open("/home/admin/TestON/tests/scaleONOS7nodes/logs/scale4nodesrate1", 'w').close()
+        url1 = "http://10.128.10.1:8080/wm/onos/metrics"
+        url2 = "http://10.128.10.2:8080/wm/onos/metrics"
+        url3 = "http://10.128.10.3:8080/wm/onos/metrics"
+        url4 = "http://10.128.10.4:8080/wm/onos/metrics"
+
+        f = open("/home/admin/TestON/tests/scaleONOS7nodes/logs/scale4nodesrate1", "a")
+        #time.sleep(10)
+        for i in range(int (loop)):
+            json_str1 = main.ONOS1.get_json(url1)
+            json_str2 = main.ONOS2.get_json(url2)
+            json_str3 = main.ONOS3.get_json(url3)
+            json_str4 = main.ONOS4.get_json(url4)
+            if json_str1 != "" and json_str2 != "" and json_str3 != "" and json_str4 != "":
+                # write_str = str(json_str["meters"][4]["meter"][2])
+                #print str(json_str["meters"][4])
+                #f.write(str(json_str["meters"][4]))
+                #f.write('\n')
+                #time.sleep(3)
+
+                f.write("ONOS1 \n")
+                f.write(str(json_str1["meters"][4]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][4]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][4]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][4]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][4]['meter']['mean_rate']))
+                f.write('\n')
+
+                f.write("ONOS2 \n")
+                f.write(str(json_str2["meters"][4]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][4]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][4]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][4]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][4]['meter']['mean_rate']))
+                f.write('\n')
+
+                f.write("ONOS3 \n")
+                f.write(str(json_str3["meters"][4]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][4]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][4]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][4]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][4]['meter']['mean_rate']))
+                f.write('\n')
+
+                f.write("ONOS4 \n")
+                f.write(str(json_str4["meters"][4]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str4["meters"][4]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str4["meters"][4]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str4["meters"][4]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str4["meters"][4]['meter']['mean_rate']))
+                f.write('\n')
+
+                f.write('\n')
+                
+                time.sleep(sleep_t)
+        f.close() 
+        #main.Mininet2.handle.expect("\$", timeout=900)
+        #main.Mininet2.handle.sendline("sudo mn -c")
+        #main.Mininet2.handle.expect("\$")
+        time.sleep(5)
+        main.Mininet2.handle.expect("\$", timeout=900)
+        
+
+    def CASE7(self,main):
+        
+        ip1 = main.params['CTRL']['ip1']
+        ip2 = main.params['CTRL']['ip2']
+        ip3 = main.params['CTRL']['ip3']
+        ip4 = main.params['CTRL']['ip4']
+        
+        import time
+        import json
+        rate2 = main.params['RATE2']
+        run_dur = main.params['RUN_DUR']
+        loop = int(main.params['loop'])
+        sleep_t = int(main.params['sleep_t'])
+        switches_num = main.params['sitches_num']
+        port = main.params['port']
+        main.case("Starting SB load on 4 nodes from mininet with " + rate2 +"  added/removed/s for " + run_dur)
+        main.Mininet2.handle.sendline("./loadgen_SB.sh startload \"" + ip1 + " " + ip2 + " " + ip3 + " " + ip4 +  "\"" + " " + switches_num + " " + port +  " " + rate2 + " " + run_dur +  "  \"11\"")
+        main.Mininet2.handle.expect("starting to generate south bound load ....", timeout=900 )
+        
+        open("/home/admin/TestON/tests/scaleONOS7nodes/logs/scale4nodesrate2", 'w').close()
+        url1 = "http://10.128.10.1:8080/wm/onos/metrics"
+        url2 = "http://10.128.10.2:8080/wm/onos/metrics"
+        url3 = "http://10.128.10.3:8080/wm/onos/metrics"
+        url4 = "http://10.128.10.4:8080/wm/onos/metrics"
+        f = open("/home/admin/TestON/tests/scaleONOS7nodes/logs/scale4nodesrate2", "a")
+        #time.sleep(10)
+        for i in range(int (loop)):
+            json_str1 = main.ONOS1.get_json(url1)
+            json_str2 = main.ONOS2.get_json(url2)
+            json_str3 = main.ONOS3.get_json(url3)
+            json_str4 = main.ONOS4.get_json(url4)
+            if json_str1 != "" and json_str2 != "" and json_str3 != "" and json_str4 != "":
+
+                f.write("ONOS1 \n")
+                f.write(str(json_str1["meters"][4]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][4]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][4]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][4]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][4]['meter']['mean_rate']))
+                f.write('\n')
+                
+                f.write("ONOS2 \n")
+                f.write(str(json_str2["meters"][4]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][4]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][4]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][4]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][4]['meter']['mean_rate']))
+                f.write('\n')
+                
+                f.write("ONOS3 \n")
+                f.write(str(json_str3["meters"][4]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][4]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][4]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][4]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][4]['meter']['mean_rate']))
+                f.write('\n')
+                
+                f.write("ONOS4 \n")
+                f.write(str(json_str4["meters"][4]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str4["meters"][4]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str4["meters"][4]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str4["meters"][4]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str4["meters"][4]['meter']['mean_rate']))
+                f.write('\n')
+
+                f.write('\n')
+                
+                time.sleep(sleep_t)
+        f.close()
+
+    def CASE8(self,main):
+        
+        main.case("Starting NB Throughput test after scaling up to 4 onos nodes")
+        ip1 = main.params['CTRL']['ip1']
+        ip2 = main.params['CTRL']['ip2']
+        ip3 = main.params['CTRL']['ip3']
+        ip4 = main.params['CTRL']['ip4']
+
+        import time
+        import json
+
+        main.Mininet4.handle.expect("\$")
+        #main.Mininet2.handle.sendline("sudo mn --custom topo-intentTPtest.py --topo mytopo --mac --arp")
+        #main.Mininet2.handle.expect("mininet>" , timeout=400)
+        main.Mininet4.handle.sendline("sudo ovs-vsctl set-controller s1 tcp:10.128.10.1:6633")
+        main.Mininet4.handle.sendline("sudo ovs-vsctl set-controller s2 tcp:10.128.10.2:6633")
+        main.Mininet4.handle.sendline("sudo ovs-vsctl set-controller s3 tcp:10.128.10.3:6633")
+        main.Mininet4.handle.sendline("sudo ovs-vsctl set-controller s4 tcp:10.128.10.4:6633")
+        main.Mininet4.handle.sendline("sudo ovs-vsctl set-controller s5 tcp:10.128.10.1:6633")
+        main.Mininet4.handle.sendline("sudo ovs-vsctl set-controller s6 tcp:10.128.10.2:6633")
+        main.Mininet4.handle.sendline("sudo ovs-vsctl set-controller s7 tcp:10.128.10.4:6633")
+
+        main.ONOS3.handle.sendline("cd ~admin/suibin-dev")
+        main.ONOS3.handle.expect("\$")
+
+        main.ONOS3.handle.sendline("./multiLoadgen_NB.py -u \"10.128.10.1:8080 10.128.10.2:8080 10.128.10.3:8080 10.128.10.4:8080  \" -i 4 -g 100 -a 1 -d 1 -p 0")
+        main.ONOS3.handle.expect("intent group is : 0", timeout=900)
+
+        
+        import json
+        
+        open("/home/admin/TestON/tests/scaleONOS7nodes/logs/NBscale4nodesrate1", 'w').close()
+        url1 = "http://10.128.10.1:8080/wm/onos/metrics"
+        url2 = "http://10.128.10.2:8080/wm/onos/metrics"
+        url3 = "http://10.128.10.3:8080/wm/onos/metrics"
+        url4 = "http://10.128.10.4:8080/wm/onos/metrics"
+        f = open("/home/admin/TestON/tests/scaleONOS7nodes/logs/NBscale4nodesrate1", "a")
+        #time.sleep(10)
+        for i in range(8):
+            json_str1 = main.ONOS1.get_json(url1)
+            json_str2 = main.ONOS2.get_json(url2)
+            json_str3 = main.ONOS3.get_json(url3)
+            json_str4 = main.ONOS4.get_json(url4)
+
+            if json_str1 != "" and json_str2 != "" and json_str3 != "":
+                f.write("ONOS1......IncomingRate \n ")
+                f.write(str(json_str1["meters"][0]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][0]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][0]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][0]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][0]['meter']['mean_rate']))
+                f.write('\n')
+                f.write("ONOS2......IncomingRate \n")
+                f.write(str(json_str2["meters"][0]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][0]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][0]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][0]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][0]['meter']['mean_rate']))
+                f.write('\n')
+                f.write("ONOS3......IncomingRate \n")
+                f.write(str(json_str3["meters"][0]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][0]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][0]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][0]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][0]['meter']['mean_rate']))
+                f.write('\n')
+                f.write("ONOS4......IncomingRate \n")
+                f.write(str(json_str4["meters"][0]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str4["meters"][0]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str4["meters"][0]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str4["meters"][0]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str4["meters"][0]['meter']['mean_rate']))
+                f.write('\n')
+                f.write('\n')
+
+                f.write("--------------------------------------------------------------------------------- \n") 
+                
+                f.write("ONOS1......ProcessingRate \n ")
+                f.write(str(json_str1["meters"][1]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][1]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][1]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][1]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str1["meters"][1]['meter']['mean_rate']))
+                f.write('\n')
+                f.write("ONOS2......ProcessingRate \n")
+                f.write(str(json_str2["meters"][1]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][1]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][1]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][1]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str2["meters"][1]['meter']['mean_rate']))
+                f.write('\n')
+                f.write("ONOS3......ProcessingRate \n")
+                f.write(str(json_str3["meters"][1]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][1]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][1]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][1]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str3["meters"][1]['meter']['mean_rate']))
+                f.write('\n')
+
+                f.write("ONOS4......ProcessingRate \n")
+                f.write(str(json_str4["meters"][1]['meter']['count']))
+                f.write('\t')
+                f.write(str(json_str4["meters"][1]['meter']['m1_rate']))
+                f.write('\t')
+                f.write(str(json_str4["meters"][1]['meter']['m5_rate']))
+                f.write('\t')
+                f.write(str(json_str4["meters"][1]['meter']['m15_rate']))
+                f.write('\t')
+                f.write(str(json_str4["meters"][1]['meter']['mean_rate']))
+                f.write('\n')
+
+                f.write('\n')
+
+                f.write("--------------------------------------------------------------------------------- \n") 
+       
+                time.sleep(10)
+        f.close()
+
+        main.ONOS3.handle.expect("\$", timeout=900)
+
diff --git a/TestON/tests/scaleONOS7nodes/scaleONOS7nodes.topo b/TestON/tests/scaleONOS7nodes/scaleONOS7nodes.topo
new file mode 100644
index 0000000..5a4f78c
--- /dev/null
+++ b/TestON/tests/scaleONOS7nodes/scaleONOS7nodes.topo
@@ -0,0 +1,258 @@
+<TOPOLOGY>
+
+    <COMPONENT>
+        <Zookeeper1>
+            <host>10.128.10.1</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>ZookeeperCliDriver</type>
+            <connect_order>1</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </Zookeeper1>
+
+        <Zookeeper2>
+            <host>10.128.10.2</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>ZookeeperCliDriver</type>
+            <connect_order>2</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </Zookeeper2>
+
+        <Zookeeper3>
+            <host>10.128.10.3</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>ZookeeperCliDriver</type>
+            <connect_order>3</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </Zookeeper3>
+       
+        <Zookeeper4>
+            <host>10.128.10.4</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>ZookeeperCliDriver</type>
+            <connect_order>4</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </Zookeeper4>
+
+        <Zookeeper5>
+            <host>10.128.10.5</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>ZookeeperCliDriver</type>
+            <connect_order>5</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </Zookeeper5>
+
+        <Zookeeper6>
+            <host>10.128.10.6</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>ZookeeperCliDriver</type>
+            <connect_order>6</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </Zookeeper6>
+
+        <Zookeeper7>
+            <host>10.128.10.7</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>ZookeeperCliDriver</type>
+            <connect_order>7</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </Zookeeper7>
+
+        <RamCloud1>
+            <host>10.128.10.1</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>RamCloudCliDriver</type>
+            <connect_order>8</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+       </RamCloud1>
+
+        <RamCloud2>
+            <host>10.128.10.2</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>RamCloudCliDriver</type>
+            <connect_order>9</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </RamCloud2>
+       
+        <RamCloud3>
+            <host>10.128.10.3</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>RamCloudCliDriver</type>
+            <connect_order>10</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </RamCloud3>
+       
+        <RamCloud4>
+            <host>10.128.10.4</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>RamCloudCliDriver</type>
+            <connect_order>11</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </RamCloud4>
+
+        <RamCloud5>
+            <host>10.128.10.5</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>RamCloudCliDriver</type>
+            <connect_order>12</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </RamCloud5>
+
+        <RamCloud6>
+            <host>10.128.10.6</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>RamCloudCliDriver</type>
+            <connect_order>13</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </RamCloud6>
+
+        <RamCloud7>
+            <host>10.128.10.7</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>RamCloudCliDriver</type>
+            <connect_order>14</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </RamCloud7>
+
+
+        <ONOS1>
+            <host>10.128.10.1</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosCliDriver</type>
+            <connect_order>15</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </ONOS1>
+
+        <ONOS2>
+            <host>10.128.10.2</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosCliDriver</type>
+            <connect_order>16</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </ONOS2>
+
+        <ONOS3>
+            <host>10.128.10.3</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosCliDriver</type>
+            <connect_order>17</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </ONOS3>
+       
+        <ONOS4>
+            <host>10.128.10.4</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosCliDriver</type>
+            <connect_order>18</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </ONOS4>
+
+        <ONOS5>
+            <host>10.128.10.5</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosCliDriver</type>
+            <connect_order>19</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </ONOS5>
+
+        <ONOS6>
+            <host>10.128.10.6</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosCliDriver</type>
+            <connect_order>20</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </ONOS6>
+
+        <ONOS7>
+            <host>10.128.10.7</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosCliDriver</type>
+            <connect_order>21</connect_order>
+            <COMPONENTS>
+             </COMPONENTS>
+        </ONOS7>
+
+         <Mininet2>
+            <host>10.128.10.90</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>RemoteMininetDriver</type>
+            <connect_order>23</connect_order>
+            <COMPONENTS>
+                # Specify the Option for mininet
+                <arg1> --custom topo-onos4node.py </arg1>
+                <arg2> --topo mytopo --arp</arg2>
+                <controller> remote </controller>
+             </COMPONENTS>
+        </Mininet2>
+        
+        <Mininet3>
+            <host>10.128.10.91</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>MininetCliDriver</type>
+            <connect_order>24</connect_order>
+            <COMPONENTS>
+                # Specify the Option for mininet
+                <arg1> --custom topo-intentTPtest.py </arg1>
+                <arg2> --topo mytopo --arp</arg2>
+                <controller> remote </controller>
+            </COMPONENTS>
+        </Mininet3>
+
+        <Mininet4>
+            <host>10.128.10.91</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>RemoteMininetDriver</type>
+            <connect_order>24</connect_order>
+            <COMPONENTS>
+                # Specify the Option for mininet
+                <arg1> --custom topo-onos4node.py </arg1>
+                <arg2> --topo mytopo --arp</arg2>
+                <controller> remote </controller>
+            </COMPONENTS>
+        </Mininet4>
+
+    </COMPONENT>
+</TOPOLOGY>
diff --git a/TestON/tests/scaleONOS7nodes/scaleResults b/TestON/tests/scaleONOS7nodes/scaleResults
new file mode 100644
index 0000000..2488306
--- /dev/null
+++ b/TestON/tests/scaleONOS7nodes/scaleResults
@@ -0,0 +1,51 @@
+[2014-07-25 15:15:35.933098] [scaleONOS7nodes] [CASE]  Starting SB load from mininet with 20sw added/removed 10/s duration: 360s
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 4, u'mean_rate': 0.059200312795650786, u'm5_rate': 0.0, u'm15_rate': 0.0, u'units': u'events/second', u'm1_rate': 0.0}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 189, u'mean_rate': 2.4356254535500663, u'm5_rate': 0.41843186533973237, u'm15_rate': 1.9369051806194815, u'units': u'events/second', u'm1_rate': 0.14129996658762756}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 305, u'mean_rate': 3.4808906901728482, u'm5_rate': 0.9457303370098417, u'm15_rate': 4.174524246234802, u'units': u'events/second', u'm1_rate': 0.3220664415995731}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 470, u'mean_rate': 4.813391854440621, u'm5_rate': 1.3653129541121973, u'm15_rate': 5.67074120039854, u'units': u'events/second', u'm1_rate': 0.47005007387755343}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 554, u'mean_rate': 5.145399853971431, u'm5_rate': 1.6878416231510096, u'm15_rate': 6.5221406321995365, u'units': u'events/second', u'm1_rate': 0.5886241207705653}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 670, u'mean_rate': 5.692871627444301, u'm5_rate': 1.9211151858691953, u'm15_rate': 6.874390831538807, u'units': u'events/second', u'm1_rate': 0.6793689049109783}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 782, u'mean_rate': 6.122985062753683, u'm5_rate': 2.298585202117126, u'm15_rate': 7.903041256773227, u'units': u'events/second', u'm1_rate': 0.8200558382406801}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 928, u'mean_rate': 6.737355933051502, u'm5_rate': 2.5440190839839243, u'm15_rate': 8.182751878849528, u'units': u'events/second', u'm1_rate': 0.9192254774790037}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 1068, u'mean_rate': 7.2277027669966225, u'm5_rate': 3.0582120448420502, u'm15_rate': 9.742318376899973, u'units': u'events/second', u'm1_rate': 1.1102756658184045}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 1178, u'mean_rate': 7.465643586983538, u'm5_rate': 3.3117994889825484, u'm15_rate': 9.89957751878761, u'units': u'events/second', u'm1_rate': 1.2173187929330158}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 1272, u'mean_rate': 7.579869789467111, u'm5_rate': 3.491942657341365, u'm15_rate': 9.73588659125985, u'units': u'events/second', u'm1_rate': 1.3011290230067005}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 1372, u'mean_rate': 7.714903896910294, u'm5_rate': 3.744533557606514, u'm15_rate': 9.958097598081375, u'units': u'events/second', u'm1_rate': 1.410495416418516}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 1502, u'mean_rate': 7.995257880751603, u'm5_rate': 3.9832156189264327, u'm15_rate': 10.137227344552151, u'units': u'events/second', u'm1_rate': 1.5165477887836256}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 1618, u'mean_rate': 8.17649661132665, u'm5_rate': 4.232923512725775, u'm15_rate': 10.361789679493679, u'units': u'events/second', u'm1_rate': 1.6279660102909048}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 1796, u'mean_rate': 8.638436983286626, u'm5_rate': 4.625961247189527, u'm15_rate': 11.274683186266738, u'units': u'events/second', u'm1_rate': 1.7890611156116576}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 1898, u'mean_rate': 8.70908577788645, u'm5_rate': 4.940218041617326, u'm15_rate': 11.732722831544308, u'units': u'events/second', u'm1_rate': 1.9262401293788511}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 2014, u'mean_rate': 8.834979322143473, u'm5_rate': 5.086044615238827, u'm15_rate': 11.36565719225259, u'units': u'events/second', u'm1_rate': 2.00877929586214}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 2096, u'mean_rate': 8.80741944058602, u'm5_rate': 5.23446678354358, u'm15_rate': 11.104825178674638, u'units': u'events/second', u'm1_rate': 2.092708438681387}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 2212, u'mean_rate': 8.919169787587151, u'm5_rate': 5.42342880661179, u'm15_rate': 11.087454018930082, u'units': u'events/second', u'm1_rate': 2.1911244042226627}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 2302, u'mean_rate': 8.921505549289213, u'm5_rate': 5.527733113130847, u'm15_rate': 10.709420105909206, u'units': u'events/second', u'm1_rate': 2.261958400590161}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 2424, u'mean_rate': 9.043024690304492, u'm5_rate': 5.7730856298958795, u'm15_rate': 11.070016034135019, u'units': u'events/second', u'm1_rate': 2.3806525506070884}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 2558, u'mean_rate': 9.198907190307924, u'm5_rate': 5.977993104861085, u'm15_rate': 11.230685676223507, u'units': u'events/second', u'm1_rate': 2.487028536364942}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 2652, u'mean_rate': 9.205141639750474, u'm5_rate': 6.102910924894121, u'm15_rate': 11.002099225101214, u'units': u'events/second', u'm1_rate': 2.567791053544984}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 2758, u'mean_rate': 9.251221641461491, u'm5_rate': 6.236628457203367, u'm15_rate': 10.864897965206772, u'units': u'events/second', u'm1_rate': 2.6520564660056722}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 2866, u'mean_rate': 9.300808867298466, u'm5_rate': 6.4461734461098965, u'm15_rate': 11.153003681875704, u'units': u'events/second', u'm1_rate': 2.7620817265483906}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 3000, u'mean_rate': 9.428962629183438, u'm5_rate': 6.549131070407777, u'm15_rate': 10.904360602384472, u'units': u'events/second', u'm1_rate': 2.837588952255399}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 3114, u'mean_rate': 9.488273497253953, u'm5_rate': 6.760779624902542, u'm15_rate': 11.22991528533686, u'units': u'events/second', u'm1_rate': 2.9498980541385973}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 3232, u'mean_rate': 9.555939548927737, u'm5_rate': 6.971335992976415, u'm15_rate': 11.519573501287377, u'units': u'events/second', u'm1_rate': 3.0630963037697176}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 3322, u'mean_rate': 9.539302128630185, u'm5_rate': 7.005059610420453, u'm15_rate': 10.979254648249038, u'units': u'events/second', u'm1_rate': 3.117647167706458}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 3426, u'mean_rate': 9.562668411317048, u'm5_rate': 7.168703957115292, u'm15_rate': 11.13340055572298, u'units': u'events/second', u'm1_rate': 3.2157814313436766}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 3556, u'mean_rate': 9.6553664830416, u'm5_rate': 7.30835119706793, u'm15_rate': 11.196064287702198, u'units': u'events/second', u'm1_rate': 3.3063182176268193}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 3690, u'mean_rate': 9.753744409437841, u'm5_rate': 7.436043897518086, u'm15_rate': 11.19922564971827, u'units': u'events/second', u'm1_rate': 3.3935526056733525}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 3862, u'mean_rate': 9.94485575877501, u'm5_rate': 7.716475942451841, u'm15_rate': 11.928560772404543, u'units': u'events/second', u'm1_rate': 3.5328121098263545}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 3962, u'mean_rate': 9.945657010947713, u'm5_rate': 7.921927978095857, u'm15_rate': 12.23377875835498, u'units': u'events/second', u'm1_rate': 3.6484090746318865}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 4074, u'mean_rate': 9.975814947863958, u'm5_rate': 8.00901532078311, u'm15_rate': 11.966342332818853, u'units': u'events/second', u'm1_rate': 3.7251416456063717}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 4156, u'mean_rate': 9.932800200694953, u'm5_rate': 8.054999692711906, u'm15_rate': 11.58131193842906, u'units': u'events/second', u'm1_rate': 3.7878895918323345}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 4290, u'mean_rate': 10.013202869430945, u'm5_rate': 8.197664300462709, u'm15_rate': 11.712109833999651, u'units': u'events/second', u'm1_rate': 3.8830746138276506}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 4372, u'mean_rate': 9.97133516767342, u'm5_rate': 8.191184093898045, u'm15_rate': 11.142233135267437, u'units': u'events/second', u'm1_rate': 3.928565036650824}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 4372, u'mean_rate': 9.748514038149732, u'm5_rate': 8.052687964347193, u'm15_rate': 10.02019824138421, u'units': u'events/second', u'm1_rate': 3.9292315920501197}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 4372, u'mean_rate': 9.535437429356055, u'm5_rate': 7.788689451274274, u'm15_rate': 8.481914691112806, u'units': u'events/second', u'm1_rate': 3.885815112583944}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 4372, u'mean_rate': 9.331367778702917, u'm5_rate': 7.533345838926838, u'm15_rate': 7.179785778108208, u'units': u'events/second', u'm1_rate': 3.842878368314098}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 4372, u'mean_rate': 9.135919987284627, u'm5_rate': 7.286373385909162, u'm15_rate': 6.077557449798136, u'units': u'events/second', u'm1_rate': 3.80041605835342}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 4372, u'mean_rate': 8.948532183901525, u'm5_rate': 7.047497652974929, u'm15_rate': 5.144541313226928, u'units': u'events/second', u'm1_rate': 3.758422940387489}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 4372, u'mean_rate': 8.76863771104249, u'm5_rate': 6.8164531980665, u'm15_rate': 4.354760204591356, u'units': u'events/second', u'm1_rate': 3.7168938300274155}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 4372, u'mean_rate': 8.59583194470271, u'm5_rate': 6.592983281351978, u'm15_rate': 3.6862249294674947, u'units': u'events/second', u'm1_rate': 3.6758236001697906}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 4372, u'mean_rate': 8.429632452341373, u'm5_rate': 6.37683957993232, u'm15_rate': 3.120322036630427, u'units': u'events/second', u'm1_rate': 3.635207180363701}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 4372, u'mean_rate': 8.269862736358995, u'm5_rate': 6.167781911901452, u'm15_rate': 2.6412955797811177, u'units': u'events/second', u'm1_rate': 3.595039556184744}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 4372, u'mean_rate': 8.115976079788764, u'm5_rate': 5.965577969452773, u'm15_rate': 2.2358084383190753, u'units': u'events/second', u'm1_rate': 3.5553157686159524}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 4372, u'mean_rate': 7.967761632050002, u'm5_rate': 5.770003060735474, u'm15_rate': 1.892570983393321, u'units': u'events/second', u'm1_rate': 3.516030913435567}}
+{u'name': u'Topology.EventNotification.ListenerEventRate', u'meter': {u'count': 4372, u'mean_rate': 7.8248239429659785, u'm5_rate': 5.580839860173803, u'm15_rate': 1.6020267505007044, u'units': u'events/second', u'm1_rate': 3.477180140611569}}
