WIP commit
diff --git a/TestON/tests/TopoConvNext/TopoConvNext.params b/TestON/tests/TopoConvNext/TopoConvNext.params
index 0fa28fa..0003412 100644
--- a/TestON/tests/TopoConvNext/TopoConvNext.params
+++ b/TestON/tests/TopoConvNext/TopoConvNext.params
@@ -42,7 +42,7 @@
         <onosLogFile>/opt/onos/log/karaf*</onosLogFile>
 
         #Number of times to iterate each case
-        <numIter>5</numIter>
+        <numIter>1</numIter>
         <numSwitch>100</numSwitch>
         #Number of iterations to ignore initially
         <iterIgnore>2</iterIgnore>
diff --git a/TestON/tests/TopoConvNext/TopoConvNext.py b/TestON/tests/TopoConvNext/TopoConvNext.py
index a2bb6e8..95bede7 100644
--- a/TestON/tests/TopoConvNext/TopoConvNext.py
+++ b/TestON/tests/TopoConvNext/TopoConvNext.py
@@ -46,8 +46,7 @@
         main.step("Creating cell file")
         cell_file_result = main.ONOSbench.create_cell_file(
                 BENCH_ip, cell_name, MN1_ip, "onos-core",
-                ONOS1_ip, ONOS2_ip, ONOS3_ip, ONOS4_ip,
-                ONOS5_ip, ONOS6_ip, ONOS7_ip)
+                ONOS1_ip)
 
         main.step("Applying cell file to environment")
         cell_apply_result = main.ONOSbench.set_cell(cell_name)
@@ -156,6 +155,7 @@
         main.case(str(num_sw)+" switch per "+str(cluster_count)+
                 " nodes convergence latency")
        
+        main.log.report("Large topology convergence and scale-out test")
         main.log.report("Currently active ONOS node(s): ")
         report_str = "Node "
         for node in range(1, cluster_count+1):
@@ -203,7 +203,7 @@
                     "sudo iptables -A INPUT -p tcp -s "+
                     MN1_ip+" --dport "+default_sw_port+" -j DROP")
                
-                #OUTPUT rules
+            #OUTPUT rules
             main.ONOS1.handle.sendline(
                     "sudo iptables -A OUTPUT -p tcp -s "+
                     MN1_ip+" --dport "+default_sw_port+" -j DROP")
@@ -261,6 +261,8 @@
             while counter_loop < 60:
                 for node in range(1, cluster_count+1):
                     if node == 1 and not onos1_dev:
+                        main.log.info("Checking node 1 for device "+
+                            "discovery")
                         device_str_obj1 = main.ONOS1cli.devices()
                         device_json1 = json.loads(device_str_obj1)
                         for device1 in device_json1:
@@ -273,6 +275,8 @@
                             else:
                                 counter_avail1 = 0
                     if node == 2 and not onos2_dev:
+                        main.log.info("Checking node 2 for device "+
+                            "discovery")
                         device_str_obj2 = main.ONOS2cli.devices()
                         device_json2 = json.loads(device_str_obj2)
                         for device2 in device_json2:
@@ -285,6 +289,8 @@
                             else:
                                 counter_avail2 = 0
                     if node == 3 and not onos3_dev:
+                        main.log.info("Checking node 3 for device "+
+                            "discovery")
                         device_str_obj3 = main.ONOS3cli.devices()
                         device_json3 = json.loads(device_str_obj3)
                         for device3 in device_json3:
@@ -297,6 +303,8 @@
                             else:
                                 counter_avail3 = 0
                     if node == 4 and not onos4_dev:
+                        main.log.info("Checking node 4 for device "+
+                            "discovery")
                         device_str_obj4 = main.ONOS4cli.devices()
                         device_json4 = json.loads(device_str_obj4)
                         for device4 in device_json4:
@@ -309,6 +317,8 @@
                             else:
                                 counter_avail4 = 0
                     if node == 5 and not onos5_dev:
+                        main.log.info("Checking node 5 for device "+
+                            "discovery")
                         device_str_obj5 = main.ONOS5cli.devices()
                         device_json5 = json.loads(device_str_obj5)
                         for device5 in device_json5:
@@ -321,6 +331,8 @@
                             else:
                                 counter_avail5 = 0
                     if node == 6 and not onos6_dev:
