summaryrefslogtreecommitdiffstats
path: root/services/tests/servicestests/src/com/android
diff options
context:
space:
mode:
Diffstat (limited to 'services/tests/servicestests/src/com/android')
-rw-r--r--services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java71
1 files changed, 66 insertions, 5 deletions
diff --git a/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java
index 91fef22..09f8ff3 100644
--- a/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java
@@ -20,14 +20,18 @@ import static android.content.Intent.ACTION_UID_REMOVED;
import static android.content.Intent.EXTRA_UID;
import static android.net.ConnectivityManager.CONNECTIVITY_ACTION;
import static android.net.ConnectivityManager.TYPE_WIFI;
+import static android.net.NetworkPolicy.LIMIT_DISABLED;
import static android.net.NetworkPolicy.SNOOZE_NEVER;
+import static android.net.NetworkPolicy.WARNING_DISABLED;
import static android.net.NetworkPolicyManager.POLICY_NONE;
import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND;
import static android.net.NetworkPolicyManager.RULE_ALLOW_ALL;
import static android.net.NetworkPolicyManager.RULE_REJECT_METERED;
import static android.net.NetworkPolicyManager.computeLastCycleBoundary;
+import static android.net.NetworkPolicyManager.computeNextCycleBoundary;
import static android.net.NetworkStats.TAG_NONE;
import static android.net.NetworkStats.UID_ALL;
+import static android.text.format.DateUtils.DAY_IN_MILLIS;
import static android.text.format.DateUtils.MINUTE_IN_MILLIS;
import static com.android.server.net.NetworkPolicyManagerService.TYPE_LIMIT;
import static com.android.server.net.NetworkPolicyManagerService.TYPE_LIMIT_SNOOZED;
@@ -79,6 +83,7 @@ import org.easymock.EasyMock;
import org.easymock.IAnswer;
import java.io.File;
+import java.util.LinkedHashSet;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
@@ -402,7 +407,7 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase {
final NetworkPolicy policy = new NetworkPolicy(
sTemplateWifi, 5, 1024L, 1024L, SNOOZE_NEVER);
final long actualCycle = computeLastCycleBoundary(currentTime, policy);
- assertEquals(expectedCycle, actualCycle);
+ assertTimeEquals(expectedCycle, actualCycle);
}
public void testLastCycleBoundaryLastMonth() throws Exception {
@@ -413,7 +418,7 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase {
final NetworkPolicy policy = new NetworkPolicy(
sTemplateWifi, 20, 1024L, 1024L, SNOOZE_NEVER);
final long actualCycle = computeLastCycleBoundary(currentTime, policy);
- assertEquals(expectedCycle, actualCycle);
+ assertTimeEquals(expectedCycle, actualCycle);
}
public void testLastCycleBoundaryThisMonthFebruary() throws Exception {
@@ -424,18 +429,48 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase {
final NetworkPolicy policy = new NetworkPolicy(
sTemplateWifi, 30, 1024L, 1024L, SNOOZE_NEVER);
final long actualCycle = computeLastCycleBoundary(currentTime, policy);
- assertEquals(expectedCycle, actualCycle);
+ assertTimeEquals(expectedCycle, actualCycle);
}
public void testLastCycleBoundaryLastMonthFebruary() throws Exception {
// assume cycle day of "30th" in february, which should clamp
final long currentTime = parseTime("2007-03-14T00:00:00.000Z");
- final long expectedCycle = parseTime("2007-03-01T00:00:00.000Z");
+ final long expectedCycle = parseTime("2007-02-28T23:59:59.000Z");
final NetworkPolicy policy = new NetworkPolicy(
sTemplateWifi, 30, 1024L, 1024L, SNOOZE_NEVER);
final long actualCycle = computeLastCycleBoundary(currentTime, policy);
- assertEquals(expectedCycle, actualCycle);
+ assertTimeEquals(expectedCycle, actualCycle);
+ }
+
+ public void testNextCycleSane() throws Exception {
+ final NetworkPolicy policy = new NetworkPolicy(
+ sTemplateWifi, 31, WARNING_DISABLED, LIMIT_DISABLED, SNOOZE_NEVER);
+ final LinkedHashSet<Long> seen = new LinkedHashSet<Long>();
+
+ // walk forwards, ensuring that cycle boundaries don't get stuck
+ long currentCycle = computeNextCycleBoundary(parseTime("2011-08-01T00:00:00.000Z"), policy);
+ for (int i = 0; i < 128; i++) {
+ long nextCycle = computeNextCycleBoundary(currentCycle, policy);
+ assertEqualsFuzzy(DAY_IN_MILLIS * 30, nextCycle - currentCycle, DAY_IN_MILLIS * 3);
+ assertUnique(seen, nextCycle);
+ currentCycle = nextCycle;
+ }
+ }
+
+ public void testLastCycleSane() throws Exception {
+ final NetworkPolicy policy = new NetworkPolicy(
+ sTemplateWifi, 31, WARNING_DISABLED, LIMIT_DISABLED, SNOOZE_NEVER);
+ final LinkedHashSet<Long> seen = new LinkedHashSet<Long>();
+
+ // walk backwards, ensuring that cycle boundaries look sane
+ long currentCycle = computeLastCycleBoundary(parseTime("2011-08-04T00:00:00.000Z"), policy);
+ for (int i = 0; i < 128; i++) {
+ long lastCycle = computeLastCycleBoundary(currentCycle, policy);
+ assertEqualsFuzzy(DAY_IN_MILLIS * 30, currentCycle - lastCycle, DAY_IN_MILLIS * 3);
+ assertUnique(seen, lastCycle);
+ currentCycle = lastCycle;
+ }
}
public void testNetworkPolicyAppliedCycleLastMonth() throws Exception {
@@ -734,6 +769,32 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase {
}
}
+ private static void assertTimeEquals(long expected, long actual) {
+ if (expected != actual) {
+ fail("expected " + formatTime(expected) + " but was actually " + formatTime(actual));
+ }
+ }
+
+ private static String formatTime(long millis) {
+ final Time time = new Time(Time.TIMEZONE_UTC);
+ time.set(millis);
+ return time.format3339(false);
+ }
+
+ private static void assertEqualsFuzzy(long expected, long actual, long fuzzy) {
+ final long low = expected - fuzzy;
+ final long high = expected + fuzzy;
+ if (actual < low || actual > high) {
+ fail("value " + actual + " is outside [" + low + "," + high + "]");
+ }
+ }
+
+ private static void assertUnique(LinkedHashSet<Long> seen, Long value) {
+ if (!seen.add(value)) {
+ fail("found duplicate time " + value + " in series " + seen.toString());
+ }
+ }
+
private static void assertNotificationType(int expected, String actualTag) {
assertEquals(
Integer.toString(expected), actualTag.substring(actualTag.lastIndexOf(':') + 1));