| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 android.test.suitebuilder.annotation.LargeTest; | 7 import android.test.suitebuilder.annotation.LargeTest; |
| 8 import android.test.suitebuilder.annotation.SmallTest; | 8 import android.test.suitebuilder.annotation.SmallTest; |
| 9 | 9 |
| 10 import org.chromium.base.annotations.SuppressFBWarnings; | 10 import org.chromium.base.annotations.SuppressFBWarnings; |
| 11 import org.chromium.base.test.util.Feature; | 11 import org.chromium.base.test.util.Feature; |
| 12 import org.chromium.net.test.FailurePhase; | 12 import org.chromium.net.test.FailurePhase; |
| 13 | 13 |
| 14 import java.io.IOException; | 14 import java.io.IOException; |
| 15 import java.nio.ByteBuffer; | 15 import java.nio.ByteBuffer; |
| 16 import java.util.HashMap; | 16 import java.util.HashMap; |
| 17 import java.util.List; | 17 import java.util.List; |
| 18 import java.util.concurrent.Executors; | 18 import java.util.concurrent.Executors; |
| 19 | 19 |
| 20 /** | 20 /** |
| 21 * Tests making requests using {@link ChromiumUrlRequest}. | 21 * Tests making requests using {@link ChromiumUrlRequest}. |
| 22 */ | 22 */ |
| 23 public class ChromiumUrlRequestTest extends CronetTestBase { | 23 public class ChromiumUrlRequestTest extends CronetTestBase { |
| 24 private CronetTestActivity mActivity; | 24 private CronetTestFramework mTestFramework; |
| 25 private TestHttpUrlRequestListener mListener; | 25 private TestHttpUrlRequestListener mListener; |
| 26 private HttpUrlRequest mRequest; | 26 private HttpUrlRequest mRequest; |
| 27 | 27 |
| 28 @Override | 28 @Override |
| 29 protected void setUp() throws Exception { | 29 protected void setUp() throws Exception { |
| 30 super.setUp(); | 30 super.setUp(); |
| 31 mActivity = launchCronetTestApp(); | 31 mTestFramework = startCronetTestFramework(); |
| 32 assertTrue(NativeTestServer.startNativeTestServer( | 32 assertTrue(NativeTestServer.startNativeTestServer(getContext())); |
| 33 getInstrumentation().getTargetContext())); | |
| 34 MockUrlRequestJobFactory.setUp(); | 33 MockUrlRequestJobFactory.setUp(); |
| 35 } | 34 } |
| 36 | 35 |
| 37 @Override | 36 @Override |
| 38 protected void tearDown() throws Exception { | 37 protected void tearDown() throws Exception { |
| 39 NativeTestServer.shutdownNativeTestServer(); | 38 NativeTestServer.shutdownNativeTestServer(); |
| 40 super.tearDown(); | 39 super.tearDown(); |
| 41 } | 40 } |
| 42 | 41 |
| 43 // Helper function to create a HttpUrlRequest with the specified url. | 42 // Helper function to create a HttpUrlRequest with the specified url. |
| 44 private void createRequestAndWaitForComplete( | 43 private void createRequestAndWaitForComplete( |
| 45 String url, boolean disableRedirects) { | 44 String url, boolean disableRedirects) { |
| 46 HashMap<String, String> headers = new HashMap<String, String>(); | 45 HashMap<String, String> headers = new HashMap<String, String>(); |
| 47 mListener = new TestHttpUrlRequestListener(); | 46 mListener = new TestHttpUrlRequestListener(); |
| 48 mRequest = mActivity.mRequestFactory.createRequest( | 47 mRequest = mTestFramework.mRequestFactory.createRequest( |
| 49 url, | 48 url, HttpUrlRequest.REQUEST_PRIORITY_MEDIUM, headers, mListener)
; |
| 50 HttpUrlRequest.REQUEST_PRIORITY_MEDIUM, | |
| 51 headers, | |
| 52 mListener); | |
| 53 if (disableRedirects) { | 49 if (disableRedirects) { |
| 54 mRequest.disableRedirects(); | 50 mRequest.disableRedirects(); |
| 55 } | 51 } |
| 56 mRequest.start(); | 52 mRequest.start(); |
| 57 mListener.blockForComplete(); | 53 mListener.blockForComplete(); |
| 58 } | 54 } |
| 59 | 55 |
| 60 /** | 56 /** |
| 61 * Helper method to check that we are not calling methods on the native | 57 * Helper method to check that we are not calling methods on the native |
| 62 * adapter after it has been destroyed. | 58 * adapter after it has been destroyed. |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 233 // WritableByteChannel.close if request is canceled from another | 229 // WritableByteChannel.close if request is canceled from another |
| 234 // thread. | 230 // thread. |
| 235 for (int i = 0; i < 100; ++i) { | 231 for (int i = 0; i < 100; ++i) { |
| 236 HashMap<String, String> headers = new HashMap<String, String>(); | 232 HashMap<String, String> headers = new HashMap<String, String>(); |
| 237 TestByteChannel channel = new TestByteChannel(); | 233 TestByteChannel channel = new TestByteChannel(); |
| 238 TestHttpUrlRequestListener listener = | 234 TestHttpUrlRequestListener listener = |
| 239 new TestHttpUrlRequestListener(); | 235 new TestHttpUrlRequestListener(); |
| 240 | 236 |
| 241 // Create request. | 237 // Create request. |
| 242 final HttpUrlRequest request = | 238 final HttpUrlRequest request = |
| 243 mActivity.mRequestFactory.createRequest( | 239 mTestFramework.mRequestFactory.createRequest(NativeTestServe
r.getSuccessURL(), |
| 244 NativeTestServer.getSuccessURL(), | 240 HttpUrlRequest.REQUEST_PRIORITY_LOW, headers, channe
l, listener); |
| 245 HttpUrlRequest.REQUEST_PRIORITY_LOW, headers, | |
| 246 channel, listener); | |
| 247 request.start(); | 241 request.start(); |
| 248 listener.blockForStart(); | 242 listener.blockForStart(); |
| 249 Runnable cancelTask = new Runnable() { | 243 Runnable cancelTask = new Runnable() { |
| 250 public void run() { | 244 public void run() { |
| 251 request.cancel(); | 245 request.cancel(); |
| 252 } | 246 } |
| 253 }; | 247 }; |
| 254 Executors.newCachedThreadPool().execute(cancelTask); | 248 Executors.newCachedThreadPool().execute(cancelTask); |
| 255 listener.blockForComplete(); | 249 listener.blockForComplete(); |
| 256 assertFalse(channel.isOpen()); | 250 assertFalse(channel.isOpen()); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 269 TestByteChannel channel = new TestByteChannel(); | 263 TestByteChannel channel = new TestByteChannel(); |
| 270 TestHttpUrlRequestListener listener = new TestHttpUrlRequestListener(); | 264 TestHttpUrlRequestListener listener = new TestHttpUrlRequestListener(); |
| 271 | 265 |
| 272 String data = "MyBigFunkyData"; | 266 String data = "MyBigFunkyData"; |
| 273 int dataLength = data.length(); | 267 int dataLength = data.length(); |
| 274 int repeatCount = 10000; | 268 int repeatCount = 10000; |
| 275 String mockUrl = MockUrlRequestJobFactory.getMockUrlForData(data, | 269 String mockUrl = MockUrlRequestJobFactory.getMockUrlForData(data, |
| 276 repeatCount); | 270 repeatCount); |
| 277 | 271 |
| 278 // Create request. | 272 // Create request. |
| 279 final HttpUrlRequest request = | 273 final HttpUrlRequest request = mTestFramework.mRequestFactory.createRequ
est( |
| 280 mActivity.mRequestFactory.createRequest( | 274 mockUrl, HttpUrlRequest.REQUEST_PRIORITY_LOW, headers, channel,
listener); |
| 281 mockUrl, | |
| 282 HttpUrlRequest.REQUEST_PRIORITY_LOW, headers, | |
| 283 channel, listener); | |
| 284 // Channel will cancel the request from the network thread during the | 275 // Channel will cancel the request from the network thread during the |
| 285 // first write. | 276 // first write. |
| 286 channel.setRequestToCancelOnWrite(request); | 277 channel.setRequestToCancelOnWrite(request); |
| 287 request.start(); | 278 request.start(); |
| 288 listener.blockForComplete(); | 279 listener.blockForComplete(); |
| 289 assertTrue(request.isCanceled()); | 280 assertTrue(request.isCanceled()); |
| 290 assertFalse(channel.isOpen()); | 281 assertFalse(channel.isOpen()); |
| 291 // Test that ChromiumUrlRequest caches information which is available | 282 // Test that ChromiumUrlRequest caches information which is available |
| 292 // after the native request adapter has been destroyed. | 283 // after the native request adapter has been destroyed. |
| 293 // Since the request is canceled after onResponseStarted, status code | 284 // Since the request is canceled after onResponseStarted, status code |
| (...skipping 12 matching lines...) Expand all Loading... |
| 306 String mockUrl = MockUrlRequestJobFactory.getMockUrlForData(data, | 297 String mockUrl = MockUrlRequestJobFactory.getMockUrlForData(data, |
| 307 repeatCount); | 298 repeatCount); |
| 308 createRequestAndWaitForComplete(mockUrl, false); | 299 createRequestAndWaitForComplete(mockUrl, false); |
| 309 assertEquals(mockUrl, mListener.mUrl); | 300 assertEquals(mockUrl, mListener.mUrl); |
| 310 for (int i = 0; i < repeatCount; ++i) { | 301 for (int i = 0; i < repeatCount; ++i) { |
| 311 assertEquals(data, mListener.mResponseAsString.substring( | 302 assertEquals(data, mListener.mResponseAsString.substring( |
| 312 dataLength * i, dataLength * (i + 1))); | 303 dataLength * i, dataLength * (i + 1))); |
| 313 } | 304 } |
| 314 } | 305 } |
| 315 } | 306 } |
| OLD | NEW |