Fix a bug of totalFlows is -1 beacuse timeout
    - Use REST API to get total ADDED flows

Change-Id: I0f3cbe3835e7744c6d643ceb8a668ee9a5dad979
diff --git a/TestON/drivers/common/cli/onosclidriver.py b/TestON/drivers/common/cli/onosclidriver.py
index f77ad8f..e4e8107 100644
--- a/TestON/drivers/common/cli/onosclidriver.py
+++ b/TestON/drivers/common/cli/onosclidriver.py
@@ -2204,12 +2204,44 @@
         Return:
             The number of ADDED flows
         """
+
         try:
+            # get total added flows number
             cmd = "flows -s|grep ADDED|wc -l"
-            response = self.sendline( cmd, timeout=timeout )
-            if response == None:
-                return  -1
-            return int( response )
+            totalFlows = self.sendline( cmd, timeout=timeout )
+
+            if totalFlows == None:
+                # if timeout, we will get total number of all flows, and subtract other states
+                states = ["PENDING_ADD", "PENDING_REMOVE", "REMOVED", "FAILED"]
+                checkedStates = []
+                totalFlows = 0
+                statesCount = [0, 0, 0, 0]
+
+                # get total flows from summary
+                response = json.loads( self.sendline( "summary -j", timeout=timeout ) )
+                totalFlows = int( response.get("flows") )
+
+                for s in states:
+                    rawFlows = self.flows( state=s, timeout = timeout )
+                    if rawFlows == None:
+                        # if timeout, return the total flows number from summary command
+                        return totalFlows
+                    checkedStates.append( json.loads( rawFlows ) )
+
+                # Calculate ADDED flows number, equal total subtracts others
+                for i in range( len( states ) ):
+                    for c in checkedStates[i]:
+                        try:
+                            statesCount[i] += int( c.get( "flowCount" ) )
+                        except TypeError:
+                            main.log.exception( "Json object not as expected" )
+                    totalFlows = totalFlows - int( statesCount[i] )
+                    main.log.info( states[i] + " flows: " + str( statesCount[i] ) )
+
+                return totalFlows
+
+            return totalFlows
+
         except TypeError:
             main.log.exception( self.name + ": Object not as expected" )
             return None
diff --git a/TestON/tests/SCPFmaxIntents/SCPFmaxIntents.params b/TestON/tests/SCPFmaxIntents/SCPFmaxIntents.params
index 2324185..1871979 100755
--- a/TestON/tests/SCPFmaxIntents/SCPFmaxIntents.params
+++ b/TestON/tests/SCPFmaxIntents/SCPFmaxIntents.params
@@ -66,17 +66,17 @@
         # CASE20
         <PUSH>
             <batch_size>1000</batch_size>
-            <min_intents>10000</min_intents>
+            <min_intents>100000</min_intents>
             <max_intents>1000000</max_intents>
-            <check_interval>10000</check_interval>
+            <check_interval>100000</check_interval>
         </PUSH>
 
         # if reroute is true
         <REROUTE>
             <batch_size>1000</batch_size>
             <min_intents>10000</min_intents>
-            <max_intents>1000000</max_intents>
-            <check_interval>100000</check_interval>
+            <max_intents>10000</max_intents>
+            <check_interval>10000</check_interval>
         </REROUTE>
     </NULL>
 
diff --git a/TestON/tests/SCPFmaxIntents/SCPFmaxIntents.py b/TestON/tests/SCPFmaxIntents/SCPFmaxIntents.py
index c543d8c..4bca4da 100644
--- a/TestON/tests/SCPFmaxIntents/SCPFmaxIntents.py
+++ b/TestON/tests/SCPFmaxIntents/SCPFmaxIntents.py
@@ -476,7 +476,12 @@
                                  onpass = "Successfully pushed and verified intents",
                                  onfail = "Failed to push and verify intents" )
         currIntents = main.ONOScli1.getTotalIntentsNum()
-        currFlows = main.ONOScli1.getTotalFlowsNum( timeout = main.timeout )
+        currFlows = 0
+        # Get current flows from REST API
+        temp = json.loads( main.ONOSrest1.flows() )
+        for t in temp:
+            if t.get("state") == "ADDED":
+                currFlows = currFlows + 1
         main.log.info( "Total Intents Installed: {}".format( currIntents ) )
         main.log.info( "Total Flows ADDED: {}".format( currFlows ) )
 
diff --git a/TestON/tests/SCPFmaxIntents/SCPFmaxIntents.topo b/TestON/tests/SCPFmaxIntents/SCPFmaxIntents.topo
index f34ed12..f2fbc0a 100755
--- a/TestON/tests/SCPFmaxIntents/SCPFmaxIntents.topo
+++ b/TestON/tests/SCPFmaxIntents/SCPFmaxIntents.topo
@@ -21,6 +21,17 @@
             </COMPONENTS>
         </ONOScli1>
 
+        <ONOSrest1>
+            <host>OC1</host>
+            <port>8181</port>
+            <user>onos</user>
+            <password>rocks</password>
+            <type>OnosRestDriver</type>
+            <connect_order>3</connect_order>
+            <COMPONENTS>
+            </COMPONENTS>
+        </ONOSrest1>
+
         <Mininet1>
             <host>localhost</host>
             <user>admin</user>