mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Make many tests build with NDK.
Not all the tests build yet, but many of them do now. PiperOrigin-RevId: 375209824
This commit is contained in:
@@ -1517,7 +1517,8 @@ cc_binary(
|
||||
cc_binary(
|
||||
name = "partial_bad_buffer_test",
|
||||
testonly = 1,
|
||||
srcs = ["partial_bad_buffer.cc"],
|
||||
# Android does not support preadv or pwritev in r22.
|
||||
srcs = select_system(linux = ["partial_bad_buffer.cc"]),
|
||||
linkstatic = 1,
|
||||
deps = [
|
||||
":socket_test_util",
|
||||
@@ -3674,7 +3675,8 @@ cc_binary(
|
||||
cc_binary(
|
||||
name = "sync_test",
|
||||
testonly = 1,
|
||||
srcs = ["sync.cc"],
|
||||
# Android does not support syncfs in r22.
|
||||
srcs = select_system(linux = ["sync.cc"]),
|
||||
linkstatic = 1,
|
||||
deps = [
|
||||
gtest,
|
||||
@@ -3970,7 +3972,8 @@ cc_binary(
|
||||
cc_binary(
|
||||
name = "utimes_test",
|
||||
testonly = 1,
|
||||
srcs = ["utimes.cc"],
|
||||
# Android does not support futimesat in r22.
|
||||
srcs = select_system(linux = ["utimes.cc"]),
|
||||
linkstatic = 1,
|
||||
deps = [
|
||||
"//test/util:file_descriptor",
|
||||
@@ -4086,7 +4089,8 @@ cc_binary(
|
||||
cc_binary(
|
||||
name = "semaphore_test",
|
||||
testonly = 1,
|
||||
srcs = ["semaphore.cc"],
|
||||
# Android does not support XSI semaphores in r22.
|
||||
srcs = select_system(linux = ["semaphore.cc"]),
|
||||
linkstatic = 1,
|
||||
deps = [
|
||||
"//test/util:capability_util",
|
||||
|
||||
@@ -230,6 +230,8 @@ TEST(EpollTest, WaitThenUnblock) {
|
||||
EXPECT_THAT(pthread_detach(thread), SyscallSucceeds());
|
||||
}
|
||||
|
||||
#ifndef ANDROID // Android does not support pthread_cancel
|
||||
|
||||
void sighandler(int s) {}
|
||||
|
||||
void* signaler(void* arg) {
|
||||
@@ -272,6 +274,8 @@ TEST(EpollTest, UnblockWithSignal) {
|
||||
EXPECT_THAT(pthread_detach(thread), SyscallSucceeds());
|
||||
}
|
||||
|
||||
#endif // ANDROID
|
||||
|
||||
TEST(EpollTest, TimeoutNoFds) {
|
||||
auto epollfd = ASSERT_NO_ERRNO_AND_VALUE(NewEpollFD());
|
||||
struct epoll_event result[kFDsPerEpoll];
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
|
||||
#include "absl/strings/numbers.h"
|
||||
|
||||
#ifndef ANDROID // Conflicts with existing operator<< on Android.
|
||||
|
||||
// Pretty-print a sigset_t.
|
||||
std::ostream& operator<<(std::ostream& out, const sigset_t& s) {
|
||||
out << "{ ";
|
||||
@@ -40,6 +42,8 @@ std::ostream& operator<<(std::ostream& out, const sigset_t& s) {
|
||||
return out;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// Verify that the signo handler is handler.
|
||||
int CheckSigHandler(uint32_t signo, uintptr_t handler) {
|
||||
struct sigaction sa;
|
||||
|
||||
@@ -174,13 +174,21 @@ SocketKind IPv6TCPUnboundSocket(int type) {
|
||||
|
||||
PosixError IfAddrHelper::Load() {
|
||||
Release();
|
||||
#ifndef ANDROID
|
||||
RETURN_ERROR_IF_SYSCALL_FAIL(getifaddrs(&ifaddr_));
|
||||
#else
|
||||
// Android does not support getifaddrs in r22.
|
||||
return PosixError(ENOSYS, "getifaddrs");
|
||||
#endif
|
||||
return NoError();
|
||||
}
|
||||
|
||||
void IfAddrHelper::Release() {
|
||||
if (ifaddr_) {
|
||||
#ifndef ANDROID
|
||||
// Android does not support freeifaddrs in r22.
|
||||
freeifaddrs(ifaddr_);
|
||||
#endif
|
||||
ifaddr_ = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,7 +150,7 @@ TEST(LseekTest, SeekCurrentDir) {
|
||||
// From include/linux/fs.h.
|
||||
constexpr loff_t MAX_LFS_FILESIZE = 0x7fffffffffffffff;
|
||||
|
||||
char* dir = get_current_dir_name();
|
||||
char* dir = getcwd(NULL, 0);
|
||||
const FileDescriptor fd = ASSERT_NO_ERRNO_AND_VALUE(Open(dir, O_RDONLY));
|
||||
|
||||
ASSERT_THAT(lseek(fd.get(), 0, SEEK_CUR), SyscallSucceeds());
|
||||
|
||||
@@ -291,6 +291,9 @@ TEST_P(PipeTest, Seek) {
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef ANDROID
|
||||
// Android does not support preadv or pwritev in r22.
|
||||
|
||||
TEST_P(PipeTest, OffsetCalls) {
|
||||
SKIP_IF(!CreateBlocking());
|
||||
|
||||
@@ -307,6 +310,8 @@ TEST_P(PipeTest, OffsetCalls) {
|
||||
EXPECT_THAT(pwritev(rfd_.get(), &iov, 1, 0), SyscallFailsWithErrno(ESPIPE));
|
||||
}
|
||||
|
||||
#endif // ANDROID
|
||||
|
||||
TEST_P(PipeTest, WriterSideCloses) {
|
||||
SKIP_IF(!CreateBlocking());
|
||||
|
||||
|
||||
@@ -157,7 +157,8 @@ TEST_F(ReadTest, PartialReadSIGSEGV) {
|
||||
.iov_len = size,
|
||||
},
|
||||
};
|
||||
EXPECT_THAT(preadv(fd.get(), iov, ABSL_ARRAYSIZE(iov), 0),
|
||||
EXPECT_THAT(lseek(fd.get(), 0, SEEK_SET), SyscallSucceeds());
|
||||
EXPECT_THAT(readv(fd.get(), iov, ABSL_ARRAYSIZE(iov)),
|
||||
SyscallSucceedsWithValue(size));
|
||||
}
|
||||
|
||||
|
||||
@@ -58,8 +58,10 @@ PosixErrorOr<std::unique_ptr<Tunnel>> Tunnel::New(string tunnel_name) {
|
||||
}
|
||||
|
||||
std::unordered_set<string> GetInterfaceNames() {
|
||||
struct if_nameindex* interfaces = if_nameindex();
|
||||
std::unordered_set<string> names;
|
||||
#ifndef ANDROID
|
||||
// Android does not support if_nameindex in r22.
|
||||
struct if_nameindex* interfaces = if_nameindex();
|
||||
if (interfaces == nullptr) {
|
||||
return names;
|
||||
}
|
||||
@@ -68,6 +70,7 @@ std::unordered_set<string> GetInterfaceNames() {
|
||||
names.insert(interface->if_name);
|
||||
}
|
||||
if_freenameindex(interfaces);
|
||||
#endif
|
||||
return names;
|
||||
}
|
||||
|
||||
|
||||
@@ -38,8 +38,8 @@ TEST_P(IPv6UDPUnboundExternalNetworkingSocketTest, TestJoinLeaveMulticast) {
|
||||
ipv6_mreq group_req = {
|
||||
.ipv6mr_multiaddr =
|
||||
reinterpret_cast<sockaddr_in6*>(&multicast_addr.addr)->sin6_addr,
|
||||
.ipv6mr_interface =
|
||||
(unsigned int)ASSERT_NO_ERRNO_AND_VALUE(InterfaceIndex("lo")),
|
||||
.ipv6mr_interface = static_cast<decltype(ipv6_mreq::ipv6mr_interface)>(
|
||||
ASSERT_NO_ERRNO_AND_VALUE(InterfaceIndex("lo"))),
|
||||
};
|
||||
ASSERT_THAT(setsockopt(receiver->get(), IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP,
|
||||
&group_req, sizeof(group_req)),
|
||||
|
||||
Reference in New Issue
Block a user