From 5cc4da38f0fad953bc1a05169283d8bb4668ca9b Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Tue, 1 May 2012 16:26:09 -0700 Subject: [PATCH] Begin collecting xtables iface counters. Add method to parse new iface_stat_fmt proc stats, or return null when kernel support is unavailable. Add test and remove older, unused parsing code. Create new "xt" recorder to persist the new xtables counters when available. Add SSID support to NetworkIdentity to fix policy tests. Bug: 6422414 Change-Id: I77f70e9acb79a559ab626f3af5c4f3599801ed43 --- core/java/android/net/NetworkState.java | 8 ++- .../res/raw/xt_qtaguid_iface_fmt_typical | 4 ++ .../internal/net/NetworkStatsFactoryTest.java | 65 ++++--------------- .../server/NetworkStatsServiceTest.java | 12 ++-- 4 files changed, 29 insertions(+), 60 deletions(-) create mode 100644 core/tests/coretests/res/raw/xt_qtaguid_iface_fmt_typical diff --git a/core/java/android/net/NetworkState.java b/core/java/android/net/NetworkState.java index 2fc69ad287..fbe1f8296b 100644 --- a/core/java/android/net/NetworkState.java +++ b/core/java/android/net/NetworkState.java @@ -31,18 +31,20 @@ public class NetworkState implements Parcelable { public final LinkCapabilities linkCapabilities; /** Currently only used by testing. */ public final String subscriberId; + public final String networkId; public NetworkState(NetworkInfo networkInfo, LinkProperties linkProperties, LinkCapabilities linkCapabilities) { - this(networkInfo, linkProperties, linkCapabilities, null); + this(networkInfo, linkProperties, linkCapabilities, null, null); } public NetworkState(NetworkInfo networkInfo, LinkProperties linkProperties, - LinkCapabilities linkCapabilities, String subscriberId) { + LinkCapabilities linkCapabilities, String subscriberId, String networkId) { this.networkInfo = networkInfo; this.linkProperties = linkProperties; this.linkCapabilities = linkCapabilities; this.subscriberId = subscriberId; + this.networkId = networkId; } public NetworkState(Parcel in) { @@ -50,6 +52,7 @@ public class NetworkState implements Parcelable { linkProperties = in.readParcelable(null); linkCapabilities = in.readParcelable(null); subscriberId = in.readString(); + networkId = in.readString(); } @Override @@ -63,6 +66,7 @@ public class NetworkState implements Parcelable { out.writeParcelable(linkProperties, flags); out.writeParcelable(linkCapabilities, flags); out.writeString(subscriberId); + out.writeString(networkId); } public static final Creator CREATOR = new Creator() { diff --git a/core/tests/coretests/res/raw/xt_qtaguid_iface_fmt_typical b/core/tests/coretests/res/raw/xt_qtaguid_iface_fmt_typical new file mode 100644 index 0000000000..656d5bb82d --- /dev/null +++ b/core/tests/coretests/res/raw/xt_qtaguid_iface_fmt_typical @@ -0,0 +1,4 @@ +ifname total_skb_rx_bytes total_skb_rx_packets total_skb_tx_bytes total_skb_tx_packets +rmnet2 4968 35 3081 39 +rmnet1 11153922 8051 190226 2468 +rmnet0 6824 16 5692 10 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 58269a8b46..b716d8a40c 100644 --- a/core/tests/coretests/src/com/android/internal/net/NetworkStatsFactoryTest.java +++ b/core/tests/coretests/src/com/android/internal/net/NetworkStatsFactoryTest.java @@ -80,58 +80,6 @@ public class NetworkStatsFactoryTest extends AndroidTestCase { assertStatsEntry(stats, "rmnet2", 10001, SET_DEFAULT, 0x0, 1125899906842624L, 984L); } - public void testNetworkStatsSummary() throws Exception { - stageFile(R.raw.net_dev_typical, new File(mTestProc, "net/dev")); - - final NetworkStats stats = mFactory.readNetworkStatsSummary(); - assertEquals(6, stats.size()); - assertStatsEntry(stats, "lo", UID_ALL, SET_ALL, TAG_NONE, 8308L, 8308L); - assertStatsEntry(stats, "rmnet0", UID_ALL, SET_ALL, TAG_NONE, 1507570L, 489339L); - assertStatsEntry(stats, "ifb0", UID_ALL, SET_ALL, TAG_NONE, 52454L, 0L); - assertStatsEntry(stats, "ifb1", UID_ALL, SET_ALL, TAG_NONE, 52454L, 0L); - assertStatsEntry(stats, "sit0", UID_ALL, SET_ALL, TAG_NONE, 0L, 0L); - assertStatsEntry(stats, "ip6tnl0", UID_ALL, SET_ALL, TAG_NONE, 0L, 0L); - } - - public void testNetworkStatsSummaryDown() throws Exception { - stageFile(R.raw.net_dev_typical, new File(mTestProc, "net/dev")); - stageLong(1L, new File(mTestProc, "net/xt_qtaguid/iface_stat/wlan0/active")); - 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 = mFactory.readNetworkStatsSummary(); - assertEquals(7, stats.size()); - assertStatsEntry(stats, "rmnet0", UID_ALL, SET_ALL, TAG_NONE, 1507570L, 489339L); - assertStatsEntry(stats, "wlan0", UID_ALL, SET_ALL, TAG_NONE, 1024L, 2048L); - } - - public void testNetworkStatsCombined() throws Exception { - stageFile(R.raw.net_dev_typical, new File(mTestProc, "net/dev")); - stageLong(1L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/active")); - stageLong(10L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/rx_bytes")); - stageLong(20L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/rx_packets")); - stageLong(30L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/tx_bytes")); - stageLong(40L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/tx_packets")); - - final NetworkStats stats = mFactory.readNetworkStatsSummary(); - assertStatsEntry(stats, "rmnet0", UID_ALL, SET_ALL, TAG_NONE, 1507570L + 10L, - 2205L + 20L, 489339L + 30L, 2237L + 40L); - } - - public void testNetworkStatsCombinedInactive() throws Exception { - stageFile(R.raw.net_dev_typical, new File(mTestProc, "net/dev")); - stageLong(0L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/active")); - stageLong(10L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/rx_bytes")); - stageLong(20L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/rx_packets")); - stageLong(30L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/tx_bytes")); - stageLong(40L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/tx_packets")); - - final NetworkStats stats = mFactory.readNetworkStatsSummary(); - assertStatsEntry(stats, "rmnet0", UID_ALL, SET_ALL, TAG_NONE, 10L, 20L, 30L, 40L); - } - public void testKernelTags() throws Exception { assertEquals(0, kernelToTag("0x0000000000000000")); assertEquals(0x32, kernelToTag("0x0000003200000000")); @@ -152,13 +100,24 @@ public class NetworkStatsFactoryTest extends AndroidTestCase { public void testNetworkStatsSingle() throws Exception { stageFile(R.raw.xt_qtaguid_iface_typical, new File(mTestProc, "net/xt_qtaguid/iface_stat_all")); - final NetworkStats stats = mFactory.readNetworkStatsSummary(); + final NetworkStats stats = mFactory.readNetworkStatsSummaryDev(); assertEquals(6, stats.size()); assertStatsEntry(stats, "rmnet0", UID_ALL, SET_ALL, TAG_NONE, 2112L, 24L, 700L, 10L); assertStatsEntry(stats, "test1", UID_ALL, SET_ALL, TAG_NONE, 6L, 8L, 10L, 12L); assertStatsEntry(stats, "test2", UID_ALL, SET_ALL, TAG_NONE, 1L, 2L, 3L, 4L); } + public void testNetworkStatsXt() throws Exception { + stageFile(R.raw.xt_qtaguid_iface_fmt_typical, + new File(mTestProc, "net/xt_qtaguid/iface_stat_fmt")); + + final NetworkStats stats = mFactory.readNetworkStatsSummaryXt(); + assertEquals(3, stats.size()); + assertStatsEntry(stats, "rmnet0", UID_ALL, SET_ALL, TAG_NONE, 6824L, 16L, 5692L, 10L); + assertStatsEntry(stats, "rmnet1", UID_ALL, SET_ALL, TAG_NONE, 11153922L, 8051L, 190226L, 2468L); + assertStatsEntry(stats, "rmnet2", UID_ALL, SET_ALL, TAG_NONE, 4968L, 35L, 3081L, 39L); + } + /** * Copy a {@link Resources#openRawResource(int)} into {@link File} for * testing purposes. diff --git a/services/tests/servicestests/src/com/android/server/NetworkStatsServiceTest.java b/services/tests/servicestests/src/com/android/server/NetworkStatsServiceTest.java index 6d9bb29351..10f8e61c3d 100644 --- a/services/tests/servicestests/src/com/android/server/NetworkStatsServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/NetworkStatsServiceTest.java @@ -30,7 +30,7 @@ import static android.net.NetworkStats.TAG_NONE; import static android.net.NetworkStats.UID_ALL; import static android.net.NetworkStatsHistory.FIELD_ALL; import static android.net.NetworkTemplate.buildTemplateMobileAll; -import static android.net.NetworkTemplate.buildTemplateWifi; +import static android.net.NetworkTemplate.buildTemplateWifiWildcard; import static android.net.TrafficStats.MB_IN_BYTES; import static android.net.TrafficStats.UID_REMOVED; import static android.net.TrafficStats.UID_TETHERING; @@ -94,7 +94,7 @@ public class NetworkStatsServiceTest extends AndroidTestCase { private static final String IMSI_1 = "310004"; private static final String IMSI_2 = "310260"; - private static NetworkTemplate sTemplateWifi = buildTemplateWifi(); + private static NetworkTemplate sTemplateWifi = buildTemplateWifiWildcard(); private static NetworkTemplate sTemplateImsi1 = buildTemplateMobileAll(IMSI_1); private static NetworkTemplate sTemplateImsi2 = buildTemplateMobileAll(IMSI_2); @@ -136,7 +136,6 @@ public class NetworkStatsServiceTest extends AndroidTestCase { mService = new NetworkStatsService( mServiceContext, mNetManager, mAlarmManager, mTime, mStatsDir, mSettings); mService.bindConnectivityManager(mConnManager); - mSession = mService.openSession(); mElapsedRealtime = 0L; @@ -154,6 +153,7 @@ public class NetworkStatsServiceTest extends AndroidTestCase { replay(); mService.systemReady(); + mSession = mService.openSession(); verifyAndReset(); mNetworkObserver = networkObserver.getValue(); @@ -820,7 +820,8 @@ public class NetworkStatsServiceTest extends AndroidTestCase { } private void expectNetworkStatsSummary(NetworkStats summary) throws Exception { - expect(mNetManager.getNetworkStatsSummary()).andReturn(summary).atLeastOnce(); + expect(mNetManager.getNetworkStatsSummaryDev()).andReturn(summary).atLeastOnce(); + expect(mNetManager.getNetworkStatsSummaryXt()).andReturn(summary).atLeastOnce(); } private void expectNetworkStatsUidDetail(NetworkStats detail) throws Exception { @@ -851,6 +852,7 @@ public class NetworkStatsServiceTest extends AndroidTestCase { final Config config = new Config(bucketDuration, persistBytes, deleteAge, deleteAge); expect(mSettings.getDevConfig()).andReturn(config).anyTimes(); + expect(mSettings.getXtConfig()).andReturn(config).anyTimes(); expect(mSettings.getUidConfig()).andReturn(config).anyTimes(); expect(mSettings.getUidTagConfig()).andReturn(config).anyTimes(); } @@ -912,7 +914,7 @@ public class NetworkStatsServiceTest extends AndroidTestCase { info.setDetailedState(DetailedState.CONNECTED, null, null); final LinkProperties prop = new LinkProperties(); prop.setInterfaceName(TEST_IFACE); - return new NetworkState(info, prop, null, subscriberId); + return new NetworkState(info, prop, null, subscriberId, null); } private static NetworkState buildMobile4gState(String iface) {