Refactor work for additional robustness
diff --git a/TestON/tests/TopoConvNext/TopoConvNext.py b/TestON/tests/TopoConvNext/TopoConvNext.py
index 6abf0aa..52a951c 100644
--- a/TestON/tests/TopoConvNext/TopoConvNext.py
+++ b/TestON/tests/TopoConvNext/TopoConvNext.py
@@ -29,7 +29,7 @@
         global cluster_count 
         global topo_iteration
         topo_iteration = 1
-        cluster_count = 3 
+        cluster_count = 1 
         #******
         cell_name = main.params['ENV']['cellName']
 
@@ -59,8 +59,8 @@
 
         main.log.info("Uninstalling previous instances")
         #main.ONOSbench.onos_uninstall(node_ip = ONOS1_ip)
-        #main.ONOSbench.onos_uninstall(node_ip = ONOS2_ip)
-        #main.ONOSbench.onos_uninstall(node_ip = ONOS3_ip)
+        main.ONOSbench.onos_uninstall(node_ip = ONOS2_ip)
+        main.ONOSbench.onos_uninstall(node_ip = ONOS3_ip)
         main.ONOSbench.onos_uninstall(node_ip = ONOS4_ip)
         main.ONOSbench.onos_uninstall(node_ip = ONOS5_ip)
         main.ONOSbench.onos_uninstall(node_ip = ONOS6_ip)
@@ -72,8 +72,8 @@
         cell_file_result = main.ONOSbench.create_cell_file(
                 BENCH_ip, cell_name, MN1_ip, 
                 "onos-core,onos-app-metrics", 
-                ONOS1_ip, ONOS2_ip, ONOS3_ip)
-        #ONOS1_ip)
+                #ONOS1_ip, ONOS2_ip, ONOS3_ip)
+                ONOS1_ip)
                     
         main.step("Applying cell file to environment")
         cell_apply_result = main.ONOSbench.set_cell(cell_name)
@@ -102,8 +102,8 @@
 
         main.step("Set cell for ONOS cli env")
         main.ONOS1cli.set_cell(cell_name)
-        main.ONOS2cli.set_cell(cell_name)
-        main.ONOS3cli.set_cell(cell_name)
+        #main.ONOS2cli.set_cell(cell_name)
+        #main.ONOS3cli.set_cell(cell_name)
     
         main.step("Creating ONOS package")
         package_result = main.ONOSbench.onos_package()
@@ -111,15 +111,15 @@
         #Start test with single node only
         main.step("Installing ONOS package")
         install1_result = main.ONOSbench.onos_install(node=ONOS1_ip)
-        install2_result = main.ONOSbench.onos_install(node=ONOS2_ip)
-        install3_result = main.ONOSbench.onos_install(node=ONOS3_ip)
+        #install2_result = main.ONOSbench.onos_install(node=ONOS2_ip)
+        #install3_result = main.ONOSbench.onos_install(node=ONOS3_ip)
 
         time.sleep(10)
 
         main.step("Start onos cli")
         cli1 = main.ONOS1cli.start_onos_cli(ONOS1_ip)
-        cli2 = main.ONOS2cli.start_onos_cli(ONOS2_ip)
-        cli3 = main.ONOS3cli.start_onos_cli(ONOS3_ip)
+        #cli2 = main.ONOS2cli.start_onos_cli(ONOS2_ip)
+        #cli3 = main.ONOS3cli.start_onos_cli(ONOS3_ip)
 
         main.step("Enable metrics feature")
         #main.ONOS1cli.feature_install("onos-app-metrics")
@@ -319,21 +319,49 @@
                 main.ONOS7.handle.sendline("tshark -i eth0 -t e | "+
                     "grep 'SYN, ACK' | grep '6633' >"+
                     "/tmp/syn_ack_onos6_iter"+str(i)+".txt &")
-            
+         
+            #NOTE:
+            #       Delay before checking devices to 
+            #       help prevent timing out from CLI
+            #       due to multiple command drop
+            time.sleep(20)
+
+            loop = True
             loop_count = 0
             device_count = 0
-            while loop_count < 60: 
+            while loop_count < 60 and loop: 
                 main.log.info("Checking devices for device down")
                 
+                temp_len = 0
                 device_str1 = main.ONOS1cli.devices(
                     node_ip=ONOS_ip_list[1])
                 device_json1 = json.loads(device_str1)
-                for device1 in device_json1:
-                    if device1['available'] == False:
-                        device_count += 1
-                    else:
-                        device_count = 0
+                json_len = len(device_json1) 
                 
+                for device1 in device_json1: 
+                    temp_len = temp_len + 1
+                    if device1['available'] == True:
+                        loop = True
+                        break
+                    #if I'm on the last json object and I still haven't
+                    #broken out of the loop, it means there were
+                    #no available devices
+                    elif temp_len == json_len-1:
+                        main.log.info("Temp length: "+str(temp_len))
+                        main.step("Flushing iptables and obtaining t0")
+                        t0_system = time.time()*1000
+                        
+                        main.ONOS1.handle.sendline("sudo iptables -F")
+                        main.ONOS2.handle.sendline("sudo iptables -F")
+                        main.ONOS3.handle.sendline("sudo iptables -F")
+                        main.ONOS4.handle.sendline("sudo iptables -F")
+                        main.ONOS5.handle.sendline("sudo iptables -F")
+                        main.ONOS6.handle.sendline("sudo iptables -F")
+                        main.ONOS7.handle.sendline("sudo iptables -F")
+                    
+                        loop = False
+                        break
+
                 #if cluster_count == 1:
                 #    device_str1 = main.ONOS1cli.devices(
                 #        node_ip=ONOS_ip_list[1])
