Commit graph android_packages_modules_Co.../Tethering/tests
Message SHA1
Drastically simplify prefix and address selection process
This removes all the complex downstream prefix / address selection
logic and reduces it to generating a random address within the selected
prefix and checking whether it satisfies a set of conditions. If the
conditions are not met, the process is retried (for a total of 10 times)
before eventually moving on to the next prefix.

The conditions that must be satisfied are:
- Address within prefix does not end in .0, .1, .255
- Address is not contained within a range of commonly used prefixes.
- Prefix does not overlap with another prefix on the system.

Test: TH
Change-Id: I4c53bcaa29c11cde4df99d5bcb834fde94961da4

Patrick Rohr   commited 2024-09-27 20:47:13 -07:00
b9cfcce30a
PrivateAddress: Clarify the dependency
The dependency of PrivateAddressCoordinator on Context is too generic.
Actually it just needs the ConnectivityManager#getAllNetworks.

This CL clarifies the dependency and this provides flexibility of
instantiation of the class.

Bug: 369282577

Change-Id: I49043f7f557d83856d54cefc201208b7d9b9dd7f

Handa Wang   commited 2024-09-27 13:56:16 +00:00
1cda02fd4a
PrivateAddressCoordinator: remove the dependency on
TetheringConfiguration

We're removing the dependency on TetheringConfiguration because
TetheringConfiguration is not parcelable so it cannot be used in AIDL
API. Eventually we'll make PrivateAddressCoordinator expose its
functionalities via AIDL API at RoutingCoordinator.

Bug: 369282577
Change-Id: Id839d183b9463baa18a92a629370b4b8374f1ffd

Handa Wang   commited 2024-09-25 09:01:38 +00:00
664e1f4b89
PrivateAddressCoordinator: get rid of UpstreamNetworkState for
updateUpstreamPrefix()

This CL changes the signature of
PrivateAddressCoordinator#updateUpstreamPrefix to replace the
UpstreamNetworkState parameter with its member class. This is because we
want to make updateUpstreamPrefix() an AIDL API soon and
UpstreamNetworkState is not parcelable while its member fields are.

Bug: 369282577

Change-Id: Icf71d02d48c8c0d5dc2b21ee351efba956b6752d

Handa Wang   commited 2024-09-24 12:15:45 +00:00
8df9d34eb3
Merge "Make java_sdk_library dependencies explicit" into main
Treehugger Robot   authored and   Gerrit Code Review   commited 2024-09-10 19:12:45 +00:00
430a8ad33c
Merge changes from topic "tether-active-sessions" into main
* changes:
  Support active session metrics sampling
  Add unit test for get max counter when removing tethering client
  Track tethering active sessions counts

Junyu Lai   authored and   Gerrit Code Review   commited 2024-09-10 02:53:47 +00:00
ff3b206df0
Make java_sdk_library dependencies explicit
modules should specify the submodule of java_sdk_library that the module
actually depends on

Test: CI
Bug: 358613520
Change-Id: I0367068c901df98483f6cf95160d3e7801881b0a

Jihoon Kang   commited 2024-09-10 00:01:31 +00:00
8401b6a9f0
Support active session metrics sampling
This commit introduces a feature to monitor and upload active
tethering connection metrics. This will help us understand
the usage of tethering and improve the user experience.

The feature is disabled by default and will be gradually
rolled out.

Test: atest TetheringTests:com.android.networkstack.tethering.BpfCoordinatorTest
Test: manual test with:
      adb shell device_config put tethering tether_active_sessions_metrics 3
      m statsd_testdrive && statsd_testdrive -e 925
Bug: 354619988
Change-Id: I3b3f5ae068b127192c35541c6d9439b7367d54bd

Junyu Lai   commited 2024-09-09 16:35:03 +08:00
d2581d64fb
Add unit test for get max counter when removing tethering client
Test: atest TetheringTests:com.android.networkstack.tethering.BpfCoordinatorTest
Bug: 354619988
Change-Id: I9b4c4c265ca4e66bff353ea616afd0f1ad4339be

