Commit Graph

224 Commits

Author SHA1 Message Date
Chalard Jean
0784d5dbd1 Remove eventuallyExpectOrNull
This is no longer used and is advantageously replaced
by a call to poll(), which has the same semantics.

Test: TH
Bug: 157405399
Change-Id: I3182fd3e3ac749e11a8f962ef1acfdca5d031b05
2023-03-07 21:47:50 +09:00
Chalard Jean
febf4ab6fb Remove eventuallyExpectOrNull usages from AOSP
This is not useful because it has the exact same semantics
as poll() : it returns the first event that matches the
predicate within the timeout, or null if none.

Unfortunately the method can't be removed until all
uses in internal master are removed, so the actual
removal will have to wait for the next patch.

Test: TH
Bug: 157405399
Change-Id: I471c44568e359f8686dcb21ae04c76ca8095f02f
2023-03-07 21:47:11 +09:00
Chalard Jean
2695fdf6ce Bubble up exceptions in visibleOnHandlerThread
Test: NetworkStaticLibTests
Fixes: 269390906
Change-Id: I3c2d330dd719869562f437c1995e85abd32dbd68
2023-02-17 07:19:22 +00:00
Jean Chalard
35f954324f Merge "Remove expectLinkPropertiesThat" 2023-02-11 02:09:38 +00:00
Jean Chalard
c67deee923 Merge changes from topics "remove_expectblocked", "rename_reason"
* changes:
  Rename BlockedStatusInt.blocked to .reason
  Remove expectBlockedStatusCallback
2023-02-10 05:26:50 +00:00
Igor Chernyshev
f063240c56 Merge "Add OS access interfaces and test impl for wear tethering" 2023-02-09 21:17:54 +00:00
Chalard Jean
36e8ff3f87 Remove expectLinkPropertiesThat
expect() is simply better

Bug: 157405399
Test: ConnectivityServiceTest NetworkStaticLibTests
Change-Id: If8da940e378722f4cde2a4e7ea3eaef3b1380f18
2023-02-09 16:19:09 +09:00
Chalard Jean
ab47793183 Rename BlockedStatusInt.blocked to .reason
It's a reason, so it's a lot clearer this way

Bug: 157405399
Test: ConnectivityServiceTest NetworkStaticLibTests
Change-Id: Id71d710a33b4df3c211e40141adb2aa0a535f458
2023-02-09 16:19:09 +09:00
Chalard Jean
12038d2e28 Remove expectBlockedStatusCallback
expect() does a better job.

Bug: 157405399
Test: ConnectivityServiceTest NetworkStaticLibTests
Change-Id: I2bc4dc0f175b8d46784dbdb3a4724dea41200dc7
2023-02-09 16:19:09 +09:00
Jean Chalard
cd18acab06 Merge "Remove expectCapabilitiesWith and without" 2023-02-09 02:20:20 +00:00
Yuyang Huang
165c6ffbd6 Merge "Add CtsNetTestCasesMaxTargetSdk33" 2023-02-07 10:44:15 +00:00
Chalard Jean
ab521cf49d Remove expectCapabilitiesWith and without
This is not clearer than using the base method.

Test: ConnectivityServiceTest NetworkStaticLibTests
Bug: 157405399
Change-Id: Iac9aeffb563d0a1cb6c1287b46b9bbfffc0c75ca
2023-02-06 13:49:52 +09:00
Chalard Jean
c0ba521f79 Replace expectCapabilitiesThat with expectCaps
Add all the necessary overloads too.

Bug: 157405399
Test: ConnectivityServiceTest NetworkStaticLibTests
Change-Id: Idea768934182d4e2226c273fda0189942dcbf62e
2023-02-06 13:49:51 +09:00
Yuyang Huang
bdb79c510f Add CtsNetTestCasesMaxTargetSdk33
The annotation is used to verify behavior for apps with max target SDK
33.

Bug: 267102290
Test: atest CtsNetTestCasesMaxTargetSdk33
Change-Id: I71ba4433389ba07553ea3d6d34a2bf64fdc132ad
2023-02-02 13:22:12 +09:00
Remi NGUYEN VAN
bcdc972c86 Add packet filters for IPv6 UDP
This is useful to test mDNS.

