Blackbird release
diff --git a/TestON/tests/IntentPerfNextBM/IntentPerfNextBM.params b/TestON/tests/IntentPerfNextBM/IntentPerfNextBM.params
index 194a783..f01f017 100644
--- a/TestON/tests/IntentPerfNextBM/IntentPerfNextBM.params
+++ b/TestON/tests/IntentPerfNextBM/IntentPerfNextBM.params
@@ -1,5 +1,5 @@
 <PARAMS>
-    <testcases>1,2,3,4,2,3,4,2,3,4,2,3</testcases>
+    <testcases>1,2,4,2,4,2,4,2</testcases>
 
     <ENV>
         <cellName>intent_perf_test</cellName>
@@ -49,6 +49,7 @@
         <numMult>1</numMult>
         #Interface to bring down for intent reroute case
         <intfs>s3-eth2</intfs>
+        <cellStr>webconsole,onos-core,onos-api,onos-app-metrics,onos-app-gui,onos-cli,onos-openflow</cellStr>
     </TEST>
 
     <DB>
diff --git a/TestON/tests/IntentPerfNextBM/IntentPerfNextBM.py b/TestON/tests/IntentPerfNextBM/IntentPerfNextBM.py
index 8f23b29..32477a6 100644
--- a/TestON/tests/IntentPerfNextBM/IntentPerfNextBM.py
+++ b/TestON/tests/IntentPerfNextBM/IntentPerfNextBM.py
@@ -23,6 +23,7 @@
         gitPull = main.params['GIT']['autoPull']
         checkoutBranch = main.params['GIT']['checkout']
         intentFilePath = main.params['DB']['intentFilePath']
+        cellStr = main.params[ 'TEST' ][ 'cellStr' ]
         ONOSIp = []
         
         for i in range(1, 8):
@@ -39,7 +40,8 @@
         main.step('Starting mininet topology')
         main.Mininet1.startNet()
         main.step('Creating cell file')
-        cellFileResult = main.TRUE
+        cellFileResult = main.ONOSbench.createCellFile(
+                BENCHIp, cellName, MN1Ip, cellStr, ONOSIp[0])
         main.step('Applying cell file to environment')
         cellApplyResult = main.ONOSbench.setCell(cellName)
         verifyCellResult = main.ONOSbench.verifyCell()
@@ -151,7 +153,6 @@
 
         time.sleep(20)
         
-        batchResultList = []
         deviceIdList = []
         batchInstallLat = []
         batchWithdrawLat = []
@@ -165,6 +166,9 @@
         for device in jsonObj:
             deviceIdList.append(device['id'])
 
+        if not jsonObj:
+            main.log.warn( "Devices not found, check topology" )
+            
         sleepTime = 10
         baseDir = '/tmp/'
         for batch in range(0, 5):
@@ -283,6 +287,7 @@
                 stdWithdrawLat = 'NA'
                 main.log.report('Batch withdraw failed')
                 assertion = main.FALSE
+            
             main.log.report('Avg of batch installation latency ' +
                     'of size ' + str(batchIntentSize) + ': ' +
                     str(avgInstallLat) + ' ms')
@@ -293,6 +298,7 @@
                     str(avgWithdrawLat) + ' ms')
             main.log.report('Std Deviation of batch withdraw latency ' +
                     ': ' + str(round(numpy.std(maxWithdrawLat), 2)) + ' ms')
+            
             main.log.report('Avg of batch withdraw latency ' + 'of size ' +
                     str(batchIntentSize) + ': ' + str(avgWithdrawLat) + ' ms')
             main.log.report('Std Deviation of batch withdraw latency ' +
@@ -302,6 +308,7 @@
                     str(avgSingleWithdrawLat) + ' ms')
             main.log.report('Std Deviation of single withdraw latency ' +
                     ': ' + str(stdSingleWithdrawLat) + ' ms')
+            
             dbCmd = "INSERT INTO intents_latency_tests VALUES('" +\
                     timeToPost + "','intents_latency_results'," +\
                     runNum + ',' + str(clusterCount) + ',' +\
@@ -680,27 +687,28 @@
         import time
         import json
         
-        cellName = main.params[ 'ENV' ][ 'cellName' ]
-        features = main.params[ 'ENV' ][ 'cellFeatures' ]
-        benchIp = main.params[ 'BENCH' ][ 'ip' ]
-        mininetIp = main.params[ 'TEST' ][ 'MN' ]
-        
         clusterCount += 2
+        
+        cellName = main.params[ 'ENV' ][ 'cellName' ]
+        features = main.params[ 'TEST' ][ 'cellStr' ]
+        benchIp = main.params[ 'BENCH' ][ 'ip' ]
+        mininetIp = main.params[ 'MN' ][ 'ip1' ]
+        
         main.log.report('Increasing cluster size to ' + str(clusterCount))
         
         ONOSIp = []
         for i in range( 1, 8 ):
-            ONOSIp.append( main.params[ 'CTRL' ][ 'ip'+str(i) ]
+            ONOSIp.append( main.params[ 'CTRL' ][ 'ip'+str(i) ] )
 
         main.step( "Cleaning environment" )
-        for i in range( 1, 8 ):
+        for i in range( 0, 7 ):
             main.ONOSbench.onosDie( ONOSIp[i] )
-            main.log.info( "Uninstalling ONOS "+str(i) )
+            main.log.info( "Uninstalling ONOS "+str(i+1) )
             main.ONOSbench.onosUninstall( ONOSIp[i] )
 
         main.step( "Creating new cell file" )
         cellIp = []
-        for node in range( 1, clusterCount + 1 )
+        for node in range( 1, clusterCount + 1 ):
             cellIp.append( ONOSIp[node] )
         main.ONOSbench.createCellFile( benchIp, cellName,
                                        mininetIp, str(features), *cellIp )
@@ -712,12 +720,9 @@
         main.ONOSbench.onosPackage()
 
         for node in range( 1, clusterCount + 1 ):
-            time.sleep(10)
-            main.log.info( "Starting ONOS "+str(node) +
-                            " at IP: "+ONOSIp[node] )
-            main.ONOSbench.onosInstall( ONOSIp[node] )
-            exec "a = main.ONOS%scli.startOnosCli" %str(node)
-            a( ONOSIp[node] )
+            main.ONOSbench.onosInstall( node = ONOSIp[node] )
+            
+        time.sleep( 20 )
 
         for node in range( 1, clusterCount + 1 ):
             for i in range( 2 ):
@@ -729,6 +734,12 @@
                 if not isup:
                     main.log.info( "ONOS" + str(node) + " did not start")
         
+        for node in range( 1, clusterCount + 1 ):
+            exec "a = main.ONOS%scli.startOnosCli" %str(node)
+            a( ONOSIp[node] )
+
+        time.sleep(30)
+
         utilities.assert_equals(expect=main.TRUE, actual=assertion,
             onpass='Scale out to ' + str(clusterCount) + ' nodes successful',
             onfail='Scale out to ' + str(clusterCount) + ' nodes failed')