Junyu Lai   commited 2024-09-09 16:05:42 +08:00
0ea1136fcb
Track tethering active sessions counts
This commit implements the necessary counters to bookkeep
max connection count, which will be used in follow-up changes
to monitor and upload active tethering session metrics.

The feature is disabled by default and will be gradually
rolled out.

Test: atest TetheringTests:com.android.networkstack.tethering.BpfCoordinatorTest
Bug: 354619988
Change-Id: Iaf251b0ec08bde95c1b12df022db2e03179309de

Junyu Lai   commited 2024-09-09 15:44:50 +08:00
06b81b6af3
Fix typo in EthernetTetheringTestBase
Bug: 361219545
Test: atest EthernetTetheringTest#testTetherClatBpfOffloadUdp
Change-Id: Ib1e48799f37b19390d304822ec55d5ad3615eaa5

KH Shi   commited 2024-09-06 06:33:32 +00:00
77f6a52083
Merge "Fix testTetherClatBpfOffloadUdp test failure" into main
Maciej Żenczykowski   authored and   Gerrit Code Review   commited 2024-09-05 15:33:29 +00:00
cca6589298
Fix testTetherClatBpfOffloadUdp test failure
In some cases, the test device may already have an existing CLAT
interface, causing the test to fail because it assumes no CLAT
interface exists before running the test. This change fixes the issue
by retrieving the correct test CLAT interface by its name.

Bug: 361219545
Test: atest EthernetTetheringTest#testTetherClatBpfOffloadUdp
Change-Id: Ie2cdd9c9a6fd143c8419636a448297b36f3c1c40

KH Shi   commited 2024-09-05 07:08:16 +00:00
cf7e5cbf93
Merge changes from topic "upstream_data_usage" into main
* changes:
  Process all accesses to TetheringMetrics on the handler thread
  Calculate and populate TX/RX bytes for each upstream in TetheringMetrics
  Initialize upstream data usage after tethering is turned on

Paul Hu   authored and   Gerrit Code Review   commited 2024-09-04 07:30:52 +00:00
e09e029568
Process all accesses to TetheringMetrics on the handler thread
Since calling NetworkStatsManager.queryDetailsForUidTagState may
be blocked for up to 20 seconds, potentially leading to enable
Tethering failure, a handler thread is added to process this task
and prevent blocking.

Furthermore, thread safety is ensured for all accesses to the class
by the internal handler thread.

Bug: 282861165
Test: atest TetheringTests
Change-Id: I38d055e5c3f8dbb22eac97f858d4f56925e8ab36

Paul Hu   commited 2024-09-04 06:08:38 +00:00
26d4476007
Calculate and populate TX/RX bytes for each upstream in TetheringMetrics
Bug: 282861165
Test: statsd_testdrive 303
Test: atest TetheringMetricsTest
Change-Id: I9a358dfc22640f309ca52378ad826cd7dbcee9b3

Paul Hu   commited 2024-09-04 03:00:21 +00:00
ee9f387269
Initialize upstream data usage after tethering is turned on
Added logic to initialize upstream data usage after tethering is
turned on in TetheringMetrics, which is essential for tracking
data usage accurately.

Bug: 282861165
Test: atest TetheringTests
Change-Id: I0b91f6a5966f234ce9d6c67ad0edfe516645d38b

Paul Hu   commited 2024-09-04 02:00:12 +00:00
f982a1dc70
Merge "Add Fragmented Packet Test to testTetherClatBpfOffloadUdp" into main
Maciej Żenczykowski   authored and   Gerrit Code Review   commited 2024-08-20 18:34:57 +00:00
cc6c9d3de7
Merge "Add testTetherClatBpfOffloadUdp to TetheringTest" into main
Maciej Żenczykowski   authored and   Gerrit Code Review   commited 2024-08-20 18:34:36 +00:00
0afcda3caa
Merge "Add buildNetworkTemplateForUpstreamType() helper method" into main
Treehugger Robot   authored and   Gerrit Code Review   commited 2024-08-14 07:06:35 +00:00
0fd9d77ce9
Add buildNetworkTemplateForUpstreamType() helper method
The method handles different types of UpstreamType and constructs
the corresponding NetworkTemplate object.

