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

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

Issue 2585203003: Don't try to report metrics when there's no URLRequest (Closed)
Patch Set: Created 4 years 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
« no previous file with comments | « components/cronet/android/cronet_url_request_adapter.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java
index 1f671a8bff67a8d7c3e4ae8ba1683c6c1d443cbc..99367ea59ef5e5567cd23d527246104787f1fc27 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java
@@ -292,6 +292,55 @@ public class RequestFinishedInfoTest extends CronetTestBase {
mTestFramework.mCronetEngine.shutdown();
}
+ // Checks that CronetURLRequestAdapter::DestroyOnNetworkThread() doesn't crash when metrics
+ // collection is enabled and the URLRequest hasn't been created. See http://crbug.com/675629.
+ @SmallTest
+ @OnlyRunNativeCronet
+ @Feature({"Cronet"})
+ public void testExceptionInRequestStart() throws Exception {
+ mTestFramework = startCronetTestFramework();
+ TestRequestFinishedListener requestFinishedListener = new TestRequestFinishedListener();
+ mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedListener);
+ TestUrlRequestCallback callback = new TestUrlRequestCallback();
+ ExperimentalUrlRequest.Builder urlRequestBuilder =
+ mTestFramework.mCronetEngine.newUrlRequestBuilder(
+ mUrl, callback, callback.getExecutor());
+ // Empty headers are invalid and will cause start() to throw an exception.
+ UrlRequest request = urlRequestBuilder.addHeader("", "")
+ .addRequestAnnotation("request annotation")
+ .addRequestAnnotation(this)
+ .build();
+ try {
+ request.start();
+ fail("UrlRequest.start() should throw IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ assertEquals("Invalid header =", e.getMessage());
+ }
+
+ // Now run a normal request and check that the listener only hears about this one.
+ callback = new TestUrlRequestCallback();
xunjieli 2016/12/19 18:52:09 Does the test not repro the crash if you only make
mgersh 2016/12/19 19:06:11 It does repro without this part. It's primarily he
xunjieli 2016/12/19 19:40:05 One thing confuses me is that TestRequestFinishedL
mgersh 2016/12/19 20:20:08 Done.
+ urlRequestBuilder =
+ (ExperimentalUrlRequest.Builder) mTestFramework.mCronetEngine.newUrlRequestBuilder(
+ mUrl, callback, callback.getExecutor());
+ Date startTime = new Date();
+ urlRequestBuilder.addRequestAnnotation("request annotation")
+ .addRequestAnnotation(this)
+ .build()
+ .start();
+ callback.blockForDone();
+ requestFinishedListener.blockUntilDone();
+ Date endTime = new Date();
+
+ RequestFinishedInfo requestInfo = requestFinishedListener.getRequestInfo();
+ MetricsTestUtil.checkRequestFinishedInfo(requestInfo, mUrl, startTime, endTime);
+ assertEquals(RequestFinishedInfo.SUCCEEDED, requestInfo.getFinishedReason());
+ MetricsTestUtil.checkHasConnectTiming(requestInfo.getMetrics(), startTime, endTime, false);
+ assertEquals(newHashSet("request annotation", this), // Use sets for unordered comparison.
+ new HashSet<Object>(requestInfo.getAnnotations()));
+
+ mTestFramework.mCronetEngine.shutdown();
+ }
+
@SmallTest
@Feature({"Cronet"})
public void testMetricsGetters() throws Exception {
« no previous file with comments | « components/cronet/android/cronet_url_request_adapter.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698