Include 'debug.hypervisor.metrics_tag' in metric names
Vendor code can set a property to tag performance metric names. This can
be useful if devices in the lab have varying performance
characteristics.
Test: atest -p packages/modules/Virtualization:avf-postsubmit
Change-Id: I46478471571639a145079cdc296b9824f1328fc3
diff --git a/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java b/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
index 7bf3c4e..d73eb9c 100644
--- a/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
+++ b/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
@@ -53,7 +53,7 @@
@RunWith(Parameterized.class)
public class MicrodroidBenchmarks extends MicrodroidDeviceTestBase {
private static final String TAG = "MicrodroidBenchmarks";
- private static final String METRIC_NAME_PREFIX = "avf_perf/microdroid/";
+ private static final String METRIC_NAME_PREFIX = getMetricPrefix() + "microdroid/";
private static final int IO_TEST_TRIAL_COUNT = 5;
@Rule public Timeout globalTimeout = Timeout.seconds(300);
diff --git a/tests/benchmark_hostside/java/android/avf/test/AVFHostTestCase.java b/tests/benchmark_hostside/java/android/avf/test/AVFHostTestCase.java
index e5eee27..efba60b 100644
--- a/tests/benchmark_hostside/java/android/avf/test/AVFHostTestCase.java
+++ b/tests/benchmark_hostside/java/android/avf/test/AVFHostTestCase.java
@@ -70,14 +70,14 @@
private static final int BOOT_COMPLETE_TIMEOUT_MS = 10 * 60 * 1000;
private static final double NANOS_IN_SEC = 1_000_000_000.0;
private static final int ROUND_COUNT = 5;
- private static final String METRIC_PREFIX = "avf_perf/hostside/";
- private final MetricsProcessor mMetricsProcessor = new MetricsProcessor(METRIC_PREFIX);
+ private MetricsProcessor mMetricsProcessor;
@Rule public TestMetrics mMetrics = new TestMetrics();
@Before
public void setUp() throws Exception {
testIfDeviceIsCapable(getDevice());
+ mMetricsProcessor = new MetricsProcessor(getMetricPrefix() + "hostside/");
}
@After
diff --git a/tests/helper/Android.bp b/tests/helper/Android.bp
index f77dae5..60d4be1 100644
--- a/tests/helper/Android.bp
+++ b/tests/helper/Android.bp
@@ -20,6 +20,7 @@
static_libs: [
"androidx.test.runner",
"androidx.test.ext.junit",
+ "MicrodroidTestHelper",
"VirtualizationTestHelper",
"truth-prebuilt",
],
diff --git a/tests/helper/src/java/com/android/microdroid/test/common/MetricsProcessor.java b/tests/helper/src/java/com/android/microdroid/test/common/MetricsProcessor.java
index 41534f1..b6bc479 100644
--- a/tests/helper/src/java/com/android/microdroid/test/common/MetricsProcessor.java
+++ b/tests/helper/src/java/com/android/microdroid/test/common/MetricsProcessor.java
@@ -24,6 +24,12 @@
public final class MetricsProcessor {
private final String mPrefix;
+ public static String getMetricPrefix(String debugTag) {
+ return "avf_perf"
+ + ((debugTag != null && !debugTag.isEmpty()) ? "[" + debugTag + "]" : "")
+ + "/";
+ }
+
public MetricsProcessor(String prefix) {
mPrefix = prefix;
}
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 a07731e..2905231 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
@@ -32,6 +32,7 @@
import androidx.annotation.CallSuper;
import androidx.test.core.app.ApplicationProvider;
+import com.android.microdroid.test.common.MetricsProcessor;
import com.android.virt.VirtualizationTestHelper;
import java.io.BufferedReader;
@@ -48,6 +49,11 @@
return VirtualizationTestHelper.isCuttlefish(SystemProperties.get("ro.product.name"));
}
+ public static String getMetricPrefix() {
+ return MetricsProcessor.getMetricPrefix(
+ SystemProperties.get("debug.hypervisor.metrics_tag"));
+ }
+
// TODO(b/220920264): remove Inner class; this is a hack to hide virt APEX types
protected static class Inner {
private final boolean mProtectedVm;
diff --git a/tests/hostside/helper/Android.bp b/tests/hostside/helper/Android.bp
index af88bb6..b2333ab 100644
--- a/tests/hostside/helper/Android.bp
+++ b/tests/hostside/helper/Android.bp
@@ -11,6 +11,7 @@
"truth-prebuilt",
],
static_libs: [
+ "MicrodroidTestHelper",
"VirtualizationTestHelper",
],
}
diff --git a/tests/hostside/helper/java/com/android/microdroid/test/host/MicrodroidHostTestCaseBase.java b/tests/hostside/helper/java/com/android/microdroid/test/host/MicrodroidHostTestCaseBase.java
index 875d89f..0417123 100644
--- a/tests/hostside/helper/java/com/android/microdroid/test/host/MicrodroidHostTestCaseBase.java
+++ b/tests/hostside/helper/java/com/android/microdroid/test/host/MicrodroidHostTestCaseBase.java
@@ -27,6 +27,7 @@
import static org.junit.Assume.assumeTrue;
import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
+import com.android.microdroid.test.common.MetricsProcessor;
import com.android.tradefed.build.IBuildInfo;
import com.android.tradefed.device.DeviceNotAvailableException;
import com.android.tradefed.device.ITestDevice;
@@ -97,6 +98,11 @@
return VirtualizationTestHelper.isCuttlefish(getDevice().getProperty("ro.product.name"));
}
+ protected String getMetricPrefix() throws Exception {
+ return MetricsProcessor.getMetricPrefix(
+ getDevice().getProperty("debug.hypervisor.metrics_tag"));
+ }
+
public static void testIfDeviceIsCapable(ITestDevice androidDevice) throws Exception {
assumeTrue("Need an actual TestDevice", androidDevice instanceof TestDevice);
TestDevice testDevice = (TestDevice) androidDevice;
diff --git a/tests/hostside/java/com/android/microdroid/test/MicrodroidTestCase.java b/tests/hostside/java/com/android/microdroid/test/MicrodroidTestCase.java
index 69218a8..48dd1e0 100644
--- a/tests/hostside/java/com/android/microdroid/test/MicrodroidTestCase.java
+++ b/tests/hostside/java/com/android/microdroid/test/MicrodroidTestCase.java
@@ -93,6 +93,8 @@
@Rule public TestName mTestName = new TestName();
@Rule public TestMetrics mMetrics = new TestMetrics();
+ private String mMetricPrefix;
+
private int minMemorySize() throws DeviceNotAvailableException {
CommandRunner android = new CommandRunner(getDevice());
String abi = android.run("getprop", "ro.product.cpu.abi");
@@ -792,7 +794,7 @@
for (Map.Entry<String, Long> stat : getProcMemInfo().entrySet()) {
mMetrics.addTestMetric(
- "avf_perf/microdroid/meminfo/" + stat.getKey().toLowerCase(),
+ mMetricPrefix + "meminfo/" + stat.getKey().toLowerCase(),
stat.getValue().toString());
}
@@ -800,7 +802,7 @@
for (Map.Entry<String, Long> stat : getProcSmapsRollup(proc.mPid).entrySet()) {
String name = stat.getKey().toLowerCase();
mMetrics.addTestMetric(
- "avf_perf/microdroid/smaps/" + name + "/" + proc.mName,
+ mMetricPrefix + "smaps/" + name + "/" + proc.mName,
stat.getValue().toString());
}
}
@@ -845,6 +847,7 @@
@Before
public void setUp() throws Exception {
testIfDeviceIsCapable(getDevice());
+ mMetricPrefix = getMetricPrefix() + "microdroid/";
prepareVirtualizationTestSetup(getDevice());