Loading adb/adb_io_test.cpp +14 −8 Original line number Diff line number Diff line Loading @@ -37,7 +37,13 @@ // fds far from the range that open() returns. But all of that might defeat the // purpose of the tests. TEST(io, ReadFdExactly_whole) { #if defined(_WIN32) #define POSIX_TEST(x,y) TEST(DISABLED_ ## x,y) #else #define POSIX_TEST TEST #endif POSIX_TEST(io, ReadFdExactly_whole) { const char expected[] = "Foobar"; TemporaryFile tf; ASSERT_NE(-1, tf.fd); Loading @@ -51,7 +57,7 @@ TEST(io, ReadFdExactly_whole) { EXPECT_STREQ(expected, buf); } TEST(io, ReadFdExactly_eof) { POSIX_TEST(io, ReadFdExactly_eof) { const char expected[] = "Foobar"; TemporaryFile tf; ASSERT_NE(-1, tf.fd); Loading @@ -65,7 +71,7 @@ TEST(io, ReadFdExactly_eof) { EXPECT_EQ(0, errno) << strerror(errno); } TEST(io, ReadFdExactly_partial) { POSIX_TEST(io, ReadFdExactly_partial) { const char input[] = "Foobar"; TemporaryFile tf; ASSERT_NE(-1, tf.fd); Loading @@ -82,7 +88,7 @@ TEST(io, ReadFdExactly_partial) { EXPECT_STREQ(expected.c_str(), buf); } TEST(io, WriteFdExactly_whole) { POSIX_TEST(io, WriteFdExactly_whole) { const char expected[] = "Foobar"; TemporaryFile tf; ASSERT_NE(-1, tf.fd); Loading @@ -97,7 +103,7 @@ TEST(io, WriteFdExactly_whole) { EXPECT_STREQ(expected, s.c_str()); } TEST(io, WriteFdExactly_partial) { POSIX_TEST(io, WriteFdExactly_partial) { const char buf[] = "Foobar"; TemporaryFile tf; ASSERT_NE(-1, tf.fd); Loading @@ -114,7 +120,7 @@ TEST(io, WriteFdExactly_partial) { EXPECT_EQ(expected, s); } TEST(io, WriteFdExactly_ENOSPC) { POSIX_TEST(io, WriteFdExactly_ENOSPC) { int fd = open("/dev/full", O_WRONLY); ASSERT_NE(-1, fd); Loading @@ -123,7 +129,7 @@ TEST(io, WriteFdExactly_ENOSPC) { ASSERT_EQ(ENOSPC, errno); } TEST(io, WriteFdExactly_string) { POSIX_TEST(io, WriteFdExactly_string) { const char str[] = "Foobar"; TemporaryFile tf; ASSERT_NE(-1, tf.fd); Loading @@ -137,7 +143,7 @@ TEST(io, WriteFdExactly_string) { EXPECT_STREQ(str, s.c_str()); } TEST(io, WriteFdFmt) { POSIX_TEST(io, WriteFdFmt) { TemporaryFile tf; ASSERT_NE(-1, tf.fd); Loading adb/sysdeps_test.cpp +29 −0 Original line number Diff line number Diff line Loading @@ -215,3 +215,32 @@ TEST_F(sysdeps_poll, disconnect) { // Linux returns POLLIN | POLLHUP, Windows returns just POLLHUP. EXPECT_EQ(POLLHUP, pfd.revents & POLLHUP); } TEST_F(sysdeps_poll, fd_count) { // https://code.google.com/p/android/issues/detail?id=12141 static constexpr int num_sockets = 512; std::vector<int> sockets; std::vector<adb_pollfd> pfds; sockets.resize(num_sockets * 2); for (int32_t i = 0; i < num_sockets; ++i) { ASSERT_EQ(0, adb_socketpair(&sockets[i * 2])) << strerror(errno); ASSERT_TRUE(WriteFdExactly(sockets[i * 2], &i, sizeof(i))); adb_pollfd pfd; pfd.events = POLLIN; pfd.fd = sockets[i * 2 + 1]; pfds.push_back(pfd); } ASSERT_EQ(num_sockets, adb_poll(pfds.data(), pfds.size(), 0)); for (int i = 0; i < num_sockets; ++i) { ASSERT_NE(0, pfds[i].revents & POLLIN); int32_t buf[2] = { -1, -1 }; ASSERT_EQ(adb_read(pfds[i].fd, buf, sizeof(buf)), static_cast<ssize_t>(sizeof(int32_t))); ASSERT_EQ(i, buf[0]); } for (int fd : sockets) { adb_close(fd); } } adb/sysdeps_win32.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -191,7 +191,7 @@ typedef struct FHRec_ #define fh_socket u.socket #define WIN32_FH_BASE 2048 #define WIN32_MAX_FHS 128 #define WIN32_MAX_FHS 2048 static adb_mutex_t _win32_lock; static FHRec _win32_fhs[ WIN32_MAX_FHS ]; Loading Loading
adb/adb_io_test.cpp +14 −8 Original line number Diff line number Diff line Loading @@ -37,7 +37,13 @@ // fds far from the range that open() returns. But all of that might defeat the // purpose of the tests. TEST(io, ReadFdExactly_whole) { #if defined(_WIN32) #define POSIX_TEST(x,y) TEST(DISABLED_ ## x,y) #else #define POSIX_TEST TEST #endif POSIX_TEST(io, ReadFdExactly_whole) { const char expected[] = "Foobar"; TemporaryFile tf; ASSERT_NE(-1, tf.fd); Loading @@ -51,7 +57,7 @@ TEST(io, ReadFdExactly_whole) { EXPECT_STREQ(expected, buf); } TEST(io, ReadFdExactly_eof) { POSIX_TEST(io, ReadFdExactly_eof) { const char expected[] = "Foobar"; TemporaryFile tf; ASSERT_NE(-1, tf.fd); Loading @@ -65,7 +71,7 @@ TEST(io, ReadFdExactly_eof) { EXPECT_EQ(0, errno) << strerror(errno); } TEST(io, ReadFdExactly_partial) { POSIX_TEST(io, ReadFdExactly_partial) { const char input[] = "Foobar"; TemporaryFile tf; ASSERT_NE(-1, tf.fd); Loading @@ -82,7 +88,7 @@ TEST(io, ReadFdExactly_partial) { EXPECT_STREQ(expected.c_str(), buf); } TEST(io, WriteFdExactly_whole) { POSIX_TEST(io, WriteFdExactly_whole) { const char expected[] = "Foobar"; TemporaryFile tf; ASSERT_NE(-1, tf.fd); Loading @@ -97,7 +103,7 @@ TEST(io, WriteFdExactly_whole) { EXPECT_STREQ(expected, s.c_str()); } TEST(io, WriteFdExactly_partial) { POSIX_TEST(io, WriteFdExactly_partial) { const char buf[] = "Foobar"; TemporaryFile tf; ASSERT_NE(-1, tf.fd); Loading @@ -114,7 +120,7 @@ TEST(io, WriteFdExactly_partial) { EXPECT_EQ(expected, s); } TEST(io, WriteFdExactly_ENOSPC) { POSIX_TEST(io, WriteFdExactly_ENOSPC) { int fd = open("/dev/full", O_WRONLY); ASSERT_NE(-1, fd); Loading @@ -123,7 +129,7 @@ TEST(io, WriteFdExactly_ENOSPC) { ASSERT_EQ(ENOSPC, errno); } TEST(io, WriteFdExactly_string) { POSIX_TEST(io, WriteFdExactly_string) { const char str[] = "Foobar"; TemporaryFile tf; ASSERT_NE(-1, tf.fd); Loading @@ -137,7 +143,7 @@ TEST(io, WriteFdExactly_string) { EXPECT_STREQ(str, s.c_str()); } TEST(io, WriteFdFmt) { POSIX_TEST(io, WriteFdFmt) { TemporaryFile tf; ASSERT_NE(-1, tf.fd); Loading
adb/sysdeps_test.cpp +29 −0 Original line number Diff line number Diff line Loading @@ -215,3 +215,32 @@ TEST_F(sysdeps_poll, disconnect) { // Linux returns POLLIN | POLLHUP, Windows returns just POLLHUP. EXPECT_EQ(POLLHUP, pfd.revents & POLLHUP); } TEST_F(sysdeps_poll, fd_count) { // https://code.google.com/p/android/issues/detail?id=12141 static constexpr int num_sockets = 512; std::vector<int> sockets; std::vector<adb_pollfd> pfds; sockets.resize(num_sockets * 2); for (int32_t i = 0; i < num_sockets; ++i) { ASSERT_EQ(0, adb_socketpair(&sockets[i * 2])) << strerror(errno); ASSERT_TRUE(WriteFdExactly(sockets[i * 2], &i, sizeof(i))); adb_pollfd pfd; pfd.events = POLLIN; pfd.fd = sockets[i * 2 + 1]; pfds.push_back(pfd); } ASSERT_EQ(num_sockets, adb_poll(pfds.data(), pfds.size(), 0)); for (int i = 0; i < num_sockets; ++i) { ASSERT_NE(0, pfds[i].revents & POLLIN); int32_t buf[2] = { -1, -1 }; ASSERT_EQ(adb_read(pfds[i].fd, buf, sizeof(buf)), static_cast<ssize_t>(sizeof(int32_t))); ASSERT_EQ(i, buf[0]); } for (int fd : sockets) { adb_close(fd); } }
adb/sysdeps_win32.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -191,7 +191,7 @@ typedef struct FHRec_ #define fh_socket u.socket #define WIN32_FH_BASE 2048 #define WIN32_MAX_FHS 128 #define WIN32_MAX_FHS 2048 static adb_mutex_t _win32_lock; static FHRec _win32_fhs[ WIN32_MAX_FHS ]; Loading