updates
diff --git a/TestON/tests/flowTP1g/flowTP1g.params b/TestON/tests/flowTP1g/flowTP1g.params
index 0f08c9a..73dc8e3 100644
--- a/TestON/tests/flowTP1g/flowTP1g.params
+++ b/TestON/tests/flowTP1g/flowTP1g.params
@@ -1,33 +1,33 @@
 <PARAMS>
 
-    <testcases>1,2</testcases>
+    <testcases>1,2,1,2,1,2</testcases>
     
     <isOnBaremetal>False</isOnBaremetal>
-    <SCALE>3</SCALE>
+    <SCALE>3,5,7</SCALE>
     <availableNodes>7</availableNodes>
     
 
 
     <ENV>
         <cellName>flowTP</cellName>
-        <cellApps>null,demo</cellApps>
+        <cellApps>drivers,null,demo</cellApps>
     </ENV>
 
     <TEST>
         <skipCleanInstall>yes</skipCleanInstall> 
-        <warmUp>4</warmUp>                              #number of runs to warm up the system
+        <warmUp>5</warmUp>                              #number of runs to warm up the system
         <sampleSize>3</sampleSize>                     #number of runs to take data from
         <neighbors>0,a</neighbors>                      #list of number of neighbors, a = all 
         <flows>3500</flows>
         <switches>35</switches>
-
+        <cooldown>10</cooldown>
         <testCMD0>flow-tester.py -f</testCMD0>          #base command 
         <testCMD1> -n </testCMD1>                       #neighbors 
         
     </TEST>
 
     <GIT>
-        <autopull>on</autopull>
+        <autopull>off</autopull>
         <checkout>master</checkout>
     </GIT>
 
diff --git a/TestON/tests/flowTP1g/flowTP1g.py b/TestON/tests/flowTP1g/flowTP1g.py
index 352341e..cbbf2dd 100644
--- a/TestON/tests/flowTP1g/flowTP1g.py
+++ b/TestON/tests/flowTP1g/flowTP1g.py
@@ -34,9 +34,8 @@
         maxNodes = int(main.params[ 'availableNodes' ])
         skipMvn = main.params[ 'TEST' ][ 'skipCleanInstall' ]
         cellName = main.params[ 'ENV' ][ 'cellName' ]       
- 
-        #----do i need this line?
-        #main.ONOSbench.handle.sendline("export TERM=vt100")
+    
+        main.log.info("==========DEBUG VERSION 3===========")
 
         # -- INIT SECTION, ONLY RUNS ONCE -- #
         if init == False:
@@ -154,14 +153,17 @@
         testCMD[1] = main.params[ 'TEST' ][ 'testCMD1' ]
         maxNodes = main.params[ 'availableNodes' ]
         onBaremetal = main.params['isOnBaremetal']
-
+        cooldown = main.params[ 'TEST' ][ 'cooldown' ]
         cellName = main.params[ 'ENV' ][ 'cellName' ]
         BENCHIp = main.params[ 'BENCH' ][ 'ip1' ]
         BENCHUser = main.params[ 'BENCH' ][ 'user' ]
         MN1Ip = main.params[ 'MN' ][ 'ip1' ]
         maxNodes = int(main.params[ 'availableNodes' ])
         homeDir = os.path.expanduser('~')
-  
+        flowRuleBackup = str(main.params[ 'TEST' ][ 'enableFlowRuleStoreBackup' ])
+        print flowRuleBackup
+
+
         servers = str(clusterCount) 
         for i in range(0, len(neighborList)):
             if neighborList[i] == 'a':
@@ -174,10 +176,6 @@
         ts = time.time()
         st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
 
-        #initialize log file, remove any previous data
-        resultsLog = open("flowTP1gDB","w+")
-        resultsLog.close()
-
         #write file to change mem limit to 32 gigs (BAREMETAL ONLY!)
         if onBaremetal == "true":
             filename = "/onos/tools/package/bin/onos-service"
@@ -208,25 +206,28 @@
                 ipCSV += main.params[ 'CTRL' ][ tempstr ] 
                 if i < int(maxNodes):
                     ipCSV +=","