Bug: 266151066
Test: atest NsdManagerTest (with related change)
Change-Id: I790da3f3be5277f2480600cfbbaeac86c306f77d
2023-01-23 18:20:44 +09:00
Igor Chernyshev
004c5b422b Add OS access interfaces and test impl for wear tethering
Bug: 245971639

Change-Id: I750c2e9bbe8c9a3992ae91d9fea4958bfce60828
2023-01-13 17:57:01 +00:00
Chalard Jean
5987fc4fbe Cleanup TestableNetworkCallback#assertNoCallback
Test: FrameworksNetTests
      CtsNetTestCases
      FrameworksNetIntegrationTests
      NetworkStackTests
      NetworkStaticLibTests
      TetheringTests
      MtsTetheringTestLatestSdk
      TetheringIntegrationTests
Bug: 157405399
Change-Id: I43eb47bbcf947899c18fcd9498c9064edceb0ecf
2023-01-06 16:50:08 +09:00
Chalard Jean
9f7d45203f Introduce visibleOnHandlerThread
This is a helper function that lets a caller make sure the
side effects of a piece of code are visible both on a handler
thread and in the caller thread before continuing.

Also move HandlerUtilsTests to the tests directory of
frameworks/libs/net from the NetworkStack where it used to be

Test: NetworkStaticLibTests
Change-Id: Icf1bd8bbe1216777c52b73cfbd0a46b647b72260
2022-12-22 16:17:22 +09:00
lucaslin
4045840fd4 Add @JvmOverloads for eventuallyExpect and expectAvailableCallbacks
It's useful for the java code to have the overload methods for
eventuallyExpect and expectAvailableCallbacks.

Bug: 231749077
Test: atest CtsHostsideNetworkTests:HostsideVpnTests
Change-Id: I6bb1385ee84d1ff1e9f0472e6de3f452ab142958
2022-12-20 02:59:41 +00:00
Junyu Lai
7e3cdf9ef2 Merge changes from topic "st03"
* changes:
  Interrupt thread before closing socket
  [ST03] Add test dns server for integration tests
2022-12-19 02:34:33 +00:00
Treehugger Robot
26388b06ef Merge "Use TargetSetupError for ConnectivityCheck" 2022-12-14 07:27:28 +00:00
Junyu Lai
70b03f9299 Interrupt thread before closing socket
Test failed when socket.close() ran, and in the other thread
we are trying to initialize an InetSocketAddress. If the socket
was closed, the port got from the socket object becomes -1 hence
the InetSocketAddress cannot be constructed and the
IllegalArgumentException would be thrown.

Interrupt thread before closing socket to prevent from the race.

Test: atest TestDnsServerTest --rerun-until-failure 1000
Fix: 259160848
Change-Id: I219ee1e32144ba9983a28765e7a84621c27c1c09
2022-12-14 14:01:31 +08:00
Junyu Lai
3d4eb94be5 [ST03] Add test dns server for integration tests
This is re-upload of aosp/1390056, CL that fixes test is separated
in a follow-up CL that submit at the same time.

Bug: 139774492
Test: atest DnsAnswerProviderTest TestDnsServerTest
Change-Id: Ia72975f3044f009ebb0f4564a527830268a4a157
2022-12-13 16:15:46 +08:00
Remi NGUYEN VAN
449c01f6f6 Use TargetSetupError for ConnectivityCheck
If the preparer throws AssertionError, tests will still
be retried without re-running the preparer. It needs
to throw TargetSetupError to indicate that setup failed.

Change-Id: Id01845536a216e1a3ca1c671c97f7bcd992c354e
Fixes: 254542801
Test: atest
2022-12-13 14:58:40 +09:00
Chalard Jean
c79a231a16 Add the name of the expected callback
Before :
  java.lang.AssertionError: Did not receive callback after 5000
After :
  java.lang.AssertionError: Did not receive Available after 5000ms