Bug: 282861165
Test: atest TetheringMetricsTest
Change-Id: I1b7091e6da2712df6b6319e545465b409259f743

Wayne Ma   authored and   Paul Hu   commited 2024-08-13 03:57:36 +00:00
96496231c7
Do not block broadcast on handler processing
Instead of blocking the broadcast until onReceive returns on the
handler, only post in onReceive.

This should make no difference for the only user, the
mCarrierConfigChange listener in Tethering.java, as the callback still
runs on the handler.

Bug: 349919195
Test: atest
Change-Id: Ie8ce7afbe905b4c6972b3aabda2d7792c96eda6c

Remi NGUYEN VAN   commited 2024-08-09 10:59:06 +09:00
151be34424
Merge "Add isUsageSupportedForUpstreamType() helper method" into main
Treehugger Robot   authored and   Gerrit Code Review   commited 2024-07-15 10:43:42 +00:00
f4bae99d1d
Add isUsageSupportedForUpstreamType() helper method
This new helper method provides a convenient way to validate and
determine whether tethering metrics' data usage can be collected
for a given upstream type.

Bug: 282861165
Test: atest TetheringMetricsTest
Change-Id: I7527ce56815e1f7e9382be1a54b84c91552e1129

Wayne Ma   authored and   Paul Hu   commited 2024-07-15 09:30:43 +00:00
9651e04bf0
Merge "Let IpServer use RoutingCoordinator in R" into main
Handa Wang   authored and   Gerrit Code Review   commited 2024-07-12 04:07:16 +00:00
86219a1244
Let IpServer use RoutingCoordinator in R
On Android R, IpServer uses netd to set up tethering while on S+ it uses
RoutingCoordinator.

This CL lets Tethering own a RoutingCoordinatorService when the SDK
version <= R so IpServer can always use RoutingCoordinator instead of
netd.

Bug: 350699020
Test: CI

Change-Id: I0ed33fb050260c26be87079bed0e189716cd8782

Handa Wang   commited 2024-07-12 02:27:22 +00:00
7e9b330d04
Merge changes Ia8726375,I9d368d8a into main
* changes:
  Use Dependencies to mock static methods
  Add a new TetheringMetrics constructor

Paul Hu   authored and   Gerrit Code Review   commited 2024-07-12 01:14:31 +00:00
7e89d18900
Add Fragmented Packet Test to testTetherClatBpfOffloadUdp
Extend testTetherClatBpfOffloadUdp to support fragmented IPv6 packets.
This verifies that downstream fragmented IPv6 UDP packets are
correctly processed by Clatd's BPF offload.

Bug: 285124667
Test: atest TetheringIntegrationTests
Change-Id: Id9c6cfac6fcedbc3615a5502e36851bff62e4dcc

KH Shi   commited 2024-07-08 09:58:08 +00:00
4add163b0c
Add testTetherClatBpfOffloadUdp to TetheringTest
Add a new test case to TetheringTest. It verifies upstream and
downstream UDP packets are actually processed by Clatd's BPF offload.

Bug: 285124667
Test: atest TetheringIntegrationTests
Change-Id: I2f0c3953499af7a701c1b7e72830d502efbd31a1

KH Shi   commited 2024-07-08 09:57:36 +00:00
2ab2a1b0b0
Merge changes from topic "refactor-routing-coordinator-staticlib" into main
* changes:
  Refactor RoutingCoordinator
  Refactor staticlibs

Treehugger Robot   authored and   Gerrit Code Review   commited 2024-07-08 09:42:22 +00:00
b287f49c15
Merge "Move MtsEthernetTetheringTest back into TetheringTest" into main
Treehugger Robot   authored and   Gerrit Code Review   commited 2024-07-06 07:28:09 +00:00
574bcb7f06
Use Dependencies to mock static methods
This is a no-op change. Use Dependencies to mock static methods
instead of using spy().

