Example system service test under Ravenwood.
This change demonstrates a moderately complex test of a specific
system service, in this case `UriGrantsManagerService`.
Bug: 292141694
Test: atest FrameworksServicesTestsRavenwood FrameworksServicesTests
Change-Id: Ia16632f2c9a1e24deb9c1320fdbb1c099e3d74c3
diff --git a/services/tests/servicestests/Android.bp b/services/tests/servicestests/Android.bp
index 2ece8c7..9b84190 100644
--- a/services/tests/servicestests/Android.bp
+++ b/services/tests/servicestests/Android.bp
@@ -79,6 +79,7 @@
"coretests-aidl",
"securebox",
"flag-junit",
+ "ravenwood-junit",
],
libs: [
@@ -140,6 +141,23 @@
resource_zips: [":FrameworksServicesTests_apks_as_resources"],
}
+android_ravenwood_test {
+ name: "FrameworksServicesTestsRavenwood",
+ libs: [
+ "android.test.mock",
+ ],
+ static_libs: [
+ "androidx.annotation_annotation",
+ "androidx.test.rules",
+ "mockito_ravenwood",
+ "services.core",
+ ],
+ srcs: [
+ "src/com/android/server/uri/**/*.java",
+ ],
+ auto_gen_config: true,
+}
+
java_library {
name: "servicestests-core-utils",
srcs: [
diff --git a/services/tests/servicestests/src/com/android/server/uri/UriGrantsManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/uri/UriGrantsManagerServiceTest.java
index e418d2f..769ec5f 100644
--- a/services/tests/servicestests/src/com/android/server/uri/UriGrantsManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/uri/UriGrantsManagerServiceTest.java
@@ -57,17 +57,22 @@
import android.net.Uri;
import android.os.Process;
import android.os.UserHandle;
+import android.platform.test.ravenwood.RavenwoodRule;
import android.util.ArraySet;
import androidx.test.InstrumentationRegistry;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import java.util.Arrays;
import java.util.Set;
public class UriGrantsManagerServiceTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
+
private UriGrantsMockContext mContext;
private UriGrantsManagerInternal mService;
@@ -79,7 +84,7 @@
@Before
public void setUp() throws Exception {
- mContext = new UriGrantsMockContext(InstrumentationRegistry.getContext());
+ mContext = new UriGrantsMockContext();
mService = UriGrantsManagerService.createForTest(mContext.getFilesDir()).getLocalService();
}
diff --git a/services/tests/servicestests/src/com/android/server/uri/UriGrantsMockContext.java b/services/tests/servicestests/src/com/android/server/uri/UriGrantsMockContext.java
index 7eb6c97..4c11de09 100644
--- a/services/tests/servicestests/src/com/android/server/uri/UriGrantsMockContext.java
+++ b/services/tests/servicestests/src/com/android/server/uri/UriGrantsMockContext.java
@@ -21,11 +21,7 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import android.annotation.NonNull;
import android.app.ActivityManagerInternal;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.ContextWrapper;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
@@ -33,18 +29,19 @@
import android.content.pm.PathPermission;
import android.content.pm.ProviderInfo;
import android.net.Uri;
-import android.os.FileUtils;
import android.os.PatternMatcher;
import android.os.Process;
import android.os.UserHandle;
-import android.test.mock.MockContentResolver;
+import android.test.mock.MockContext;
import android.test.mock.MockPackageManager;
import com.android.server.LocalServices;
import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
-public class UriGrantsMockContext extends ContextWrapper {
+public class UriGrantsMockContext extends MockContext {
static final String TAG = "UriGrants";
static final int FLAG_READ = Intent.FLAG_GRANT_READ_URI_PERMISSION;
@@ -98,19 +95,14 @@
private final File mDir;
private final MockPackageManager mPackage;
- private final MockContentResolver mResolver;
final ActivityManagerInternal mAmInternal;
final PackageManagerInternal mPmInternal;
- public UriGrantsMockContext(@NonNull Context base) {
- super(base);
- mDir = new File(base.getFilesDir(), TAG);
- mDir.mkdirs();
- FileUtils.deleteContents(mDir);
+ public UriGrantsMockContext() throws IOException {
+ mDir = Files.createTempDirectory(TAG).toFile();
mPackage = new MockPackageManager();
- mResolver = new MockContentResolver(this);
mAmInternal = mock(ActivityManagerInternal.class);
LocalServices.removeServiceForTest(ActivityManagerInternal.class);
@@ -239,11 +231,6 @@
}
@Override
- public ContentResolver getContentResolver() {
- return mResolver;
- }
-
- @Override
public File getFilesDir() {
return mDir;
}
diff --git a/services/tests/servicestests/src/com/android/server/uri/UriPermissionTest.java b/services/tests/servicestests/src/com/android/server/uri/UriPermissionTest.java
index 07005a9..4d4f5ed 100644
--- a/services/tests/servicestests/src/com/android/server/uri/UriPermissionTest.java
+++ b/services/tests/servicestests/src/com/android/server/uri/UriPermissionTest.java
@@ -35,12 +35,18 @@
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import android.platform.test.ravenwood.RavenwoodRule;
+
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
public class UriPermissionTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
+
@Mock
private UriGrantsManagerInternal mService;