diff options
| author | 2011-11-09 14:36:56 +0000 | |
|---|---|---|
| committer | 2011-11-09 14:36:56 +0000 | |
| commit | 489b431273500db81d35ed43440915187c238f92 (patch) | |
| tree | 678b5b3f89aa633830c235933a067189fbdb2a53 | |
| parent | 028fe5a715d8f9d78154e482dc46b27f97f94e53 (diff) | |
| parent | 4c48d2ff6937e1e3a2fb93cc4cc29324b20542a5 (diff) | |
am 4c48d2ff: Merge "Make operation counts monotonically increase." into ics-mr1
* commit '4c48d2ff6937e1e3a2fb93cc4cc29324b20542a5':
Make operation counts monotonically increase.
| -rw-r--r-- | core/java/android/net/NetworkStats.java | 11 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/net/NetworkStatsTest.java | 16 | ||||
| -rw-r--r-- | services/java/com/android/server/net/NetworkStatsService.java | 3 |
3 files changed, 28 insertions, 2 deletions
diff --git a/core/java/android/net/NetworkStats.java b/core/java/android/net/NetworkStats.java index 5c6ef1a9eac8..51b290e59019 100644 --- a/core/java/android/net/NetworkStats.java +++ b/core/java/android/net/NetworkStats.java @@ -165,6 +165,17 @@ public class NetworkStats implements Parcelable { dest.writeLongArray(operations); } + @Override + public NetworkStats clone() { + final NetworkStats clone = new NetworkStats(elapsedRealtime, size); + NetworkStats.Entry entry = null; + for (int i = 0; i < size; i++) { + entry = getValues(i, entry); + clone.addValues(entry); + } + return clone; + } + // @VisibleForTesting public NetworkStats addIfaceValues( String iface, long rxBytes, long rxPackets, long txBytes, long txPackets) { diff --git a/core/tests/coretests/src/android/net/NetworkStatsTest.java b/core/tests/coretests/src/android/net/NetworkStatsTest.java index b37eb466e1ca..098464f9f013 100644 --- a/core/tests/coretests/src/android/net/NetworkStatsTest.java +++ b/core/tests/coretests/src/android/net/NetworkStatsTest.java @@ -294,6 +294,22 @@ public class NetworkStatsTest extends TestCase { assertValues(after, 1, TEST_IFACE, 101, SET_DEFAULT, 0xF00D, 128L, 8L, 0L, 0L, 0L); } + public void testClone() throws Exception { + final NetworkStats original = new NetworkStats(TEST_START, 5) + .addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 128L, 8L, 0L, 2L, 20L) + .addValues(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, 512L, 32L, 0L, 0L, 0L); + + // make clone and mutate original + final NetworkStats clone = original.clone(); + original.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 128L, 8L, 0L, 0L, 0L); + + assertEquals(3, original.size()); + assertEquals(2, clone.size()); + + assertEquals(128L + 512L + 128L, original.getTotalBytes()); + assertEquals(128L + 512L, clone.getTotalBytes()); + } + private static void assertValues(NetworkStats stats, int index, String iface, int uid, int set, int tag, long rxBytes, long rxPackets, long txBytes, long txPackets, long operations) { final NetworkStats.Entry entry = stats.getValues(index, null); diff --git a/services/java/com/android/server/net/NetworkStatsService.java b/services/java/com/android/server/net/NetworkStatsService.java index 494c655ba048..4f87f0d19071 100644 --- a/services/java/com/android/server/net/NetworkStatsService.java +++ b/services/java/com/android/server/net/NetworkStatsService.java @@ -971,8 +971,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { } mLastPollUidSnapshot = uidSnapshot; - mLastPollOperationsSnapshot = mOperations; - mOperations = new NetworkStats(0L, 10); + mLastPollOperationsSnapshot = mOperations.clone(); } /** |