VM maybe be in stop state when payload finishes
runVmTestService already calls quitVMService() which gracefully shuts
the VM. That imply forceStop(), when called after payload finishes may
race with VM shutting due to graceful shutdown.
Test: N/A
Bug: 389083566
Change-Id: Iea17515410b1795a9c4463ac1a8073cbff279bfb
diff --git a/tests/helper/src/java/com/android/microdroid/test/device/MicrodroidDeviceTestBase.java b/tests/helper/src/java/com/android/microdroid/test/device/MicrodroidDeviceTestBase.java
index b98531d..072768c 100644
--- a/tests/helper/src/java/com/android/microdroid/test/device/MicrodroidDeviceTestBase.java
+++ b/tests/helper/src/java/com/android/microdroid/test/device/MicrodroidDeviceTestBase.java
@@ -393,6 +393,10 @@
return mProcessedBootTimeMetrics;
}
+ // Stopping a virtual machine is like pulling the plug on a real computer. VM may be left in
+ // an inconsistent state.
+ // For a graceful shutdown, request the payload to call {@code exit()} and wait for
+ // VirtualMachineCallback#onPayloadFinished} to be called.
protected void forceStop(VirtualMachine vm) {
try {
vm.stop();
@@ -721,7 +725,6 @@
public void onPayloadFinished(VirtualMachine vm, int exitCode) {
Log.i(logTag, "onPayloadFinished: " + exitCode);
payloadFinished.complete(true);
- forceStop(vm);
}
};