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

Commit 03cf828e authored by James.cf Lin's avatar James.cf Lin
Browse files

Fix flake unit test

Run the handler in background thread and wait for message to be processed.

Bug: 183625221
Test: atest EabBulkCapabilityUpdaterTest#testRefreshCapabilities --iteration 10
Merged-In: I908ebd76b36aaedd177384dd718c1b8477a28faf
Change-Id: Ieade55014035a6d84e9bcd63eae1c6ac6205dd00
parent e2913d09
Loading
Loading
Loading
Loading
+27 −25
Original line number Original line Diff line number Diff line
@@ -29,7 +29,7 @@ import static org.mockito.Mockito.verify;
import android.content.SharedPreferences;
import android.content.SharedPreferences;
import android.net.Uri;
import android.net.Uri;
import android.os.Handler;
import android.os.Handler;
import android.os.Looper;
import android.os.HandlerThread;
import android.os.PersistableBundle;
import android.os.PersistableBundle;
import android.telephony.CarrierConfigManager;
import android.telephony.CarrierConfigManager;
import android.telephony.ims.ImsException;
import android.telephony.ims.ImsException;
@@ -52,6 +52,10 @@ import java.util.List;
public class EabBulkCapabilityUpdaterTest extends ImsTestBase {
public class EabBulkCapabilityUpdaterTest extends ImsTestBase {


    private final int mSubId = 1;
    private final int mSubId = 1;

    private Handler mHandler;
    private HandlerThread mHandlerThread;

    @Mock
    @Mock
    private UceController.UceControllerCallback mMockUceControllerCallback;
    private UceController.UceControllerCallback mMockUceControllerCallback;
    @Mock
    @Mock
@@ -71,6 +75,10 @@ public class EabBulkCapabilityUpdaterTest extends ImsTestBase {
    public void setUp() throws Exception {
    public void setUp() throws Exception {
        super.setUp();
        super.setUp();


        mHandlerThread = new HandlerThread("TestThread");
        mHandlerThread.start();
        mHandler = mHandlerThread.getThreadHandler();

        doReturn(mSharedPreferences).when(mContext).getSharedPreferences(anyString(), anyInt());
        doReturn(mSharedPreferences).when(mContext).getSharedPreferences(anyString(), anyInt());
        doReturn(0L).when(mSharedPreferences).getLong(anyString(), anyInt());
        doReturn(0L).when(mSharedPreferences).getLong(anyString(), anyInt());
        doReturn(mSharedPreferencesEditor).when(mSharedPreferences).edit();
        doReturn(mSharedPreferencesEditor).when(mSharedPreferences).edit();
@@ -81,11 +89,11 @@ public class EabBulkCapabilityUpdaterTest extends ImsTestBase {
    @After
    @After
    public void tearDown() throws Exception {
    public void tearDown() throws Exception {
        super.tearDown();
        super.tearDown();
        mHandlerThread.quit();
    }
    }


    @Test
    @Test
    public void testRefreshCapabilities() throws Exception {
    public void testRefreshCapabilities() throws Exception {
        Handler handler = new Handler(Looper.getMainLooper());
        // mock user settings
        // mock user settings
        mockUceUserSettings(true);
        mockUceUserSettings(true);
        mockBulkCapabilityCarrierConfig(true);
        mockBulkCapabilityCarrierConfig(true);
@@ -102,14 +110,10 @@ public class EabBulkCapabilityUpdaterTest extends ImsTestBase {
                mMockEabControllerImpl,
                mMockEabControllerImpl,
                mEabContactSyncController,
                mEabContactSyncController,
                mMockUceControllerCallback,
                mMockUceControllerCallback,
                handler);
                mHandler);

        waitHandlerThreadFinish();


        // wait handler task finished
        int retryTimes = 0;
        while (handler.hasMessagesOrCallbacks() && retryTimes < 2) {
            Thread.sleep(1000);
            retryTimes++;
        }
        verify(mMockUceControllerCallback).refreshCapabilities(
        verify(mMockUceControllerCallback).refreshCapabilities(
                anyList(),
                anyList(),
                any(IRcsUceControllerCallback.class));
                any(IRcsUceControllerCallback.class));
@@ -117,7 +121,6 @@ public class EabBulkCapabilityUpdaterTest extends ImsTestBase {


    @Test
    @Test
    public void testUceSettingsDisabled() throws Exception {
    public void testUceSettingsDisabled() throws Exception {
        Handler handler = new Handler(Looper.getMainLooper());
        // mock user settings
        // mock user settings
        mockUceUserSettings(false);
        mockUceUserSettings(false);
        mockBulkCapabilityCarrierConfig(true);
        mockBulkCapabilityCarrierConfig(true);
@@ -134,14 +137,10 @@ public class EabBulkCapabilityUpdaterTest extends ImsTestBase {
                mMockEabControllerImpl,
                mMockEabControllerImpl,
                mEabContactSyncController,
                mEabContactSyncController,
                mMockUceControllerCallback,
                mMockUceControllerCallback,
                handler);
                mHandler);

        waitHandlerThreadFinish();


        // wait handler task finished
        int retryTimes = 0;
        while (handler.hasMessagesOrCallbacks() && retryTimes < 2) {
            Thread.sleep(1000);
            retryTimes++;
        }
        verify(mMockUceControllerCallback, never()).refreshCapabilities(
        verify(mMockUceControllerCallback, never()).refreshCapabilities(
                any(),
                any(),
                any(IRcsUceControllerCallback.class));
                any(IRcsUceControllerCallback.class));
@@ -149,7 +148,6 @@ public class EabBulkCapabilityUpdaterTest extends ImsTestBase {


    @Test
    @Test
    public void testCarrierConfigDisabled() throws Exception {
    public void testCarrierConfigDisabled() throws Exception {
        Handler handler = new Handler(Looper.getMainLooper());
        // mock user settings
        // mock user settings
        mockUceUserSettings(true);
        mockUceUserSettings(true);
        mockBulkCapabilityCarrierConfig(false);
        mockBulkCapabilityCarrierConfig(false);
@@ -166,14 +164,10 @@ public class EabBulkCapabilityUpdaterTest extends ImsTestBase {
                mMockEabControllerImpl,
                mMockEabControllerImpl,
                mEabContactSyncController,
                mEabContactSyncController,
                mMockUceControllerCallback,
                mMockUceControllerCallback,
                handler);
                mHandler);

        waitHandlerThreadFinish();


        // wait handler task finished
        int retryTimes = 0;
        while (handler.hasMessagesOrCallbacks() && retryTimes < 2) {
            Thread.sleep(1000);
            retryTimes++;
        }
        verify(mMockUceControllerCallback, never()).refreshCapabilities(
        verify(mMockUceControllerCallback, never()).refreshCapabilities(
                anyList(),
                anyList(),
                any(IRcsUceControllerCallback.class));
                any(IRcsUceControllerCallback.class));
@@ -195,4 +189,12 @@ public class EabBulkCapabilityUpdaterTest extends ImsTestBase {
        doReturn(mRcsUceAdapter).when(mImsRcsManager).getUceAdapter();
        doReturn(mRcsUceAdapter).when(mImsRcsManager).getUceAdapter();
        doReturn(isEnabled).when(mRcsUceAdapter).isUceSettingEnabled();
        doReturn(isEnabled).when(mRcsUceAdapter).isUceSettingEnabled();
    }
    }

    private void waitHandlerThreadFinish() throws Exception {
        int retryTimes = 0;
        do {
            Thread.sleep(1000);
            retryTimes++;
        } while(mHandler.hasMessagesOrCallbacks() && retryTimes < 2);
    }
}
}