Commit Graph

7676 Commits

Author SHA1 Message Date
Benedict Wong
dd9577dc0d NetworkStatsFactory: Take VPNs into account for network/battery stats
This change fixes detailed UID stats to ensure network and battery stats
both take VPNs into account. NetworkStatsFactory is being made aware of
VPNs enabled, and the full set of underlying networks present.

Since traffic can only be migrated over a NetworkStats delta, NSF
maintains a NetworkStats snapshot across all UIDs/ifaces/tags.

This snapshot gets updated whenever NSF records a new snapshot
(based on various hooks such as VPN updating its underlying networks,
network getting lost, etc.), or NetworkStatsService's
getDetailedUidStats() method being called.

This change widens the scope of the existing mPersistentSnapshot lock,
renaming it to mPersistentDataLock, and ensures that TUN migrations are
not done in parallel. Additionally, mVpnInfos is updated via
pointer-swapping, to reduce the scope of the mPersistentDataLock.

The safety of this change is predicated on:
1. NetworkStatsFactory lock not held, so services cannot deadlock through
the cyclical lock.

2. The broadening of the scope of the lock in NetworkStatsFactory has no
threading implications, as it is always the last (leaf node) lock held,
and therefore is impossible to have lock inversion.

Additionally, to ensure VPNs work with 464xlat, the VPN info passed to
the NetworkStatsFactory includes all underlying interfaces, instead of
only passing the first one.

This (partially) re-applies changes from:
aosp/972848: Add one more test for VPN usage stats.
aosp/972847: Addressing comments for http://ag/7700679.
aosp/885338: NetworkStatsService: Fix getDetailedUidStats to take VPNs
             into account.
Co-developed with: Varun Anand <vaanand@google.com>

Bug: 113122541
Bug: 120145746
Bug: 129264869
Bug: 134244752
Test: FrameworksNetTest passing
Test: Manual tests show data usage fixes maintained.
Merged-In: I6466ec1411fc5ed6954125d27d353b6cd1be719e
Change-Id: Id45ae956ad7165be346ecc010e17d260563ac1c0
(cherry picked from commit 9fbbdebc61513982a6775460e1d400956f803bde)
2019-06-21 01:12:27 +00:00
Benedict Wong
c2e4d521ed Remove duplicate line in clat_simple test file
This change removes a redundant line in the xt_qtaguid_with_clat test
file.

Bug: 113122541
Bug: 134244752
Test: FrameworksNetTest passing
Merged-In: I87deb82ba960102b617ab27362e8c5899fa478f8
Change-Id: Iba752fed5600c8a470d14ccdf1dd437668d8dc15
(cherry picked from commit b59cff52510de15ea1dca7f6981d45090b9c8659)
2019-06-21 01:12:17 +00:00
Benedict Wong
9aae3e2336 Revert "Revert "Take all VPN underlying networks into account when migrating traffic for""
This reverts commit d8220c20507f0c346f517d715c7b9826b04d64e2.

Reason for revert: Fix available for deadlocks.

Bug: 113122541
Bug: 134244752
Merged-In: Ib65214598837289bd39dbf040b56ab7835f893ba
Change-Id: Ia90bf2c72ef686e80800d113d03548e0efcadb66
(cherry picked from commit a84d9fa57247cf78a9297b0c6dbd3d81b69e235f)
2019-06-21 01:09:49 +00:00
Chalard Jean
41f2977e94 Merge "Factorize custom asserts." am: 6c176efa3d am: 99fbb40990
am: 500468fb90

Change-Id: I8774ea64f004999ddb46223a76a671388687d455
2019-06-20 14:06:58 -07:00
Chalard Jean
500468fb90 Merge "Factorize custom asserts." am: 6c176efa3d
am: 99fbb40990

Change-Id: I65ea7497abb8b77ebd10ba622075ef3b6c49b2a8
2019-06-20 14:01:31 -07:00
Chalard Jean
af718367c2 Factorize custom asserts.
Also a few utilities that were in the way, and some opportunistic
cleanups.

