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

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

Issue 849903002: [Cronet] Upload support for async APIs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move delegate destructor to implementation file to avoid chromium style error Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 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.SmallTest; 7 import android.test.suitebuilder.annotation.SmallTest;
8 import android.util.Pair; 8 import android.util.Pair;
9 9
10 import org.chromium.base.test.util.Feature; 10 import org.chromium.base.test.util.Feature;
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 MockUrlRequestJobFactory.FailurePhase.READ_ASYNC, 440 MockUrlRequestJobFactory.FailurePhase.READ_ASYNC,
441 arbitraryNetError)); 441 arbitraryNetError));
442 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 442 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
443 assertNotNull(listener.mError); 443 assertNotNull(listener.mError);
444 assertEquals(arbitraryNetError, listener.mError.netError()); 444 assertEquals(arbitraryNetError, listener.mError.netError());
445 assertFalse(listener.mOnRedirectCalled); 445 assertFalse(listener.mOnRedirectCalled);
446 assertTrue(listener.mOnErrorCalled); 446 assertTrue(listener.mOnErrorCalled);
447 assertEquals(listener.mResponseStep, ResponseStep.ON_RESPONSE_STARTED); 447 assertEquals(listener.mResponseStep, ResponseStep.ON_RESPONSE_STARTED);
448 } 448 }
449 449
450 @SmallTest
451 @Feature({"Cronet"})
452 public void testUploadSetDataProvider() throws Exception {
453 TestUrlRequestListener listener = new TestUrlRequestListener();
454 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
455 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
456
457 try {
458 urlRequest.setUploadDataProvider(null, listener.getExecutor());
459 fail("Exception not thrown");
460 } catch (NullPointerException e) {
461 assertEquals("Invalid UploadDataProvider.", e.getMessage());
462 }
463
464 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
465 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
466 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor());
467 try {
468 urlRequest.start();
469 fail("Exception not thrown");
470 } catch (IllegalArgumentException e) {
471 assertEquals("Requests with upload data must have a Content-Type.", e.getMessage());
472 }
473 }
474
475 @SmallTest
476 @Feature({"Cronet"})
477 public void testUploadEmptyBodySync() throws Exception {
478 TestUrlRequestListener listener = new TestUrlRequestListener();
479 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
480 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
481
482 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
483 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
484 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor());
485 urlRequest.addHeader("Content-Type", "useless/string");
486 urlRequest.start();
487 listener.blockForDone();
488
489 assertEquals(0, dataProvider.getLength());
490 assertEquals(0, dataProvider.getNumReadCalls());
491 assertEquals(0, dataProvider.getNumRewindCalls());
492
493 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
494 assertEquals("", listener.mResponseAsString);
495 }
496
497 @SmallTest
498 @Feature({"Cronet"})
499 public void testUploadSync() throws Exception {
500 TestUrlRequestListener listener = new TestUrlRequestListener();
501 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
502 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
503
504 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
505 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
506 dataProvider.addRead("test".getBytes());
507 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor());
508 urlRequest.addHeader("Content-Type", "useless/string");
509 urlRequest.start();
510 listener.blockForDone();
511
512 assertEquals(4, dataProvider.getLength());
513 assertEquals(1, dataProvider.getNumReadCalls());
514 assertEquals(0, dataProvider.getNumRewindCalls());
515
516 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
517 assertEquals("test", listener.mResponseAsString);
518 }
519
520 @SmallTest
521 @Feature({"Cronet"})
522 public void testUploadMultiplePiecesSync() throws Exception {
523 TestUrlRequestListener listener = new TestUrlRequestListener();
524 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
525 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
526
527 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
528 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
529 dataProvider.addRead("Y".getBytes());
530 dataProvider.addRead("et ".getBytes());
531 dataProvider.addRead("another ".getBytes());
532 dataProvider.addRead("test".getBytes());
533
534 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor());
535 urlRequest.addHeader("Content-Type", "useless/string");
536 urlRequest.start();
537 listener.blockForDone();
538
539 assertEquals(16, dataProvider.getLength());
540 assertEquals(4, dataProvider.getNumReadCalls());
541 assertEquals(0, dataProvider.getNumRewindCalls());
542
543 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
544 assertEquals("Yet another test", listener.mResponseAsString);
545 }
546
547 @SmallTest
548 @Feature({"Cronet"})
549 public void testUploadMultiplePiecesAsync() throws Exception {
550 TestUrlRequestListener listener = new TestUrlRequestListener();
551 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
552 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
553
554 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
555 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor());
556 dataProvider.addRead("Y".getBytes());
557 dataProvider.addRead("et ".getBytes());
558 dataProvider.addRead("another ".getBytes());
559 dataProvider.addRead("test".getBytes());
560
561 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor());
562 urlRequest.addHeader("Content-Type", "useless/string");
563 urlRequest.start();
564 listener.blockForDone();
565
566 assertEquals(16, dataProvider.getLength());
567 assertEquals(4, dataProvider.getNumReadCalls());
568 assertEquals(0, dataProvider.getNumRewindCalls());
569
570 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
571 assertEquals("Yet another test", listener.mResponseAsString);
572 }
573
574 @SmallTest
575 @Feature({"Cronet"})
576 public void testUploadChangesDefaultMethod() throws Exception {
577 TestUrlRequestListener listener = new TestUrlRequestListener();
578 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
579 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor());
580
581 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
582 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
583 dataProvider.addRead("test".getBytes());
584 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor());
585 urlRequest.addHeader("Content-Type", "useless/string");
586 urlRequest.start();
587 listener.blockForDone();
588
589 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
590 assertEquals("POST", listener.mResponseAsString);
591 }
592
593 @SmallTest
594 @Feature({"Cronet"})
595 public void testUploadWithSetMethod() throws Exception {
596 TestUrlRequestListener listener = new TestUrlRequestListener();
597 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
598 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor());
599
600 final String method = "PUT";
601 urlRequest.setHttpMethod(method);
602
603 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
604 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
605 dataProvider.addRead("test".getBytes());
606 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor());
607 urlRequest.addHeader("Content-Type", "useless/string");
608 urlRequest.start();
609 listener.blockForDone();
610
611 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
612 assertEquals("PUT", listener.mResponseAsString);
613 }
614
615 @SmallTest
616 @Feature({"Cronet"})
617 public void testUploadRedirectSync() throws Exception {
618 TestUrlRequestListener listener = new TestUrlRequestListener();
619 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
620 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor());
621
622 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
623 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
624 dataProvider.addRead("test".getBytes());
625 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor());
626 urlRequest.addHeader("Content-Type", "useless/string");
627 urlRequest.start();
628 listener.blockForDone();
629
630 // 1 read call before the rewind, 1 after.
631 assertEquals(2, dataProvider.getNumReadCalls());
632 assertEquals(1, dataProvider.getNumRewindCalls());
633
634 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
635 assertEquals("test", listener.mResponseAsString);
636 }
637
638 @SmallTest
639 @Feature({"Cronet"})
640 public void testUploadRedirectAsync() throws Exception {
641 TestUrlRequestListener listener = new TestUrlRequestListener();
642 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
643 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor());
644
645 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
646 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor());
647 dataProvider.addRead("test".getBytes());
648 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor());
649 urlRequest.addHeader("Content-Type", "useless/string");
650 urlRequest.start();
651 listener.blockForDone();
652
653 // 1 read call before the rewind, 1 after.
654 assertEquals(2, dataProvider.getNumReadCalls());
655 assertEquals(1, dataProvider.getNumRewindCalls());
656
657 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
658 assertEquals("test", listener.mResponseAsString);
659 }
660
661 @SmallTest
662 @Feature({"Cronet"})
663 public void testUploadReadFailSync() throws Exception {
664 TestUrlRequestListener listener = new TestUrlRequestListener();
665 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
666 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
667
668 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
669 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
670 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ SYNC);
671 // This will never be read, but if the length is 0, read may never be
672 // called.
673 dataProvider.addRead("test".getBytes());
674 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor());
675 urlRequest.addHeader("Content-Type", "useless/string");
676 urlRequest.start();
677 listener.blockForDone();
678
679 assertEquals(1, dataProvider.getNumReadCalls());
680 assertEquals(0, dataProvider.getNumRewindCalls());
681
682 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
683 assertEquals("Sync read failure", listener.mError.getCause().getMessage( ));
684 assertEquals(null, listener.mResponseInfo);
685 }
686
687 @SmallTest
688 @Feature({"Cronet"})
689 public void testUploadReadFailAsync() throws Exception {
690 TestUrlRequestListener listener = new TestUrlRequestListener();
691 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
692 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
693
694 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
695 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
696 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ ASYNC);
697 // This will never be read, but if the length is 0, read may never be
698 // called.
699 dataProvider.addRead("test".getBytes());
700 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor());
701 urlRequest.addHeader("Content-Type", "useless/string");
702 urlRequest.start();
703 listener.blockForDone();
704
705 assertEquals(1, dataProvider.getNumReadCalls());
706 assertEquals(0, dataProvider.getNumRewindCalls());
707
708 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
709 assertEquals("Async read failure", listener.mError.getCause().getMessage ());
710 assertEquals(null, listener.mResponseInfo);
711 }
712
713 @SmallTest
714 @Feature({"Cronet"})
715 public void testUploadReadFailThrown() throws Exception {
716 TestUrlRequestListener listener = new TestUrlRequestListener();
717 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
718 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
719
720 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
721 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
722 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.THROWN);
723 // This will never be read, but if the length is 0, read may never be
724 // called.
725 dataProvider.addRead("test".getBytes());
726 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor());
727 urlRequest.addHeader("Content-Type", "useless/string");
728 urlRequest.start();
729 listener.blockForDone();
730
731 assertEquals(1, dataProvider.getNumReadCalls());
732 assertEquals(0, dataProvider.getNumRewindCalls());
733
734 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
735 assertEquals("Thrown read failure", listener.mError.getCause().getMessag e());
736 assertEquals(null, listener.mResponseInfo);
737 }
738
739 @SmallTest
740 @Feature({"Cronet"})
741 public void testUploadRewindFailSync() throws Exception {
742 TestUrlRequestListener listener = new TestUrlRequestListener();
743 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
744 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor());
745
746 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
747 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
748 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_S YNC);
749 dataProvider.addRead("test".getBytes());
750 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor());
751 urlRequest.addHeader("Content-Type", "useless/string");
752 urlRequest.start();
753 listener.blockForDone();
754
755 assertEquals(1, dataProvider.getNumReadCalls());
756 assertEquals(1, dataProvider.getNumRewindCalls());
757
758 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
759 assertEquals("Sync rewind failure", listener.mError.getCause().getMessag e());
760 assertEquals(null, listener.mResponseInfo);
761 }
762
763 @SmallTest
764 @Feature({"Cronet"})
765 public void testUploadRewindFailAsync() throws Exception {
766 TestUrlRequestListener listener = new TestUrlRequestListener();
767 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
768 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor());
769
770 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
771 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor());
772 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_A SYNC);
773 dataProvider.addRead("test".getBytes());
774 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor());
775 urlRequest.addHeader("Content-Type", "useless/string");
776 urlRequest.start();
777 listener.blockForDone();
778
779 assertEquals(1, dataProvider.getNumReadCalls());
780 assertEquals(1, dataProvider.getNumRewindCalls());
781
782 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
783 assertEquals("Async rewind failure", listener.mError.getCause().getMessa ge());
784 assertEquals(null, listener.mResponseInfo);
785 }
786
787 @SmallTest
788 @Feature({"Cronet"})
789 public void testUploadRewindFailThrown() throws Exception {
790 TestUrlRequestListener listener = new TestUrlRequestListener();
791 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
792 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor());
793
794 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
795 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
796 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.THROWN);
797 dataProvider.addRead("test".getBytes());
798 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor());
799 urlRequest.addHeader("Content-Type", "useless/string");
800 urlRequest.start();
801 listener.blockForDone();
802
803 assertEquals(1, dataProvider.getNumReadCalls());
804 assertEquals(1, dataProvider.getNumRewindCalls());
805
806 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
807 assertEquals("Thrown rewind failure", listener.mError.getCause().getMess age());
808 assertEquals(null, listener.mResponseInfo);
809 }
810
811 @SmallTest
812 @Feature({"Cronet"})
813 public void testUploadChunkedNotSupported() throws Exception {
814 TestUrlRequestListener listener = new TestUrlRequestListener();
815 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
816 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor());
817
818 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
819 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
820 dataProvider.setChunked(true);
821 try {
822 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor( ));
823 fail("Exception not thrown");
824 } catch (IllegalArgumentException e) {
825 assertEquals("Chunked uploads not supported.", e.getMessage());
826 }
827 }
828
450 private void throwOrCancel(FailureType failureType, ResponseStep failureStep , 829 private void throwOrCancel(FailureType failureType, ResponseStep failureStep ,
451 boolean expectResponseInfo, boolean expectError) { 830 boolean expectResponseInfo, boolean expectError) {
452 TestUrlRequestListener listener = new TestUrlRequestListener(); 831 TestUrlRequestListener listener = new TestUrlRequestListener();
453 listener.setFailure(failureType, failureStep); 832 listener.setFailure(failureType, failureStep);
454 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 833 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
455 MockUrlRequestJobFactory.REDIRECT_URL, 834 MockUrlRequestJobFactory.REDIRECT_URL,
456 listener, listener.getExecutor()); 835 listener, listener.getExecutor());
457 urlRequest.start(); 836 urlRequest.start();
458 listener.blockForDone(); 837 listener.blockForDone();
459 assertTrue(listener.mOnRedirectCalled); 838 assertTrue(listener.mOnRedirectCalled);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 urlRequest.start(); 878 urlRequest.start();
500 listener.blockForDone(); 879 listener.blockForDone();
501 assertTrue(listener.mOnRedirectCalled); 880 assertTrue(listener.mOnRedirectCalled);
502 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); 881 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED);
503 assertFalse(urlRequest.isCanceled()); 882 assertFalse(urlRequest.isCanceled());
504 assertNotNull(listener.mResponseInfo); 883 assertNotNull(listener.mResponseInfo);
505 assertNull(listener.mError); 884 assertNull(listener.mError);
506 assertFalse(listener.mOnErrorCalled); 885 assertFalse(listener.mOnErrorCalled);
507 } 886 }
508 } 887 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698