Commit Graph

2879 Commits

Author SHA1 Message Date
Felipe Leme
39e1923fbb Refactored NetworkStatsServiceTest to use Mockito instead of EasyMock.
Test: m -j32 FrameworksServicesTests && adb install -r -g ${ANDROID_PRODUCT_OUT}/data/app/FrameworksServicesTests/FrameworksServicesTests.apk && adb shell am instrument -e class "com.android.server.net.NetworkStatsServiceTest" -w "com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner"

BUG: 30943463
Change-Id: I3fbdb0918f1d0e68f32afe07ca38d4ef217025df
2016-08-22 13:14:21 -07:00
Felipe Leme
34634f9339 Fixed NetworkStatsServiceTest and converted it to JUnit4.
Most tests were failing because due to a null NetworkCapabilities.
Example:

1) testNetworkStatsWifi(com.android.server.net.NetworkStatsServiceTest)
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.net.NetworkCapabilities.hasCapability(int)' on a null object reference
	at
	com.android.server.net.NetworkStatsService.updateIfacesLocked(NetworkStatsService.java:983)

BUG: 30839080

Change-Id: Ib81d81df2828fc573c40b26c23af9d80ae43d3f6
2016-08-18 15:45:09 -07:00
Erik Kline
735ab8a858 Support timeouts for requestNetwork() invocations. [DO NOT MERGE]
am: 8616c69985  -s ours

Change-Id: Ia98ec84e1c9e691c58ebb79f516b62b229dda5fe
2016-08-17 17:51:52 +00:00
Etan Cohen
1b47629b49 Merge "Support timeouts for requestNetwork() invocations." 2016-08-17 17:15:46 +00:00
Jeremy Joslin
52a7d52cc5 VPN network stat accounting changes.
Properly account for VPN apps that make heavy use of the tun
interface. Prior to this change a VPN app could be incorrectly charged
for more data than it actually used if it sent more traffic through
the tun interface than the underlying interface.

This change excludes VPN app traffic on the tun interface from the
adjustment pool and doesn't redistribute traffic to the VPN app.
Instead all of the redistributed traffic is deducted from the VPN app
which effectively represents any overhead incurred by the VPN app.

BUG: 30557871
Change-Id: I62a75a0c0c0111e052b7903baa9f5d6d94ef57fd
2016-08-16 15:53:57 -07:00
Erik Kline
66721821df Support timeouts for requestNetwork() invocations.
(cherry-pick of 06c3ef1367e850746eef0a5462bdce8674d74c30)

Bug: 21414325
Change-Id: I08118be8e8cf92fc406d431e99a6c9191a863ff3
2016-08-15 10:19:45 -07:00
Erik Kline
8616c69985 Support timeouts for requestNetwork() invocations. [DO NOT MERGE]
Bug: 21414325
Change-Id: I08118be8e8cf92fc406d431e99a6c9191a863ff3
2016-08-15 17:18:11 +00:00
Winson
ebc8e3fc17 Defaulting wallpaper offset to edge of the screen. am: 4b4ba90d66 am: 18faeaa5fa
am: 89218fdd83

Change-Id: I86d0616df8f938b1b80651be83802796a24250b9
2016-07-31 02:12:44 +00:00
Hugo Benichi
89218fdd83 IpConnectivityMetrics: no metrics upload in tests am: 638621a1f9
am: ae048d8363

Change-Id: I4171f72e27f39f2c10e4607b84934676337c1b4e
2016-07-29 09:34:35 +00:00
Hugo Benichi
638621a1f9 IpConnectivityMetrics: no metrics upload in tests
Similarly to ApfTest, this patch changes ConnectivityServiceTest to use
a mock object instead of IpConnectivityLog so that running
ConnectivityServiceTest does not generate android.net.metrics events.

Bug: 30450301
Change-Id: Ibc0479f381f26e60baefbae15407c62aecbf6666
2016-07-29 16:58:35 +09:00
Hugo Benichi
61f1063650 resolve merge conflicts of c489935 to nyc-mr1-dev-plus-aosp
am: 8850477c85

Change-Id: Ia0a4544784592ac857e5bd652fee47eec621f3a0
2016-07-26 15:18:51 +00:00
Hugo Benichi
8850477c85 resolve merge conflicts of c489935 to nyc-mr1-dev-plus-aosp
Change-Id: Ib1c01241fece36f660d27f3450ba8059b3b2809f
2016-07-26 13:08:14 +09:00
Hugo Benichi
c4899354b0 Add CONNECTIVITY_USE_RESTRICTED_NETWORKS permission
This patch creates a new permission used by ConnectivityService to give
access to restricted networks without the NET_CAPABILITY_NOT_RESTRICTED
capability bit on.

