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

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

Issue 2360813003: [Cronet] Pass metrics information from C++ BidirectionalStream to Java (Closed)
Patch Set: self review 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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.os.ConditionVariable; 9 import android.os.ConditionVariable;
10 import android.test.suitebuilder.annotation.SmallTest; 10 import android.test.suitebuilder.annotation.SmallTest;
11 11
12 import org.chromium.base.test.util.DisabledTest; 12 import org.chromium.base.test.util.DisabledTest;
13 import org.chromium.base.test.util.Feature; 13 import org.chromium.base.test.util.Feature;
14 import org.chromium.net.CronetTestBase.OnlyRunNativeCronet; 14 import org.chromium.net.CronetTestBase.OnlyRunNativeCronet;
15 import org.chromium.net.MetricsTestUtil.TestExecutor;
16 import org.chromium.net.MetricsTestUtil.TestRequestFinishedListener; 15 import org.chromium.net.MetricsTestUtil.TestRequestFinishedListener;
17 import org.chromium.net.TestBidirectionalStreamCallback.FailureType; 16 import org.chromium.net.TestBidirectionalStreamCallback.FailureType;
18 import org.chromium.net.TestBidirectionalStreamCallback.ResponseStep; 17 import org.chromium.net.TestBidirectionalStreamCallback.ResponseStep;
19 import org.chromium.net.impl.CronetBidirectionalStream; 18 import org.chromium.net.impl.CronetBidirectionalStream;
20 19
21 import java.nio.ByteBuffer; 20 import java.nio.ByteBuffer;
22 import java.util.AbstractMap; 21 import java.util.AbstractMap;
23 import java.util.ArrayList; 22 import java.util.ArrayList;
24 import java.util.Arrays; 23 import java.util.Arrays;
25 import java.util.HashSet; 24 import java.util.HashSet;
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 219
221 @SmallTest 220 @SmallTest
222 @Feature({"Cronet"}) 221 @Feature({"Cronet"})
223 @OnlyRunNativeCronet 222 @OnlyRunNativeCronet
224 public void testSimplePost() throws Exception { 223 public void testSimplePost() throws Exception {
225 String url = Http2TestServer.getEchoStreamUrl(); 224 String url = Http2TestServer.getEchoStreamUrl();
226 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); 225 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback();
227 callback.addWriteData("Test String".getBytes()); 226 callback.addWriteData("Test String".getBytes());
228 callback.addWriteData("1234567890".getBytes()); 227 callback.addWriteData("1234567890".getBytes());
229 callback.addWriteData("woot!".getBytes()); 228 callback.addWriteData("woot!".getBytes());
230 TestExecutor testExecutor = new TestExecutor(); 229 TestRequestFinishedListener requestFinishedListener = new TestRequestFin ishedListener(1);
mgersh 2016/10/05 19:36:47 I think this is the only place that does new TestR
xunjieli 2016/10/06 03:51:47 Done.
231 TestRequestFinishedListener requestFinishedListener =
232 new TestRequestFinishedListener(testExecutor);
233 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); 230 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener);
234 // Create stream. 231 // Create stream.
235 BidirectionalStream stream = new BidirectionalStream 232 BidirectionalStream stream = new BidirectionalStream
236 .Builder(url, callback, callback.ge tExecutor(), 233 .Builder(url, callback, callback.ge tExecutor(),
237 mTestFramework.mCronetEngin e) 234 mTestFramework.mCronetEngin e)
238 .addHeader("foo", "bar") 235 .addHeader("foo", "bar")
239 .addHeader("empty", "") 236 .addHeader("empty", "")
240 .addHeader("Content-Type", "zebra") 237 .addHeader("Content-Type", "zebra")
241 .addRequestAnnotation(this) 238 .addRequestAnnotation(this)
242 .addRequestAnnotation("request anno tation") 239 .addRequestAnnotation("request anno tation")
243 .build(); 240 .build();
244 stream.start(); 241 stream.start();
245 callback.blockForDone(); 242 callback.blockForDone();
246 testExecutor.runAllTasks();
247 assertTrue(stream.isDone()); 243 assertTrue(stream.isDone());
244 requestFinishedListener.blockUntilDone();
248 RequestFinishedInfo finishedInfo = requestFinishedListener.getRequestInf o(); 245 RequestFinishedInfo finishedInfo = requestFinishedListener.getRequestInf o();
249 assertNotNull("RequestFinishedInfo.Listener must be called", finishedInf o); 246 assertNotNull("RequestFinishedInfo.Listener must be called", finishedInf o);
250 assertEquals(url, finishedInfo.getUrl()); 247 assertEquals(url, finishedInfo.getUrl());
251 assertEquals(newHashSet("request annotation", this), 248 assertEquals(newHashSet("request annotation", this),
252 new HashSet<Object>(finishedInfo.getAnnotations())); 249 new HashSet<Object>(finishedInfo.getAnnotations()));
253 assertNotNull(finishedInfo.getResponseInfo()); 250 assertNotNull(finishedInfo.getResponseInfo());
254 // TODO(xunjieli): Check other fields once metrics support is in crbug.c om/648346. 251 // TODO(xunjieli): Check other fields once metrics support is in crbug.c om/648346.
mgersh 2016/10/05 19:36:47 Now would be a good time to add tests for the timi
xunjieli 2016/10/06 03:51:47 Done.
255 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 252 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
256 assertEquals("Test String1234567890woot!", callback.mResponseAsString); 253 assertEquals("Test String1234567890woot!", callback.mResponseAsString);
257 assertEquals("bar", callback.mResponseInfo.getAllHeaders().get("echo-foo ").get(0)); 254 assertEquals("bar", callback.mResponseInfo.getAllHeaders().get("echo-foo ").get(0));
258 assertEquals("", callback.mResponseInfo.getAllHeaders().get("echo-empty" ).get(0)); 255 assertEquals("", callback.mResponseInfo.getAllHeaders().get("echo-empty" ).get(0));
259 assertEquals( 256 assertEquals(
260 "zebra", callback.mResponseInfo.getAllHeaders().get("echo-conten t-type").get(0)); 257 "zebra", callback.mResponseInfo.getAllHeaders().get("echo-conten t-type").get(0));
261 } 258 }
262 259
263 @SmallTest 260 @SmallTest
264 @Feature({"Cronet"}) 261 @Feature({"Cronet"})
(...skipping 1124 matching lines...) Expand 10 before | Expand all | Expand 10 after
1389 private static String bufferContentsToString(ByteBuffer byteBuffer, int star t, int end) { 1386 private static String bufferContentsToString(ByteBuffer byteBuffer, int star t, int end) {
1390 // Use a duplicate to avoid modifying byteBuffer. 1387 // Use a duplicate to avoid modifying byteBuffer.
1391 ByteBuffer duplicate = byteBuffer.duplicate(); 1388 ByteBuffer duplicate = byteBuffer.duplicate();
1392 duplicate.position(start); 1389 duplicate.position(start);
1393 duplicate.limit(end); 1390 duplicate.limit(end);
1394 byte[] contents = new byte[duplicate.remaining()]; 1391 byte[] contents = new byte[duplicate.remaining()];
1395 duplicate.get(contents); 1392 duplicate.get(contents);
1396 return new String(contents); 1393 return new String(contents);
1397 } 1394 }
1398 } 1395 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698