Commit graph android_packages_modules_Co.../tests/unit/java/com/android
Message SHA1
Add unit tests for preferring bad wifi
This tests both the behavior of preferring bad wifi and
the notification.

Test: this
Change-Id: I5b93af756e898998f769015004c3286cd2ac5222

Chalard Jean   commited 2022-09-24 11:35:15 +09:00
4203229ac9
Clear notif upon bad wifi off + tests for bad wifi notif
If a notification is up and the avoid bad wifi setting
is turned off, the notification should disappear.

This patch also adds some general tests for the bad wifi
notifications.

Test: new tests in this patch
Change-Id: I5bc42afbe0efd93cfb59a759bf0aaba49a4bfc9f

Chalard Jean   commited 2022-09-24 11:11:51 +09:00
1325a631cc
Detect captive portals as they are tested, not upon notifying
In the previous code, ConnectivityService would mark a network
a captive portal when NetworkMonitor sends it a message to notify
the user for it. Theoretically, this is incorrect ; instead, the
marking should be done upon receiving the message that the network
was tested to be a captive portal.

In practice this hasn't been a problem so far. The captive portal
capability is observable in the app-received callbacks, but for
these purposes the old code and the new code behave the same, in
that in the callbacks, the network used to not have the portal
capability, then later it acquires it.

However, this is only not a problem as long as the captive portal
bit isn't used by network selection, which an upcoming change has
to implement for the "prefer bad wifi" feature. When that is the
case, network selection prefers the wrong result between the time
the network is marked as having been evaluated and the time the
network has been marked a captive portal. It should be marked as
both at the same time to avoid this discrepancy. This is what
this patch is accomplishing.

To do this correctly, this patch also has to disconnect the network
immediately upon it being tested as a captive portal if the old
CAPTIVE_PORTAL_MODE setting is set to CAPTIVE_PORTAL_MODE_AVOID,
instead of keeping it until NM sends the message to notify about
it.

Unfortunately because of the relative timing of the events this
patch has observable impact on what callbacks are sent because of
b/245893397 (the DoubleValidated bug). Before this patch, there
would be an extra useless callback when a captive portal validates
where the capabilities contain both VALIDATED and CAPTIVE_PORTAL,
then a second callback removing CAPTIVE_PORTAL. This patch fixes
this, but unfortunately introduces a symmetrical extra useless
callback when a captive portal network starts matching a callback,
where onCapabilitiesChanged is fired a second time after the
onAvailable sequence with the same capabilities. Fixing this is
very complex ; the best (and simplest) solution is really to
address b/245893397 decisively.

In the mean time, the behavior implemented by this patch is better
than the old one, because there no longer is an observable state
where the network is supposed to be a closed captive portal AND
validated, but instead there is a useless, but correct, caps
callback that mirrors exactly the one from b/245893397. When
b/245893397 is addressed this behavior goes away at the same time,
so this is probably the better behavior.

Test: FrameworksNetTests CtsNetTestCases
Change-Id: I6694db498507860e1d711e2aa0c591dfbfa90be2

Chalard Jean   commited 2022-09-24 11:11:49 +09:00
8a9061f0b5
Implement the "actively prefer bad wifi" feature
Test: in progress
Change-Id: Ib7aba464a2f32642d434418842306dfcf90b8319

Chalard Jean   commited 2022-09-22 16:59:30 +09:00
9708f7239c
Introduce an overlay for actively preferring bad wifi.
This correctly updates when the mcc/mnc change.

Test: MultinetworkPolicyTrackerTest
Change-Id: I11c7ea7074a15975fb68d39eb3c728778d84a516

Chalard Jean   commited 2022-09-22 16:58:49 +09:00
020b93ac63
Merge changes I0b88bc8b,I60d884db,I436858e7,Iaaace0e6,Ie7ee84c3, ...
* changes:
  ethernet: cleanup updateConfiguration tests
  ethernet: fix callbacks for running interfaces
  ethernet: test callbacks when adding running interface
  ethernet: ensure EthernetOutcomeReceiver receives only one result
  ethernet: fix enable/disableInterface result
  ethernet: remove enable/disable interface unit test

