Enable debug mode for test instance of CompOS
This is useful in case the tests fail, and during development.
While I was refactoring this I also arranged to not create a new
instance of VirtualizationService when we already have one to hand.
Bug: 186126194
Test: Presubmits
Test: Manual: Was able to get VM logs again
Change-Id: I1540979c9f80f8e32c31bd1b382d14576233117d
diff --git a/compos/composd/src/instance_manager.rs b/compos/composd/src/instance_manager.rs
index e31296d..6291d59 100644
--- a/compos/composd/src/instance_manager.rs
+++ b/compos/composd/src/instance_manager.rs
@@ -22,6 +22,7 @@
use anyhow::{bail, Context, Result};
use compos_aidl_interface::aidl::com::android::compos::ICompOsService::ICompOsService;
use compos_aidl_interface::binder::Strong;
+use compos_common::compos_client::VmParameters;
use compos_common::{CURRENT_INSTANCE_DIR, TEST_INSTANCE_DIR};
use std::sync::{Arc, Mutex, Weak};
use virtualizationservice::IVirtualizationService::IVirtualizationService;
@@ -44,20 +45,26 @@
#[allow(dead_code)] // TODO: Make use of this
pub fn start_current_instance(&self) -> Result<Arc<CompOsInstance>> {
- self.start_instance(CURRENT_INSTANCE_DIR)
+ self.start_instance(CURRENT_INSTANCE_DIR, VmParameters::default())
}
pub fn start_test_instance(&self) -> Result<Arc<CompOsInstance>> {
- self.start_instance(TEST_INSTANCE_DIR)
+ let vm_parameters = VmParameters { debug_mode: true };
+ self.start_instance(TEST_INSTANCE_DIR, vm_parameters)
}
- fn start_instance(&self, instance_name: &str) -> Result<Arc<CompOsInstance>> {
+ fn start_instance(
+ &self,
+ instance_name: &str,
+ vm_parameters: VmParameters,
+ ) -> Result<Arc<CompOsInstance>> {
let mut state = self.state.lock().unwrap();
state.mark_starting()?;
// Don't hold the lock while we start the instance to avoid blocking other callers.
drop(state);
- let instance = self.try_start_instance(instance_name);
+ let instance_starter = InstanceStarter::new(instance_name, vm_parameters);
+ let instance = self.try_start_instance(instance_starter);
let mut state = self.state.lock().unwrap();
if let Ok(ref instance) = instance {
@@ -68,10 +75,8 @@
instance
}
- fn try_start_instance(&self, instance_name: &str) -> Result<Arc<CompOsInstance>> {
- let instance_starter = InstanceStarter::new(instance_name);
+ fn try_start_instance(&self, instance_starter: InstanceStarter) -> Result<Arc<CompOsInstance>> {
let compos_instance = instance_starter.create_or_start_instance(&*self.service)?;
-
Ok(Arc::new(compos_instance))
}
}