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

Commit 23643cc2 authored by Sarah Chin's avatar Sarah Chin
Browse files

Remove Thread.sleep in Telephony unittests

Refactored unit tests to remove calls to Thread.sleep:
waitForMs, waitForHandlerAction, waitForHandlerActionDelayed,
ResponseCaptor.await, waitUntilReady

Bug: 138886216
Test: atest TelephonyFrameworksTests

Change-Id: If9d944f85d4fd4392744ae008839e6e2472b9909
Merged-In: If9d944f85d4fd4392744ae008839e6e2472b9909
parent 3213d68b
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -427,7 +427,8 @@ public class GsmCdmaPhoneTest extends TelephonyTest {
        processAllMessages();
        assertTrue(mPhoneUT.isInEmergencySmsMode());
        // mTimeLastEmergencySmsSentMs uses System.currentTimeMillis()
        waitForMs(200);
        waitForMs(timeout + 5);
        processAllMessages();
        assertFalse(mPhoneUT.isInEmergencySmsMode());

        // Feature not supported
+4 −4
Original line number Diff line number Diff line
@@ -625,16 +625,16 @@ public abstract class TelephonyTest {
    }

    protected void tearDown() throws Exception {
        // unmonitor TestableLooper
        // unmonitor TestableLooper for TelephonyTest class
        if (mTestableLooper != null) {
            unmonitorTestableLooper(mTestableLooper);
        }
        mSimulatedCommands.dispose();

        // destroy all created TestableLoopers so they can be reused
        // destroy all newly created TestableLoopers so they can be reused
        for (TestableLooper looper : mTestableLoopers) {
            looper.destroy();
        }

        mSimulatedCommands.dispose();
        SharedPreferences sharedPreferences = mContext.getSharedPreferences((String) null, 0);
        sharedPreferences.edit().clear().commit();

+14 −24
Original line number Diff line number Diff line
@@ -35,13 +35,14 @@ import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.AsyncResult;
import android.os.HandlerThread;
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Telephony;
import android.test.mock.MockContentResolver;
import android.test.suitebuilder.annotation.MediumTest;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;

import androidx.test.filters.FlakyTest;

@@ -58,12 +59,15 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

@RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper
public class CdmaInboundSmsHandlerTest extends TelephonyTest {
    @Mock
    private SmsStorageMonitor mSmsStorageMonitor;
@@ -73,27 +77,12 @@ public class CdmaInboundSmsHandlerTest extends TelephonyTest {
    private SmsMessage mCdmaSmsMessage;

    private CdmaInboundSmsHandler mCdmaInboundSmsHandler;
    private CdmaInboundSmsHandlerTestHandler mCdmaInboundSmsHandlerTestHandler;
    private SmsEnvelope mSmsEnvelope = new SmsEnvelope();
    private FakeSmsContentProvider mContentProvider;
    private InboundSmsTracker mInboundSmsTracker;
    private byte[] mSmsPdu = new byte[]{(byte) 0xFF, (byte) 0xFF, (byte) 0xFF};
    private int mSubId0 = 0;

    private class CdmaInboundSmsHandlerTestHandler extends HandlerThread {

        private CdmaInboundSmsHandlerTestHandler(String name) {
            super(name);
        }

        @Override
        public void onLooperPrepared() {
            mCdmaInboundSmsHandler = CdmaInboundSmsHandler.makeInboundSmsHandler(mContext,
                    mSmsStorageMonitor, mPhone, null);
            setReady(true);
        }
    }

    private IState getCurrentState() {
        try {
            Method method = StateMachine.class.getDeclaredMethod("getCurrentState");
@@ -156,9 +145,10 @@ public class CdmaInboundSmsHandlerTest extends TelephonyTest {
        ((MockContentResolver)mContext.getContentResolver()).addProvider(
                Telephony.Sms.CONTENT_URI.getAuthority(), mContentProvider);

        mCdmaInboundSmsHandlerTestHandler = new CdmaInboundSmsHandlerTestHandler(TAG);
        mCdmaInboundSmsHandlerTestHandler.start();
        waitUntilReady();
        mCdmaInboundSmsHandler = CdmaInboundSmsHandler.makeInboundSmsHandler(mContext,
            mSmsStorageMonitor, mPhone, null);
        monitorTestableLooper(new TestableLooper(mCdmaInboundSmsHandler.getHandler().getLooper()));
        processAllMessages();
    }

    @After
@@ -166,13 +156,13 @@ public class CdmaInboundSmsHandlerTest extends TelephonyTest {
        // wait for wakelock to be released; timeout at 10s
        int i = 0;
        while (mCdmaInboundSmsHandler.getWakeLock().isHeld() && i < 100) {
            processAllMessages();
            waitForMs(100);
            i++;
        }
        assertFalse(mCdmaInboundSmsHandler.getWakeLock().isHeld());
        mCdmaInboundSmsHandler = null;
        mContentProvider.shutdown();
        mCdmaInboundSmsHandlerTestHandler.quit();
        super.tearDown();
    }

@@ -182,7 +172,7 @@ public class CdmaInboundSmsHandlerTest extends TelephonyTest {

        // trigger transition to IdleState
        mCdmaInboundSmsHandler.sendMessage(InboundSmsHandler.EVENT_START_ACCEPTING_SMS);
        waitForMs(50);
        processAllMessages();

        assertEquals("IdleState", getCurrentState().getName());
    }
@@ -198,7 +188,7 @@ public class CdmaInboundSmsHandlerTest extends TelephonyTest {
        doReturn(SmsEnvelope.TELESERVICE_WMT).when(mCdmaSmsMessage).getTeleService();
        mCdmaInboundSmsHandler.sendMessage(InboundSmsHandler.EVENT_NEW_SMS,
                new AsyncResult(null, mSmsMessage, null));
        waitForMs(100);
        processAllMessages();

        ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class);
        verify(mContext).sendBroadcast(intentArgumentCaptor.capture());
@@ -215,7 +205,7 @@ public class CdmaInboundSmsHandlerTest extends TelephonyTest {
        assertEquals("WaitingState", getCurrentState().getName());

        mContextFixture.sendBroadcastToOrderedBroadcastReceivers();
        waitForMs(50);
        processAllMessages();

        assertEquals("IdleState", getCurrentState().getName());
    }
@@ -247,7 +237,7 @@ public class CdmaInboundSmsHandlerTest extends TelephonyTest {
        doReturn(SmsEnvelope.TELESERVICE_WMT).when(mCdmaSmsMessage).getTeleService();
        mCdmaInboundSmsHandler.sendMessage(InboundSmsHandler.EVENT_NEW_SMS,
                new AsyncResult(null, mSmsMessage, null));
        waitForMs(100);
        processAllMessages();

        verify(mContext, never()).sendBroadcast(any(Intent.class));
        assertEquals("IdleState", getCurrentState().getName());
+11 −25
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.internal.telephony.dataconnection;

import static com.android.internal.telephony.TelephonyTestUtils.waitForMs;
import static com.android.internal.telephony.dataconnection.DcTrackerTest.FAKE_ADDRESS;
import static com.android.internal.telephony.dataconnection.DcTrackerTest.FAKE_DNS;
import static com.android.internal.telephony.dataconnection.DcTrackerTest.FAKE_GATEWAY;
@@ -36,10 +35,12 @@ import android.net.LinkProperties;
import android.net.NetworkUtils;
import android.os.AsyncResult;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.telephony.data.ApnSetting;
import android.telephony.data.DataCallResponse;
import android.test.suitebuilder.annotation.SmallTest;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;

import com.android.internal.telephony.DctConstants;
import com.android.internal.telephony.TelephonyTest;
@@ -50,6 +51,7 @@ import com.android.internal.util.StateMachine;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;

import java.lang.reflect.Method;
@@ -57,6 +59,8 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

@RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper
public class DcControllerTest extends TelephonyTest {

    private static final int DATA_CONNECTION_ACTIVE_PH_LINK_DORMANT = 1;
@@ -72,24 +76,6 @@ public class DcControllerTest extends TelephonyTest {
    UpdateLinkPropertyResult mResult;

    private DcController mDcc;
    private DcControllerTestHandler mDcControllerTestHandler;

    private class DcControllerTestHandler extends HandlerThread {

        private DcControllerTestHandler(String name) {
            super(name);
        }

        private Handler mHandler;

        @Override
        public void onLooperPrepared() {
            mHandler = new Handler();
            mDcc = DcController.makeDcc(mPhone, mDcTracker, mDataServiceManager, mHandler, "");
            mDcc.start();
            setReady(true);
        }
    }

    private IState getCurrentState() {
        try {
@@ -114,14 +100,14 @@ public class DcControllerTest extends TelephonyTest {
        mResult = new UpdateLinkPropertyResult(lp);
        doReturn(mResult).when(mDc).updateLinkProperty(any(DataCallResponse.class));

        mDcControllerTestHandler = new DcControllerTestHandler(TAG);
        mDcControllerTestHandler.start();
        waitUntilReady();
        mDcc = DcController.makeDcc(mPhone, mDcTracker, mDataServiceManager,
                new Handler(Looper.myLooper()), "");
        mDcc.start();
        processAllMessages();
    }

    @After
    public void tearDown() throws Exception {
        mDcControllerTestHandler.quit();
        super.tearDown();
    }

@@ -144,7 +130,7 @@ public class DcControllerTest extends TelephonyTest {
        mDcc.addActiveDcByCid(mDc);

        mDcc.sendMessage(EVENT_DATA_STATE_CHANGED, new AsyncResult(null, l, null));
        waitForMs(100);
        processAllMessages();

        verify(mDcTracker, times(1)).sendStopNetStatPoll(eq(DctConstants.Activity.DORMANT));
    }
+16 −32
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package com.android.internal.telephony.dataconnection;

import static com.android.internal.telephony.TelephonyTestUtils.waitForMs;

import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Matchers.anyLong;
@@ -27,12 +25,13 @@ import static org.mockito.Mockito.verify;

import android.os.AsyncResult;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Message;
import android.telephony.AccessNetworkConstants;
import android.telephony.AccessNetworkConstants.AccessNetworkType;
import android.telephony.data.ApnSetting;
import android.test.suitebuilder.annotation.SmallTest;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;

import com.android.internal.telephony.TelephonyTest;
import com.android.internal.telephony.dataconnection.AccessNetworksManager.QualifiedNetworks;
@@ -41,6 +40,7 @@ import com.android.internal.telephony.dataconnection.TransportManager.HandoverPa
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;

@@ -50,6 +50,8 @@ import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

@RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper
public class TransportManagerTest extends TelephonyTest {
    private static final int EVENT_HANDOVER_NEEDED = 1;

@@ -58,33 +60,15 @@ public class TransportManagerTest extends TelephonyTest {

    private TransportManager mTransportManager;

    private TransportManagerTestHandler mTransportManagerTestHandler;

    private class TransportManagerTestHandler extends HandlerThread {

        private TransportManagerTestHandler(String name) {
            super(name);
        }

        @Override
        public void onLooperPrepared() {
            mTransportManager = new TransportManager(mPhone);
            setReady(true);
        }
    }

    @Before
    public void setUp() throws Exception {
        super.setUp(getClass().getSimpleName());
        mTransportManagerTestHandler = new TransportManagerTestHandler(TAG);
        mTransportManagerTestHandler.start();
        waitUntilReady();
        mTransportManager = new TransportManager(mPhone);
        processAllMessages();
    }

    @After
    public void tearDown() throws Exception {
        mTransportManagerTestHandler.quit();
        mTransportManagerTestHandler.join();
        super.tearDown();
    }

@@ -100,7 +84,7 @@ public class TransportManagerTest extends TelephonyTest {
                                AccessNetworkType.IWLAN})));
        mTransportManager.obtainMessage(1 /* EVENT_QUALIFIED_NETWORKS_CHANGED */,
                new AsyncResult(null, networkList, null)).sendToTarget();
        waitForMs(100);
        processAllMessages();
        // Verify handover needed event was not sent
        verify(mTestHandler, never()).sendMessageAtTime(any(Message.class), anyLong());

@@ -114,7 +98,7 @@ public class TransportManagerTest extends TelephonyTest {
                                AccessNetworkType.EUTRAN})));
        mTransportManager.obtainMessage(1 /* EVENT_QUALIFIED_NETWORKS_CHANGED */,
                new AsyncResult(null, networkList, null)).sendToTarget();
        waitForMs(100);
        processAllMessages();

        ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);

@@ -140,7 +124,7 @@ public class TransportManagerTest extends TelephonyTest {
                                AccessNetworkType.IWLAN})));
        mTransportManager.obtainMessage(1 /* EVENT_QUALIFIED_NETWORKS_CHANGED */,
                new AsyncResult(null, networkList, null)).sendToTarget();
        waitForMs(100);
        processAllMessages();

        messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);

@@ -175,7 +159,7 @@ public class TransportManagerTest extends TelephonyTest {
                                AccessNetworkType.IWLAN})));
        mTransportManager.obtainMessage(1 /* EVENT_QUALIFIED_NETWORKS_CHANGED */,
                new AsyncResult(null, networkList, null)).sendToTarget();
        waitForMs(100);
        processAllMessages();
        // Verify handover needed event was not sent
        verify(mTestHandler, never()).sendMessageAtTime(any(Message.class), anyLong());

