Commit Graph

122 Commits

Author SHA1 Message Date
Jeff Sharkey
6fc33809a7 Persist UID stats, lazy loading, resize buckets.
Persisting detailed UID stats in separate "netstats_detail.bin" file
to enable different schedules for summary and detail polling.  Only
load detailed UID history on demand, since it's not needed during
boot.  Add test to verify UID stats are persisted across simulated
reboot.

Move external settings into well-named interface, which is still
backed by Settings.Secure.  During periodic poll events, resize any
history to match current bucket duration setting.  Test to verify.

Change-Id: I6366f3583a591f8ba859b0e5987daf8cafa4e95a
2011-06-11 17:55:56 -07:00
Jeff Sharkey
9d12bd2873 Interface-level network policy, persist policies.
Define NetworkPolicy as cycle-reset day and warning/limit values, and
set/get through NetworkPolicyManager.  Watch ConnectivityManager for
network connection events, and apply quota rules based on matching
interfaces.  Policy service matches based on strong identity to support
IMSI-specific policy values.

Calculates remaining quota based on current stats recorded since the
last reset cycle day.  Tests to verify edge cases around February.

Persist network and UID policies in XML, and restore on boot.

Change-Id: Id40ba7d6eed6094fbd5e18e6331286c606880d80
2011-06-10 19:35:20 -07:00
Jeff Sharkey
98693eb89a Persist network stats using AtomicFile.
Implements read/write of network stats using AtomicFile, along with
magic number and versioning.  Stores in "/data/system/netstats.bin"
for now.  Tests to verify that stats are persisted across a simulated
reboot, and to verify that TEMPLATE_WIFI is working.

Fixed bug where kernel counters rolling backwards would cause negative
stats to be recorded; now we clamp deltas at 0.

Change-Id: I53bce26fc8fd3f4ab1e34ce135d302edfa34db34
2011-06-09 10:14:13 -07:00
Jeff Sharkey
0b1cfc0d55 Compute range-based usage in NetworkStatsHistory.
When given a start/end range, interpolate between buckets to return
the total network usage.  Used to summarize detailed UID stats.  Method
to combine NetworkStatsHistory regardless of bucket size.  Used to
combine all histories matching a template.

Added tests for both methods.

Change-Id: Ia463910c0ecf7cf08dcf97c658ad99742bd6b882
2011-06-07 23:54:28 -07:00
Jeff Sharkey
b06fe7ad72 UID network stats, secure settings, and random.
Collect UID-granularity network stats during regular poll event.  Add
dumpsys argument to generate fake historical data for debugging, and
move stats parameters to Settings.Secure.

Change-Id: I09b36a2955dc10c697d4b9c3ff23dcb3ac37bd70
2011-06-07 23:43:46 -07:00
Jeff Sharkey
1a3eb889f0 Map network identity using ConnectivityService.
Instead of deriving network identity based on raw subsystem broadcasts,
listen for updates from ConnectivityService.  Added atomic view of all
active NetworkState, and build map from "iface" to NetworkIdentity set
for stats tracking.

To avoid exposing internal complexity, INetworkStatsService calls use
general templates.  Added TelephonyManager mapping to classify network
types using broad labels like "3G" or "4G", used to drive templates.

Cleaned up Objects and Preconditions.

Change-Id: I1d4c1403f0503bc3635a59bb378841ba42239a91
2011-06-07 23:09:25 -07:00
Jeff Sharkey
9ab8c6a64d Collect historical network stats.
Periodically records delta network traffic into historical buckets to
support other services, such NetworkPolicyManager and Settings UI.

Introduces NetworkStatsHistory structure which contains sparse, uniform
buckets of data usage defined by timestamps.  Service periodically
polls NetworkStats and records changes into buckets.  It only persists
to disk when substantial changes have occured.  Current parameters
create 4 buckets each day, and persist for 90 days, resulting in about
8kB of data per network.

Only records stats for "well known" network interfaces that have been
claimed by Telephony or Wi-Fi subsystems.  Historical stats are also
keyed off identity (such as IMSI) to support SIM swapping.

Change-Id: Ia27d1289556a2bf9545fbc4f3b789425a01be53a
2011-06-01 17:44:52 -07:00
Brad Fitzpatrick
6e5a04af0d am c6a47e98: Merge "Fix a race condition in NativeDaemonConnector"
* commit 'c6a47e98717df6980abc56c93a0dcc83c71f9d96':
  Fix a race condition in NativeDaemonConnector