Test: manual
Change-Id: If46d52cb0db8ea3d418169ea330d915d835e4373
2022-11-25 15:52:03 +09:00
Treehugger Robot
8228246ad0 Merge "Revert "[ST03] Add test dns server for integration tests"" 2022-11-16 05:13:03 +00:00
Junyu Lai
88c48e18e4 Revert "[ST03] Add test dns server for integration tests"
Revert "[ST03.1] Add DnsAnswerProviderTest"

Revert submission 1390056-st03

Reason for revert: test failed in presubmit, still under checking.
Reverted Changes:
Ia5039a47f:[ST03] Add test dns server for integration tests
I9157e030c:[ST03.1] Add DnsAnswerProviderTest

Change-Id: I1ff291ca62e2209343ed5c5e4aa3bf3e93229f47
2022-11-15 05:55:27 +00:00
Treehugger Robot
40b76e8bac Merge "[ST03] Add test dns server for integration tests" 2022-11-14 14:01:12 +00:00
Treehugger Robot
1a81ae4eb9 Merge "Move DeviceConfigRule to libs/net" 2022-11-14 09:34:58 +00:00
Junyu Lai
c32afc4238 Merge "Add eventuallyExpect method that takes mark" 2022-11-14 05:55:58 +00:00
Jean Chalard
664e53bd88 Merge "[CC08] Remove expectCallback*" 2022-11-11 03:17:42 +00:00
Remi NGUYEN VAN
7356d356fb Move DeviceConfigRule to libs/net
The utility can be useful for tests in several repositories, not just
CTS.

Test: m
Change-Id: Id4c653793e58d91d604b388a06a7c137ed020110
2022-11-10 18:10:24 +09:00
Junyu Lai
53a6b7053d Add eventuallyExpect method that takes mark
Test: atest CtsNetTestCases:android.net.cts.ConnectivityManagerTest
Fix: 254188130
Change-Id: I98ea8aef5cb21ee92ce47d97d2f9c81448b1cd9e
2022-11-10 14:35:29 +08:00
Junyu Lai
be99103196 [ST03] Add test dns server for integration tests
Bug: 139774492
Test: atest DnsAnswerProviderTest TestDnsServerTest
Change-Id: Ia5039a47f4b818efb09aab8174beb9d921339c3d
2022-11-02 11:18:48 +08:00
Chiachang Wang
97d0f3a563 Merge "Add debug log in ensureWifiConnected" 2022-10-31 01:38:57 +00:00
chiachangwang
b5e9e3fc2b Add debug log in ensureWifiConnected
It's sometimes not clear that tests call ensureWifiConnected
but no wifi enabled. It's hard to clarify design with wifi
stack, so add the gotten wifi info in the log to help on
debugging.

Bug: 252869312
Test: atest CtsNetTestCases
Change-Id: I3bc74dd38dd5a36a93510fc5d70c0fa00b66e842
2022-10-28 01:13:40 +00:00
Treehugger Robot
9c549c0d53 Merge "Fix errorprone warnings that should be errors" 2022-10-26 21:09:23 +00:00
Chalard Jean
0eac837b01 [CC08] Remove expectCallback*
These methods have been migrated to the shorter and better
provisioned expect<> family of methods.

Test: Builds
Change-Id: I60c77bfeabe373557d61f0f8d0295b385fe5271e
2022-10-24 18:54:46 +09:00
Chalard Jean
6f8bcae7d0 [CC07] Add build tests for expect* versions
Also address some comments left on a previous patchset.

Test: NetworkStaticLibTests
Change-Id: I3ea16bb54aec31ddb0368af980483109a1bdb49b
2022-10-24 18:54:45 +09:00
Chalard Jean
347dd8ded4 Increase the timeout for eventuallyExpect
Sometimes the tests are run under high load, e.g. immediately
after boot while all apps that listen for the boot completed
broadcast run their listeners. Under these circumstances,
40ms of leeway is tight ; on recent Android devices HZ is
commonly 100 too, meaning a general time unit of 60 will give
a little bit of air.

