From 8d10ebe3d70964c3dd5fc0fe3adfe20d045290fe Mon Sep 17 00:00:00 2001 From: Treehugger Robot Date: Fri, 17 Apr 2020 06:10:14 +0000 Subject: [PATCH 1/2] Add EntitlementResult CTS tests Test APIs below: requestLatestTetheringEntitlementResult(int, boolean, java.util.concurrent.Executor, android.net.TetheringManager.OnTetheringEntitlementResultListener) requestLatestTetheringEntitlementResult(int, android.os.ResultReceiver, boolean) OnTetheringEntitlementResultListener.onTetheringEntitlementResult(int) Bug: 152829363 Test: atests CtsTetheringTest Change-Id: Icf0d9cacd97eeaa7ceb78f4924c5a6be6e588b30 Merged-In: Icf0d9cacd97eeaa7ceb78f4924c5a6be6e588b30 (cherry picked from commit 4bed8dff67d4a6824098188cd9602668d8705a7e, aosp/1272946) --- .../tethering/cts/TetheringManagerTest.java | 60 ++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/tests/cts/tethering/src/android/tethering/cts/TetheringManagerTest.java b/tests/cts/tethering/src/android/tethering/cts/TetheringManagerTest.java index f430f22371..ccad14cdd2 100644 --- a/tests/cts/tethering/src/android/tethering/cts/TetheringManagerTest.java +++ b/tests/cts/tethering/src/android/tethering/cts/TetheringManagerTest.java @@ -20,6 +20,8 @@ import static android.net.TetheringManager.TETHER_HARDWARE_OFFLOAD_STARTED; import static android.net.TetheringManager.TETHER_HARDWARE_OFFLOAD_STOPPED; import static android.net.TetheringManager.TETHERING_USB; import static android.net.TetheringManager.TETHERING_WIFI; +import static android.net.TetheringManager.TETHERING_WIFI_P2P; +import static android.net.TetheringManager.TETHER_ERROR_ENTITLEMENT_UNKNOWN; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -35,9 +37,12 @@ import android.net.LinkAddress; import android.net.Network; import android.net.TetheredClient; import android.net.TetheringManager; +import android.net.TetheringManager.OnTetheringEntitlementResultListener; import android.net.TetheringManager.TetheringEventCallback; import android.net.TetheringManager.TetheringInterfaceRegexps; import android.net.TetheringManager.TetheringRequest; +import android.os.Bundle; +import android.os.ResultReceiver; import androidx.annotation.NonNull; import androidx.test.InstrumentationRegistry; @@ -52,8 +57,12 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import java.util.function.Consumer; @RunWith(AndroidJUnit4.class) public class TetheringManagerTest { @@ -472,11 +481,60 @@ public class TetheringManagerTest { assertEquals(usbRegexs, Arrays.asList(mTM.getTetherableUsbRegexs())); assertEquals(btRegexs, Arrays.asList(mTM.getTetherableBluetoothRegexs())); - //Verify that any of interface name should only contain in one array. + //Verify that any regex name should only contain in one array. wifiRegexs.forEach(s -> assertFalse(usbRegexs.contains(s))); wifiRegexs.forEach(s -> assertFalse(btRegexs.contains(s))); usbRegexs.forEach(s -> assertFalse(btRegexs.contains(s))); mTM.unregisterTetheringEventCallback(tetherEventCallback); } + + private class EntitlementResultListener implements OnTetheringEntitlementResultListener { + private final CompletableFuture future = new CompletableFuture<>(); + + @Override + public void onTetheringEntitlementResult(int result) { + future.complete(result); + } + + public int get(long timeout, TimeUnit unit) throws Exception { + return future.get(timeout, unit); + } + + } + + private void assertEntitlementResult(final Consumer functor, + final int expect) throws Exception { + final EntitlementResultListener listener = new EntitlementResultListener(); + functor.accept(listener); + + assertEquals(expect, listener.get(DEFAULT_TIMEOUT_MS, TimeUnit.MILLISECONDS)); + } + + @Test + public void testRequestLatestEntitlementResult() throws Exception { + // Verify that requestLatestTetheringEntitlementResult() can get entitlement + // result(TETHER_ERROR_ENTITLEMENT_UNKNOWN due to invalid downstream type) via listener. + assertEntitlementResult(listener -> mTM.requestLatestTetheringEntitlementResult( + TETHERING_WIFI_P2P, false, c -> c.run(), listener), + TETHER_ERROR_ENTITLEMENT_UNKNOWN); + + // Verify that requestLatestTetheringEntitlementResult() can get entitlement + // result(TETHER_ERROR_ENTITLEMENT_UNKNOWN due to invalid downstream type) via receiver. + assertEntitlementResult(listener -> mTM.requestLatestTetheringEntitlementResult( + TETHERING_WIFI_P2P, + new ResultReceiver(null /* handler */) { + @Override + public void onReceiveResult(int resultCode, Bundle resultData) { + listener.onTetheringEntitlementResult(resultCode); + } + }, false), + TETHER_ERROR_ENTITLEMENT_UNKNOWN); + + // Verify that null listener will cause IllegalArgumentException. + try { + mTM.requestLatestTetheringEntitlementResult( + TETHERING_WIFI, false, c -> c.run(), null); + } catch (IllegalArgumentException expect) { } + } } From 685f072bfde95cf5e38e5406bfa8365ad2c141b5 Mon Sep 17 00:00:00 2001 From: Treehugger Robot Date: Fri, 17 Apr 2020 06:10:36 +0000 Subject: [PATCH 2/2] Add more tests to CtsTetheringTest Add TetheringIntegrationTests into CtsTetheringTest Bug: 148636687 Test: atest CtsTetheringTest atest TetheringIntegrationTests Change-Id: I606097a8db9ed3d2b3eaf933bb1d904e437ab27d Merged-In: I606097a8db9ed3d2b3eaf933bb1d904e437ab27d (cherry picked from commit 1f7305c9740a7a1a724c4023f8c55ce827391f73, aosp/1280233) --- tests/cts/tethering/Android.bp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/cts/tethering/Android.bp b/tests/cts/tethering/Android.bp index 0f98125d6f..63de301d69 100644 --- a/tests/cts/tethering/Android.bp +++ b/tests/cts/tethering/Android.bp @@ -25,12 +25,19 @@ android_test { ], static_libs: [ + "TetheringIntegrationTestsLib", "compatibility-device-util-axt", "ctstestrunner-axt", "junit", "junit-params", ], + jni_libs: [ + // For mockito extended + "libdexmakerjvmtiagent", + "libstaticjvmtiagent", + ], + // Change to system current when TetheringManager move to bootclass path. platform_apis: true, @@ -41,4 +48,6 @@ android_test { "mts", ], + // Include both the 32 and 64 bit versions + compile_multilib: "both", }