Bug: 24497316
Change-Id: I5b6c8a9ef14395b2f1ab26cb17b24d7876ec79f1
2016-07-25 10:24:42 +09:00
Lorenzo Colitti
ce5631a865 Merge \"Merge \\"Add an isListen method to NetworkRequests.\\" into nyc-mr1-dev am: b5239329b1\" into nyc-mr1-dev-plus-aosp
am: 17450e41b3

Change-Id: Ic71a5722ee877de73e7ffd340a5ffb84a2d4910d
2016-07-18 15:15:33 +00:00
Lorenzo Colitti
56b3b700f2 Merge \"Add an isListen method to NetworkRequests.\" into nyc-mr1-dev
am: b5239329b1

Change-Id: Ib712c3c7b44d3a623d5f5facf0c7f6844c3ebb82
2016-07-18 15:08:54 +00:00
Lorenzo Colitti
6737b64741 Add an isListen method to NetworkRequests.
This allows simplification of the ConnectivityService code.

Bug: 23113288
Change-Id: I124544b99c5a920124e9a3d31cda8c6d2abc21fd
2016-07-18 18:42:26 +09:00
Erik Kline
2825e6fa16 Add IPv6 tethering coordinator am: 4ab3a3a7f0
am: 3a472faf15

Change-Id: I9a5bd7d72ec6a4b63922fc5704d15cb5eafc1e8d
2016-07-13 05:02:13 +00:00
Erik Kline
3a472faf15 Add IPv6 tethering coordinator
am: 4ab3a3a7f0

Change-Id: Icf8034276d4edc7167ad03ff8860ac8e3d05c464
2016-07-13 04:57:17 +00:00
Erik Kline
4ab3a3a7f0 Add IPv6 tethering coordinator
Add an IPv6TetheringCoordinator to TetheringMaster StateMachine, which
receives and processes NetworkState updates and passes the necessary IPv6
information to the revelant TetherInterfaceStateMachine.

Add an IPv6TetheringInterfaceServices to TetherInterfaceStateMachine, which
is responsible for adding local network routes and managing an IPv6
RouterAdvertisementDaemon.

Bug: 9580643
Change-Id: I3eaae460b80752e2115359d7bde873a1e9ea515a
2016-07-13 12:08:06 +09:00
Etan Cohen
965cbf6017 resolve merge conflicts of 5b2641e to master
Change-Id: Ib300a32277a4bb21ed9f5a024118370d361aa1c1
2016-07-12 10:09:16 -07:00
Hugo Benichi
4966fe7278 Merge \\\\"Fix unsafe concurrent access in LegacyTypeTracker\\\\" am: a575de0de8 am: 40efcef1c6 am: e34e29d2ac
am: 0197351d94

Change-Id: I99986c0e953353eca333f732a3238f569d7dbbd4
2016-07-12 13:31:45 +00:00
Hugo Benichi
0197351d94 Merge \\\"Fix unsafe concurrent access in LegacyTypeTracker\\\" am: a575de0de8 am: 40efcef1c6
am: e34e29d2ac

Change-Id: I4986b4646220b9be53f8063f2d5a41a763011a96
2016-07-12 13:26:15 +00:00
Hugo Benichi
e34e29d2ac Merge \\"Fix unsafe concurrent access in LegacyTypeTracker\\" am: a575de0de8
am: 40efcef1c6

Change-Id: I20a3426002ebe6f4db9de7edf7c4072d0a27dbdc
2016-07-12 13:20:56 +00:00
Hugo Benichi
40efcef1c6 Merge \"Fix unsafe concurrent access in LegacyTypeTracker\"
am: a575de0de8

Change-Id: I928b2c6ef8e20e197425c214242287185a9daa06
2016-07-12 13:15:41 +00:00
Treehugger Robot
a575de0de8 Merge "Fix unsafe concurrent access in LegacyTypeTracker" 2016-07-12 13:08:21 +00:00
Hugo Benichi
4e99811dc2 Fix unsafe concurrent access in LegacyTypeTracker
This patch adds synchronization inside LegacyTypeTracker so that
getNetworkForType() can safely run concurrently with remove().

Without synchronization if remove() removes the last network for a
given type while getNetworkForType() runs for the same type, it is
possible that getNetworkForType tries to access the head of an empty
list, resulting in a runtime exception.

This issue was found by zoran.jovanovic@sonymobile.com who proposed a
fix in AOSP (Change-Id: Ia963662edb9d643790e8d9439e4dbdcac4c2187b).