The drawback in this is that the test is less stringent on
TrackRecord, which as a multi-thread primitive should have
really tight tests to make sure that a non-threading primitive
(e.g. a polling implementation) doesn't pass. This patch makes
the testing on that front a little bit less reliable.

Note that this patch won't actually fix all flakes in that it
isn't really possible to guarantee the device will have any
CPU time to run the test at all anyway, but this should make
most failures go away.

Also, the argument for the time unit is never used, and can
be removed ; at least, the possibility of the timeArg() func
not using the same value as the sleep directive is scary, so
that possibility should be removed. If the time unit argument
is ever needed it can be added back, but considering the arg
has been available for years and never used, it's unlikely.

Test: NetworkStaticLibTests
Fixes: 254188131
Change-Id: Ia7a4fe775942484dcd7dc223c7710e82a8329beb
2022-10-20 16:42:16 +09:00
Chalard Jean
f79ca2809a [CC04] Have TestNetworkTracker implement HasNetwork
This already has all necessary methods, it only needs to
declare it implements the interface.

Test: ConnectivityServiceTest
Change-Id: I8de643f2b8de9765c25c3efe934c94549f341a51
2022-10-19 15:46:35 +09:00
Chalard Jean
b7e2284acf [CC03] Replace expectCallback* with expect
"callback" is redundant – it's a TestCallback object and
it takes a type of callback anyway.

"assertNextIs" is shorter than expectCallback, and more
directly explicit than "expect", but it's also 3 words
and very different from previous usage.
Using expect() is a little bit less in-your-face obvious,
but it's simple, familiar, and short.

Test: CtsNetTestCases
      FrameworksNetIntegrationTests
      FrameworksNetTests
      NetworkStackTests
Bug: 157405399
Change-Id: I6c8c85a8be3895dd8f0ef681faa4a8b2b4f2f493
2022-10-18 20:18:46 +09:00
Chalard Jean
70c62e594a [CC01] Remove the confusing pollForNextCallback
In Java, "poll" methods return null when the collection is
empty. Respect this convention.

Bug: 157405399
Test: FrameworksNetTests
Change-Id: I3b17908f9ce1f60b18908605a645da3199c010b9
2022-10-17 14:51:53 +09:00
Cole Faust
f4dd77109e Fix errorprone warnings that should be errors
This commit is part of a large scale change to fix errorprone
errors that have been downgraded to warnings in the android
source tree, so that they can be promoted to errors again.
The full list of changes include the following, but not all
will be present in any one individual commit:

BadAnnotationImplementation
BadShiftAmount
BanJNDI
BoxedPrimitiveEquality
ComparableType
ComplexBooleanConstant
CollectionToArraySafeParameter
ConditionalExpressionNumericPromotion
DangerousLiteralNull
DoubleBraceInitialization
DurationFrom
DurationTemporalUnit
EmptyTopLevelDeclaration
EqualsNull
EqualsReference
FormatString
FromTemporalAccessor
GetClassOnAnnotation
GetClassOnClass
HashtableContains
IdentityBinaryExpression
IdentityHashMapBoxing
InstantTemporalUnit
InvalidTimeZoneID
InvalidZoneId
IsInstanceIncompatibleType
JUnitParameterMethodNotFound
LockOnBoxedPrimitive
MathRoundIntLong
MislabeledAndroidString
MisusedDayOfYear
MissingSuperCall
MisusedWeekYear
ModifyingCollectionWithItself
NoCanIgnoreReturnValueOnClasses
NonRuntimeAnnotation
NullableOnContainingClass
NullTernary
OverridesJavaxInjectableMethod
ParcelableCreator
PeriodFrom
PreconditionsInvalidPlaceholder
ProtoBuilderReturnValueIgnored
ProtoFieldNullComparison
RandomModInteger
RectIntersectReturnValueIgnored
ReturnValueIgnored
SelfAssignment
SelfComparison
SelfEquals
SizeGreaterThanOrEqualsZero
StringBuilderInitWithChar
TreeToString
TryFailThrowable
UnnecessaryCheckNotNull
UnusedCollectionModifiedInPlace
XorPower

See https://errorprone.info/bugpatterns for more
information on the checks.

