Merge "Fix flaky JUnit test"
This commit is contained in:
committed by
Android (Google) Code Review
commit
a14d7504bb
@@ -51,6 +51,7 @@ import com.android.settingslib.utils.ThreadUtils;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.Future;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -147,27 +148,7 @@ public class AutoSelectPreferenceController extends TelephonyTogglePreferenceCon
|
|||||||
@Override
|
@Override
|
||||||
public boolean setChecked(boolean isChecked) {
|
public boolean setChecked(boolean isChecked) {
|
||||||
if (isChecked) {
|
if (isChecked) {
|
||||||
final long startMillis = SystemClock.elapsedRealtime();
|
setAutomaticSelectionMode();
|
||||||
showAutoSelectProgressBar();
|
|
||||||
mSwitchPreference.setEnabled(false);
|
|
||||||
ThreadUtils.postOnBackgroundThread(() -> {
|
|
||||||
// set network selection mode in background
|
|
||||||
mTelephonyManager.setNetworkSelectionModeAutomatic();
|
|
||||||
final int mode = mTelephonyManager.getNetworkSelectionMode();
|
|
||||||
|
|
||||||
//Update UI in UI thread
|
|
||||||
final long durationMillis = SystemClock.elapsedRealtime() - startMillis;
|
|
||||||
mUiHandler.postDelayed(() -> {
|
|
||||||
mSwitchPreference.setEnabled(true);
|
|
||||||
mSwitchPreference.setChecked(
|
|
||||||
mode == TelephonyManager.NETWORK_SELECTION_MODE_AUTO);
|
|
||||||
for (OnNetworkSelectModeListener lsn : mListeners) {
|
|
||||||
lsn.onNetworkSelectModeChanged();
|
|
||||||
}
|
|
||||||
dismissProgressBar();
|
|
||||||
},
|
|
||||||
Math.max(MINIMUM_DIALOG_TIME_MILLIS - durationMillis, 0));
|
|
||||||
});
|
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
final Bundle bundle = new Bundle();
|
final Bundle bundle = new Bundle();
|
||||||
@@ -182,6 +163,30 @@ public class AutoSelectPreferenceController extends TelephonyTogglePreferenceCon
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
Future setAutomaticSelectionMode() {
|
||||||
|
final long startMillis = SystemClock.elapsedRealtime();
|
||||||
|
showAutoSelectProgressBar();
|
||||||
|
mSwitchPreference.setEnabled(false);
|
||||||
|
return ThreadUtils.postOnBackgroundThread(() -> {
|
||||||
|
// set network selection mode in background
|
||||||
|
mTelephonyManager.setNetworkSelectionModeAutomatic();
|
||||||
|
final int mode = mTelephonyManager.getNetworkSelectionMode();
|
||||||
|
|
||||||
|
//Update UI in UI thread
|
||||||
|
final long durationMillis = SystemClock.elapsedRealtime() - startMillis;
|
||||||
|
mUiHandler.postDelayed(() -> {
|
||||||
|
mSwitchPreference.setEnabled(true);
|
||||||
|
mSwitchPreference.setChecked(
|
||||||
|
mode == TelephonyManager.NETWORK_SELECTION_MODE_AUTO);
|
||||||
|
for (OnNetworkSelectModeListener lsn : mListeners) {
|
||||||
|
lsn.onNetworkSelectModeChanged();
|
||||||
|
}
|
||||||
|
dismissProgressBar();
|
||||||
|
}, Math.max(MINIMUM_DIALOG_TIME_MILLIS - durationMillis, 0));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public AutoSelectPreferenceController init(Lifecycle lifecycle, int subId) {
|
public AutoSelectPreferenceController init(Lifecycle lifecycle, int subId) {
|
||||||
mSubId = subId;
|
mSubId = subId;
|
||||||
mTelephonyManager = mContext.getSystemService(TelephonyManager.class)
|
mTelephonyManager = mContext.getSystemService(TelephonyManager.class)
|
||||||
|
@@ -18,6 +18,7 @@ package com.android.settings.network.telephony.gsm;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.junit.Assert.fail;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
@@ -42,6 +43,9 @@ import org.mockito.Answers;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
|
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
public class AutoSelectPreferenceControllerTest {
|
public class AutoSelectPreferenceControllerTest {
|
||||||
private static final int SUB_ID = 2;
|
private static final int SUB_ID = 2;
|
||||||
@@ -93,7 +97,14 @@ public class AutoSelectPreferenceControllerTest {
|
|||||||
when(mTelephonyManager.getNetworkSelectionMode()).thenReturn(
|
when(mTelephonyManager.getNetworkSelectionMode()).thenReturn(
|
||||||
TelephonyManager.NETWORK_SELECTION_MODE_AUTO);
|
TelephonyManager.NETWORK_SELECTION_MODE_AUTO);
|
||||||
|
|
||||||
assertThat(mController.setChecked(true)).isFalse();
|
// Wait for asynchronous thread to finish, otherwise test will flake.
|
||||||
|
Future thread = mController.setAutomaticSelectionMode();
|
||||||
|
try {
|
||||||
|
thread.get();
|
||||||
|
} catch (ExecutionException | InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
fail("Exception during automatic selection");
|
||||||
|
}
|
||||||
|
|
||||||
verify(mProgressDialog).show();
|
verify(mProgressDialog).show();
|
||||||
verify(mTelephonyManager).setNetworkSelectionModeAutomatic();
|
verify(mTelephonyManager).setNetworkSelectionModeAutomatic();
|
||||||
@@ -136,4 +147,4 @@ public class AutoSelectPreferenceControllerTest {
|
|||||||
public String resourceString(String name, Object value) {
|
public String resourceString(String name, Object value) {
|
||||||
return mContext.getResources().getString(resourceId("string", name), value);
|
return mContext.getResources().getString(resourceId("string", name), value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user