Commit Graph

224 Commits

Author SHA1 Message Date
Kimberly Kreider
3786fb81da Merge "Update net-tests-utils-host-common tag to "mts-networking"" 2022-01-20 22:22:59 +00:00
Chiachang Wang
3e6dd45b85 Update case to correctly support usage for T
Update condition to correctly support the usage for T.
Also update the S code since it was updated to corresponding
number.

Bug: 215294242
Test: test using DevSdkIgnoreRule
Change-Id: Ia94cb7f5a0aaf92515e5e2b924d1ab6cc050e074
2022-01-20 11:26:51 +08:00
Kimberly Kreider
c9232670c2 Update net-tests-utils-host-common tag to "mts-networking"
We use "mts-networking" and not "mts" so that the tests and test dependencies can be properly included in the automated MTS packaging and release (go/mts-packaging).
Instead of tagging tests "mts", we should use "mts-*" where the suffix is one of https://source.corp.google.com/android/test/mts/tools/build/config.mk;l=19.

Test: built locally and verified contents
Bug: 203466102
Change-Id: I5f9bdaf699cfa2525b33178c0e30a6b794b9d5f5
2022-01-19 23:02:23 +00:00
Chalard Jean
b91c5a3a9c Fix blocked status error message
assertEquals syntax is (expected, actual) and not the
other way around

Error message before :
java.lang.AssertionError: Unexpected blocked status 32 expected:<32> but was:<0>
Error message after :
java.lang.AssertionError: Unexpected blocked status 32 expected:<0> but was:<32>

Test: FrameworksNetTests
Change-Id: I27f912db9a83fe418b659553829580a2802c20db
2022-01-07 11:16:33 +00:00
Remi NGUYEN VAN
6b6701d5bc Merge "Move TestableNetworkAgent to Common Util Location" 2021-12-14 12:49:15 +00:00
Treehugger Robot
876367a5b8 Merge "Add more logs in TestableNetworkStatsProvider" 2021-12-08 12:56:18 +00:00
Chalard Jean
997300b9d1 Support multiple cleanup blocks in tryTest{}
This is useful for some tests that need to make sure a few
things all happen, but some of them may throw an exception.

In vanilla Java you'd say

try {
  ...
} finally {
  try {
    ...
  } finally {
    try {
      ...
    } finally {
      ...
    }
  }
}

With this patch, you can pass a list of blocks to clean.
Kotlin :

tryTest {
  ...
} cleanupStep {
  ...
} cleanupStep {
  ...
} cleanup {
  ...
}

Java :
tryAndCleanup(() -> {
  ...
  }, () -> {
  ...
  }, () -> {
  ...
  })

This keeps the semantics of tryTest{} of throwing any
exception that was thrown in tryTest{} and adding the
exception in the cleanup steps as suppressed.

Test: new tests for this
Change-Id: Ie26b802cb4893e13a70646aa0b7887701dee1ec6
2021-12-06 17:57:29 +09:00
Tyler Wear
fbbfadf393 Move TestableNetworkAgent to Common Util Location
To prep TestableNetworkAgent being accessible for multiple
tests, move to common location.

Change-Id: Ib885553550259509b4843cdbc91d2b4bbfaa5fb8
2021-12-03 10:12:00 -08:00
Paul Hu
d2c8b5dbf0 Merge "Add ContextUtils" 2021-11-26 06:53:23 +00:00
Chalard Jean
fee2cab5d6 Correct a comment
Test: TH
Change-Id: I08ac8f0f40b9e3732564da73057cd3d22c06c79b
2021-11-25 19:55:59 +09:00
Junyu Lai
bb84528e38 Add more logs in TestableNetworkStatsProvider
Test: m gts && atest \
      GtsNetworkStackHostTestCases:NetworkStatsHostTest#testNetworkStatsProvider
Bug: 175742577
Change-Id: Ib8f45a20879517af08f9bf9cbb2b16314351d2da
2021-11-25 09:47:23 +00:00
Chalard Jean
28348e43ae Have tryTest{} work with throwables
Test: NetworkStaticLibTests
Change-Id: I9ee52e7d34866c82e169bbecbca3f928bfd79993
2021-11-25 16:26:42 +09:00
Chalard Jean
2918ada958 Rename ExceptionCleanupBlock into TryExpr
This is a lot more inline with standard compiling theory

