Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 44fc41e5 authored by Jack Yu's avatar Jack Yu
Browse files

Fixed flaky testRoamingPhoneTypeSwitch

Test: Telephony unit tests
bug: 29579544
Merged-In: Ic43240a0001668cff4e6632100fc974fa675ef04
Change-Id: Ic43240a0001668cff4e6632100fc974fa675ef04
parent d650bdb4
Loading
Loading
Loading
Loading
+12 −14
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import static org.mockito.Matchers.anyLong;
import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.nullable;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.spy;
@@ -70,6 +71,7 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

public class ServiceStateTrackerTest extends TelephonyTest {
@@ -982,14 +984,14 @@ public class ServiceStateTrackerTest extends TelephonyTest {
    @Test
    @MediumTest
    public void testRoamingPhoneTypeSwitch() {

        // Enable roaming
        doReturn(true).when(mPhone).isPhoneTypeGsm();

        mSimulatedCommands.setVoiceRegState(ServiceState.RIL_REG_STATE_ROAMING);
        mSimulatedCommands.setDataRegState(ServiceState.RIL_REG_STATE_ROAMING);
        mSimulatedCommands.notifyNetworkStateChanged();

        waitForMs(100);
        waitForMs(200);

        sst.registerForDataRoamingOff(mTestHandler, EVENT_DATA_ROAMING_OFF, null);
        sst.registerForVoiceRoamingOff(mTestHandler, EVENT_VOICE_ROAMING_OFF, null);
@@ -1001,20 +1003,16 @@ public class ServiceStateTrackerTest extends TelephonyTest {

        // verify if registered handler has message posted to it
        ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);
        verify(mTestHandler, times(3)).sendMessageAtTime(
        verify(mTestHandler, atLeast(3)).sendMessageAtTime(
                messageArgumentCaptor.capture(), anyLong());
        List<Message> messages = messageArgumentCaptor.getAllValues();
        assertEquals(EVENT_VOICE_ROAMING_OFF, messages.get(0).what);
        assertEquals(EVENT_DATA_ROAMING_OFF, messages.get(1).what);
        assertEquals(EVENT_DATA_CONNECTION_DETACHED, messages.get(2).what);

        HashSet<Integer> messageSet = new HashSet<>();
        for (Message m : messageArgumentCaptor.getAllValues()) {
            messageSet.add(m.what);
        }

        // Switch the phone type again
        doReturn(true).when(mPhone).isPhoneTypeGsm();
        sst.updatePhoneType();
        // Make sure we don't get more events.
        verify(mTestHandler, times(3)).sendMessageAtTime(
                messageArgumentCaptor.capture(), anyLong());
        assertTrue(messageSet.contains(EVENT_DATA_ROAMING_OFF));
        assertTrue(messageSet.contains(EVENT_VOICE_ROAMING_OFF));
        assertTrue(messageSet.contains(EVENT_DATA_CONNECTION_DETACHED));
    }

    @Test