Commit graph android_packages_modules_Co.../staticlibs/testutils
Message SHA1
Move UDP header assembly to build()
Test: TH
Flag: EXEMPT mainline
Bug: 1000001
Change-Id: I5e070a57bfa40f95b72549cb02662f6557f78d45

Patrick Rohr   commited 2025-04-07 20:10:18 -07:00
c1cf40d38e
Add packet builder support for UDP packets
UDP packets can be built as:

val p = ether / ipv6 / udp / data
val p2 = ether / ipv4 / udp / data
val p3 = ether / ipv4 / udp / ipv4 / udp / data

This also gets rid of Icmp6Pkt in favor of a function call that
calculates the checksum over an L4 packet.

This does add a bit of duplication: the build() function for RA and NA
packets is identical, and UdpPkt#build() is not far off. However, subtle
differences in L4 packet format (namely the checksum and length
positions) make generalizing this code difficult. This is possible by
passing the checksum position, proto byte, and adding an abstract
function that fills in the L4 length field before performing checksum
calculation. However, this complexity is likely not worth it. If the
repetition becomes obvious once more protocols (such as ICMPv4/6 echo,
etc.) are added, this decision will be revisited.

Test: TH
Flag: EXEMPT mainline
Bug: 1000001
Change-Id: Ia78792418f29a3be091ebdc9bb2c26e45da9f2b1

Patrick Rohr   authored and   Maciej Żenczykowski   commited 2025-04-07 14:22:43 -07:00
328cfb5051
Add packet builder support for IPv4 packet
Options and fragments aren't currently supported.

Test: decoded test packet on packetor.com
Flag: EXEMPT mainline
Bug: 1000001
Change-Id: Ia3a094cb1d2b093cae2f372cc84a72ad7e107105

Patrick Rohr   commited 2025-04-07 10:28:35 -07:00
313c1057f6
Add support to NdResponder to add custom RA
Test: TH
Flag: EXEMPT mainline
Bug: 1000001
Change-Id: Ic7f2567f15b76478df1c438e756929a93ffd4d43

Patrick Rohr   commited 2025-04-07 10:28:35 -07:00
495edd20a8
Merge changes Ia1e08c43,Ifbca38e6 into main
* changes:
  Delete RouterAdvertisementResponder
  Rewrite RouterAdvertisementResponder in Kotlin

Maciej Żenczykowski   authored and   Android (Google) Code Review   commited 2025-04-04 11:02:03 -07:00
8ca69b3028
Delete RouterAdvertisementResponder
And move all other tests over to NdResponder.

Test: TH
Flag: EXEMPT mainline
Bug: 1000001
Change-Id: Ia1e08c439a039a4ffa020318da44652fadadf5c9

Patrick Rohr   commited 2025-04-03 22:09:47 -07:00
d107a1692f
Rewrite RouterAdvertisementResponder in Kotlin
And integrate into EthernetManager. So it can make proper use of
PacketBuilderUtils.

Test: TH
Flag: EXEMPT mainline
Bug: 1000001
Change-Id: Ifbca38e6efde68e015c69bf919d079d1605310d1

Patrick Rohr   commited 2025-04-03 21:59:21 -07:00
75a83c51ad
Merge changes Id81c57a7,I9b0fa0e5 into main
* changes:
  Add support for ICMPv6 checksumming
  Support scapy packet builder syntax

Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-04-03 17:52:43 -07:00
c162c3c86a
Add support for ICMPv6 checksumming
Test: parsed packet on packetor
Flag: EXEMPT mainline
Bug: 1000001
Change-Id: Id81c57a7f9ca9ee3671768941687458100beb068

Patrick Rohr   commited 2025-04-03 16:23:08 -07:00
a39bf4ee97
Support scapy packet builder syntax
Scapy allows building packets in order, i.e. by assembling them using
the division operator: val p = ether / ipv6 / icmpv6.

This change adds support for an identical pattern. To do so, it first
assembles all packets in order inside a packet builder class. When
build() is called, it traverses the packet list in reverse and assembles
the final packet, similar to ther original instance of the code. To
support checksum generation in the future, the code also keeps track of
the "closest pseudo header packet", i.e. the nearest encapsulating IPv6
(and soon IPv4) packet. This architecture should eventually be able to
support the creation of more complex packets, for example:
val p = ether / ipv6 / ipv6-ext / udp / ipv6 / udp.

(Note that now that I am writing this, I realize that this could
probably be significantly simplified by including IPv6 extension header
support as part of Ip6Pkt and always using the encapsulating packet for
the pseudo header...)

This code does not yet implement checksum generation.

Test: TH
Flag: EXEMPT mainline
Bug: 1000001
Change-Id: I9b0fa0e5bb66edf6928d9b96144c5ed133ebab64