Test: FrameworksNetTest NetworkStackTest
Change-Id: I385070e2044fd967cb18f1ffea9a86a4627b742e
2019-06-20 16:24:25 +09:00
Junyu Lai
ceabb4f7c5 [automerger skipped] Merge "Move the test of minimum supported keepalive slots to CTS" into qt-dev am: e660a0a7e2 -s ours
am: 893d1305c8 -s ours
am skip reason: change_id I408750fa0bceb0c1c26afb5fead4e44fb824fbc1 with SHA1 5b3b486b8f is in history

Change-Id: I275dec24a2e4519265b7b50cd0a0f68fd62f2968
2019-06-19 23:50:00 -07:00
Junyu Lai
ab7adea1ef [automerger skipped] Merge "Move the test of minimum supported keepalive slots to CTS" into qt-dev am: e660a0a7e2
am: 8ffb2b0106 -s ours
am skip reason: change_id I408750fa0bceb0c1c26afb5fead4e44fb824fbc1 with SHA1 5b3b486b8f is in history

Change-Id: I2efc2fa71b1fa94f0010020f504eaaf7d11be8af
2019-06-19 23:32:40 -07:00
Junyu Lai
fea7663137 [automerger skipped] Move the test of minimum supported keepalive slots to CTS am: ca8b6ed19f -s ours
am: 9205ceb27c -s ours
am skip reason: change_id I408750fa0bceb0c1c26afb5fead4e44fb824fbc1 with SHA1 5b3b486b8f is in history

Change-Id: I1f97cf977eb04ded8da003f3f56547ca70fa1d6e
2019-06-19 23:20:16 -07:00
Junyu Lai
864526737b [automerger skipped] Correct value of supported keepalive count for cellular am: 03e193c8a7 -s ours
am: 80b7c69d6f -s ours
am skip reason: change_id Ia3761f2e78d54866bb2e156d58004396bbc8adc3 with SHA1 ede0d5075b is in history

Change-Id: I9caaa1a09ecc37735ef741e5ce43f42fa9a779e5
2019-06-19 23:19:46 -07:00
Junyu Lai
893d1305c8 [automerger skipped] Merge "Move the test of minimum supported keepalive slots to CTS" into qt-dev
am: e660a0a7e2 -s ours
am skip reason: change_id I408750fa0bceb0c1c26afb5fead4e44fb824fbc1 with SHA1 5b3b486b8f is in history

Change-Id: I6645b0b7be6f7d3b9e6fc2a547fad4df4e5e1cab
2019-06-19 23:01:08 -07:00
Junyu Lai
9205ceb27c [automerger skipped] Move the test of minimum supported keepalive slots to CTS
am: ca8b6ed19f -s ours
am skip reason: change_id I408750fa0bceb0c1c26afb5fead4e44fb824fbc1 with SHA1 5b3b486b8f is in history

Change-Id: I793a942dc543573951b0cc527b3252c23f181a29
2019-06-19 22:54:47 -07:00
Junyu Lai
80b7c69d6f [automerger skipped] Correct value of supported keepalive count for cellular
am: 03e193c8a7 -s ours
am skip reason: change_id Ia3761f2e78d54866bb2e156d58004396bbc8adc3 with SHA1 ede0d5075b is in history

Change-Id: I5c37a44b17e75e439b7de21a3217237fad6e120b
2019-06-19 22:54:32 -07:00
Junyu Lai
e660a0a7e2 Merge "Move the test of minimum supported keepalive slots to CTS" into qt-dev 2019-06-20 05:35:07 +00:00
Junyu Lai
03e193c8a7 Correct value of supported keepalive count for cellular
Cellular only supports 1 keepalive connection so correct the default
supported value to 1.

Bug: 134037217
Bug: 134352656
Test: - atest FrameworksNetTests
      - atest android.net.cts.ConnectivityManagerTest \
        #testSocketKeepaliveLimitTelephony

