Add HttpEngine#{bindTo, unbindFrom}Network CTS tests
Test: atest CtsNetHttpTestCases
Change-Id: If24b12c7d602a3937d80e931b8bfa7f9ef7c14bc
diff --git a/Cronet/tests/cts/Android.bp b/Cronet/tests/cts/Android.bp
index d969b54..7b440cd 100644
--- a/Cronet/tests/cts/Android.bp
+++ b/Cronet/tests/cts/Android.bp
@@ -64,6 +64,7 @@
"junit",
"hamcrest-library",
"kotlin-test",
+ "mockito-target",
],
libs: [
"android.test.base",
diff --git a/Cronet/tests/cts/src/android/net/http/cts/HttpEngineTest.java b/Cronet/tests/cts/src/android/net/http/cts/HttpEngineTest.java
index d247201..816596c 100644
--- a/Cronet/tests/cts/src/android/net/http/cts/HttpEngineTest.java
+++ b/Cronet/tests/cts/src/android/net/http/cts/HttpEngineTest.java
@@ -29,6 +29,7 @@
import static org.junit.Assert.assertTrue;
import android.content.Context;
+import android.net.Network;
import android.net.http.HttpEngine;
import android.net.http.UrlRequest;
import android.net.http.UrlResponseInfo;
@@ -43,6 +44,7 @@
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.Mockito;
@RunWith(AndroidJUnit4.class)
public class HttpEngineTest {
@@ -51,6 +53,7 @@
private HttpEngine.Builder mEngineBuilder;
private TestUrlRequestCallback mCallback;
+ private HttpCtsTestServer mTestServer;
private UrlRequest mRequest;
private HttpEngine mEngine;
private Context mContext;
@@ -61,6 +64,7 @@
skipIfNoInternetConnection(mContext);
mEngineBuilder = new HttpEngine.Builder(mContext);
mCallback = new TestUrlRequestCallback();
+ mTestServer = new HttpCtsTestServer(mContext);
}
@After
@@ -72,6 +76,9 @@
if (mEngine != null) {
mEngine.shutdown();
}
+ if (mTestServer != null) {
+ mTestServer.shutdown();
+ }
}
private boolean isQuic(String negotiatedProtocol) {
@@ -253,4 +260,45 @@
.replaceFirst(".*<title>", "")
.replaceFirst("</title>.*", "");
}
-}
+
+ @Test
+ public void testHttpEngine_bindToNetwork() throws Exception {
+ // Create a fake Android.net.Network. Since that network doesn't exist, binding to
+ // that should end up in a failed request.
+ Network mockNetwork = Mockito.mock(Network.class);
+ Mockito.when(mockNetwork.getNetworkHandle()).thenReturn(123L);
+ String url = mTestServer.getSuccessUrl();
+
+ mEngine = mEngineBuilder.build();
+ mEngine.bindToNetwork(mockNetwork);
+ UrlRequest.Builder builder =
+ mEngine.newUrlRequestBuilder(url, mCallback.getExecutor(), mCallback);
+ mRequest = builder.build();
+ mRequest.start();
+
+ mCallback.expectCallback(ResponseStep.ON_FAILED);
+ }
+
+ @Test
+ public void testHttpEngine_unbindFromNetwork() throws Exception {
+ // Create a fake Android.net.Network. Since that network doesn't exist, binding to
+ // that should end up in a failed request.
+ Network mockNetwork = Mockito.mock(Network.class);
+ Mockito.when(mockNetwork.getNetworkHandle()).thenReturn(123L);
+ String url = mTestServer.getSuccessUrl();
+
+ mEngine = mEngineBuilder.build();
+ // Bind to the fake network but then unbind. This should result in a successful
+ // request.
+ mEngine.bindToNetwork(mockNetwork);
+ mEngine.bindToNetwork(null);
+ UrlRequest.Builder builder =
+ mEngine.newUrlRequestBuilder(url, mCallback.getExecutor(), mCallback);
+ mRequest = builder.build();
+ mRequest.start();
+
+ mCallback.expectCallback(ResponseStep.ON_SUCCEEDED);
+ UrlResponseInfo info = mCallback.mResponseInfo;
+ assertOKStatusCode(info);
+ }
+}
\ No newline at end of file