Merge "Ensure that VMs are stopped before exiting the concurrent VM test" into main am: 8c4ec368da

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Virtualization/+/3141236

Change-Id: I2ee23f5e0efad3ce9cdc566c16e54d57f8509c77
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
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();
+                }
+            }
         }
     }