Merge "Fixes for mastership failover test"
diff --git a/TestON/tests/SCPF/SCPFmastershipFailoverLat/SCPFmastershipFailoverLat.py b/TestON/tests/SCPF/SCPFmastershipFailoverLat/SCPFmastershipFailoverLat.py
index 208ab19..24d10a6 100644
--- a/TestON/tests/SCPF/SCPFmastershipFailoverLat/SCPFmastershipFailoverLat.py
+++ b/TestON/tests/SCPF/SCPFmastershipFailoverLat/SCPFmastershipFailoverLat.py
@@ -185,21 +185,21 @@
                 eventOutput = main.Cluster.active( CLInum ).CLI.events( args='-a' ).split( "\r\n" )
                 for line in reversed( eventOutput ):
                     timestamp = line[ :23 ] if line[ 19 ] != '-' else line[ :19 ] + '.000'
-                    if "INSTANCE_DEACTIVATED" in line and len( instanceDeactivatedLats ) == CLInum:
-                        deactivateTime = float( datetime.datetime.strptime(
-                                            timestamp, "%Y-%m-%dT%H:%M:%S.%f" ).strftime( '%s.%f' ) ) * 1000.0
-                        instanceDeactivatedLats.append( deactivateTime - time1 )
-                    elif "MASTER_CHANGED" in line and len( masterChangedLats ) == CLInum:
-                        changedTime = float( datetime.datetime.strptime(
-                                            timestamp, "%Y-%m-%dT%H:%M:%S.%f" ).strftime( '%s.%f' ) ) * 1000.0
-                        masterChangedLats.append( changedTime - time1 )
-                    if len( instanceDeactivatedLats ) > CLInum and len( masterChangedLats ) > CLInum:
+                    timestamp = float( datetime.datetime.strptime( timestamp, "%Y-%m-%dT%H:%M:%S.%f" ).strftime( '%s.%f' ) ) * 1000.0
+                    if timestamp - time1 >= 0:
+                        if "INSTANCE_DEACTIVATED" in line:
+                            instanceDeactivatedLats.append( timestamp - time1 )
+                        elif "MASTER_CHANGED" in line:
+                            masterChangedLats.append( timestamp - time1 )
+                    else:
                         break
 
             instanceDeactivatedLats.sort()
+            masterChangedLats.sort()
             instanceDeactivated = instanceDeactivatedLats[ 0 ]
+            masterChanged = masterChangedLats[ 0 ]
 
-            eventLatCheck = True if masterChangedLats and instanceDeactivated else False
+            eventLatCheck = True if masterChanged and instanceDeactivated else False
             if not eventLatCheck:
                 main.log.warn( "Latencies were NOT obtained from 'events' successfully." )
 
@@ -221,20 +221,26 @@
             validDataCheck = False
             if tsharkLatCheck:
                 main.log.info( "instanceDeactivated: " + str( instanceDeactivated ) )
-                main.log.info( "roleRequestLat - instanceDeactivated: " + str( roleRequestLat - instanceDeactivated ) )
+                main.log.info( "masterChanged: " + str( masterChanged ) )
+                main.log.info( "roleRequestLat: " + str( roleRequestLat ) )
                 if iteration >= main.warmUp:
                     main.log.info( "Verifying that the data are valid." )  # Don't record data during a warm-up
-                    validDataCheck = roleRequestLat - instanceDeactivated >= 0 and \
-                                     instanceDeactivated >= 0
+                    validDataCheck = roleRequestLat >= 0 and \
+                                     instanceDeactivated >= 0 and \
+                                     masterChanged >= 0
                     if not validDataCheck:
                         main.log.warn( "Data are NOT valid." )
 
                     if eventLatCheck and tsharkLatCheck and validDataCheck:
                         main.log.info( "Saving data..." )
-                        main.latencyData[ 'kill_to_deactivation' ]\
-                            .append( instanceDeactivated )
-                        main.latencyData[ 'deactivation_to_role_request' ]\
-                            .append( roleRequestLat - instanceDeactivated )
+                        if roleRequestLat >= instanceDeactivated:
+                            main.latencyData[ 'kill_to_deactivation' ].append( instanceDeactivated )
+                            main.latencyData[ 'deactivation_to_role_request' ].append( roleRequestLat - instanceDeactivated )
+                        else:
+                            main.latencyData[ 'kill_to_deactivation' ].append( roleRequestLat )
+                            main.latencyData[ 'deactivation_to_role_request' ].append( 0 )
+                        main.log.info( "kill_to_deactivation: " + str( main.latencyData[ 'kill_to_deactivation' ][ -1 ] ) )
+                        main.log.info( "deactivation_to_role_request: " + str( main.latencyData[ 'deactivation_to_role_request' ][ -1 ] ) )
 
             # Restart ONOS node
             main.log.info( "Restart ONOS node " + strNodeNumToKill + " and checking status of restart." )