Commit graph android_packages_modules_Co.../tests/net/java/com/android
Message SHA1
Merge "Nat464Xlat: correct racefree teardown"
Hugo Benichi   authored and   Gerrit Code Review   commited 2017-09-05 12:12:02 +00:00
d9ca494a43
Nat464Xlat: correct racefree teardown
This patch relays the NetworkBaseObserver notifications about nat
464xlat stacked interfaces onto the ConnectivityService handler.

This allows to process interface up and down notifications in the
same thread context and eliminates several races:

  - NPE risk due to race between fixupLinkProperties called on
    ConnectivityService thread and interfaceRemoved called on
    NetworkManagementService thread.
  - stale LinkProperties pointer reads in both NetworkBaseObserver
    callbacks not called on ConnectivityService handler.
  - removes the race between stop() and interfaceRemoved().
  - removes superfluous LinkProperties notifications when stop() is
    called before the stacked interface goes up.

The teardown procedure logic common to stop() and interfaceRemoved() is
put into enterStoppedState() and enterIdleState().

This allows to distinguish and correctly handle the following teardown
scenarios:
 - an IPv4 appears -> ConnectivityService calls Nat464Xlat#stop()
                   -> Nat464Xlat calls stopClatd
                   -> clatd stops
                   -> if the stacked interface was up, it is removed
                   -> Nat464Xlat#interfaceRemoved() is triggered and
                      a LinkProperties update is sent.

 - network disconnects -> ConnectivityService calls Nat464Xlat#stop()
                       -> Nat464Xlat calls stopClatd
                       -> clatd stops
                       -> if the stacked interface was up, it is removed
                       -> Nat464Xlat#interfaceRemoved() is triggered and
                          a LinkProperties update is sent.

 - clatd crashes or exit -> Nat464Xlat#interfaceRemoved() is triggered
                         -> Nat464Xlat unregisters itself as a network
                            observer
                         -> ConnectivityService is updated about the
                            stacked interface missing, and restarts
                            Nat464Xlat if needed.

Note that the first two scenarios have two cases: stop() can be called
before the notification for the stacked interface going up (STARTED), or
after (RUNNING). In the first case, Nat464Xlat must unregister
immediately as a network observer to avoid leaks.

This patch also:
  - removes/simplifies comments related to the threading model which
    are no obsolete.
  - extract clatd management logic from ConnectivityService into
    NetworkAgentInfo
  - add new unit tests where there was none before.

Bug: 62918393
Bug: 62997041
Bug: 64571917
Bug: 65225023
Test: runtest frameworks-net
Change-Id: I27221a8a60fd9760b567ed322cc79228df877e56

Hugo Benichi   commited 2017-09-05 15:33:55 +09:00
1dd94a2215
Network Service Discovery test: properly release resources
Bug: 32561414
Bug: 62918393
Bug: 62044295
Test: runtest frameworks-net
Change-Id: If23993b5e391947ecbdc01677f0a643144794b2b

Hugo Benichi   commited 2017-09-02 14:54:29 +09:00
175e18ff4e
Make NetworkManagementServiceTest pass again.
1. Mock the service manager so that NMS can fetch mock versions
   of INetd and IBatteryStats.
2. Call LocalServices.removeServiceForTest to avoid a duplicate
   service registration error. // check this
3. Change the timeout from 100ms to 200ms, as otherwise the tests
   that check for IfaceClass fail.
4. Convert NetworkManagementServiceTest to JUnit 4.
5. Move NetworkManagementServiceTest to tests/net

Bug: 29337859
Bug: 32163131
Bug: 32561414
Bug: 62918393
Test: runtest frameworks-net
Change-Id: Ic7371b427b35809ccd446addf35c9d8ae99ccfd3

Lorenzo Colitti   authored and   Hugo Benichi   commited 2017-08-23 09:49:05 +09:00
705b7ac973
Merge changes I325b13d5,I89719fe7
am: 58049d845f

Change-Id: Iaced543ab17ea87c8f701975764d957bc1b17fc7