Patrick Rohr   commited 2025-04-03 14:50:09 -07:00
0b8e3a26fb
Merge changes Ic4b22e2c,Iaf4250da,I429b316a,I03cdb93f into main
* changes:
  Use Kotlin syntax for getters
  Return this from add*Option methods
  Add some documentation to RaPkt
  s/payload/data/ for brevity

Maciej Żenczykowski   authored and   Android (Google) Code Review   commited 2025-04-02 19:35:47 -07:00
96e3faa6bc
Merge "Add packet builder support for neighbor advertisement" into main
Maciej Żenczykowski   authored and   Android (Google) Code Review   commited 2025-04-02 19:35:17 -07:00
e470d2559b
Use Kotlin syntax for getters
Test: TH
Flag: EXEMPT mainline
Bug: 1000001
Change-Id: Ic4b22e2c6154bf634bfbbe6c539bc6b26a29b3af

Patrick Rohr   commited 2025-04-02 11:41:01 -07:00
e2db1fe7e0
Return this from add*Option methods
To support friendlier builder syntax.

Test: TH
Flag: EXEMPT mainline
Bug: 1000001
Change-Id: Iaf4250da61e2c0b5311682b2c462eb07467428f7

Patrick Rohr   commited 2025-04-02 11:37:24 -07:00
91ef24c6f6
Add packet builder support for neighbor advertisement
In the future, we could consider adding an ICMPv6 base class that
implements common functionality between NaPkt and RaPkt. However, given
that checksumming is not currently supported, the common functionality
is limited to only a couple of lines.

Test: TH
Flag: EXEMPT mainline
Bug: 1000001
Change-Id: Id45f2ed43f45778e80b303bd356babcc93de1c3f

Patrick Rohr   commited 2025-04-02 10:30:36 -07:00
49eede426b
Add some documentation to RaPkt
Test: TH
Flag: EXEMPT mainline
Bug: 1000001
Change-Id: I429b316a2660789316f46fae63c621d81dfe67af

Patrick Rohr   commited 2025-04-02 10:30:36 -07:00
22727f7bef
s/payload/data/ for brevity
Test: TH
Flag: EXEMPT mainline
Bug: 1000001
Change-Id: I03cdb93f616510c3648d91f993577cb4d846a5bd

Patrick Rohr   commited 2025-04-02 10:30:36 -07:00
2e95c356d7
Merge "Improve stability of APFv{4,6} multi-device tests" into main
Yuyang Huang   authored and   Android (Google) Code Review   commited 2025-04-02 06:42:36 -07:00
1843442d0a
Improve stability of APFv{4,6} multi-device tests
This commit enhances the stability of the APFv{4,6} multi-device tests by addressing several sources of flakiness and improving the test setup and validation.

Specifically, this commit:

* Increased sleep time in the test setup. This ensures APF is activated before each test, preventing unexpected behavior.
* Added sleep time in `ApfV4Test` to ensure APF remains enabled and is not disabled due to high throughput scenarios.
* Changed the validation order to first check received packets and then APF counters. This helps to more easily identify the root cause of test failures.
* Changed the Ethernet destination address from multicast to unicast in `ApfV6Test` to prevent packets from being filtered due to DTIM skip.
* Removed the `test_broadcast_arp_request_offload()` test, which was flaky due to DTIM skip and is adequately covered by the `test_unicast_arp_request_offload()` test.

Bug: 406570694
Flag: TEST_ONLY
Test: atest CtsConnectivityMultiDevicesTestCases:ApfV4Test
Test: atest CtsConnectivityMultiDevicesTestCases:ApfV6Test
Test: run cts -m CtsConnectivityMultiDevicesTestCases --skip-preconditions -t ApfV4Test --shard-count 2
Test: run cts -m CtsConnectivityMultiDevicesTestCases --skip-preconditions -t ApfV6Test --shard-count 2
Change-Id: I053509459078d0bd94e16a6bf7349b948f930e6c

Jimi Chen   authored and   Yuyang Huang   commited 2025-04-02 04:31:01 -07:00
744a17443a
Add packet builder support for more RA options
Test: Built packet and parsed it in packetor
Flag: EXEMPT mainline
Bug: 1000001
Change-Id: I69d3451cbdd7f229f914ee5d0e4dd2c7a5178f0a

Patrick Rohr   commited 2025-04-01 16:26:30 -07:00
6269bbdedb
Remove unnecessary {}
Test: TH
Flag: EXEMPT mainline
Bug: 100
Change-Id: I4ca9f92ce6535cf6f07aa74a94ee58ced541e73f

Patrick Rohr   commited 2025-04-01 14:45:46 -07:00
62154f61be
Introduce generic packet builder utilities for use in tests
This change introduces a set of generic packet builder utility classes
that can be used in tests. The API surface aims to be similar to scapy
with a focus on ease of use.

