diff options
author | Jeff Sharkey <jsharkey@android.com> | 2011-11-03 07:36:03 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2011-11-03 07:36:03 +0000 |
commit | 4d81191dd377d30570d6c3294b0fb1f0ea681f46 (patch) | |
tree | ce41412b9b1634e750b1fc1abf91db2e5b7a31b6 /core/tests | |
parent | 92049f1d3e0367f817233a1f8217263e6aa43c8c (diff) | |
parent | 808ee95dd4244da6ae767d3ddd003ed7b48937d0 (diff) | |
download | frameworks_base-4d81191dd377d30570d6c3294b0fb1f0ea681f46.zip frameworks_base-4d81191dd377d30570d6c3294b0fb1f0ea681f46.tar.gz frameworks_base-4d81191dd377d30570d6c3294b0fb1f0ea681f46.tar.bz2 |
am 808ee95d: Merge "Correct proc file reader, optimizations." into ics-mr1
* commit '808ee95dd4244da6ae767d3ddd003ed7b48937d0':
Correct proc file reader, optimizations.
Diffstat (limited to 'core/tests')
7 files changed, 284 insertions, 70 deletions
diff --git a/core/tests/bandwidthtests/src/com/android/bandwidthtest/BandwidthTest.java b/core/tests/bandwidthtests/src/com/android/bandwidthtest/BandwidthTest.java index 9eee2f0..0cc883f 100644 --- a/core/tests/bandwidthtests/src/com/android/bandwidthtest/BandwidthTest.java +++ b/core/tests/bandwidthtests/src/com/android/bandwidthtest/BandwidthTest.java @@ -89,7 +89,7 @@ public class BandwidthTest extends InstrumentationTestCase { * Ensure that downloading on wifi reports reasonable stats. */ @LargeTest - public void testWifiDownload() { + public void testWifiDownload() throws Exception { assertTrue(setDeviceWifiAndAirplaneMode(mSsid)); NetworkStats pre_test_stats = fetchDataFromProc(mUid); String ts = Long.toString(System.currentTimeMillis()); @@ -123,7 +123,7 @@ public class BandwidthTest extends InstrumentationTestCase { * Ensure that downloading on wifi reports reasonable stats. */ @LargeTest - public void testWifiUpload() { + public void testWifiUpload() throws Exception { assertTrue(setDeviceWifiAndAirplaneMode(mSsid)); // Download a file from the server. String ts = Long.toString(System.currentTimeMillis()); @@ -160,7 +160,7 @@ public class BandwidthTest extends InstrumentationTestCase { * accounting still goes to the app making the call and that the numbers still make sense. */ @LargeTest - public void testWifiDownloadWithDownloadManager() { + public void testWifiDownloadWithDownloadManager() throws Exception { assertTrue(setDeviceWifiAndAirplaneMode(mSsid)); // If we are using the download manager, then the data that is written to /proc/uid_stat/ // is accounted against download manager's uid, since it uses pre-ICS API. diff --git a/core/tests/coretests/res/raw/xt_qtaguid_extended b/core/tests/coretests/res/raw/xt_qtaguid_extended deleted file mode 100644 index 2f3b4ec..0000000 --- a/core/tests/coretests/res/raw/xt_qtaguid_extended +++ /dev/null @@ -1,3 +0,0 @@ -acct_tag_hex uid_tag_int iface rx_bytes rx_packets tx_bytes tx_packets teleported_goats idx -0x0 1000 test0 1024 10 2048 20 2716057 2 -0x0000F00D00000000 1000 test0 512 5 512 5 3370318 3 diff --git a/core/tests/coretests/res/raw/xt_qtaguid_typical b/core/tests/coretests/res/raw/xt_qtaguid_typical index 8df4b1b..c1b0d25 100644 --- a/core/tests/coretests/res/raw/xt_qtaguid_typical +++ b/core/tests/coretests/res/raw/xt_qtaguid_typical @@ -1,32 +1,71 @@ -idx iface acct_tag_hex uid_tag_int rx_bytes tx_bytes -2 wlan0 0x0 0 14615 4270 -3 wlan0 0x0 1000 5175 915 -4 wlan0 0x0 1021 3381 903 -5 wlan0 0x0 10004 333821 53558 -6 wlan0 0x0 10010 4888 37363 -7 wlan0 0x0 10013 52 104 -8 wlan0 0x74182ada00000000 10004 18725 1066 -9 rmnet0 0x0 0 301274 30244 -10 rmnet0 0x0 1000 304 441 -11 rmnet0 0x0 1013 2880 2272 -12 rmnet0 0x0 1021 31407 8430 -13 rmnet0 0x0 10003 32665 3814 -14 rmnet0 0x0 10004 2373141 420112 -15 rmnet0 0x0 10010 870370 1111727 -16 rmnet0 0x0 10013 240 240 -17 rmnet0 0x0 10016 16703 13512 -18 rmnet0 0x0 10017 3990 3269 -19 rmnet0 0x0 10018 474504 14516062 -20 rmnet0 0x0 10019 782804 71077 -21 rmnet0 0x0 10022 70671 49684 -22 rmnet0 0x0 10029 5785354 397159 -23 rmnet0 0x0 10033 2102 1686 -24 rmnet0 0x0 10034 15495464 227694 -25 rmnet0 0x0 10037 31184994 684122 -26 rmnet0 0x0 10051 298687 113485 -27 rmnet0 0x0 10056 29504 20669 -28 rmnet0 0x0 10069 683 596 -29 rmnet0 0x0 10072 34051 12453 -30 rmnet0 0x0 10077 7025393 213866 -31 rmnet0 0x0 10081 354 1178 -32 rmnet0 0x74182ada00000000 10037 28507378 437004 +idx iface acct_tag_hex uid_tag_int cnt_set rx_bytes rx_packets tx_bytes tx_packets rx_tcp_bytes rx_tcp_packets rx_udp_bytes rx_udp_packets rx_other_bytes rx_other_packets tx_tcp_bytes tx_tcp_packets tx_udp_bytes tx_udp_packets tx_other_bytes tx_other_packets +2 wlan0 0x0 0 0 18621 96 2898 44 312 6 15897 58 2412 32 312 6 1010 16 1576 22 +3 wlan0 0x0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +4 wlan0 0x0 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +5 wlan0 0x0 1000 1 1949 13 1078 14 0 0 1600 10 349 3 0 0 600 10 478 4 +6 wlan0 0x0 10005 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +7 wlan0 0x0 10005 1 32081 38 5315 50 32081 38 0 0 0 0 5315 50 0 0 0 0 +8 wlan0 0x0 10011 0 35777 53 5718 57 0 0 0 0 35777 53 0 0 0 0 5718 57 +9 wlan0 0x0 10011 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +10 wlan0 0x0 10014 0 0 0 1098 13 0 0 0 0 0 0 0 0 0 0 1098 13 +11 wlan0 0x0 10014 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +12 wlan0 0x0 10021 0 562386 573 49228 549 0 0 0 0 562386 573 0 0 0 0 49228 549 +13 wlan0 0x0 10021 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +14 wlan0 0x0 10031 0 3425 5 586 6 0 0 0 0 3425 5 0 0 0 0 586 6 +15 wlan0 0x0 10031 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +16 wlan0 0x7fffff0100000000 10021 0 562386 573 49228 549 0 0 0 0 562386 573 0 0 0 0 49228 549 +17 wlan0 0x7fffff0100000000 10021 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +18 wlan0 0x7fffff0100000000 10031 0 3425 5 586 6 0 0 0 0 3425 5 0 0 0 0 586 6 +19 wlan0 0x7fffff0100000000 10031 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +20 rmnet2 0x0 0 0 547 5 118 2 40 1 243 1 264 3 0 0 62 1 56 1 +21 rmnet2 0x0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +22 rmnet2 0x0 10001 0 1125899906842624 5 984 11 632 5 0 0 0 0 984 11 0 0 0 0 +23 rmnet2 0x0 10001 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +24 rmnet1 0x0 0 0 26736 174 7098 130 7210 97 18382 64 1144 13 2932 64 4054 64 112 2 +25 rmnet1 0x0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +26 rmnet1 0x0 1000 0 75774 77 18038 78 75335 72 439 5 0 0 17668 73 370 5 0 0 +27 rmnet1 0x0 1000 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +28 rmnet1 0x0 10007 0 269945 578 111632 586 269945 578 0 0 0 0 111632 586 0 0 0 0 +29 rmnet1 0x0 10007 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +30 rmnet1 0x0 10011 0 1741256 6918 769778 7019 1741256 6918 0 0 0 0 769778 7019 0 0 0 0 +31 rmnet1 0x0 10011 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +32 rmnet1 0x0 10014 0 0 0 786 12 0 0 0 0 0 0 786 12 0 0 0 0 +33 rmnet1 0x0 10014 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +34 rmnet1 0x0 10021 0 433533 1454 393420 1604 433533 1454 0 0 0 0 393420 1604 0 0 0 0 +35 rmnet1 0x0 10021 1 21215 33 10278 33 21215 33 0 0 0 0 10278 33 0 0 0 0 +36 rmnet1 0x0 10036 0 6310 25 3284 29 6310 25 0 0 0 0 3284 29 0 0 0 0 +37 rmnet1 0x0 10036 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +38 rmnet1 0x0 10047 0 34264 47 3936 34 34264 47 0 0 0 0 3936 34 0 0 0 0 +39 rmnet1 0x0 10047 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +40 rmnet1 0x4e7700000000 10011 0 9187 27 4248 33 9187 27 0 0 0 0 4248 33 0 0 0 0 +41 rmnet1 0x4e7700000000 10011 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +42 rmnet1 0x1000000000000000 10007 0 2109 4 791 4 2109 4 0 0 0 0 791 4 0 0 0 0 +43 rmnet1 0x1000000000000000 10007 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +44 rmnet1 0x1000000400000000 10007 0 9811 22 6286 22 9811 22 0 0 0 0 6286 22 0 0 0 0 +45 rmnet1 0x1000000400000000 10007 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +46 rmnet1 0x1010000000000000 10021 0 164833 426 135392 527 164833 426 0 0 0 0 135392 527 0 0 0 0 +47 rmnet1 0x1010000000000000 10021 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +48 rmnet1 0x1144000400000000 10011 0 10112 18 3334 17 10112 18 0 0 0 0 3334 17 0 0 0 0 +49 rmnet1 0x1144000400000000 10011 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +50 rmnet1 0x1244000400000000 10011 0 1300 3 848 2 1300 3 0 0 0 0 848 2 0 0 0 0 +51 rmnet1 0x1244000400000000 10011 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +52 rmnet1 0x3000000000000000 10007 0 10389 14 1521 12 10389 14 0 0 0 0 1521 12 0 0 0 0 +53 rmnet1 0x3000000000000000 10007 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +54 rmnet1 0x3000000400000000 10007 0 238070 380 93938 404 238070 380 0 0 0 0 93938 404 0 0 0 0 +55 rmnet1 0x3000000400000000 10007 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +56 rmnet1 0x3010000000000000 10021 0 219110 578 227423 676 219110 578 0 0 0 0 227423 676 0 0 0 0 +57 rmnet1 0x3010000000000000 10021 1 742 3 1265 3 742 3 0 0 0 0 1265 3 0 0 0 0 +58 rmnet1 0x3020000000000000 10021 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +59 rmnet1 0x3020000000000000 10021 1 20473 30 9013 30 20473 30 0 0 0 0 9013 30 0 0 0 0 +60 rmnet1 0x3144000400000000 10011 0 43963 92 34414 116 43963 92 0 0 0 0 34414 116 0 0 0 0 +61 rmnet1 0x3144000400000000 10011 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +62 rmnet1 0x3244000400000000 10011 0 3486 8 1520 9 3486 8 0 0 0 0 1520 9 0 0 0 0 +63 rmnet1 0x3244000400000000 10011 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +64 rmnet1 0x7fffff0100000000 10021 0 29102 56 8865 60 29102 56 0 0 0 0 8865 60 0 0 0 0 +65 rmnet1 0x7fffff0100000000 10021 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +66 rmnet1 0x7fffff0300000000 1000 0 995 13 14145 14 995 13 0 0 0 0 14145 14 0 0 0 0 +67 rmnet1 0x7fffff0300000000 1000 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +68 rmnet0 0x0 0 0 4312 49 1288 23 0 0 0 0 4312 49 0 0 0 0 1288 23 +69 rmnet0 0x0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +70 rmnet0 0x0 10080 0 22266 30 20976 30 0 0 0 0 22266 30 0 0 0 0 20976 30 +71 rmnet0 0x0 10080 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/core/tests/coretests/res/raw/xt_qtaguid_typical_with_set b/core/tests/coretests/res/raw/xt_qtaguid_typical_with_set deleted file mode 100644 index b302bb7..0000000 --- a/core/tests/coretests/res/raw/xt_qtaguid_typical_with_set +++ /dev/null @@ -1,13 +0,0 @@ -idx iface acct_tag_hex uid_tag_int cnt_set rx_bytes rx_packets tx_bytes tx_packets rx_tcp_packets rx_tcp_bytes rx_udp_packets rx_udp_bytes rx_other_packets rx_other_bytes tx_tcp_packets tx_tcp_bytes tx_udp_packets tx_udp_bytes tx_other_packets tx_other_bytes -2 rmnet0 0x0 0 0 14855 82 2804 47 2000 45 12799 35 56 2 676 13 2128 34 0 0 -3 rmnet0 0x0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 rmnet0 0x0 1000 0 278102 253 10487 182 277342 243 760 10 0 0 9727 172 760 10 0 0 -5 rmnet0 0x0 1000 1 26033 30 1401 26 25881 28 152 2 0 0 1249 24 152 2 0 0 -6 rmnet0 0x0 10012 0 40524 272 134138 293 40524 272 0 0 0 0 134138 293 0 0 0 0 -7 rmnet0 0x0 10012 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8 rmnet0 0x0 10034 0 15791 59 9905 69 15791 59 0 0 0 0 9905 69 0 0 0 0 -9 rmnet0 0x0 10034 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -10 rmnet0 0x0 10055 0 3602 29 7739 59 3602 29 0 0 0 0 7739 59 0 0 0 0 -11 rmnet0 0x0 10055 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -12 rmnet0 0x7fff000300000000 1000 0 483 4 1931 6 483 4 0 0 0 0 1931 6 0 0 0 0 -13 rmnet0 0x7fff000300000000 1000 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/core/tests/coretests/src/android/net/NetworkStatsTest.java b/core/tests/coretests/src/android/net/NetworkStatsTest.java index 7082deb..b37eb46 100644 --- a/core/tests/coretests/src/android/net/NetworkStatsTest.java +++ b/core/tests/coretests/src/android/net/NetworkStatsTest.java @@ -51,6 +51,27 @@ public class NetworkStatsTest extends TestCase { assertEquals(-1, stats.findIndex(TEST_IFACE, 6, SET_DEFAULT, TAG_NONE)); } + public void testFindIndexHinted() { + final NetworkStats stats = new NetworkStats(TEST_START, 3) + .addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 1024L, 8L, 0L, 0L, 10) + .addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 0L, 0L, 1024L, 8L, 11) + .addValues(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, 1024L, 8L, 1024L, 8L, 12) + .addValues(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, 1024L, 8L, 0L, 0L, 10) + .addValues(TEST_IFACE2, 101, SET_DEFAULT, 0xF00D, 0L, 0L, 1024L, 8L, 11) + .addValues(TEST_IFACE2, 102, SET_DEFAULT, TAG_NONE, 1024L, 8L, 1024L, 8L, 12); + + // verify that we correctly find across regardless of hinting + for (int hint = 0; hint < stats.size(); hint++) { + assertEquals(0, stats.findIndexHinted(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, hint)); + assertEquals(1, stats.findIndexHinted(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, hint)); + assertEquals(2, stats.findIndexHinted(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, hint)); + assertEquals(3, stats.findIndexHinted(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, hint)); + assertEquals(4, stats.findIndexHinted(TEST_IFACE2, 101, SET_DEFAULT, 0xF00D, hint)); + assertEquals(5, stats.findIndexHinted(TEST_IFACE2, 102, SET_DEFAULT, TAG_NONE, hint)); + assertEquals(-1, stats.findIndexHinted(TEST_IFACE, 6, SET_DEFAULT, TAG_NONE, hint)); + } + } + public void testAddEntryGrow() throws Exception { final NetworkStats stats = new NetworkStats(TEST_START, 2); @@ -257,6 +278,22 @@ public class NetworkStatsTest extends TestCase { assertValues(stats.getTotal(null, ifaces), 1024L, 64L, 0L, 0L, 0L); } + public void testWithoutUid() throws Exception { + final NetworkStats before = new NetworkStats(TEST_START, 3) + .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) + .addValues(TEST_IFACE2, 100, SET_DEFAULT, 0xF00D, 64L, 4L, 0L, 0L, 0L) + .addValues(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, 512L, 32L, 0L, 0L, 0L) + .addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 128L, 8L, 0L, 0L, 0L) + .addValues(TEST_IFACE, 101, SET_DEFAULT, 0xF00D, 128L, 8L, 0L, 0L, 0L); + + final NetworkStats after = before.withoutUid(100); + assertEquals(6, before.size()); + assertEquals(2, after.size()); + assertValues(after, 0, TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 128L, 8L, 0L, 0L, 0L); + assertValues(after, 1, TEST_IFACE, 101, SET_DEFAULT, 0xF00D, 128L, 8L, 0L, 0L, 0L); + } + 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/core/tests/coretests/src/com/android/internal/net/NetworkStatsFactoryTest.java b/core/tests/coretests/src/com/android/internal/net/NetworkStatsFactoryTest.java index 8a64f2b..ea94fa9 100644 --- a/core/tests/coretests/src/com/android/internal/net/NetworkStatsFactoryTest.java +++ b/core/tests/coretests/src/com/android/internal/net/NetworkStatsFactoryTest.java @@ -71,21 +71,12 @@ public class NetworkStatsFactoryTest extends AndroidTestCase { stageFile(R.raw.xt_qtaguid_typical, new File(mTestProc, "net/xt_qtaguid/stats")); final NetworkStats stats = mFactory.readNetworkStatsDetail(); - assertEquals(31, stats.size()); - assertStatsEntry(stats, "wlan0", 0, SET_DEFAULT, 0, 14615L, 4270L); - assertStatsEntry(stats, "wlan0", 10004, SET_DEFAULT, 0, 333821L, 53558L); - assertStatsEntry(stats, "wlan0", 10004, SET_DEFAULT, 1947740890, 18725L, 1066L); - assertStatsEntry(stats, "rmnet0", 10037, SET_DEFAULT, 0, 31184994L, 684122L); - assertStatsEntry(stats, "rmnet0", 10037, SET_DEFAULT, 1947740890, 28507378L, 437004L); - } - - public void testNetworkStatsDetailExtended() throws Exception { - stageFile(R.raw.xt_qtaguid_extended, new File(mTestProc, "net/xt_qtaguid/stats")); - - final NetworkStats stats = mFactory.readNetworkStatsDetail(); - assertEquals(2, stats.size()); - assertStatsEntry(stats, "test0", 1000, SET_DEFAULT, 0, 1024L, 2048L); - assertStatsEntry(stats, "test0", 1000, SET_DEFAULT, 0xF00D, 512L, 512L); + assertEquals(70, stats.size()); + assertStatsEntry(stats, "wlan0", 0, SET_DEFAULT, 0x0, 18621L, 2898L); + assertStatsEntry(stats, "wlan0", 10011, SET_DEFAULT, 0x0, 35777L, 5718L); + assertStatsEntry(stats, "wlan0", 10021, SET_DEFAULT, 0x7fffff01, 562386L, 49228L); + assertStatsEntry(stats, "rmnet1", 10021, SET_DEFAULT, 0x30100000, 219110L, 227423L); + assertStatsEntry(stats, "rmnet2", 10001, SET_DEFAULT, 0x0, 1125899906842624L, 984L); } public void testNetworkStatsSummary() throws Exception { @@ -149,12 +140,12 @@ public class NetworkStatsFactoryTest extends AndroidTestCase { } public void testNetworkStatsWithSet() throws Exception { - stageFile(R.raw.xt_qtaguid_typical_with_set, new File(mTestProc, "net/xt_qtaguid/stats")); + stageFile(R.raw.xt_qtaguid_typical, new File(mTestProc, "net/xt_qtaguid/stats")); final NetworkStats stats = mFactory.readNetworkStatsDetail(); - assertEquals(12, stats.size()); - assertStatsEntry(stats, "rmnet0", 1000, SET_DEFAULT, 0, 278102L, 253L, 10487L, 182L); - assertStatsEntry(stats, "rmnet0", 1000, SET_FOREGROUND, 0, 26033L, 30L, 1401L, 26L); + assertEquals(70, stats.size()); + assertStatsEntry(stats, "rmnet1", 10021, SET_DEFAULT, 0x30100000, 219110L, 578L, 227423L, 676L); + assertStatsEntry(stats, "rmnet1", 10021, SET_FOREGROUND, 0x30100000, 742L, 3L, 1265L, 3L); } public void testNetworkStatsSingle() throws Exception { diff --git a/core/tests/coretests/src/com/android/internal/util/ProcFileReaderTest.java b/core/tests/coretests/src/com/android/internal/util/ProcFileReaderTest.java new file mode 100644 index 0000000..386a78d --- /dev/null +++ b/core/tests/coretests/src/com/android/internal/util/ProcFileReaderTest.java @@ -0,0 +1,163 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.internal.util; + +import android.test.AndroidTestCase; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.nio.charset.Charsets; + +/** + * Tests for {@link ProcFileReader}. + */ +public class ProcFileReaderTest extends AndroidTestCase { + + public void testEmpty() throws Exception { + final ProcFileReader reader = buildReader(""); + + assertFalse(reader.hasMoreData()); + try { + reader.finishLine(); + fail("somehow finished line beyond end of stream?"); + } catch (IOException e) { + // expected + } + assertFalse(reader.hasMoreData()); + } + + public void testSingleString() throws Exception { + final ProcFileReader reader = buildReader("a\nb\nc\n"); + + assertEquals("a", reader.nextString()); + reader.finishLine(); + assertTrue(reader.hasMoreData()); + + assertEquals("b", reader.nextString()); + reader.finishLine(); + assertTrue(reader.hasMoreData()); + + assertEquals("c", reader.nextString()); + reader.finishLine(); + assertFalse(reader.hasMoreData()); + } + + public void testMixedNumbersSkip() throws Exception { + final ProcFileReader reader = buildReader("1 2 3\n4 abc_def 5 6 7 8 9\n10\n"); + + assertEquals(1, reader.nextInt()); + assertEquals(2, reader.nextInt()); + assertEquals(3, reader.nextInt()); + reader.finishLine(); + assertTrue(reader.hasMoreData()); + + assertEquals(4, reader.nextInt()); + assertEquals("abc_def", reader.nextString()); + assertEquals(5, reader.nextInt()); + reader.finishLine(); + assertTrue(reader.hasMoreData()); + + assertEquals(10, reader.nextInt()); + reader.finishLine(); + assertFalse(reader.hasMoreData()); + } + + public void testBufferSize() throws Exception { + // read numbers using very small buffer size, exercising fillBuf() + final ProcFileReader reader = buildReader("1 21 3 41 5 61 7 81 9 10\n", 3); + + assertEquals(1, reader.nextInt()); + assertEquals(21, reader.nextInt()); + assertEquals(3, reader.nextInt()); + assertEquals(41, reader.nextInt()); + assertEquals(5, reader.nextInt()); + assertEquals(61, reader.nextInt()); + assertEquals(7, reader.nextInt()); + assertEquals(81, reader.nextInt()); + assertEquals(9, reader.nextInt()); + assertEquals(10, reader.nextInt()); + reader.finishLine(); + assertFalse(reader.hasMoreData()); + } + + public void testBlankLines() throws Exception { + final ProcFileReader reader = buildReader("1\n\n2\n\n3\n"); + + assertEquals(1, reader.nextInt()); + reader.finishLine(); + assertTrue(reader.hasMoreData()); + reader.finishLine(); + assertTrue(reader.hasMoreData()); + + assertEquals(2, reader.nextInt()); + reader.finishLine(); + assertTrue(reader.hasMoreData()); + reader.finishLine(); + assertTrue(reader.hasMoreData()); + + assertEquals(3, reader.nextInt()); + reader.finishLine(); + assertFalse(reader.hasMoreData()); + } + + public void testMinMax() throws Exception { + final ProcFileReader reader = buildReader( + "1 -1024 9223372036854775807 -9223372036854775808\n"); + + assertEquals(1, reader.nextLong()); + assertEquals(-1024, reader.nextLong()); + assertEquals(Long.MAX_VALUE, reader.nextLong()); + assertEquals(Long.MIN_VALUE, reader.nextLong()); + reader.finishLine(); + assertFalse(reader.hasMoreData()); + } + + public void testDelimiterNeverFound() throws Exception { + final ProcFileReader reader = buildReader("teststringwithoutdelimiters"); + + try { + reader.nextString(); + fail("somehow read a string value?"); + } catch (IOException e) { + // expected + assertTrue(e.getMessage().contains("end of stream")); + } + } + + public void testLargerThanBuffer() throws Exception { + // try finishing line larger than buffer + final ProcFileReader reader = buildReader("1 teststringlongerthanbuffer\n", 4); + + assertEquals(1, reader.nextLong()); + try { + reader.finishLine(); + fail("somehow finished line?"); + } catch (IOException e) { + // expected + assertTrue(e.getMessage().contains("already-full buffer")); + } + } + + private static ProcFileReader buildReader(String string) throws IOException { + return buildReader(string, 2048); + } + + private static ProcFileReader buildReader(String string, int bufferSize) throws IOException { + return new ProcFileReader( + new ByteArrayInputStream(string.getBytes(Charsets.US_ASCII)), bufferSize); + } +} |