Merge "If an invalid VM config exists, delete it" into main
diff --git a/javalib/src/android/system/virtualmachine/VirtualMachineManager.java b/javalib/src/android/system/virtualmachine/VirtualMachineManager.java
index 1250bd1..1607c0a 100644
--- a/javalib/src/android/system/virtualmachine/VirtualMachineManager.java
+++ b/javalib/src/android/system/virtualmachine/VirtualMachineManager.java
@@ -211,7 +211,7 @@
*
* @see #getOrCreate
* @throws VirtualMachineException if the virtual machine exists but could not be successfully
- * retrieved.
+ * retrieved. This can be resolved by calling {@link #delete} on the VM.
* @hide
*/
@SystemApi
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 15e175b..8e11218 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
@@ -150,8 +150,15 @@
public VirtualMachine forceCreateNewVirtualMachine(String name, VirtualMachineConfig config)
throws VirtualMachineException {
final VirtualMachineManager vmm = getVirtualMachineManager();
- VirtualMachine existingVm = vmm.get(name);
- if (existingVm != null) {
+ boolean deleteExisting;
+ try {
+ deleteExisting = vmm.get(name) != null;
+ } catch (VirtualMachineException e) {
+ // VM exists, i.e. there are some files for it, but they could not be successfully
+ // loaded.
+ deleteExisting = true;
+ }
+ if (deleteExisting) {
vmm.delete(name);
}
return vmm.create(name, config);