Chromium Code Reviews| 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 635 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 646 socklen_t len; | 646 socklen_t len; |
| 647 EXPECT_CALL(mock, accept(kDummyInt, &addr, &len)) | 647 EXPECT_CALL(mock, accept(kDummyInt, &addr, &len)) |
| 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 | |
| 656 EXPECT_CALL(mock, bind(kDummyInt, &addr, kDummyInt2)) | 657 EXPECT_CALL(mock, bind(kDummyInt, &addr, kDummyInt2)) |
| 657 .WillOnce(Return(0)) | 658 .WillOnce(Return(0)); |
| 658 .WillOnce(Return(-1)); | |
| 659 EXPECT_EQ(0, bind(kDummyInt, &addr, kDummyInt2)); | 659 EXPECT_EQ(0, bind(kDummyInt, &addr, kDummyInt2)); |
| 660 | |
| 661 EXPECT_CALL(mock, bind(kDummyInt, &addr, kDummyInt2)) | |
|
binji
2014/05/16 20:19:09
I think I like it better without the duplication o
Sam Clegg
2014/05/16 20:29:53
I think that was the conclusion I came to last tim
bradn
2014/05/16 20:52:54
Done.
bradn
2014/05/16 20:52:54
Done.
| |
| 662 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); | |
| 660 EXPECT_EQ(-1, bind(kDummyInt, &addr, kDummyInt2)); | 663 EXPECT_EQ(-1, bind(kDummyInt, &addr, kDummyInt2)); |
| 664 EXPECT_EQ(kDummyErrno, errno); | |
| 661 } | 665 } |
| 662 | 666 |
| 663 TEST_F(KernelWrapTest, connect) { | 667 TEST_F(KernelWrapTest, connect) { |
| 664 // The way we wrap connect does not support returning arbitrary values, so we | 668 // The way we wrap connect does not support returning arbitrary values, so we |
| 665 // test 0 and -1. | 669 // test 0 and -1. |
| 666 struct sockaddr addr; | 670 struct sockaddr addr; |
| 667 EXPECT_CALL(mock, connect(kDummyInt, &addr, kDummyInt2)) | 671 EXPECT_CALL(mock, connect(kDummyInt, &addr, kDummyInt2)) |
| 668 .WillOnce(Return(0)) | 672 .WillOnce(Return(0)); |
| 669 .WillOnce(Return(-1)); | |
| 670 EXPECT_EQ(0, connect(kDummyInt, &addr, kDummyInt2)); | 673 EXPECT_EQ(0, connect(kDummyInt, &addr, kDummyInt2)); |
| 674 | |
| 675 EXPECT_CALL(mock, connect(kDummyInt, &addr, kDummyInt2)) | |
| 676 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); | |
| 671 EXPECT_EQ(-1, connect(kDummyInt, &addr, kDummyInt2)); | 677 EXPECT_EQ(-1, connect(kDummyInt, &addr, kDummyInt2)); |
| 678 EXPECT_EQ(kDummyErrno, errno); | |
| 672 } | 679 } |
| 673 | 680 |
| 674 TEST_F(KernelWrapTest, gethostbyname) { | 681 TEST_F(KernelWrapTest, gethostbyname) { |
| 675 struct hostent result; | 682 struct hostent result; |
| 676 EXPECT_CALL(mock, gethostbyname(kDummyConstChar)).WillOnce(Return(&result)); | 683 EXPECT_CALL(mock, gethostbyname(kDummyConstChar)).WillOnce(Return(&result)); |
| 677 EXPECT_EQ(&result, gethostbyname(kDummyConstChar)); | 684 EXPECT_EQ(&result, gethostbyname(kDummyConstChar)); |
| 678 } | 685 } |
| 679 | 686 |
| 680 TEST_F(KernelWrapTest, getpeername) { | 687 TEST_F(KernelWrapTest, getpeername) { |
| 681 // The way we wrap getpeername does not support returning arbitrary values, | 688 // The way we wrap getpeername does not support returning arbitrary values, |
| 682 // so we test 0 and -1. | 689 // so we test 0 and -1. |
| 683 struct sockaddr addr; | 690 struct sockaddr addr; |
| 684 socklen_t len; | 691 socklen_t len; |
| 692 | |
| 685 EXPECT_CALL(mock, getpeername(kDummyInt, &addr, &len)) | 693 EXPECT_CALL(mock, getpeername(kDummyInt, &addr, &len)) |
| 686 .WillOnce(Return(0)) | 694 .WillOnce(Return(0)); |
| 687 .WillOnce(Return(-1)); | |
| 688 EXPECT_EQ(0, getpeername(kDummyInt, &addr, &len)); | 695 EXPECT_EQ(0, getpeername(kDummyInt, &addr, &len)); |
| 696 | |
| 697 EXPECT_CALL(mock, getpeername(kDummyInt, &addr, &len)) | |
| 698 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); | |
| 689 EXPECT_EQ(-1, getpeername(kDummyInt, &addr, &len)); | 699 EXPECT_EQ(-1, getpeername(kDummyInt, &addr, &len)); |
| 700 EXPECT_EQ(kDummyErrno, errno); | |
| 690 } | 701 } |
| 691 | 702 |
| 692 TEST_F(KernelWrapTest, getsockname) { | 703 TEST_F(KernelWrapTest, getsockname) { |
| 693 // The way we wrap getsockname does not support returning arbitrary values, | 704 // The way we wrap getsockname does not support returning arbitrary values, |
| 694 // so we test 0 and -1. | 705 // so we test 0 and -1. |
| 695 struct sockaddr addr; | 706 struct sockaddr addr; |
| 696 socklen_t len; | 707 socklen_t len; |
| 708 | |
| 697 EXPECT_CALL(mock, getsockname(kDummyInt, &addr, &len)) | 709 EXPECT_CALL(mock, getsockname(kDummyInt, &addr, &len)) |
| 698 .WillOnce(Return(0)) | 710 .WillOnce(Return(0)); |
| 699 .WillOnce(Return(-1)); | |
| 700 EXPECT_EQ(0, getsockname(kDummyInt, &addr, &len)); | 711 EXPECT_EQ(0, getsockname(kDummyInt, &addr, &len)); |
| 712 | |
| 713 EXPECT_CALL(mock, getsockname(kDummyInt, &addr, &len)) | |
| 714 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); | |
| 701 EXPECT_EQ(-1, getsockname(kDummyInt, &addr, &len)); | 715 EXPECT_EQ(-1, getsockname(kDummyInt, &addr, &len)); |
| 716 EXPECT_EQ(kDummyErrno, errno); | |
| 702 } | 717 } |
| 703 | 718 |
| 704 TEST_F(KernelWrapTest, getsockopt) { | 719 TEST_F(KernelWrapTest, getsockopt) { |
| 705 // The way we wrap getsockname does not support returning arbitrary values, | 720 // The way we wrap getsockname does not support returning arbitrary values, |
| 706 // so we test 0 and -1. | 721 // so we test 0 and -1. |
| 707 int dummy_val; | 722 int dummy_val; |
| 708 void* dummy_void_ptr = &dummy_val; | 723 void* dummy_void_ptr = &dummy_val; |
| 709 socklen_t len; | 724 socklen_t len; |
| 725 | |
| 710 EXPECT_CALL( | 726 EXPECT_CALL( |
| 711 mock, getsockopt(kDummyInt, kDummyInt2, kDummyInt3, dummy_void_ptr, &len)) | 727 mock, getsockopt(kDummyInt, kDummyInt2, kDummyInt3, dummy_void_ptr, &len)) |
| 712 .WillOnce(Return(0)) | 728 .WillOnce(Return(0)); |
| 713 .WillOnce(Return(-1)); | |
| 714 EXPECT_EQ( | 729 EXPECT_EQ( |
| 715 0, | 730 0, |
| 716 getsockopt(kDummyInt, kDummyInt2, kDummyInt3, dummy_void_ptr, &len)); | 731 getsockopt(kDummyInt, kDummyInt2, kDummyInt3, dummy_void_ptr, &len)); |
| 732 | |
| 733 EXPECT_CALL( | |
| 734 mock, getsockopt(kDummyInt, kDummyInt2, kDummyInt3, dummy_void_ptr, &len)) | |
| 735 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); | |
| 717 EXPECT_EQ( | 736 EXPECT_EQ( |
| 718 -1, | 737 -1, |
| 719 getsockopt(kDummyInt, kDummyInt2, kDummyInt3, dummy_void_ptr, &len)); | 738 getsockopt(kDummyInt, kDummyInt2, kDummyInt3, dummy_void_ptr, &len)); |
| 739 EXPECT_EQ(kDummyErrno, errno); | |
| 720 } | 740 } |
| 721 | 741 |
| 722 TEST_F(KernelWrapTest, listen) { | 742 TEST_F(KernelWrapTest, listen) { |
| 723 // The way we wrap listen does not support returning arbitrary values, so we | 743 // The way we wrap listen does not support returning arbitrary values, so we |
| 724 // test 0 and -1. | 744 // test 0 and -1. |
| 725 EXPECT_CALL(mock, listen(kDummyInt, kDummyInt2)) | 745 EXPECT_CALL(mock, listen(kDummyInt, kDummyInt2)) |
| 726 .WillOnce(Return(0)) | 746 .WillOnce(Return(0)); |
| 727 .WillOnce(Return(-1)); | |
| 728 EXPECT_EQ(0, listen(kDummyInt, kDummyInt2)); | 747 EXPECT_EQ(0, listen(kDummyInt, kDummyInt2)); |
| 748 | |
| 749 EXPECT_CALL(mock, listen(kDummyInt, kDummyInt2)) | |
| 750 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); | |
| 729 EXPECT_EQ(-1, listen(kDummyInt, kDummyInt2)); | 751 EXPECT_EQ(-1, listen(kDummyInt, kDummyInt2)); |
| 752 EXPECT_EQ(kDummyErrno, errno); | |
| 730 } | 753 } |
| 731 | 754 |
| 732 TEST_F(KernelWrapTest, recv) { | 755 TEST_F(KernelWrapTest, recv) { |
| 733 int dummy_val; | 756 int dummy_val; |
| 734 void* dummy_void_ptr = &dummy_val; | 757 void* dummy_void_ptr = &dummy_val; |
| 735 EXPECT_CALL(mock, recv(kDummyInt, dummy_void_ptr, kDummySizeT, kDummyInt2)) | 758 EXPECT_CALL(mock, recv(kDummyInt, dummy_void_ptr, kDummySizeT, kDummyInt2)) |
| 736 .WillOnce(Return(kDummyInt3)); | 759 .WillOnce(Return(kDummyInt3)); |
| 737 EXPECT_EQ(kDummyInt3, | 760 EXPECT_EQ(kDummyInt3, |
| 738 recv(kDummyInt, dummy_void_ptr, kDummySizeT, kDummyInt2)); | 761 recv(kDummyInt, dummy_void_ptr, kDummySizeT, kDummyInt2)); |
| 739 } | 762 } |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 791 struct msghdr msg; | 814 struct msghdr msg; |
| 792 EXPECT_CALL(mock, sendmsg(kDummyInt, &msg, kDummyInt2)) | 815 EXPECT_CALL(mock, sendmsg(kDummyInt, &msg, kDummyInt2)) |
| 793 .WillOnce(Return(kDummyInt3)); | 816 .WillOnce(Return(kDummyInt3)); |
| 794 EXPECT_EQ(kDummyInt3, sendmsg(kDummyInt, &msg, kDummyInt2)); | 817 EXPECT_EQ(kDummyInt3, sendmsg(kDummyInt, &msg, kDummyInt2)); |
| 795 } | 818 } |
| 796 | 819 |
| 797 TEST_F(KernelWrapTest, setsockopt) { | 820 TEST_F(KernelWrapTest, setsockopt) { |
| 798 // The way we wrap setsockopt does not support returning arbitrary values, so | 821 // The way we wrap setsockopt does not support returning arbitrary values, so |
| 799 // we test 0 and -1. | 822 // we test 0 and -1. |
| 800 const socklen_t kDummySockLen = 0x50cc5; | 823 const socklen_t kDummySockLen = 0x50cc5; |
| 824 | |
| 801 EXPECT_CALL( | 825 EXPECT_CALL( |
| 802 mock, | 826 mock, |
| 803 setsockopt( | 827 setsockopt( |
| 804 kDummyInt, kDummyInt2, kDummyInt3, kDummyVoidPtr, kDummySockLen)) | 828 kDummyInt, kDummyInt2, kDummyInt3, kDummyVoidPtr, kDummySockLen)) |
| 805 .WillOnce(Return(0)) | 829 .WillOnce(Return(0)); |
| 806 .WillOnce(Return(-1)); | |
| 807 EXPECT_EQ( | 830 EXPECT_EQ( |
| 808 0, | 831 0, |
| 809 setsockopt( | 832 setsockopt( |
| 810 kDummyInt, kDummyInt2, kDummyInt3, kDummyVoidPtr, kDummySockLen)); | 833 kDummyInt, kDummyInt2, kDummyInt3, kDummyVoidPtr, kDummySockLen)); |
| 834 | |
| 835 EXPECT_CALL( | |
| 836 mock, | |
| 837 setsockopt( | |
| 838 kDummyInt, kDummyInt2, kDummyInt3, kDummyVoidPtr, kDummySockLen)) | |
| 839 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); | |
| 811 EXPECT_EQ( | 840 EXPECT_EQ( |
| 812 -1, | 841 -1, |
| 813 setsockopt( | 842 setsockopt( |
| 814 kDummyInt, kDummyInt2, kDummyInt3, kDummyVoidPtr, kDummySockLen)); | 843 kDummyInt, kDummyInt2, kDummyInt3, kDummyVoidPtr, kDummySockLen)); |
| 844 EXPECT_EQ(kDummyErrno, errno); | |
| 815 } | 845 } |
| 816 | 846 |
| 817 TEST_F(KernelWrapTest, shutdown) { | 847 TEST_F(KernelWrapTest, shutdown) { |
| 818 // The way we wrap shutdown does not support returning arbitrary values, so we | 848 // The way we wrap shutdown does not support returning arbitrary values, so we |
| 819 // test 0 and -1. | 849 // test 0 and -1. |
| 820 EXPECT_CALL(mock, shutdown(kDummyInt, kDummyInt2)) | 850 EXPECT_CALL(mock, shutdown(kDummyInt, kDummyInt2)) |
| 821 .WillOnce(Return(0)) | 851 .WillOnce(Return(0)); |
| 822 .WillOnce(Return(-1)); | |
| 823 EXPECT_EQ(0, shutdown(kDummyInt, kDummyInt2)); | 852 EXPECT_EQ(0, shutdown(kDummyInt, kDummyInt2)); |
| 853 | |
| 854 EXPECT_CALL(mock, shutdown(kDummyInt, kDummyInt2)) | |
| 855 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); | |
| 824 EXPECT_EQ(-1, shutdown(kDummyInt, kDummyInt2)); | 856 EXPECT_EQ(-1, shutdown(kDummyInt, kDummyInt2)); |
| 857 EXPECT_EQ(kDummyErrno, errno); | |
| 825 } | 858 } |
| 826 | 859 |
| 827 TEST_F(KernelWrapTest, socket) { | 860 TEST_F(KernelWrapTest, socket) { |
| 828 EXPECT_CALL(mock, socket(kDummyInt, kDummyInt2, kDummyInt3)) | 861 EXPECT_CALL(mock, socket(kDummyInt, kDummyInt2, kDummyInt3)) |
| 829 .WillOnce(Return(kDummyInt4)); | 862 .WillOnce(Return(kDummyInt4)); |
| 830 EXPECT_EQ(kDummyInt4, socket(kDummyInt, kDummyInt2, kDummyInt3)); | 863 EXPECT_EQ(kDummyInt4, socket(kDummyInt, kDummyInt2, kDummyInt3)); |
| 831 } | 864 } |
| 832 | 865 |
| 833 TEST_F(KernelWrapTest, socketpair) { | 866 TEST_F(KernelWrapTest, socketpair) { |
| 834 // The way we wrap socketpair does not support returning arbitrary values, | 867 // The way we wrap socketpair does not support returning arbitrary values, |
| 835 // so we test 0 and -1. | 868 // so we test 0 and -1. |
| 836 int dummy_val; | 869 int dummy_val; |
| 870 | |
| 837 EXPECT_CALL(mock, socketpair(kDummyInt, kDummyInt2, kDummyInt3, &dummy_val)) | 871 EXPECT_CALL(mock, socketpair(kDummyInt, kDummyInt2, kDummyInt3, &dummy_val)) |
| 838 .WillOnce(Return(0)) | 872 .WillOnce(Return(0)); |
| 839 .WillOnce(Return(-1)); | 873 EXPECT_EQ(0, socketpair(kDummyInt, kDummyInt2, kDummyInt3, &dummy_val)); |
| 840 EXPECT_EQ(0, | 874 |
| 841 socketpair(kDummyInt, kDummyInt2, kDummyInt3, &dummy_val)); | 875 EXPECT_CALL(mock, socketpair(kDummyInt, kDummyInt2, kDummyInt3, &dummy_val)) |
| 842 EXPECT_EQ(-1, | 876 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); |
| 843 socketpair(kDummyInt, kDummyInt2, kDummyInt3, &dummy_val)); | 877 EXPECT_EQ(-1, socketpair(kDummyInt, kDummyInt2, kDummyInt3, &dummy_val)); |
| 878 EXPECT_EQ(kDummyErrno, errno); | |
| 844 } | 879 } |
| 845 | 880 |
| 846 #endif // PROVIDES_SOCKET_API | 881 #endif // PROVIDES_SOCKET_API |
| 847 | 882 |
| 848 #endif // __linux__ | 883 #endif // __linux__ |
| OLD | NEW |