Merge "Apply new api linter for our tests" into main
diff --git a/android/virtmgr/src/crosvm.rs b/android/virtmgr/src/crosvm.rs
index 9ee181a..77710c3 100644
--- a/android/virtmgr/src/crosvm.rs
+++ b/android/virtmgr/src/crosvm.rs
@@ -21,7 +21,7 @@
use binder::ParcelFileDescriptor;
use command_fds::CommandFdExt;
use libc::{sysconf, _SC_CLK_TCK};
-use log::{debug, error, info};
+use log::{debug, error, info, warn};
use semver::{Version, VersionReq};
use nix::{fcntl::OFlag, unistd::pipe2, unistd::Uid, unistd::User};
use regex::{Captures, Regex};
@@ -649,7 +649,7 @@
Ok(guest_time) => vm_metric.cpu_guest_time = Some(guest_time),
Err(e) => {
metric_countdown = 0;
- error!("Failed to get guest CPU time: {e:?}");
+ warn!("Failed to get guest CPU time: {}", e);
}
}
@@ -663,7 +663,7 @@
}
Err(e) => {
metric_countdown = 0;
- error!("Failed to get guest RSS: {}", e);
+ warn!("Failed to get guest RSS: {}", e);
}
}
}
@@ -857,6 +857,9 @@
}
let guest_time_ticks = data_list[42].parse::<i64>()?;
+ if guest_time_ticks == 0 {
+ bail!("zero value is measured on elapsed CPU guest_time");
+ }
// SAFETY: It just returns an integer about CPU tick information.
let ticks_per_sec = unsafe { sysconf(_SC_CLK_TCK) };
Ok(guest_time_ticks * MILLIS_PER_SEC / ticks_per_sec)
@@ -887,7 +890,12 @@
rss_crosvm_total += rss;
}
}
-
+ if rss_crosvm_total == 0 {
+ bail!("zero value is measured on RSS of crosvm");
+ }
+ if rss_vm_total == 0 {
+ bail!("zero value is measured on RSS of VM");
+ }
Ok(Rss { vm: rss_vm_total, crosvm: rss_crosvm_total })
}
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 67249b4..18ed7b6 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
@@ -58,9 +58,10 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
-import java.util.Arrays;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
+import java.util.List;
import java.util.OptionalLong;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
@@ -73,13 +74,21 @@
private final String MAX_PERFORMANCE_TASK_PROFILE = "CPUSET_SP_TOP_APP";
protected static final String KERNEL_VERSION = SystemProperties.get("ro.kernel.version");
+
+ private static final List<String> getSupportedOSes() {
+ List<String> ret = new ArrayList<>();
+ ret.add("microdroid");
+ if (Build.VERSION.SDK_INT >= 35) {
+ ret.add("microdroid_gki-android15-6.6");
+ }
+ if (Build.VERSION.SDK_INT >= 36) {
+ ret.add("microdroid_16k");
+ }
+ return ret;
+ }
+
protected static final Set<String> SUPPORTED_OSES =
- Collections.unmodifiableSet(
- new HashSet<>(
- Arrays.asList(
- "microdroid",
- "microdroid_16k",
- "microdroid_gki-android15-6.6")));
+ Collections.unmodifiableSet(new HashSet<>(getSupportedOSes()));
private static final long ONE_MEBI = 1024 * 1024;
private static final long MIN_MEM_ARM64 = 170 * ONE_MEBI;
@@ -155,10 +164,12 @@
}
public VirtualMachineConfig.Builder newVmConfigBuilderWithPayloadConfig(String configPath) {
- return new VirtualMachineConfig.Builder(mCtx)
- .setProtectedVm(mProtectedVm)
- .setOs(os())
- .setPayloadConfigPath(configPath);
+ VirtualMachineConfig.Builder builder = new VirtualMachineConfig.Builder(mCtx);
+ builder.setProtectedVm(mProtectedVm).setPayloadConfigPath(configPath);
+ if (Build.VERSION.SDK_INT >= 35) {
+ builder.setOs(os());
+ }
+ return builder;
}
public VirtualMachineConfig.Builder newVmConfigBuilderWithPayloadBinary(String binaryPath) {
@@ -288,15 +299,18 @@
}
protected boolean isUpdatableVmSupported() throws VirtualMachineException {
- return getVirtualMachineManager().isUpdatableVmSupported();
+ // Pre-36 OS doesn't have VirtualMachineManager#isUpdatableVmSupported.
+ if (Build.VERSION.SDK_INT >= 35) {
+ return getVirtualMachineManager().isUpdatableVmSupported();
+ }
+ return false;
}
protected void ensureVmAttestationSupported() throws Exception {
// The first vendor API level is checked because VM attestation requires the VM DICE chain
// to be ROM-rooted.
int firstVendorApiLevel = getFirstVendorApiLevel();
- boolean isRemoteAttestationSupported =
- getVirtualMachineManager().isRemoteAttestationSupported();
+ boolean isRemoteAttestationSupported = isRemoteAttestationSupported();
if (firstVendorApiLevel >= 202504) {
assertWithMessage(
"First vendor API '"
@@ -309,6 +323,14 @@
}
}
+ protected boolean isRemoteAttestationSupported() throws VirtualMachineException {
+ // Pre-36 OS doesn't have VirtualMachineManager#isRemoteAttestionSupported
+ if (Build.VERSION.SDK_INT >= 35) {
+ return getVirtualMachineManager().isRemoteAttestationSupported();
+ }
+ return false;
+ }
+
public abstract static class VmEventListener implements VirtualMachineCallback {
private ExecutorService mExecutorService = Executors.newSingleThreadExecutor();
private OptionalLong mVcpuStartedNanoTime = OptionalLong.empty();
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 e4a3ff6..639224d 100644
--- a/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
+++ b/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
@@ -257,7 +257,7 @@
assumeProtectedVM();
assume().withMessage(
"This test does not apply to a device that supports Remote Attestation")
- .that(getVirtualMachineManager().isRemoteAttestationSupported())
+ .that(isRemoteAttestationSupported())
.isFalse();
VirtualMachineConfig config =
newVmConfigBuilderWithPayloadBinary(VM_ATTESTATION_PAYLOAD_PATH)
@@ -285,7 +285,7 @@
// pVM remote attestation is only supported on protected VMs.
assumeProtectedVM();
assume().withMessage("Test needs Remote Attestation support")
- .that(getVirtualMachineManager().isRemoteAttestationSupported())
+ .that(isRemoteAttestationSupported())
.isTrue();
File vendorDiskImage = new File("/vendor/etc/avf/microdroid/microdroid_vendor.img");
assumeTrue("Microdroid vendor image doesn't exist, skip", vendorDiskImage.exists());