Clean up readv_socket test suite.

Get rid of the SocketTest class, which is only extended by ReadvSocketTest.
Also, get rid of TCP sockets (which were unused anyway) from readv_socket.cc.
This is a very old test suite that isn't the right place for TCP loopback
tests.

PiperOrigin-RevId: 283672772
This commit is contained in:
Dean Deng
2019-12-03 19:42:20 -08:00
committed by gVisor bot
parent bb641c5403
commit 80b7ba0c97
4 changed files with 80 additions and 98 deletions
-1
View File
@@ -1795,7 +1795,6 @@ cc_binary(
name = "readv_socket_test",
testonly = 1,
srcs = [
"file_base.h",
"readv_common.cc",
"readv_common.h",
"readv_socket.cc",
-89
View File
@@ -111,95 +111,6 @@ class FileTest : public ::testing::Test {
int test_pipe_[2];
};
class SocketTest : public ::testing::Test {
public:
void SetUp() override {
test_unix_stream_socket_[0] = -1;
test_unix_stream_socket_[1] = -1;
test_unix_dgram_socket_[0] = -1;
test_unix_dgram_socket_[1] = -1;
test_unix_seqpacket_socket_[0] = -1;
test_unix_seqpacket_socket_[1] = -1;
test_tcp_socket_[0] = -1;
test_tcp_socket_[1] = -1;
ASSERT_THAT(socketpair(AF_UNIX, SOCK_STREAM, 0, test_unix_stream_socket_),
SyscallSucceeds());
ASSERT_THAT(fcntl(test_unix_stream_socket_[0], F_SETFL, O_NONBLOCK),
SyscallSucceeds());
ASSERT_THAT(socketpair(AF_UNIX, SOCK_DGRAM, 0, test_unix_dgram_socket_),
SyscallSucceeds());
ASSERT_THAT(fcntl(test_unix_dgram_socket_[0], F_SETFL, O_NONBLOCK),
SyscallSucceeds());
ASSERT_THAT(
socketpair(AF_UNIX, SOCK_SEQPACKET, 0, test_unix_seqpacket_socket_),
SyscallSucceeds());
ASSERT_THAT(fcntl(test_unix_seqpacket_socket_[0], F_SETFL, O_NONBLOCK),
SyscallSucceeds());
}
void TearDown() override {
close(test_unix_stream_socket_[0]);
close(test_unix_stream_socket_[1]);
close(test_unix_dgram_socket_[0]);
close(test_unix_dgram_socket_[1]);
close(test_unix_seqpacket_socket_[0]);
close(test_unix_seqpacket_socket_[1]);
close(test_tcp_socket_[0]);
close(test_tcp_socket_[1]);
}
int test_unix_stream_socket_[2];
int test_unix_dgram_socket_[2];
int test_unix_seqpacket_socket_[2];
int test_tcp_socket_[2];
};
// MatchesStringLength checks that a tuple argument of (struct iovec *, int)
// corresponding to an iovec array and its length, contains data that matches
// the string length strlen.
MATCHER_P(MatchesStringLength, strlen, "") {
struct iovec* iovs = arg.first;
int niov = arg.second;
int offset = 0;
for (int i = 0; i < niov; i++) {
offset += iovs[i].iov_len;
}
if (offset != static_cast<int>(strlen)) {
*result_listener << offset;
return false;
}
return true;
}
// MatchesStringValue checks that a tuple argument of (struct iovec *, int)
// corresponding to an iovec array and its length, contains data that matches
// the string value str.
MATCHER_P(MatchesStringValue, str, "") {
struct iovec* iovs = arg.first;
int len = strlen(str);
int niov = arg.second;
int offset = 0;
for (int i = 0; i < niov; i++) {
struct iovec iov = iovs[i];
if (len < offset) {
*result_listener << "strlen " << len << " < offset " << offset;
return false;
}
if (strncmp(static_cast<char*>(iov.iov_base), &str[offset], iov.iov_len)) {
absl::string_view iovec_string(static_cast<char*>(iov.iov_base),
iov.iov_len);
*result_listener << iovec_string << " @offset " << offset;
return false;
}
offset += iov.iov_len;
}
return true;
}
} // namespace testing
} // namespace gvisor
+42 -1
View File
@@ -19,12 +19,53 @@
#include <unistd.h>
#include "gtest/gtest.h"
#include "test/syscalls/linux/file_base.h"
#include "test/util/test_util.h"
namespace gvisor {
namespace testing {
// MatchesStringLength checks that a tuple argument of (struct iovec *, int)
// corresponding to an iovec array and its length, contains data that matches
// the string length strlen.
MATCHER_P(MatchesStringLength, strlen, "") {
struct iovec* iovs = arg.first;
int niov = arg.second;
int offset = 0;
for (int i = 0; i < niov; i++) {
offset += iovs[i].iov_len;
}
if (offset != static_cast<int>(strlen)) {
*result_listener << offset;
return false;
}
return true;
}
// MatchesStringValue checks that a tuple argument of (struct iovec *, int)
// corresponding to an iovec array and its length, contains data that matches
// the string value str.
MATCHER_P(MatchesStringValue, str, "") {
struct iovec* iovs = arg.first;
int len = strlen(str);
int niov = arg.second;
int offset = 0;
for (int i = 0; i < niov; i++) {
struct iovec iov = iovs[i];
if (len < offset) {
*result_listener << "strlen " << len << " < offset " << offset;
return false;
}
if (strncmp(static_cast<char*>(iov.iov_base), &str[offset], iov.iov_len)) {
absl::string_view iovec_string(static_cast<char*>(iov.iov_base),
iov.iov_len);
*result_listener << iovec_string << " @offset " << offset;
return false;
}
offset += iov.iov_len;
}
return true;
}
extern const char kReadvTestData[] =
"127.0.0.1 localhost"
""
+38 -7
View File
@@ -19,7 +19,6 @@
#include <unistd.h>
#include "gtest/gtest.h"
#include "test/syscalls/linux/file_base.h"
#include "test/syscalls/linux/readv_common.h"
#include "test/util/test_util.h"
@@ -28,9 +27,30 @@ namespace testing {
namespace {
class ReadvSocketTest : public SocketTest {
class ReadvSocketTest : public ::testing::Test {
public:
void SetUp() override {
SocketTest::SetUp();
test_unix_stream_socket_[0] = -1;
test_unix_stream_socket_[1] = -1;
test_unix_dgram_socket_[0] = -1;
test_unix_dgram_socket_[1] = -1;
test_unix_seqpacket_socket_[0] = -1;
test_unix_seqpacket_socket_[1] = -1;
ASSERT_THAT(socketpair(AF_UNIX, SOCK_STREAM, 0, test_unix_stream_socket_),
SyscallSucceeds());
ASSERT_THAT(fcntl(test_unix_stream_socket_[0], F_SETFL, O_NONBLOCK),
SyscallSucceeds());
ASSERT_THAT(socketpair(AF_UNIX, SOCK_DGRAM, 0, test_unix_dgram_socket_),
SyscallSucceeds());
ASSERT_THAT(fcntl(test_unix_dgram_socket_[0], F_SETFL, O_NONBLOCK),
SyscallSucceeds());
ASSERT_THAT(
socketpair(AF_UNIX, SOCK_SEQPACKET, 0, test_unix_seqpacket_socket_),
SyscallSucceeds());
ASSERT_THAT(fcntl(test_unix_seqpacket_socket_[0], F_SETFL, O_NONBLOCK),
SyscallSucceeds());
ASSERT_THAT(
write(test_unix_stream_socket_[1], kReadvTestData, kReadvTestDataSize),
SyscallSucceedsWithValue(kReadvTestDataSize));
@@ -40,11 +60,22 @@ class ReadvSocketTest : public SocketTest {
ASSERT_THAT(write(test_unix_seqpacket_socket_[1], kReadvTestData,
kReadvTestDataSize),
SyscallSucceedsWithValue(kReadvTestDataSize));
// FIXME(b/69821513): Enable when possible.
// ASSERT_THAT(write(test_tcp_socket_[1], kReadvTestData,
// kReadvTestDataSize),
// SyscallSucceedsWithValue(kReadvTestDataSize));
}
void TearDown() override {
close(test_unix_stream_socket_[0]);
close(test_unix_stream_socket_[1]);
close(test_unix_dgram_socket_[0]);
close(test_unix_dgram_socket_[1]);
close(test_unix_seqpacket_socket_[0]);
close(test_unix_seqpacket_socket_[1]);
}
int test_unix_stream_socket_[2];
int test_unix_dgram_socket_[2];
int test_unix_seqpacket_socket_[2];
};
TEST_F(ReadvSocketTest, ReadOneBufferPerByte_StreamSocket) {