Lorenzo Colitti   authored and   android-build-merger   commited 2017-08-19 03:15:08 +00:00
9628e69cf7
Add tether offload traffic to interface stats as well.
Currently, we only count add tethering traffic to per-UID
stats, but not to total data usage (i.e., dev and XT stats). This
is correct for software tethering, because all software forwarded
packets are already included in interface counters, but it is
incorrect for hardware offload, because such packets do not
increment interface counters.

To fix this:
1. Add an argument to ITetheringStatsProvider#getTetherStats to
   indicate whether per-UID stats are requested. For clarity,
   define integer constants STATS_PER_IFACE and STATS_PER_UID
   to represent these operations.
2. Make NetdTetheringStatsProvider return stats only if per-UID
   stats are requested. (Otherwise tethering traffic would be
   double-counted).
3. Make OffloadController's stats provider return the same
   stats regardless of whether per-UID stats were requested or
   not.
4. Make NetworkStatsService add non-per-UID tethering stats to
   the dev and XT snapshots. The per-UID snapshots were already
   correctly adding in per-UID stats.

(cherry picked from commit 5356a35c3bcfcdf2d184c620af6bfbf9bddf35c5)

Bug: 29337859
Bug: 32163131
Test: runtest frameworks-net
Test: runtest frameworks-telephony
Change-Id: I325b13d50e88841dfb0db4c35e7e27f163ee72fe
Merged-In: I4e8e923d68dce1a4a68608dbd6c75a91165aa4ee

Lorenzo Colitti   commited 2017-08-19 10:12:05 +09:00
2ce1756ae0
Merge "NetworkNotificationManager: correctly handle existing notifications"
am: 3451fb6156

Change-Id: I4432f66067ea1ab02e1d2dfe42530bcdafa52df6

Hugo Benichi   authored and   android-build-merger   commited 2017-07-27 14:43:48 +00:00
d7c56713f5
NetworkNotificationManager: correctly handle existing notifications
This patch corrects a regression added by commit 51727428fc that did
not take into account the case of multiple notifications shown for a
single network id. Given how network notifications are triggered, it can
happen that NO_INTERNET and SIGN_IN notifications are both triggered for
the same network when captive portal detection is slow.

Contrary to the situation before commit 51727428fc, a notification
priority order is introduced so that SIGN_IN always overrides
NO_INTERNET, and NO_INTERNET is ignored if SIGN_IN is already present.

Bug: 63676954
Bug: 62503737
Test: runtest frameworks-net, added new unit tests
Change-Id: Ib8658601e8d4dc6c41b335ab7dd8caa0cccd9531

Hugo Benichi   commited 2017-07-27 21:20:20 +09:00
38dfb4ed75
Merge "Add unit test for IpSecService"
am: 66c2152a1a

Change-Id: I16fb89239e641ac39a8a7adeafd72b7fe03935ed

Di Lu   authored and   android-build-merger   commited 2017-07-20 07:36:19 +00:00
74a670dd15
Add unit test for IpSecService
Test: runtest frameworks-net

Bug:38259578
Change-Id: I4a049d5fdec79e36692e3b12306bd0758c19ad75

ludi   authored and   Di Lu   commited 2017-07-20 04:26:24 +00:00
444da83c9b
Merge "ConnectivityServiceTest: fix testNetworkInfoOfTypeNone"
am: 8dc06d90ea

Change-Id: I4be1d2ce67871c1e01364beca886fdd3af374321

Hugo Benichi   authored and   android-build-merger   commited 2017-07-19 08:04:48 +00:00
871e4670a2
ConnectivityServiceTest: fix testNetworkInfoOfTypeNone
This patch fixes a couple of flakyness issues with
testNetworkInfoOfTypeNone. It also fixes some typos and naming issues.

Bug: 62918393, 62918393
Test: runtest frameworks-net
Change-Id: I1c56557ab113d3ef57dbc06a6e882634d03c5b09

Hugo Benichi   commited 2017-07-19 15:08:49 +09:00
42ba4ec976
Merge "ConnectivityManager: allow usage of TYPE_NONE"
am: ffcaee218d

Change-Id: I72dbd17db63bd7b8637e82f5cdcfec3bf1482962

Hugo Benichi   authored and   android-build-merger   commited 2017-07-05 14:33:35 +00:00
fab5b13b83
Merge "ConnectivityServiceTest: more informative assert failures"
am: 9951460998

