Merge "Address the flakiness in AnrHelperTest" into sc-dev
This commit is contained in:
@@ -18,21 +18,28 @@ package com.android.server.am;
|
|||||||
|
|
||||||
import static android.testing.DexmakerShareClassLoaderRule.runWithDexmakerShareClassLoader;
|
import static android.testing.DexmakerShareClassLoaderRule.runWithDexmakerShareClassLoader;
|
||||||
|
|
||||||
|
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.timeout;
|
import static org.mockito.Mockito.timeout;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
|
import android.os.Handler;
|
||||||
import android.platform.test.annotations.Presubmit;
|
import android.platform.test.annotations.Presubmit;
|
||||||
|
|
||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
|
|
||||||
|
import com.android.server.appop.AppOpsService;
|
||||||
import com.android.server.wm.WindowProcessController;
|
import com.android.server.wm.WindowProcessController;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
@@ -44,19 +51,35 @@ import java.util.concurrent.TimeUnit;
|
|||||||
@SmallTest
|
@SmallTest
|
||||||
@Presubmit
|
@Presubmit
|
||||||
public class AnrHelperTest {
|
public class AnrHelperTest {
|
||||||
private final AnrHelper mAnrHelper = new AnrHelper(mock(ActivityManagerService.class));
|
private AnrHelper mAnrHelper;
|
||||||
|
|
||||||
private ProcessRecord mAnrApp;
|
private ProcessRecord mAnrApp;
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public ServiceThreadRule mServiceThreadRule = new ServiceThreadRule();
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
|
final Context context = getInstrumentation().getTargetContext();
|
||||||
runWithDexmakerShareClassLoader(() -> {
|
runWithDexmakerShareClassLoader(() -> {
|
||||||
mAnrApp = mock(ProcessRecord.class);
|
mAnrApp = mock(ProcessRecord.class);
|
||||||
final ActivityManagerService service = mock(ActivityManagerService.class);
|
|
||||||
final ProcessErrorStateRecord errorState = mock(ProcessErrorStateRecord.class);
|
final ProcessErrorStateRecord errorState = mock(ProcessErrorStateRecord.class);
|
||||||
setFieldValue(ProcessErrorStateRecord.class, errorState, "mProcLock",
|
setFieldValue(ProcessErrorStateRecord.class, errorState, "mProcLock",
|
||||||
new ActivityManagerProcLock());
|
new ActivityManagerProcLock());
|
||||||
setFieldValue(ProcessRecord.class, mAnrApp, "mErrorState", errorState);
|
setFieldValue(ProcessRecord.class, mAnrApp, "mErrorState", errorState);
|
||||||
|
final ActivityManagerService service = new ActivityManagerService(
|
||||||
|
new ActivityManagerService.Injector(context) {
|
||||||
|
@Override
|
||||||
|
public AppOpsService getAppOpsService(File file, Handler handler) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Handler getUiHandler(ActivityManagerService service) {
|
||||||
|
return mServiceThreadRule.getThread().getThreadHandler();
|
||||||
|
}
|
||||||
|
}, mServiceThreadRule.getThread());
|
||||||
|
mAnrHelper = new AnrHelper(service);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user