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();
+                }
+            }
         }
     }