Changes to the Drivers
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}}