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

Commit 762e3c80 authored by Calvin Pan's avatar Calvin Pan
Browse files

Fix flaky unit test

Check handler whether has any message ongoing to prevent timing issue

Bug: 181892680
Test: atest
Change-Id: Ia8a93f3b9d0374674e3e012ffc294e53e43f6475
parent 3e3026b0
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -219,14 +219,14 @@ public final class EabBulkCapabilityUpdater {
            EabControllerImpl eabControllerImpl,
            EabContactSyncController eabContactSyncController,
            UceController.UceControllerCallback uceControllerCallback,
            Looper looper) {
            Handler handler) {
        mContext = context;
        mSubId = subId;
        mEabControllerImpl = eabControllerImpl;
        mEabContactSyncController = eabContactSyncController;
        mUceControllerCallback = uceControllerCallback;

        mHandler = new Handler(looper);
        mHandler = handler;
        mContactProviderListener = new ContactChangedListener(mHandler);
        mEabSettingListener = new EabSettingsListener(mHandler);
        mCapabilityExpiredListener = new CapabilityExpiredListener();
+1 −1
Original line number Diff line number Diff line
@@ -94,7 +94,7 @@ public class EabControllerImpl implements EabController {
                this,
                new EabContactSyncController(),
                mUceControllerCallback,
                looper);
                mHandler);
    }

    @Override
+31 −10
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import static org.mockito.Mockito.verify;

import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Handler;
import android.os.Looper;
import android.os.PersistableBundle;
import android.telephony.CarrierConfigManager;
@@ -84,6 +85,7 @@ public class EabBulkCapabilityUpdaterTest extends ImsTestBase {

    @Test
    public void testRefreshCapabilities() throws Exception {
        Handler handler = new Handler(Looper.getMainLooper());
        // mock user settings
        mockUceUserSettings(true);
        mockBulkCapabilityCarrierConfig(true);
@@ -94,15 +96,20 @@ public class EabBulkCapabilityUpdaterTest extends ImsTestBase {
                .when(mEabContactSyncController)
                .syncContactToEabProvider(any());

        EabBulkCapabilityUpdater eabBulkCapabilityUpdater = new EabBulkCapabilityUpdater(
        new EabBulkCapabilityUpdater(
                mContext,
                mSubId,
                mMockEabControllerImpl,
                mEabContactSyncController,
                mMockUceControllerCallback,
                Looper.getMainLooper());

                handler);

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

    @Test
    public void testUceSettingsDisabled() throws Exception {
        Handler handler = new Handler(Looper.getMainLooper());
        // mock user settings
        mockUceUserSettings(false);
        mockBulkCapabilityCarrierConfig(true);
@@ -120,14 +128,20 @@ public class EabBulkCapabilityUpdaterTest extends ImsTestBase {
                .when(mEabContactSyncController)
                .syncContactToEabProvider(any());

        EabBulkCapabilityUpdater eabBulkCapabilityUpdater = new EabBulkCapabilityUpdater(
        new EabBulkCapabilityUpdater(
                mContext,
                mSubId,
                mMockEabControllerImpl,
                mEabContactSyncController,
                mMockUceControllerCallback,
                Looper.getMainLooper());
                handler);

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

    @Test
    public void testCarrierConfigDisabled() throws Exception {
        Handler handler = new Handler(Looper.getMainLooper());
        // mock user settings
        mockUceUserSettings(true);
        mockBulkCapabilityCarrierConfig(false);
@@ -145,14 +160,20 @@ public class EabBulkCapabilityUpdaterTest extends ImsTestBase {
                .when(mEabContactSyncController)
                .syncContactToEabProvider(any());

        EabBulkCapabilityUpdater eabBulkCapabilityUpdater = new EabBulkCapabilityUpdater(
        new EabBulkCapabilityUpdater(
                mContext,
                mSubId,
                mMockEabControllerImpl,
                mEabContactSyncController,
                mMockUceControllerCallback,
                Looper.getMainLooper());
                handler);

        // wait handler task finished
        int retryTimes = 0;
        while (handler.hasMessagesOrCallbacks() && retryTimes < 2) {
            Thread.sleep(1000);
            retryTimes++;
        }
        verify(mMockUceControllerCallback, never()).refreshCapabilities(
                anyList(),
                any(IRcsUceControllerCallback.class));