2011-02-07 10:04:54 -08:00
anga
c4faee0b10 Fix a race condition in NativeDaemonConnector
Fixes a race between the onDaemonConnected callback and setting the
mOutputStream in NativeDaemonConnector.

MountService connects to vold using the NativeDaemonConnector.
Throws a “NativeDaemonConnectorException: No output stream!”
when the onDaemonConnected callback in MountService calls the doListCommand.

Change-Id: Ib895bab37f7df680e4362df6366198c0a673c5e9
2011-02-07 09:53:59 -08:00
Irfan Sheriff
bc1c40a484 Do not add unsolicited events to queue
Adding unsolicited events to response queue
results in doCommand() returning the wrong
result.

Pulling this change from master.

Bug: 3258529
Change-Id: I2a4b0bd8bb30b31682d7d61ee94a0d246bf10de2
2011-01-16 14:31:55 -08:00
Robert Greenwalt
56451a4477 Cleanup Netd to prevent getting hung.
If the sending of the command fails we should note it and not wait forever
for the response.

We should also not say we're ready until we actually are.

bug:2993205
Change-Id: I380f0312ac4693ad184a526b330fdfa23f6ac558
2010-09-22 16:43:23 -07:00
Kenny Root
d347480a18 Fix buffer compacting in NativeDaemonConnector
The buffer was being compacted in the read loop, but the start offset on
the compacted buffer wasn't being considered after the next read.

Bug: 2501075
Change-Id: I163297d751cf800d0bbc66df66b1a0fa0785de49
2010-09-02 22:24:06 -07:00
Kenny Root
ef79060f4e Add more error checking for ndc
In NativeDaemonConnector.doCommand() calls, there was inconsistent error
checking. This change adds error checking for every call and makes it so
that any call to .doCommand() that gets an error code won't cause the
code to hang forever.

Change-Id: I4584953a759a48ad16adfe8ee9e564b5f5796680
2010-06-01 13:29:04 -07:00
Kenny Root
07726310ae Compact when NativeDaemonConnector hits buffer limit
If NativeDaemonConnector hits its buffer limit, it would truncate the
data and lose some information. This change compacts the buffer and then
retries to read the rest of the data.

Change-Id: I0d5fee097bdd6808212ef3ad6fb4abbc6310fd4a
2010-03-22 18:02:45 -07:00
Joe Onorato
f7791634a2 Switch the services library to using the new Slog 2010-03-01 13:06:50 -08:00
San Mehat
6eec2a8bf5 NativeDaemonConnector: Improve bad list IPC diagnostics
Signed-off-by: San Mehat <san@google.com>
2010-02-17 09:05:16 -08:00
San Mehat
f0d2199fc7 NativeDaemonConnector: Improve error reporting and debug formatting
Updated:
  NativeDaemonConnector: Put debugging behind a conditional

Signed-off-by: San Mehat <san@google.com>
2010-02-08 19:29:58 -08:00
San Mehat
a52a743959 NativeDaemonConnector: Improve NativeDaemonException reporting to include the actual error response
Signed-off-by: San Mehat <san@google.com>
2010-02-03 14:37:43 -08:00
San Mehat
0e0980b533 NativeDaemonConnector: Cleanup socket code and use a proper exception
Signed-off-by: San Mehat <san@google.com>
2010-01-29 06:30:23 -08:00
San Mehat
f2b0adabbd NativeDaemonConnector: fix doListCommand() to return *all* list elements
Signed-off-by: San Mehat <san@google.com>
2010-01-26 13:18:03 -08:00
San Mehat
4a32297c1e NativeDaemonConnector: Add a convenience method for obtaining lists
Signed-off-by: San Mehat <san@google.com>
2010-01-20 15:32:02 -08:00
San Mehat
8592334382 services: Introduce NativeDaemonConnector class
This class provides an interface to communicate with native daemons using the
libsysutils framework communication code.

Signed-off-by: San Mehat <san@google.com>

NativeDaemonConnector: fix whitespace

Signed-off-by: San Mehat <san@google.com>

NativeDaemonConnector: Fix review comments

Signed-off-by: San Mehat <san@google.com>

NativeDaemonConnector: On an error, re-try the connection

Signed-off-by: San Mehat <san@google.com>
2010-01-12 13:55:39 -08:00