| Index: native_client_sdk/src/tests/nacl_io_test/socket_test.cc
|
| diff --git a/native_client_sdk/src/tests/nacl_io_test/socket_test.cc b/native_client_sdk/src/tests/nacl_io_test/socket_test.cc
|
| index e2d86d53bb8e23b81f83cccb358edccbc1c1a9dc..03d96375685ebef522042067da42e2b07fa74c6d 100644
|
| --- a/native_client_sdk/src/tests/nacl_io_test/socket_test.cc
|
| +++ b/native_client_sdk/src/tests/nacl_io_test/socket_test.cc
|
| @@ -243,113 +243,23 @@
|
| EXPECT_EQ(errno, ENOTSOCK);
|
| }
|
|
|
| -TEST_F(SocketTest, SocketInetRawUnsupported) {
|
| +TEST_F(SocketTest, Socket) {
|
| + EXPECT_LT(ki_socket(AF_UNIX, SOCK_STREAM, 0), 0);
|
| + EXPECT_EQ(errno, EAFNOSUPPORT);
|
| EXPECT_LT(ki_socket(AF_INET, SOCK_RAW, 0), 0);
|
| EXPECT_EQ(errno, EPROTONOSUPPORT);
|
| }
|
|
|
| -TEST_F(SocketTest, SocketpairUnsupported) {
|
| +TEST_F(SocketTest, Socketpair) {
|
| int sv[2];
|
| EXPECT_LT(ki_socketpair(AF_INET, SOCK_STREAM, 0, NULL), 0);
|
| EXPECT_EQ(errno, EFAULT);
|
| + EXPECT_LT(ki_socketpair(AF_UNIX, SOCK_STREAM, 0, sv), 0);
|
| + EXPECT_EQ(errno, EAFNOSUPPORT);
|
| EXPECT_LT(ki_socketpair(AF_INET, SOCK_STREAM, 0, sv), 0);
|
| - EXPECT_EQ(errno, EOPNOTSUPP);
|
| + EXPECT_EQ(errno, EPROTONOSUPPORT);
|
| EXPECT_LT(ki_socketpair(AF_INET6, SOCK_STREAM, 0, sv), 0);
|
| - EXPECT_EQ(errno, EOPNOTSUPP);
|
| - EXPECT_LT(ki_socketpair(AF_UNIX, SOCK_DGRAM, 0, sv), 0);
|
| - EXPECT_EQ(errno, EPROTOTYPE);
|
| - EXPECT_LT(ki_socketpair(AF_MAX, SOCK_STREAM, 0, sv), 0);
|
| - EXPECT_EQ(errno, EAFNOSUPPORT);
|
| -}
|
| -
|
| -class UnixSocketTest : public ::testing::Test {
|
| - public:
|
| - UnixSocketTest() { sv_[0] = sv_[1] = -1; }
|
| -
|
| - void SetUp() {
|
| - ASSERT_EQ(0, ki_push_state_for_testing());
|
| - ASSERT_EQ(0, ki_init(&kp_));
|
| - }
|
| -
|
| - void TearDown() {
|
| - if (sv_[0] != -1)
|
| - EXPECT_EQ(0, ki_close(sv_[0]));
|
| - if (sv_[1] != -1)
|
| - EXPECT_EQ(0, ki_close(sv_[1]));
|
| - ki_uninit();
|
| - }
|
| -
|
| - protected:
|
| - KernelProxy kp_;
|
| -
|
| - int sv_[2];
|
| -};
|
| -
|
| -TEST_F(UnixSocketTest, Socket) {
|
| - EXPECT_EQ(-1, ki_socket(AF_UNIX, SOCK_STREAM, 0));
|
| - EXPECT_EQ(EAFNOSUPPORT, errno);
|
| -}
|
| -
|
| -TEST_F(UnixSocketTest, Socketpair) {
|
| - errno = 0;
|
| - EXPECT_EQ(0, ki_socketpair(AF_UNIX, SOCK_STREAM, 0, sv_));
|
| - EXPECT_EQ(0, errno);
|
| - EXPECT_LE(0, sv_[0]);
|
| - EXPECT_LE(0, sv_[1]);
|
| -}
|
| -
|
| -TEST_F(UnixSocketTest, SendRecv) {
|
| - char outbuf[256];
|
| - char inbuf[512];
|
| -
|
| - memset(outbuf, 0xA5, sizeof(outbuf));
|
| - memset(inbuf, 0x3C, sizeof(inbuf));
|
| -
|
| - EXPECT_EQ(0, ki_socketpair(AF_UNIX, SOCK_STREAM, 0, sv_));
|
| -
|
| - int len1 = ki_send(sv_[0], outbuf, sizeof(outbuf), /* flags */ 0);
|
| - EXPECT_EQ(sizeof(outbuf), len1);
|
| -
|
| - // The buffers should be different.
|
| - EXPECT_NE(0, memcmp(outbuf, inbuf, sizeof(outbuf)));
|
| -
|
| - int len2 = ki_recv(sv_[1], inbuf, sizeof(inbuf), /* flags */ 0);
|
| - EXPECT_EQ(sizeof(outbuf), len2);
|
| -
|
| - EXPECT_EQ(0, memcmp(outbuf, inbuf, sizeof(outbuf)));
|
| -
|
| - // A reader should block after to read at this point.
|
| - EXPECT_EQ(-1, ki_recv(sv_[1], inbuf, sizeof(inbuf), MSG_DONTWAIT));
|
| - EXPECT_EQ(EAGAIN, errno);
|
| -
|
| - // Send data back in the opposite direction.
|
| - memset(inbuf, 0x3C, sizeof(inbuf));
|
| - EXPECT_NE(0, memcmp(outbuf, inbuf, sizeof(outbuf)));
|
| - len1 = ki_send(sv_[1], outbuf, sizeof(outbuf), /* flags */ 0);
|
| - EXPECT_EQ(sizeof(outbuf), len1);
|
| -
|
| - EXPECT_NE(0, memcmp(outbuf, inbuf, sizeof(outbuf)));
|
| -
|
| - len2 = ki_recv(sv_[0], inbuf, sizeof(inbuf), /* flags */ 0);
|
| - EXPECT_EQ(sizeof(outbuf), len2);
|
| -
|
| - EXPECT_EQ(0, memcmp(outbuf, inbuf, sizeof(outbuf)));
|
| - EXPECT_EQ(-1, ki_recv(sv_[0], inbuf, sizeof(inbuf), MSG_DONTWAIT));
|
| - EXPECT_EQ(EAGAIN, errno);
|
| -}
|
| -
|
| -TEST_F(UnixSocketTest, RecvNonBlocking) {
|
| - char buf[128];
|
| -
|
| - EXPECT_EQ(0, ki_socketpair(AF_UNIX, SOCK_STREAM, 0, sv_));
|
| -
|
| - EXPECT_EQ(-1, ki_recv(sv_[0], buf, sizeof(buf), MSG_DONTWAIT));
|
| - EXPECT_EQ(EAGAIN, errno);
|
| -
|
| - struct pollfd pollfd = {sv_[0], POLLIN | POLLOUT, 0};
|
| - EXPECT_EQ(1, ki_poll(&pollfd, 1, 0));
|
| - EXPECT_EQ(POLLOUT, pollfd.revents & POLLOUT);
|
| - EXPECT_NE(POLLIN, pollfd.revents & POLLIN);
|
| + EXPECT_EQ(errno, EPROTONOSUPPORT);
|
| }
|
|
|
| TEST(SocketUtilityFunctions, Htonl) {
|
|
|