Change-Id: Iaa55014ae4c2f4927059735c349c40ada836b79b

Hugo Benichi   authored and   android-build-merger   commited 2017-07-05 14:19:33 +00:00
598e36fd6a
Merge "ConnectivityServiceTest: eliminate remaining sleep()"
am: 5b906a4ece

Change-Id: Ib1e31c2b8999d07b20ef4cef8e70d851f93df6e5

Hugo Benichi   authored and   android-build-merger   commited 2017-07-05 12:35:01 +00:00
6c65982d2b
ConnectivityManager: allow usage of TYPE_NONE
This patch allows to use TYPE_NONE for the legacy network type variable
of NetworkInfo. This usage is "safe" with respect to legacy APIs using
network types as most of them already returns null or do nothing for
TYPE_NONE.

Of the existing APIs in ConnectivityManager that accept a network type
argument, those which were already returning null or doing nothing for
TYPE_NONE are:
  getNetworkInfo(int)
  getNetworkForType(int)
  stopUsingNetworkFeature(int, String)
  networkCapabilitiesForType(int)
  requestRouteToHostAddress(int, InetAddress)
  reportInetCondition(int, int)
  isNetworkSupported(int)
  getLinkProperties(int)

Only setProvisioningNotificationVisible needs an additional guard
against TYPE_NONE.

Bug: 30088447
Bug: 62844794
Test: runtest frameworks-net
Change-Id: I112596fcd03d3c2cd42a2a84d265adb38e3944bb

Hugo Benichi   commited 2017-07-05 21:30:52 +09:00
37d5c3cb21
ConnectivityServiceTest: more informative assert failures
Bug: 62918393
Test: runtest frameworks-net
Change-Id: If87315ef7cba6380596f48b92c7e0f6eeccc8368

Hugo Benichi   commited 2017-07-05 21:30:10 +09:00
6b1d01e117
ConnectivityServiceTest: eliminate remaining sleep()
ConnectivityServiceTest was still using sleep() in a few places although
these were unnecessary:
  - in testSatisfiedThenLostNetworkRequestDoesNotTriggerOnAvailable(),
    expectNoCallback() and expectAvailableCallback() already include
    waitForIdleHandler calls that drain the message queues and make
    sleep no-ops.
  - in testTimedoutAfterUnregisterdNetworkRequest, the sleeps were
    introduced before unregisterNetworkCallback was changed to have a
    synchronous effect for callback unregistration, therefore the sleep
    becomes simply non-sensical. To reflect this the name of the method
    is also changed.

Bug: 62918393
Test: runtest frameworks-net
Change-Id: I7b701ecf5846a5e1890e86107b8d2544b419ce44

Hugo Benichi   commited 2017-07-05 16:07:57 +09:00
d148700cd0
Merge "Revert "ConnectivityManager: allow usage of TYPE_NONE""
am: 613b73cac8

Change-Id: I49221522c1a9a6e7d4ae72529c1a47b736e26a39

Roland Levillain   authored and   android-build-merger   commited 2017-07-04 11:31:30 +00:00
0d0c37da2a
Merge "Revert "ConnectivityServiceTest: more informative assert failures""
am: a03e68e3e9

Change-Id: Ie61051984a1b6efbb0b19754ce0fb99024ab296a

Roland Levillain   authored and   android-build-merger   commited 2017-07-04 11:24:25 +00:00
2654f7c646
Merge "Revert "ConnectivityServiceTest: eliminate remaining sleep()""
am: 374ad24705

Change-Id: If210f213c7840c218d5e847667c7613d53f86661

Roland Levillain   authored and   android-build-merger   commited 2017-07-04 11:22:32 +00:00
08443dc3d6
Revert "ConnectivityManager: allow usage of TYPE_NONE"
This CL is breaking some internal builds.

This reverts commit 0bc85784a8.

Change-Id: Ie79214808d84c73f54a525f515b4c90a3fb23542

Roland Levillain   commited 2017-07-04 11:14:03 +00:00
5a58f9da60
Revert "ConnectivityServiceTest: more informative assert failures"
CL https://android-review.googlesource.com/#/c/420720/ is
breaking several internal builds, and CL
https://android-review.googlesource.com/#/c/422480/ must
be reverted beforehand.

