MicrodroidTests: Skip test if debug policy is enabled
Bug: 379029878
Test: atest on following devices: \
- An user build device with debug policy \
- An userdebug build without debug policy
(cherry picked from https://android-review.googlesource.com/q/commit:abd328b2fb8f103b127e8ecbcf7ba7f1db1bc493)
Merged-In: I41eb69aa4670abb43eb2dccf36ffbb584503b400
Change-Id: I41eb69aa4670abb43eb2dccf36ffbb584503b400
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 9629f37..1f2cabd 100644
--- a/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
+++ b/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
@@ -1937,29 +1937,27 @@
assertThat(checkVmOutputIsRedirectedToLogcat(true)).isTrue();
}
- private boolean setSystemProperties(String name, String value) {
+ private boolean isDebugPolicyEnabled(String entry) {
Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
UiAutomation uiAutomation = instrumentation.getUiAutomation();
- String cmd = "setprop " + name + " " + (value.isEmpty() ? "\"\"" : value);
- return runInShellWithStderr(TAG, uiAutomation, cmd).trim().isEmpty();
+ String cmd = "/apex/com.android.virt/bin/vm info";
+ String output = runInShellWithStderr(TAG, uiAutomation, cmd).trim();
+ for (String line : output.split("\\v")) {
+ if (line.matches("^.*Debug policy.*" + entry + ": true.*$")) {
+ return true;
+ }
+ }
+ return false;
}
@Test
public void outputIsNotRedirectedToLogcatIfNotDebuggable() throws Exception {
assumeSupportedDevice();
- // Disable debug policy to ensure no log output.
- String sysprop = "hypervisor.virtualizationmanager.debug_policy.path";
- String old = SystemProperties.get(sysprop);
- assumeTrue(
- "Can't disable debug policy. Perhapse user build?",
- setSystemProperties(sysprop, ""));
+ // Debug policy shouldn't enable log
+ assumeFalse(isDebugPolicyEnabled("log"));
- try {
- assertThat(checkVmOutputIsRedirectedToLogcat(false)).isFalse();
- } finally {
- assertThat(setSystemProperties(sysprop, old)).isTrue();
- }
+ assertThat(checkVmOutputIsRedirectedToLogcat(false)).isFalse();
}
@Test
diff --git a/virtualizationmanager/src/aidl.rs b/virtualizationmanager/src/aidl.rs
index f1bfd8c..022cfcb 100644
--- a/virtualizationmanager/src/aidl.rs
+++ b/virtualizationmanager/src/aidl.rs
@@ -18,7 +18,7 @@
use crate::atom::{write_vm_booted_stats, write_vm_creation_stats};
use crate::composite::make_composite_image;
use crate::crosvm::{AudioConfig, CrosvmConfig, DiskFile, DisplayConfig, GpuConfig, InputDeviceOption, PayloadState, VmContext, VmInstance, VmState};
-use crate::debug_config::DebugConfig;
+use crate::debug_config::{DebugConfig, DebugPolicy};
use crate::dt_overlay::{create_device_tree_overlay, VM_DT_OVERLAY_MAX_SIZE, VM_DT_OVERLAY_PATH};
use crate::payload::{add_microdroid_payload_images, add_microdroid_system_images, add_microdroid_vendor_image};
use crate::selinux::{getfilecon, SeContext};
@@ -306,6 +306,12 @@
Ok(Vec::from_iter(SUPPORTED_OS_NAMES.iter().cloned()))
}
+ /// Get printable debug policy for testing and debugging
+ fn getDebugPolicy(&self) -> binder::Result<String> {
+ let debug_policy = DebugPolicy::from_host();
+ Ok(format!("{debug_policy:?}"))
+ }
+
/// Returns whether given feature is enabled
fn isFeatureEnabled(&self, feature: &str) -> binder::Result<bool> {
check_manage_access()?;
diff --git a/virtualizationservice/aidl/android/system/virtualizationservice/IVirtualizationService.aidl b/virtualizationservice/aidl/android/system/virtualizationservice/IVirtualizationService.aidl
index 234d8d0..5a19b01 100644
--- a/virtualizationservice/aidl/android/system/virtualizationservice/IVirtualizationService.aidl
+++ b/virtualizationservice/aidl/android/system/virtualizationservice/IVirtualizationService.aidl
@@ -79,6 +79,11 @@
*/
String[] getSupportedOSList();
+ /**
+ * Get installed debug policy for test and debugging purpose.
+ */
+ String getDebugPolicy();
+
/** Returns whether given feature is enabled. */
boolean isFeatureEnabled(in String feature);
diff --git a/vm/src/main.rs b/vm/src/main.rs
index 3c0887c..0fe049d 100644
--- a/vm/src/main.rs
+++ b/vm/src/main.rs
@@ -456,6 +456,9 @@
let os_list = get_service()?.getSupportedOSList()?;
println!("Available OS list: {}", serde_json::to_string(&os_list)?);
+ let debug_policy = get_service()?.getDebugPolicy()?;
+ println!("Debug policy: {}", debug_policy);
+
Ok(())
}