@@ -392,22 +420,14 @@
                 #If device count is greater than the 
                 #number of switches discovered by all nodes
                 #then remove iptables and measure t0 system time
-                if device_count\
-                        >= int(num_sw):
-                    main.step("Flushing iptables and obtaining t0")
-                    t0_system = time.time()*1000
-                    main.ONOS1.handle.sendline("sudo iptables -F")
-                    main.ONOS2.handle.sendline("sudo iptables -F")
-                    main.ONOS3.handle.sendline("sudo iptables -F")
-                    main.ONOS4.handle.sendline("sudo iptables -F")
-                    main.ONOS5.handle.sendline("sudo iptables -F")
-                    main.ONOS6.handle.sendline("sudo iptables -F")
-                    main.ONOS7.handle.sendline("sudo iptables -F")
                     
-                    break
                 
+                loop_count += 1
                 time.sleep(1)
 
+            if device_count < int(num_sw):
+                main.log.info("Devices down did not ")
+
             main.log.info("System time t0: "+str(t0_system))
 
             counter_loop = 0
@@ -1005,7 +1025,9 @@
                 counter_loop += 1
                 time.sleep(3)
                 #END WHILE LOOP            
-            
+          
+            #Below is used for reporting SYN / ACK timing
+            #of all switches 
             main.ONOS1.tshark_stop()
             syn_ack_timestamp_list = []
             if cluster_count < 3:
@@ -1029,17 +1051,29 @@
                      f_onos1:
                     for line in f_onos1:
                         line = line.split(" ")
-                        syn_ack_timestamp_list.append(line[1])
+                        try:
+                            float(line[1])
+                            syn_ack_timestamp_list.append(line[1])
+                        except ValueError:
+                            main.log.info("String cannot be converted")
                 with open("/tmp/syn_ack_onos2_iter"+str(i)+".txt") as\
                      f_onos2:
                     for line in f_onos2:
                         line = line.split(" ")
-                        syn_ack_timestamp_list.append(line[1])
+                        try:
+                            float(line[1])
+                            syn_ack_timestamp_list.append(line[1])
+                        except ValueError:
+                            main.log.info("String cannot be converted")
                 with open("/tmp/syn_ack_onos3_iter"+str(i)+".txt") as\
                      f_onos3:
                     for line in f_onos3:
                         line = line.split(" ")
-                        syn_ack_timestamp_list.append(line[1])
+                        try:
+                            float(line[1])
+                            syn_ack_timestamp_list.append(line[1])
+                        except ValueError:
+                            main.log.info("String cannot be converted")
             if cluster_count >= 4:
                 main.ONOS4.tshark_stop() 
                 time.sleep(5)
@@ -1050,7 +1084,11 @@
                      f_onos4:
                     for line in f_onos4:
                         line = line.split(" ")
-                        syn_ack_timestamp_list.append(line[1])
+                        try:
+                            float(line[1])
+                            syn_ack_timestamp_list.append(line[1])
+                        except ValueError:
+                            main.log.info("String cannot be converted")
             if cluster_count >= 5:
                 main.ONOS5.tshark_stop()
                 time.sleep(5)
@@ -1061,7 +1099,11 @@
                      f_onos5:
                     for line in f_onos5:
                         line = line.split(" ")
-                        syn_ack_timestamp_list.append(line[1])
+                        try:
+                            float(line[1])
+                            syn_ack_timestamp_list.append(line[1])
+                        except ValueError:
+                            main.log.info("String cannot be converted")
             if cluster_count >= 6:
                 main.ONOS6.tshark_stop()
                 time.sleep(5)
@@ -1072,7 +1114,11 @@
                      f_onos6:
                     for line in f_onos6:
                         line = line.split(" ")
-                        syn_ack_timestamp_list.append(line[1])
+                        try:
+                            float(line[1])
+                            syn_ack_timestamp_list.append(line[1])
+                        except ValueError:
+                            main.log.info("String cannot be converted")
             if cluster_count == 7:
                 main.ONOS7.tshark_stop()
                 time.sleep(5)
@@ -1083,7 +1129,11 @@
                      f_onos7:
                     for line in f_onos7:
                         line = line.split(" ")
-                        syn_ack_timestamp_list.append(line[1])
+                        try:
+                            float(line[1])
+                            syn_ack_timestamp_list.append(line[1])
+                        except ValueError:
+                            main.log.info("String cannot be converted")
           
             #Sort the list by timestamp
             syn_ack_timestamp_list = sorted(syn_ack_timestamp_list)
@@ -1272,8 +1322,7 @@
         
         global topo_iteration
         global cluster_count
-        cluster_count = 3  
-        #cluster_count = 1
+        cluster_count = 1  
         topo_iteration += 1
 
         main.log.report("Increasing topology size")