+                        main.log.info("Checking node 6 for device "+
+                            "discovery")
                         device_str_obj6 = main.ONOS6cli.devices()
                         device_json6 = json.loads(device_str_obj6)
                         for device6 in device_json6:
@@ -333,6 +345,8 @@
                             else:
                                 counter_avail6 = 0
                     if node == 7 and not onos7_dev:
+                        main.log.info("Checking node 7 for device "+
+                            "discovery")
                         device_str_obj7 = main.ONOS7cli.devices()
                         device_json7 = json.loads(device_str_obj7)
                         for device7 in device_json7:
@@ -373,7 +387,7 @@
                         else:
                             main.log.info("Switch discovery latency "+
                                 "exceeded the threshold.")
-
+                            main.log.info(graph_lat_1)
                         #Break while loop 
                         break
                 if cluster_count == 2:
@@ -410,7 +424,7 @@
                         else:
                             main.log.info("Switch discovery latency "+
                                 "exceeded the threshold.")
-
+                            main.log.info(avg_graph_lat)
                         break
                 if cluster_count == 3:
                     if onos1_dev and onos2_dev and onos3_dev:
@@ -454,6 +468,7 @@
                         else:
                             main.log.info("Switch discovery latency "+
                                 "exceeded the threshold.")
+                            main.log.info(avg_graph_lat)
                         
                         break
                 if cluster_count == 4:
@@ -507,6 +522,7 @@
                         else:
                             main.log.info("Switch discovery latency "+
                                 "exceeded the threshold.")
+                            main.log.info(avg_graph_lat)
                 
                         break
                 if cluster_count == 5:
@@ -568,6 +584,7 @@
                         else:
                             main.log.info("Switch discovery latency "+
                                 "exceeded the threshold.")
+                            main.log.info(avg_graph_lat)
                 
                         break
                 if cluster_count == 6:
@@ -637,6 +654,7 @@
                         else:
                             main.log.info("Switch discovery latency "+
                                 "exceeded the threshold.")
+                            main.log.info(avg_graph_lat)
                         
                         break
                 if cluster_count == 7:
@@ -715,6 +733,7 @@
                         else:
                             main.log.info("Switch discovery latency "+
                                 "exceeded the threshold.")
+                            main.log.info(avg_graph_lat)
                         
                         break
                 
@@ -732,9 +751,10 @@
             assertion = main.FALSE
 
         main.log.report("Switch discovery lat for "+\
-            str(cluster_count)+" instances, 100 sw each: ")
+            str(cluster_count)+" instance(s), 100 sw each: ")
         main.log.report("Avg: "+str(sw_lat_avg)+" ms")
-        main.log.report("Std Deviation: "+str(sw_lat_dev)+" ms")
+        main.log.report("Std Deviation: "+
+                str(round(sw_lat_dev,1))+" ms")
 
         utilities.assert_equals(expect=main.TRUE, actual=assertion,
                 onpass="Switch discovery convergence latency" +\
@@ -742,7 +762,6 @@
                 onfail="Switch discovery convergence latency" +\
                         " test failed")
         
