| 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.content.Context; | 7 import android.content.Context; |
| 8 import android.content.ContextWrapper; | 8 import android.content.ContextWrapper; |
| 9 import android.os.ConditionVariable; | 9 import android.os.ConditionVariable; |
| 10 import android.os.Handler; | 10 import android.os.Handler; |
| 11 import android.os.Looper; | 11 import android.os.Looper; |
| 12 import android.os.Process; | 12 import android.os.Process; |
| 13 import android.support.test.filters.SmallTest; | 13 import android.support.test.filters.SmallTest; |
| 14 | 14 |
| 15 import org.json.JSONObject; | 15 import org.json.JSONObject; |
| 16 | 16 |
| 17 import static org.chromium.net.CronetEngine.Builder.HTTP_CACHE_IN_MEMORY; | 17 import static org.chromium.net.CronetEngine.Builder.HTTP_CACHE_IN_MEMORY; |
| 18 | 18 |
| 19 import org.chromium.base.FileUtils; | 19 import org.chromium.base.FileUtils; |
| 20 import org.chromium.base.PathUtils; | 20 import org.chromium.base.PathUtils; |
| 21 import org.chromium.base.annotations.JNINamespace; | 21 import org.chromium.base.annotations.JNINamespace; |
| 22 import org.chromium.base.test.util.Feature; | 22 import org.chromium.base.test.util.Feature; |
| 23 import org.chromium.net.TestUrlRequestCallback.ResponseStep; | 23 import org.chromium.net.TestUrlRequestCallback.ResponseStep; |
| 24 import org.chromium.net.impl.CronetEngineBase; | |
| 25 import org.chromium.net.impl.CronetEngineBuilderImpl; | 24 import org.chromium.net.impl.CronetEngineBuilderImpl; |
| 26 import org.chromium.net.impl.CronetLibraryLoader; | 25 import org.chromium.net.impl.CronetLibraryLoader; |
| 27 import org.chromium.net.impl.CronetUrlRequestContext; | 26 import org.chromium.net.impl.CronetUrlRequestContext; |
| 28 import org.chromium.net.test.EmbeddedTestServer; | 27 import org.chromium.net.test.EmbeddedTestServer; |
| 29 | 28 |
| 30 import java.io.BufferedReader; | 29 import java.io.BufferedReader; |
| 31 import java.io.File; | 30 import java.io.File; |
| 32 import java.io.FileReader; | 31 import java.io.FileReader; |
| 33 import java.net.URL; | 32 import java.net.URL; |
| 34 import java.nio.ByteBuffer; | 33 import java.nio.ByteBuffer; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 mUrl404 = mTestServer.getURL("/echo?status=404"); | 65 mUrl404 = mTestServer.getURL("/echo?status=404"); |
| 67 mUrl500 = mTestServer.getURL("/echo?status=500"); | 66 mUrl500 = mTestServer.getURL("/echo?status=500"); |
| 68 } | 67 } |
| 69 | 68 |
| 70 @Override | 69 @Override |
| 71 protected void tearDown() throws Exception { | 70 protected void tearDown() throws Exception { |
| 72 mTestServer.stopAndDestroyServer(); | 71 mTestServer.stopAndDestroyServer(); |
| 73 super.tearDown(); | 72 super.tearDown(); |
| 74 } | 73 } |
| 75 | 74 |
| 76 static class RequestThread extends Thread { | 75 class RequestThread extends Thread { |
| 77 public TestUrlRequestCallback mCallback; | 76 public TestUrlRequestCallback mCallback; |
| 78 | 77 |
| 79 final CronetTestFramework mTestFramework; | |
| 80 final String mUrl; | 78 final String mUrl; |
| 81 final ConditionVariable mRunBlocker; | 79 final ConditionVariable mRunBlocker; |
| 82 | 80 |
| 83 public RequestThread( | 81 public RequestThread(String url, ConditionVariable runBlocker) { |
| 84 CronetTestFramework testFramework, String url, ConditionVariable
runBlocker) { | |
| 85 mTestFramework = testFramework; | |
| 86 mUrl = url; | 82 mUrl = url; |
| 87 mRunBlocker = runBlocker; | 83 mRunBlocker = runBlocker; |
| 88 } | 84 } |
| 89 | 85 |
| 90 @Override | 86 @Override |
| 91 public void run() { | 87 public void run() { |
| 92 mRunBlocker.block(); | 88 mRunBlocker.block(); |
| 93 CronetEngine cronetEngine = mTestFramework.initCronetEngine(); | 89 CronetEngine cronetEngine = new CronetEngine.Builder(getContext()).b
uild(); |
| 94 mCallback = new TestUrlRequestCallback(); | 90 mCallback = new TestUrlRequestCallback(); |
| 95 UrlRequest.Builder urlRequestBuilder = | 91 UrlRequest.Builder urlRequestBuilder = |
| 96 cronetEngine.newUrlRequestBuilder(mUrl, mCallback, mCallback
.getExecutor()); | 92 cronetEngine.newUrlRequestBuilder(mUrl, mCallback, mCallback
.getExecutor()); |
| 97 urlRequestBuilder.build().start(); | 93 urlRequestBuilder.build().start(); |
| 98 mCallback.blockForDone(); | 94 mCallback.blockForDone(); |
| 99 } | 95 } |
| 100 } | 96 } |
| 101 | 97 |
| 102 /** | 98 /** |
| 103 * Callback that shutdowns the request context when request has succeeded | 99 * Callback that shutdowns the request context when request has succeeded |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 @SuppressWarnings("deprecation") | 132 @SuppressWarnings("deprecation") |
| 137 public void testConfigUserAgent() throws Exception { | 133 public void testConfigUserAgent() throws Exception { |
| 138 String userAgentName = "User-Agent"; | 134 String userAgentName = "User-Agent"; |
| 139 String userAgentValue = "User-Agent-Value"; | 135 String userAgentValue = "User-Agent-Value"; |
| 140 ExperimentalCronetEngine.Builder cronetEngineBuilder = | 136 ExperimentalCronetEngine.Builder cronetEngineBuilder = |
| 141 new ExperimentalCronetEngine.Builder(getContext()); | 137 new ExperimentalCronetEngine.Builder(getContext()); |
| 142 if (testingJavaImpl()) { | 138 if (testingJavaImpl()) { |
| 143 cronetEngineBuilder = createJavaEngineBuilder(); | 139 cronetEngineBuilder = createJavaEngineBuilder(); |
| 144 } | 140 } |
| 145 cronetEngineBuilder.setUserAgent(userAgentValue); | 141 cronetEngineBuilder.setUserAgent(userAgentValue); |
| 146 final CronetTestFramework testFramework = | 142 final CronetEngine cronetEngine = cronetEngineBuilder.build(); |
| 147 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(mUrl, cron
etEngineBuilder); | |
| 148 NativeTestServer.shutdownNativeTestServer(); // startNativeTestServer re
turns false if it's | 143 NativeTestServer.shutdownNativeTestServer(); // startNativeTestServer re
turns false if it's |
| 149 // already running | 144 // already running |
| 150 assertTrue(NativeTestServer.startNativeTestServer(getContext())); | 145 assertTrue(NativeTestServer.startNativeTestServer(getContext())); |
| 151 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 146 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 152 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr
lRequestBuilder( | 147 UrlRequest.Builder urlRequestBuilder = cronetEngine.newUrlRequestBuilder
( |
| 153 NativeTestServer.getEchoHeaderURL(userAgentName), callback, call
back.getExecutor()); | 148 NativeTestServer.getEchoHeaderURL(userAgentName), callback, call
back.getExecutor()); |
| 154 urlRequestBuilder.build().start(); | 149 urlRequestBuilder.build().start(); |
| 155 callback.blockForDone(); | 150 callback.blockForDone(); |
| 156 assertEquals(userAgentValue, callback.mResponseAsString); | 151 assertEquals(userAgentValue, callback.mResponseAsString); |
| 157 } | 152 } |
| 158 | 153 |
| 159 @SmallTest | 154 @SmallTest |
| 160 @Feature({"Cronet"}) | 155 @Feature({"Cronet"}) |
| 161 // TODO: Remove the annotation after fixing http://crbug.com/637979 & http:/
/crbug.com/637972 | 156 // TODO: Remove the annotation after fixing http://crbug.com/637979 & http:/
/crbug.com/637972 |
| 162 @OnlyRunNativeCronet | 157 @OnlyRunNativeCronet |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 callback.startNextRead(urlRequest); | 201 callback.startNextRead(urlRequest); |
| 207 callback.blockForDone(); | 202 callback.blockForDone(); |
| 208 callback.blockForCallbackToComplete(); | 203 callback.blockForCallbackToComplete(); |
| 209 callback.shutdownExecutor(); | 204 callback.shutdownExecutor(); |
| 210 } | 205 } |
| 211 | 206 |
| 212 @SmallTest | 207 @SmallTest |
| 213 @Feature({"Cronet"}) | 208 @Feature({"Cronet"}) |
| 214 @OnlyRunNativeCronet | 209 @OnlyRunNativeCronet |
| 215 public void testShutdownDuringInit() throws Exception { | 210 public void testShutdownDuringInit() throws Exception { |
| 216 final CronetTestFramework testFramework = startCronetTestFrameworkAndSki
pLibraryInit(); | |
| 217 final ConditionVariable block = new ConditionVariable(false); | 211 final ConditionVariable block = new ConditionVariable(false); |
| 218 | 212 |
| 219 // Post a task to main thread to block until shutdown is called to test | 213 // Post a task to main thread to block until shutdown is called to test |
| 220 // scenario when shutdown is called right after construction before | 214 // scenario when shutdown is called right after construction before |
| 221 // context is fully initialized on the main thread. | 215 // context is fully initialized on the main thread. |
| 222 Runnable blockingTask = new Runnable() { | 216 Runnable blockingTask = new Runnable() { |
| 223 @Override | 217 @Override |
| 224 public void run() { | 218 public void run() { |
| 225 try { | 219 try { |
| 226 block.block(); | 220 block.block(); |
| 227 } catch (Exception e) { | 221 } catch (Exception e) { |
| 228 fail("Caught " + e.getMessage()); | 222 fail("Caught " + e.getMessage()); |
| 229 } | 223 } |
| 230 } | 224 } |
| 231 }; | 225 }; |
| 232 // Ensure that test is not running on the main thread. | 226 // Ensure that test is not running on the main thread. |
| 233 assertTrue(Looper.getMainLooper() != Looper.myLooper()); | 227 assertTrue(Looper.getMainLooper() != Looper.myLooper()); |
| 234 new Handler(Looper.getMainLooper()).post(blockingTask); | 228 new Handler(Looper.getMainLooper()).post(blockingTask); |
| 235 | 229 |
| 236 // Create new request context, but its initialization on the main thread | 230 // Create new request context, but its initialization on the main thread |
| 237 // will be stuck behind blockingTask. | 231 // will be stuck behind blockingTask. |
| 238 final CronetUrlRequestContext cronetEngine = | 232 final CronetUrlRequestContext cronetEngine = |
| 239 (CronetUrlRequestContext) testFramework.initCronetEngine(); | 233 (CronetUrlRequestContext) new CronetEngine.Builder(getContext())
.build(); |
| 240 // Unblock the main thread, so context gets initialized and shutdown on | 234 // Unblock the main thread, so context gets initialized and shutdown on |
| 241 // it. | 235 // it. |
| 242 block.open(); | 236 block.open(); |
| 243 // Shutdown will wait for init to complete on main thread. | 237 // Shutdown will wait for init to complete on main thread. |
| 244 cronetEngine.shutdown(); | 238 cronetEngine.shutdown(); |
| 245 // Verify that context is shutdown. | 239 // Verify that context is shutdown. |
| 246 try { | 240 try { |
| 247 cronetEngine.getUrlRequestContextAdapter(); | 241 cronetEngine.getUrlRequestContextAdapter(); |
| 248 fail("Should throw an exception."); | 242 fail("Should throw an exception."); |
| 249 } catch (Exception e) { | 243 } catch (Exception e) { |
| 250 assertEquals("Engine is shut down.", e.getMessage()); | 244 assertEquals("Engine is shut down.", e.getMessage()); |
| 251 } | 245 } |
| 252 } | 246 } |
| 253 | 247 |
| 254 @SmallTest | 248 @SmallTest |
| 255 @Feature({"Cronet"}) | 249 @Feature({"Cronet"}) |
| 256 @OnlyRunNativeCronet | 250 @OnlyRunNativeCronet |
| 257 public void testInitAndShutdownOnMainThread() throws Exception { | 251 public void testInitAndShutdownOnMainThread() throws Exception { |
| 258 final CronetTestFramework testFramework = startCronetTestFrameworkAndSki
pLibraryInit(); | |
| 259 final ConditionVariable block = new ConditionVariable(false); | 252 final ConditionVariable block = new ConditionVariable(false); |
| 260 | 253 |
| 261 // Post a task to main thread to init and shutdown on the main thread. | 254 // Post a task to main thread to init and shutdown on the main thread. |
| 262 Runnable blockingTask = new Runnable() { | 255 Runnable blockingTask = new Runnable() { |
| 263 @Override | 256 @Override |
| 264 public void run() { | 257 public void run() { |
| 265 // Create new request context, loading the library. | 258 // Create new request context, loading the library. |
| 266 final CronetUrlRequestContext cronetEngine = | 259 final CronetUrlRequestContext cronetEngine = |
| 267 (CronetUrlRequestContext) testFramework.initCronetEngine
(); | 260 (CronetUrlRequestContext) new CronetEngine.Builder(getCo
ntext()).build(); |
| 268 // Shutdown right after init. | 261 // Shutdown right after init. |
| 269 cronetEngine.shutdown(); | 262 cronetEngine.shutdown(); |
| 270 // Verify that context is shutdown. | 263 // Verify that context is shutdown. |
| 271 try { | 264 try { |
| 272 cronetEngine.getUrlRequestContextAdapter(); | 265 cronetEngine.getUrlRequestContextAdapter(); |
| 273 fail("Should throw an exception."); | 266 fail("Should throw an exception."); |
| 274 } catch (Exception e) { | 267 } catch (Exception e) { |
| 275 assertEquals("Engine is shut down.", e.getMessage()); | 268 assertEquals("Engine is shut down.", e.getMessage()); |
| 276 } | 269 } |
| 277 block.open(); | 270 block.open(); |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 541 assertTrue(containsStringInNetLog(eventFile1, mUrl404)); | 534 assertTrue(containsStringInNetLog(eventFile1, mUrl404)); |
| 542 assertTrue(containsStringInNetLog(eventFile1, mUrl500)); | 535 assertTrue(containsStringInNetLog(eventFile1, mUrl500)); |
| 543 assertTrue(containsStringInNetLog(eventFile2, mUrl404)); | 536 assertTrue(containsStringInNetLog(eventFile2, mUrl404)); |
| 544 assertTrue(containsStringInNetLog(eventFile2, mUrl500)); | 537 assertTrue(containsStringInNetLog(eventFile2, mUrl500)); |
| 545 | 538 |
| 546 FileUtils.recursivelyDeleteFile(netLogDir1); | 539 FileUtils.recursivelyDeleteFile(netLogDir1); |
| 547 assertFalse(netLogDir1.exists()); | 540 assertFalse(netLogDir1.exists()); |
| 548 FileUtils.recursivelyDeleteFile(netLogDir2); | 541 FileUtils.recursivelyDeleteFile(netLogDir2); |
| 549 assertFalse(netLogDir2.exists()); | 542 assertFalse(netLogDir2.exists()); |
| 550 } | 543 } |
| 544 |
| 545 private CronetEngine createCronetEngineWithCache(int cacheType) { |
| 546 CronetEngine.Builder builder = new CronetEngine.Builder(getContext()); |
| 547 if (cacheType == CronetEngine.Builder.HTTP_CACHE_DISK) { |
| 548 builder.setStoragePath(getTestStorage(getContext())); |
| 549 } |
| 550 builder.enableHttpCache(cacheType, 100 * 1024); |
| 551 assertTrue(NativeTestServer.startNativeTestServer(getContext())); |
| 552 return builder.build(); |
| 553 } |
| 554 |
| 551 @SmallTest | 555 @SmallTest |
| 552 @Feature({"Cronet"}) | 556 @Feature({"Cronet"}) |
| 553 @OnlyRunNativeCronet | 557 @OnlyRunNativeCronet |
| 554 // Tests that if CronetEngine is shut down on the network thread, an appropr
iate exception | 558 // Tests that if CronetEngine is shut down on the network thread, an appropr
iate exception |
| 555 // is thrown. | 559 // is thrown. |
| 556 public void testShutDownEngineOnNetworkThread() throws Exception { | 560 public void testShutDownEngineOnNetworkThread() throws Exception { |
| 557 final CronetTestFramework testFramework = | 561 final CronetEngine cronetEngine = |
| 558 startCronetTestFrameworkWithCacheEnabled(CronetEngine.Builder.HT
TP_CACHE_DISK); | 562 createCronetEngineWithCache(CronetEngine.Builder.HTTP_CACHE_DISK
); |
| 559 String url = NativeTestServer.getFileURL("/cacheable.txt"); | 563 String url = NativeTestServer.getFileURL("/cacheable.txt"); |
| 560 // Make a request to a cacheable resource. | 564 // Make a request to a cacheable resource. |
| 561 checkRequestCaching(testFramework.mCronetEngine, url, false); | 565 checkRequestCaching(cronetEngine, url, false); |
| 562 | 566 |
| 563 final AtomicReference<Throwable> thrown = new AtomicReference<>(); | 567 final AtomicReference<Throwable> thrown = new AtomicReference<>(); |
| 564 // Shut down the server. | 568 // Shut down the server. |
| 565 NativeTestServer.shutdownNativeTestServer(); | 569 NativeTestServer.shutdownNativeTestServer(); |
| 566 class CancelUrlRequestCallback extends TestUrlRequestCallback { | 570 class CancelUrlRequestCallback extends TestUrlRequestCallback { |
| 567 @Override | 571 @Override |
| 568 public void onResponseStarted(UrlRequest request, UrlResponseInfo in
fo) { | 572 public void onResponseStarted(UrlRequest request, UrlResponseInfo in
fo) { |
| 569 super.onResponseStarted(request, info); | 573 super.onResponseStarted(request, info); |
| 570 request.cancel(); | 574 request.cancel(); |
| 571 // Shut down CronetEngine immediately after request is destroyed
. | 575 // Shut down CronetEngine immediately after request is destroyed
. |
| 572 try { | 576 try { |
| 573 testFramework.mCronetEngine.shutdown(); | 577 cronetEngine.shutdown(); |
| 574 } catch (Exception e) { | 578 } catch (Exception e) { |
| 575 thrown.set(e); | 579 thrown.set(e); |
| 576 } | 580 } |
| 577 } | 581 } |
| 578 | 582 |
| 579 @Override | 583 @Override |
| 580 public void onSucceeded(UrlRequest request, UrlResponseInfo info) { | 584 public void onSucceeded(UrlRequest request, UrlResponseInfo info) { |
| 581 // onSucceeded will not happen, because the request is canceled | 585 // onSucceeded will not happen, because the request is canceled |
| 582 // after sending first read and the executor is single threaded. | 586 // after sending first read and the executor is single threaded. |
| 583 throw new RuntimeException("Unexpected"); | 587 throw new RuntimeException("Unexpected"); |
| 584 } | 588 } |
| 585 | 589 |
| 586 @Override | 590 @Override |
| 587 public void onFailed(UrlRequest request, UrlResponseInfo info, Crone
tException error) { | 591 public void onFailed(UrlRequest request, UrlResponseInfo info, Crone
tException error) { |
| 588 throw new RuntimeException("Unexpected"); | 592 throw new RuntimeException("Unexpected"); |
| 589 } | 593 } |
| 590 } | 594 } |
| 591 Executor directExecutor = new Executor() { | 595 Executor directExecutor = new Executor() { |
| 592 @Override | 596 @Override |
| 593 public void execute(Runnable command) { | 597 public void execute(Runnable command) { |
| 594 command.run(); | 598 command.run(); |
| 595 } | 599 } |
| 596 }; | 600 }; |
| 597 CancelUrlRequestCallback callback = new CancelUrlRequestCallback(); | 601 CancelUrlRequestCallback callback = new CancelUrlRequestCallback(); |
| 598 callback.setAllowDirectExecutor(true); | 602 callback.setAllowDirectExecutor(true); |
| 599 UrlRequest.Builder urlRequestBuilder = | 603 UrlRequest.Builder urlRequestBuilder = |
| 600 testFramework.mCronetEngine.newUrlRequestBuilder(url, callback,
directExecutor); | 604 cronetEngine.newUrlRequestBuilder(url, callback, directExecutor)
; |
| 601 urlRequestBuilder.allowDirectExecutor(); | 605 urlRequestBuilder.allowDirectExecutor(); |
| 602 urlRequestBuilder.build().start(); | 606 urlRequestBuilder.build().start(); |
| 603 callback.blockForDone(); | 607 callback.blockForDone(); |
| 604 assertTrue(thrown.get() instanceof RuntimeException); | 608 assertTrue(thrown.get() instanceof RuntimeException); |
| 605 } | 609 } |
| 606 | 610 |
| 607 @SmallTest | 611 @SmallTest |
| 608 @Feature({"Cronet"}) | 612 @Feature({"Cronet"}) |
| 609 @OnlyRunNativeCronet | 613 @OnlyRunNativeCronet |
| 610 // Tests that if CronetEngine is shut down when reading from disk cache, | 614 // Tests that if CronetEngine is shut down when reading from disk cache, |
| 611 // there isn't a crash. See crbug.com/486120. | 615 // there isn't a crash. See crbug.com/486120. |
| 612 public void testShutDownEngineWhenReadingFromDiskCache() throws Exception { | 616 public void testShutDownEngineWhenReadingFromDiskCache() throws Exception { |
| 613 final CronetTestFramework testFramework = | 617 final CronetEngine cronetEngine = |
| 614 startCronetTestFrameworkWithCacheEnabled(CronetEngine.Builder.HT
TP_CACHE_DISK); | 618 createCronetEngineWithCache(CronetEngine.Builder.HTTP_CACHE_DISK
); |
| 615 String url = NativeTestServer.getFileURL("/cacheable.txt"); | 619 String url = NativeTestServer.getFileURL("/cacheable.txt"); |
| 616 // Make a request to a cacheable resource. | 620 // Make a request to a cacheable resource. |
| 617 checkRequestCaching(testFramework.mCronetEngine, url, false); | 621 checkRequestCaching(cronetEngine, url, false); |
| 618 | 622 |
| 619 // Shut down the server. | 623 // Shut down the server. |
| 620 NativeTestServer.shutdownNativeTestServer(); | 624 NativeTestServer.shutdownNativeTestServer(); |
| 621 class CancelUrlRequestCallback extends TestUrlRequestCallback { | 625 class CancelUrlRequestCallback extends TestUrlRequestCallback { |
| 622 @Override | 626 @Override |
| 623 public void onResponseStarted(UrlRequest request, UrlResponseInfo in
fo) { | 627 public void onResponseStarted(UrlRequest request, UrlResponseInfo in
fo) { |
| 624 super.onResponseStarted(request, info); | 628 super.onResponseStarted(request, info); |
| 625 request.cancel(); | 629 request.cancel(); |
| 626 // Shut down CronetEngine immediately after request is destroyed
. | 630 // Shut down CronetEngine immediately after request is destroyed
. |
| 627 testFramework.mCronetEngine.shutdown(); | 631 cronetEngine.shutdown(); |
| 628 } | 632 } |
| 629 | 633 |
| 630 @Override | 634 @Override |
| 631 public void onSucceeded(UrlRequest request, UrlResponseInfo info) { | 635 public void onSucceeded(UrlRequest request, UrlResponseInfo info) { |
| 632 // onSucceeded will not happen, because the request is canceled | 636 // onSucceeded will not happen, because the request is canceled |
| 633 // after sending first read and the executor is single threaded. | 637 // after sending first read and the executor is single threaded. |
| 634 throw new RuntimeException("Unexpected"); | 638 throw new RuntimeException("Unexpected"); |
| 635 } | 639 } |
| 636 | 640 |
| 637 @Override | 641 @Override |
| 638 public void onFailed(UrlRequest request, UrlResponseInfo info, Crone
tException error) { | 642 public void onFailed(UrlRequest request, UrlResponseInfo info, Crone
tException error) { |
| 639 throw new RuntimeException("Unexpected"); | 643 throw new RuntimeException("Unexpected"); |
| 640 } | 644 } |
| 641 } | 645 } |
| 642 CancelUrlRequestCallback callback = new CancelUrlRequestCallback(); | 646 CancelUrlRequestCallback callback = new CancelUrlRequestCallback(); |
| 643 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr
lRequestBuilder( | 647 UrlRequest.Builder urlRequestBuilder = |
| 644 url, callback, callback.getExecutor()); | 648 cronetEngine.newUrlRequestBuilder(url, callback, callback.getExe
cutor()); |
| 645 urlRequestBuilder.build().start(); | 649 urlRequestBuilder.build().start(); |
| 646 callback.blockForDone(); | 650 callback.blockForDone(); |
| 647 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 651 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 648 assertTrue(callback.mResponseInfo.wasCached()); | 652 assertTrue(callback.mResponseInfo.wasCached()); |
| 649 assertTrue(callback.mOnCanceledCalled); | 653 assertTrue(callback.mOnCanceledCalled); |
| 650 } | 654 } |
| 651 | 655 |
| 652 @SmallTest | 656 @SmallTest |
| 653 @Feature({"Cronet"}) | 657 @Feature({"Cronet"}) |
| 654 @OnlyRunNativeCronet | 658 @OnlyRunNativeCronet |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 892 private void makeRequestAndCheckStatus( | 896 private void makeRequestAndCheckStatus( |
| 893 CronetEngine engine, String url, int expectedStatusCode) { | 897 CronetEngine engine, String url, int expectedStatusCode) { |
| 894 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 898 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 895 UrlRequest request = | 899 UrlRequest request = |
| 896 engine.newUrlRequestBuilder(url, callback, callback.getExecutor(
)).build(); | 900 engine.newUrlRequestBuilder(url, callback, callback.getExecutor(
)).build(); |
| 897 request.start(); | 901 request.start(); |
| 898 callback.blockForDone(); | 902 callback.blockForDone(); |
| 899 assertEquals(expectedStatusCode, callback.mResponseInfo.getHttpStatusCod
e()); | 903 assertEquals(expectedStatusCode, callback.mResponseInfo.getHttpStatusCod
e()); |
| 900 } | 904 } |
| 901 | 905 |
| 902 private CronetTestFramework startCronetTestFrameworkWithCacheEnabled(int cac
heType) | |
| 903 throws Exception { | |
| 904 String cacheTypeString = ""; | |
| 905 if (cacheType == CronetEngine.Builder.HTTP_CACHE_DISK) { | |
| 906 cacheTypeString = CronetTestFramework.CACHE_DISK; | |
| 907 } else if (cacheType == CronetEngine.Builder.HTTP_CACHE_DISK_NO_HTTP) { | |
| 908 cacheTypeString = CronetTestFramework.CACHE_DISK_NO_HTTP; | |
| 909 } else if (cacheType == HTTP_CACHE_IN_MEMORY) { | |
| 910 cacheTypeString = CronetTestFramework.CACHE_IN_MEMORY; | |
| 911 } | |
| 912 String[] commandLineArgs = {CronetTestFramework.CACHE_KEY, cacheTypeStri
ng}; | |
| 913 CronetTestFramework testFramework = | |
| 914 startCronetTestFrameworkWithUrlAndCommandLineArgs(null, commandL
ineArgs); | |
| 915 assertTrue(NativeTestServer.startNativeTestServer(getContext())); | |
| 916 return testFramework; | |
| 917 } | |
| 918 | |
| 919 private void checkRequestCaching(CronetEngine engine, String url, boolean ex
pectCached) { | 906 private void checkRequestCaching(CronetEngine engine, String url, boolean ex
pectCached) { |
| 920 checkRequestCaching(engine, url, expectCached, false); | 907 checkRequestCaching(engine, url, expectCached, false); |
| 921 } | 908 } |
| 922 | 909 |
| 923 private void checkRequestCaching( | 910 private void checkRequestCaching( |
| 924 CronetEngine engine, String url, boolean expectCached, boolean disab
leCache) { | 911 CronetEngine engine, String url, boolean expectCached, boolean disab
leCache) { |
| 925 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 912 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 926 UrlRequest.Builder urlRequestBuilder = | 913 UrlRequest.Builder urlRequestBuilder = |
| 927 engine.newUrlRequestBuilder(url, callback, callback.getExecutor(
)); | 914 engine.newUrlRequestBuilder(url, callback, callback.getExecutor(
)); |
| 928 if (disableCache) { | 915 if (disableCache) { |
| 929 urlRequestBuilder.disableCache(); | 916 urlRequestBuilder.disableCache(); |
| 930 } | 917 } |
| 931 urlRequestBuilder.build().start(); | 918 urlRequestBuilder.build().start(); |
| 932 callback.blockForDone(); | 919 callback.blockForDone(); |
| 933 assertEquals(expectCached, callback.mResponseInfo.wasCached()); | 920 assertEquals(expectCached, callback.mResponseInfo.wasCached()); |
| 934 assertEquals("this is a cacheable file\n", callback.mResponseAsString); | 921 assertEquals("this is a cacheable file\n", callback.mResponseAsString); |
| 935 } | 922 } |
| 936 | 923 |
| 937 @SmallTest | 924 @SmallTest |
| 938 @Feature({"Cronet"}) | 925 @Feature({"Cronet"}) |
| 939 @OnlyRunNativeCronet | 926 @OnlyRunNativeCronet |
| 940 public void testEnableHttpCacheDisabled() throws Exception { | 927 public void testEnableHttpCacheDisabled() throws Exception { |
| 941 final CronetTestFramework testFramework = | 928 CronetEngine cronetEngine = |
| 942 startCronetTestFrameworkWithCacheEnabled(CronetEngine.Builder.HT
TP_CACHE_DISABLED); | 929 createCronetEngineWithCache(CronetEngine.Builder.HTTP_CACHE_DISA
BLED); |
| 943 String url = NativeTestServer.getFileURL("/cacheable.txt"); | 930 String url = NativeTestServer.getFileURL("/cacheable.txt"); |
| 944 checkRequestCaching(testFramework.mCronetEngine, url, false); | 931 checkRequestCaching(cronetEngine, url, false); |
| 945 checkRequestCaching(testFramework.mCronetEngine, url, false); | 932 checkRequestCaching(cronetEngine, url, false); |
| 946 checkRequestCaching(testFramework.mCronetEngine, url, false); | 933 checkRequestCaching(cronetEngine, url, false); |
| 947 } | 934 } |
| 948 | 935 |
| 949 @SmallTest | 936 @SmallTest |
| 950 @Feature({"Cronet"}) | 937 @Feature({"Cronet"}) |
| 951 public void testEnableHttpCacheInMemory() throws Exception { | 938 public void testEnableHttpCacheInMemory() throws Exception { |
| 952 final CronetTestFramework testFramework = | 939 CronetEngine cronetEngine = |
| 953 startCronetTestFrameworkWithCacheEnabled(HTTP_CACHE_IN_MEMORY); | 940 createCronetEngineWithCache(CronetEngine.Builder.HTTP_CACHE_IN_M
EMORY); |
| 954 String url = NativeTestServer.getFileURL("/cacheable.txt"); | 941 String url = NativeTestServer.getFileURL("/cacheable.txt"); |
| 955 checkRequestCaching(testFramework.mCronetEngine, url, false); | 942 checkRequestCaching(cronetEngine, url, false); |
| 956 checkRequestCaching(testFramework.mCronetEngine, url, true); | 943 checkRequestCaching(cronetEngine, url, true); |
| 957 NativeTestServer.shutdownNativeTestServer(); | 944 NativeTestServer.shutdownNativeTestServer(); |
| 958 checkRequestCaching(testFramework.mCronetEngine, url, true); | 945 checkRequestCaching(cronetEngine, url, true); |
| 959 } | 946 } |
| 960 | 947 |
| 961 @SmallTest | 948 @SmallTest |
| 962 @Feature({"Cronet"}) | 949 @Feature({"Cronet"}) |
| 963 public void testEnableHttpCacheDisk() throws Exception { | 950 public void testEnableHttpCacheDisk() throws Exception { |
| 964 final CronetTestFramework testFramework = | 951 CronetEngine cronetEngine = |
| 965 startCronetTestFrameworkWithCacheEnabled(CronetEngine.Builder.HT
TP_CACHE_DISK); | 952 createCronetEngineWithCache(CronetEngine.Builder.HTTP_CACHE_DISK
); |
| 966 String url = NativeTestServer.getFileURL("/cacheable.txt"); | 953 String url = NativeTestServer.getFileURL("/cacheable.txt"); |
| 967 checkRequestCaching(testFramework.mCronetEngine, url, false); | 954 checkRequestCaching(cronetEngine, url, false); |
| 968 checkRequestCaching(testFramework.mCronetEngine, url, true); | 955 checkRequestCaching(cronetEngine, url, true); |
| 969 NativeTestServer.shutdownNativeTestServer(); | 956 NativeTestServer.shutdownNativeTestServer(); |
| 970 checkRequestCaching(testFramework.mCronetEngine, url, true); | 957 checkRequestCaching(cronetEngine, url, true); |
| 971 } | 958 } |
| 972 | 959 |
| 973 @SmallTest | 960 @SmallTest |
| 974 @Feature({"Cronet"}) | 961 @Feature({"Cronet"}) |
| 975 @OnlyRunNativeCronet | 962 @OnlyRunNativeCronet |
| 976 public void testEnableHttpCacheDiskNoHttp() throws Exception { | 963 public void testEnableHttpCacheDiskNoHttp() throws Exception { |
| 977 final CronetTestFramework testFramework = | 964 // TODO(pauljensen): This should be testing HTTP_CACHE_DISK_NO_HTTP. |
| 978 startCronetTestFrameworkWithCacheEnabled(CronetEngine.Builder.HT
TP_CACHE_DISABLED); | 965 CronetEngine cronetEngine = |
| 966 createCronetEngineWithCache(CronetEngine.Builder.HTTP_CACHE_DISA
BLED); |
| 979 String url = NativeTestServer.getFileURL("/cacheable.txt"); | 967 String url = NativeTestServer.getFileURL("/cacheable.txt"); |
| 980 checkRequestCaching(testFramework.mCronetEngine, url, false); | 968 checkRequestCaching(cronetEngine, url, false); |
| 981 checkRequestCaching(testFramework.mCronetEngine, url, false); | 969 checkRequestCaching(cronetEngine, url, false); |
| 982 checkRequestCaching(testFramework.mCronetEngine, url, false); | 970 checkRequestCaching(cronetEngine, url, false); |
| 983 } | 971 } |
| 984 | 972 |
| 985 @SmallTest | 973 @SmallTest |
| 986 @Feature({"Cronet"}) | 974 @Feature({"Cronet"}) |
| 987 public void testDisableCache() throws Exception { | 975 public void testDisableCache() throws Exception { |
| 988 final CronetTestFramework testFramework = | 976 CronetEngine cronetEngine = |
| 989 startCronetTestFrameworkWithCacheEnabled(CronetEngine.Builder.HT
TP_CACHE_DISK); | 977 createCronetEngineWithCache(CronetEngine.Builder.HTTP_CACHE_DISK
); |
| 990 String url = NativeTestServer.getFileURL("/cacheable.txt"); | 978 String url = NativeTestServer.getFileURL("/cacheable.txt"); |
| 991 | 979 |
| 992 // When cache is disabled, making a request does not write to the cache. | 980 // When cache is disabled, making a request does not write to the cache. |
| 993 checkRequestCaching(testFramework.mCronetEngine, url, false, true /** di
sable cache */); | 981 checkRequestCaching(cronetEngine, url, false, true /** disable cache */)
; |
| 994 checkRequestCaching(testFramework.mCronetEngine, url, false); | 982 checkRequestCaching(cronetEngine, url, false); |
| 995 | 983 |
| 996 // When cache is enabled, the second request is cached. | 984 // When cache is enabled, the second request is cached. |
| 997 checkRequestCaching(testFramework.mCronetEngine, url, false, true /** di
sable cache */); | 985 checkRequestCaching(cronetEngine, url, false, true /** disable cache */)
; |
| 998 checkRequestCaching(testFramework.mCronetEngine, url, true); | 986 checkRequestCaching(cronetEngine, url, true); |
| 999 | 987 |
| 1000 // Shut down the server, next request should have a cached response. | 988 // Shut down the server, next request should have a cached response. |
| 1001 NativeTestServer.shutdownNativeTestServer(); | 989 NativeTestServer.shutdownNativeTestServer(); |
| 1002 checkRequestCaching(testFramework.mCronetEngine, url, true); | 990 checkRequestCaching(cronetEngine, url, true); |
| 1003 | 991 |
| 1004 // Cache is disabled after server is shut down, request should fail. | 992 // Cache is disabled after server is shut down, request should fail. |
| 1005 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 993 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 1006 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr
lRequestBuilder( | 994 UrlRequest.Builder urlRequestBuilder = |
| 1007 url, callback, callback.getExecutor()); | 995 cronetEngine.newUrlRequestBuilder(url, callback, callback.getExe
cutor()); |
| 1008 urlRequestBuilder.disableCache(); | 996 urlRequestBuilder.disableCache(); |
| 1009 urlRequestBuilder.build().start(); | 997 urlRequestBuilder.build().start(); |
| 1010 callback.blockForDone(); | 998 callback.blockForDone(); |
| 1011 assertNotNull(callback.mError); | 999 assertNotNull(callback.mError); |
| 1012 assertContains("Exception in CronetUrlRequest: net::ERR_CONNECTION_REFUS
ED", | 1000 assertContains("Exception in CronetUrlRequest: net::ERR_CONNECTION_REFUS
ED", |
| 1013 callback.mError.getMessage()); | 1001 callback.mError.getMessage()); |
| 1014 } | 1002 } |
| 1015 | 1003 |
| 1016 @SmallTest | 1004 @SmallTest |
| 1017 @Feature({"Cronet"}) | 1005 @Feature({"Cronet"}) |
| 1018 public void testEnableHttpCacheDiskNewEngine() throws Exception { | 1006 public void testEnableHttpCacheDiskNewEngine() throws Exception { |
| 1019 final CronetTestFramework testFramework = | 1007 CronetEngine cronetEngine = |
| 1020 startCronetTestFrameworkWithCacheEnabled(CronetEngine.Builder.HT
TP_CACHE_DISK); | 1008 createCronetEngineWithCache(CronetEngine.Builder.HTTP_CACHE_DISK
); |
| 1021 String url = NativeTestServer.getFileURL("/cacheable.txt"); | 1009 String url = NativeTestServer.getFileURL("/cacheable.txt"); |
| 1022 checkRequestCaching(testFramework.mCronetEngine, url, false); | 1010 checkRequestCaching(cronetEngine, url, false); |
| 1023 checkRequestCaching(testFramework.mCronetEngine, url, true); | 1011 checkRequestCaching(cronetEngine, url, true); |
| 1024 NativeTestServer.shutdownNativeTestServer(); | 1012 NativeTestServer.shutdownNativeTestServer(); |
| 1025 checkRequestCaching(testFramework.mCronetEngine, url, true); | 1013 checkRequestCaching(cronetEngine, url, true); |
| 1026 | 1014 |
| 1027 // Shutdown original context and create another that uses the same cache
. | 1015 // Shutdown original context and create another that uses the same cache
. |
| 1028 testFramework.mCronetEngine.shutdown(); | 1016 cronetEngine.shutdown(); |
| 1029 testFramework.mCronetEngine = | 1017 cronetEngine = enableDiskCache(new CronetEngine.Builder(getContext())).b
uild(); |
| 1030 (CronetEngineBase) testFramework.getCronetEngineBuilder().build(
); | 1018 checkRequestCaching(cronetEngine, url, true); |
| 1031 checkRequestCaching(testFramework.mCronetEngine, url, true); | |
| 1032 } | 1019 } |
| 1033 | 1020 |
| 1034 @SmallTest | 1021 @SmallTest |
| 1035 @Feature({"Cronet"}) | 1022 @Feature({"Cronet"}) |
| 1036 public void testInitEngineAndStartRequest() { | 1023 public void testInitEngineAndStartRequest() { |
| 1037 CronetTestFramework testFramework = startCronetTestFrameworkAndSkipLibra
ryInit(); | |
| 1038 | |
| 1039 // Immediately make a request after initializing the engine. | 1024 // Immediately make a request after initializing the engine. |
| 1040 CronetEngine cronetEngine = testFramework.initCronetEngine(); | 1025 CronetEngine cronetEngine = new CronetEngine.Builder(getContext()).build
(); |
| 1041 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 1026 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 1042 UrlRequest.Builder urlRequestBuilder = | 1027 UrlRequest.Builder urlRequestBuilder = |
| 1043 cronetEngine.newUrlRequestBuilder(mUrl, callback, callback.getEx
ecutor()); | 1028 cronetEngine.newUrlRequestBuilder(mUrl, callback, callback.getEx
ecutor()); |
| 1044 urlRequestBuilder.build().start(); | 1029 urlRequestBuilder.build().start(); |
| 1045 callback.blockForDone(); | 1030 callback.blockForDone(); |
| 1046 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 1031 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 1047 } | 1032 } |
| 1048 | 1033 |
| 1049 @SmallTest | 1034 @SmallTest |
| 1050 @Feature({"Cronet"}) | 1035 @Feature({"Cronet"}) |
| 1051 public void testEmptyGetCertVerifierData() { | 1036 public void testEmptyGetCertVerifierData() { |
| 1052 CronetTestFramework testFramework = startCronetTestFrameworkAndSkipLibra
ryInit(); | |
| 1053 | |
| 1054 // Immediately make a request after initializing the engine. | 1037 // Immediately make a request after initializing the engine. |
| 1055 ExperimentalCronetEngine cronetEngine = testFramework.initCronetEngine()
; | 1038 ExperimentalCronetEngine cronetEngine = |
| 1039 new ExperimentalCronetEngine.Builder(getContext()).build(); |
| 1056 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 1040 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 1057 UrlRequest.Builder urlRequestBuilder = | 1041 UrlRequest.Builder urlRequestBuilder = |
| 1058 cronetEngine.newUrlRequestBuilder(mUrl, callback, callback.getEx
ecutor()); | 1042 cronetEngine.newUrlRequestBuilder(mUrl, callback, callback.getEx
ecutor()); |
| 1059 urlRequestBuilder.build().start(); | 1043 urlRequestBuilder.build().start(); |
| 1060 callback.blockForDone(); | 1044 callback.blockForDone(); |
| 1061 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 1045 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 1062 | 1046 |
| 1063 try { | 1047 try { |
| 1064 cronetEngine.getCertVerifierData(-1); | 1048 cronetEngine.getCertVerifierData(-1); |
| 1065 fail("Should throw an exception"); | 1049 fail("Should throw an exception"); |
| 1066 } catch (Exception e) { | 1050 } catch (Exception e) { |
| 1067 assertEquals("timeout must be a positive value", e.getMessage()); | 1051 assertEquals("timeout must be a positive value", e.getMessage()); |
| 1068 } | 1052 } |
| 1069 // Because mUrl is http, getCertVerifierData() will return empty data. | 1053 // Because mUrl is http, getCertVerifierData() will return empty data. |
| 1070 String data = cronetEngine.getCertVerifierData(100); | 1054 String data = cronetEngine.getCertVerifierData(100); |
| 1071 assertTrue(data.isEmpty()); | 1055 assertTrue(data.isEmpty()); |
| 1072 } | 1056 } |
| 1073 | 1057 |
| 1074 @SmallTest | 1058 @SmallTest |
| 1075 @Feature({"Cronet"}) | 1059 @Feature({"Cronet"}) |
| 1076 public void testInitEngineStartTwoRequests() throws Exception { | 1060 public void testInitEngineStartTwoRequests() throws Exception { |
| 1077 CronetTestFramework testFramework = startCronetTestFrameworkAndSkipLibra
ryInit(); | |
| 1078 | |
| 1079 // Make two requests after initializing the context. | 1061 // Make two requests after initializing the context. |
| 1080 CronetEngine cronetEngine = testFramework.initCronetEngine(); | 1062 CronetEngine cronetEngine = new CronetEngine.Builder(getContext()).build
(); |
| 1081 int[] statusCodes = {0, 0}; | 1063 int[] statusCodes = {0, 0}; |
| 1082 String[] urls = {mUrl, mUrl404}; | 1064 String[] urls = {mUrl, mUrl404}; |
| 1083 for (int i = 0; i < 2; i++) { | 1065 for (int i = 0; i < 2; i++) { |
| 1084 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 1066 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 1085 UrlRequest.Builder urlRequestBuilder = | 1067 UrlRequest.Builder urlRequestBuilder = |
| 1086 cronetEngine.newUrlRequestBuilder(urls[i], callback, callbac
k.getExecutor()); | 1068 cronetEngine.newUrlRequestBuilder(urls[i], callback, callbac
k.getExecutor()); |
| 1087 urlRequestBuilder.build().start(); | 1069 urlRequestBuilder.build().start(); |
| 1088 callback.blockForDone(); | 1070 callback.blockForDone(); |
| 1089 statusCodes[i] = callback.mResponseInfo.getHttpStatusCode(); | 1071 statusCodes[i] = callback.mResponseInfo.getHttpStatusCode(); |
| 1090 } | 1072 } |
| 1091 assertEquals(200, statusCodes[0]); | 1073 assertEquals(200, statusCodes[0]); |
| 1092 assertEquals(404, statusCodes[1]); | 1074 assertEquals(404, statusCodes[1]); |
| 1093 } | 1075 } |
| 1094 | 1076 |
| 1095 @SmallTest | 1077 @SmallTest |
| 1096 @Feature({"Cronet"}) | 1078 @Feature({"Cronet"}) |
| 1097 public void testInitTwoEnginesSimultaneously() throws Exception { | 1079 public void testInitTwoEnginesSimultaneously() throws Exception { |
| 1098 final CronetTestFramework testFramework = startCronetTestFrameworkAndSki
pLibraryInit(); | |
| 1099 | |
| 1100 // Threads will block on runBlocker to ensure simultaneous execution. | 1080 // Threads will block on runBlocker to ensure simultaneous execution. |
| 1101 ConditionVariable runBlocker = new ConditionVariable(false); | 1081 ConditionVariable runBlocker = new ConditionVariable(false); |
| 1102 RequestThread thread1 = new RequestThread(testFramework, mUrl, runBlocke
r); | 1082 RequestThread thread1 = new RequestThread(mUrl, runBlocker); |
| 1103 RequestThread thread2 = new RequestThread(testFramework, mUrl404, runBlo
cker); | 1083 RequestThread thread2 = new RequestThread(mUrl404, runBlocker); |
| 1104 | 1084 |
| 1105 thread1.start(); | 1085 thread1.start(); |
| 1106 thread2.start(); | 1086 thread2.start(); |
| 1107 runBlocker.open(); | 1087 runBlocker.open(); |
| 1108 thread1.join(); | 1088 thread1.join(); |
| 1109 thread2.join(); | 1089 thread2.join(); |
| 1110 assertEquals(200, thread1.mCallback.mResponseInfo.getHttpStatusCode()); | 1090 assertEquals(200, thread1.mCallback.mResponseInfo.getHttpStatusCode()); |
| 1111 assertEquals(404, thread2.mCallback.mResponseInfo.getHttpStatusCode()); | 1091 assertEquals(404, thread2.mCallback.mResponseInfo.getHttpStatusCode()); |
| 1112 } | 1092 } |
| 1113 | 1093 |
| 1114 @SmallTest | 1094 @SmallTest |
| 1115 @Feature({"Cronet"}) | 1095 @Feature({"Cronet"}) |
| 1116 public void testInitTwoEnginesInSequence() throws Exception { | 1096 public void testInitTwoEnginesInSequence() throws Exception { |
| 1117 final CronetTestFramework testFramework = startCronetTestFrameworkAndSki
pLibraryInit(); | |
| 1118 | |
| 1119 ConditionVariable runBlocker = new ConditionVariable(true); | 1097 ConditionVariable runBlocker = new ConditionVariable(true); |
| 1120 RequestThread thread1 = new RequestThread(testFramework, mUrl, runBlocke
r); | 1098 RequestThread thread1 = new RequestThread(mUrl, runBlocker); |
| 1121 RequestThread thread2 = new RequestThread(testFramework, mUrl404, runBlo
cker); | 1099 RequestThread thread2 = new RequestThread(mUrl404, runBlocker); |
| 1122 | 1100 |
| 1123 thread1.start(); | 1101 thread1.start(); |
| 1124 thread1.join(); | 1102 thread1.join(); |
| 1125 thread2.start(); | 1103 thread2.start(); |
| 1126 thread2.join(); | 1104 thread2.join(); |
| 1127 assertEquals(200, thread1.mCallback.mResponseInfo.getHttpStatusCode()); | 1105 assertEquals(200, thread1.mCallback.mResponseInfo.getHttpStatusCode()); |
| 1128 assertEquals(404, thread2.mCallback.mResponseInfo.getHttpStatusCode()); | 1106 assertEquals(404, thread2.mCallback.mResponseInfo.getHttpStatusCode()); |
| 1129 } | 1107 } |
| 1130 | 1108 |
| 1131 @SmallTest | 1109 @SmallTest |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1178 ExperimentalCronetEngine.Builder builder = | 1156 ExperimentalCronetEngine.Builder builder = |
| 1179 new ExperimentalCronetEngine.Builder(getContext()); | 1157 new ExperimentalCronetEngine.Builder(getContext()); |
| 1180 builder.enableHttp2(false); | 1158 builder.enableHttp2(false); |
| 1181 builder.enableQuic(true); | 1159 builder.enableQuic(true); |
| 1182 builder.enableSdch(true); | 1160 builder.enableSdch(true); |
| 1183 builder.addQuicHint("example.com", 12, 34); | 1161 builder.addQuicHint("example.com", 12, 34); |
| 1184 builder.setCertVerifierData("test_cert_verifier_data"); | 1162 builder.setCertVerifierData("test_cert_verifier_data"); |
| 1185 builder.enableHttpCache(HTTP_CACHE_IN_MEMORY, 54321); | 1163 builder.enableHttpCache(HTTP_CACHE_IN_MEMORY, 54321); |
| 1186 builder.setUserAgent("efgh"); | 1164 builder.setUserAgent("efgh"); |
| 1187 builder.setExperimentalOptions("ijkl"); | 1165 builder.setExperimentalOptions("ijkl"); |
| 1188 builder.setStoragePath(CronetTestFramework.getTestStorage(getContext()))
; | 1166 builder.setStoragePath(getTestStorage(getContext())); |
| 1189 builder.enablePublicKeyPinningBypassForLocalTrustAnchors(false); | 1167 builder.enablePublicKeyPinningBypassForLocalTrustAnchors(false); |
| 1190 nativeVerifyUrlRequestContextConfig( | 1168 nativeVerifyUrlRequestContextConfig( |
| 1191 CronetUrlRequestContext.createNativeUrlRequestContextConfig( | 1169 CronetUrlRequestContext.createNativeUrlRequestContextConfig( |
| 1192 (CronetEngineBuilderImpl) builder.mBuilderDelegate), | 1170 (CronetEngineBuilderImpl) builder.mBuilderDelegate), |
| 1193 CronetTestFramework.getTestStorage(getContext())); | 1171 getTestStorage(getContext())); |
| 1194 } | 1172 } |
| 1195 | 1173 |
| 1196 // Verifies that CronetEngine.Builder config from testCronetEngineBuilderCon
fig() is properly | 1174 // Verifies that CronetEngine.Builder config from testCronetEngineBuilderCon
fig() is properly |
| 1197 // translated to a native UrlRequestContextConfig. | 1175 // translated to a native UrlRequestContextConfig. |
| 1198 private static native void nativeVerifyUrlRequestContextConfig(long config,
String storagePath); | 1176 private static native void nativeVerifyUrlRequestContextConfig(long config,
String storagePath); |
| 1199 | 1177 |
| 1200 private static class TestBadLibraryLoader extends CronetEngine.Builder.Libra
ryLoader { | 1178 private static class TestBadLibraryLoader extends CronetEngine.Builder.Libra
ryLoader { |
| 1201 private boolean mWasCalled = false; | 1179 private boolean mWasCalled = false; |
| 1202 | 1180 |
| 1203 public void loadLibrary(String libName) { | 1181 public void loadLibrary(String libName) { |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1260 String resolverTestHostname = "some-weird-hostname"; | 1238 String resolverTestHostname = "some-weird-hostname"; |
| 1261 URL testUrl = new URL(mUrl); | 1239 URL testUrl = new URL(mUrl); |
| 1262 ExperimentalCronetEngine.Builder cronetEngineBuilder = | 1240 ExperimentalCronetEngine.Builder cronetEngineBuilder = |
| 1263 new ExperimentalCronetEngine.Builder(getContext()); | 1241 new ExperimentalCronetEngine.Builder(getContext()); |
| 1264 JSONObject hostResolverRules = new JSONObject().put( | 1242 JSONObject hostResolverRules = new JSONObject().put( |
| 1265 "host_resolver_rules", "MAP " + resolverTestHostname + " " + tes
tUrl.getHost()); | 1243 "host_resolver_rules", "MAP " + resolverTestHostname + " " + tes
tUrl.getHost()); |
| 1266 JSONObject experimentalOptions = | 1244 JSONObject experimentalOptions = |
| 1267 new JSONObject().put("HostResolverRules", hostResolverRules); | 1245 new JSONObject().put("HostResolverRules", hostResolverRules); |
| 1268 cronetEngineBuilder.setExperimentalOptions(experimentalOptions.toString(
)); | 1246 cronetEngineBuilder.setExperimentalOptions(experimentalOptions.toString(
)); |
| 1269 | 1247 |
| 1270 final CronetTestFramework testFramework = | 1248 final CronetEngine cronetEngine = cronetEngineBuilder.build(); |
| 1271 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, cron
etEngineBuilder); | |
| 1272 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 1249 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 1273 URL requestUrl = | 1250 URL requestUrl = |
| 1274 new URL("http", resolverTestHostname, testUrl.getPort(), testUrl
.getFile()); | 1251 new URL("http", resolverTestHostname, testUrl.getPort(), testUrl
.getFile()); |
| 1275 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr
lRequestBuilder( | 1252 UrlRequest.Builder urlRequestBuilder = cronetEngine.newUrlRequestBuilder
( |
| 1276 requestUrl.toString(), callback, callback.getExecutor()); | 1253 requestUrl.toString(), callback, callback.getExecutor()); |
| 1277 urlRequestBuilder.build().start(); | 1254 urlRequestBuilder.build().start(); |
| 1278 callback.blockForDone(); | 1255 callback.blockForDone(); |
| 1279 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 1256 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 1280 } | 1257 } |
| 1281 | 1258 |
| 1282 /** | 1259 /** |
| 1283 * Runs {@code r} on {@code engine}'s network thread. | 1260 * Runs {@code r} on {@code engine}'s network thread. |
| 1284 */ | 1261 */ |
| 1285 private static void postToNetworkThread(final CronetEngine engine, final Run
nable r) { | 1262 private static void postToNetworkThread(final CronetEngine engine, final Run
nable r) { |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1345 } | 1322 } |
| 1346 // Test that valid thread priority range (-20..19) is working. | 1323 // Test that valid thread priority range (-20..19) is working. |
| 1347 for (int threadPriority = -20; threadPriority < 20; threadPriority++) { | 1324 for (int threadPriority = -20; threadPriority < 20; threadPriority++) { |
| 1348 builder.setThreadPriority(threadPriority); | 1325 builder.setThreadPriority(threadPriority); |
| 1349 CronetEngine engine = builder.build(); | 1326 CronetEngine engine = builder.build(); |
| 1350 assertEquals(threadPriority, getThreadPriority(engine)); | 1327 assertEquals(threadPriority, getThreadPriority(engine)); |
| 1351 engine.shutdown(); | 1328 engine.shutdown(); |
| 1352 } | 1329 } |
| 1353 } | 1330 } |
| 1354 } | 1331 } |
| OLD | NEW |