@@ -979,16 +979,21 @@ TEST_P(FileSystemTest, TestMkdirsFailsWithExistingParentFile) {
979979}
980980
981981TEST_P (FileSystemTest, TestMkdir) {
982- std::string path = PathUtil::JoinPath (test_root_, " /tmp.txt/tmpB" );
983- ASSERT_OK (fs_->Mkdirs (path));
982+ {
983+ std::string path = PathUtil::JoinPath (test_root_, " /tmp.txt/tmpB" );
984+ ASSERT_OK (fs_->Mkdirs (path));
985+ }
986+ {
987+ std::string path = PathUtil::JoinPath (test_root_, " /tmpA/tmpB/" );
988+ ASSERT_OK (fs_->Mkdirs (path));
989+ }
990+ {
991+ std::string path = " /" ;
992+ ASSERT_OK (fs_->Mkdirs (path));
993+ }
984994}
985995
986996TEST_P (FileSystemTest, TestMkdir2) {
987- std::string path = PathUtil::JoinPath (test_root_, " /tmpA/tmpB/" );
988- ASSERT_OK (fs_->Mkdirs (path));
989- }
990-
991- TEST_P (FileSystemTest, TestMkdir3) {
992997 {
993998 std::string dir_path = test_root_ + " /file_dir/" ;
994999 ASSERT_OK_AND_ASSIGN (bool is_exist, fs_->Exists (dir_path));
@@ -1012,6 +1017,7 @@ TEST_P(FileSystemTest, TestMkdir3) {
10121017 }
10131018}
10141019
1020+ // test for create multi dir such as "partition1/bucket1" and "partition1/bucket2"
10151021TEST_P (FileSystemTest, TestMkdirMultiThread) {
10161022 uint32_t runs_count = 10 ;
10171023 uint32_t thread_count = 10 ;
@@ -1036,6 +1042,30 @@ TEST_P(FileSystemTest, TestMkdirMultiThread) {
10361042 }
10371043}
10381044
1045+ // test for create multi dir such as "partition1" and "partition1"
1046+ TEST_P (FileSystemTest, TestMkdirMultiThread2) {
1047+ uint32_t runs_count = 10 ;
1048+ uint32_t thread_count = 10 ;
1049+ auto executor = CreateDefaultExecutor (thread_count);
1050+
1051+ for (uint32_t i = 0 ; i < runs_count; i++) {
1052+ std::string uuid;
1053+ ASSERT_TRUE (UUID::Generate (&uuid));
1054+ std::vector<std::future<void >> futures;
1055+ for (uint32_t thread_idx = 0 ; thread_idx < thread_count; thread_idx++) {
1056+ futures.push_back (Via (executor.get (), [this , &uuid]() -> void {
1057+ std::string dir_path = PathUtil::JoinPath (test_root_, uuid);
1058+ // ASSERT_OK_AND_ASSIGN(bool is_exist, fs_->Exists(dir_path));
1059+ // ASSERT_FALSE(is_exist);
1060+ ASSERT_OK (fs_->Mkdirs (dir_path));
1061+ ASSERT_OK_AND_ASSIGN (bool is_exist, fs_->Exists (dir_path));
1062+ ASSERT_TRUE (is_exist);
1063+ }));
1064+ }
1065+ Wait (futures);
1066+ }
1067+ }
1068+
10391069TEST_P (FileSystemTest, TestInvalidMkdir) {
10401070 {
10411071 // test mkdir with one exist dir
0 commit comments