Bug: 253827323
Test: m RUN_ERROR_PRONE=true javac-check
Change-Id: I772563b5e54b468a755520d2ed9b78bcb5fc3ad6
2022-10-15 21:33:31 -07:00
chiachangwang
8d65699533 Correct failed log in ensureWifiConnected()
The timeout is used in the test should be WIFI_CONNECT_TIMEOUT_MS
but log shows WIFI_CONNECT_INTERVAL_MS instead. The debug log is
confusing. Correct it to right variable.

Test: atest CtsNetTestCases
Change-Id: I4cedaa6e03aea6cc02a07bdbea2f0b1e7f5076e1
2022-10-12 14:14:49 +00:00
Paul Hu
561b97e711 Enlarge the TestableNetworkCallback default timeout
TestableNetworkCallback is using on both unit and cts tests with
same timeout 200ms. For unit tests, most of objects are mock, so
the callback should respond quickly and this interval is fine.
But for cts tests, they are running on the real system and the
callback time will depend on the system which may be over 200 ms
sometimes if the system is busy or has performance problems. So
enlarge the Network Callback default timeout to 500ms that can
reduce the test flake on cts tests. To ensure there is no impact
on no callback check, add the no callback timeout 200ms which is
the same timeout as before.

Bug: 245000567
Test: Run the FrameworksNetTests CtsNetTestCases and check
      no running time increase.
Change-Id: I31f8bc08f65a622f6ab9b6c7f0577f0b107440c1
2022-10-04 07:05:14 +00:00
Nandu Suram
8d88f8bb36 include ats target
fixes: 244138449

include ats target

Change-Id: I462b13a5b1332c8afdf46761f1cbad545e7cf291
2022-09-08 23:00:44 +00:00
Jean Chalard
a804f3fc1e Merge changes I506872f7,I0afb6513
* changes:
  Improve documentation for the concurrent interpreter
  Fix a flake due to uncertainties in time measurement
2022-09-01 03:01:40 +00:00
Chalard Jean
9df957f803 Improve documentation for the concurrent interpreter
Test: comment-only change
Change-Id: I506872f7ff83b8c99527ff593eecc8fdc6760b53
2022-08-30 18:32:54 +09:00
Chalard Jean
6f469c8e9d Fix a flake due to uncertainties in time measurement
The concurrent interpreter supports a `time` directive that
lets testers ensure some instruction has taken at least some
amount of time. This is useful when testing that some
callback didn't arrive before it was sent, for example.

Unfortunately, there is some unavoidable uncertainty in how
time is measured. Because the thread that measures time
needs a very small amount of time before it starts measuring
the time taken by its instruction, it is possible that the
time that is intended to be measured actually took X, but
because the measuring thread took Ɛ before it started
measuring time, the measured time is X - Ɛ, which may fail
the test because it didn't take enough time.

Because there is no way at all to know how much time passed
between the measuring thread being woken up and it measuring
start time, it's not possible to fix this as long as the
measure for the minimum time is taken after the wait. So
instead, take the measure before the wait.

It's always technically possible that there is a bug where
the code doesn't take enough time, but the test doesn't
catch it because the device happened to run slowly as it
ran the test (e.g. other stuff running at the same time),
and this patch makes it a little worse – there will be more
true negatives, but this is the only way to ensure no false
positives and it should still catch the "too fast" cases
most of the time.

Now, each thread has its own "blocked" time. It would be
possible to store that time in a local and pass it down to
all instructions, but that would require all instructions
to take the blocked time as an argument, while only the
`time` instruction can have any meaningful use of it.
Therefore, store it in a thread local instead of adding an
argument to all instructions for all interpreters.

Test: atest --iterations 100 'TestableNetworkCallbackTest#testPollForNextCallback'
      ...although I can't get it to fail locally, so the
      proof will be in a dying out of the flakes.
      Also checked that increasing the minimum time on an
      existing test does fail as expected
Bug: 185735163
Change-Id: I0afb651337a8b10a864cc5bc793d65d2ce56ab20
2022-08-30 18:32:52 +09:00