-            
-            filename = "/onos/tools/package/etc/org.onosproject.provider.nil.link.impl.NullLinkProvider.cfg"
-            linkConfig = open(homeDir + filename,'w+')
-            linkConfig.write("# eventRate = 2000\n")
-            linkConfig.write("neighbors = "  + ipCSV)
-            main.log.info(" NullLinkProvider.cfg: " + ipCSV)
-            linkConfig.close()
-            
-            main.ONOSbench.handle.sendline("""onos $OC1 "cfg setorg.onosproject.provider.nil.NullProviders enabled true" """)
-            main.ONOSbench.handle.expect(":~")
+           
+
             main.ONOSbench.handle.sendline("""onos $OC1 "cfg set org.onosproject.provider.nil.NullProviders deviceCount 35" """)
             main.ONOSbench.handle.expect(":~")
+            time.sleep(3)
             main.ONOSbench.handle.sendline("""onos $OC1 "cfg set org.onosproject.provider.nil.NullProviders topoShape linear" """)
             main.ONOSbench.handle.expect(":~")
+            time.sleep(3)
             main.ONOSbench.handle.sendline("""onos $OC1 "null-simulation start" """)
             main.ONOSbench.handle.expect(":~")
+            time.sleep(3)
             main.ONOSbench.handle.sendline("""onos $OC1 "balance-masters" """)
             main.ONOSbench.handle.expect(":~")
-        
+            time.sleep(3)
+            main.ONOSbench.handle.sendline("""onos $OC1 "cfg set org.onosproject.store.flow.impl.DistributedFlowRuleStore backupEnabled """ + str(flowRuleBackup) + """ " """)
+            main.ONOSbench.handle.expect(":~")
+       
+            main.ONOSbench.handle.sendline("onos $OC1 summary")
+            main.ONOSbench.handle.expect(":~")
+            check = main.ONOSbench.handle.before
+            main.log.info("\nStart up check: \n" + check + "\n") 
+
             #devide flows
             flows = int(main.params[ 'TEST' ][ 'flows' ])
             main.log.info("Flow Target  = " + str(flows))
@@ -243,35 +244,51 @@
             data = [[""]*int(servers)]*int(sampleSize)
             maxes = [""]*int(sampleSize)
 
-            for test in range(0, (warmUp + sampleSize)): 
-                flowCMD = "python3 " + homeDir + "/onos/tools/test/bin/"
-                flowCMD += testCMD[0] + " " + str(flows) + " " + testCMD[1] 
-                flowCMD += " " + str(n) + " " + str(serverEnvVars)
-                print("\n")                    
-                main.log.info("COMMAND: " + flowCMD)
-                main.log.info("Executing command") 
-                
-                for i in range(0,15):
-                    main.ONOSbench.handle.sendline(flowCMD)
-                    time.sleep(1)
-                    main.ONOSbench.handle.expect(":~")
-                    rawResult = main.ONOSbench.handle.before
-                    if " -> " in rawResult:
-                        break
+            flowCMD = "python3 " + homeDir + "/onos/tools/test/bin/"
+            flowCMD += testCMD[0] + " " + str(flows) + " " + testCMD[1]
+            flowCMD += " " + str(n) + " " + str(serverEnvVars) + "-j" 
 
+            main.log.info(flowCMD)
+            #time.sleep(60)
+            
+            for test in range(0, warmUp + sampleSize): 
+                if test < warmUp: 
+                    main.log.info("Warm up " + str(test + 1) + " of " + str(warmUp))
+                else: 
+                     main.log.info("====== Test run: " + str(test-warmUp+1) + " ======") 
+
+                main.ONOSbench.handle.sendline(flowCMD)
+                main.ONOSbench.handle.expect(":~")
+                rawResult = main.ONOSbench.handle.before
+                main.log.info("Raw results: \n" + rawResult + "\n")
+
+                if "failed" in rawResult: 
+                    main.log.report("FLOW_TESTER.PY FAILURE")
+                    main.log.report( " \n" + rawResult + " \n") 
+                    break
+            
+            ########################################################################################
                 result = [""]*(clusterCount)
                 rawResult = rawResult.splitlines()
-                print(rawResult)
+
                 for node in range(1, clusterCount + 1):        
                     for line in rawResult:
-                        if ONOSIp[node] in line and " -> " in line:
-                            myLine = line.split(" ")
-                            for word in myLine:
-                                if "ms" in word:
-                                    result[node-1] = int(word.replace("ms",""))
-                                    main.log.info("Parsed result: " + str(result[node-1]))
-                                    break
-                            break
+                        #print("line: " + line) 
+                        if ONOSIp[node] in line and "server" in line:
+                            temp = line.split(" ") 
+                            for word in temp:
+                                #print ("word: " + word) 
+                                if "elapsed" in repr(word): 
+                                    #print("in elapsed ==========")
+                                    index = temp.index(word) + 1
+                                    #print ("index: " + str(index)) 
+                                    #print ("temp[index]: " + temp[index])
+                                    myParsed = (temp[index]).replace(",","")
+                                    myParsed = myParsed.replace("}","")
+                                    myParsed = int(myParsed)
+                                    result[node-1] = myParsed
+                                    main.log.info( ONOSIp[node] + " : " + str(myParsed))
+                                    break 
 
                 if test >= warmUp:
                     for i in result: 
@@ -283,40 +300,27 @@
                     main.log.info("Data collection iteration: " + str(test-warmUp) + " of " + str(sampleSize))
                     main.log.info("Throughput time: " + str(maxes[test-warmUp]) + "(ms)")                
 
-                if test >= warmUp:
                     data[test-warmUp] = result
 
                 # wait for flows = 0 
-                removedFlows = False
-                repeat = 0
-                time.sleep(3)
-                while ( removedFlows == False and repeat <= 10 ):
-                    main.ONOSbench.handle.sendline("onos $OC1 summary| cut -d ' ' -f6")
-                    main.ONOSbench.handle.expect("~")
-                    before = main.ONOSbench.handle.before
-                    parseTest = before.splitlines()
-                    flowsummary = ""
-                    for line in parseTest:
-                        if "flow" in str(line):
-                            flowsummary = line 
-                            break
-                    currentflow = ""
-                    for word in flowsummary.split(" "): 
-                        if "flow" in str(word):
-                            currentflow = str(word)
-                    currentflow = currentflow.replace(",","")
-                    currentflow = currentflow.replace("\n","")
-                    #main.log.info(currentflow)
+                for checkCount in range(0,3): 
+                    time.sleep(6)
+                    main.ONOSbench.handle.sendline("onos $OC1 summary")
+                    main.ONOSbench.handle.expect(":~")
+                    flowCheck = main.ONOSbench.handle.before
+                    if "flows=0," in flowCheck: 
+                        main.log.info("Flows removed")
+                        break
+                    else: 
+                        for line in flowCheck.splitlines(): 
+                            if "flows=" in line: 
+                                main.log.info("Current Summary: " + line) 
+                    if checkCount == 2: 
+                        main.log.info("Flows are stuck, moving on ")
 
-                    zeroFlow = "flows=0"                
-                    if zeroFlow in before:
-                        removedFlows = True 
-                        main.log.info("\t Wait 5 sec of cool down...")
-                        time.sleep(5)
 
-                    time.sleep(5)
-                    repeat +=1
-     
+                time.sleep(5)
+                
             main.log.info("raw data: " + str(data))
             main.log.info("maxes:" + str(maxes))
 
@@ -361,12 +365,15 @@
             main.log.info("Standard deviation of throughput: " + str(stdTP) + " Kflows/second") 
 
             resultsLog = open("flowTP1gDB","a")
-            resultsLog.write("'" + commit + "',")
-            resultsLog.write("'1gig',")
-            resultsLog.write((main.params[ 'TEST' ][ 'flows' ]) + ",")
-            resultsLog.write(str(clusterCount)+ ",")
-            resultsLog.write(str(n) + ",")
-            resultsLog.write(str(avgTP) + "," + str(stdTP) + "\n")
+            resultString = ("'" + commit + "',")
+            resultString += ("'1gig',")
+            resultString += ((main.params[ 'TEST' ][ 'flows' ]) + ",")
+            resultString += (str(clusterCount) + ",")
+            resultString += (str(n) + ",")
+            resultString += (str(avgTP) + "," + str(stdTP) + "\n")
+            resultsLog.write(resultString) 
             resultsLog.close()
-
-             
+            
+            main.log.report("Result line to file: " + resultString)
+           
+