@@ -186,7 +170,7 @@ public class TransportManagerTest extends TelephonyTest {
                                AccessNetworkType.IWLAN})));
        mTransportManager.obtainMessage(1 /* EVENT_QUALIFIED_NETWORKS_CHANGED */,
                new AsyncResult(null, networkList, null)).sendToTarget();
        waitForMs(100);
        processAllMessages();
        // Verify handover needed event was not sent
        verify(mTestHandler, never()).sendMessageAtTime(any(Message.class), anyLong());
    }
@@ -209,7 +193,7 @@ public class TransportManagerTest extends TelephonyTest {
                                AccessNetworkType.IWLAN})));
        mTransportManager.obtainMessage(1 /* EVENT_QUALIFIED_NETWORKS_CHANGED */,
                new AsyncResult(null, networkList, null)).sendToTarget();
        waitForMs(100);
        processAllMessages();
        // Verify handover needed event was not sent
        verify(mTestHandler, never()).sendMessageAtTime(any(Message.class), anyLong());

@@ -223,7 +207,7 @@ public class TransportManagerTest extends TelephonyTest {
                                AccessNetworkType.EUTRAN})));
        mTransportManager.obtainMessage(1 /* EVENT_QUALIFIED_NETWORKS_CHANGED */,
                new AsyncResult(null, networkList, null)).sendToTarget();
        waitForMs(100);
        processAllMessages();

        ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);

@@ -245,7 +229,7 @@ public class TransportManagerTest extends TelephonyTest {
                                AccessNetworkType.IWLAN})));
        mTransportManager.obtainMessage(1 /* EVENT_QUALIFIED_NETWORKS_CHANGED */,
                new AsyncResult(null, networkList, null)).sendToTarget();
        waitForMs(100);
        processAllMessages();

        // Verify handover needed event was sent only once (for the previous change)
        verify(mTestHandler, times(1)).sendMessageAtTime(messageArgumentCaptor.capture(),
@@ -259,7 +243,7 @@ public class TransportManagerTest extends TelephonyTest {
        params.callback.onCompleted(true, false);
        assertEquals(AccessNetworkConstants.TRANSPORT_TYPE_WLAN,
                mTransportManager.getCurrentTransport(ApnSetting.TYPE_IMS));
        waitForMs(100);
        processAllMessages();

        listQueue = getAvailableNetworksList();
        // Verify the queue is empty.
Loading