summaryrefslogtreecommitdiffhomepage
path: root/test/syscalls
diff options
context:
space:
mode:
authorNicolas Lacasse <nlacasse@google.com>2019-04-29 14:03:04 -0700
committerShentubot <shentubot@google.com>2019-04-29 14:04:14 -0700
commitf4ce43e1f426148d99c28c1b0e5c43ddda17a8cb (patch)
treeef64d18350874742742599c8b059b333eb060920 /test/syscalls
parent38e627644756400413fffe7222cdd5200dc4eccf (diff)
Allow and document bug ids in gVisor codebase.
PiperOrigin-RevId: 245818639 Change-Id: I03703ef0fb9b6675955637b9fe2776204c545789
Diffstat (limited to 'test/syscalls')
-rw-r--r--test/syscalls/BUILD6
-rw-r--r--test/syscalls/build_defs.bzl4
-rw-r--r--test/syscalls/linux/32bit.cc14
-rw-r--r--test/syscalls/linux/aio.cc2
-rw-r--r--test/syscalls/linux/chmod.cc2
-rw-r--r--test/syscalls/linux/epoll.cc2
-rw-r--r--test/syscalls/linux/exec_binary.cc12
-rw-r--r--test/syscalls/linux/file_base.h4
-rw-r--r--test/syscalls/linux/ioctl.cc4
-rw-r--r--test/syscalls/linux/ip_socket_test_util.cc2
-rw-r--r--test/syscalls/linux/lseek.cc2
-rw-r--r--test/syscalls/linux/mkdir.cc2
-rw-r--r--test/syscalls/linux/mmap.cc18
-rw-r--r--test/syscalls/linux/open.cc2
-rw-r--r--test/syscalls/linux/partial_bad_buffer.cc18
-rw-r--r--test/syscalls/linux/pipe.cc6
-rw-r--r--test/syscalls/linux/proc.cc32
-rw-r--r--test/syscalls/linux/proc_pid_smaps.cc2
-rw-r--r--test/syscalls/linux/ptrace.cc2
-rw-r--r--test/syscalls/linux/pwrite64.cc2
-rw-r--r--test/syscalls/linux/readv_socket.cc2
-rw-r--r--test/syscalls/linux/rtsignal.cc2
-rw-r--r--test/syscalls/linux/socket_inet_loopback.cc10
-rw-r--r--test/syscalls/linux/socket_ipv4_udp_unbound_external_networking.cc4
-rw-r--r--test/syscalls/linux/socket_netlink_route.cc4
-rw-r--r--test/syscalls/linux/socket_stream_blocking.cc2
-rw-r--r--test/syscalls/linux/socket_test_util.cc2
-rw-r--r--test/syscalls/linux/socket_unix.cc16
-rw-r--r--test/syscalls/linux/socket_unix_dgram.cc2
-rw-r--r--test/syscalls/linux/socket_unix_dgram_non_blocking.cc2
-rw-r--r--test/syscalls/linux/socket_unix_non_stream.cc10
-rw-r--r--test/syscalls/linux/socket_unix_unbound_seqpacket.cc2
-rw-r--r--test/syscalls/linux/socket_unix_unbound_stream.cc4
-rw-r--r--test/syscalls/linux/stat.cc2
-rw-r--r--test/syscalls/linux/stat_times.cc8
-rw-r--r--test/syscalls/linux/tcp_socket.cc2
-rw-r--r--test/syscalls/linux/tkill.cc2
-rw-r--r--test/syscalls/linux/udp_bind.cc4
-rw-r--r--test/syscalls/linux/uidgid.cc2
-rw-r--r--test/syscalls/linux/utimes.cc4
-rw-r--r--test/syscalls/linux/wait.cc2
-rw-r--r--test/syscalls/linux/write.cc2
42 files changed, 114 insertions, 114 deletions
diff --git a/test/syscalls/BUILD b/test/syscalls/BUILD
index 94e0f24e0..d35f59433 100644
--- a/test/syscalls/BUILD
+++ b/test/syscalls/BUILD
@@ -277,7 +277,7 @@ syscall_test(test = "//test/syscalls/linux:sendfile_test")
syscall_test(test = "//test/syscalls/linux:sigaction_test")
-# TODO: Enable once the test passes in runsc.
+# TODO(b/119826902): Enable once the test passes in runsc.
# syscall_test(test = "//test/syscalls/linux:sigaltstack_test")
syscall_test(test = "//test/syscalls/linux:sigiret_test")
@@ -414,7 +414,7 @@ syscall_test(
)
syscall_test(
- # NOTE: Large sendmsg may stall a long time.
+ # NOTE(b/116636318): Large sendmsg may stall a long time.
size = "enormous",
test = "//test/syscalls/linux:socket_unix_dgram_local_test",
)
@@ -437,7 +437,7 @@ syscall_test(
)
syscall_test(
- # NOTE: Large sendmsg may stall a long time.
+ # NOTE(b/116636318): Large sendmsg may stall a long time.
size = "enormous",
test = "//test/syscalls/linux:socket_unix_seqpacket_local_test",
)
diff --git a/test/syscalls/build_defs.bzl b/test/syscalls/build_defs.bzl
index 610b030b2..cd74a769d 100644
--- a/test/syscalls/build_defs.bzl
+++ b/test/syscalls/build_defs.bzl
@@ -78,10 +78,10 @@ def _syscall_test(
tags += [full_platform, "file_" + file_access]
# Add tag to prevent the tests from running in a Bazel sandbox.
- # TODO: Make the tests run without this tag.
+ # TODO(b/120560048): Make the tests run without this tag.
tags.append("no-sandbox")
- # TODO: KVM tests are tagged "manual" to until the platform is
+ # TODO(b/112165693): KVM tests are tagged "manual" to until the platform is
# more stable.
if platform == "kvm":
tags += ["manual"]
diff --git a/test/syscalls/linux/32bit.cc b/test/syscalls/linux/32bit.cc
index 230648c9b..78baf548e 100644
--- a/test/syscalls/linux/32bit.cc
+++ b/test/syscalls/linux/32bit.cc
@@ -80,11 +80,11 @@ constexpr int kExitCode = 42;
TEST(Syscall32Bit, Int80) {
switch (GvisorPlatform()) {
case Platform::kKVM:
- // TODO: 32-bit segments are broken (but not explictly
+ // TODO(b/111805002): 32-bit segments are broken (but not explictly
// disabled).
return;
case Platform::kPtrace:
- // TODO: The ptrace platform does not have a
+ // TODO(gvisor.dev/issue/167): The ptrace platform does not have a
// consistent story here.
return;
case Platform::kNative:
@@ -99,10 +99,10 @@ TEST(Syscall32Bit, Int80) {
TEST(Syscall32Bit, Sysenter) {
switch (GvisorPlatform()) {
case Platform::kKVM:
- // TODO: See above.
+ // TODO(b/111805002): See above.
return;
case Platform::kPtrace:
- // TODO: See above.
+ // TODO(gvisor.dev/issue/167): See above.
return;
case Platform::kNative:
break;
@@ -123,10 +123,10 @@ TEST(Syscall32Bit, Sysenter) {
TEST(Syscall32Bit, Syscall) {
switch (GvisorPlatform()) {
case Platform::kKVM:
- // TODO: See above.
+ // TODO(b/111805002): See above.
return;
case Platform::kPtrace:
- // TODO: See above.
+ // TODO(gvisor.dev/issue/167): See above.
return;
case Platform::kNative:
break;
@@ -207,7 +207,7 @@ void FarCall32() {
TEST(Call32Bit, Disallowed) {
switch (GvisorPlatform()) {
case Platform::kKVM:
- // TODO: See above.
+ // TODO(b/111805002): See above.
return;
case Platform::kPtrace:
// The ptrace platform cannot prevent switching to compatibility mode.
diff --git a/test/syscalls/linux/aio.cc b/test/syscalls/linux/aio.cc
index 06643ccb8..b96aab9b9 100644
--- a/test/syscalls/linux/aio.cc
+++ b/test/syscalls/linux/aio.cc
@@ -103,7 +103,7 @@ TEST_F(AIOTest, BasicWrite) {
// aio implementation uses aio_ring. gVisor doesn't and returns all zeroes.
// Linux implements aio_ring, so skip the zeroes check.
//
- // TODO: Remove when gVisor implements aio_ring.
+ // TODO(b/65486370): Remove when gVisor implements aio_ring.
auto ring = reinterpret_cast<struct aio_ring*>(ctx_);
auto magic = IsRunningOnGvisor() ? 0 : AIO_RING_MAGIC;
EXPECT_EQ(ring->magic, magic);
diff --git a/test/syscalls/linux/chmod.cc b/test/syscalls/linux/chmod.cc
index 2f2ff3b7d..2f42fe326 100644
--- a/test/syscalls/linux/chmod.cc
+++ b/test/syscalls/linux/chmod.cc
@@ -235,7 +235,7 @@ TEST(ChmodTest, FchmodFileToNoPermissionsSucceeds_NoRandomSave) {
// Verify that we can get a RW FD after chmod, even if a RO fd is left open.
TEST(ChmodTest, ChmodWritableWithOpenFD) {
- // FIXME: broken on hostfs.
+ // FIXME(b/72455313): broken on hostfs.
if (IsRunningOnGvisor()) {
return;
}
diff --git a/test/syscalls/linux/epoll.cc b/test/syscalls/linux/epoll.cc
index 7b1d83ad8..b4a3bfcba 100644
--- a/test/syscalls/linux/epoll.cc
+++ b/test/syscalls/linux/epoll.cc
@@ -56,7 +56,7 @@ TEST(EpollTest, AllWritable) {
struct epoll_event result[kFDsPerEpoll];
ASSERT_THAT(RetryEINTR(epoll_wait)(epollfd.get(), result, kFDsPerEpoll, -1),
SyscallSucceedsWithValue(kFDsPerEpoll));
- // TODO: Why do some tests check epoll_event::data, and others
+ // TODO(edahlgren): Why do some tests check epoll_event::data, and others
// don't? Does Linux actually guarantee that, in any of these test cases,
// epoll_wait will necessarily write out the epoll_events in the order that
// they were registered?
diff --git a/test/syscalls/linux/exec_binary.cc b/test/syscalls/linux/exec_binary.cc
index 187696ed9..c10d85398 100644
--- a/test/syscalls/linux/exec_binary.cc
+++ b/test/syscalls/linux/exec_binary.cc
@@ -285,7 +285,7 @@ ElfBinary<64> StandardElf() {
elf.header.e_phoff = sizeof(elf.header);
elf.header.e_phentsize = sizeof(decltype(elf)::ElfPhdr);
- // TODO: Always include a PT_GNU_STACK segment to
+ // TODO(gvisor.dev/issue/153): Always include a PT_GNU_STACK segment to
// disable executable stacks. With this omitted the stack (and all PROT_READ)
// mappings should be executable, but gVisor doesn't support that.
decltype(elf)::ElfPhdr phdr = {};
@@ -403,7 +403,7 @@ TEST(ElfTest, DataSegment) {
// Linux will allow PT_LOAD segments to overlap.
TEST(ElfTest, DirectlyOverlappingSegments) {
- // NOTE: see PIEOutOfOrderSegments.
+ // NOTE(b/37289926): see PIEOutOfOrderSegments.
SKIP_IF(IsRunningOnGvisor());
ElfBinary<64> elf = StandardElf();
@@ -439,7 +439,7 @@ TEST(ElfTest, DirectlyOverlappingSegments) {
// Linux allows out-of-order PT_LOAD segments.
TEST(ElfTest, OutOfOrderSegments) {
- // NOTE: see PIEOutOfOrderSegments.
+ // NOTE(b/37289926): see PIEOutOfOrderSegments.
SKIP_IF(IsRunningOnGvisor());
ElfBinary<64> elf = StandardElf();
@@ -670,7 +670,7 @@ TEST(ElfTest, PIENonZeroStart) {
}
TEST(ElfTest, PIEOutOfOrderSegments) {
- // TODO: This triggers a bug in Linux where it computes the size
+ // TODO(b/37289926): This triggers a bug in Linux where it computes the size
// of the binary as 0x20000 - 0x40000 = 0xfffffffffffe0000, which obviously
// fails to map.
//
@@ -1005,7 +1005,7 @@ TEST(ElfTest, NoExecute) {
// Execute, but no read permissions on the binary works just fine.
TEST(ElfTest, NoRead) {
- // TODO: gVisor's backing filesystem may prevent the
+ // TODO(gvisor.dev/issue/160): gVisor's backing filesystem may prevent the
// sentry from reading the executable.
SKIP_IF(IsRunningOnGvisor());
@@ -1024,7 +1024,7 @@ TEST(ElfTest, NoRead) {
ASSERT_NO_ERRNO(WaitStopped(child));
- // TODO: A task with a non-readable executable is marked
+ // TODO(gvisor.dev/issue/160): A task with a non-readable executable is marked
// non-dumpable, preventing access to proc files. gVisor does not implement
// this behavior.
}
diff --git a/test/syscalls/linux/file_base.h b/test/syscalls/linux/file_base.h
index 19c9a5053..43f568111 100644
--- a/test/syscalls/linux/file_base.h
+++ b/test/syscalls/linux/file_base.h
@@ -52,7 +52,7 @@ class FileTest : public ::testing::Test {
test_file_fd_ = ASSERT_NO_ERRNO_AND_VALUE(
Open(test_file_name_, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR));
- // FIXME: enable when mknod syscall is supported.
+ // FIXME(edahlgren): enable when mknod syscall is supported.
// test_fifo_name_ = NewTempAbsPath();
// ASSERT_THAT(mknod(test_fifo_name_.c_str()), S_IFIFO|0644, 0,
// SyscallSucceeds());
@@ -97,7 +97,7 @@ class FileTest : public ::testing::Test {
UnlinkFile();
ClosePipes();
- // FIXME: enable when mknod syscall is supported.
+ // FIXME(edahlgren): enable when mknod syscall is supported.
// close(test_fifo_[0]);
// close(test_fifo_[1]);
// unlink(test_fifo_name_.c_str());
diff --git a/test/syscalls/linux/ioctl.cc b/test/syscalls/linux/ioctl.cc
index de29047e0..c7741a177 100644
--- a/test/syscalls/linux/ioctl.cc
+++ b/test/syscalls/linux/ioctl.cc
@@ -158,7 +158,7 @@ TEST_F(IoctlTest, FIOASYNCNoTarget) {
}
TEST_F(IoctlTest, FIOASYNCSelfTarget) {
- // FIXME: gVisor erroneously sends SIGIO on close(2), which would
+ // FIXME(b/120624367): gVisor erroneously sends SIGIO on close(2), which would
// kill the test when pair goes out of scope. Temporarily ignore SIGIO so that
// that the close signal is ignored.
struct sigaction sa;
@@ -195,7 +195,7 @@ TEST_F(IoctlTest, FIOASYNCSelfTarget) {
// Equivalent to FIOASYNCSelfTarget except that FIOSETOWN is called before
// FIOASYNC.
TEST_F(IoctlTest, FIOASYNCSelfTarget2) {
- // FIXME: gVisor erroneously sends SIGIO on close(2), which would
+ // FIXME(b/120624367): gVisor erroneously sends SIGIO on close(2), which would
// kill the test when pair goes out of scope. Temporarily ignore SIGIO so that
// that the close signal is ignored.
struct sigaction sa;
diff --git a/test/syscalls/linux/ip_socket_test_util.cc b/test/syscalls/linux/ip_socket_test_util.cc
index 4ad787cc0..0a149c2e5 100644
--- a/test/syscalls/linux/ip_socket_test_util.cc
+++ b/test/syscalls/linux/ip_socket_test_util.cc
@@ -24,7 +24,7 @@ namespace gvisor {
namespace testing {
PosixErrorOr<int> InterfaceIndex(std::string name) {
- // TODO: Consider using netlink.
+ // TODO(igudger): Consider using netlink.
ifreq req = {};
memcpy(req.ifr_name, name.c_str(), name.size());
ASSIGN_OR_RETURN_ERRNO(auto sock, Socket(AF_INET, SOCK_DGRAM, 0));
diff --git a/test/syscalls/linux/lseek.cc b/test/syscalls/linux/lseek.cc
index fb6a1546e..6a4f1423c 100644
--- a/test/syscalls/linux/lseek.cc
+++ b/test/syscalls/linux/lseek.cc
@@ -194,7 +194,7 @@ TEST(LseekTest, EtcPasswdDup) {
ASSERT_THAT(lseek(fd3.get(), 0, SEEK_CUR), SyscallSucceedsWithValue(1000));
}
-// TODO: Add tests where we have donated in sockets.
+// TODO(magi): Add tests where we have donated in sockets.
} // namespace
diff --git a/test/syscalls/linux/mkdir.cc b/test/syscalls/linux/mkdir.cc
index 84db45eb3..50807b68f 100644
--- a/test/syscalls/linux/mkdir.cc
+++ b/test/syscalls/linux/mkdir.cc
@@ -36,7 +36,7 @@ class MkdirTest : public ::testing::Test {
// TearDown unlinks created files.
void TearDown() override {
- // FIXME: We don't currently implement rmdir.
+ // FIXME(edahlgren): We don't currently implement rmdir.
// We do this unconditionally because there's no harm in trying.
rmdir(dirname_.c_str());
}
diff --git a/test/syscalls/linux/mmap.cc b/test/syscalls/linux/mmap.cc
index b500e79a4..a4fb9d1e0 100644
--- a/test/syscalls/linux/mmap.cc
+++ b/test/syscalls/linux/mmap.cc
@@ -816,7 +816,7 @@ class MMapFileTest : public MMapTest {
// MAP_POPULATE allowed.
// There isn't a good way to verify it actually did anything.
//
-// FIXME: Parameterize.
+// FIXME(b/37222275): Parameterize.
TEST_F(MMapFileTest, MapPopulate) {
ASSERT_THAT(
Map(0, kPageSize, PROT_READ, MAP_PRIVATE | MAP_POPULATE, fd_.get(), 0),
@@ -825,7 +825,7 @@ TEST_F(MMapFileTest, MapPopulate) {
// MAP_POPULATE on a short file.
//
-// FIXME: Parameterize.
+// FIXME(b/37222275): Parameterize.
TEST_F(MMapFileTest, MapPopulateShort) {
ASSERT_THAT(Map(0, 2 * kPageSize, PROT_READ, MAP_PRIVATE | MAP_POPULATE,
fd_.get(), 0),
@@ -923,7 +923,7 @@ TEST_F(MMapFileTest, WriteSharedOnReadOnlyFd) {
// MAP_SHARED PROT_READ not allowed on write-only FDs.
//
-// FIXME: Parameterize.
+// FIXME(b/37222275): Parameterize.
TEST_F(MMapFileTest, ReadSharedOnWriteOnlyFd) {
const FileDescriptor fd =
ASSERT_NO_ERRNO_AND_VALUE(Open(filename_, O_WRONLY));
@@ -936,7 +936,7 @@ TEST_F(MMapFileTest, ReadSharedOnWriteOnlyFd) {
// MAP_SHARED PROT_WRITE not allowed on write-only FDs.
// The FD must always be readable.
//
-// FIXME: Parameterize.
+// FIXME(b/37222275): Parameterize.
TEST_F(MMapFileTest, WriteSharedOnWriteOnlyFd) {
const FileDescriptor fd =
ASSERT_NO_ERRNO_AND_VALUE(Open(filename_, O_WRONLY));
@@ -1371,7 +1371,7 @@ TEST_F(MMapFileTest, WritePrivate) {
// SIGBUS raised when writing past end of file to a private mapping.
//
-// FIXME: Parameterize.
+// FIXME(b/37222275): Parameterize.
TEST_F(MMapFileTest, SigBusDeathWritePrivate) {
SetupGvisorDeathTest();
@@ -1390,7 +1390,7 @@ TEST_F(MMapFileTest, SigBusDeathWritePrivate) {
// SIGBUS raised when reading past end of file on a shared mapping.
//
-// FIXME: Parameterize.
+// FIXME(b/37222275): Parameterize.
TEST_F(MMapFileTest, SigBusDeathReadShared) {
SetupGvisorDeathTest();
@@ -1410,7 +1410,7 @@ TEST_F(MMapFileTest, SigBusDeathReadShared) {
// SIGBUS raised when reading past end of file on a shared mapping.
//
-// FIXME: Parameterize.
+// FIXME(b/37222275): Parameterize.
TEST_F(MMapFileTest, SigBusDeathWriteShared) {
SetupGvisorDeathTest();
@@ -1459,7 +1459,7 @@ TEST_F(MMapFileTest, NoSigBusOnPageContainingEOFWritePrivate) {
// Tests that SIGBUS is not raised when reading from a file-mapped page
// containing EOF, *after* the EOF for a shared mapping.
//
-// FIXME: Parameterize.
+// FIXME(b/37222275): Parameterize.
TEST_F(MMapFileTest, NoSigBusOnPageContainingEOFReadShared) {
uintptr_t addr;
ASSERT_THAT(addr = Map(0, 2 * kPageSize, PROT_READ, MAP_SHARED, fd_.get(), 0),
@@ -1476,7 +1476,7 @@ TEST_F(MMapFileTest, NoSigBusOnPageContainingEOFReadShared) {
// Tests that SIGBUS is not raised when writing to a file-mapped page containing
// EOF, *after* the EOF for a shared mapping.
//
-// FIXME: Parameterize.
+// FIXME(b/37222275): Parameterize.
TEST_F(MMapFileTest, NoSigBusOnPageContainingEOFWriteShared) {
uintptr_t addr;
ASSERT_THAT(addr = Map(0, 2 * kPageSize, PROT_READ | PROT_WRITE, MAP_SHARED,
diff --git a/test/syscalls/linux/open.cc b/test/syscalls/linux/open.cc
index cdc226300..22e4666c2 100644
--- a/test/syscalls/linux/open.cc
+++ b/test/syscalls/linux/open.cc
@@ -279,7 +279,7 @@ TEST_F(OpenTest, Null) {
ASSERT_THAT(open(&c, O_RDONLY), SyscallFailsWithErrno(ENOENT));
}
-// NOTE: While the man pages specify that this behavior should be
+// NOTE(b/119785738): While the man pages specify that this behavior should be
// undefined, Linux truncates the file on opening read only if we have write
// permission, so we will too.
TEST_F(OpenTest, CanTruncateReadOnly) {
diff --git a/test/syscalls/linux/partial_bad_buffer.cc b/test/syscalls/linux/partial_bad_buffer.cc
index 073a6b8c1..71288ebc4 100644
--- a/test/syscalls/linux/partial_bad_buffer.cc
+++ b/test/syscalls/linux/partial_bad_buffer.cc
@@ -158,7 +158,7 @@ TEST_F(PartialBadBufferTest, PreadvSmall) {
}
TEST_F(PartialBadBufferTest, WriteBig) {
- // FIXME: The sentry write syscalls will return immediately
+ // FIXME(b/24788078): The sentry write syscalls will return immediately
// if Access returns an error, but Access may not return an error
// and the sentry will instead perform a partial write.
SKIP_IF(IsRunningOnGvisor());
@@ -168,7 +168,7 @@ TEST_F(PartialBadBufferTest, WriteBig) {
}
TEST_F(PartialBadBufferTest, WriteSmall) {
- // FIXME: The sentry write syscalls will return immediately
+ // FIXME(b/24788078): The sentry write syscalls will return immediately
// if Access returns an error, but Access may not return an error
// and the sentry will instead perform a partial write.
SKIP_IF(IsRunningOnGvisor());
@@ -178,7 +178,7 @@ TEST_F(PartialBadBufferTest, WriteSmall) {
}
TEST_F(PartialBadBufferTest, PwriteBig) {
- // FIXME: The sentry write syscalls will return immediately
+ // FIXME(b/24788078): The sentry write syscalls will return immediately
// if Access returns an error, but Access may not return an error
// and the sentry will instead perform a partial write.
SKIP_IF(IsRunningOnGvisor());
@@ -188,7 +188,7 @@ TEST_F(PartialBadBufferTest, PwriteBig) {
}
TEST_F(PartialBadBufferTest, PwriteSmall) {
- // FIXME: The sentry write syscalls will return immediately
+ // FIXME(b/24788078): The sentry write syscalls will return immediately
// if Access returns an error, but Access may not return an error
// and the sentry will instead perform a partial write.
SKIP_IF(IsRunningOnGvisor());
@@ -198,7 +198,7 @@ TEST_F(PartialBadBufferTest, PwriteSmall) {
}
TEST_F(PartialBadBufferTest, WritevBig) {
- // FIXME: The sentry write syscalls will return immediately
+ // FIXME(b/24788078): The sentry write syscalls will return immediately
// if Access returns an error, but Access may not return an error
// and the sentry will instead perform a partial write.
SKIP_IF(IsRunningOnGvisor());
@@ -211,7 +211,7 @@ TEST_F(PartialBadBufferTest, WritevBig) {
}
TEST_F(PartialBadBufferTest, WritevSmall) {
- // FIXME: The sentry write syscalls will return immediately
+ // FIXME(b/24788078): The sentry write syscalls will return immediately
// if Access returns an error, but Access may not return an error
// and the sentry will instead perform a partial write.
SKIP_IF(IsRunningOnGvisor());
@@ -224,7 +224,7 @@ TEST_F(PartialBadBufferTest, WritevSmall) {
}
TEST_F(PartialBadBufferTest, PwritevBig) {
- // FIXME: The sentry write syscalls will return immediately
+ // FIXME(b/24788078): The sentry write syscalls will return immediately
// if Access returns an error, but Access may not return an error
// and the sentry will instead perform a partial write.
SKIP_IF(IsRunningOnGvisor());
@@ -238,7 +238,7 @@ TEST_F(PartialBadBufferTest, PwritevBig) {
}
TEST_F(PartialBadBufferTest, PwritevSmall) {
- // FIXME: The sentry write syscalls will return immediately
+ // FIXME(b/24788078): The sentry write syscalls will return immediately
// if Access returns an error, but Access may not return an error
// and the sentry will instead perform a partial write.
SKIP_IF(IsRunningOnGvisor());
@@ -279,7 +279,7 @@ TEST_F(PartialBadBufferTest, GetdentsOneEntry) {
// Verify that when write returns EFAULT the kernel hasn't silently written
// the initial valid bytes.
TEST_F(PartialBadBufferTest, WriteEfaultIsntPartial) {
- // FIXME: The sentry write syscalls will return immediately
+ // FIXME(b/24788078): The sentry write syscalls will return immediately
// if Access returns an error, but Access may not return an error
// and the sentry will instead perform a partial write.
SKIP_IF(IsRunningOnGvisor());
diff --git a/test/syscalls/linux/pipe.cc b/test/syscalls/linux/pipe.cc
index c49ec9f09..abd10b11b 100644
--- a/test/syscalls/linux/pipe.cc
+++ b/test/syscalls/linux/pipe.cc
@@ -36,7 +36,7 @@ namespace {
// Buffer size of a pipe.
//
-// TODO: Get this from F_GETPIPE_SZ.
+// TODO(b/35762278): Get this from F_GETPIPE_SZ.
constexpr int kPipeSize = 65536;
class PipeTest : public ::testing::Test {
@@ -316,7 +316,7 @@ TEST_F(PipeTest, BlockWriteClosed) {
// Blocking write returns EPIPE when read end is closed even if something has
// been written.
//
-// FIXME: Pipe writes blocking early allows S/R to interrupt the
+// FIXME(b/35924046): Pipe writes blocking early allows S/R to interrupt the
// write(2) call before the buffer is full. Then the next call will will return
// non-zero instead of EPIPE.
TEST_F(PipeTest, BlockPartialWriteClosed_NoRandomSave) {
@@ -329,7 +329,7 @@ TEST_F(PipeTest, BlockPartialWriteClosed_NoRandomSave) {
// Write more than fits in the buffer. Blocks then returns partial write
// when the other end is closed. The next call returns EPIPE.
if (IsRunningOnGvisor()) {
- // FIXME: Pipe writes block early on gVisor, resulting in a
+ // FIXME(b/35924046): Pipe writes block early on gVisor, resulting in a
// shorter than expected partial write.
ASSERT_THAT(write(wfd, buf.data(), buf.size()),
SyscallSucceedsWithValue(::testing::Gt(0)));
diff --git a/test/syscalls/linux/proc.cc b/test/syscalls/linux/proc.cc
index 3ec31ae8b..7ba274226 100644
--- a/test/syscalls/linux/proc.cc
+++ b/test/syscalls/linux/proc.cc
@@ -61,7 +61,7 @@
#include "test/util/thread_util.h"
#include "test/util/timer_util.h"
-// NOTE: No, this isn't really a syscall but this is a really simple
+// NOTE(magi): No, this isn't really a syscall but this is a really simple
// way to get it tested on both gVisor, PTrace and Linux.
using ::testing::AllOf;
@@ -489,7 +489,7 @@ TEST(ProcSelfMaps, Map1) {
}
TEST(ProcSelfMaps, Map2) {
- // NOTE: The permissions must be different or the pages will get merged.
+ // NOTE(magi): The permissions must be different or the pages will get merged.
Mapping map1 = ASSERT_NO_ERRNO_AND_VALUE(
MmapAnon(kPageSize, PROT_READ | PROT_EXEC, MAP_PRIVATE));
Mapping map2 =
@@ -564,7 +564,7 @@ TEST(ProcSelfMaps, MapUnmap) {
}
TEST(ProcSelfMaps, Mprotect) {
- // FIXME: Linux's mprotect() sometimes fails to merge VMAs in this
+ // FIXME(jamieliu): Linux's mprotect() sometimes fails to merge VMAs in this
// case.
SKIP_IF(!IsRunningOnGvisor());
@@ -977,7 +977,7 @@ void MapPopulateRSS(int prot, uint64_t* before, uint64_t* after) {
*after = ASSERT_NO_ERRNO_AND_VALUE(CurrentRSS());
}
-// TODO: Test for PROT_READ + MAP_POPULATE anonymous mappings. Their
+// TODO(b/73896574): Test for PROT_READ + MAP_POPULATE anonymous mappings. Their
// semantics are more subtle:
//
// Small pages -> Zero page mapped, not counted in RSS
@@ -1140,7 +1140,7 @@ TEST(ProcPidStatusTest, ValuesAreTabDelimited) {
// Threads properly counts running threads.
//
-// TODO: Test zombied threads while the thread group leader is still
+// TODO(mpratt): Test zombied threads while the thread group leader is still
// running with generalized fork and clone children from the wait test.
TEST(ProcPidStatusTest, Threads) {
char buf[4096] = {};
@@ -1274,7 +1274,7 @@ TEST(ProcPidSymlink, SubprocessRunning) {
SyscallSucceedsWithValue(sizeof(buf)));
}
-// FIXME: Inconsistent behavior between gVisor and linux
+// FIXME(gvisor.dev/issue/164): Inconsistent behavior between gVisor and linux
// on proc files.
TEST(ProcPidSymlink, SubprocessZombied) {
ASSERT_NO_ERRNO(SetCapability(CAP_DAC_OVERRIDE, false));
@@ -1298,13 +1298,13 @@ TEST(ProcPidSymlink, SubprocessZombied) {
SyscallFailsWithErrno(want));
}
- // FIXME: Inconsistent behavior between gVisor and linux
+ // FIXME(gvisor.dev/issue/164): Inconsistent behavior between gVisor and linux
// on proc files.
// 4.17 & gVisor: Syscall succeeds and returns 1
// EXPECT_THAT(ReadlinkWhileZombied("ns/pid", buf, sizeof(buf)),
// SyscallFailsWithErrno(EACCES));
- // FIXME: Inconsistent behavior between gVisor and linux
+ // FIXME(gvisor.dev/issue/164): Inconsistent behavior between gVisor and linux
// on proc files.
// 4.17 & gVisor: Syscall succeeds and returns 1.
// EXPECT_THAT(ReadlinkWhileZombied("ns/user", buf, sizeof(buf)),
@@ -1313,7 +1313,7 @@ TEST(ProcPidSymlink, SubprocessZombied) {
// Test whether /proc/PID/ symlinks can be read for an exited process.
TEST(ProcPidSymlink, SubprocessExited) {
- // FIXME: These all succeed on gVisor.
+ // FIXME(gvisor.dev/issue/164): These all succeed on gVisor.
SKIP_IF(IsRunningOnGvisor());
char buf[1];
@@ -1404,7 +1404,7 @@ TEST(ProcPidFile, SubprocessZombie) {
EXPECT_THAT(ReadWhileZombied("uid_map", buf, sizeof(buf)),
SyscallSucceedsWithValue(sizeof(buf)));
- // FIXME: Inconsistent behavior between gVisor and linux
+ // FIXME(gvisor.dev/issue/164): Inconsistent behavior between gVisor and linux
// on proc files.
// gVisor & 4.17: Succeeds and returns 1.
// EXPECT_THAT(ReadWhileZombied("io", buf, sizeof(buf)),
@@ -1415,7 +1415,7 @@ TEST(ProcPidFile, SubprocessZombie) {
TEST(ProcPidFile, SubprocessExited) {
char buf[1];
- // FIXME: Inconsistent behavior between kernels
+ // FIXME(gvisor.dev/issue/164): Inconsistent behavior between kernels
// gVisor: Fails with ESRCH.
// 4.17: Succeeds and returns 1.
// EXPECT_THAT(ReadWhileExited("auxv", buf, sizeof(buf)),
@@ -1425,7 +1425,7 @@ TEST(ProcPidFile, SubprocessExited) {
SyscallFailsWithErrno(ESRCH));
if (!IsRunningOnGvisor()) {
- // FIXME: Succeeds on gVisor.
+ // FIXME(gvisor.dev/issue/164): Succeeds on gVisor.
EXPECT_THAT(ReadWhileExited("comm", buf, sizeof(buf)),
SyscallFailsWithErrno(ESRCH));
}
@@ -1434,25 +1434,25 @@ TEST(ProcPidFile, SubprocessExited) {
SyscallSucceedsWithValue(sizeof(buf)));
if (!IsRunningOnGvisor()) {
- // FIXME: Succeeds on gVisor.
+ // FIXME(gvisor.dev/issue/164): Succeeds on gVisor.
EXPECT_THAT(ReadWhileExited("io", buf, sizeof(buf)),
SyscallFailsWithErrno(ESRCH));
}
if (!IsRunningOnGvisor()) {
- // FIXME: Returns EOF on gVisor.
+ // FIXME(gvisor.dev/issue/164): Returns EOF on gVisor.
EXPECT_THAT(ReadWhileExited("maps", buf, sizeof(buf)),
SyscallFailsWithErrno(ESRCH));
}
if (!IsRunningOnGvisor()) {
- // FIXME: Succeeds on gVisor.
+ // FIXME(gvisor.dev/issue/164): Succeeds on gVisor.
EXPECT_THAT(ReadWhileExited("stat", buf, sizeof(buf)),
SyscallFailsWithErrno(ESRCH));
}
if (!IsRunningOnGvisor()) {
- // FIXME: Succeeds on gVisor.
+ // FIXME(gvisor.dev/issue/164): Succeeds on gVisor.
EXPECT_THAT(ReadWhileExited("status", buf, sizeof(buf)),
SyscallFailsWithErrno(ESRCH));
}
diff --git a/test/syscalls/linux/proc_pid_smaps.cc b/test/syscalls/linux/proc_pid_smaps.cc
index 5f9c42ce5..cf5c462f3 100644
--- a/test/syscalls/linux/proc_pid_smaps.cc
+++ b/test/syscalls/linux/proc_pid_smaps.cc
@@ -82,7 +82,7 @@ struct ProcPidSmapsEntry {
// Given the value part of a /proc/[pid]/smaps field containing a value in kB
// (for example, " 4 kB", returns the value in kB (in this example, 4).
PosixErrorOr<size_t> SmapsValueKb(absl::string_view value) {
- // TODO: let us use RE2 or <regex>
+ // TODO(jamieliu): let us use RE2 or <regex>
std::pair<absl::string_view, absl::string_view> parts =
absl::StrSplit(value, ' ', absl::SkipEmpty());
if (parts.second != "kB") {
diff --git a/test/syscalls/linux/ptrace.cc b/test/syscalls/linux/ptrace.cc
index 1c9d7d4f4..e0c56f1fc 100644
--- a/test/syscalls/linux/ptrace.cc
+++ b/test/syscalls/linux/ptrace.cc
@@ -823,7 +823,7 @@ TEST(PtraceTest,
TEST(PtraceTest, Int3) {
switch (GvisorPlatform()) {
case Platform::kKVM:
- // TODO: int3 isn't handled properly.
+ // TODO(b/124248694): int3 isn't handled properly.
return;
default:
break;
diff --git a/test/syscalls/linux/pwrite64.cc b/test/syscalls/linux/pwrite64.cc
index 60ae6de1f..485b1e48d 100644
--- a/test/syscalls/linux/pwrite64.cc
+++ b/test/syscalls/linux/pwrite64.cc
@@ -30,7 +30,7 @@ namespace {
// This test is currently very rudimentary.
//
-// TODO:
+// TODO(edahlgren):
// * bad buffer states (EFAULT).
// * bad fds (wrong permission, wrong type of file, EBADF).
// * check offset is not incremented.
diff --git a/test/syscalls/linux/readv_socket.cc b/test/syscalls/linux/readv_socket.cc
index 2c129b7e8..cf22c395e 100644
--- a/test/syscalls/linux/readv_socket.cc
+++ b/test/syscalls/linux/readv_socket.cc
@@ -41,7 +41,7 @@ class ReadvSocketTest : public SocketTest {
ASSERT_THAT(write(test_unix_seqpacket_socket_[1], kReadvTestData,
kReadvTestDataSize),
SyscallSucceedsWithValue(kReadvTestDataSize));
- // FIXME: Enable when possible.
+ // FIXME(b/69821513): Enable when possible.
// ASSERT_THAT(write(test_tcp_socket_[1], kReadvTestData,
// kReadvTestDataSize),
// SyscallSucceedsWithValue(kReadvTestDataSize));
diff --git a/test/syscalls/linux/rtsignal.cc b/test/syscalls/linux/rtsignal.cc
index 1f2fed7cc..ff948f9d5 100644
--- a/test/syscalls/linux/rtsignal.cc
+++ b/test/syscalls/linux/rtsignal.cc
@@ -75,7 +75,7 @@ class RtSignalTest : public ::testing::Test {
static int rt_sigqueueinfo(pid_t tgid, int sig, siginfo_t* uinfo) {
int ret;
do {
- // NOTE: rt_sigqueueinfo(2) could return EAGAIN for RT signals.
+ // NOTE(b/25434735): rt_sigqueueinfo(2) could return EAGAIN for RT signals.
ret = syscall(SYS_rt_sigqueueinfo, tgid, sig, uinfo);
} while (ret == -1 && errno == EAGAIN);
return ret;
diff --git a/test/syscalls/linux/socket_inet_loopback.cc b/test/syscalls/linux/socket_inet_loopback.cc
index cdc5c0ce8..14d7827c2 100644
--- a/test/syscalls/linux/socket_inet_loopback.cc
+++ b/test/syscalls/linux/socket_inet_loopback.cc
@@ -221,7 +221,7 @@ TEST_P(SocketInetReusePortTest, TcpPortReuseMultiThread) {
std::atomic<int> connects_received = ATOMIC_VAR_INIT(0);
std::unique_ptr<ScopedThread> listen_thread[kThreadCount];
int accept_counts[kThreadCount] = {};
- // TODO: figure how to not disable S/R for the whole test.
+ // TODO(avagin): figure how to not disable S/R for the whole test.
// We need to take into account that this test executes a lot of system
// calls from many threads.
DisableSave ds;
@@ -325,7 +325,7 @@ TEST_P(SocketInetReusePortTest, UdpPortReuseMultiThread) {
std::atomic<int> packets_received = ATOMIC_VAR_INIT(0);
std::unique_ptr<ScopedThread> receiver_thread[kThreadCount];
int packets_per_socket[kThreadCount] = {};
- // TODO: figure how to not disable S/R for the whole test.
+ // TODO(avagin): figure how to not disable S/R for the whole test.
DisableSave ds; // Too expensive.
for (int i = 0; i < kThreadCount; i++) {
@@ -642,7 +642,7 @@ TEST_P(SocketMultiProtocolInetLoopbackTest, V6OnlyV6AnyReservesV6) {
TEST_P(SocketMultiProtocolInetLoopbackTest, V6EphemeralPortReserved) {
auto const& param = GetParam();
- // FIXME
+ // FIXME(b/114268588)
SKIP_IF(IsRunningOnGvisor() && param.type == SOCK_STREAM);
for (int i = 0; true; i++) {
@@ -743,7 +743,7 @@ TEST_P(SocketMultiProtocolInetLoopbackTest, V6EphemeralPortReserved) {
TEST_P(SocketMultiProtocolInetLoopbackTest, V4MappedEphemeralPortReserved) {
auto const& param = GetParam();
- // FIXME
+ // FIXME(b/114268588)
SKIP_IF(IsRunningOnGvisor() && param.type == SOCK_STREAM);
for (int i = 0; true; i++) {
@@ -867,7 +867,7 @@ TEST_P(SocketMultiProtocolInetLoopbackTest, V4MappedEphemeralPortReserved) {
TEST_P(SocketMultiProtocolInetLoopbackTest, V4EphemeralPortReserved) {
auto const& param = GetParam();
- // FIXME
+ // FIXME(b/114268588)
SKIP_IF(IsRunningOnGvisor() && param.type == SOCK_STREAM);
for (int i = 0; true; i++) {
diff --git a/test/syscalls/linux/socket_ipv4_udp_unbound_external_networking.cc b/test/syscalls/linux/socket_ipv4_udp_unbound_external_networking.cc
index 8b4fc57b6..9dd9e1bd6 100644
--- a/test/syscalls/linux/socket_ipv4_udp_unbound_external_networking.cc
+++ b/test/syscalls/linux/socket_ipv4_udp_unbound_external_networking.cc
@@ -244,7 +244,7 @@ TestAddress V4Multicast() {
// set interface or group membership.
TEST_P(IPv4UDPUnboundExternalNetworkingSocketTest,
TestSendMulticastSelfNoGroup) {
- // FIXME: A group membership is not required for external
+ // FIXME(b/125485338): A group membership is not required for external
// multicast on gVisor.
SKIP_IF(IsRunningOnGvisor());
@@ -371,7 +371,7 @@ TEST_P(IPv4UDPUnboundExternalNetworkingSocketTest,
// Check that multicast packets won't be delivered to another socket with no
// set interface or group membership.
TEST_P(IPv4UDPUnboundExternalNetworkingSocketTest, TestSendMulticastNoGroup) {
- // FIXME: A group membership is not required for external
+ // FIXME(b/125485338): A group membership is not required for external
// multicast on gVisor.
SKIP_IF(IsRunningOnGvisor());
diff --git a/test/syscalls/linux/socket_netlink_route.cc b/test/syscalls/linux/socket_netlink_route.cc
index 8d2e7d333..ed4ae1c71 100644
--- a/test/syscalls/linux/socket_netlink_route.cc
+++ b/test/syscalls/linux/socket_netlink_route.cc
@@ -180,7 +180,7 @@ void CheckGetLinkResponse(const struct nlmsghdr* hdr, int seq, int port) {
// RTM_NEWLINK contains at least the header and ifinfomsg.
EXPECT_GE(hdr->nlmsg_len, NLMSG_SPACE(sizeof(struct ifinfomsg)));
- // TODO: Check ifinfomsg contents and following attrs.
+ // TODO(mpratt): Check ifinfomsg contents and following attrs.
}
TEST(NetlinkRouteTest, GetLinkDump) {
@@ -370,7 +370,7 @@ TEST(NetlinkRouteTest, GetAddrDump) {
// RTM_NEWADDR contains at least the header and ifaddrmsg.
EXPECT_GE(hdr->nlmsg_len, sizeof(*hdr) + sizeof(struct ifaddrmsg));
- // TODO: Check ifaddrmsg contents and following attrs.
+ // TODO(mpratt): Check ifaddrmsg contents and following attrs.
}));
}
diff --git a/test/syscalls/linux/socket_stream_blocking.cc b/test/syscalls/linux/socket_stream_blocking.cc
index 8b3f6a647..f0f86c01c 100644
--- a/test/syscalls/linux/socket_stream_blocking.cc
+++ b/test/syscalls/linux/socket_stream_blocking.cc
@@ -33,7 +33,7 @@ namespace gvisor {
namespace testing {
TEST_P(BlockingStreamSocketPairTest, BlockPartialWriteClosed) {
- // FIXME: gVisor doesn't support SO_SNDBUF on UDS, nor does it
+ // FIXME(b/35921550): gVisor doesn't support SO_SNDBUF on UDS, nor does it
// enforce any limit; it will write arbitrary amounts of data without
// blocking.
SKIP_IF(IsRunningOnGvisor());
diff --git a/test/syscalls/linux/socket_test_util.cc b/test/syscalls/linux/socket_test_util.cc
index 035087566..0be23e541 100644
--- a/test/syscalls/linux/socket_test_util.cc
+++ b/test/syscalls/linux/socket_test_util.cc
@@ -353,7 +353,7 @@ PosixErrorOr<std::unique_ptr<AddrFDSocketPair>> CreateTCPAcceptBindSocketPair(
}
MaybeSave(); // Successful accept.
- // FIXME
+ // FIXME(b/110484944)
if (connect_result == -1) {
absl::SleepFor(absl::Seconds(1));
}
diff --git a/test/syscalls/linux/socket_unix.cc b/test/syscalls/linux/socket_unix.cc
index 7332b768e..fafb23ad1 100644
--- a/test/syscalls/linux/socket_unix.cc
+++ b/test/syscalls/linux/socket_unix.cc
@@ -186,7 +186,7 @@ TEST_P(UnixSocketPairTest, BasicFDPassNoSpace) {
// BasicFDPassNoSpaceMsgCtrunc sends an FD, but does not provide any space to
// receive it. It then verifies that the MSG_CTRUNC flag is set in the msghdr.
TEST_P(UnixSocketPairTest, BasicFDPassNoSpaceMsgCtrunc) {
- // FIXME: Support MSG_CTRUNC.
+ // FIXME(gvisor.dev/issue/206): Support MSG_CTRUNC.
SKIP_IF(IsRunningOnGvisor());
auto sockets = ASSERT_NO_ERRNO_AND_VALUE(NewSocketPair());
@@ -224,7 +224,7 @@ TEST_P(UnixSocketPairTest, BasicFDPassNoSpaceMsgCtrunc) {
// accomidate the FD, but msg_control is set to NULL. In this case, msg_control
// should override msg_controllen.
TEST_P(UnixSocketPairTest, BasicFDPassNullControlMsgCtrunc) {
- // FIXME: Fix handling of NULL msg_control.
+ // FIXME(gvisor.dev/issue/207): Fix handling of NULL msg_control.
SKIP_IF(IsRunningOnGvisor());
auto sockets = ASSERT_NO_ERRNO_AND_VALUE(NewSocketPair());
@@ -259,7 +259,7 @@ TEST_P(UnixSocketPairTest, BasicFDPassNullControlMsgCtrunc) {
// space to receive it. It then verifies that the MSG_CTRUNC flag is set in the
// msghdr.
TEST_P(UnixSocketPairTest, BasicFDPassNotEnoughSpaceMsgCtrunc) {
- // FIXME: Support MSG_CTRUNC.
+ // FIXME(gvisor.dev/issue/206): Support MSG_CTRUNC.
SKIP_IF(IsRunningOnGvisor());
auto sockets = ASSERT_NO_ERRNO_AND_VALUE(NewSocketPair());
@@ -296,7 +296,7 @@ TEST_P(UnixSocketPairTest, BasicFDPassNotEnoughSpaceMsgCtrunc) {
// space to receive two of them. It then verifies that the MSG_CTRUNC flag is
// set in the msghdr.
TEST_P(UnixSocketPairTest, BasicThreeFDPassTruncationMsgCtrunc) {
- // FIXME: Support MSG_CTRUNC.
+ // FIXME(gvisor.dev/issue/206): Support MSG_CTRUNC.
SKIP_IF(IsRunningOnGvisor());
auto sockets = ASSERT_NO_ERRNO_AND_VALUE(NewSocketPair());
@@ -408,7 +408,7 @@ TEST_P(UnixSocketPairTest, BasicFDPassUnalignedRecvNoMsgTrunc) {
// provides enough space to receive one of them. It then verifies that the
// MSG_CTRUNC flag is set in the msghdr.
TEST_P(UnixSocketPairTest, BasicTwoFDPassUnalignedRecvTruncationMsgTrunc) {
- // FIXME: Support MSG_CTRUNC.
+ // FIXME(gvisor.dev/issue/206): Support MSG_CTRUNC.
SKIP_IF(IsRunningOnGvisor());
auto sockets = ASSERT_NO_ERRNO_AND_VALUE(NewSocketPair());
@@ -1010,7 +1010,7 @@ TEST_P(UnixSocketPairTest, CredPassNoMsgCtrunc) {
// the data without providing space for any credentials and verifies that
// MSG_CTRUNC is set in the msghdr.
TEST_P(UnixSocketPairTest, CredPassNoSpaceMsgCtrunc) {
- // FIXME: Support MSG_CTRUNC.
+ // FIXME(gvisor.dev/issue/206): Support MSG_CTRUNC.
SKIP_IF(IsRunningOnGvisor());
auto sockets = ASSERT_NO_ERRNO_AND_VALUE(NewSocketPair());
@@ -1061,7 +1061,7 @@ TEST_P(UnixSocketPairTest, CredPassNoSpaceMsgCtrunc) {
// the data while providing enough space for only the first field of the
// credentials and verifies that MSG_CTRUNC is set in the msghdr.
TEST_P(UnixSocketPairTest, CredPassTruncatedMsgCtrunc) {
- // FIXME: Support MSG_CTRUNC.
+ // FIXME(gvisor.dev/issue/206): Support MSG_CTRUNC.
SKIP_IF(IsRunningOnGvisor());
auto sockets = ASSERT_NO_ERRNO_AND_VALUE(NewSocketPair());
@@ -1615,7 +1615,7 @@ TEST_P(UnixSocketPairTest, SocketShutdown) {
}
TEST_P(UnixSocketPairTest, SocketReopenFromProcfs) {
- // TODO: We should be returning ENXIO and NOT EIO.
+ // TODO(b/122310852): We should be returning ENXIO and NOT EIO.
SKIP_IF(IsRunningOnGvisor());
auto sockets = ASSERT_NO_ERRNO_AND_VALUE(NewSocketPair());
diff --git a/test/syscalls/linux/socket_unix_dgram.cc b/test/syscalls/linux/socket_unix_dgram.cc
index c17d3990f..5dd5e6d77 100644
--- a/test/syscalls/linux/socket_unix_dgram.cc
+++ b/test/syscalls/linux/socket_unix_dgram.cc
@@ -28,7 +28,7 @@ namespace testing {
namespace {
TEST_P(DgramUnixSocketPairTest, WriteOneSideClosed) {
- // FIXME: gVisor datagram sockets return EPIPE instead of
+ // FIXME(b/35925052): gVisor datagram sockets return EPIPE instead of
// ECONNREFUSED.
SKIP_IF(IsRunningOnGvisor());
diff --git a/test/syscalls/linux/socket_unix_dgram_non_blocking.cc b/test/syscalls/linux/socket_unix_dgram_non_blocking.cc
index 460eb8320..3becb513d 100644
--- a/test/syscalls/linux/socket_unix_dgram_non_blocking.cc
+++ b/test/syscalls/linux/socket_unix_dgram_non_blocking.cc
@@ -31,7 +31,7 @@ using NonBlockingDgramUnixSocketPairTest = SocketPairTest;
TEST_P(NonBlockingDgramUnixSocketPairTest, ReadOneSideClosed) {
if (IsRunningOnGvisor()) {
- // FIXME: gVisor datagram sockets return 0 instead of
+ // FIXME(b/70803293): gVisor datagram sockets return 0 instead of
// EAGAIN.
return;
}
diff --git a/test/syscalls/linux/socket_unix_non_stream.cc b/test/syscalls/linux/socket_unix_non_stream.cc
index 8e0cbee4c..a565978f9 100644
--- a/test/syscalls/linux/socket_unix_non_stream.cc
+++ b/test/syscalls/linux/socket_unix_non_stream.cc
@@ -47,7 +47,7 @@ TEST_P(UnixNonStreamSocketPairTest, RecvMsgTooLarge) {
const int ret = RetryEINTR(write)(sockets->second_fd(), write_buf.data(),
write_buf.size());
if (ret < 0 && errno == ENOBUFS) {
- // NOTE: Linux may stall the write for a long time and
+ // NOTE(b/116636318): Linux may stall the write for a long time and
// ultimately return ENOBUFS. Allow this error, since a retry will likely
// result in the same error.
return;
@@ -136,7 +136,7 @@ TEST_P(UnixNonStreamSocketPairTest, FragmentedSendMsg) {
// N.B. At minimum, the socketpair gofer should provide a socket that is
// already the correct size.
//
- // TODO: When internal UDS support SO_SNDBUF, we can assert that
+ // TODO(b/35921550): When internal UDS support SO_SNDBUF, we can assert that
// we always get the right SO_SNDBUF on gVisor.
GTEST_SKIP() << "SO_SNDBUF = " << actual_sndbuf << ", want " << sndbuf;
}
@@ -156,7 +156,7 @@ TEST_P(UnixNonStreamSocketPairTest, FragmentedSendMsg) {
msg.msg_iov = &iov;
msg.msg_iovlen = 1;
- // NOTE: Linux has poor behavior in the presence of
+ // NOTE(b/116636318,b/115833655): Linux has poor behavior in the presence of
// physical memory fragmentation. As a result, this may stall for a long time
// and ultimately return ENOBUFS. Allow this error, since it means that we
// made it to the host kernel and started the sendmsg.
@@ -192,7 +192,7 @@ TEST_P(UnixNonStreamSocketPairTest, FragmentedRecvMsg) {
// N.B. At minimum, the socketpair gofer should provide a socket that is
// already the correct size.
//
- // TODO: When internal UDS support SO_SNDBUF, we can assert that
+ // TODO(b/35921550): When internal UDS support SO_SNDBUF, we can assert that
// we always get the right SO_SNDBUF on gVisor.
GTEST_SKIP() << "SO_SNDBUF = " << actual_sndbuf << ", want " << sndbuf;
}
@@ -201,7 +201,7 @@ TEST_P(UnixNonStreamSocketPairTest, FragmentedRecvMsg) {
const int ret = RetryEINTR(write)(sockets->first_fd(), write_buf.data(),
write_buf.size());
if (ret < 0 && errno == ENOBUFS) {
- // NOTE: Linux may stall the write for a long time and
+ // NOTE(b/116636318): Linux may stall the write for a long time and
// ultimately return ENOBUFS. Allow this error, since a retry will likely
// result in the same error.
return;
diff --git a/test/syscalls/linux/socket_unix_unbound_seqpacket.cc b/test/syscalls/linux/socket_unix_unbound_seqpacket.cc
index 270d7203f..21209b244 100644
--- a/test/syscalls/linux/socket_unix_unbound_seqpacket.cc
+++ b/test/syscalls/linux/socket_unix_unbound_seqpacket.cc
@@ -42,7 +42,7 @@ TEST_P(UnboundUnixSeqpacketSocketPairTest, SendtoWithoutConnect) {
}
TEST_P(UnboundUnixSeqpacketSocketPairTest, SendtoWithoutConnectIgnoresAddr) {
- // FIXME: gVisor tries to find /foo/bar and thus returns ENOENT.
+ // FIXME(b/68223466): gVisor tries to find /foo/bar and thus returns ENOENT.
if (IsRunningOnGvisor()) {
return;
}
diff --git a/test/syscalls/linux/socket_unix_unbound_stream.cc b/test/syscalls/linux/socket_unix_unbound_stream.cc
index 4db5b4be1..b95f9569e 100644
--- a/test/syscalls/linux/socket_unix_unbound_stream.cc
+++ b/test/syscalls/linux/socket_unix_unbound_stream.cc
@@ -269,7 +269,7 @@ TEST_P(UnixStreamSocketPairTest, SinglePeek) {
// 9f389e35674f5b086edd70ed524ca0f287259725 which changes this behavior. We
// used to target 3.11 compatibility, so disable this test on newer kernels.
//
- // NOTE: Bring this up to Linux 4.4 compatibility.
+ // NOTE(b/118902768): Bring this up to Linux 4.4 compatibility.
auto version = ASSERT_NO_ERRNO_AND_VALUE(GetKernelVersion());
SKIP_IF(version.major > 4 || (version.major == 4 && version.minor >= 3));
}
@@ -686,7 +686,7 @@ TEST_P(UnboundUnixStreamSocketPairTest, SendtoWithoutConnect) {
}
TEST_P(UnboundUnixStreamSocketPairTest, SendtoWithoutConnectIgnoresAddr) {
- // FIXME: gVisor tries to find /foo/bar and thus returns ENOENT.
+ // FIXME(b/68223466): gVisor tries to find /foo/bar and thus returns ENOENT.
if (IsRunningOnGvisor()) {
return;
}
diff --git a/test/syscalls/linux/stat.cc b/test/syscalls/linux/stat.cc
index 48a2059de..746318d09 100644
--- a/test/syscalls/linux/stat.cc
+++ b/test/syscalls/linux/stat.cc
@@ -416,7 +416,7 @@ TEST_F(StatTest, ZeroLinksOpenFdRegularFileChild_NoRandomSave) {
EXPECT_EQ(st_child_before.st_gid, st_child_fd.st_gid);
EXPECT_EQ(st_child_before.st_size, st_child_fd.st_size);
- // TODO: This isn't ideal but since fstatfs(2) will always return
+ // TODO(b/34861058): This isn't ideal but since fstatfs(2) will always return
// OVERLAYFS_SUPER_MAGIC we have no way to know if this fs is backed by a
// gofer which doesn't support links.
EXPECT_TRUE(st_child_fd.st_nlink == 0 || st_child_fd.st_nlink == 1);
diff --git a/test/syscalls/linux/stat_times.cc b/test/syscalls/linux/stat_times.cc
index 442957c65..8346e9a8e 100644
--- a/test/syscalls/linux/stat_times.cc
+++ b/test/syscalls/linux/stat_times.cc
@@ -68,7 +68,7 @@ TEST_F(StatTimesTest, FileCreationTimes) {
TEST_F(StatTimesTest, FileCtimeChanges) {
auto file = ASSERT_NO_ERRNO_AND_VALUE(TempPath::CreateFile());
- MaybeSave(); // FIXME: ctime is inconsistent.
+ MaybeSave(); // FIXME(b/69865927): ctime is inconsistent.
absl::Time atime, mtime, ctime;
std::tie(atime, mtime, ctime) = GetTime(file);
@@ -150,7 +150,7 @@ TEST_F(StatTimesTest, FileAtimeChanges) {
const auto file = ASSERT_NO_ERRNO_AND_VALUE(
TempPath::CreateFileWith(GetAbsoluteTestTmpdir(), contents, 0666));
- MaybeSave(); // FIXME: ctime is inconsistent.
+ MaybeSave(); // FIXME(b/69865927): ctime is inconsistent.
absl::Time atime, mtime, ctime;
std::tie(atime, mtime, ctime) = GetTime(file);
@@ -184,7 +184,7 @@ TEST_F(StatTimesTest, DirAtimeChanges) {
const auto file =
ASSERT_NO_ERRNO_AND_VALUE(TempPath::CreateFileIn(dir.path()));
- MaybeSave(); // FIXME: ctime is inconsistent.
+ MaybeSave(); // FIXME(b/69865927): ctime is inconsistent.
absl::Time atime, mtime, ctime;
std::tie(atime, mtime, ctime) = GetTime(dir);
@@ -193,7 +193,7 @@ TEST_F(StatTimesTest, DirAtimeChanges) {
const absl::Time before = absl::Now() - absl::Seconds(1);
- // NOTE: Keep an fd open. This ensures that the inode backing the
+ // NOTE(b/37756234): Keep an fd open. This ensures that the inode backing the
// directory won't be destroyed before the final GetTime to avoid writing out
// timestamps and causing side effects.
const auto fd = ASSERT_NO_ERRNO_AND_VALUE(Open(dir.path(), O_RDONLY, 0));
diff --git a/test/syscalls/linux/tcp_socket.cc b/test/syscalls/linux/tcp_socket.cc
index 1057f5892..33620a874 100644
--- a/test/syscalls/linux/tcp_socket.cc
+++ b/test/syscalls/linux/tcp_socket.cc
@@ -191,7 +191,7 @@ TEST_P(TcpSocketTest, SenderAddressIgnoredOnPeek) {
TEST_P(TcpSocketTest, SendtoAddressIgnored) {
struct sockaddr_storage addr;
memset(&addr, 0, sizeof(addr));
- addr.ss_family = GetParam(); // FIXME
+ addr.ss_family = GetParam(); // FIXME(b/63803955)
char data = '\0';
EXPECT_THAT(
diff --git a/test/syscalls/linux/tkill.cc b/test/syscalls/linux/tkill.cc
index 9842ccc9b..3e8ce5327 100644
--- a/test/syscalls/linux/tkill.cc
+++ b/test/syscalls/linux/tkill.cc
@@ -32,7 +32,7 @@ namespace {
static int tkill(pid_t tid, int sig) {
int ret;
do {
- // NOTE: tkill(2) could return EAGAIN for RT signals.
+ // NOTE(b/25434735): tkill(2) could return EAGAIN for RT signals.
ret = syscall(SYS_tkill, tid, sig);
} while (ret == -1 && errno == EAGAIN);
return ret;
diff --git a/test/syscalls/linux/udp_bind.cc b/test/syscalls/linux/udp_bind.cc
index 902be47d3..547eb2a6c 100644
--- a/test/syscalls/linux/udp_bind.cc
+++ b/test/syscalls/linux/udp_bind.cc
@@ -286,7 +286,7 @@ INSTANTIATE_TEST_SUITE_P(
[]() {
SendtoTestParam param = {};
param.description = "connected IPv6 sendto IPv4 mapped IPv6";
- // TODO: Determine if this inconsistent behavior is worth
+ // TODO(igudger): Determine if this inconsistent behavior is worth
// implementing.
param.skip_on_gvisor = true;
param.send_domain = AF_INET6;
@@ -299,7 +299,7 @@ INSTANTIATE_TEST_SUITE_P(
[]() {
SendtoTestParam param = {};
param.description = "connected IPv6 sendto IPv4";
- // TODO: Determine if this inconsistent behavior is worth
+ // TODO(igudger): Determine if this inconsistent behavior is worth
// implementing.
param.skip_on_gvisor = true;
param.send_domain = AF_INET6;
diff --git a/test/syscalls/linux/uidgid.cc b/test/syscalls/linux/uidgid.cc
index c0c1f2960..d78a09b1e 100644
--- a/test/syscalls/linux/uidgid.cc
+++ b/test/syscalls/linux/uidgid.cc
@@ -169,7 +169,7 @@ TEST(UidGidRootTest, SetgidNotFromThreadGroupLeader) {
SKIP_IF(!ASSERT_NO_ERRNO_AND_VALUE(IsRoot()));
const gid_t gid = FLAGS_scratch_gid1;
- // NOTE: Do setgid in a separate thread so that we can test if
+ // NOTE(b/64676707): Do setgid in a separate thread so that we can test if
// info.si_pid is set correctly.
ScopedThread([gid] { ASSERT_THAT(setgid(gid), SyscallSucceeds()); });
EXPECT_NO_ERRNO(CheckGIDs(gid, gid, gid));
diff --git a/test/syscalls/linux/utimes.cc b/test/syscalls/linux/utimes.cc
index d95ee74ec..bf776cd93 100644
--- a/test/syscalls/linux/utimes.cc
+++ b/test/syscalls/linux/utimes.cc
@@ -33,7 +33,7 @@ namespace testing {
namespace {
-// TODO: utimes(nullptr) does not pick the "now" time in the
+// TODO(b/36516566): utimes(nullptr) does not pick the "now" time in the
// application's time domain, so when asserting that times are within a window,
// we expand the window to allow for differences between the time domains.
constexpr absl::Duration kClockSlack = absl::Milliseconds(100);
@@ -235,7 +235,7 @@ void TestUtimensat(int dirFd, std::string const& path) {
EXPECT_LE(mtime3, after);
if (!IsRunningOnGvisor()) {
- // FIXME: Gofers set atime and mtime to different "now" times.
+ // FIXME(b/36516566): Gofers set atime and mtime to different "now" times.
EXPECT_EQ(atime3, mtime3);
}
}
diff --git a/test/syscalls/linux/wait.cc b/test/syscalls/linux/wait.cc
index cfab8a976..fcd606bec 100644
--- a/test/syscalls/linux/wait.cc
+++ b/test/syscalls/linux/wait.cc
@@ -40,7 +40,7 @@ using ::testing::UnorderedElementsAre;
// These unit tests focus on the wait4(2) system call, but include a basic
// checks for the i386 waitpid(2) syscall, which is a subset of wait4(2).
//
-// NOTE: Some functionality is not tested as
+// NOTE(b/22640830,b/27680907,b/29049891): Some functionality is not tested as
// it is not currently supported by gVisor:
// * UID in waitid(2) siginfo.
// * Process groups.
diff --git a/test/syscalls/linux/write.cc b/test/syscalls/linux/write.cc
index 432bd6066..7f80b2fa8 100644
--- a/test/syscalls/linux/write.cc
+++ b/test/syscalls/linux/write.cc
@@ -33,7 +33,7 @@ namespace testing {
namespace {
// This test is currently very rudimentary.
//
-// TODO:
+// TODO(edahlgren):
// * bad buffer states (EFAULT).
// * bad fds (wrong permission, wrong type of file, EBADF).
// * check offset is incremented.