Bug: 282861165
Test: atest TetheringTests
Change-Id: Ia8726375a8da17dab745848b046f4c32b84d5d77

Paul Hu   commited 2024-07-05 14:42:22 +00:00
99d585c2e8
Refactor RoutingCoordinator
- This CL puts RoutingCoordinator into staticlibs to make it usable by
both Tethering and ConnectivityService on R.
- This CL also changes the return type of
  ConnectivityInternalApi#getRoutingCoordinatorManager() to IBinder so
  it has fewer dependencies.

Bug: 350699020
Test: CI

Change-Id: Iba096e940795cd33e61c5141721394ad39e5ce6d

Handa Wang   commited 2024-07-05 05:26:54 +00:00
8f2c30664d
Add a new TetheringMetrics constructor
This is a no-op change. Add a new TetheringMetrics constructor
for the subsequent TetheringMetrics TX/RX calculation feature.

Bug: 282861165
Test: atest TetheringTests
Change-Id: I9d368d8ad527d73cc91e02ee72a5731fb4c6c195

Paul Hu   commited 2024-07-05 02:46:40 +00:00
2c743c8e11
Move MtsEthernetTetheringTest back into TetheringTest
These were originally split in two, so low-level BPF could be changed
more easily. With the introduction of MCTS, updatability of CTS tests is
not a concern anymore, so these tests can be merged back together.

Test: atest TetheringIntegrationTests
Change-Id: Ia0bd91470d445e90230f7a9546de1cb56deef9cc

Patrick Rohr   commited 2024-07-03 14:30:54 +00:00
247e44b2ef
Merge "Enforce min_sdk_version=30" into main
Treehugger Robot   authored and   Gerrit Code Review   commited 2024-07-01 21:39:46 +00:00
6d864ff9ca
Enforce min_sdk_version=30
These tests are run as part of the MTS suite, setting min_sdk_version
ensures that these tests can be installed on an older device and test
the corresponding mainline module.

Test: atest [<mod_name>...]
Bug: 156476221
Change-Id: Ic94b00ee1818063fc9f13e4ecffaca88f58c30c3

Spandan Das   commited 2024-07-01 17:50:35 +00:00
a9fd04cbb9
Replace TetheringRequestParcel with TetheringRequest
Replace TetheringRequestParcel with TetheringRequest in the service
code. This makes future changes easier since TetheringRequest is a
proper class and not an AIDL object.

Bug: 216524590
Test: atest TetheringTest TetheringManagerTest
Change-Id: I0cdee597d393e53feb9fe9aff4d6c67330c88599

Quang Anh Luong   commited 2024-06-26 16:25:13 +09:00
3e65131ba3
Merge changes I47606693,Ia51bc3ab,Idef1a6d1,Ie6fbc3ee,I55064ee7 into main
* changes:
  Clean up BpfCoordinatorTest after refactors
  Move upstream interface BPF support check to BpfCoordinator
  Refactor BPF map update logic of upstream interface change
  Centralize IP neighbor monitoring in BpfCoordinator
  Get rid of BpfCoordinator#mPollingStarted

KH Shi   authored and   Gerrit Code Review   commited 2024-06-22 12:34:34 +00:00
4c701fbfa0
Merge changes I76b0a7ba,If7308f1a,Ica8faced,Ia8f42ed0,I975afb45, ... into main
* changes:
  Add some documentation to EthernetInterfaceStateMachine
  Add support for link state tracking
  Add unit test class for EthernetInterfaceStateMachine
  Add missing call to add states to state machine
  Make class testable
  Log.wtf if block times out
  Wait on IpClient#onQuit in StartedState#exit
  Use TAG instead
  Introduce CMD_ON_NETWORK_NEEDED and CMD_ON_NETWORK_UNNEEDED messages
  Clean up and document state lifecycle
  Add convenience method for processMessage with no arguments
  Implement NetworkOffer in EthernetInterfaceStateMachine
  Add boilerplate to represent interface states in state machine
  Fix typo in SyncStateMachineTest
  Move SyncStateMachine to staticlibs