Test: TH
Flag: EXEMPT mainline
Bug: 1
Change-Id: I9c751cece7bbad6bc38953cb52e9ab42393bab89

Patrick Rohr   commited 2025-04-01 10:48:31 -07:00
c3af22faca
Move EthernetTestInterface to testutils
To make it usable for integration tests not in CTS.

Test: TH
Change-Id: If243997f086c442d4f0ef8f3c77760fada769448

Patrick Rohr   commited 2025-03-28 10:06:13 -07:00
f23f6ae45b
Add generic createTestInterface to AutoCloseTestInterfaceRule
Test: TH
Change-Id: Ib0519f99417c94f3ae77ab1d56a81fe1fd167c0c

Patrick Rohr   commited 2025-03-28 09:50:21 -07:00
bd9376982e
Merge "Avoid unavailable APIs in ShellUtil" into main
Treehugger Robot   authored and   Gerrit Code Review   commited 2025-03-23 19:33:44 -07:00
137f2d754c
Avoid unavailable APIs in ShellUtil
executeShellCommandRwe is U+. Use executeShellCommandRw which is S+
instead, and annotate methods accordingly. stderr is not used in any
instrumentation at the moment.

Bug: 405109522
Test: atest
Change-Id: I8212cb340cfb7e5ee5d0da314613b474e4f155fc

Remi NGUYEN VAN   commited 2025-03-24 10:15:44 +09:00
b84286a35a
Don't use NetworkScore in TestableNetworkAgent
...because R doesn't know that class

Bug: 404977645
Test: NetworkAgentTest
Change-Id: Iac558bf02bb9372ba397013524839be2b0b4d415

Chalard Jean   commited 2025-03-22 02:15:57 +09:00
f68316091d
Merge "Make sure tests know to handle both early creation true and false" into main
Treehugger Robot   authored and   Gerrit Code Review   commited 2025-03-21 05:02:06 -07:00
a0fa137d85
Merge changes I7fae1964,Ic7cc9e1d into main
* changes:
  Add carrier-privileged app bypass for start/stopTethering
  Fix CarrierConfigRule#setHoldCarrierPrivilege race

Treehugger Robot   authored and   Gerrit Code Review   commited 2025-03-21 03:47:22 -07:00
d5743b9795
Make sure tests know to handle both early creation true and false
This is necessary to pass tests whatever the values of the features are.

NetworkAgentTest was updated assuming the feature was true, so
this patch revives the old code for when it's false.

TestableNetworkAgent reads the feature directly from
ConnectivityManager when it's not mocked.

Test: CtsNetTestCases
Change-Id: Ia556fbb1d1b6a38a4995b021981e2693d778bfff

Chalard Jean   commited 2025-03-21 19:29:06 +09:00
0cc8d81cc7
Fix CarrierConfigRule#setHoldCarrierPrivilege race
CarrierConfigRule#setHoldCarrierPrivilege will try to acquire/drop the
carrier privilege, but does not wait for the result of the operation. If
a test immediately calls an API that requires carrier privilege before
the operation completes, then it will fail.

Fix this by waiting for the operation to succeed before returning.

Bug: 295979433
Test: presubmit
Change-Id: Ic7cc9e1dbc206fbc0c3b79058b5782d93e89f1d7

Quang Anh Luong   commited 2025-03-21 18:13:37 +09:00
d3058d5ffe
Merge "Use scapy to generate ARP packet in multi-device test" into main
Yuyang Huang   authored and   Gerrit Code Review   commited 2025-03-20 16:58:58 -07:00
4703e17d98
Merge "Revert "Skip multi-device tests instead of abort if device is non-B+ devices"" into main
Treehugger Robot   authored and   Gerrit Code Review   commited 2025-03-20 06:11:49 -07:00
23cfd04e9b
Use scapy to generate ARP packet in multi-device test
Test: m connectivity_multi_devices_snippet && atest CtsConnectivityMultiDevicesTestCases
Test: atest NetworkStaticLibHostPythonTests
Change-Id: I30adfe7ca2fef83ed4ef2ea3e5bc2291b9016530

Jimi Chen   commited 2025-03-20 12:25:57 +00:00
f0343a65d1
Revert "Skip multi-device tests instead of abort if device is non-B+ devices"
This reverts commit 372a15220a.

Reason for revert: this is Android B+ CTS and shouldn't be run with previous release, this can help to catch human error.

Change-Id: I867c63511d4f640e07b8317506291de284efcef3

Jimi Chen   commited 2025-03-20 04:33:43 -07:00
a27bbe9eea
Delay test for APF activation after screen-off
CTS tests screen-on device in the beginning, but APF is not activated after screen-off in the test setup.
This change adds 3 secs delay to ensure APF activation before test execution.

