blob: ac04e29f91dacb302ad83f3c6df89d1e1d9fc096 [file] [log] [blame]
From e15cec74f7e09c826497bdf46e06896a0d33560f Mon Sep 17 00:00:00 2001
From: Dongjin Kim <dongjin_.kim@samsung.com>
Date: Sat, 24 Jul 2021 01:26:08 +0900
Subject: [PATCH 3/5] [f2fs] Add the unordered readdir fs case in
TestDirectoryReaddirRmAll
Change-Id: Idd521289e93b54097702945692df41da8727a5e4
---
src/storage/fs_test/directory.cc | 26 ++++++++++++++++++++++----
1 file changed, 22 insertions(+), 4 deletions(-)
diff --git a/src/storage/fs_test/directory.cc b/src/storage/fs_test/directory.cc
index 616328bd61f..b711904d8a0 100644
--- a/src/storage/fs_test/directory.cc
+++ b/src/storage/fs_test/directory.cc
@@ -276,10 +276,28 @@ TEST_P(DirectoryTest, TestDirectoryReaddirRmAll) {
// Ignore these entries
continue;
}
- char dirname[100];
- snprintf(dirname, 100, "%05lu", i++);
- ASSERT_EQ(strcmp(de->d_name, dirname), 0) << "Unexpected dirent";
- ASSERT_EQ(unlinkat(dirfd(dir), dirname, AT_REMOVEDIR), 0);
+
+ // Results of readdir do not need to be ordered by creation sequence.
+ // Therefore, check whether each name is 5-digit and located inside expected range
+ if (fs().GetTraits().name == std::string_view("f2fs")) {
+ ASSERT_EQ(strlen(de->d_name), 5UL);
+
+ size_t curname_num = static_cast<size_t>(atoi(de->d_name));
+ if (curname_num == 0) {
+ // If conversion by atoi() is failed, it returns 0.
+ // Therefore, check whether the result is converted from "00000"
+ ASSERT_EQ(strcmp(de->d_name, "00000"), 0);
+ }
+
+ ASSERT_GE(curname_num, 0UL);
+ ASSERT_LT(curname_num, kNumEntries);
+ ASSERT_EQ(unlinkat(dirfd(dir), de->d_name, AT_REMOVEDIR), 0);
+ } else {
+ char dirname[100];
+ snprintf(dirname, 100, "%05lu", i++);
+ ASSERT_EQ(strcmp(de->d_name, dirname), 0) << "Unexpected dirent";
+ ASSERT_EQ(unlinkat(dirfd(dir), dirname, AT_REMOVEDIR), 0);
+ }
num_seen++;
}
--
2.25.1