Merged-In: Ia3761f2e78d54866bb2e156d58004396bbc8adc3
Change-Id: If833b813ba00eeff913160598f1ea9c74e6e35d8
(cherry picked from commit 680abbb591d9c084d1a1e3f9dea1ed8d4e3b1ae8)
2019-06-20 04:02:38 +00:00
Junyu Lai
ca8b6ed19f Move the test of minimum supported keepalive slots to CTS
This change also enables log when keepalive is started.

Bug: 134352656
Test: 1. atest android.net.cts.ConnectivityManagerTest#testSocketKeepaliveLimitTelephony
      2. atest FrameworksNetTests
Merged-In: I408750fa0bceb0c1c26afb5fead4e44fb824fbc1
Change-Id: Ib9b06d3458782a648a2f5b8fd5a9ca1d34bd11f9
(cherry picked from commit aed835f086440f721c279e33d6b5d4b4bc270296)
2019-06-20 02:26:58 +00:00
Junyu Lai
d49c60d1db Merge "Move the test of minimum supported keepalive slots to CTS" am: c961e03526 am: 6ff00fee75
am: 59cc58b295

Change-Id: If063ff023bf386884c6e42d2acb281763975ac8f
2019-06-19 07:36:52 -07:00
Junyu Lai
f2b2fec787 Merge "Correct value of supported keepalive count for cellular" am: 7423873ac8 am: 056eeae27c
am: bafc7c9b8f

Change-Id: Ia0c1e0511bffd630af4aae87cafd99e68a042149
2019-06-19 07:36:43 -07:00
Junyu Lai
59cc58b295 Merge "Move the test of minimum supported keepalive slots to CTS" am: c961e03526
am: 6ff00fee75

Change-Id: Ib9b06d3458782a648a2f5b8fd5a9ca1d34bd11f9
2019-06-19 07:29:11 -07:00
Junyu Lai
bafc7c9b8f Merge "Correct value of supported keepalive count for cellular" am: 7423873ac8
am: 056eeae27c

Change-Id: If833b813ba00eeff913160598f1ea9c74e6e35d8
2019-06-19 07:28:53 -07:00
Junyu Lai
c961e03526 Merge "Move the test of minimum supported keepalive slots to CTS" 2019-06-19 14:08:31 +00:00
Junyu Lai
7423873ac8 Merge "Correct value of supported keepalive count for cellular" 2019-06-19 14:08:31 +00:00
junyulai
5b3b486b8f Move the test of minimum supported keepalive slots to CTS
This change also enables log when keepalive is started.

Bug: 134352656
Test: 1. atest android.net.cts.ConnectivityManagerTest#testSocketKeepaliveLimitTelephony
      2. atest FrameworksNetTests
Change-Id: I408750fa0bceb0c1c26afb5fead4e44fb824fbc1
2019-06-19 16:25:19 +08:00
Paul Hu
aabfe43d3b Merge "Add SocketUtils CTS tests" am: 37377069ba am: f97246a87c
am: 232ad69eaa

Change-Id: I36fb368217ff50319ae6f853f0d22cfc79541b40
2019-06-18 04:19:31 -07:00
Paul Hu
232ad69eaa Merge "Add SocketUtils CTS tests" am: 37377069ba
am: f97246a87c

Change-Id: I11e638a2fab004979298708a5c75bb7c2f208f67
2019-06-18 04:12:27 -07:00
Paul Hu
37377069ba Merge "Add SocketUtils CTS tests" 2019-06-18 10:46:30 +00:00
Android Build Merger (Role)
507ef41b5f Merge "[automerger skipped] Merge "Remove the <= P restriction for WIFI_P2P" into qt-dev am: 2ae76cdbe8 -s ours am: dd6df6a38f -s ours am skip reason: change_id I56c86b0c1912064d5a642991df32d2cefb6a8d5b with SHA1 a070aaa88f is in history" into qt-r1-dev-plus-aosp 2019-06-18 06:47:03 +00:00
Chalard Jean
b649cdf0a4 [automerger skipped] Merge "Remove the <= P restriction for WIFI_P2P" into qt-dev am: 2ae76cdbe8 -s ours
am: dd6df6a38f -s ours
am skip reason: change_id I56c86b0c1912064d5a642991df32d2cefb6a8d5b with SHA1 a070aaa88f is in history