Test: NetworkStaticLibTests
Change-Id: I32c8926cb08a30b4a87bc6867ce194483a7f0c3a
2021-11-25 16:26:42 +09:00
Chalard Jean
8f0a33054b Add catch{} to tryTest{}
Usage is
tryTest {
  ...
}.catch<Exception> {
  it
} cleanup {
  ...
}

Test: New tests for this
Change-Id: Idb7d9bd33034921c8f212288179b34a175e866f4
2021-11-25 16:26:42 +09:00
Chalard Jean
b6fdf63095 tryTest to return its last evaluated expression
This is the same thing try{} does, and allows to lift
return out of tryTest.

This allows syntaxes like :
fun foo() = try {
    "Foo";
  } cleanup {
    doSomeCleanup()
  }
}

val network = try {
    registerNetworkCallback
    callback.getNetwork()
  } cleanup {
    unregisterNetworkCallback
  }
}

Note: bypassing ktlint because of b/185077240

Test: FrameworksNetTests
Change-Id: Ib8f6fde7ccfd62fdcb3c1e3b7b03909ed94d4b23
2021-11-25 16:26:42 +09:00
Chalard Jean
7df6f89c37 Disallow non-local returns in tryTest{}
Non-local returns will prevent the execution of the cleanup{}
block, which is too much of a footgun to allow. See the bug
for details of how it happens.

There doesn't seem to be a way to keep the nice syntax, allow
non-local returns and still guarantee execution of the cleanup
block in all cases. Thus, forbid non-local returns. Users can
still use return@tryTest to accomplish almost the same thing,
and the next patch will also let tryTest{} return its last
evaluated value, fixing remaining cases.

E.g.
tryTest {
  foo()
  if (condition) return result
  bar()
} cleanup {
  doCleanup()
}

can always be written

return tryTest {
  foo()
  if (condition) return@tryTest result
  bar()
} cleanup {
  doCleanup()
}

...and it's a rare case, so the additional syntax is acceptable.

Test: NetworkStaticLibTests
Bug: 207358921
Change-Id: I40443acf7e4d86813641adc877e27fb2334d0daf
2021-11-24 17:08:54 +09:00
Chalard Jean
bfbcacef6d Make sure no suppressed expression is present when they shouldn't
In fact the test already passes, because addSuppressed contains
an explicit test that if this === argument, then it doesn't add
it. But otherwise that's a bug in tryCleanup

Test: NetworkStaticLibTests
Change-Id: I202790bbe8d82445c5affdd9076561c2c6ea9b59
2021-11-24 17:07:28 +09:00
paulhu
9053e46508 Add ContextUtils
Some tests need to create a Context with assigned user and
should delegate to orignal Context. Thus, add
ContextUtils#mockContextAsUser to factorize the usage.

Bug: 170593746
Test: atest FrameworksNetTests
Change-Id: I93f64a141709e181276ed4b5195811c36100c1d0
2021-11-22 21:05:07 +08:00
Chiachang Wang
7068c88921 Enable strict_updatability_linting in frameworks/libs/net
Enable the strict_updatability_linting here first as a prior
commit to enable strict_updatability_linting in connectivity
modules.

Bug: 188851968
Test: m lint-check ; atest NetworkStaticLibTests
Change-Id: Idac98a1c85bf5bb86269b1daad2b444cfb58db8a
2021-11-19 15:41:27 +08:00
Bob Badour
891a3b9fb7 [LSC] Add LOCAL_LICENSE_KINDS to frameworks/libs/net
Added SPDX-license-identifier-Apache-2.0 to:
  common/testutils/app/connectivitychecker/Android.bp

Bug: 68860345
Bug: 151177513
Bug: 151953481

Test: m all
Change-Id: I9e25f435ce9835f12a167e6c57e33f6d87c159de
2021-11-11 10:10:56 -08:00
Remi NGUYEN VAN
c02dcd721a Add ConnectivityCheckTargetPreparer
ConnectivityCheckTargetPreparer is a tradefed target preparer that uses
the connectivitychecker app to verify device configuration, before
running any test.

The connectivitychecker app verifies that the device has a
pre-configured wifi configuration and can connect to it (except for
virtual devices where it may create the configuration itself), and
verifies that the device has a data-enabled SIM card inserted.

Checks are skipped if the device is not wifi- or mobile data-capable,
and can be skipped for local testing by running with:

  atest X -- --test-arg \
    com.android.testutils.ConnectivityCheckTargetPreparer:disable:true

