Merge "[benchmark][authfs] Shutdown Microdroid after each test"
diff --git a/authfs/tests/java/src/com/android/fs/AuthFsBenchmarks.java b/authfs/tests/java/src/com/android/fs/AuthFsBenchmarks.java
index f84785b..af2c892 100644
--- a/authfs/tests/java/src/com/android/fs/AuthFsBenchmarks.java
+++ b/authfs/tests/java/src/com/android/fs/AuthFsBenchmarks.java
@@ -33,6 +33,7 @@
import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
import com.android.tradefed.testtype.junit4.BeforeClassWithInfo;
+import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -64,7 +65,7 @@
@BeforeClassWithInfo
public static void beforeClassWithDevice(TestInformation testInfo) throws Exception {
- AuthFsTestRule.setUpClass(testInfo);
+ AuthFsTestRule.setUpAndroid(testInfo);
}
@Before
@@ -73,12 +74,17 @@
MetricsProcessor.getMetricPrefix(
getDevice().getProperty("debug.hypervisor.metrics_tag"));
mMetricsProcessor = new MetricsProcessor(metricsPrefix + "authfs/");
+ AuthFsTestRule.startMicrodroid();
+ }
+
+ @After
+ public void tearDown() throws DeviceNotAvailableException {
+ AuthFsTestRule.shutdownMicrodroid();
}
@AfterClassWithInfo
- public static void afterClassWithDevice(TestInformation testInfo)
- throws DeviceNotAvailableException {
- AuthFsTestRule.tearDownClass(testInfo);
+ public static void afterClassWithDevice(TestInformation testInfo) {
+ AuthFsTestRule.tearDownAndroid();
}
@Test
diff --git a/authfs/tests/java/src/com/android/fs/AuthFsHostTest.java b/authfs/tests/java/src/com/android/fs/AuthFsHostTest.java
index 14dc88b..c4169f6 100644
--- a/authfs/tests/java/src/com/android/fs/AuthFsHostTest.java
+++ b/authfs/tests/java/src/com/android/fs/AuthFsHostTest.java
@@ -72,7 +72,8 @@
@BeforeClassWithInfo
public static void beforeClassWithDevice(TestInformation testInfo) throws Exception {
- AuthFsTestRule.setUpClass(testInfo);
+ AuthFsTestRule.setUpAndroid(testInfo);
+ AuthFsTestRule.startMicrodroid();
sAndroid = AuthFsTestRule.getAndroid();
sMicrodroid = AuthFsTestRule.getMicrodroid();
}
@@ -80,7 +81,8 @@
@AfterClassWithInfo
public static void afterClassWithDevice(TestInformation testInfo)
throws DeviceNotAvailableException {
- AuthFsTestRule.tearDownClass(testInfo);
+ AuthFsTestRule.shutdownMicrodroid();
+ AuthFsTestRule.tearDownAndroid();
}
@Test
diff --git a/authfs/tests/java/src/com/android/fs/AuthFsTestRule.java b/authfs/tests/java/src/com/android/fs/AuthFsTestRule.java
index 045ecc0..a9fdd10 100644
--- a/authfs/tests/java/src/com/android/fs/AuthFsTestRule.java
+++ b/authfs/tests/java/src/com/android/fs/AuthFsTestRule.java
@@ -91,7 +91,7 @@
private final ExecutorService mThreadPool = Executors.newCachedThreadPool();
- static void setUpClass(TestInformation testInfo) throws Exception {
+ static void setUpAndroid(TestInformation testInfo) throws Exception {
assertNotNull(testInfo.getDevice());
if (!(testInfo.getDevice() instanceof TestDevice)) {
CLog.w("Unexpected type of ITestDevice. Skipping.");
@@ -108,35 +108,9 @@
CLog.i("Microdroid not supported. Skipping.");
return;
}
-
- // For each test case, boot and adb connect to a new Microdroid
- CLog.i("Starting the shared VM");
- sMicrodroidDevice =
- MicrodroidBuilder.fromFile(
- findTestFile(testInfo.getBuildInfo(), TEST_APK_NAME),
- VM_CONFIG_PATH_IN_APK)
- .debugLevel("full")
- .build((TestDevice) androidDevice);
-
- // From this point on, we need to tear down the Microdroid instance
- sMicrodroid = new CommandRunner(sMicrodroidDevice);
-
- sMicrodroid.runForResult("mkdir -p " + MOUNT_DIR);
-
- // Root because authfs (started from shell in this test) currently require root to open
- // /dev/fuse and mount the FUSE.
- assertThat(sMicrodroidDevice.enableAdbRoot()).isTrue();
}
- static void tearDownClass(TestInformation testInfo) throws DeviceNotAvailableException {
- assertNotNull(sAndroid);
-
- if (sMicrodroid != null) {
- CLog.i("Shutting down shared VM");
- ((TestDevice) testInfo.getDevice()).shutdownMicrodroid(sMicrodroid.getDevice());
- sMicrodroid = null;
- }
-
+ static void tearDownAndroid() {
sAndroid = null;
}
@@ -157,6 +131,33 @@
return sMicrodroidDevice;
}
+ static void startMicrodroid() throws DeviceNotAvailableException {
+ CLog.i("Starting the shared VM");
+ assertThat(sMicrodroidDevice).isNull();
+ sMicrodroidDevice =
+ MicrodroidBuilder.fromFile(
+ findTestFile(sTestInfo.getBuildInfo(), TEST_APK_NAME),
+ VM_CONFIG_PATH_IN_APK)
+ .debugLevel("full")
+ .build(getDevice());
+
+ // From this point on, we need to tear down the Microdroid instance
+ sMicrodroid = new CommandRunner(sMicrodroidDevice);
+
+ sMicrodroid.runForResult("mkdir -p " + MOUNT_DIR);
+
+ // Root because authfs (started from shell in this test) currently require root to open
+ // /dev/fuse and mount the FUSE.
+ assertThat(sMicrodroidDevice.enableAdbRoot()).isTrue();
+ }
+
+ static void shutdownMicrodroid() throws DeviceNotAvailableException {
+ assertNotNull(sMicrodroidDevice);
+ getDevice().shutdownMicrodroid(sMicrodroidDevice);
+ sMicrodroidDevice = null;
+ sMicrodroid = null;
+ }
+
@Override
public Statement apply(final Statement base, Description description) {
return super.apply(