This reverts commit bde57bd251.

Change-Id: I5883409452d39e1834e183aa7b5ccdbf14291ca5

Roland Levillain   commited 2017-07-04 11:11:35 +00:00
d91096e549
Merge "Revert "ConnectivityServiceTest: eliminate remaining sleep()""
Roland Levillain   authored and   Gerrit Code Review   commited 2017-07-04 11:11:09 +00:00
374ad24705
Revert "ConnectivityServiceTest: eliminate remaining sleep()"
CL https://android-review.googlesource.com/#/c/420720/ is
breaking several internal builds, and CL
https://android-review.googlesource.com/#/c/422481/ must
be reverted beforehand.

This reverts commit 638073b483.

Change-Id: If0b196b6860c4087a05b28770469d7850a76fd37

Roland Levillain   commited 2017-07-04 11:10:06 +00:00
455db172a9
Merge "ConnectivityServiceTest: eliminate remaining sleep()"
am: bd5e242d96

Change-Id: I31a8f64b4ee37a58bc83c08251d949f44cc26fd4

Hugo Benichi   authored and   android-build-merger   commited 2017-07-04 09:43:01 +00:00
556a005a30
Merge changes I90c211dc,I4455f272
am: 6cc4ed727e

Change-Id: I502d978ff636a00979d2083c39381bf600d3d6da

Hugo Benichi   authored and   android-build-merger   commited 2017-07-04 09:35:51 +00:00
1ac5f64000
Merge "ConnectivityServiceTest: eliminate remaining sleep()"
Treehugger Robot   authored and   Gerrit Code Review   commited 2017-07-04 09:25:53 +00:00
bd5e242d96
Merge changes I90c211dc,I4455f272
* changes:
  ConnectivityServiceTest: more informative assert failures
  ConnectivityManager: allow usage of TYPE_NONE

Treehugger Robot   authored and   Gerrit Code Review   commited 2017-07-04 09:22:07 +00:00
6cc4ed727e
ConnectivityServiceTest: eliminate remaining sleep()
ConnectivityServiceTest was still using sleep() in a few places although
these were unnecessary:
  - in testSatisfiedThenLostNetworkRequestDoesNotTriggerOnAvailable(),
    expectNoCallback() and expectAvailableCallback() already include
    waitForIdleHandler calls that drain the message queues and make
    sleep no-ops.
  - in testTimedoutAfterUnregisterdNetworkRequest, the sleeps were
    introduced before unregisterNetworkCallback was changed to have a
    synchronous effect for callback unregistration, therefore the sleep
    becomes simply non-sensical. To reflect this the name of the method
    is also changed.

Bug: 62918393
Test: runtest frameworks-net
Change-Id: I78426665670f702304212753f417b3d5a8a2c107

Hugo Benichi   commited 2017-07-04 16:23:06 +09:00
638073b483
ConnectivityServiceTest: more informative assert failures
Bug: 62918393
Test: runtest frameworks-net
Change-Id: I90c211dc6d6262475924ecabc2863c47aec5a0b9

Hugo Benichi   commited 2017-07-04 16:23:05 +09:00
bde57bd251
ConnectivityManager: allow usage of TYPE_NONE
This patch allows to use TYPE_NONE for the legacy network type variable
of NetworkInfo. This usage is "safe" with respect to legacy APIs using
network types as most of them already returns null or do nothing for
TYPE_NONE.

Of the existing APIs in ConnectivityManager that accept a network type
argument, those which were already returning null or doing nothing for
TYPE_NONE are:
  getNetworkInfo(int)
  getNetworkForType(int)
  stopUsingNetworkFeature(int, String)
  networkCapabilitiesForType(int)
  requestRouteToHostAddress(int, InetAddress)
  reportInetCondition(int, int)
  isNetworkSupported(int)
  getLinkProperties(int)

Only setProvisioningNotificationVisible needs an additional guard
against TYPE_NONE.

Bug: 30088447
Bug: 62844794
Test: runtest frameworks-net
Change-Id: I4455f2726d06406047086368628c1f253d854d8d