Test: atest CtsNetTestCasesLatestSdk
Change-Id: I5b6d34a6c393863af23af57ff026b15973e9e784
2021-11-04 19:57:21 +09:00
Junyu Lai
df424c18fa Merge changes from topic "testStatsProvider-cp" am: 8dc319b30f
Original change: https://android-review.googlesource.com/c/platform/frameworks/libs/net/+/1843374

Change-Id: Ifd7c922d474aa701e53bd2393495a4cfaef7ecb6
2021-10-05 10:26:39 +00:00
Junyu Lai
749459c3bd Add getter for quotaBytes
Since the counter part test is in internal branch only.
Change the member of OnSetLimit makes it fail to build on the
rvc+aosp branch.
Thus, add a getter for backward compatibility since the rvc test
does not recognize limitBytes.

This change also addresses some nullability confusions that are
not going to happen.

Test: m gts && atest \
          GtsNetworkStackHostTestCases:NetworkStatsHostTest#testNetworkStatsProvider
      on R & S codebase.
Bug: 191327585
Change-Id: I91dc8cb2297ca503c49b78bf1102cc5572d16530
2021-10-05 10:14:24 +00:00
Junyu Lai
16b160bfcb Add OnSetWarningAndLimit into TestableNetworkStatsProvider
This change also address left comments at ag/15010113.

Test: m gts && atest \
      GtsNetworkStackHostTestCases:NetworkStatsHostTest#testNetworkStatsProvider
Bug: 191327585
Merged-In: I100668cc6d4cecbaff29d027d37d313dd48854f3
Change-Id: Ib1f3820fe8502b939d36cef29bdb8dea428604b5
  (cherry-picked from ag/15061296)
2021-10-01 10:13:23 +00:00
Treehugger Robot
b999f5fa4b Merge "Implement DevSdkIgnoreRule with SdkLevel" am: 20bad35bc3
Original change: https://android-review.googlesource.com/c/platform/frameworks/libs/net/+/1827474

Change-Id: I4b6165b1eff5cdc92e69f6ee8574a157d9f8bf7b
2021-09-17 10:20:27 +00:00
Treehugger Robot
52f1cc6f4f Merge "Implement DevSdkIgnoreRule with SdkLevel" 2021-09-17 10:07:32 +00:00
Chalard Jean
63e8809f5b Add a new utility to improve stack traces from automatic testing am: 6b56526bec
Original change: https://android-review.googlesource.com/c/platform/frameworks/libs/net/+/1821095

Change-Id: I587f022c0a53dc56e654738686e222d384039500
2021-09-17 07:59:31 +00:00
Remi NGUYEN VAN
c2a28e0490 Implement DevSdkIgnoreRule with SdkLevel
DevSdkIgnoreRule currently considers a build with SDK 30, version code T
as being S, but it is generally considered as being T for development
that happens in that branch.

Change the implementation of DevSdkIgnoreRule to be consistent with the
SdkLevel utility.

Test: tests using DevSdkIgnoreRule
Change-Id: Ie81b84dff8fef8eac2cfe9694f0265e5bf11b3e6
2021-09-17 16:11:45 +09:00
Chalard Jean
5872cb8dbd Add a new utility to improve stack traces from automatic testing
A common pattern in tests is to use try-finally to make sure
cleanup is executed. This is necessary in CTS in particular to
make sure the test does not leave the device in a bad state.

The problem with using try-finally in this manner is that any
exception thrown in the finally{} block will override any thrown
in the try{} block. If the exception in finally{} is caused by
the one from try{}, then the stack trace reported by the tools
is the consequence and not the cause, making it difficult to
interpret the stack trace of automated tests.

So today, code has to make sure that either the code in
finally{} can't throw, or can't be affected by any code in
try{}, and both of these are really difficult to ensure in
presence in finally{} of code the tester does not control.

What we'd want ideally is a structure like try-finally, that
guaratees the code in finally{} is executed in all cases,
but that bubbles up the exception from try{} if any, and
will still bubble up any exception from finally{} if the
try{} block hasn't thrown.

That's what this new tool does.

Usage from Kotlin is like try-finally :
tryTest {
  testing code
} cleanup {
  cleanup code
}

Usage from Java can't be made as nice, but it's relatively okay :
testAndCleanup(() -> {
  testing code
}, () -> {
  cleanup code
});

Bugs listed below are some tests that have been affected by
this issue and have unhelpful traces.

