Return stats from inactive ifaces, packet counts. am: 337b986b98
Original change: undetermined Change-Id: I9b743d9b27d93b151d9e316e8e23ff390c841f9e
This commit is contained in:
@@ -44,20 +44,20 @@ public class NetworkStatsTest extends TestCase {
|
|||||||
public void testAddEntryGrow() throws Exception {
|
public void testAddEntryGrow() throws Exception {
|
||||||
final NetworkStats stats = new NetworkStats(TEST_START, 2);
|
final NetworkStats stats = new NetworkStats(TEST_START, 2);
|
||||||
|
|
||||||
assertEquals(0, stats.size);
|
assertEquals(0, stats.size());
|
||||||
assertEquals(2, stats.iface.length);
|
assertEquals(2, stats.iface.length);
|
||||||
|
|
||||||
stats.addEntry(TEST_IFACE, TEST_UID, TAG_NONE, 1L, 2L);
|
stats.addEntry(TEST_IFACE, TEST_UID, TAG_NONE, 1L, 2L);
|
||||||
stats.addEntry(TEST_IFACE, TEST_UID, TAG_NONE, 2L, 2L);
|
stats.addEntry(TEST_IFACE, TEST_UID, TAG_NONE, 2L, 2L);
|
||||||
|
|
||||||
assertEquals(2, stats.size);
|
assertEquals(2, stats.size());
|
||||||
assertEquals(2, stats.iface.length);
|
assertEquals(2, stats.iface.length);
|
||||||
|
|
||||||
stats.addEntry(TEST_IFACE, TEST_UID, TAG_NONE, 3L, 4L);
|
stats.addEntry(TEST_IFACE, TEST_UID, TAG_NONE, 3L, 4L);
|
||||||
stats.addEntry(TEST_IFACE, TEST_UID, TAG_NONE, 4L, 4L);
|
stats.addEntry(TEST_IFACE, TEST_UID, TAG_NONE, 4L, 4L);
|
||||||
stats.addEntry(TEST_IFACE, TEST_UID, TAG_NONE, 5L, 5L);
|
stats.addEntry(TEST_IFACE, TEST_UID, TAG_NONE, 5L, 5L);
|
||||||
|
|
||||||
assertEquals(5, stats.size);
|
assertEquals(5, stats.size());
|
||||||
assertTrue(stats.iface.length >= 5);
|
assertTrue(stats.iface.length >= 5);
|
||||||
|
|
||||||
assertEquals(1L, stats.rx[0]);
|
assertEquals(1L, stats.rx[0]);
|
||||||
|
|||||||
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package com.android.server;
|
package com.android.server;
|
||||||
|
|
||||||
|
import static android.net.NetworkStats.TAG_NONE;
|
||||||
|
import static android.net.NetworkStats.UID_ALL;
|
||||||
import static com.android.server.NetworkManagementSocketTagger.kernelToTag;
|
import static com.android.server.NetworkManagementSocketTagger.kernelToTag;
|
||||||
import static com.android.server.NetworkManagementSocketTagger.tagToKernel;
|
import static com.android.server.NetworkManagementSocketTagger.tagToKernel;
|
||||||
|
|
||||||
@@ -25,9 +27,11 @@ import android.test.AndroidTestCase;
|
|||||||
import android.test.suitebuilder.annotation.LargeTest;
|
import android.test.suitebuilder.annotation.LargeTest;
|
||||||
|
|
||||||
import com.android.frameworks.servicestests.R;
|
import com.android.frameworks.servicestests.R;
|
||||||
|
import com.google.common.io.Files;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.FileWriter;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
|
||||||
@@ -46,14 +50,23 @@ public class NetworkManagementServiceTest extends AndroidTestCase {
|
|||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
super.setUp();
|
super.setUp();
|
||||||
|
|
||||||
mTestProc = getContext().getFilesDir();
|
final File canonicalFilesDir = getContext().getFilesDir().getCanonicalFile();
|
||||||
mService = NetworkManagementService.createForTest(mContext, mTestProc);
|
mTestProc = new File(canonicalFilesDir, "proc");
|
||||||
|
if (mTestProc.exists()) {
|
||||||
|
Files.deleteRecursively(mTestProc);
|
||||||
|
}
|
||||||
|
|
||||||
|
mService = NetworkManagementService.createForTest(mContext, mTestProc, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tearDown() throws Exception {
|
public void tearDown() throws Exception {
|
||||||
mService = null;
|
mService = null;
|
||||||
|
|
||||||
|
if (mTestProc.exists()) {
|
||||||
|
Files.deleteRecursively(mTestProc);
|
||||||
|
}
|
||||||
|
|
||||||
super.tearDown();
|
super.tearDown();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,7 +74,7 @@ public class NetworkManagementServiceTest extends AndroidTestCase {
|
|||||||
stageFile(R.raw.xt_qtaguid_typical, new File(mTestProc, "net/xt_qtaguid/stats"));
|
stageFile(R.raw.xt_qtaguid_typical, new File(mTestProc, "net/xt_qtaguid/stats"));
|
||||||
|
|
||||||
final NetworkStats stats = mService.getNetworkStatsDetail();
|
final NetworkStats stats = mService.getNetworkStatsDetail();
|
||||||
assertEquals(31, stats.size);
|
assertEquals(31, stats.size());
|
||||||
assertStatsEntry(stats, "wlan0", 0, 0, 14615L, 4270L);
|
assertStatsEntry(stats, "wlan0", 0, 0, 14615L, 4270L);
|
||||||
assertStatsEntry(stats, "wlan0", 10004, 0, 333821L, 53558L);
|
assertStatsEntry(stats, "wlan0", 10004, 0, 333821L, 53558L);
|
||||||
assertStatsEntry(stats, "wlan0", 10004, 1947740890, 18725L, 1066L);
|
assertStatsEntry(stats, "wlan0", 10004, 1947740890, 18725L, 1066L);
|
||||||
@@ -73,11 +86,37 @@ public class NetworkManagementServiceTest extends AndroidTestCase {
|
|||||||
stageFile(R.raw.xt_qtaguid_extended, new File(mTestProc, "net/xt_qtaguid/stats"));
|
stageFile(R.raw.xt_qtaguid_extended, new File(mTestProc, "net/xt_qtaguid/stats"));
|
||||||
|
|
||||||
final NetworkStats stats = mService.getNetworkStatsDetail();
|
final NetworkStats stats = mService.getNetworkStatsDetail();
|
||||||
assertEquals(2, stats.size);
|
assertEquals(2, stats.size());
|
||||||
assertStatsEntry(stats, "test0", 1000, 0, 1024L, 2048L);
|
assertStatsEntry(stats, "test0", 1000, 0, 1024L, 2048L);
|
||||||
assertStatsEntry(stats, "test0", 1000, 0xF00D, 512L, 512L);
|
assertStatsEntry(stats, "test0", 1000, 0xF00D, 512L, 512L);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testNetworkStatsSummary() throws Exception {
|
||||||
|
stageFile(R.raw.net_dev_typical, new File(mTestProc, "net/dev"));
|
||||||
|
|
||||||
|
final NetworkStats stats = mService.getNetworkStatsSummary();
|
||||||
|
assertEquals(6, stats.size());
|
||||||
|
assertStatsEntry(stats, "lo", UID_ALL, TAG_NONE, 8308L, 8308L);
|
||||||
|
assertStatsEntry(stats, "rmnet0", UID_ALL, TAG_NONE, 1507570L, 489339L);
|
||||||
|
assertStatsEntry(stats, "ifb0", UID_ALL, TAG_NONE, 52454L, 0L);
|
||||||
|
assertStatsEntry(stats, "ifb1", UID_ALL, TAG_NONE, 52454L, 0L);
|
||||||
|
assertStatsEntry(stats, "sit0", UID_ALL, TAG_NONE, 0L, 0L);
|
||||||
|
assertStatsEntry(stats, "ip6tnl0", UID_ALL, TAG_NONE, 0L, 0L);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testNetworkStatsSummaryDown() throws Exception {
|
||||||
|
stageFile(R.raw.net_dev_typical, new File(mTestProc, "net/dev"));
|
||||||
|
stageLong(1024L, new File(mTestProc, "net/xt_qtaguid/iface_stat/wlan0/rx_bytes"));
|
||||||
|
stageLong(128L, new File(mTestProc, "net/xt_qtaguid/iface_stat/wlan0/rx_packets"));
|
||||||
|
stageLong(2048L, new File(mTestProc, "net/xt_qtaguid/iface_stat/wlan0/tx_bytes"));
|
||||||
|
stageLong(256L, new File(mTestProc, "net/xt_qtaguid/iface_stat/wlan0/tx_packets"));
|
||||||
|
|
||||||
|
final NetworkStats stats = mService.getNetworkStatsSummary();
|
||||||
|
assertEquals(7, stats.size());
|
||||||
|
assertStatsEntry(stats, "rmnet0", UID_ALL, TAG_NONE, 1507570L, 489339L);
|
||||||
|
assertStatsEntry(stats, "wlan0", UID_ALL, TAG_NONE, 1024L, 2048L);
|
||||||
|
}
|
||||||
|
|
||||||
public void testKernelTags() throws Exception {
|
public void testKernelTags() throws Exception {
|
||||||
assertEquals("0", tagToKernel(0x0));
|
assertEquals("0", tagToKernel(0x0));
|
||||||
assertEquals("214748364800", tagToKernel(0x32));
|
assertEquals("214748364800", tagToKernel(0x32));
|
||||||
@@ -90,7 +129,6 @@ public class NetworkManagementServiceTest extends AndroidTestCase {
|
|||||||
assertEquals(2147483647, kernelToTag("0x7fffffff00000000"));
|
assertEquals(2147483647, kernelToTag("0x7fffffff00000000"));
|
||||||
assertEquals(0, kernelToTag("0x0000000000000000"));
|
assertEquals(0, kernelToTag("0x0000000000000000"));
|
||||||
assertEquals(2147483136, kernelToTag("0x7FFFFE0000000000"));
|
assertEquals(2147483136, kernelToTag("0x7FFFFE0000000000"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -111,11 +149,23 @@ public class NetworkManagementServiceTest extends AndroidTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void stageLong(long value, File file) throws Exception {
|
||||||
|
new File(file.getParent()).mkdirs();
|
||||||
|
FileWriter out = null;
|
||||||
|
try {
|
||||||
|
out = new FileWriter(file);
|
||||||
|
out.write(Long.toString(value));
|
||||||
|
} finally {
|
||||||
|
IoUtils.closeQuietly(out);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void assertStatsEntry(
|
private static void assertStatsEntry(
|
||||||
NetworkStats stats, String iface, int uid, int tag, long rx, long tx) {
|
NetworkStats stats, String iface, int uid, int tag, long rxBytes, long txBytes) {
|
||||||
final int i = stats.findIndex(iface, uid, tag);
|
final int i = stats.findIndex(iface, uid, tag);
|
||||||
assertEquals(rx, stats.rx[i]);
|
final NetworkStats.Entry entry = stats.getValues(i, null);
|
||||||
assertEquals(tx, stats.tx[i]);
|
assertEquals(rxBytes, entry.rxBytes);
|
||||||
|
assertEquals(txBytes, entry.txBytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user