Change-Id: I45912237edf2f485e6e747c7b4878eb440096f18
2019-06-17 23:46:20 -07:00
Chalard Jean
f796d8b495 [automerger skipped] Merge "Remove the <= P restriction for WIFI_P2P" into qt-dev am: 2ae76cdbe8
am: 5fa9d376ea -s ours
am skip reason: change_id I56c86b0c1912064d5a642991df32d2cefb6a8d5b with SHA1 a070aaa88f is in history

Change-Id: Icb639762f04fbae7129a1962548dfd0da200e886
2019-06-17 23:45:18 -07:00
Chalard Jean
dd6df6a38f [automerger skipped] Merge "Remove the <= P restriction for WIFI_P2P" into qt-dev
am: 2ae76cdbe8 -s ours
am skip reason: change_id I56c86b0c1912064d5a642991df32d2cefb6a8d5b with SHA1 a070aaa88f is in history

Change-Id: Ib3b27436b44e678f026ce5026abf23db2f50a4cf
2019-06-17 23:35:11 -07:00
Chalard Jean
c34b699c2e Remove the <= P restriction for WIFI_P2P
This is still sent in an intent.

Bug: 131764329
Fixes: 131764329
Merged-In: I56c86b0c1912064d5a642991df32d2cefb6a8d5b
Change-Id: I64b9d632be97dc51e6085162371bb8c19f410258
(cherry picked from commit e546cb0bd16b7359feeb3c46ba52e64cf91ae4d3)
2019-06-18 06:15:58 +00:00
Varun Anand
c7972c61f4 Merge changes Ieb8645ac,I6466ec14,I87deb82b,I995b108e,Ib6521459 am: 2ce04660f6 am: 48f59a0fdf
am: 950e0419c0

Change-Id: I16884eef6e2b8d64031363cfb4adacc4a0a9ead7
2019-06-17 10:43:22 -07:00
Varun Anand
950e0419c0 Merge changes Ieb8645ac,I6466ec14,I87deb82b,I995b108e,Ib6521459 am: 2ce04660f6
am: 48f59a0fdf

Change-Id: I960e94b03b29282ae2b03f78a19ed2692bd88e05
2019-06-17 10:33:53 -07:00
Varun Anand
2ce04660f6 Merge changes Ieb8645ac,I6466ec14,I87deb82b,I995b108e,Ib6521459
* changes:
  Remove VPN info arrays from NetworkStats(Observer|Recorder)
  NetworkStatsFactory: Take VPNs into account for network/battery stats
  Remove duplicate line in clat_simple test file
  Remove unused lastStats parameter
  Revert "Revert "Take all VPN underlying networks into account when migrating traffic for""
2019-06-17 15:56:24 +00:00
Chalard Jean
feabbff9b6 Merge "Remove the <= P restriction for WIFI_P2P" am: 43a52d0aaa am: bb754c9c8d
am: 649a5747ef

Change-Id: I56e16f7a29f20e4ebbbcef2228fc2935b41df564
2019-06-17 08:28:25 -07:00
Chalard Jean
649a5747ef Merge "Remove the <= P restriction for WIFI_P2P" am: 43a52d0aaa
am: bb754c9c8d

Change-Id: I14f5865249740587d550ac31b59883f4a87fd4a1
2019-06-17 08:20:18 -07:00
Treehugger Robot
43a52d0aaa Merge "Remove the <= P restriction for WIFI_P2P" 2019-06-17 14:58:21 +00:00
Android Build Merger (Role)
44c0110785 Merge "[automerger skipped] Merge changes I80bebcd0,I35f3718f into qt-dev am: 08793a3b64 am: a63b604929 -s ours am skip reason: change_id Iad0e9a28670e96a3c953518a0d0ccd77e2f2fa80 with SHA1 6988872c91 is in history" into qt-r1-dev-plus-aosp 2019-06-17 14:31:27 +00:00
Chalard Jean
897be27405 [automerger skipped] Merge changes I80bebcd0,I35f3718f into qt-dev am: 08793a3b64
am: a63b604929 -s ours
am skip reason: change_id Iad0e9a28670e96a3c953518a0d0ccd77e2f2fa80 with SHA1 6988872c91 is in history