Patrick Rohr   authored and   Gerrit Code Review   commited 2022-09-21 19:08:02 +00:00
0a822f8f41
ethernet: remove enable/disable interface unit test
This unit test is not particularly useful and there is already coverage
in EthernetManagerTest.

Test: test only change.
Change-Id: I6f9d19d9603229553f44d562ff0276567cb0e26d

Patrick Rohr   commited 2022-09-21 12:03:11 -07:00
faebf303a6
Merge "Update VpnTest to handle teardown-on-network-lost"
Chiachang Wang   authored and   Gerrit Code Review   commited 2022-09-21 14:22:33 +00:00
90798f9a5a
Update VpnTest to handle teardown-on-network-lost
- Fix the wrong MOBIKE value set in
  testStartPlatformVpnHandlesNetworkLoss_mobikeEnabled.
- Verify the networkAgent is unregistered when the default
  network is lost

Bug: 231749077
Test: atest FrameworksNetTests:VpnTest
Change-Id: Idc6ebd42090eff1135dc5f96af4bc2fb268dd340

lucaslin   authored and   chiachangwang   commited 2022-09-21 11:30:49 +00:00
4b842678b1
Update test on calling getAppExclusionList with restricted user
Bug: 247344442
Test: atest VpnTest
Change-Id: I3b847f13162f8702013b23cabefce8d98b62f5c6

chiachangwang   commited 2022-09-20 08:58:50 +00:00
8dae9343bb
Merge "BpfNetMaps.java - array index U32 -> S32"
Treehugger Robot   authored and   Gerrit Code Review   commited 2022-09-19 17:27:56 +00:00
b624b0f539
Merge "BpfNetMaps.java - uid U32 -> S32"
Treehugger Robot   authored and   Gerrit Code Review   commited 2022-09-19 17:27:17 +00:00
714fd251a1
Merge "Rework unvalidated prompt into first eval timeout"
Jean Chalard   authored and   Gerrit Code Review   commited 2022-09-17 12:52:52 +00:00
ecb0b3cab3
BpfNetMaps.java - array index U32 -> S32
This converts the key, which is an index in an array, of sConfigurationMap from U32 to S32.

Since the array has exactly 2 elements, there's no real difference.
In addition while the kernel does indeed index arrays with U32s,
it doesn't matter, because you'd need to have over 2 billion
elements in the bpf map (at which point you'd need GBs of ram for
the bpf map itself)...

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: If17efc25d910af642e519f9ecb6d0e8695c38d42

Maciej Żenczykowski   commited 2022-09-17 06:16:34 +00:00
dc88622eb8
BpfNetMaps.java - uid U32 -> S32
This converts the key, which is a uid, of sUidOwnerMap & sUidPermissionMap from U32 to S32.

The kernel is actually not consistent in whether uids & gids
are signed or unsigned, and neither is our Java code, which
also commonly uses just 'int' for uid.  In practice values
greater or equal to 2**31 often don't quite work right.
For example icmp sockets are enabled via a sysctl that
takes a minimum and maximum gid - and these are signed int32s.

It's worth pointing out that these functions already accept int's
as arguments, so when converting them to U32 (and thus long) they
technically previously did the wrong thing (though it's unlikely
it ever mattered).

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I7b389a1cf822c56134b20df5ded269963f5bf69f

Maciej Żenczykowski   commited 2022-09-17 06:06:23 +00:00
785793fe19
mUidCounterSetMap - key, which is uid, U32 -> S32
The kernel is actually not consistent in whether uids & gids
are signed or unsigned, and neither is our Java code, which
also commonly uses just 'int' for uid.  In practice values
greater or equal to 2**31 often don't quite work right.
For example icmp sockets are enabled via a sysctl that
takes a minimum and maximum gid - and these are signed int32s.

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ia309eb99f71765e30510d6a253c1329c20719f21

Maciej Żenczykowski   commited 2022-09-17 01:54:19 +00:00
2b0a6dce97
UidOwnerValue.java - replace U32 ifindex with S32
These are allocated in order by the kernel, if we go
over 2 billion, we've got other problems... besides
U32 to S32 conversion will work just fine anyway.

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I6e1da81c03bd36d8c6e7bd2b33f535d1fabfad0a

