Set dev.bootcomplete in Microdroid
This is done right before microdroid_manager starts the payload.
Also update a boot-completeness check in the test to use this property.
Bug: 230774156
Test: atest MicrodroidTestCase
Change-Id: Id9604058c546e062425fe1ee8a201af32c0bd344
diff --git a/microdroid_manager/src/main.rs b/microdroid_manager/src/main.rs
index 8a638db..f9b4cf7 100644
--- a/microdroid_manager/src/main.rs
+++ b/microdroid_manager/src/main.rs
@@ -282,6 +282,7 @@
config.task.is_some(),
MicrodroidError::InvalidConfig("No task in VM config".to_string())
);
+ system_properties::write("dev.bootcomplete", "1").context("set dev.bootcomplete")?;
exec_task(&config.task.unwrap(), service)
}
diff --git a/tests/hostside/java/android/virt/test/MicrodroidTestCase.java b/tests/hostside/java/android/virt/test/MicrodroidTestCase.java
index 6a5689d..7126399 100644
--- a/tests/hostside/java/android/virt/test/MicrodroidTestCase.java
+++ b/tests/hostside/java/android/virt/test/MicrodroidTestCase.java
@@ -105,11 +105,8 @@
false);
}
- // Wait until logd-init starts. The service is one of the last services that are started in
- // the microdroid boot procedure. Therefore, waiting for the service means that we wait for
- // the boot to complete. TODO: we need a better marker eventually.
- private void waitForLogdInit() {
- runOnMicrodroidForResult("watch -e \"getprop init.svc.logd-reinit | grep '^$'\"");
+ private void waitForBootComplete() {
+ runOnMicrodroidForResult("watch -e \"getprop dev.bootcomplete | grep '^0$'\"");
}
@Test
@@ -382,7 +379,7 @@
Optional.of(NUM_VCPUS),
Optional.of(CPU_AFFINITY));
adbConnectToMicrodroid(getDevice(), cid);
- waitForLogdInit();
+ waitForBootComplete();
runOnMicrodroid("logcat -c");
// We need root permission to write to /data/tombstones/
rootMicrodroid();
@@ -415,7 +412,7 @@
Optional.of(NUM_VCPUS),
Optional.of(CPU_AFFINITY));
adbConnectToMicrodroid(getDevice(), cid);
- waitForLogdInit();
+ waitForBootComplete();
// Test writing to /data partition
runOnMicrodroid("echo MicrodroidTest > /data/local/tmp/test.txt");
assertThat(runOnMicrodroid("cat /data/local/tmp/test.txt"), is("MicrodroidTest"));