Refactor buildKeepaliveMetrics to return DailyKeepaliveInfoReported
This also updates the tests and prepares them to assert the other fields
of DailyKeepaliveInfoReported. Currently, only DurationPerNumOfKeepalive
is asserted.
Bug: 273451360
Test: atest FrameworksNetTests
Change-Id: I727849fa8a08d66fe276909b353a75861c23d775
diff --git a/service/src/com/android/server/connectivity/KeepaliveStatsTracker.java b/service/src/com/android/server/connectivity/KeepaliveStatsTracker.java
index c461809..290d201 100644
--- a/service/src/com/android/server/connectivity/KeepaliveStatsTracker.java
+++ b/service/src/com/android/server/connectivity/KeepaliveStatsTracker.java
@@ -20,6 +20,7 @@
import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.metrics.DailykeepaliveInfoReported;
import com.android.metrics.DurationForNumOfKeepalive;
import com.android.metrics.DurationPerNumOfKeepalive;
@@ -159,11 +160,9 @@
}
/**
- * Builds and returns DurationPerNumOfKeepalive proto
- *
- * <p>TODO(b/273451360): Write DailykeepaliveInfoReported metrics to statsd
+ * Builds and returns DailykeepaliveInfoReported proto.
*/
- public DurationPerNumOfKeepalive buildKeepaliveMetrics() {
+ public DailykeepaliveInfoReported buildKeepaliveMetrics() {
final long timeNow = mDependencies.getUptimeMillis();
updateDurationsPerNumOfKeepalive(timeNow);
@@ -175,7 +174,13 @@
durationPerNumOfKeepalive.addDurationForNumOfKeepalive(
durationForNumOfKeepalive));
- return durationPerNumOfKeepalive.build();
+ final DailykeepaliveInfoReported.Builder dailyKeepaliveInfoReported =
+ DailykeepaliveInfoReported.newBuilder();
+
+ // TODO(b/273451360): fill all the other values and write to ConnectivityStatsLog.
+ dailyKeepaliveInfoReported.setDurationPerNumOfKeepalive(durationPerNumOfKeepalive);
+
+ return dailyKeepaliveInfoReported.build();
}
/** Resets the stored metrics but maintains the state of keepalives */
diff --git a/tests/unit/java/com/android/server/connectivity/KeepaliveStatsTrackerTest.java b/tests/unit/java/com/android/server/connectivity/KeepaliveStatsTrackerTest.java
index 8837ba1..d262255 100644
--- a/tests/unit/java/com/android/server/connectivity/KeepaliveStatsTrackerTest.java
+++ b/tests/unit/java/com/android/server/connectivity/KeepaliveStatsTrackerTest.java
@@ -17,12 +17,15 @@
package com.android.server.connectivity;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.doReturn;
import android.os.Build;
import androidx.test.filters.SmallTest;
+import com.android.metrics.DailykeepaliveInfoReported;
import com.android.metrics.DurationForNumOfKeepalive;
import com.android.metrics.DurationPerNumOfKeepalive;
import com.android.testutils.DevSdkIgnoreRule;
@@ -38,6 +41,7 @@
@SmallTest
@DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.TIRAMISU)
public class KeepaliveStatsTrackerTest {
+ private static final int TEST_UID = 1234;
private KeepaliveStatsTracker mKeepaliveStatsTracker;
@Mock KeepaliveStatsTracker.Dependencies mDependencies;
@@ -87,18 +91,38 @@
}
}
+ private void assertDailyKeepaliveInfoReported(
+ DailykeepaliveInfoReported dailyKeepaliveInfoReported,
+ int[] expectRegisteredDurations,
+ int[] expectActiveDurations) {
+ // TODO(b/273451360) Assert these values when they are filled.
+ assertFalse(dailyKeepaliveInfoReported.hasKeepaliveLifetimePerCarrier());
+ assertFalse(dailyKeepaliveInfoReported.hasKeepaliveRequests());
+ assertFalse(dailyKeepaliveInfoReported.hasAutomaticKeepaliveRequests());
+ assertFalse(dailyKeepaliveInfoReported.hasDistinctUserCount());
+ assertTrue(dailyKeepaliveInfoReported.getUidList().isEmpty());
+
+ final DurationPerNumOfKeepalive resultDurations =
+ dailyKeepaliveInfoReported.getDurationPerNumOfKeepalive();
+ assertDurationMetrics(expectRegisteredDurations, expectActiveDurations, resultDurations);
+ }
+
@Test
public void testNoKeepalive() {
final int writeTime = 5000;
setUptimeMillis(writeTime);
- final DurationPerNumOfKeepalive resultDurations =
+ final DailykeepaliveInfoReported dailyKeepaliveInfoReported =
mKeepaliveStatsTracker.buildKeepaliveMetrics();
// Expect that the durations are all in numOfKeepalive = 0.
final int[] expectRegisteredDurations = new int[] {writeTime};
final int[] expectActiveDurations = new int[] {writeTime};
- assertDurationMetrics(expectRegisteredDurations, expectActiveDurations, resultDurations);
+
+ assertDailyKeepaliveInfoReported(
+ dailyKeepaliveInfoReported,
+ expectRegisteredDurations,
+ expectActiveDurations);
}
/*
@@ -117,14 +141,17 @@
mKeepaliveStatsTracker.onStartKeepalive();
setUptimeMillis(writeTime);
- final DurationPerNumOfKeepalive resultDurations =
+ final DailykeepaliveInfoReported dailyKeepaliveInfoReported =
mKeepaliveStatsTracker.buildKeepaliveMetrics();
// The keepalive is never stopped, expect the duration for numberOfKeepalive of 1 to range
// from startTime to writeTime.
final int[] expectRegisteredDurations = new int[] {startTime, writeTime - startTime};
final int[] expectActiveDurations = new int[] {startTime, writeTime - startTime};
- assertDurationMetrics(expectRegisteredDurations, expectActiveDurations, resultDurations);
+ assertDailyKeepaliveInfoReported(
+ dailyKeepaliveInfoReported,
+ expectRegisteredDurations,
+ expectActiveDurations);
}
/*
@@ -147,7 +174,7 @@
mKeepaliveStatsTracker.onPauseKeepalive();
setUptimeMillis(writeTime);
- final DurationPerNumOfKeepalive resultDurations =
+ final DailykeepaliveInfoReported dailyKeepaliveInfoReported =
mKeepaliveStatsTracker.buildKeepaliveMetrics();
// The keepalive is paused but not stopped, expect the registered duration for
@@ -156,7 +183,10 @@
final int[] expectRegisteredDurations = new int[] {startTime, writeTime - startTime};
final int[] expectActiveDurations =
new int[] {startTime + (writeTime - pauseTime), pauseTime - startTime};
- assertDurationMetrics(expectRegisteredDurations, expectActiveDurations, resultDurations);
+ assertDailyKeepaliveInfoReported(
+ dailyKeepaliveInfoReported,
+ expectRegisteredDurations,
+ expectActiveDurations);
}
/*
@@ -183,7 +213,7 @@
mKeepaliveStatsTracker.onResumeKeepalive();
setUptimeMillis(writeTime);
- final DurationPerNumOfKeepalive resultDurations =
+ final DailykeepaliveInfoReported dailyKeepaliveInfoReported =
mKeepaliveStatsTracker.buildKeepaliveMetrics();
// The keepalive is paused and resumed but not stopped, expect the registered duration for
@@ -195,7 +225,10 @@
startTime + (resumeTime - pauseTime),
(pauseTime - startTime) + (writeTime - resumeTime)
};
- assertDurationMetrics(expectRegisteredDurations, expectActiveDurations, resultDurations);
+ assertDailyKeepaliveInfoReported(
+ dailyKeepaliveInfoReported,
+ expectRegisteredDurations,
+ expectActiveDurations);
}
/*
@@ -226,7 +259,7 @@
mKeepaliveStatsTracker.onStopKeepalive(/* wasActive= */ true);
setUptimeMillis(writeTime);
- final DurationPerNumOfKeepalive resultDurations =
+ final DailykeepaliveInfoReported dailyKeepaliveInfoReported =
mKeepaliveStatsTracker.buildKeepaliveMetrics();
// The keepalive is now stopped, expect the registered duration for numberOfKeepalive of 1
@@ -239,7 +272,10 @@
startTime + (resumeTime - pauseTime) + (writeTime - stopTime),
(pauseTime - startTime) + (stopTime - resumeTime)
};
- assertDurationMetrics(expectRegisteredDurations, expectActiveDurations, resultDurations);
+ assertDailyKeepaliveInfoReported(
+ dailyKeepaliveInfoReported,
+ expectRegisteredDurations,
+ expectActiveDurations);
}
/*
@@ -266,7 +302,7 @@
mKeepaliveStatsTracker.onStopKeepalive(/* wasActive= */ false);
setUptimeMillis(writeTime);
- final DurationPerNumOfKeepalive resultDurations =
+ final DailykeepaliveInfoReported dailyKeepaliveInfoReported =
mKeepaliveStatsTracker.buildKeepaliveMetrics();
// The keepalive is stopped while paused, expect the registered duration for
@@ -276,7 +312,10 @@
new int[] {startTime + (writeTime - stopTime), stopTime - startTime};
final int[] expectActiveDurations =
new int[] {startTime + (writeTime - pauseTime), (pauseTime - startTime)};
- assertDurationMetrics(expectRegisteredDurations, expectActiveDurations, resultDurations);
+ assertDailyKeepaliveInfoReported(
+ dailyKeepaliveInfoReported,
+ expectRegisteredDurations,
+ expectActiveDurations);
}
/*
@@ -310,7 +349,7 @@
mKeepaliveStatsTracker.onStopKeepalive(/* wasActive= */ true);
setUptimeMillis(writeTime);
- final DurationPerNumOfKeepalive resultDurations =
+ final DailykeepaliveInfoReported dailyKeepaliveInfoReported =
mKeepaliveStatsTracker.buildKeepaliveMetrics();
final int[] expectRegisteredDurations =
@@ -322,7 +361,10 @@
+ /* sum of (Pause - Resume) */ (700)
+ (stopTime - pauseResumeTimes[5])
};
- assertDurationMetrics(expectRegisteredDurations, expectActiveDurations, resultDurations);
+ assertDailyKeepaliveInfoReported(
+ dailyKeepaliveInfoReported,
+ expectRegisteredDurations,
+ expectActiveDurations);
}
/*
@@ -367,7 +409,7 @@
mKeepaliveStatsTracker.onStopKeepalive(/* wasActive= */ true);
setUptimeMillis(writeTime);
- final DurationPerNumOfKeepalive resultDurations =
+ final DailykeepaliveInfoReported dailyKeepaliveInfoReported =
mKeepaliveStatsTracker.buildKeepaliveMetrics();
// With two keepalives, the number of concurrent keepalives can vary from 0-2 depending on
@@ -380,6 +422,7 @@
// 2 registered keepalives between keepalive2 start and keepalive1 stop.
stopTime1 - startTime2
};
+
final int[] expectActiveDurations =
new int[] {
// 0 active keepalives when keepalive1 is paused before keepalive2 starts.
@@ -395,7 +438,10 @@
// 2 active keepalives before keepalive2 is paused and before keepalive1 stops.
(pauseTime2 - resumeTime1) + (stopTime1 - resumeTime2)
};
- assertDurationMetrics(expectRegisteredDurations, expectActiveDurations, resultDurations);
+ assertDailyKeepaliveInfoReported(
+ dailyKeepaliveInfoReported,
+ expectRegisteredDurations,
+ expectActiveDurations);
}
/*
@@ -416,34 +462,43 @@
mKeepaliveStatsTracker.onStartKeepalive();
setUptimeMillis(writeTime);
- final DurationPerNumOfKeepalive resultDurations =
+ final DailykeepaliveInfoReported dailyKeepaliveInfoReported =
mKeepaliveStatsTracker.buildKeepaliveMetrics();
// Same expect as testOneKeepalive_startOnly
final int[] expectRegisteredDurations = new int[] {startTime, writeTime - startTime};
final int[] expectActiveDurations = new int[] {startTime, writeTime - startTime};
- assertDurationMetrics(expectRegisteredDurations, expectActiveDurations, resultDurations);
+ assertDailyKeepaliveInfoReported(
+ dailyKeepaliveInfoReported,
+ expectRegisteredDurations,
+ expectActiveDurations);
// Reset metrics
mKeepaliveStatsTracker.resetMetrics();
- final DurationPerNumOfKeepalive resultDurations2 =
+ final DailykeepaliveInfoReported dailyKeepaliveInfoReported2 =
mKeepaliveStatsTracker.buildKeepaliveMetrics();
// Expect the stored durations to be 0 but still contain the number of keepalive = 1.
- assertDurationMetrics(new int[] {0, 0}, new int[] {0, 0}, resultDurations2);
+ assertDailyKeepaliveInfoReported(
+ dailyKeepaliveInfoReported2,
+ /* expectRegisteredDurations= */ new int[] {0, 0},
+ /* expectActiveDurations= */ new int[] {0, 0});
// Expect that the keepalive is still registered after resetting so it can be stopped.
setUptimeMillis(stopTime);
mKeepaliveStatsTracker.onStopKeepalive(/* wasActive= */ true);
setUptimeMillis(writeTime2);
- final DurationPerNumOfKeepalive resultDurations3 =
+ final DailykeepaliveInfoReported dailyKeepaliveInfoReported3 =
mKeepaliveStatsTracker.buildKeepaliveMetrics();
final int[] expectRegisteredDurations2 =
new int[] {writeTime2 - stopTime, stopTime - writeTime};
final int[] expectActiveDurations2 =
new int[] {writeTime2 - stopTime, stopTime - writeTime};
- assertDurationMetrics(expectRegisteredDurations2, expectActiveDurations2, resultDurations3);
+ assertDailyKeepaliveInfoReported(
+ dailyKeepaliveInfoReported3,
+ expectRegisteredDurations2,
+ expectActiveDurations2);
}
}