Maciej Żenczykowski   commited 2022-09-16 18:34:39 +00:00
6c1c6bb582
Merge "Migrate BpfInterfaceMapUpdater from U32 to S32"
Maciej Żenczykowski   authored and   Gerrit Code Review   commited 2022-09-16 17:58:48 +00:00
b3f6876ddc
Rework unvalidated prompt into first eval timeout
This patch removes the 8-second unvalidated prompt timer
and replaces it with a 20-second timer that does the
same thing in addition to signalling the stack that the
concerned network has now undergone evaluation once.

Test: FrameworksNetTests
Change-Id: I806f2bdfbf35243fa7cdb1cd1f0a5d549cfcd9c8

Chalard Jean   commited 2022-09-16 16:53:32 +09:00
5fb43c7d38
Merge "Add tests for captive/partial after roam and ignore roam failures"
Jean Chalard   authored and   Gerrit Code Review   commited 2022-09-16 07:49:24 +00:00
1df85dfdff
Merge "Factorize ignoreValidationAfterRoam tests"
Jean Chalard   authored and   Gerrit Code Review   commited 2022-09-16 07:48:57 +00:00
4a4c752572
Migrate BpfInterfaceMapUpdater from U32 to S32
continuation of
  https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2184446/

replace U32 ifindex with S32

These are allocated in order by the kernel, if we go
over 2 billion, we've got other problems... besides
U32 to S32 conversion will work just fine anyway.

Bug: 245472520
Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I48df3bf86f0590fbd0e21b7cf9f19d1a6bbacd31

Maciej Żenczykowski   commited 2022-09-16 04:46:10 +00:00
66b98ba2b1
Merge "Replace requestNetwork with registerSystemDefaultNetworkCallback"
Lucas Lin   authored and   Gerrit Code Review   commited 2022-09-15 09:00:39 +00:00
e490cffb0a
Merge "Add a field and score flag for first evaluation"
Jean Chalard   authored and   Gerrit Code Review   commited 2022-09-15 08:56:26 +00:00
be0e453159
Add tests for captive/partial after roam and ignore roam failures
Test: This
Change-Id: Idc547d6e8b54f62b791552cf9e93ddab96991f5d

Chalard Jean   commited 2022-09-15 17:07:18 +09:00
c18ae65f6b
Factorize ignoreValidationAfterRoam tests
Test: ConnectivityServiceTest
Change-Id: Ied3704459a77fcef9eb34e08ab5a45ea85d4ce77

Chalard Jean   commited 2022-09-15 16:57:50 +09:00
3bad973354
Merge "Remove usage for deprecated ro.radio.noril"
Chiachang Wang   authored and   Gerrit Code Review   commited 2022-09-15 06:21:49 +00:00
fc54e71b02
Merge "Test no Internet and partial connectivity notifications."
Jean Chalard   authored and   Gerrit Code Review   commited 2022-09-15 03:56:13 +00:00
76fdaf89c6
Remove usage for deprecated ro.radio.noril
The ro.radio.noril system properties is not used anymore. Tests
that require to check if device supports wifi but not telephony
should verify it via PackageManager.hasSystemFeature(). Also
remove the systemProperties mocking since the only need for the
mocking is removed.

Bug: 242647857
Test: atest FrameworksNetTests CtsNetTestCases
Change-Id: Ie34e87394458e64a9363678a863d6d977834958f

chiachangwang   commited 2022-09-14 14:08:24 +08:00
4e8b49bee4
Merge changes from topic "dump_map_status"
* changes:
  Move Interface index name map dump to NetworkStatsService
  Move stats map A/B dump to NetworkStatsService
  Add BpfInterfaceMapUpdater#getIfNameByIndex

Motomu Utsumi   authored and   Gerrit Code Review   commited 2022-09-14 01:27:49 +00:00
9e1675d38c
Add a field and score flag for first evaluation
A wifi network that is still evaluating, i.e. that doesn't know
yet if it's behind a captive portal, should not be preferred
to a network that yields to bad wifi because the stack doesn't
know yet if it's bad.

To rank the networks correctly, the ranker will therefore need
to know whether a network is still being evaluated. This patch
adds the time when this happened first to the NAI (as a
timestamp for debuggability) and the corresponding flag in
FullScore.