Hugo Benichi   commited 2017-07-04 16:22:59 +09:00
0bc85784a8
Merge "Networking unit tests: fix some flaky tests"
am: 501bae6492

Change-Id: I6815e732f334d11208ff12af4023912593d96499

Hugo Benichi   authored and   android-build-merger   commited 2017-07-03 09:35:06 +00:00
c6121a13ea
Networking unit tests: fix some flaky tests
- less strict regex for SharedLogTest: the subsecond part of the
   timestamp can have 0, 1, 2 or 3 digits.
 - refactor NetworkStatsServiceTest and NetworkStatsObserversTest to use
   waitForIdleHandler facility of ConnectivityServiceTest.
   NetworkStatsServiceTest was using a flaky custom version of
   waitForIdleHandler.

Bug: 62918393
Bug: 32561414
Test: runtest frameworks-net
Change-Id: I634acfb5f4fe1bd5267e3f14b9f645edc32d5d12

Hugo Benichi   commited 2017-07-03 16:29:01 +09:00
8c8a164d2f
Merge "ConnectivityServiceTest: more tweaks to testRequestBenchmark" am: 76efbb30f5 am: 5f046cb614
am: 7bbdfcd8eb

Change-Id: I96c39ca1899768d039a108426fb04655aaf8d55f

Hugo Benichi   authored and   android-build-merger   commited 2017-05-31 04:10:03 +00:00
1595d96117
ConnectivityServiceTest: more tweaks to testRequestBenchmark
Recent continuous testing runs indicates that commit 97259191 did not
completely fixed the issue with testRequestBenchmark.

This patch changes the name of the test to not include "test" and
removes @SmallTest annotation, which should do the job of @Ignore while
ConnectivityServiceTest still extends AndroidTestCase.

In addition timeouts are adjusted to take into account recent failures
observed.

This is the last pending action before turning on FrameworksNetTests on
presubmits.

Bug: 32561414
Test: no functional change
Change-Id: I56ef334e19e99e5a3483418330e5f0ccd6eb31bb

Hugo Benichi   commited 2017-05-31 10:23:42 +09:00
3bcb72f6ec
Merge changes If4deb106,Ib25d7658 am: 0388f0e47b am: 41a57af66a
am: ae278410f5

Change-Id: I4fa34b647e7b2408d4493cfb148ae7d8c24bd6e8

Hugo Benichi   authored and   android-build-merger   commited 2017-05-26 00:58:27 +00:00
68f0403b91
@Ignore ConnectivityServiceTest#testRequestBenchmark
Ignore the last remaining test in ConnectivityServiceTest with spurious
failures. testRequestBenchmark has some intrinsic chances of failure due
to the fact it attempts to assert elapsed time durations against a
reference target.

Bug: 32561414
Test: no functional change
Change-Id: Ib25d76581b47997b2ef84df3e6a9fd9224b85d92

Hugo Benichi   commited 2017-05-26 07:18:15 +09:00
9725919140
Merge "Move NsdServiceTest to correct directory" am: 72b5cdc1a7 am: ca9fcb79f6
am: ecf4267889

Change-Id: Ib4e100fc8219b58ab7850407735a444dad3ec153

Hugo Benichi   authored and   android-build-merger   commited 2017-05-24 07:15:09 +00:00
1314c7e54f
Merge "Move NsdServiceTest to correct directory"
Treehugger Robot   authored and   Gerrit Code Review   commited 2017-05-24 06:47:30 +00:00
72b5cdc1a7
Move NsdServiceTest to correct directory
Test: no functional change
Bug: 62044295
Change-Id: Iad3af646e8d252f84978d1a367878a78c2869982

Hugo Benichi   commited 2017-05-24 14:18:48 +09:00
d41cc755eb
Merge "Fix NetworkStatsObserversTest" am: 3ba0e6ce34 am: 25282c3e38
am: 814351c843

Change-Id: Ice4bb8de4267cba7a15a60838e165fab5ebade72

Hugo Benichi   authored and   android-build-merger   commited 2017-05-23 14:18:30 +00:00
b6a61b27a0
Merge "Fix NetworkStatsAccessTest" am: e08c3bc8bd am: cdb75d321b
am: 85afabc4ec

