[atf] Add metric for hierarchy creation
Adding a metric inbetween ATF scanning process to better understand
where most times are spent.
Bug: 170136315
Test: Manually tested
Change-Id: I9c499a1e200ca9d04abba15f88daf03111c94708
diff --git a/bridge/tests/src/com/android/tools/idea/validator/ValidatorResultTests.java b/bridge/tests/src/com/android/tools/idea/validator/ValidatorResultTests.java
index cd63854..c96ce70 100644
--- a/bridge/tests/src/com/android/tools/idea/validator/ValidatorResultTests.java
+++ b/bridge/tests/src/com/android/tools/idea/validator/ValidatorResultTests.java
@@ -88,6 +88,28 @@
}
@Test
+ public void testMetricRecordHierarchyCreationTime() {
+ long expectedElapsed = 100;
+ Metric metric = new Builder().mMetric;
+
+ metric.startTimer();
+ try {
+ Thread.sleep(expectedElapsed);
+ } catch (Exception e) {
+ String msg = "Unexpected exception. ";
+ if (e.getMessage() == null) {
+ msg += e.getMessage();
+ }
+ fail(msg);
+ }
+ metric.recordHierarchyCreationTime();
+
+ long diff = Math.abs(expectedElapsed - metric.mHierarchyCreationMs);
+ System.out.println(diff);
+ assertTrue(diff < EPSILON);
+ }
+
+ @Test
public void testMetricToString() {
Metric metric = new Builder().mMetric;
@@ -95,7 +117,7 @@
metric.mImageMemoryBytes = Long.MAX_VALUE;
assertEquals(
- "Validation result metric: { elapsed=0ms, image memory=9223372036gb }",
+ "Validation result metric: { elapsed=0ms, hierarchy creation=0ms, image memory=9223372036gb }",
metric.toString());
}
diff --git a/validator/src/com/android/tools/idea/validator/ValidatorResult.java b/validator/src/com/android/tools/idea/validator/ValidatorResult.java
index 8cc5c3d..76035f7 100644
--- a/validator/src/com/android/tools/idea/validator/ValidatorResult.java
+++ b/validator/src/com/android/tools/idea/validator/ValidatorResult.java
@@ -107,6 +107,9 @@
/** Records how long validation took */
public long mElapsedMs = 0;
+ /** Record how long hierarchy creation took */
+ public long mHierarchyCreationMs = 0;
+
/** How many new memories (bytes) validator creates for images. */
public long mImageMemoryBytes = 0;
@@ -118,6 +121,10 @@
mStart = System.currentTimeMillis();
}
+ public void recordHierarchyCreationTime() {
+ mHierarchyCreationMs = System.currentTimeMillis() - mStart;
+ }
+
public void endTimer() {
mElapsedMs = System.currentTimeMillis() - mStart;
}
@@ -125,7 +132,8 @@
@Override
public String toString() {
return "Validation result metric: { elapsed=" + mElapsedMs +
- "ms, image memory=" + readableBytes() + " }";
+ "ms, hierarchy creation=" + mHierarchyCreationMs
+ +"ms, image memory=" + readableBytes() + " }";
}
private String readableBytes() {
diff --git a/validator/src/com/android/tools/idea/validator/accessibility/AccessibilityValidator.java b/validator/src/com/android/tools/idea/validator/accessibility/AccessibilityValidator.java
index 640e531..b5a0157 100644
--- a/validator/src/com/android/tools/idea/validator/accessibility/AccessibilityValidator.java
+++ b/validator/src/com/android/tools/idea/validator/accessibility/AccessibilityValidator.java
@@ -192,6 +192,7 @@
.setViewOriginMap(originMap)
.build();
ArrayList<AccessibilityHierarchyCheckResult> a11yResults = new ArrayList();
+ metric.recordHierarchyCreationTime();
Parameters parameters = null;
if (image != null) {