This doesn't have new tests because it doesn't yet expose
new behavior. Tests will come with the behavior.

Test: FrameworksNetTests
Change-Id: I737f314760356926fc07e6eef52f3c8abba2248b

Chalard Jean   commited 2022-09-13 19:33:30 +09:00
f9f4a8ddfe
Test no Internet and partial connectivity notifications.
Test: new unit tests pass
Change-Id: I363fa3ef15476a30e7b8708a80867dd456e5e520

Chalard Jean   commited 2022-09-13 19:33:26 +09:00
4c46308265
Move Interface index name map dump to NetworkStatsService
Map status dump will do access check if map is null.
This could show different message from the current dump output.

Information in map content dump does not change
$ dumpsys connectivity trafficcontroller
....
     mIfaceIndexNameMap:
      ifaceIndex=5 ifaceName=ip6_vti0
      ifaceIndex=19 ifaceName=r_rmnet_data3
      ifaceIndex=17 ifaceName=r_rmnet_data1
      ifaceIndex=18 ifaceName=r_rmnet_data2
      ifaceIndex=23 ifaceName=wifi-aware0
....

$ dumpsys netstats
....
  BPF map content:
    ifaceIndex=5 ifaceName=ip6_vti0
    ifaceIndex=19 ifaceName=r_rmnet_data3
    ifaceIndex=17 ifaceName=r_rmnet_data1
    ifaceIndex=18 ifaceName=r_rmnet_data2
    ifaceIndex=8 ifaceName=rmnet_ipa0
....

Bug: 217624062
Test: dumpsys netstats, atest
com.android.server.net.BpfInterfaceMapUpdaterTest

Change-Id: If182bd97f72713b6347028668cf7bd4676b8aea4

Motomu Utsumi   commited 2022-09-12 16:53:51 +09:00
fdb601603d
Move stats map A/B dump to NetworkStatsService
Map status dump will do access check if map is null.
This could show different message from the current dump output.

Information in map content dump does not change
$ dumpsys connectivity trafficcontroller
....
      mStatsMapA:
      ifaceIndex ifaceName tag_hex uid_int cnt_set rxBytes rxPackets txBytes txPackets
      20 wlan0 0x0 1051 0 144 2 312 4
      10 rmnet_data0 0x0 0 0 0 0 48 1
      20 wlan0 0x0 0 0 0 0 136 2
      20 wlan0 0xffffff82 1051 0 144 2 312 4

      mStatsMapB:
      ifaceIndex ifaceName tag_hex uid_int cnt_set rxBytes rxPackets txBytes txPackets
....

$ dumpsys netstats
....
  mStatsMapA:
    ifaceIndex ifaceName tag_hex uid_int cnt_set rxBytes rxPackets txBytes txPackets
    20 wlan0 0x0 1051 0 144 2 312 4
    10 rmnet_data0 0x0 0 0 0 0 48 1
    20 wlan0 0x0 0 0 0 0 136 2
    20 wlan0 0xffffff82 1051 0 144 2 312 4
  mStatsMapB:
    ifaceIndex ifaceName tag_hex uid_int cnt_set rxBytes rxPackets txBytes txPackets
....

Bug: 217624062
Test: dumpsys netstats, dumpstate, atest NetworkStatsServiceTest

Change-Id: Ifbd45f0ad6dd9c519a15a7680cf0ea99fb5f5dcf

Motomu Utsumi   commited 2022-09-12 16:53:48 +09:00
608c32c782
Merge "Check automotive system feature on Constructor"
Paul Hu   authored and   Gerrit Code Review   commited 2022-09-12 07:36:33 +00:00
ab32bf8aa1
Add BpfInterfaceMapUpdater#getIfNameByIndex
Upcoming CL uses this to dump stats bpf map

Bug: 217624062
Test: atest com.android.server.net.InterfaceMapValueTest
com.android.server.net.BpfInterfaceMapUpdaterTest

Change-Id: I5454b6abbd9d84cb7e1dccaaa772d66726cfe3d0

Motomu Utsumi   commited 2022-09-12 15:03:18 +09:00
95e095dd0d
Merge changes from topic "idiag_sock_id"
* changes:
  Switch SkDestroyListener based on the flag.
  Add startSkDestroyListener flag to native_init
  Add SkDestroyListenerTest

