Start VirtualizationService on demand.

Bug: 183582651
Test: atest VirtualizationTestCases
Change-Id: If6cec89206492cf9818a586d9439ebdb62f27342
This commit is contained in:
Andrew Walbran 2021-03-29 17:12:54 +00:00
parent 17de24fda9
commit f145380f01
4 changed files with 7 additions and 17 deletions

View File

@ -16,4 +16,6 @@ service virtualizationservice /apex/com.android.virt/bin/virtualizationservice
class main class main
user virtualizationservice user virtualizationservice
group virtualizationservice group virtualizationservice
interface aidl android.system.virtualizationservice
disabled disabled
oneshot

View File

@ -38,17 +38,6 @@
<option name="push-file" key="virt_test_initramfs.img" value="/data/local/tmp/virt-test/initramfs" /> <option name="push-file" key="virt_test_initramfs.img" value="/data/local/tmp/virt-test/initramfs" />
</target_preparer> </target_preparer>
<!-- Root currently needed to run CrosVM.
TODO: Give sufficient permissions to the adb shell user (b/171240450). -->
<target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>
<!-- Run VirtualizationService for the duration of the test.
TODO: Run VirtualizationService as a system service. -->
<target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
<option name="throw-if-cmd-fail" value="true" />
<option name="run-command" value="start virtualizationservice" />
</target_preparer>
<test class="com.android.tradefed.testtype.GTest" > <test class="com.android.tradefed.testtype.GTest" >
<option name="native-test-device-path" value="/data/local/tmp/virt-test" /> <option name="native-test-device-path" value="/data/local/tmp/virt-test" />
<option name="module-name" value="VirtualizationTestCases" /> <option name="module-name" value="VirtualizationTestCases" />

View File

@ -19,10 +19,9 @@
namespace virt { namespace virt {
void VirtualizationTest::SetUp() { void VirtualizationTest::SetUp() {
status_t err = mVirtualizationService = waitForService<IVirtualizationService>(
getService<IVirtualizationService>(String16("android.system.virtualizationservice"), String16("android.system.virtualizationservice"));
&mVirtualizationService); ASSERT_NE(mVirtualizationService, nullptr);
ASSERT_EQ(err, 0);
} }
} // namespace virt } // namespace virt

View File

@ -19,7 +19,7 @@ mod run;
mod sync; mod sync;
use android_system_virtualizationservice::aidl::android::system::virtualizationservice::IVirtualizationService::IVirtualizationService; use android_system_virtualizationservice::aidl::android::system::virtualizationservice::IVirtualizationService::IVirtualizationService;
use android_system_virtualizationservice::binder::{get_interface, ProcessState, Strong}; use android_system_virtualizationservice::binder::{wait_for_interface, ProcessState, Strong};
use anyhow::{Context, Error}; use anyhow::{Context, Error};
use run::command_run; use run::command_run;
use std::path::PathBuf; use std::path::PathBuf;
@ -58,7 +58,7 @@ fn main() -> Result<(), Error> {
// We need to start the thread pool for Binder to work properly, especially link_to_death. // We need to start the thread pool for Binder to work properly, especially link_to_death.
ProcessState::start_thread_pool(); ProcessState::start_thread_pool();
let service = get_interface(VIRTUALIZATION_SERVICE_BINDER_SERVICE_IDENTIFIER) let service = wait_for_interface(VIRTUALIZATION_SERVICE_BINDER_SERVICE_IDENTIFIER)
.context("Failed to find VirtualizationService")?; .context("Failed to find VirtualizationService")?;
match opt { match opt {