[VM] Refactor building VirtualMachineConfig from file for reuse
Test: atest MicrodroidTests
Bug: 243129654
Change-Id: I3a47d43bb4552d2ef2d58386d35f5ba5754dc609
diff --git a/javalib/src/android/system/virtualmachine/VirtualMachine.java b/javalib/src/android/system/virtualmachine/VirtualMachine.java
index d73bc81..6233e0a 100644
--- a/javalib/src/android/system/virtualmachine/VirtualMachine.java
+++ b/javalib/src/android/system/virtualmachine/VirtualMachine.java
@@ -367,13 +367,7 @@
return null;
}
File configFilePath = new File(thisVmDir, CONFIG_FILE);
- VirtualMachineConfig config;
- try (FileInputStream input = new FileInputStream(configFilePath)) {
- config = VirtualMachineConfig.from(input);
- } catch (IOException e) {
- throw new VirtualMachineException("Failed to read config file", e);
- }
-
+ VirtualMachineConfig config = VirtualMachineConfig.from(configFilePath);
Map<String, WeakReference<VirtualMachine>> instancesMap = getInstancesMap(context);
VirtualMachine vm = null;
diff --git a/javalib/src/android/system/virtualmachine/VirtualMachineConfig.java b/javalib/src/android/system/virtualmachine/VirtualMachineConfig.java
index d1a18ae..593a57d 100644
--- a/javalib/src/android/system/virtualmachine/VirtualMachineConfig.java
+++ b/javalib/src/android/system/virtualmachine/VirtualMachineConfig.java
@@ -33,6 +33,7 @@
import android.system.virtualizationservice.VirtualMachinePayloadConfig;
import java.io.File;
+import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -182,9 +183,19 @@
mNumCpus = numCpus;
}
+ /** Loads a config from a file. */
+ @NonNull
+ static VirtualMachineConfig from(@NonNull File file) throws VirtualMachineException {
+ try (FileInputStream input = new FileInputStream(file)) {
+ return fromInputStream(input);
+ } catch (IOException e) {
+ throw new VirtualMachineException("Failed to read VM config from file", e);
+ }
+ }
+
/** Loads a config from a stream, for example a file. */
@NonNull
- static VirtualMachineConfig from(@NonNull InputStream input)
+ private static VirtualMachineConfig fromInputStream(@NonNull InputStream input)
throws IOException, VirtualMachineException {
PersistableBundle b = PersistableBundle.readFromStream(input);
int version = b.getInt(KEY_VERSION);