NetworkStatsTest.java revision 75279904202357565cf5a1cb11148d01f42b4569
1eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey/*
2eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey * Copyright (C) 2011 The Android Open Source Project
3eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey *
4eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey * Licensed under the Apache License, Version 2.0 (the "License");
5eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey * you may not use this file except in compliance with the License.
6eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey * You may obtain a copy of the License at
7eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey *
8eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey *      http://www.apache.org/licenses/LICENSE-2.0
9eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey *
10eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey * Unless required by applicable law or agreed to in writing, software
11eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey * distributed under the License is distributed on an "AS IS" BASIS,
12eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey * See the License for the specific language governing permissions and
14eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey * limitations under the License.
15eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey */
16eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
17eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkeypackage android.net;
18eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
19eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkeyimport android.os.SystemClock;
20eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkeyimport android.test.suitebuilder.annotation.SmallTest;
21eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
22eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkeyimport junit.framework.TestCase;
23eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
24eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey@SmallTest
25eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkeypublic class NetworkStatsTest extends TestCase {
26eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
27eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey    private static final String TEST_IFACE = "test0";
28eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
29eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey    public void testFindIndex() throws Exception {
30eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        final NetworkStats stats = new NetworkStats.Builder(SystemClock.elapsedRealtime(), 3)
31eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey                .addEntry(TEST_IFACE, 100, 1024, 0)
32eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey                .addEntry(TEST_IFACE, 101, 0, 1024)
33eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey                .addEntry(TEST_IFACE, 102, 1024, 1024).build();
34eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
35eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        assertEquals(2, stats.findIndex(TEST_IFACE, 102));
36eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        assertEquals(2, stats.findIndex(TEST_IFACE, 102));
37eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        assertEquals(0, stats.findIndex(TEST_IFACE, 100));
38eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        assertEquals(-1, stats.findIndex(TEST_IFACE, 6));
39eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey    }
40eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
41eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey    public void testSubtractIdenticalData() throws Exception {
42eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        final NetworkStats before = new NetworkStats.Builder(SystemClock.elapsedRealtime(), 2)
43eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey                .addEntry(TEST_IFACE, 100, 1024, 0)
44eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey                .addEntry(TEST_IFACE, 101, 0, 1024).build();
45eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
46eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        final NetworkStats after = new NetworkStats.Builder(SystemClock.elapsedRealtime(), 2)
47eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey                .addEntry(TEST_IFACE, 100, 1024, 0)
48eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey                .addEntry(TEST_IFACE, 101, 0, 1024).build();
49eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
5075279904202357565cf5a1cb11148d01f42b4569Jeff Sharkey        final NetworkStats result = after.subtract(before, true);
51eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
5275279904202357565cf5a1cb11148d01f42b4569Jeff Sharkey        // identical data should result in zero delta
53eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        assertEquals(0, result.rx[0]);
54eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        assertEquals(0, result.tx[0]);
55eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        assertEquals(0, result.rx[1]);
56eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        assertEquals(0, result.tx[1]);
57eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey    }
58eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
59eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey    public void testSubtractIdenticalRows() throws Exception {
60eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        final NetworkStats before = new NetworkStats.Builder(SystemClock.elapsedRealtime(), 2)
61eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey                .addEntry(TEST_IFACE, 100, 1024, 0)
62eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey                .addEntry(TEST_IFACE, 101, 0, 1024).build();
63eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
64eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        final NetworkStats after = new NetworkStats.Builder(SystemClock.elapsedRealtime(), 2)
65eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey                .addEntry(TEST_IFACE, 100, 1025, 2)
66eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey                .addEntry(TEST_IFACE, 101, 3, 1028).build();
67eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
6875279904202357565cf5a1cb11148d01f42b4569Jeff Sharkey        final NetworkStats result = after.subtract(before, true);
69eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
70eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        // expect delta between measurements
71eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        assertEquals(1, result.rx[0]);
72eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        assertEquals(2, result.tx[0]);
73eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        assertEquals(3, result.rx[1]);
74eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        assertEquals(4, result.tx[1]);
75eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey    }
76eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
77eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey    public void testSubtractNewRows() throws Exception {
78eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        final NetworkStats before = new NetworkStats.Builder(SystemClock.elapsedRealtime(), 2)
79eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey                .addEntry(TEST_IFACE, 100, 1024, 0)
80eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey                .addEntry(TEST_IFACE, 101, 0, 1024).build();
81eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
82eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        final NetworkStats after = new NetworkStats.Builder(SystemClock.elapsedRealtime(), 3)
83eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey                .addEntry(TEST_IFACE, 100, 1024, 0)
84eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey                .addEntry(TEST_IFACE, 101, 0, 1024)
85eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey                .addEntry(TEST_IFACE, 102, 1024, 1024).build();
86eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
8775279904202357565cf5a1cb11148d01f42b4569Jeff Sharkey        final NetworkStats result = after.subtract(before, true);
88eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
89eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        // its okay to have new rows
90eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        assertEquals(0, result.rx[0]);
91eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        assertEquals(0, result.tx[0]);
92eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        assertEquals(0, result.rx[1]);
93eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        assertEquals(0, result.tx[1]);
94eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        assertEquals(1024, result.rx[2]);
95eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey        assertEquals(1024, result.tx[2]);
96eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey    }
97eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
98eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey}
99