Test: new test for this code
Bug: 198586720
Bug: 198998862
Change-Id: I54b30a7d53772feeade99274b6120a79707ad1c9
2021-09-17 12:21:09 +09:00
Mark Chien
5c934df677 Merge "Add initTestNetwork with a list of LinkAddress" am: e0920f08f2
Original change: https://android-review.googlesource.com/c/platform/frameworks/libs/net/+/1810276

Change-Id: I4334c9b01ca1ddf0ce640f1272c6d67f3f6f6020
2021-08-31 08:42:21 +00:00
markchien
14f746c07a Add initTestNetwork with a list of LinkAddress
To support setup test network with both ipv4 and ipv6. Add overloading
function for initTestNetwork to allow specify mutiple addresses.

Also allow to get TestNetworkInterface from this test network, so the
caller can use it to send and write packets.

Test: atest EthernetTetheringTest
Change-Id: Ic7626582c021dee824f95900e4de8efee861a9ea
2021-08-31 07:42:45 +00:00
Xin Li
ff5da50661 Merge "Merge sc-dev-plus-aosp-without-vendor@7634622" into stage-aosp-master 2021-08-17 18:14:27 +00:00
Remi NGUYEN VAN
843740592c Add the ConnectivityModuleTest annotation
The annotation will be used to mark tests cases that are part of MTS
modules used by multiple modules, to indicate that the test case should
only be run if the MTS suite should cover an updated Connectivity
(tethering) module.

This allows tests to verify new behavior in the Connectivity module,
without failing if that module is not updated.

Bug: 196755836
Test: mts-tradefed run mts-network with exclude-annotation in the config
Change-Id: I05d2200c7ab68042e4e48029e045f164c26b8037
2021-08-16 18:09:41 +09:00
Xiao Ma
8580cd8785 Append link-layer address parameter in makeNewNeighborMessage. am: e26cd34b8a am: e65d03c433
Original change: https://android-review.googlesource.com/c/platform/frameworks/libs/net/+/1788967

Change-Id: I27c720422d9dce022639dd1ca8463076fc22f135
2021-08-06 16:47:42 +00:00
Xiao Ma
da2904c7d1 Append link-layer address parameter in makeNewNeighborMessage.
Append link-layer address parameter in makeNewNeighMessage, the caller
can assign different link-layer address as netlink attributes, which is
helpful for testing and simulating the case although the neighbor is
still reachable, the link-layer address has changed. If no special link
layer address is assigned, just use the default constant MAC address.

Bug: 162944199
Test: atest NetworkStaticLibsTest NetworkStackTests
Change-Id: I49de035075fa97655358be0089f0fbee293823a0
2021-08-06 13:36:07 +00:00
Xiao Ma
049b884c90 Migrate netlink-client to net-utils-device-common-netlink. am: a5abbe6529 am: 3818589c93
Original change: https://android-review.googlesource.com/c/platform/frameworks/libs/net/+/1755889

Change-Id: Ia1a45efa17b46d2787e7385d6fb3e1e4648060fa
2021-08-04 07:56:23 +00:00
Xiao Ma
57b3442c65 Migrate netlink-client to net-utils-device-common-netlink.
Move netlink stuff to frameworks/libs/net/common/device, and build the
source files as an individual libraray. NetworkStack module just depends
on the net-utils-device-common-netlink.

Besides, also fix the incorrect format detected by checkstyle_hook script
such as missing java doc and make some public function as private, rename
the variable and etc.

Bug: 192535368
Test: atest NetworkStaticlibTests
Change-Id: I00e7f30be1bc9ebc2e24d7cd53efc403d6ba3daa
2021-07-29 03:52:09 +00:00
Treehugger Robot
65c85f368e Merge "Add assertNoCallbackThat" am: 5d39cb6ea7 am: 302ee01797
Original change: https://android-review.googlesource.com/c/platform/frameworks/libs/net/+/1765527

Change-Id: Ia6dfe0d043a30df97b6bf3ae696503305e5e491f
2021-07-16 12:55:14 +00:00
Treehugger Robot
5fa15e6098 Merge "Add assertNoCallbackThat" 2021-07-16 12:29:03 +00:00
Chiachang Wang
cdf45529ad Add assertNoCallbackThat
assertNoCallback() fails when any callbacks are received.
In some cases, the test is expected to not to receive certain
callback, like available or lost. Depending on the network
environment, network may trigger linkproperties change. It will
fail the test, but these callback does not go against the
intention of the test. It should not fail the test. Thus, add
this method to allow tests to verify no certain callback received.