Change-Id: I60f9d8867655a6aa24ee192c772d4c26a96c9bcd

Hugo Benichi   authored and   android-build-merger   commited 2017-05-23 07:02:54 +00:00
71b964f828
Merge "ConnectivityServiceTest: fix flakyness" am: fd3f172df8 am: 004f36d5bc
am: eb9d0f16aa

Change-Id: Ic792060aafb5aa8b485054be18c3dba82bb15a3b

Hugo Benichi   authored and   android-build-merger   commited 2017-05-23 04:56:41 +00:00
2244ca0741
Fix NetworkStatsObserversTest
This patch fixes several spurious unit tests in
NetworkStatsObserversTest by using the updated waitForIdleHandler of
ConnectivityServiceTest. More specifically this fixes the following
tests:
  - testUnregister_knownRequest_releasesCaller
  - testUpdateStats_deviceAccess_notifies
  - testUpdateStats_userAccess_usageSameUser_notifies
  - testUpdateStats_defaultAccess_notifiesSameUid

This patch also removes the dummy message with type -1 sent at the end
of tests in NetworkStatsObserversTest and the associated assert, because
nothing is exercised or asserted immediately after.

This patch also updates NetworkStatsObserversTest to not depend on the
deprecated junit.framework.TestCase.

Bug: 32561414
Test: runtest -x frameworks/base/tests/../NetworkStatsObserversTest.java
Change-Id: I4fc909ee9bacc964c859fa7a3db34f9dc86b89cf

Hugo Benichi   commited 2017-05-23 10:18:41 +09:00
e0df1bd284
Fix NetworkStatsAccessTest
This patch fixes NetworkStatsAccessTest by taking into account
DEVICESUMMARY which was added in commit
3a8b343ce5220086c4f71e63f5d42f2d28434c4b.

Doing $ git revert 3a8b343ce5220086c4f71e63f5d42f2d28434c4b shows that
the existing assertions of NetworkStatsAccessTest passed before that
commit.

This patch also changes NetworkStatsAccessTest to use up-to-date testing
style and not depend on the deprecated junit.framework.TestCase.

Bug: 32561414
Test: runtest -x frameworks/base/../NetworkStatsAccessTest.java
Change-Id: Ib78f137578cf35e1c766b377b7f812a09173c49e

Hugo Benichi   commited 2017-05-23 10:18:41 +09:00
728aabcdc0
ConnectivityServiceTest: fix flakyness
This patch attempts to fix the remaining spurious failures in
ConnectivityServiceTest, which have two causes:
 - waitForIdle() does not take into account the NetworkAgents handlers.
 - the deadlines in testRequestBenchmark are sometimes exceeded.

To fix the first issue, waitForIdle() is moved to a test level instance
method and also calls waitForIdleHandler on any non null
MockNetworkAgent. This is expected to fix spurious errors for the
following tests:
  - testMobildeDataAlwaysOn
  - testLingering
  - testPacketKeepAlive
  - testMMSonWiFi

To fix the second issue, the deadlines for testRequestBenchmark are
extended by 10ms. Also, the failure message is made more actionable by
providing the total time it took for the operation, instead of printing
the number of dispatches that were achieved before the deadline.

Bug: 32561414
Test: tests pass many times in a row (~500).
Change-Id: Id33c6ac1edfb0b89634fa7789dccb2da237e2709

Hugo Benichi   commited 2017-05-23 10:18:41 +09:00
bac93e4852
Merge "Add test coverage for explicitlySelected networks." am: 5466a9e14b am: 3d55c5539c
am: b7535c86a0

Change-Id: I4caf9f55edeb51365293558db9d7d028b61c501c

Lorenzo Colitti   authored and   android-build-merger   commited 2017-05-19 02:34:58 +00:00
aa92f9e874
Merge "Add a method to start the captive portal login app."
Hugo Benichi   authored and   Gerrit Code Review   commited 2017-05-19 02:29:21 +00:00
9e44f73ed7
Merge "Add test coverage for explicitlySelected networks."
Lorenzo Colitti   authored and   Gerrit Code Review   commited 2017-05-19 02:05:55 +00:00
5466a9e14b