Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2303)

Unified Diff: components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java

Issue 2283243002: Allow direct executors in cronet. (Closed)
Patch Set: Improve thread checking Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java
index 3fbe074bf8a90b7d7cb594c94bb3fa1c7ae0bc21..7537fefc1042cb36de0a33a51fbe5745c2b48512 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java
@@ -32,6 +32,7 @@ import java.util.NoSuchElementException;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.atomic.AtomicReference;
/**
* Test CronetEngine.
@@ -747,6 +748,62 @@ public class CronetUrlRequestContextTest extends CronetTestBase {
FileUtils.recursivelyDeleteFile(netLogDir2);
assertFalse(netLogDir2.exists());
}
+ @SmallTest
+ @Feature({"Cronet"})
+ @OnlyRunNativeCronet
+ // Tests that if CronetEngine is shut down on the network thread, an appropriate exception
+ // is thrown.
+ public void testShutDownEngineOnNetworkThread() throws Exception {
+ final CronetTestFramework testFramework =
+ startCronetTestFrameworkWithCacheEnabled(CronetEngine.Builder.HTTP_CACHE_DISK);
+ String url = NativeTestServer.getFileURL("/cacheable.txt");
+ // Make a request to a cacheable resource.
+ checkRequestCaching(testFramework.mCronetEngine, url, false);
+
+ final AtomicReference<Throwable> thrown = new AtomicReference<>();
+ // Shut down the server.
+ NativeTestServer.shutdownNativeTestServer();
+ class CancelUrlRequestCallback extends TestUrlRequestCallback {
+ @Override
+ public void onResponseStarted(UrlRequest request, UrlResponseInfo info) {
+ super.onResponseStarted(request, info);
+ request.cancel();
+ // Shut down CronetEngine immediately after request is destroyed.
+ try {
+ testFramework.mCronetEngine.shutdown();
+ } catch (Exception e) {
+ thrown.set(e);
+ }
+ }
+
+ @Override
+ public void onSucceeded(UrlRequest request, UrlResponseInfo info) {
+ // onSucceeded will not happen, because the request is canceled
+ // after sending first read and the executor is single threaded.
+ throw new RuntimeException("Unexpected");
+ }
+
+ @Override
+ public void onFailed(
+ UrlRequest request, UrlResponseInfo info, UrlRequestException error) {
+ throw new RuntimeException("Unexpected");
+ }
+ }
+ Executor directExecutor = new Executor() {
+ @Override
+ public void execute(Runnable command) {
+ command.run();
+ }
+ };
+ CancelUrlRequestCallback callback = new CancelUrlRequestCallback();
+ callback.setAllowDirectExecutor(true);
+ UrlRequest.Builder urlRequestBuilder =
+ new UrlRequest.Builder(url, callback, directExecutor, testFramework.mCronetEngine);
+ urlRequestBuilder.allowDirectExecutor();
+ urlRequestBuilder.build().start();
+ callback.blockForDone();
+ assertTrue(thrown.get() instanceof RuntimeException);
+ }
@SmallTest
@Feature({"Cronet"})

Powered by Google App Engine
This is Rietveld 408576698