Ensure that VMs are stopped before exiting the concurrent VM test
Bug: 348326076
Bug: 348361264
Test: watch TH
Change-Id: I247ebe68a5af56270d9375ebbd460425aa20dad6
diff --git a/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java b/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
index 5b67083..c94f171 100644
--- a/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
+++ b/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
@@ -2525,19 +2525,30 @@
.isTrue();
VirtualMachine[] vms = new VirtualMachine[numVMs];
- for (int i = 0; i < numVMs; i++) {
- VirtualMachineConfig config =
- newVmConfigBuilderWithPayloadBinary("MicrodroidIdleNativeLib.so")
- .setDebugLevel(DEBUG_LEVEL_NONE)
- .setMemoryBytes(vmSize)
- .build();
+ try {
+ for (int i = 0; i < numVMs; i++) {
+ VirtualMachineConfig config =
+ newVmConfigBuilderWithPayloadBinary("MicrodroidIdleNativeLib.so")
+ .setDebugLevel(DEBUG_LEVEL_NONE)
+ .setMemoryBytes(vmSize)
+ .build();
- vms[i] = forceCreateNewVirtualMachine("test_concurrent_vms_" + i, config);
- vms[i].run();
- }
+ vms[i] = forceCreateNewVirtualMachine("test_concurrent_vms_" + i, config);
+ vms[i].run();
+ }
- for (VirtualMachine vm : vms) {
- assertThat(vm.getStatus()).isEqualTo(VirtualMachine.STATUS_RUNNING);
+ for (VirtualMachine vm : vms) {
+ assertThat(vm.getStatus()).isEqualTo(VirtualMachine.STATUS_RUNNING);
+ }
+
+ } finally {
+ // Ensure that VMs are all stopped. Otherwise we may try to reuse some of these for
+ // another run of this test with different parameters.
+ for (VirtualMachine vm : vms) {
+ if (vm != null) {
+ vm.close();
+ }
+ }
}
}