-
     def CASE3(self, main):
         '''
         Increase number of nodes and initiate CLI
@@ -763,9 +782,30 @@
         ONOS_ip_list.append(main.params['CTRL']['ip6'])
         ONOS_ip_list.append(main.params['CTRL']['ip7'])
         
+        ONOS1_ip = main.params['CTRL']['ip1']
+        ONOS2_ip = main.params['CTRL']['ip2']
+        ONOS3_ip = main.params['CTRL']['ip3']
+        ONOS4_ip = main.params['CTRL']['ip4']
+        ONOS5_ip = main.params['CTRL']['ip5']
+        ONOS6_ip = main.params['CTRL']['ip6']
+        ONOS7_ip = main.params['CTRL']['ip7']
+        
+        cell_name = main.params['ENV']['cellName']
+        
         MN1_ip = main.params['MN']['ip1']
         BENCH_ip = main.params['BENCH']['ip']
- 
+
+        main.step("Creating cell file")
+        cell_file_result = main.ONOSbench.create_cell_file(
+                BENCH_ip, cell_name, MN1_ip, "onos-core",
+                ONOS1_ip, ONOS2_ip, ONOS3_ip, ONOS4_ip,
+                ONOS5_ip, ONOS6_ip, ONOS7_ip)
+
+        main.step("Applying cell file to environment")
+        cell_apply_result = main.ONOSbench.set_cell(cell_name)
+        verify_cell_result = main.ONOSbench.verify_cell()
+
+
         #NOTE:We start with cluster_count at 1. The first 
         #case already initialized ONOS1. Increase the
         #cluster count and start from 2.
@@ -778,36 +818,135 @@
         #Supports up to 7 node configuration
         for node in range(1, cluster_count+1):
             if node == 2:
+                main.log.info("Closing previous ONOS connections")
+                main.ONOS1cli.logout()
+                main.log.info("Creating new cell file with "+
+                        str(node)+" nodes")
+                main.ONOSbench.create_cell_file(BENCH_ip, cell_name,
+                    MN1_ip, "onos-core", ONOS1_ip, ONOS2_ip)
+                main.log.info("Applying cell file to environment")
+                main.ONOSbench.set_cell(cell_name)
+                main.ONOS1cli.set_cell(cell_name)
+                main.ONOS2cli.set_cell(cell_name)
+                main.log.info("Packaging new ONOS")
+                main.ONOSbench.onos_package()
+                main.log.info("Installing ONOS on node: "+str(node))
+                install_result = \
+                    main.ONOSbench.onos_install(node=ONOS_ip_list[node])
                 main.log.info("Starting CLI for instance "+
                         ONOS_ip_list[node])
                 main.ONOS2cli.start_onos_cli(ONOS_ip_list[node])
                 main.log.info("Installing metrics feature")
                 main.ONOS2cli.feature_install("onos-app-metrics")
             elif node == 3:
+                main.log.info("Creating new cell file with "+
+                        str(node)+" nodes")
+                main.ONOSbench.create_cell_file(BENCH_ip, cell_name,
+                    MN1_ip, "onos-core", ONOS1_ip, ONOS2_ip, ONOS3_ip)
+                main.log.info("Applying cell file to environment")
+                main.ONOSbench.set_cell(cell_name)
+                main.ONOS1cli.set_cell(cell_name)
+                main.ONOS2cli.set_cell(cell_name)
+                main.ONOS3cli.set_cell(cell_name)
+                main.log.info("Packaging new ONOS")
+                main.ONOSbench.onos_package()
+                main.log.info("Installing ONOS on node: "+str(node))
+                install_result = \
+                    main.ONOSbench.onos_install(node=ONOS_ip_list[node])
                 main.log.info("Starting CLI for instance "+
                         ONOS_ip_list[node])
                 main.ONOS3cli.start_onos_cli(ONOS_ip_list[node])
                 main.log.info("Installing metrics feature")
                 main.ONOS3cli.feature_install("onos-app-metrics")
             elif node == 4:
+                main.log.info("Creating new cell file with "+
+                        str(node)+" nodes")
+                main.ONOSbench.create_cell_file(BENCH_ip, cell_name,
+                    MN1_ip, "onos-core", ONOS1_ip, ONOS2_ip, ONOS3_ip,
+                    ONOS4_ip)
+                main.log.info("Applying cell file to environment")
+                main.ONOSbench.set_cell(cell_name)
+                main.ONOS1cli.set_cell(cell_name)
+                main.ONOS2cli.set_cell(cell_name)
+                main.ONOS3cli.set_cell(cell_name)
+                main.ONOS4cli.set_cell(cell_name)
+                main.log.info("Packaging new ONOS")
+                main.ONOSbench.onos_package()
+                main.log.info("Installing ONOS on node: "+str(node))
+                install_result = \
+                    main.ONOSbench.onos_install(node=ONOS_ip_list[node])
                 main.log.info("Starting CLI for instance "+
                         ONOS_ip_list[node])
                 main.ONOS4cli.start_onos_cli(ONOS_ip_list[node])
                 main.log.info("Installing metrics feature")
                 main.ONOS4cli.feature_install("onos-app-metrics")
             elif node == 5:
+                main.log.info("Creating new cell file with "+
+                        str(node)+" nodes")
+                main.ONOSbench.create_cell_file(BENCH_ip, cell_name,
+                    MN1_ip, "onos-core", ONOS1_ip, ONOS2_ip, ONOS3_ip,
+                    ONOS4_ip, ONOS5_ip)
+                main.log.info("Applying cell file to environment")
+                main.ONOSbench.set_cell(cell_name)
+                main.ONOS1cli.set_cell(cell_name)
+                main.ONOS2cli.set_cell(cell_name)
+                main.ONOS3cli.set_cell(cell_name)
+                main.ONOS4cli.set_cell(cell_name)
+                main.ONOS5cli.set_cell(cell_name)
+                main.log.info("Packaging new ONOS")
+                main.ONOSbench.onos_package()
+                main.log.info("Installing ONOS on node: "+str(node))
+                install_result = \
+                    main.ONOSbench.onos_install(node=ONOS_ip_list[node])
                 main.log.info("Starting CLI for instance "+
                         ONOS_ip_list[node])
                 main.ONOS5cli.start_onos_cli(ONOS_ip_list[node])
                 main.log.info("Installing metrics feature")
                 main.ONOS5cli.feature_install("onos-app-metrics")
             elif node == 6:
+                main.log.info("Creating new cell file with "+
+                        str(node)+" nodes")
+                main.ONOSbench.create_cell_file(BENCH_ip, cell_name,
+                    MN1_ip, "onos-core", ONOS1_ip, ONOS2_ip, ONOS3_ip,
+                    ONOS4_ip, ONOS5_ip, ONOS6_ip)
+                main.log.info("Applying cell file to environment")
+                main.ONOSbench.set_cell(cell_name)
+                main.ONOS1cli.set_cell(cell_name)
+                main.ONOS2cli.set_cell(cell_name)
+                main.ONOS3cli.set_cell(cell_name)
+                main.ONOS4cli.set_cell(cell_name)
+                main.ONOS5cli.set_cell(cell_name)
+                main.ONOS6cli.set_cell(cell_name)
+                main.log.info("Packaging new ONOS")
+                main.ONOSbench.onos_package()
+                main.log.info("Installing ONOS on node: "+str(node))
+                install_result = \
+                    main.ONOSbench.onos_install(node=ONOS_ip_list[node])
                 main.log.info("Starting CLI for instance "+
                         ONOS_ip_list[node])
                 main.ONOS6cli.start_onos_cli(ONOS_ip_list[node])
                 main.log.info("Installing metrics feature")
                 main.ONOS6cli.feature_install("onos-app-metrics")
             elif node == 7:
+                main.log.info("Creating new cell file with "+
+                        str(node)+" nodes")
+                main.ONOSbench.create_cell_file(BENCH_ip, cell_name,
+                    MN1_ip, "onos-core", ONOS1_ip, ONOS2_ip, ONOS3_ip,
+                    ONOS4_ip, ONOS5_ip, ONOS6_ip, ONOS7_ip)
+                main.log.info("Applying cell file to environment")
+                main.ONOSbench.set_cell(cell_name)
+                main.ONOS1cli.set_cell(cell_name)
+                main.ONOS2cli.set_cell(cell_name)
+                main.ONOS3cli.set_cell(cell_name)
+                main.ONOS4cli.set_cell(cell_name)
+                main.ONOS5cli.set_cell(cell_name)
+                main.ONOS6cli.set_cell(cell_name)
+                main.ONOS7cli.set_cell(cell_name)
+                main.log.info("Packaging new ONOS")
+                main.ONOSbench.onos_package()
+                main.log.info("Installing ONOS on node: "+str(node))
+                install_result = \
+                    main.ONOSbench.onos_install(node=ONOS_ip_list[node])
                 main.log.info("Starting CLI for instance "+
                         ONOS_ip_list[node])
                 main.ONOS7cli.start_onos_cli(ONOS_ip_list[node]) 
@@ -815,7 +954,16 @@
                 main.ONOS7cli.feature_install("onos-app-metrics")
             time.sleep(5)
 
-
+        if install_result == main.TRUE:
+            assertion = main.TRUE
+        else:
+            assertion = main.FALSE
+        
+        utilities.assert_equals(expect=main.TRUE, actual=assertion,
+                onpass="Scale out to "+str(cluster_count)+\
+                       " nodes successful",
+                onfail="Scale out to "+str(cluster_count)+\
+                       " nodes failed")