Change-Id: Idbcfe381f246a6d9c7e9ef3c51150f6f2a065230
2019-06-17 07:29:56 -07:00
Chalard Jean
df2a4b8d6e [automerger skipped] Merge changes I80bebcd0,I35f3718f into qt-dev am: 08793a3b64 -s ours
am: 990438b35b -s ours
am skip reason: change_id Iad0e9a28670e96a3c953518a0d0ccd77e2f2fa80 with SHA1 6988872c91 is in history

Change-Id: Iad5f4f152115dd4cbb31dbe7e37b3aea0b6ce071
2019-06-17 07:29:54 -07:00
Chalard Jean
990438b35b [automerger skipped] Merge changes I80bebcd0,I35f3718f into qt-dev
am: 08793a3b64 -s ours
am skip reason: change_id Iad0e9a28670e96a3c953518a0d0ccd77e2f2fa80 with SHA1 6988872c91 is in history

Change-Id: I9094b83959e1f75f90edac095060240c129b73b0
2019-06-17 07:21:50 -07:00
Chalard Jean
5411bda0ca Simplification of code to prevent a Log.wtf in expected cases.
This mostly serves to unindent code to make it locally more
readable. It is a functional no-op.

Bug: 135043192
Test: atest FrameworksNetTests
Merged-In: Iad0e9a28670e96a3c953518a0d0ccd77e2f2fa80
Change-Id: I80bebcd04c277f6e4b0665fe1253b2309e3bc535
(cherry picked from commit e1f5759319a4559b3cf89029449878dc56f92bb7)
2019-06-17 13:16:46 +00:00
Chalard Jean
c48e07c247 Merge "Simplification of code to prevent a Log.wtf in expected cases." am: 3cc6f6627f am: fbc68b975a
am: 164ce6f0da

Change-Id: I846943dc91ef3cb6dc7516ba38dc93fb8a80bb88
2019-06-17 04:34:32 -07:00
Chalard Jean
164ce6f0da Merge "Simplification of code to prevent a Log.wtf in expected cases." am: 3cc6f6627f
am: fbc68b975a

Change-Id: I5f5fa22468c8db09e4eeb3d446220b4ebc396d98
2019-06-17 04:24:08 -07:00
Chalard Jean
a070aaa88f Remove the <= P restriction for WIFI_P2P
This is still sent in an intent.

Bug: 975059
Change-Id: I56c86b0c1912064d5a642991df32d2cefb6a8d5b
2019-06-17 19:46:34 +09:00
Chalard Jean
3cc6f6627f Merge "Simplification of code to prevent a Log.wtf in expected cases." 2019-06-17 10:37:50 +00:00
Chalard Jean
6988872c91 Simplification of code to prevent a Log.wtf in expected cases.
This mostly serves to unindent code to make it locally more
readable. It is a functional no-op.

Bug: 135043192
Test: atest FrameworksNetTests
Change-Id: Iad0e9a28670e96a3c953518a0d0ccd77e2f2fa80
2019-06-17 18:01:35 +09:00
Android Build Merger (Role)
663354013d Merge "Merge "Restore the Private DNS settings to default mode upon network resets." into qt-dev am: 49fd0568b5 am: bfbb0f7ef9" into qt-r1-dev-plus-aosp 2019-06-17 04:23:02 +00:00
Xiao Ma
83d4f55bab Merge "Restore the Private DNS settings to default mode upon network resets." into qt-dev am: 49fd0568b5
am: bfbb0f7ef9

Change-Id: Ib4aa84f745ae26865a94325c8ba8bf8e5d6f9189
2019-06-16 21:22:17 -07:00
Xiao Ma
7f4b47f6fb Merge "Restore the Private DNS settings to default mode upon network resets." into qt-dev am: 49fd0568b5
am: 6033e849b2

Change-Id: Id2fb47805befac50c0428eca30ffe93590686c01
2019-06-16 21:21:21 -07:00