From a3b19da78911863bf8e2cff518ad19bb1ff20fa4 Mon Sep 17 00:00:00 2001 From: Jamie Liu Date: Wed, 8 May 2024 14:14:10 -0700 Subject: [PATCH] Deflake a few save/restore test timeouts. PiperOrigin-RevId: 631921522 --- test/syscalls/linux/BUILD | 3 ++ test/syscalls/linux/getdents.cc | 13 +++++++-- test/syscalls/linux/pipe.cc | 50 +++++++++++++++++++++++---------- 3 files changed, 48 insertions(+), 18 deletions(-) diff --git a/test/syscalls/linux/BUILD b/test/syscalls/linux/BUILD index 26ecc8372..4877619af 100644 --- a/test/syscalls/linux/BUILD +++ b/test/syscalls/linux/BUILD @@ -1014,7 +1014,9 @@ cc_binary( "//test/util:eventfd_util", "//test/util:file_descriptor", "//test/util:fs_util", + "//test/util:logging", "//test/util:posix_error", + "//test/util:save_util", "//test/util:temp_path", "//test/util:test_main", "//test/util:test_util", @@ -1679,6 +1681,7 @@ cc_binary( "//test/util:file_descriptor", "//test/util:fs_util", "//test/util:posix_error", + "//test/util:save_util", "//test/util:signal_util", "//test/util:temp_path", "//test/util:test_main", diff --git a/test/syscalls/linux/getdents.cc b/test/syscalls/linux/getdents.cc index 2d3ce8cc3..e276fc136 100644 --- a/test/syscalls/linux/getdents.cc +++ b/test/syscalls/linux/getdents.cc @@ -39,7 +39,9 @@ #include "test/util/eventfd_util.h" #include "test/util/file_descriptor.h" #include "test/util/fs_util.h" +#include "test/util/logging.h" #include "test/util/posix_error.h" +#include "test/util/save_util.h" #include "test/util/temp_path.h" #include "test/util/test_util.h" @@ -160,10 +162,15 @@ class GetdentsTest : public ::testing::Test { // Fill directory with num files, named by number starting at 0. void FillDirectory(size_t num) { - for (size_t i = 0; i < num; i++) { - auto name = JoinPath(dir_.path(), absl::StrCat(i)); - TEST_CHECK(CreateWithContents(name, "").ok()); + // Don't save after each file creation since num can be large. + { + DisableSave ds; + for (size_t i = 0; i < num; i++) { + auto name = JoinPath(dir_.path(), absl::StrCat(i)); + TEST_CHECK(CreateWithContents(name, "").ok()); + } } + MaybeSave(); } // Fill directory with a given list of filenames. diff --git a/test/syscalls/linux/pipe.cc b/test/syscalls/linux/pipe.cc index b02e47048..a4be75908 100644 --- a/test/syscalls/linux/pipe.cc +++ b/test/syscalls/linux/pipe.cc @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +#include #include /* Obtain O_* constant definitions */ #include #include @@ -32,6 +33,7 @@ #include "test/util/file_descriptor.h" #include "test/util/fs_util.h" #include "test/util/posix_error.h" +#include "test/util/save_util.h" #include "test/util/signal_util.h" #include "test/util/temp_path.h" #include "test/util/test_util.h" @@ -275,23 +277,41 @@ TEST_P(PipeTest, Seek) { SKIP_IF(!CreateBlocking()); for (int i = 0; i < 4; i++) { - // Attempt absolute seeks. - EXPECT_THAT(lseek(rfd_.get(), 0, SEEK_SET), SyscallFailsWithErrno(ESPIPE)); - EXPECT_THAT(lseek(rfd_.get(), 4, SEEK_SET), SyscallFailsWithErrno(ESPIPE)); - EXPECT_THAT(lseek(wfd_.get(), 0, SEEK_SET), SyscallFailsWithErrno(ESPIPE)); - EXPECT_THAT(lseek(wfd_.get(), 4, SEEK_SET), SyscallFailsWithErrno(ESPIPE)); + // Saving after each failed lseek() is too expensive for the testing + // benefit, especially in a loop. + { + DisableSave ds; + // Attempt absolute seeks. + EXPECT_THAT(lseek(rfd_.get(), 0, SEEK_SET), + SyscallFailsWithErrno(ESPIPE)); + EXPECT_THAT(lseek(rfd_.get(), 4, SEEK_SET), + SyscallFailsWithErrno(ESPIPE)); + EXPECT_THAT(lseek(wfd_.get(), 0, SEEK_SET), + SyscallFailsWithErrno(ESPIPE)); + EXPECT_THAT(lseek(wfd_.get(), 4, SEEK_SET), + SyscallFailsWithErrno(ESPIPE)); - // Attempt relative seeks. - EXPECT_THAT(lseek(rfd_.get(), 0, SEEK_CUR), SyscallFailsWithErrno(ESPIPE)); - EXPECT_THAT(lseek(rfd_.get(), 4, SEEK_CUR), SyscallFailsWithErrno(ESPIPE)); - EXPECT_THAT(lseek(wfd_.get(), 0, SEEK_CUR), SyscallFailsWithErrno(ESPIPE)); - EXPECT_THAT(lseek(wfd_.get(), 4, SEEK_CUR), SyscallFailsWithErrno(ESPIPE)); + // Attempt relative seeks. + EXPECT_THAT(lseek(rfd_.get(), 0, SEEK_CUR), + SyscallFailsWithErrno(ESPIPE)); + EXPECT_THAT(lseek(rfd_.get(), 4, SEEK_CUR), + SyscallFailsWithErrno(ESPIPE)); + EXPECT_THAT(lseek(wfd_.get(), 0, SEEK_CUR), + SyscallFailsWithErrno(ESPIPE)); + EXPECT_THAT(lseek(wfd_.get(), 4, SEEK_CUR), + SyscallFailsWithErrno(ESPIPE)); - // Attempt end-of-file seeks. - EXPECT_THAT(lseek(rfd_.get(), 0, SEEK_CUR), SyscallFailsWithErrno(ESPIPE)); - EXPECT_THAT(lseek(rfd_.get(), -4, SEEK_END), SyscallFailsWithErrno(ESPIPE)); - EXPECT_THAT(lseek(wfd_.get(), 0, SEEK_CUR), SyscallFailsWithErrno(ESPIPE)); - EXPECT_THAT(lseek(wfd_.get(), -4, SEEK_END), SyscallFailsWithErrno(ESPIPE)); + // Attempt end-of-file seeks. + EXPECT_THAT(lseek(rfd_.get(), 0, SEEK_CUR), + SyscallFailsWithErrno(ESPIPE)); + EXPECT_THAT(lseek(rfd_.get(), -4, SEEK_END), + SyscallFailsWithErrno(ESPIPE)); + EXPECT_THAT(lseek(wfd_.get(), 0, SEEK_CUR), + SyscallFailsWithErrno(ESPIPE)); + EXPECT_THAT(lseek(wfd_.get(), -4, SEEK_END), + SyscallFailsWithErrno(ESPIPE)); + } + MaybeSave(); // Add some more data to the pipe. int buf = kTestValue;