OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 // The linux host build of nacl_io can't do wrapping of syscalls so all | 5 // The linux host build of nacl_io can't do wrapping of syscalls so all |
6 // these tests must be disabled. | 6 // these tests must be disabled. |
7 #if !defined(__linux__) | 7 #if !defined(__linux__) |
8 | 8 |
9 #include <unistd.h> | 9 #include <unistd.h> |
10 | 10 |
(...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
648 .WillOnce(Return(kDummyInt2)); | 648 .WillOnce(Return(kDummyInt2)); |
649 EXPECT_EQ(kDummyInt2, accept(kDummyInt, &addr, &len)); | 649 EXPECT_EQ(kDummyInt2, accept(kDummyInt, &addr, &len)); |
650 } | 650 } |
651 | 651 |
652 TEST_F(KernelWrapTest, bind) { | 652 TEST_F(KernelWrapTest, bind) { |
653 // The way we wrap bind does not support returning arbitrary values, so we | 653 // The way we wrap bind does not support returning arbitrary values, so we |
654 // test 0 and -1. | 654 // test 0 and -1. |
655 struct sockaddr addr; | 655 struct sockaddr addr; |
656 EXPECT_CALL(mock, bind(kDummyInt, &addr, kDummyInt2)) | 656 EXPECT_CALL(mock, bind(kDummyInt, &addr, kDummyInt2)) |
657 .WillOnce(Return(0)) | 657 .WillOnce(Return(0)) |
658 .WillOnce(Return(-1)); | 658 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); |
659 EXPECT_EQ(0, bind(kDummyInt, &addr, kDummyInt2)); | 659 EXPECT_EQ(0, bind(kDummyInt, &addr, kDummyInt2)); |
660 EXPECT_EQ(-1, bind(kDummyInt, &addr, kDummyInt2)); | 660 EXPECT_EQ(-1, bind(kDummyInt, &addr, kDummyInt2)); |
| 661 EXPECT_EQ(kDummyErrno, errno); |
661 } | 662 } |
662 | 663 |
663 TEST_F(KernelWrapTest, connect) { | 664 TEST_F(KernelWrapTest, connect) { |
664 // The way we wrap connect does not support returning arbitrary values, so we | 665 // The way we wrap connect does not support returning arbitrary values, so we |
665 // test 0 and -1. | 666 // test 0 and -1. |
666 struct sockaddr addr; | 667 struct sockaddr addr; |
667 EXPECT_CALL(mock, connect(kDummyInt, &addr, kDummyInt2)) | 668 EXPECT_CALL(mock, connect(kDummyInt, &addr, kDummyInt2)) |
668 .WillOnce(Return(0)) | 669 .WillOnce(Return(0)) |
669 .WillOnce(Return(-1)); | 670 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); |
670 EXPECT_EQ(0, connect(kDummyInt, &addr, kDummyInt2)); | 671 EXPECT_EQ(0, connect(kDummyInt, &addr, kDummyInt2)); |
671 EXPECT_EQ(-1, connect(kDummyInt, &addr, kDummyInt2)); | 672 EXPECT_EQ(-1, connect(kDummyInt, &addr, kDummyInt2)); |
| 673 EXPECT_EQ(kDummyErrno, errno); |
672 } | 674 } |
673 | 675 |
674 TEST_F(KernelWrapTest, gethostbyname) { | 676 TEST_F(KernelWrapTest, gethostbyname) { |
675 struct hostent result; | 677 struct hostent result; |
676 EXPECT_CALL(mock, gethostbyname(kDummyConstChar)).WillOnce(Return(&result)); | 678 EXPECT_CALL(mock, gethostbyname(kDummyConstChar)).WillOnce(Return(&result)); |
677 EXPECT_EQ(&result, gethostbyname(kDummyConstChar)); | 679 EXPECT_EQ(&result, gethostbyname(kDummyConstChar)); |
678 } | 680 } |
679 | 681 |
680 TEST_F(KernelWrapTest, getpeername) { | 682 TEST_F(KernelWrapTest, getpeername) { |
681 // The way we wrap getpeername does not support returning arbitrary values, | 683 // The way we wrap getpeername does not support returning arbitrary values, |
682 // so we test 0 and -1. | 684 // so we test 0 and -1. |
683 struct sockaddr addr; | 685 struct sockaddr addr; |
684 socklen_t len; | 686 socklen_t len; |
685 EXPECT_CALL(mock, getpeername(kDummyInt, &addr, &len)) | 687 EXPECT_CALL(mock, getpeername(kDummyInt, &addr, &len)) |
686 .WillOnce(Return(0)) | 688 .WillOnce(Return(0)) |
687 .WillOnce(Return(-1)); | 689 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); |
688 EXPECT_EQ(0, getpeername(kDummyInt, &addr, &len)); | 690 EXPECT_EQ(0, getpeername(kDummyInt, &addr, &len)); |
689 EXPECT_EQ(-1, getpeername(kDummyInt, &addr, &len)); | 691 EXPECT_EQ(-1, getpeername(kDummyInt, &addr, &len)); |
| 692 EXPECT_EQ(kDummyErrno, errno); |
690 } | 693 } |
691 | 694 |
692 TEST_F(KernelWrapTest, getsockname) { | 695 TEST_F(KernelWrapTest, getsockname) { |
693 // The way we wrap getsockname does not support returning arbitrary values, | 696 // The way we wrap getsockname does not support returning arbitrary values, |
694 // so we test 0 and -1. | 697 // so we test 0 and -1. |
695 struct sockaddr addr; | 698 struct sockaddr addr; |
696 socklen_t len; | 699 socklen_t len; |
| 700 |
697 EXPECT_CALL(mock, getsockname(kDummyInt, &addr, &len)) | 701 EXPECT_CALL(mock, getsockname(kDummyInt, &addr, &len)) |
698 .WillOnce(Return(0)) | 702 .WillOnce(Return(0)) |
699 .WillOnce(Return(-1)); | 703 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); |
700 EXPECT_EQ(0, getsockname(kDummyInt, &addr, &len)); | 704 EXPECT_EQ(0, getsockname(kDummyInt, &addr, &len)); |
701 EXPECT_EQ(-1, getsockname(kDummyInt, &addr, &len)); | 705 EXPECT_EQ(-1, getsockname(kDummyInt, &addr, &len)); |
| 706 EXPECT_EQ(kDummyErrno, errno); |
702 } | 707 } |
703 | 708 |
704 TEST_F(KernelWrapTest, getsockopt) { | 709 TEST_F(KernelWrapTest, getsockopt) { |
705 // The way we wrap getsockname does not support returning arbitrary values, | 710 // The way we wrap getsockname does not support returning arbitrary values, |
706 // so we test 0 and -1. | 711 // so we test 0 and -1. |
707 int dummy_val; | 712 int dummy_val; |
708 void* dummy_void_ptr = &dummy_val; | 713 void* dummy_void_ptr = &dummy_val; |
709 socklen_t len; | 714 socklen_t len; |
710 EXPECT_CALL( | 715 EXPECT_CALL( |
711 mock, getsockopt(kDummyInt, kDummyInt2, kDummyInt3, dummy_void_ptr, &len)) | 716 mock, getsockopt(kDummyInt, kDummyInt2, kDummyInt3, dummy_void_ptr, &len)) |
712 .WillOnce(Return(0)) | 717 .WillOnce(Return(0)) |
713 .WillOnce(Return(-1)); | 718 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); |
714 EXPECT_EQ( | 719 EXPECT_EQ( |
715 0, | 720 0, |
716 getsockopt(kDummyInt, kDummyInt2, kDummyInt3, dummy_void_ptr, &len)); | 721 getsockopt(kDummyInt, kDummyInt2, kDummyInt3, dummy_void_ptr, &len)); |
717 EXPECT_EQ( | 722 EXPECT_EQ( |
718 -1, | 723 -1, |
719 getsockopt(kDummyInt, kDummyInt2, kDummyInt3, dummy_void_ptr, &len)); | 724 getsockopt(kDummyInt, kDummyInt2, kDummyInt3, dummy_void_ptr, &len)); |
| 725 EXPECT_EQ(kDummyErrno, errno); |
720 } | 726 } |
721 | 727 |
722 TEST_F(KernelWrapTest, listen) { | 728 TEST_F(KernelWrapTest, listen) { |
723 // The way we wrap listen does not support returning arbitrary values, so we | 729 // The way we wrap listen does not support returning arbitrary values, so we |
724 // test 0 and -1. | 730 // test 0 and -1. |
725 EXPECT_CALL(mock, listen(kDummyInt, kDummyInt2)) | 731 EXPECT_CALL(mock, listen(kDummyInt, kDummyInt2)) |
726 .WillOnce(Return(0)) | 732 .WillOnce(Return(0)) |
727 .WillOnce(Return(-1)); | 733 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); |
728 EXPECT_EQ(0, listen(kDummyInt, kDummyInt2)); | 734 EXPECT_EQ(0, listen(kDummyInt, kDummyInt2)); |
729 EXPECT_EQ(-1, listen(kDummyInt, kDummyInt2)); | 735 EXPECT_EQ(-1, listen(kDummyInt, kDummyInt2)); |
| 736 EXPECT_EQ(kDummyErrno, errno); |
730 } | 737 } |
731 | 738 |
732 TEST_F(KernelWrapTest, recv) { | 739 TEST_F(KernelWrapTest, recv) { |
733 int dummy_val; | 740 int dummy_val; |
734 void* dummy_void_ptr = &dummy_val; | 741 void* dummy_void_ptr = &dummy_val; |
735 EXPECT_CALL(mock, recv(kDummyInt, dummy_void_ptr, kDummySizeT, kDummyInt2)) | 742 EXPECT_CALL(mock, recv(kDummyInt, dummy_void_ptr, kDummySizeT, kDummyInt2)) |
736 .WillOnce(Return(kDummyInt3)); | 743 .WillOnce(Return(kDummyInt3)); |
737 EXPECT_EQ(kDummyInt3, | 744 EXPECT_EQ(kDummyInt3, |
738 recv(kDummyInt, dummy_void_ptr, kDummySizeT, kDummyInt2)); | 745 recv(kDummyInt, dummy_void_ptr, kDummySizeT, kDummyInt2)); |
739 } | 746 } |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
796 | 803 |
797 TEST_F(KernelWrapTest, setsockopt) { | 804 TEST_F(KernelWrapTest, setsockopt) { |
798 // The way we wrap setsockopt does not support returning arbitrary values, so | 805 // The way we wrap setsockopt does not support returning arbitrary values, so |
799 // we test 0 and -1. | 806 // we test 0 and -1. |
800 const socklen_t kDummySockLen = 0x50cc5; | 807 const socklen_t kDummySockLen = 0x50cc5; |
801 EXPECT_CALL( | 808 EXPECT_CALL( |
802 mock, | 809 mock, |
803 setsockopt( | 810 setsockopt( |
804 kDummyInt, kDummyInt2, kDummyInt3, kDummyVoidPtr, kDummySockLen)) | 811 kDummyInt, kDummyInt2, kDummyInt3, kDummyVoidPtr, kDummySockLen)) |
805 .WillOnce(Return(0)) | 812 .WillOnce(Return(0)) |
806 .WillOnce(Return(-1)); | 813 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); |
807 EXPECT_EQ( | 814 EXPECT_EQ( |
808 0, | 815 0, |
809 setsockopt( | 816 setsockopt( |
810 kDummyInt, kDummyInt2, kDummyInt3, kDummyVoidPtr, kDummySockLen)); | 817 kDummyInt, kDummyInt2, kDummyInt3, kDummyVoidPtr, kDummySockLen)); |
811 EXPECT_EQ( | 818 EXPECT_EQ( |
812 -1, | 819 -1, |
813 setsockopt( | 820 setsockopt( |
814 kDummyInt, kDummyInt2, kDummyInt3, kDummyVoidPtr, kDummySockLen)); | 821 kDummyInt, kDummyInt2, kDummyInt3, kDummyVoidPtr, kDummySockLen)); |
| 822 EXPECT_EQ(kDummyErrno, errno); |
815 } | 823 } |
816 | 824 |
817 TEST_F(KernelWrapTest, shutdown) { | 825 TEST_F(KernelWrapTest, shutdown) { |
818 // The way we wrap shutdown does not support returning arbitrary values, so we | 826 // The way we wrap shutdown does not support returning arbitrary values, so we |
819 // test 0 and -1. | 827 // test 0 and -1. |
820 EXPECT_CALL(mock, shutdown(kDummyInt, kDummyInt2)) | 828 EXPECT_CALL(mock, shutdown(kDummyInt, kDummyInt2)) |
821 .WillOnce(Return(0)) | 829 .WillOnce(Return(0)) |
822 .WillOnce(Return(-1)); | 830 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); |
823 EXPECT_EQ(0, shutdown(kDummyInt, kDummyInt2)); | 831 EXPECT_EQ(0, shutdown(kDummyInt, kDummyInt2)); |
824 EXPECT_EQ(-1, shutdown(kDummyInt, kDummyInt2)); | 832 EXPECT_EQ(-1, shutdown(kDummyInt, kDummyInt2)); |
| 833 EXPECT_EQ(kDummyErrno, errno); |
825 } | 834 } |
826 | 835 |
827 TEST_F(KernelWrapTest, socket) { | 836 TEST_F(KernelWrapTest, socket) { |
828 EXPECT_CALL(mock, socket(kDummyInt, kDummyInt2, kDummyInt3)) | 837 EXPECT_CALL(mock, socket(kDummyInt, kDummyInt2, kDummyInt3)) |
829 .WillOnce(Return(kDummyInt4)); | 838 .WillOnce(Return(kDummyInt4)); |
830 EXPECT_EQ(kDummyInt4, socket(kDummyInt, kDummyInt2, kDummyInt3)); | 839 EXPECT_EQ(kDummyInt4, socket(kDummyInt, kDummyInt2, kDummyInt3)); |
831 } | 840 } |
832 | 841 |
833 TEST_F(KernelWrapTest, socketpair) { | 842 TEST_F(KernelWrapTest, socketpair) { |
834 // The way we wrap socketpair does not support returning arbitrary values, | 843 // The way we wrap socketpair does not support returning arbitrary values, |
835 // so we test 0 and -1. | 844 // so we test 0 and -1. |
836 int dummy_val; | 845 int dummy_val; |
837 EXPECT_CALL(mock, socketpair(kDummyInt, kDummyInt2, kDummyInt3, &dummy_val)) | 846 EXPECT_CALL(mock, socketpair(kDummyInt, kDummyInt2, kDummyInt3, &dummy_val)) |
838 .WillOnce(Return(0)) | 847 .WillOnce(Return(0)) |
839 .WillOnce(Return(-1)); | 848 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); |
840 EXPECT_EQ(0, | 849 EXPECT_EQ(0, socketpair(kDummyInt, kDummyInt2, kDummyInt3, &dummy_val)); |
841 socketpair(kDummyInt, kDummyInt2, kDummyInt3, &dummy_val)); | 850 EXPECT_EQ(-1, socketpair(kDummyInt, kDummyInt2, kDummyInt3, &dummy_val)); |
842 EXPECT_EQ(-1, | 851 EXPECT_EQ(kDummyErrno, errno); |
843 socketpair(kDummyInt, kDummyInt2, kDummyInt3, &dummy_val)); | |
844 } | 852 } |
845 | 853 |
846 #endif // PROVIDES_SOCKET_API | 854 #endif // PROVIDES_SOCKET_API |
847 | 855 |
848 #endif // __linux__ | 856 #endif // __linux__ |
OLD | NEW |