Improve stability of intent reroute test

Change-Id: I38cbfec749de322626a5d3abfcdc92a73cf94dc3
diff --git a/TestON/tests/SCPF/SCPFintentRerouteLat/SCPFintentRerouteLat.py b/TestON/tests/SCPF/SCPFintentRerouteLat/SCPFintentRerouteLat.py
index 4d72293..ac0a673 100644
--- a/TestON/tests/SCPF/SCPFintentRerouteLat/SCPFintentRerouteLat.py
+++ b/TestON/tests/SCPF/SCPFintentRerouteLat/SCPFintentRerouteLat.py
@@ -80,6 +80,7 @@
         main.verifySleep = int(main.params['SLEEP']['verify'])
         main.setMasterSleep = int(main.params['SLEEP']['setmaster'])
         main.verifyAttempts = int(main.params['ATTEMPTS']['verify'])
+        main.maxInvalidRun = int(main.params['ATTEMPTS']['maxInvalidRun'])
         main.sampleSize = int(main.params['TEST']['sampleSize'])
         main.warmUp = int(main.params['TEST']['warmUp'])
         main.ingress = main.params['TEST']['ingress']
@@ -222,7 +223,7 @@
                                  onpass="Test step PASS",
                                  onfail="Test step FAIL" )
 
-        time.sleep(2)
+        time.sleep(main.startUpSleep)
         main.step("Start ONOS CLI on all nodes")
         cliResult = main.TRUE
         main.step(" Start ONOS cli using thread ")
@@ -257,6 +258,7 @@
             main.CLIs[i].logSet( "DEBUG", "org.onosproject.metrics.intent" )
         # Balance Master
         main.CLIs[0].balanceMasters()
+        time.sleep( main.setMasterSleep )
         if len(main.ONOSip) > 1:
             main.CLIs[0].deviceRole(main.end1[ 'name' ], main.ONOSip[0])
             main.CLIs[0].deviceRole(main.end2[ 'name' ], main.ONOSip[0])
@@ -272,6 +274,7 @@
         ts = time.time()
         print(main.intentsList)
         for batchSize in main.intentsList:
+            main.batchSize = batchSize
             main.log.report("Intent Batch size: " + str(batchSize) + "\n      ")
             main.LatencyList = []
             main.LatencyListTopoToFirstInstalled = []
@@ -282,7 +285,7 @@
             main.totalLines = []
             for i in range( main.numCtrls ):
                 main.totalLines.append( '' )
-            while main.validRun <= main.warmUp + main.sampleSize and main.invalidRun <= 20:
+            while main.validRun <= main.warmUp + main.sampleSize and main.invalidRun <= main.maxInvalidRun:
                 if main.validRun >= main.warmUp:
                     main.log.info("================================================")
                     main.log.info("Starting test iteration: {} ".format( main.validRun - main.warmUp))
@@ -292,7 +295,7 @@
                     main.log.info("====================Warm Up=====================")
 
                 # push intents
-                main.CLIs[0].pushTestIntents(main.ingress, main.egress, batchSize,
+                main.CLIs[0].pushTestIntents(main.ingress, main.egress, main.batchSize,
                                              offset=1, options="-i", timeout=main.timeout)
 
                 # check links and flows
@@ -311,7 +314,7 @@
                         break
                     k += 1
                 if not main.verify:
-                    main.log.warn("Links or flows number are not match!")
+                    main.log.warn("Links or flows number not as expected")
                     main.log.warn("links: {}, flows: {} ".format(linkCheck, flowsCheck))
                     # bring back topology
                     main.intentRerouteLatFuncs.bringBackTopology( main )
@@ -326,20 +329,19 @@
                                   timeout=main.timeout, showResponse=False)
                 main.verify = main.FALSE
                 k = 0
-                topoManagerLog = ""
                 while k <= main.verifyAttempts:
                     time.sleep(main.verifySleep)
                     summary = json.loads(main.CLIs[0].summary(timeout=main.timeout))
                     linkCheck = summary.get("links")
                     flowsCheck = summary.get("flows")
-                    if linkCheck == (main.deviceCount - 1) * 2:
+                    if linkCheck == (main.deviceCount - 1) * 2 and flowsCheck == batchSize * main.deviceCount:
                         main.log.info("links: {}, flows: {} ".format(linkCheck, flowsCheck))
                         main.verify = main.TRUE
                         break
                     k += 1
                 if not main.verify:
-                    main.log.warn("Links number are not match in TopologyManager log!")
-                    main.log.warn(topoManagerLog)
+                    main.log.warn("Links or flows number not as expected")
+                    main.log.warn("links: {}, flows: {} ".format(linkCheck, flowsCheck))
                     # bring back topology
                     main.intentRerouteLatFuncs.bringBackTopology( main )
                     if main.validRun >= main.warmUp:
@@ -374,8 +376,8 @@
                 flowsCheck = 0
                 while k <= main.verifyAttempts:
                     time.sleep(main.verifySleep)
-                    main.CLIs[0].removeAllIntents(purge=True, sync=True, timeout=main.timeout)
-                    time.sleep(1)
+                    main.CLIs[0].pushTestIntents(main.ingress, main.egress, batchSize,
+                                                 offset=1, options="-w", timeout=main.timeout)
                     main.CLIs[0].purgeWithdrawnIntents()
                     summary = json.loads(main.CLIs[0].summary())
                     linkCheck = summary.get("links")
@@ -387,12 +389,12 @@
                         break
                     k += 1
                 if not main.verify:
-                    main.log.error("links, flows, or intents are not correct!")
+                    main.log.error("links, flows or intents number not as expected")
                     main.log.info("links: {}, flows: {}, intents: {} ".format(linkCheck, flowsCheck, intentCheck))
                     # bring back topology
                     main.intentRerouteLatFuncs.bringBackTopology( main )
                     continue
-                main.log.info("total negative results num: " + str( main.record ) )
+                #main.log.info("total negative results num: " + str( main.record ) )
 
             aveLatency = 0
             aveLatencyTopoToFirstInstalled = 0