summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Lorenzo Colitti <lorenzo@google.com> 2020-04-07 04:30:33 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-04-07 04:30:33 +0000
commit4b6961d78db2b7a15115dbd58a4a4f77565796ab (patch)
tree05295c7d322fcf8acba49f70e12cca61d1490edc
parentecfe611854c999b36de16a22ba1fe8f1fbea28a6 (diff)
parent76602035b97612f37353073aeb10224f5e1402c6 (diff)
Merge "Use CompletableFuture instead of a latch." into rvc-dev
-rw-r--r--packages/Tethering/tests/integration/src/android/net/EthernetTetheringTest.java37
1 files changed, 18 insertions, 19 deletions
diff --git a/packages/Tethering/tests/integration/src/android/net/EthernetTetheringTest.java b/packages/Tethering/tests/integration/src/android/net/EthernetTetheringTest.java
index 843a4f19c3b8..492ce3db3424 100644
--- a/packages/Tethering/tests/integration/src/android/net/EthernetTetheringTest.java
+++ b/packages/Tethering/tests/integration/src/android/net/EthernetTetheringTest.java
@@ -63,6 +63,7 @@ import java.nio.ByteBuffer;
import java.util.Collection;
import java.util.List;
import java.util.Random;
+import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -150,10 +151,7 @@ public class EthernetTetheringTest {
Log.d(TAG, "Including test interfaces");
mEm.setIncludeTestInterfaces(true);
- Log.d(TAG, "Requesting tethered interface");
- mTetheredInterfaceRequester.requestInterface();
-
- final String iface = mTetheredInterfaceRequester.awaitRequestedInterface();
+ final String iface = mTetheredInterfaceRequester.getInterface();
assertEquals("TetheredInterfaceCallback for unexpected interface",
mTestIface.getInterfaceName(), iface);
@@ -165,14 +163,13 @@ public class EthernetTetheringTest {
// This test requires manipulating packets. Skip if there is a physical Ethernet connected.
assumeFalse(mEm.isAvailable());
- Log.d(TAG, "Requesting tethered interface");
- mTetheredInterfaceRequester.requestInterface();
+ CompletableFuture<String> futureIface = mTetheredInterfaceRequester.requestInterface();
mEm.setIncludeTestInterfaces(true);
mTestIface = createTestInterface();
- final String iface = mTetheredInterfaceRequester.awaitRequestedInterface();
+ final String iface = futureIface.get(TIMEOUT_MS, TimeUnit.MILLISECONDS);
assertEquals("TetheredInterfaceCallback for unexpected interface",
mTestIface.getInterfaceName(), iface);
@@ -184,8 +181,7 @@ public class EthernetTetheringTest {
assumeTrue(mEm.isAvailable());
// Get an interface to use.
- mTetheredInterfaceRequester.requestInterface();
- String iface = mTetheredInterfaceRequester.awaitRequestedInterface();
+ final String iface = mTetheredInterfaceRequester.getInterface();
// Enable Ethernet tethering and check that it starts.
mTetheringEventCallback = enableEthernetTethering(iface);
@@ -373,8 +369,8 @@ public class EthernetTetheringTest {
private final Handler mHandler;
private final EthernetManager mEm;
- private volatile TetheredInterfaceRequest mRequest;
- private volatile String mIface;
+ private TetheredInterfaceRequest mRequest;
+ private final CompletableFuture<String> mFuture = new CompletableFuture<>();
TetheredInterfaceRequester(Handler handler, EthernetManager em) {
mHandler = handler;
@@ -384,25 +380,28 @@ public class EthernetTetheringTest {
@Override
public void onAvailable(String iface) {
Log.d(TAG, "Ethernet interface available: " + iface);
- mIface = iface;
- mInterfaceAvailableLatch.countDown();
+ mFuture.complete(iface);
}
+
@Override
- public void onUnavailable() {}
+ public void onUnavailable() {
+ mFuture.completeExceptionally(new IllegalStateException("onUnavailable received"));
+ }
- public void requestInterface() {
+ public CompletableFuture<String> requestInterface() {
assertNull("BUG: more than one tethered interface request", mRequest);
+ Log.d(TAG, "Requesting tethered interface");
mRequest = mEm.requestTetheredInterface(mHandler::post, this);
+ return mFuture;
}
- public String awaitRequestedInterface() throws InterruptedException {
- assertTrue("No tethered interface available after " + TIMEOUT_MS + "ms",
- mInterfaceAvailableLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
- return mIface;
+ public String getInterface() throws Exception {
+ return requestInterface().get(TIMEOUT_MS, TimeUnit.MILLISECONDS);
}
public void release() {
if (mRequest != null) {
+ mFuture.obtrudeException(new IllegalStateException("Request already released"));
mRequest.release();
mRequest = null;
}