Bug: 192239030
Test: atest TestableNetworkCallbackTest
Change-Id: I7db720becb23636f85a9ac21192f8185eceb22fe
2021-07-16 12:19:39 +08:00
Remi NGUYEN VAN
49ca421baa Merge "Add filterable, sortable to DevSdkIgnoreRunner" am: c0e59172d3 am: b2e757353a
Original change: https://android-review.googlesource.com/c/platform/frameworks/libs/net/+/1754040

Change-Id: Iffb8ca12a771d658a1b5cb98989ab61a8d9ce778
2021-07-15 09:01:58 +00:00
Remi NGUYEN VAN
a7702b6379 Add filterable, sortable to DevSdkIgnoreRunner
Without a Filterable implementation like the AndroidJUnit4 runner,
DevSdkIgnoreRunner will still run tests annotated with @AppModeFull or
@SdkSuppress. Filterable should be implemented by runners that support
filtering as per the JUnit documentation, so the DevSdkIgnoreRunner did
not support filtering and would run all tests.

Add a Filterable implementation based on the base AndroidJUnit4 runner.

Bug: 192530637
Test: atest CtsNetTestCasesLatestSdk adding annotations to tests
Change-Id: Ica9451e34fb5d98675f754269f44c0354bdde1a4
2021-07-14 10:57:04 +09:00
Treehugger Robot
1c5e60835f Merge "Support legacy limit reached callback" am: 38e6f064fb am: 54f6b13dfd
Original change: https://android-review.googlesource.com/c/platform/frameworks/libs/net/+/1748173

Change-Id: Idfbe0ee1e4969572766db13db41c6ef668767f52
2021-06-29 05:24:11 +00:00
Treehugger Robot
1308667155 Merge "Support legacy limit reached callback" 2021-06-29 05:02:47 +00:00
Remi NGUYEN VAN
87e88884b3 Support legacy limit reached callback
Add a callback entry for the older notifyLimitReached callback, that is
used on R devices.

Bug: 182962001
Test: atest OffloadControllerTest
Change-Id: Ic3c40eeb72b58ff1514f35be8e030a1dd9ba95d7
2021-06-28 06:01:10 +00:00
Dennis Liao
34db409225 Revert "Add OnSetWarningAndLimit into TestableNetworkStatsProvider"
This reverts commit d44e8af26a04fb0b8d73483d7a777cfa94888809.

Reason for revert: DroidMonitor-triggered revert due to breakage https://android-build.googleplex.com/builds/quarterdeck?branch=git_rvc-qpr-dev-plus-aosp&target=test_suites_x86_64&lkgb=7487730&lkbb=7488089&fkbb=7487865, bug b/191937497

Change-Id: I21bfa4c481db4e5e5e038a5dd4de432f879aca57
2021-06-24 06:24:07 +00:00
Junyu Lai
a7ace49440 Add OnSetWarningAndLimit into TestableNetworkStatsProvider
This change also address left comments at ag/15010113.

Test: m gts && atest \
      GtsNetworkStackHostTestCases:NetworkStatsHostTest#testNetworkStatsProvider
Bug: 191327585
Merged-In: I100668cc6d4cecbaff29d027d37d313dd48854f3
Change-Id: I100668cc6d4cecbaff29d027d37d313dd48854f3
  (cherry-picked from ag/15061296)
2021-06-24 01:19:25 +00:00
Junyu Lai
1f29499c64 Merge "Add OnSetWarningAndLimit into TestableNetworkStatsProvider" into sc-dev 2021-06-23 20:32:02 +00:00
Junyu Lai
8dc6e175cc Merge "Revert "Revert "Allow expect onRequestStatsUpdated with any token""" 2021-06-23 03:48:38 +00:00
Chiachang Wang
7dc43667f0 Add fall back to createTunInterface when running on R
TNM.createTunInterface() takes different parameter from S.
GTS is multi-release, so it should be compatible with S
and before S build. Add sdk version check to support it.

Bug: 186680038
Test: atest GtsNetworkStackHostTestCases:\
      com.google.android.gts.networkstack.NetworkStackHostTest#\
      testNetworkStack
Original-Change: https://android-review.googlesource.com/1742033
Merged-In: I5a08068db43e507637a53a32c15a5eb453d50c32
Change-Id: I5a08068db43e507637a53a32c15a5eb453d50c32
2021-06-23 00:54:52 +00:00