Treehugger Robot   authored and   Gerrit Code Review   commited 2024-06-21 19:01:38 +00:00
58526e4d96
Move SyncStateMachine to staticlibs
Test: mm
Change-Id: I51685a454a3d0fab578fef1eeb42d600adef06e6

Patrick Rohr   commited 2024-06-21 08:25:25 -07:00
aa06b2bf8e
Clean up BpfCoordinatorTest after refactors
Removed the use of a real IpServer instance in BpfCoordinatorTest,
as it is no longer needed after the refactors in aosp/2716773 and
aosp/3113123.

Test: atest TetheringTests
Bug: 294025403
Change-Id: I4760669372275a0165f4980705e328c80e0649a5

KH Shi   commited 2024-06-21 11:35:39 +00:00
572b784fdc
Move upstream interface BPF support check to BpfCoordinator
Removed upstream interface BPF support check from IpServer and moved
it to BpfCoordinator. The support check can be performed directly in
BpfCoordinator using the interface name.

Test: atest TetheringTests
Bug: 294025403
Change-Id: Ia51bc3ab18dd21afdca9db9199fa060aab68f768

KH Shi   commited 2024-06-21 11:35:37 +00:00
582df23c7b
Refactor BPF map update logic of upstream interface change
Move upstream interface change handling for BPF map updates from
IpServer to BpfCoordinator. BpfCoordinator now manages all BPF map
updates.

Test: atest TetheringTests
Bug: 294025403
Change-Id: Idef1a6d1a16a35603e0b476bfdbe6a234f39f4be

KH Shi   commited 2024-06-21 11:32:39 +00:00
9174207bb6
Remove unused import from EthernetTetheringTestBase
Bug: 285124667
Test: m
Change-Id: I9d89ae70ec7d4b52431f8bc992a7cdc1df85d202

KH Shi   commited 2024-06-21 01:57:14 +00:00
f093d22fcc
Increase timeout for waiting for physical interfaces to show up
200ms does not seem to be enough for our test infra. There have been test failures where tethering test was started on devices with physical interfaces that were available for tethering (i.e. cuttlefish on Android R and S).

This change increases the timeout to 1000ms, which unfortunately means the tests will take a bit longer.

Test: TH
Bug: 348044867
Change-Id: I5fe541cf1db1097040066baa73ba949533718ef6

Patrick Rohr   commited 2024-06-19 03:43:33 +00:00
88be5a3a3a
Merge changes I54451c4a,Ib0a2518b into main
* changes:
  Inline runUdp4Test
  Create a tethered interface request in setUp

Treehugger Robot   authored and   Gerrit Code Review   commited 2024-06-18 00:05:12 +00:00
e9e393cf23
Centralize IP neighbor monitoring in BpfCoordinator
This CL centralizes IP neighbor monitoring in the BpfCoordinator,
eliminating the need for redundant monitors in each IpServer.

Test: atest TetheringTests
Bug: 294025403
Change-Id: Ie6fbc3eeaa0ed4a34a6680714f44678e2d5b633a

KH Shi   commited 2024-06-17 03:03:18 +00:00
f2ccebf96b
Get rid of BpfCoordinator#mPollingStarted
Refactor IpServer/BpfCoordinator to remove mPollingStarted, and just
maintain the invariant that "data usage polling and conntrack
monitoring are running iff at least one IpServer is serving".

Test: atest TetheringTests
Bug: 294025403
Change-Id: I55064ee78e1cda12ad76b7c31496d760dcffdd76

KH Shi   commited 2024-06-17 03:02:49 +00:00
b1fb49a996
SingleWriterBpfMap - introduce getSingleton with caching
Test: TreeHugger, atest BpfMapTest finally happy!
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ia4ddcbb4994bb0fd5df7d36e0d306ca5061d8963

Maciej Żenczykowski   commited 2024-06-15 14:04:03 -07:00
52d6c5587f