Motomu Utsumi   authored and   Gerrit Code Review   commited 2022-09-10 02:02:11 +00:00
08ccd0d2e1
Merge "register callback to pull NetworkBpfMapInfo atom"
Motomu Utsumi   authored and   Gerrit Code Review   commited 2022-09-09 08:11:37 +00:00
3dc2fb5378
register callback to pull NetworkBpfMapInfo atom
Test: statsd_testdrive 10161, atest BpfNetMaps
Bug: 217624062
Bug: 245228691

Change-Id: I630a86cb5a34aaa1810eb75b374588dba570f0ff

Motomu Utsumi   commited 2022-09-09 11:23:10 +09:00
166f966209
Merge "Split POLICY_EVER_VALIDATED_NOT_AVOIDED_WHEN_BAD into two"
Treehugger Robot   authored and   Gerrit Code Review   commited 2022-09-08 15:42:44 +00:00
3b2907e449
Split POLICY_EVER_VALIDATED_NOT_AVOIDED_WHEN_BAD into two
This flag conflates these two things, but it's a lot clearer
if they are separate and evaluated at the end.

Moreover, a new policy will make use only of one of them,
so having them separate is also useful going forward.

Test: FrameworksNetTests

Change-Id: Ia47b3974277cf76153a53d7e8a0e969c90ba78f4

Chalard Jean   commited 2022-09-08 19:41:38 +09:00
710b2893c2
Check automotive system feature on Constructor
The system feature depends on device, it will not change at runtime
basically. So do the system feature check once on NetworkAgentInfo
constructor.

Test: FrameworksNetTests CtsNetTestCases
Change-Id: I03fb8b87f5fda93286bd68ccbb23210066b0611b

Paul Hu   commited 2022-09-08 06:38:20 +00:00
00955f3d46
Merge "Open CookieTagMap in BpfNetMaps"
Motomu Utsumi   authored and   Gerrit Code Review   commited 2022-09-08 05:38:27 +00:00
96c6aad70d
Open CookieTagMap in BpfNetMaps
Upcoming CL will update BpfNetMaps to pull NetworkBpfMapInfo atom that
contains the cookieTagMap size field.

Test: m, atest BpfNetMaps
Bug: 217624062
Change-Id: I84bb0aa56e3916fc6fc0ca31ba5962f3b9be4b6f

Motomu Utsumi   commited 2022-09-06 22:33:44 +09:00
b9548860a9
Switch SkDestroyListener based on the flag.
Switch existing C SkDestroyListener and new Java SkDestroyListener based
on the experiment flag.

Bug: 217624062
Test: atest SkDestroyListenerTest
Change-Id: I7031ba7c155edb43e0e7b77449587058d6ba38fb

Motomu Utsumi   commited 2022-09-06 11:23:13 +09:00
d95a0dafa8
Merge "Migrate NetworkStatsServiceTest from when().thenReturn() to doReturn().when()"
Treehugger Robot   authored and   Gerrit Code Review   commited 2022-09-05 12:20:55 +00:00
26ebf8c97a
Migrate NetworkStatsServiceTest from when().thenReturn() to doReturn().when()
This will address flakiness issues arising from the use of
when() in multithread context.

Fix: 243658074
Test: atest com.android.server.net.NetworkStatsServiceTest#testDataMigration_differentFromFallback \
      --rerun-until-failure 1000
Change-Id: I047050ef14cb60658098ff7803c6773907a92919

Junyu Lai   commited 2022-09-05 16:17:57 +08:00
bae070bf80
Merge "Fix settings show data usage with the uid of a removed package"
Aaron Huang   authored and   Gerrit Code Review   commited 2022-09-02 07:43:55 +00:00
279733e3f5
Merge "Convert EthTrackTest from when() to doReturn()"
Jean Chalard   authored and   Gerrit Code Review   commited 2022-09-02 02:52:39 +00:00
3db58490ff
Merge "Convert booleans in NAI to timestamps"
Treehugger Robot   authored and   Gerrit Code Review   commited 2022-09-01 23:06:09 +00:00
24ca302311