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

Side by Side Diff: components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamQuicTest.java

Issue 2360813003: [Cronet] Pass metrics information from C++ BidirectionalStream to Java (Closed)
Patch Set: Rebased Created 4 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.net; 5 package org.chromium.net;
6 6
7 import static org.chromium.base.CollectionUtil.newHashSet; 7 import static org.chromium.base.CollectionUtil.newHashSet;
8 8
9 import android.test.suitebuilder.annotation.SmallTest; 9 import android.test.suitebuilder.annotation.SmallTest;
10 10
11 import org.json.JSONObject;
12
11 import org.chromium.base.test.util.Feature; 13 import org.chromium.base.test.util.Feature;
12 import org.chromium.net.CronetTestBase.OnlyRunNativeCronet; 14 import org.chromium.net.CronetTestBase.OnlyRunNativeCronet;
13 import org.chromium.net.MetricsTestUtil.TestExecutor;
14 import org.chromium.net.MetricsTestUtil.TestRequestFinishedListener; 15 import org.chromium.net.MetricsTestUtil.TestRequestFinishedListener;
15 import org.json.JSONObject;
16 16
17 import java.nio.ByteBuffer; 17 import java.nio.ByteBuffer;
18 import java.util.Date;
18 import java.util.HashSet; 19 import java.util.HashSet;
19 20
20 /** 21 /**
21 * Tests functionality of BidirectionalStream's QUIC implementation. 22 * Tests functionality of BidirectionalStream's QUIC implementation.
22 */ 23 */
23 public class BidirectionalStreamQuicTest extends CronetTestBase { 24 public class BidirectionalStreamQuicTest extends CronetTestBase {
24 private CronetTestFramework mTestFramework; 25 private CronetTestFramework mTestFramework;
25 private enum QuicBidirectionalStreams { 26 private enum QuicBidirectionalStreams {
26 ENABLED, 27 ENABLED,
27 DISABLED, 28 DISABLED,
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 public void testSimplePost() throws Exception { 88 public void testSimplePost() throws Exception {
88 setUp(QuicBidirectionalStreams.ENABLED); 89 setUp(QuicBidirectionalStreams.ENABLED);
89 String path = "/simple.txt"; 90 String path = "/simple.txt";
90 String quicURL = QuicTestServer.getServerURL() + path; 91 String quicURL = QuicTestServer.getServerURL() + path;
91 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); 92 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback();
92 // Although we have no way to verify data sent at this point, this test 93 // Although we have no way to verify data sent at this point, this test
93 // can make sure that onWriteCompleted is invoked appropriately. 94 // can make sure that onWriteCompleted is invoked appropriately.
94 callback.addWriteData("Test String".getBytes()); 95 callback.addWriteData("Test String".getBytes());
95 callback.addWriteData("1234567890".getBytes()); 96 callback.addWriteData("1234567890".getBytes());
96 callback.addWriteData("woot!".getBytes()); 97 callback.addWriteData("woot!".getBytes());
97 TestExecutor testExecutor = new TestExecutor(); 98 TestRequestFinishedListener requestFinishedListener = new TestRequestFin ishedListener();
98 TestRequestFinishedListener requestFinishedListener =
99 new TestRequestFinishedListener(testExecutor);
100 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); 99 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener);
101 BidirectionalStream stream = new BidirectionalStream 100 BidirectionalStream stream = new BidirectionalStream
102 .Builder(quicURL, callback, callbac k.getExecutor(), 101 .Builder(quicURL, callback, callbac k.getExecutor(),
103 mTestFramework.mCronetEngin e) 102 mTestFramework.mCronetEngin e)
104 .addHeader("foo", "bar") 103 .addHeader("foo", "bar")
105 .addHeader("empty", "") 104 .addHeader("empty", "")
106 .addHeader("Content-Type", "zebra") 105 .addHeader("Content-Type", "zebra")
107 .addRequestAnnotation("request anno tation") 106 .addRequestAnnotation("request anno tation")
108 .addRequestAnnotation(this) 107 .addRequestAnnotation(this)
109 .build(); 108 .build();
109 Date startTime = new Date();
110 stream.start(); 110 stream.start();
111 callback.blockForDone(); 111 callback.blockForDone();
112 testExecutor.runAllTasks();
113 assertTrue(stream.isDone()); 112 assertTrue(stream.isDone());
113 requestFinishedListener.blockUntilDone();
114 Date endTime = new Date();
114 RequestFinishedInfo finishedInfo = requestFinishedListener.getRequestInf o(); 115 RequestFinishedInfo finishedInfo = requestFinishedListener.getRequestInf o();
115 assertNotNull("RequestFinishedInfo.Listener must be called", finishedInf o); 116 assertNotNull("RequestFinishedInfo.Listener must be called", finishedInf o);
117 RequestFinishedInfo.Metrics metrics = finishedInfo.getMetrics();
118 assertNotNull(metrics);
119 MetricsTestUtil.checkTimingMetrics(metrics, startTime, endTime);
120 MetricsTestUtil.checkHasConnectTiming(metrics, startTime, endTime, true) ;
121 assertTrue(metrics.getSentBytesCount() > 0);
122 assertTrue(metrics.getReceivedBytesCount() > 0);
116 assertEquals(quicURL, finishedInfo.getUrl()); 123 assertEquals(quicURL, finishedInfo.getUrl());
117 assertEquals(newHashSet("request annotation", this), 124 assertEquals(newHashSet("request annotation", this),
118 new HashSet<Object>(finishedInfo.getAnnotations())); 125 new HashSet<Object>(finishedInfo.getAnnotations()));
119 assertNotNull(finishedInfo.getResponseInfo()); 126 assertNotNull(finishedInfo.getResponseInfo());
120 // TODO(xunjieli): Check other fields once metrics support is in crbug.c om/648346.
121 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 127 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
122 assertEquals("This is a simple text file served by QUIC.\n", callback.mR esponseAsString); 128 assertEquals("This is a simple text file served by QUIC.\n", callback.mR esponseAsString);
123 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtoc ol()); 129 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtoc ol());
124 } 130 }
125 131
126 @SmallTest 132 @SmallTest
127 @Feature({"Cronet"}) 133 @Feature({"Cronet"})
128 @OnlyRunNativeCronet 134 @OnlyRunNativeCronet
129 public void testSimplePostWithFlush() throws Exception { 135 public void testSimplePostWithFlush() throws Exception {
130 setUp(QuicBidirectionalStreams.ENABLED); 136 setUp(QuicBidirectionalStreams.ENABLED);
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 builder.enableQuic(true); 368 builder.enableQuic(true);
363 builder.setMockCertVerifierForTesting(QuicTestServer.createMockCertVerif ier()); 369 builder.setMockCertVerifierForTesting(QuicTestServer.createMockCertVerif ier());
364 builder.setCertVerifierData(serialized_data); 370 builder.setCertVerifierData(serialized_data);
365 371
366 CronetTestFramework testFramework = 372 CronetTestFramework testFramework =
367 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, buil der); 373 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, buil der);
368 String deserialized_data = testFramework.mCronetEngine.getCertVerifierDa ta(100); 374 String deserialized_data = testFramework.mCronetEngine.getCertVerifierDa ta(100);
369 assertEquals(deserialized_data, serialized_data); 375 assertEquals(deserialized_data, serialized_data);
370 } 376 }
371 } 377 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698