Bug: 402667362
Test: ./cts-tradefed run cts-on-gsi -m CtsConnectivityMultiDevicesTestCases -t ApfV4Test --shard-count 2
Test: atest CtsConnectivityMultiDevicesTestCases:ApfV4Test
Change-Id: I067ce792b5f89e2f0051933982ebc734607fbf98

Jimi Chen   commited 2025-03-20 00:41:07 -07:00
d9b49c6938
Skip multi-device tests instead of abort if device is non-B+ devices
Test: TH
Change-Id: Ib27dea9197d5230313944777abb958f68425b213

Jimi Chen   commited 2025-03-19 14:38:06 +00:00
372a15220a
Add apf_ram_at_least decorator to restrict multi-device tests to the given minimum apf ram size capable device.
Test: TH
Change-Id: I1042fd0662695e9bc71833eb24311f4436b2676c

Jimi Chen   commited 2025-03-19 14:35:15 +00:00
8f712c6ed9
Add get exclude all host IPv6 multicast addresses function to apf_utils
Test: atest NetworkStaticLibHostPythonTests
Change-Id: Ib05eaf6ac94e9511a43b4b494eb5935746f50aa7

Jimi Chen   commited 2025-03-19 13:41:41 +00:00
ceefdceafd
Remove the queue on the NetworkAgent side
Now that the system server has a queue doing this job,
the queue on the network agent side can be removed.

Test: ConnectivityCoverageTests, CtsNetTestCases
Change-Id: Idf0435f447cfdd28d829a867d1085771837c6f9b

Chalard Jean   commited 2025-03-18 19:23:57 +09:00
391ec5d99c
Merge "Collect diagnostics without storage permission" into main
Remi NGUYEN VAN   authored and   Gerrit Code Review   commited 2025-03-18 02:05:21 -07:00
899737e0e0
Merge "Add carrier privilege utils to CarrierConfigRule" into main
Quang Luong   authored and   Gerrit Code Review   commited 2025-03-17 23:35:22 -07:00
ab6342b70e
Add carrier privilege utils to CarrierConfigRule
Move the existing helper methods to acquire carrier privileges in
NetworkAgentTest.kt to CarrierConfigRule where it can be reused by other
CTS tests. Also reset the carrier service package override in the rule
cleanup.

Bug: 216524590
Test: atest NetworkAgentTest
Change-Id: Id907a2d641aa61838119e2be65654b9796464498

Quang Anh Luong   commited 2025-03-18 13:05:01 +09:00
a620310e9c
Use non-tentative IPv6 addresses in multi-device test
This update ensures multi-device offload tests retrieve only non-tentative IPv6 addresses,
preventing test caused by tentative addresses undergoing duplicate address detection.

Test: atest NetworkStaticLibHostPythonTests
Change-Id: Id2f61a34eda01a6e8e0457647229fe438a85c232

Jimi Chen   commited 2025-03-17 06:31:46 +00:00
2bfe2654d1
Merge "Add at_least_B() decorator to restrict multi-device tests to Android B+ capable device." into main
Maciej Żenczykowski   authored and   Gerrit Code Review   commited 2025-03-13 12:01:33 -07:00
d5dd81741c
Add at_least_B() decorator to restrict multi-device tests to Android B+ capable device.
Test: TH
Change-Id: Id5fde8c59560bb84bed062331121c3524f362c7b

Jimi Chen   commited 2025-03-13 14:05:09 +00:00
476552a7ae
Merge "Invoke tcpdump with -l" into main
Junyu Lai   authored and   Gerrit Code Review   commited 2025-03-12 02:18:14 -07:00
ca91ebdcab
Merge "Use non-extended mockito for net-tests-utils" into main
Remi NGUYEN VAN   authored and   Gerrit Code Review   commited 2025-03-11 19:00:20 -07:00
ec2a5cc5c5
Invoke tcpdump with -l
Currently ConnectivityDiagnosticsCollector invokes tcpdump with -U,
which would causes the collector failed to log ending packets due to
packet buffering.

Test:
android.net.cts.TrafficStatsTest#testTrafficStatsForLocalhost
Bug: 393471251
Change-Id: Ibe2977097bdeeef9546ce9c83b1dfd695c31f6d1

Junyu Lai   commited 2025-03-10 23:41:50 -07:00
2685014bf7
Use non-extended mockito for net-tests-utils
Mockito extended tends to cause all kinds of issues due to the way it
injects itself into the bytecode of framework classes instead of
creating subclasses.

Use non-extended mockito as it is not actually necessary for current
tests.

Test: atest
Change-Id: Id2874309cce2778c4405b852df9a3ae816c4abcb

Remi NGUYEN VAN   commited 2025-03-10 17:59:19 +09:00
05c376a4c5