This patch differs from the fix proposed by the bug reporter and tries
instead to do the minimum amount of locking to make getNetworkForType
safe.

Bug: 29030387

(cherry picked from commit 9c807fdcd4)

Change-Id: I915aac527fc8828b32bf35fee870add2dfb11d8d
2016-07-12 21:56:40 +09:00
Hugo Benichi
7fe197128e ConnectivityService dump: add apps blocked logs am: 7b3bf37ac3
am: 6fef6d72f2

Change-Id: If0842e480b448cbbcb9fff3a03e6e9d84a385c89
2016-07-12 04:44:21 +00:00
Hugo Benichi
6fef6d72f2 ConnectivityService dump: add apps blocked logs
am: 7b3bf37ac3

Change-Id: I50c87dc35ef219844a5337768ec2526aeff4f1ca
2016-07-12 04:39:05 +00:00
Hugo Benichi
7b3bf37ac3 ConnectivityService dump: add apps blocked logs
This patch adds NetworkInfo BLOCKED/UNBLOCKED status of apps to
ConnectivityService's dump logs.

The BLOCKED or UNBLOCKED status of an app is logged with the app uid
when the app calls getActiveNetworkInfo().

Examples:
mNetworkInfoBlockingLogs (most recent first):
  07-11 11:04:43.139 - BLOCKED 10060
  07-11 11:04:39.056 - UNBLOCKED 10061
  07-11 11:04:38.851 - BLOCKED 10061

Bug: 29981766
Change-Id: I6e2fde446702b92b0964ed894409b5d733d8f8a7
2016-07-12 11:39:48 +09:00
Erik Kline
1933d46565 Support requesting async LinkProperties/NetworkCapabilities updates am: aec3f5ef5b
am: 95d433f07a

Change-Id: If177966a19c830a106ce689c7e07a7835bb2c1a1
2016-07-12 01:46:09 +00:00
Erik Kline
d50de0f772 Basic IPv6 Router Advertisement daemon am: e8782af491
am: 67fc452377

Change-Id: I30627432d5736a17248aa90b225d08244a4dee5d
2016-07-12 01:46:01 +00:00
Erik Kline
95d433f07a Support requesting async LinkProperties/NetworkCapabilities updates
am: aec3f5ef5b

Change-Id: Icc048323debbbe641941c5c0d993f4c9782c5d3e
2016-07-11 11:01:42 +00:00
Erik Kline
67fc452377 Basic IPv6 Router Advertisement daemon
am: e8782af491

Change-Id: I242eb8e932581a537a47f31e3f16c7e776da91cf
2016-07-11 10:38:49 +00:00
Erik Kline
aec3f5ef5b Support requesting async LinkProperties/NetworkCapabilities updates
Bug: 9580643
Change-Id: I1d7ba7645c20d7d53f6eef777dfce43727940f13
2016-07-11 19:17:41 +09:00
Erik Kline
e8782af491 Basic IPv6 Router Advertisement daemon
Bug: 9580643
Change-Id: Iebd4d1f694699ffd4daf7d71e9b9d8f49e9b632f
2016-07-11 18:37:25 +09:00
Lorenzo Colitti
3f0679a267 Merge \\"Rewrite lingering.\\" into nyc-mr1-dev am: 49b4492b33
am: d1cf630685

Change-Id: Ieff4a63ad1d5959760e69f68e832ca256ec2c2ae
2016-07-07 11:06:53 +00:00
Lorenzo Colitti
d1cf630685 Merge \"Rewrite lingering.\" into nyc-mr1-dev
am: 49b4492b33

Change-Id: I62d69f20101318b42d4d333b104dcf4f64dc1725
2016-07-07 11:01:19 +00:00
Lorenzo Colitti
49b4492b33 Merge "Rewrite lingering." into nyc-mr1-dev 2016-07-07 10:55:39 +00:00
Hugo Benichi
4f03ac8b93 Merge \\"ConnectivityManager: no double callback remove\\" into nyc-mr1-dev am: cde023a3ea
am: e7b50f9ed8

Change-Id: I8fb5bac2bb6b7665192c8c788d7818d637500935
2016-07-07 09:45:36 +00:00
Hugo Benichi
e7b50f9ed8 Merge \"ConnectivityManager: no double callback remove\" into nyc-mr1-dev
am: cde023a3ea

