summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorseanjstsai <seanjstsai@google.com>2023-11-01 06:01:51 +0000
committerSean.JS Tsai <seanjstsai@google.com>2023-11-01 06:12:46 +0000
commit4d5576fbe150c859dd1bc004d23d7ed6eb7dd180 (patch)
tree36090690bd2e55712ba5e11334ae1ce6d87d3288
parentaf1bc0e9895e0a395666fabd09eda6b42cc168ba (diff)
downloadImsServiceEntitlement-4d5576fbe150c859dd1bc004d23d7ed6eb7dd180.tar.gz
[ImsServiceEntitlement] Fix Flaky test EntitlementUtilsTest#entitlementCheck_cancelEntitlementCheck_onFailure
Sometimes onSuccess() is invoked before the future task is canceled FR:2/200 Test: atest ImsServiceEntitlementUnitTests --iterations 200 PASS Bug: 308606054 Change-Id: I7867c54510dbde4520e2b9520d40b7fb4731328d
-rw-r--r--tests/unittests/src/com/android/imsserviceentitlement/EntitlementUtilsTest.java27
1 files changed, 24 insertions, 3 deletions
diff --git a/tests/unittests/src/com/android/imsserviceentitlement/EntitlementUtilsTest.java b/tests/unittests/src/com/android/imsserviceentitlement/EntitlementUtilsTest.java
index 04477c9..18c3cb0 100644
--- a/tests/unittests/src/com/android/imsserviceentitlement/EntitlementUtilsTest.java
+++ b/tests/unittests/src/com/android/imsserviceentitlement/EntitlementUtilsTest.java
@@ -20,11 +20,15 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.content.Context;
+
import androidx.test.runner.AndroidJUnit4;
import com.android.imsserviceentitlement.WfcActivationController.EntitlementResultCallback;
+import com.android.imsserviceentitlement.entitlement.EntitlementConfiguration;
import com.android.imsserviceentitlement.entitlement.EntitlementResult;
import com.android.imsserviceentitlement.utils.Executors;
+import com.android.libraries.entitlement.ServiceEntitlement;
import org.junit.Before;
import org.junit.Rule;
@@ -35,6 +39,7 @@ import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import java.lang.reflect.Field;
+import java.util.concurrent.CountDownLatch;
@RunWith(AndroidJUnit4.class)
public class EntitlementUtilsTest {
@@ -42,6 +47,9 @@ public class EntitlementUtilsTest {
@Mock private ImsEntitlementApi mMockImsEntitlementApi;
@Mock private EntitlementResultCallback mEntitlementResultCallback;
@Mock private EntitlementResult mEntitlementResult;
+ @Mock private Context mContext;
+ @Mock private ServiceEntitlement mServiceEntitlement;
+ @Mock private EntitlementConfiguration mEntitlementConfiguration;
@Before
public void setUp() throws Exception {
@@ -69,10 +77,23 @@ public class EntitlementUtilsTest {
@Test
public void entitlementCheck_cancelEntitlementCheck_onFailure() throws Exception {
useDirectExecutor(false);
- when(mMockImsEntitlementApi.checkEntitlementStatus()).thenReturn(mEntitlementResult);
-
- EntitlementUtils.entitlementCheck(mMockImsEntitlementApi, mEntitlementResultCallback);
+ CountDownLatch entitlementCheckLatch = new CountDownLatch(1);
+ ImsEntitlementApi mockImsEntitlementApi =
+ new ImsEntitlementApi(
+ mContext, 1, true, mServiceEntitlement, mEntitlementConfiguration) {
+ @Override
+ public EntitlementResult checkEntitlementStatus() {
+ try {
+ entitlementCheckLatch.await();
+ } catch (InterruptedException e) {
+ }
+ return mEntitlementResult;
+ }
+ };
+
+ EntitlementUtils.entitlementCheck(mockImsEntitlementApi, mEntitlementResultCallback);
EntitlementUtils.cancelEntitlementCheck();
+ entitlementCheckLatch.countDown();
verify(mEntitlementResultCallback, never()).onEntitlementResult(mEntitlementResult);
}