Merge "Add proc load listener wait time."
diff --git a/libraries/collectors-helper/system/src/com/android/helpers/ProcLoadHelper.java b/libraries/collectors-helper/system/src/com/android/helpers/ProcLoadHelper.java
index dd362b8..0b71b53 100644
--- a/libraries/collectors-helper/system/src/com/android/helpers/ProcLoadHelper.java
+++ b/libraries/collectors-helper/system/src/com/android/helpers/ProcLoadHelper.java
@@ -36,6 +36,7 @@
private static final String LOG_TAG = ProcLoadHelper.class.getSimpleName();
private static final String LOAD_CMD = "cat /proc/loadavg";
public static final String LAST_MINUTE_LOAD_METRIC_KEY = "proc_loadavg_last_minute";
+ public static final String PROC_LOAD_WAIT_TIME_METRIC_KEY = "proc_load_wait_time_msecs";
private static final Pattern LOAD_OUTPUT_PATTERN = Pattern.compile(
"(?<LASTMINUTELOAD>.*)\\s.*\\s.*\\s.*\\s.*");
@@ -46,6 +47,7 @@
private long mProcLoadIntervalInMs = 500;
private double mRecentLoad = 0;
private UiDevice mDevice;
+ private double mTotalWaitTime = 0;
/** Wait untill the proc/load reaches below the threshold or timeout expires */
@Override
@@ -66,6 +68,8 @@
? mProcLoadIntervalInMs : remainingWaitTime;
Log.d(LOG_TAG, String.format("Waiting for %s msecs", currWaitTime));
SystemClock.sleep(currWaitTime);
+ mTotalWaitTime += currWaitTime;
+ Log.d(LOG_TAG, String.format("Waited for %s msecs", mTotalWaitTime));
remainingWaitTime = remainingWaitTime - mProcLoadIntervalInMs;
}
}
@@ -80,6 +84,7 @@
Log.i(LOG_TAG, String.format("proc/loadavg in last minute before test is : %s",
mRecentLoad));
result.put(LAST_MINUTE_LOAD_METRIC_KEY, mRecentLoad);
+ result.put(PROC_LOAD_WAIT_TIME_METRIC_KEY, mTotalWaitTime);
return result;
}
diff --git a/libraries/collectors-helper/system/test/src/com/android/helpers/tests/ProcLoadHelperTest.java b/libraries/collectors-helper/system/test/src/com/android/helpers/tests/ProcLoadHelperTest.java
index a66d8bc..1cd0ca4 100644
--- a/libraries/collectors-helper/system/test/src/com/android/helpers/tests/ProcLoadHelperTest.java
+++ b/libraries/collectors-helper/system/test/src/com/android/helpers/tests/ProcLoadHelperTest.java
@@ -22,6 +22,7 @@
import com.android.helpers.ProcLoadHelper;
import static com.android.helpers.ProcLoadHelper.LAST_MINUTE_LOAD_METRIC_KEY;
+import static com.android.helpers.ProcLoadHelper.PROC_LOAD_WAIT_TIME_METRIC_KEY;
import org.junit.Before;
import org.junit.Test;
@@ -60,6 +61,18 @@
assertTrue(procLoadMetric.get(LAST_MINUTE_LOAD_METRIC_KEY) > 0);
}
+ /** Test to verify total proc load wait time metric. **/
+ @Test
+ public void testProcLoadWaitTimeMetric() {
+ mLoadHelper.setProcLoadThreshold(100);
+ mLoadHelper.setProcLoadWaitTimeInMs(1100L);
+ mLoadHelper.setProcLoadIntervalInMs(100L);
+ assertTrue(mLoadHelper.startCollecting());
+ Map<String, Double> procLoadMetric = mLoadHelper.getMetrics();
+ assertTrue(procLoadMetric.containsKey(PROC_LOAD_WAIT_TIME_METRIC_KEY));
+ assertTrue(procLoadMetric.get(LAST_MINUTE_LOAD_METRIC_KEY) > 0);
+ }
+
/** Test to verify threshold not met workflow. */
@Test
public void testMetricAfterTimeout() {