Change-Id: Ib7b10c59c1f7c84ec78c7527fba8a6c9aa5b0c05
2016-07-07 09:38:29 +00:00
TreeHugger Robot
cde023a3ea Merge "ConnectivityManager: no double callback remove" into nyc-mr1-dev 2016-07-07 09:33:35 +00:00
Lorenzo Colitti
bfb539e90a Merge \\"Prepare to delete useless loop in handleReleaseNetworkRequest.\\" into nyc-mr1-dev am: 540ee120e5
am: bebd1cf7fe

Change-Id: I68c75cd5980075bdb2586ba5967fcb6ce20dc158
2016-07-07 07:49:13 +00:00
Lorenzo Colitti
bebd1cf7fe Merge \"Prepare to delete useless loop in handleReleaseNetworkRequest.\" into nyc-mr1-dev
am: 540ee120e5

Change-Id: I8cd95575e7758ee94417ec15e407f396434f4c04
2016-07-07 07:40:46 +00:00
TreeHugger Robot
540ee120e5 Merge "Prepare to delete useless loop in handleReleaseNetworkRequest." into nyc-mr1-dev 2016-07-07 07:33:07 +00:00
Lorenzo Colitti
70c70fa7e2 Rewrite lingering.
The two major changes here are:

- Move lingering out of NetworkMonitor. The fact that lingering
  is currently its own state in NetworkMonitor complicates the
  logic there: while a network is lingering it cannot be in any
  other state, we have to take care not to leave LingeringState
  for the wrong reason, etc.
- Instead of keeping a single per-network boolean to indicate
  whether a network is lingered or not, keep a linger timer for
  every request. This allows us to fix various corner-case bugs
  in lingering.

The changes in behaviour compared to the current code can be seen
in the unit test changes. Specifically:

1. Bug fix: when a network is lingered, and a request is added
   and removed to it, the existing code tears the network down
   immediately. The new code just sends another CALLBACK_LOSING
   and resumes lingering with the original timeout.
2. Bug fix: if cell is unvalidated and wifi comes up and
   validates before cell does (as might happen on boot), the
   existing code immediately tears down cell. The new code
   lingers cell, which is correct because unvalidated cell was
   the default network, so an app might have been using it.
3. Correctness improvement: always send CALLBACK_AVAILABLE for
   the new network before sending CALLBACK_LOSING. This was not
   really an issue in practice, because the usual flow is:
    - Network A is the default.
    - Network B connects, CALLBACK_AVAILABLE.
    - Network B validates, CALLBACK_LOSING.

Bug: 23113288
Change-Id: I2f1e779ff6eb869e62921a95aa9d356f380cf30a
2016-07-07 16:18:57 +09:00
Lorenzo Colitti
daeb6109e1 Prepare to delete useless loop in handleReleaseNetworkRequest.
As explained in the TODO, the loop serves no purpose since only
one network can be satisfying a given request at a time.

Instead of looping, look up the nai in the mNetworkForRequestId
array that exists for this purpose.

Keep the loop around with an Slog.wtf statement on it so we can
see if we ever hit it, and add a TODO to delete it if we don't.

Bug: 23113288
Change-Id: I173de4bd45c5a4169b7a062a981f2ecccaa44143
2016-07-07 14:50:12 +09:00
Lorenzo Colitti
52fd5de631 Merge \"Merge \\"Merge \\\"Make registerDefaultNetwork work on metered networks.\\\" into nyc-dev am: 33cdc4d136 -s ours\\" into nyc-mr1-dev am: 6f93a6c2c3\" into nyc-mr1-dev-plus-aosp
am: c2681c499e

Change-Id: I173678ab505e60158335258459c68eddeae124ec
2016-07-07 01:47:42 +00:00
Lorenzo Colitti
c5877d5645 Merge \\\"Make registerDefaultNetwork work on metered networks.\\\" into nyc-dev am: 33cdc4d136 am: a3dfda9f45 -s ours
am: 6832194059

Change-Id: Id4761d4e1a64a20f597286890a95b1c375a0ba05
2016-07-07 01:37:46 +00:00
Android Build Merger (Role)
c2681c499e Merge "Merge \"Merge \\"Make registerDefaultNetwork work on metered networks.\\" into nyc-dev am: 33cdc4d136 -s ours\" into nyc-mr1-dev am: 6f93a6c2c3" into nyc-mr1-dev-plus-aosp 2016-07-07 01:33:11 +00:00
Pankaj Kanwar
6832194059 Merge \\"Make registerDefaultNetwork work on metered networks.\\" into nyc-dev am: 33cdc4d136
am: a3dfda9f45  -s ours

Change-Id: I71fcfb810a477f5bcc3d7642375c6ef56b747517
2016-07-07 01:32:00 +00:00