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.StrictMode; | 12 import android.os.StrictMode; |
13 import android.test.suitebuilder.annotation.SmallTest; | 13 import android.test.suitebuilder.annotation.SmallTest; |
14 | 14 |
| 15 import org.json.JSONObject; |
| 16 |
15 import org.chromium.base.FileUtils; | 17 import org.chromium.base.FileUtils; |
16 import org.chromium.base.PathUtils; | 18 import org.chromium.base.PathUtils; |
17 import org.chromium.base.annotations.JNINamespace; | 19 import org.chromium.base.annotations.JNINamespace; |
18 import org.chromium.base.test.util.Feature; | 20 import org.chromium.base.test.util.Feature; |
19 import org.chromium.net.MetricsTestUtil.TestExecutor; | 21 import org.chromium.net.MetricsTestUtil.TestExecutor; |
20 import org.chromium.net.TestUrlRequestCallback.ResponseStep; | 22 import org.chromium.net.TestUrlRequestCallback.ResponseStep; |
21 import org.chromium.net.impl.CronetLibraryLoader; | 23 import org.chromium.net.impl.CronetLibraryLoader; |
22 import org.chromium.net.impl.CronetUrlRequestContext; | 24 import org.chromium.net.impl.CronetUrlRequestContext; |
23 import org.chromium.net.test.EmbeddedTestServer; | 25 import org.chromium.net.test.EmbeddedTestServer; |
24 import org.json.JSONObject; | |
25 | 26 |
26 import java.io.BufferedReader; | 27 import java.io.BufferedReader; |
27 import java.io.File; | 28 import java.io.File; |
28 import java.io.FileReader; | 29 import java.io.FileReader; |
29 import java.net.URL; | 30 import java.net.URL; |
30 import java.util.Arrays; | 31 import java.util.Arrays; |
31 import java.util.concurrent.Executor; | 32 import java.util.concurrent.Executor; |
32 import java.util.concurrent.Executors; | 33 import java.util.concurrent.Executors; |
33 import java.util.concurrent.ThreadFactory; | 34 import java.util.concurrent.ThreadFactory; |
34 import java.util.concurrent.atomic.AtomicReference; | 35 import java.util.concurrent.atomic.AtomicReference; |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
153 @Feature({"Cronet"}) | 154 @Feature({"Cronet"}) |
154 @SuppressWarnings("deprecation") | 155 @SuppressWarnings("deprecation") |
155 public void testConfigUserAgent() throws Exception { | 156 public void testConfigUserAgent() throws Exception { |
156 String userAgentName = "User-Agent"; | 157 String userAgentName = "User-Agent"; |
157 String userAgentValue = "User-Agent-Value"; | 158 String userAgentValue = "User-Agent-Value"; |
158 CronetEngine.Builder cronetEngineBuilder = new CronetEngine.Builder(getC
ontext()); | 159 CronetEngine.Builder cronetEngineBuilder = new CronetEngine.Builder(getC
ontext()); |
159 if (testingJavaImpl()) { | 160 if (testingJavaImpl()) { |
160 cronetEngineBuilder.enableLegacyMode(true); | 161 cronetEngineBuilder.enableLegacyMode(true); |
161 } | 162 } |
162 cronetEngineBuilder.setUserAgent(userAgentValue); | 163 cronetEngineBuilder.setUserAgent(userAgentValue); |
163 cronetEngineBuilder.setLibraryName("cronet_tests"); | |
164 final CronetTestFramework testFramework = | 164 final CronetTestFramework testFramework = |
165 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(mUrl, cron
etEngineBuilder); | 165 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(mUrl, cron
etEngineBuilder); |
166 NativeTestServer.shutdownNativeTestServer(); // startNativeTestServer re
turns false if it's | 166 NativeTestServer.shutdownNativeTestServer(); // startNativeTestServer re
turns false if it's |
167 // already running | 167 // already running |
168 assertTrue(NativeTestServer.startNativeTestServer(getContext())); | 168 assertTrue(NativeTestServer.startNativeTestServer(getContext())); |
169 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 169 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
170 UrlRequest.Builder urlRequestBuilder = | 170 UrlRequest.Builder urlRequestBuilder = |
171 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(userAge
ntName), callback, | 171 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(userAge
ntName), callback, |
172 callback.getExecutor(), testFramework.mCronetEngine); | 172 callback.getExecutor(), testFramework.mCronetEngine); |
173 urlRequestBuilder.build().start(); | 173 urlRequestBuilder.build().start(); |
174 callback.blockForDone(); | 174 callback.blockForDone(); |
175 assertEquals(userAgentValue, callback.mResponseAsString); | 175 assertEquals(userAgentValue, callback.mResponseAsString); |
176 } | 176 } |
177 | 177 |
178 @SmallTest | 178 @SmallTest |
179 @Feature({"Cronet"}) | 179 @Feature({"Cronet"}) |
180 @OnlyRunNativeCronet | 180 @OnlyRunNativeCronet |
181 public void testDataReductionProxyEnabled() throws Exception { | 181 public void testDataReductionProxyEnabled() throws Exception { |
182 final CronetTestFramework testFramework = startCronetTestFrameworkAndSki
pLibraryInit(); | 182 final CronetTestFramework testFramework = startCronetTestFrameworkAndSki
pLibraryInit(); |
183 | 183 |
184 // Ensure native code is loaded before trying to start test server. | 184 // Ensure native code is loaded before trying to start test server. |
185 new CronetEngine.Builder(getContext()).setLibraryName("cronet_tests").bu
ild().shutdown(); | 185 new CronetEngine.Builder(getContext()).build().shutdown(); |
186 | 186 |
187 assertTrue(NativeTestServer.startNativeTestServer(getContext())); | 187 assertTrue(NativeTestServer.startNativeTestServer(getContext())); |
188 if (!NativeTestServer.isDataReductionProxySupported()) { | 188 if (!NativeTestServer.isDataReductionProxySupported()) { |
189 return; | 189 return; |
190 } | 190 } |
191 String serverHostPort = NativeTestServer.getHostPort(); | 191 String serverHostPort = NativeTestServer.getHostPort(); |
192 | 192 |
193 // Enable the Data Reduction Proxy and configure it to use the test | 193 // Enable the Data Reduction Proxy and configure it to use the test |
194 // server as its primary proxy, and to check successfully that this | 194 // server as its primary proxy, and to check successfully that this |
195 // proxy is OK to use. | 195 // proxy is OK to use. |
196 CronetEngine.Builder cronetEngineBuilder = new CronetEngine.Builder(getC
ontext()); | 196 CronetEngine.Builder cronetEngineBuilder = new CronetEngine.Builder(getC
ontext()); |
197 cronetEngineBuilder.enableDataReductionProxy("test-key"); | 197 cronetEngineBuilder.enableDataReductionProxy("test-key"); |
198 cronetEngineBuilder.setDataReductionProxyOptions(serverHostPort, "unused
.net:9999", | 198 cronetEngineBuilder.setDataReductionProxyOptions(serverHostPort, "unused
.net:9999", |
199 NativeTestServer.getFileURL("/secureproxychecksuccess.txt")); | 199 NativeTestServer.getFileURL("/secureproxychecksuccess.txt")); |
200 cronetEngineBuilder.setLibraryName("cronet_tests"); | |
201 testFramework.mCronetEngine = cronetEngineBuilder.build(); | 200 testFramework.mCronetEngine = cronetEngineBuilder.build(); |
202 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 201 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
203 | 202 |
204 // Construct and start a request that can only be returned by the test | 203 // Construct and start a request that can only be returned by the test |
205 // server. This request will fail if the configuration logic for the | 204 // server. This request will fail if the configuration logic for the |
206 // Data Reduction Proxy is not used. | 205 // Data Reduction Proxy is not used. |
207 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( | 206 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( |
208 "http://DomainThatDoesnt.Resolve/datareductionproxysuccess.txt",
callback, | 207 "http://DomainThatDoesnt.Resolve/datareductionproxysuccess.txt",
callback, |
209 callback.getExecutor(), testFramework.mCronetEngine); | 208 callback.getExecutor(), testFramework.mCronetEngine); |
210 urlRequestBuilder.build().start(); | 209 urlRequestBuilder.build().start(); |
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
514 testFramework.mCronetEngine.shutdown(); | 513 testFramework.mCronetEngine.shutdown(); |
515 } | 514 } |
516 | 515 |
517 @SmallTest | 516 @SmallTest |
518 @Feature({"Cronet"}) | 517 @Feature({"Cronet"}) |
519 @OnlyRunNativeCronet // No netlogs for pure java impl | 518 @OnlyRunNativeCronet // No netlogs for pure java impl |
520 public void testNetLog() throws Exception { | 519 public void testNetLog() throws Exception { |
521 Context context = getContext(); | 520 Context context = getContext(); |
522 File directory = new File(PathUtils.getDataDirectory()); | 521 File directory = new File(PathUtils.getDataDirectory()); |
523 File file = File.createTempFile("cronet", "json", directory); | 522 File file = File.createTempFile("cronet", "json", directory); |
524 CronetEngine cronetEngine = new CronetUrlRequestContext( | 523 CronetEngine cronetEngine = new CronetUrlRequestContext(new CronetEngine
.Builder(context)); |
525 new CronetEngine.Builder(context).setLibraryName("cronet_tests")
); | |
526 // Start NetLog immediately after the request context is created to make | 524 // Start NetLog immediately after the request context is created to make |
527 // sure that the call won't crash the app even when the native request | 525 // sure that the call won't crash the app even when the native request |
528 // context is not fully initialized. See crbug.com/470196. | 526 // context is not fully initialized. See crbug.com/470196. |
529 cronetEngine.startNetLogToFile(file.getPath(), false); | 527 cronetEngine.startNetLogToFile(file.getPath(), false); |
530 | 528 |
531 // Start a request. | 529 // Start a request. |
532 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 530 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
533 UrlRequest.Builder urlRequestBuilder = | 531 UrlRequest.Builder urlRequestBuilder = |
534 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c
ronetEngine); | 532 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c
ronetEngine); |
535 urlRequestBuilder.build().start(); | 533 urlRequestBuilder.build().start(); |
536 callback.blockForDone(); | 534 callback.blockForDone(); |
537 cronetEngine.stopNetLog(); | 535 cronetEngine.stopNetLog(); |
538 assertTrue(file.exists()); | 536 assertTrue(file.exists()); |
539 assertTrue(file.length() != 0); | 537 assertTrue(file.length() != 0); |
540 assertFalse(hasBytesInNetLog(file)); | 538 assertFalse(hasBytesInNetLog(file)); |
541 assertTrue(file.delete()); | 539 assertTrue(file.delete()); |
542 assertTrue(!file.exists()); | 540 assertTrue(!file.exists()); |
543 } | 541 } |
544 | 542 |
545 @SmallTest | 543 @SmallTest |
546 @Feature({"Cronet"}) | 544 @Feature({"Cronet"}) |
547 @OnlyRunNativeCronet // No netlogs for pure java impl | 545 @OnlyRunNativeCronet // No netlogs for pure java impl |
548 public void testBoundedFileNetLog() throws Exception { | 546 public void testBoundedFileNetLog() throws Exception { |
549 Context context = getContext(); | 547 Context context = getContext(); |
550 File directory = new File(PathUtils.getDataDirectory()); | 548 File directory = new File(PathUtils.getDataDirectory()); |
551 File netLogDir = new File(directory, "NetLog"); | 549 File netLogDir = new File(directory, "NetLog"); |
552 assertFalse(netLogDir.exists()); | 550 assertFalse(netLogDir.exists()); |
553 assertTrue(netLogDir.mkdir()); | 551 assertTrue(netLogDir.mkdir()); |
554 File eventFile = new File(netLogDir, "event_file_0.json"); | 552 File eventFile = new File(netLogDir, "event_file_0.json"); |
555 CronetEngine cronetEngine = new CronetUrlRequestContext( | 553 CronetEngine cronetEngine = new CronetUrlRequestContext(new CronetEngine
.Builder(context)); |
556 new CronetEngine.Builder(context).setLibraryName("cronet_tests")
); | |
557 // Start NetLog immediately after the request context is created to make | 554 // Start NetLog immediately after the request context is created to make |
558 // sure that the call won't crash the app even when the native request | 555 // sure that the call won't crash the app even when the native request |
559 // context is not fully initialized. See crbug.com/470196. | 556 // context is not fully initialized. See crbug.com/470196. |
560 cronetEngine.startNetLogToDisk(netLogDir.getPath(), false, MAX_FILE_SIZE
); | 557 cronetEngine.startNetLogToDisk(netLogDir.getPath(), false, MAX_FILE_SIZE
); |
561 | 558 |
562 // Start a request. | 559 // Start a request. |
563 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 560 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
564 UrlRequest.Builder urlRequestBuilder = | 561 UrlRequest.Builder urlRequestBuilder = |
565 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c
ronetEngine); | 562 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c
ronetEngine); |
566 urlRequestBuilder.build().start(); | 563 urlRequestBuilder.build().start(); |
567 callback.blockForDone(); | 564 callback.blockForDone(); |
568 cronetEngine.stopNetLog(); | 565 cronetEngine.stopNetLog(); |
569 assertTrue(eventFile.exists()); | 566 assertTrue(eventFile.exists()); |
570 assertTrue(eventFile.length() != 0); | 567 assertTrue(eventFile.length() != 0); |
571 assertFalse(hasBytesInNetLog(eventFile)); | 568 assertFalse(hasBytesInNetLog(eventFile)); |
572 FileUtils.recursivelyDeleteFile(netLogDir); | 569 FileUtils.recursivelyDeleteFile(netLogDir); |
573 assertFalse(netLogDir.exists()); | 570 assertFalse(netLogDir.exists()); |
574 } | 571 } |
575 | 572 |
576 @SmallTest | 573 @SmallTest |
577 @Feature({"Cronet"}) | 574 @Feature({"Cronet"}) |
578 @OnlyRunNativeCronet // No netlogs for pure java impl | 575 @OnlyRunNativeCronet // No netlogs for pure java impl |
579 // Tests that if stopNetLog is not explicity called, CronetEngine.shutdown() | 576 // Tests that if stopNetLog is not explicity called, CronetEngine.shutdown() |
580 // will take care of it. crbug.com/623701. | 577 // will take care of it. crbug.com/623701. |
581 public void testNoStopNetLog() throws Exception { | 578 public void testNoStopNetLog() throws Exception { |
582 Context context = getContext(); | 579 Context context = getContext(); |
583 File directory = new File(PathUtils.getDataDirectory()); | 580 File directory = new File(PathUtils.getDataDirectory()); |
584 File file = File.createTempFile("cronet", "json", directory); | 581 File file = File.createTempFile("cronet", "json", directory); |
585 CronetEngine cronetEngine = new CronetUrlRequestContext( | 582 CronetEngine cronetEngine = new CronetUrlRequestContext(new CronetEngine
.Builder(context)); |
586 new CronetEngine.Builder(context).setLibraryName("cronet_tests")
); | |
587 cronetEngine.startNetLogToFile(file.getPath(), false); | 583 cronetEngine.startNetLogToFile(file.getPath(), false); |
588 | 584 |
589 // Start a request. | 585 // Start a request. |
590 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 586 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
591 UrlRequest.Builder urlRequestBuilder = | 587 UrlRequest.Builder urlRequestBuilder = |
592 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c
ronetEngine); | 588 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c
ronetEngine); |
593 urlRequestBuilder.build().start(); | 589 urlRequestBuilder.build().start(); |
594 callback.blockForDone(); | 590 callback.blockForDone(); |
595 // Shut down the engine without calling stopNetLog. | 591 // Shut down the engine without calling stopNetLog. |
596 cronetEngine.shutdown(); | 592 cronetEngine.shutdown(); |
597 assertTrue(file.exists()); | 593 assertTrue(file.exists()); |
598 assertTrue(file.length() != 0); | 594 assertTrue(file.length() != 0); |
599 assertFalse(hasBytesInNetLog(file)); | 595 assertFalse(hasBytesInNetLog(file)); |
600 assertTrue(file.delete()); | 596 assertTrue(file.delete()); |
601 assertTrue(!file.exists()); | 597 assertTrue(!file.exists()); |
602 } | 598 } |
603 | 599 |
604 @SmallTest | 600 @SmallTest |
605 @Feature({"Cronet"}) | 601 @Feature({"Cronet"}) |
606 @OnlyRunNativeCronet // No netlogs for pure java impl | 602 @OnlyRunNativeCronet // No netlogs for pure java impl |
607 // Tests that if stopNetLog is not explicity called, CronetEngine.shutdown() | 603 // Tests that if stopNetLog is not explicity called, CronetEngine.shutdown() |
608 // will take care of it. crbug.com/623701. | 604 // will take care of it. crbug.com/623701. |
609 public void testNoStopBoundedFileNetLog() throws Exception { | 605 public void testNoStopBoundedFileNetLog() throws Exception { |
610 Context context = getContext(); | 606 Context context = getContext(); |
611 File directory = new File(PathUtils.getDataDirectory()); | 607 File directory = new File(PathUtils.getDataDirectory()); |
612 File netLogDir = new File(directory, "NetLog"); | 608 File netLogDir = new File(directory, "NetLog"); |
613 assertFalse(netLogDir.exists()); | 609 assertFalse(netLogDir.exists()); |
614 assertTrue(netLogDir.mkdir()); | 610 assertTrue(netLogDir.mkdir()); |
615 File eventFile = new File(netLogDir, "event_file_0.json"); | 611 File eventFile = new File(netLogDir, "event_file_0.json"); |
616 CronetEngine cronetEngine = new CronetUrlRequestContext( | 612 CronetEngine cronetEngine = new CronetUrlRequestContext(new CronetEngine
.Builder(context)); |
617 new CronetEngine.Builder(context).setLibraryName("cronet_tests")
); | |
618 cronetEngine.startNetLogToDisk(netLogDir.getPath(), false, MAX_FILE_SIZE
); | 613 cronetEngine.startNetLogToDisk(netLogDir.getPath(), false, MAX_FILE_SIZE
); |
619 | 614 |
620 // Start a request. | 615 // Start a request. |
621 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 616 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
622 UrlRequest.Builder urlRequestBuilder = | 617 UrlRequest.Builder urlRequestBuilder = |
623 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c
ronetEngine); | 618 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c
ronetEngine); |
624 urlRequestBuilder.build().start(); | 619 urlRequestBuilder.build().start(); |
625 callback.blockForDone(); | 620 callback.blockForDone(); |
626 // Shut down the engine without calling stopNetLog. | 621 // Shut down the engine without calling stopNetLog. |
627 cronetEngine.shutdown(); | 622 cronetEngine.shutdown(); |
628 assertTrue(eventFile.exists()); | 623 assertTrue(eventFile.exists()); |
629 assertTrue(eventFile.length() != 0); | 624 assertTrue(eventFile.length() != 0); |
630 | 625 |
631 FileUtils.recursivelyDeleteFile(netLogDir); | 626 FileUtils.recursivelyDeleteFile(netLogDir); |
632 assertFalse(netLogDir.exists()); | 627 assertFalse(netLogDir.exists()); |
633 } | 628 } |
634 | 629 |
635 @SmallTest | 630 @SmallTest |
636 @Feature({"Cronet"}) | 631 @Feature({"Cronet"}) |
637 @OnlyRunNativeCronet | 632 @OnlyRunNativeCronet |
638 // Tests that NetLog contains events emitted by all live CronetEngines. | 633 // Tests that NetLog contains events emitted by all live CronetEngines. |
639 public void testNetLogContainEventsFromAllLiveEngines() throws Exception { | 634 public void testNetLogContainEventsFromAllLiveEngines() throws Exception { |
640 Context context = getContext(); | 635 Context context = getContext(); |
641 File directory = new File(PathUtils.getDataDirectory()); | 636 File directory = new File(PathUtils.getDataDirectory()); |
642 File file1 = File.createTempFile("cronet1", "json", directory); | 637 File file1 = File.createTempFile("cronet1", "json", directory); |
643 File file2 = File.createTempFile("cronet2", "json", directory); | 638 File file2 = File.createTempFile("cronet2", "json", directory); |
644 CronetEngine cronetEngine1 = new CronetUrlRequestContext( | 639 CronetEngine cronetEngine1 = new CronetUrlRequestContext(new CronetEngin
e.Builder(context)); |
645 new CronetEngine.Builder(context).setLibraryName("cronet_tests")
); | 640 CronetEngine cronetEngine2 = new CronetUrlRequestContext(new CronetEngin
e.Builder(context)); |
646 CronetEngine cronetEngine2 = new CronetUrlRequestContext( | |
647 new CronetEngine.Builder(context).setLibraryName("cronet_tests")
); | |
648 | 641 |
649 cronetEngine1.startNetLogToFile(file1.getPath(), false); | 642 cronetEngine1.startNetLogToFile(file1.getPath(), false); |
650 cronetEngine2.startNetLogToFile(file2.getPath(), false); | 643 cronetEngine2.startNetLogToFile(file2.getPath(), false); |
651 | 644 |
652 // Warm CronetEngine and make sure both CronetUrlRequestContexts are | 645 // Warm CronetEngine and make sure both CronetUrlRequestContexts are |
653 // initialized before testing the logs. | 646 // initialized before testing the logs. |
654 makeRequestAndCheckStatus(cronetEngine1, mUrl, 200); | 647 makeRequestAndCheckStatus(cronetEngine1, mUrl, 200); |
655 makeRequestAndCheckStatus(cronetEngine2, mUrl, 200); | 648 makeRequestAndCheckStatus(cronetEngine2, mUrl, 200); |
656 | 649 |
657 // Use cronetEngine1 to make a request to mUrl404. | 650 // Use cronetEngine1 to make a request to mUrl404. |
(...skipping 25 matching lines...) Expand all Loading... |
683 File directory = new File(PathUtils.getDataDirectory()); | 676 File directory = new File(PathUtils.getDataDirectory()); |
684 File netLogDir1 = new File(directory, "NetLog1"); | 677 File netLogDir1 = new File(directory, "NetLog1"); |
685 assertFalse(netLogDir1.exists()); | 678 assertFalse(netLogDir1.exists()); |
686 assertTrue(netLogDir1.mkdir()); | 679 assertTrue(netLogDir1.mkdir()); |
687 File netLogDir2 = new File(directory, "NetLog2"); | 680 File netLogDir2 = new File(directory, "NetLog2"); |
688 assertFalse(netLogDir2.exists()); | 681 assertFalse(netLogDir2.exists()); |
689 assertTrue(netLogDir2.mkdir()); | 682 assertTrue(netLogDir2.mkdir()); |
690 File eventFile1 = new File(netLogDir1, "event_file_0.json"); | 683 File eventFile1 = new File(netLogDir1, "event_file_0.json"); |
691 File eventFile2 = new File(netLogDir2, "event_file_0.json"); | 684 File eventFile2 = new File(netLogDir2, "event_file_0.json"); |
692 | 685 |
693 CronetUrlRequestContext cronetEngine1 = new CronetUrlRequestContext( | 686 CronetUrlRequestContext cronetEngine1 = |
694 new CronetEngine.Builder(context).setLibraryName("cronet_tests")
); | 687 new CronetUrlRequestContext(new CronetEngine.Builder(context)); |
695 CronetUrlRequestContext cronetEngine2 = new CronetUrlRequestContext( | 688 CronetUrlRequestContext cronetEngine2 = |
696 new CronetEngine.Builder(context).setLibraryName("cronet_tests")
); | 689 new CronetUrlRequestContext(new CronetEngine.Builder(context)); |
697 | 690 |
698 cronetEngine1.startNetLogToDisk(netLogDir1.getPath(), false, MAX_FILE_SI
ZE); | 691 cronetEngine1.startNetLogToDisk(netLogDir1.getPath(), false, MAX_FILE_SI
ZE); |
699 cronetEngine2.startNetLogToDisk(netLogDir2.getPath(), false, MAX_FILE_SI
ZE); | 692 cronetEngine2.startNetLogToDisk(netLogDir2.getPath(), false, MAX_FILE_SI
ZE); |
700 | 693 |
701 // Warm CronetEngine and make sure both CronetUrlRequestContexts are | 694 // Warm CronetEngine and make sure both CronetUrlRequestContexts are |
702 // initialized before testing the logs. | 695 // initialized before testing the logs. |
703 makeRequestAndCheckStatus(cronetEngine1, mUrl, 200); | 696 makeRequestAndCheckStatus(cronetEngine1, mUrl, 200); |
704 makeRequestAndCheckStatus(cronetEngine2, mUrl, 200); | 697 makeRequestAndCheckStatus(cronetEngine2, mUrl, 200); |
705 | 698 |
706 // Use cronetEngine1 to make a request to mUrl404. | 699 // Use cronetEngine1 to make a request to mUrl404. |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
996 assertFalse(netLogDir.exists()); | 989 assertFalse(netLogDir.exists()); |
997 } | 990 } |
998 | 991 |
999 @SmallTest | 992 @SmallTest |
1000 @Feature({"Cronet"}) | 993 @Feature({"Cronet"}) |
1001 @OnlyRunNativeCronet | 994 @OnlyRunNativeCronet |
1002 public void testNetLogWithBytes() throws Exception { | 995 public void testNetLogWithBytes() throws Exception { |
1003 Context context = getContext(); | 996 Context context = getContext(); |
1004 File directory = new File(PathUtils.getDataDirectory()); | 997 File directory = new File(PathUtils.getDataDirectory()); |
1005 File file = File.createTempFile("cronet", "json", directory); | 998 File file = File.createTempFile("cronet", "json", directory); |
1006 CronetEngine cronetEngine = new CronetUrlRequestContext( | 999 CronetEngine cronetEngine = new CronetUrlRequestContext(new CronetEngine
.Builder(context)); |
1007 new CronetEngine.Builder(context).setLibraryName("cronet_tests")
); | |
1008 // Start NetLog with logAll as true. | 1000 // Start NetLog with logAll as true. |
1009 cronetEngine.startNetLogToFile(file.getPath(), true); | 1001 cronetEngine.startNetLogToFile(file.getPath(), true); |
1010 // Start a request. | 1002 // Start a request. |
1011 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 1003 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
1012 UrlRequest.Builder urlRequestBuilder = | 1004 UrlRequest.Builder urlRequestBuilder = |
1013 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c
ronetEngine); | 1005 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c
ronetEngine); |
1014 urlRequestBuilder.build().start(); | 1006 urlRequestBuilder.build().start(); |
1015 callback.blockForDone(); | 1007 callback.blockForDone(); |
1016 cronetEngine.stopNetLog(); | 1008 cronetEngine.stopNetLog(); |
1017 assertTrue(file.exists()); | 1009 assertTrue(file.exists()); |
1018 assertTrue(file.length() != 0); | 1010 assertTrue(file.length() != 0); |
1019 assertTrue(hasBytesInNetLog(file)); | 1011 assertTrue(hasBytesInNetLog(file)); |
1020 assertTrue(file.delete()); | 1012 assertTrue(file.delete()); |
1021 assertTrue(!file.exists()); | 1013 assertTrue(!file.exists()); |
1022 } | 1014 } |
1023 | 1015 |
1024 @SmallTest | 1016 @SmallTest |
1025 @Feature({"Cronet"}) | 1017 @Feature({"Cronet"}) |
1026 @OnlyRunNativeCronet | 1018 @OnlyRunNativeCronet |
1027 public void testBoundedFileNetLogWithBytes() throws Exception { | 1019 public void testBoundedFileNetLogWithBytes() throws Exception { |
1028 Context context = getContext(); | 1020 Context context = getContext(); |
1029 File directory = new File(PathUtils.getDataDirectory()); | 1021 File directory = new File(PathUtils.getDataDirectory()); |
1030 File netLogDir = new File(directory, "NetLog"); | 1022 File netLogDir = new File(directory, "NetLog"); |
1031 assertFalse(netLogDir.exists()); | 1023 assertFalse(netLogDir.exists()); |
1032 assertTrue(netLogDir.mkdir()); | 1024 assertTrue(netLogDir.mkdir()); |
1033 File eventFile = new File(netLogDir, "event_file_0.json"); | 1025 File eventFile = new File(netLogDir, "event_file_0.json"); |
1034 CronetUrlRequestContext cronetEngine = new CronetUrlRequestContext( | 1026 CronetUrlRequestContext cronetEngine = |
1035 new CronetEngine.Builder(context).setLibraryName("cronet_tests")
); | 1027 new CronetUrlRequestContext(new CronetEngine.Builder(context)); |
1036 // Start NetLog with logAll as true. | 1028 // Start NetLog with logAll as true. |
1037 cronetEngine.startNetLogToDisk(netLogDir.getPath(), true, MAX_FILE_SIZE)
; | 1029 cronetEngine.startNetLogToDisk(netLogDir.getPath(), true, MAX_FILE_SIZE)
; |
1038 // Start a request. | 1030 // Start a request. |
1039 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 1031 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
1040 UrlRequest.Builder urlRequestBuilder = | 1032 UrlRequest.Builder urlRequestBuilder = |
1041 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c
ronetEngine); | 1033 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c
ronetEngine); |
1042 urlRequestBuilder.build().start(); | 1034 urlRequestBuilder.build().start(); |
1043 callback.blockForDone(); | 1035 callback.blockForDone(); |
1044 cronetEngine.stopNetLog(); | 1036 cronetEngine.stopNetLog(); |
1045 | 1037 |
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1386 return mWasCalled; | 1378 return mWasCalled; |
1387 } | 1379 } |
1388 } | 1380 } |
1389 | 1381 |
1390 @SmallTest | 1382 @SmallTest |
1391 @Feature({"Cronet"}) | 1383 @Feature({"Cronet"}) |
1392 @OnlyRunNativeCronet | 1384 @OnlyRunNativeCronet |
1393 public void testSkipLibraryLoading() throws Exception { | 1385 public void testSkipLibraryLoading() throws Exception { |
1394 CronetEngine.Builder builder = new CronetEngine.Builder(getContext()); | 1386 CronetEngine.Builder builder = new CronetEngine.Builder(getContext()); |
1395 TestBadLibraryLoader loader = new TestBadLibraryLoader(); | 1387 TestBadLibraryLoader loader = new TestBadLibraryLoader(); |
1396 builder.setLibraryLoader(loader).setLibraryName("cronet_tests"); | 1388 builder.setLibraryLoader(loader); |
1397 try { | 1389 try { |
1398 // ensureInitialized() calls native code to check the version right
after library load | 1390 // ensureInitialized() calls native code to check the version right
after library load |
1399 // and will error with the message below if library loading was skip
ped | 1391 // and will error with the message below if library loading was skip
ped |
1400 CronetLibraryLoader.ensureInitialized(getContext(), builder); | 1392 CronetLibraryLoader.ensureInitialized(getContext(), builder); |
1401 fail("Native library should not be loaded"); | 1393 fail("Native library should not be loaded"); |
1402 } catch (UnsatisfiedLinkError e) { | 1394 } catch (UnsatisfiedLinkError e) { |
1403 assertTrue(loader.wasCalled()); | 1395 assertTrue(loader.wasCalled()); |
1404 } | 1396 } |
1405 } | 1397 } |
1406 | 1398 |
1407 // Creates a CronetEngine on another thread and then one on the main thread.
This shouldn't | 1399 // Creates a CronetEngine on another thread and then one on the main thread.
This shouldn't |
1408 // crash. | 1400 // crash. |
1409 @SmallTest | 1401 @SmallTest |
1410 @Feature({"Cronet"}) | 1402 @Feature({"Cronet"}) |
1411 public void testThreadedStartup() throws Exception { | 1403 public void testThreadedStartup() throws Exception { |
1412 final ConditionVariable otherThreadDone = new ConditionVariable(); | 1404 final ConditionVariable otherThreadDone = new ConditionVariable(); |
1413 final ConditionVariable uiThreadDone = new ConditionVariable(); | 1405 final ConditionVariable uiThreadDone = new ConditionVariable(); |
1414 new Handler(Looper.getMainLooper()).post(new Runnable() { | 1406 new Handler(Looper.getMainLooper()).post(new Runnable() { |
1415 public void run() { | 1407 public void run() { |
1416 final CronetEngine.Builder builder = | 1408 final CronetEngine.Builder builder = new CronetEngine.Builder(ge
tContext()); |
1417 new CronetEngine.Builder(getContext()).setLibraryName("c
ronet_tests"); | |
1418 new Thread() { | 1409 new Thread() { |
1419 public void run() { | 1410 public void run() { |
1420 CronetEngine cronetEngine = builder.build(); | 1411 CronetEngine cronetEngine = builder.build(); |
1421 otherThreadDone.open(); | 1412 otherThreadDone.open(); |
1422 cronetEngine.shutdown(); | 1413 cronetEngine.shutdown(); |
1423 } | 1414 } |
1424 }.start(); | 1415 }.start(); |
1425 otherThreadDone.block(); | 1416 otherThreadDone.block(); |
1426 builder.build().shutdown(); | 1417 builder.build().shutdown(); |
1427 uiThreadDone.open(); | 1418 uiThreadDone.open(); |
(...skipping 19 matching lines...) Expand all Loading... |
1447 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 1438 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
1448 URL requestUrl = | 1439 URL requestUrl = |
1449 new URL("http", resolverTestHostname, testUrl.getPort(), testUrl
.getFile()); | 1440 new URL("http", resolverTestHostname, testUrl.getPort(), testUrl
.getFile()); |
1450 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(requestUrl
.toString(), | 1441 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(requestUrl
.toString(), |
1451 callback, callback.getExecutor(), testFramework.mCronetEngine); | 1442 callback, callback.getExecutor(), testFramework.mCronetEngine); |
1452 urlRequestBuilder.build().start(); | 1443 urlRequestBuilder.build().start(); |
1453 callback.blockForDone(); | 1444 callback.blockForDone(); |
1454 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 1445 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
1455 } | 1446 } |
1456 } | 1447 } |
OLD | NEW |