diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 3fb6a582..ac5e53b8 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -36,7 +36,8 @@ set(TARGET_ASYNC async) set(TARGET_CHECK check) set(TARGET_EMITTER emitter) set(TARGET_EVENT event) -set(TARGET_FS fs) +set(TARGET_FS_REQ fs_req) +set(TARGET_FILE_REQ file_req) set(TARGET_HANDLE handle) set(TARGET_IDLE idle) set(TARGET_LOOP loop) @@ -86,16 +87,27 @@ target_include_directories(${TARGET_EVENT} PRIVATE ${COMMON_INCLUDE_DIRS}) target_link_libraries(${TARGET_EVENT} PRIVATE ${COMMON_LINK_LIBS}) add_test(NAME ${TARGET_EVENT} COMMAND ${TARGET_EVENT}) -# Test TARGET_FS +# Test TARGET_FS_REQ -set(TARGET_FS_SOURCES $ uvw/fs.cpp) -set(TARGET_FS_DIR ${CMAKE_CURRENT_BINARY_DIR}/fs) -file(MAKE_DIRECTORY ${TARGET_FS_DIR}) -add_executable(${TARGET_FS} ${TARGET_FS_SOURCES}) -target_include_directories(${TARGET_FS} PRIVATE ${COMMON_INCLUDE_DIRS}) -target_link_libraries(${TARGET_FS} PRIVATE ${COMMON_LINK_LIBS}) -target_compile_definitions(${TARGET_FS} PRIVATE TARGET_FS_DIR="${TARGET_FS_DIR}") -add_test(NAME ${TARGET_FS} COMMAND ${TARGET_FS}) +set(TARGET_FS_REQ_SOURCES $ uvw/fs_req.cpp) +set(TARGET_FS_REQ_DIR ${CMAKE_CURRENT_BINARY_DIR}/fs_req) +file(MAKE_DIRECTORY ${TARGET_FS_REQ_DIR}) +add_executable(${TARGET_FS_REQ} ${TARGET_FS_REQ_SOURCES}) +target_include_directories(${TARGET_FS_REQ} PRIVATE ${COMMON_INCLUDE_DIRS}) +target_link_libraries(${TARGET_FS_REQ} PRIVATE ${COMMON_LINK_LIBS}) +target_compile_definitions(${TARGET_FS_REQ} PRIVATE TARGET_FS_REQ_DIR="${TARGET_FS_REQ_DIR}") +add_test(NAME ${TARGET_FS_REQ} COMMAND ${TARGET_FS_REQ}) + +# Test TARGET_FILE_REQ + +set(TARGET_FILE_REQ_SOURCES $ uvw/file_req.cpp) +set(TARGET_FILE_REQ_DIR ${CMAKE_CURRENT_BINARY_DIR}/file_req) +file(MAKE_DIRECTORY ${TARGET_FILE_REQ_DIR}) +add_executable(${TARGET_FILE_REQ} ${TARGET_FILE_REQ_SOURCES}) +target_include_directories(${TARGET_FILE_REQ} PRIVATE ${COMMON_INCLUDE_DIRS}) +target_link_libraries(${TARGET_FILE_REQ} PRIVATE ${COMMON_LINK_LIBS}) +target_compile_definitions(${TARGET_FILE_REQ} PRIVATE TARGET_FILE_REQ_DIR="${TARGET_FILE_REQ_DIR}") +add_test(NAME ${TARGET_FILE_REQ} COMMAND ${TARGET_FILE_REQ}) # Test TARGET_HANDLE diff --git a/test/uvw/file_req.cpp b/test/uvw/file_req.cpp new file mode 100644 index 00000000..8140f08c --- /dev/null +++ b/test/uvw/file_req.cpp @@ -0,0 +1,459 @@ +#include +#include +#include + +#ifdef _WIN32 +#define _CRT_DECLARE_NONSTDC_NAMES 1 +#include +#endif + + +TEST(FileReq, OpenAndClose) { + const std::string filename = std::string{TARGET_FILE_REQ_DIR} + std::string{"/test.file"}; + + auto loop = uvw::Loop::getDefault(); + auto request = loop->resource(); + + bool checkFileOpenEvent = false; + bool checkFileCloseEvent = false; + + request->on([](const auto &, auto &) { + FAIL(); + }); + + request->on>([&checkFileCloseEvent](const auto &, auto &request) { + ASSERT_FALSE(checkFileCloseEvent); + checkFileCloseEvent = true; + }); + + request->on>([&checkFileOpenEvent](const auto &, auto &request) { + ASSERT_FALSE(checkFileOpenEvent); + checkFileOpenEvent = true; + request.close(); + }); + + request->open(filename, O_CREAT | O_WRONLY, 0644); + + loop->run(); + + ASSERT_TRUE(checkFileOpenEvent); + ASSERT_TRUE(checkFileCloseEvent); +} + + +TEST(FileReq, OpenAndCloseSync) { + const std::string filename = std::string{TARGET_FILE_REQ_DIR} + std::string{"/test.file"}; + + auto loop = uvw::Loop::getDefault(); + auto request = loop->resource(); + + ASSERT_TRUE(request->openSync(filename, O_CREAT | O_WRONLY, 0644)); + ASSERT_TRUE(request->closeSync()); + + loop->run(); +} + + +TEST(FileReq, RW) { + const std::string filename = std::string{TARGET_FILE_REQ_DIR} + std::string{"/test.file"}; + + auto loop = uvw::Loop::getDefault(); + auto request = loop->resource(); + + bool checkFileWriteEvent = false; + bool checkFileReadEvent = false; + + request->on([](const auto &, auto &) { + FAIL(); + }); + + request->on>([&checkFileReadEvent](const auto &event, auto &request) { + ASSERT_FALSE(checkFileReadEvent); + ASSERT_EQ(event.data[0], 42); + checkFileReadEvent = true; + request.close(); + }); + + request->on>([&checkFileWriteEvent](const auto &, auto &request) { + ASSERT_FALSE(checkFileWriteEvent); + checkFileWriteEvent = true; + request.read(0, 1); + }); + + request->on>([](const auto &, auto &request) { + request.write(std::unique_ptr{new char[1]{ 42 }}, 1, 0); + }); + + request->open(filename, O_CREAT | O_RDWR | O_TRUNC, 0644); + + loop->run(); + + ASSERT_TRUE(checkFileWriteEvent); + ASSERT_TRUE(checkFileReadEvent); +} + + +TEST(FileReq, RWSync) { + const std::string filename = std::string{TARGET_FILE_REQ_DIR} + std::string{"/test.file"}; + + auto loop = uvw::Loop::getDefault(); + auto request = loop->resource(); + + ASSERT_TRUE(request->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); + + auto writeR = request->writeSync(std::unique_ptr{new char[1]{ 42 }}, 1, 0); + + ASSERT_TRUE(writeR.first); + ASSERT_EQ(writeR.second, 1); + + auto readR = request->readSync(0, 1); + + ASSERT_TRUE(readR.first); + ASSERT_EQ(readR.second.first[0], 42); + ASSERT_EQ(readR.second.second, 1); + ASSERT_TRUE(request->closeSync()); + + loop->run(); +} + + + +TEST(FileReq, Stat) { + const std::string filename = std::string{TARGET_FILE_REQ_DIR} + std::string{"/test.file"}; + + auto loop = uvw::Loop::getDefault(); + auto request = loop->resource(); + + bool checkFileStatEvent = false; + + request->on([](const auto &, auto &) { + FAIL(); + }); + + request->on>([&checkFileStatEvent](const auto &, auto &request) { + ASSERT_FALSE(checkFileStatEvent); + checkFileStatEvent = true; + request.close(); + }); + + request->on>([](const auto &, auto &request) { + request.stat(); + }); + + request->open(filename, O_CREAT | O_RDWR | O_TRUNC, 0644); + + loop->run(); + + ASSERT_TRUE(checkFileStatEvent); +} + + + +TEST(FileReq, StatSync) { + const std::string filename = std::string{TARGET_FILE_REQ_DIR} + std::string{"/test.file"}; + + auto loop = uvw::Loop::getDefault(); + auto request = loop->resource(); + + ASSERT_TRUE(request->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); + + auto statR = request->statSync(); + + ASSERT_TRUE(statR.first); + ASSERT_TRUE(request->closeSync()); + + loop->run(); +} + + +TEST(FileReq, Sync) { + const std::string filename = std::string{TARGET_FILE_REQ_DIR} + std::string{"/test.file"}; + + auto loop = uvw::Loop::getDefault(); + auto request = loop->resource(); + + bool checkFileSyncEvent = false; + + request->on([](const auto &, auto &) { + FAIL(); + }); + + request->on>([&checkFileSyncEvent](const auto &, auto &request) { + ASSERT_FALSE(checkFileSyncEvent); + checkFileSyncEvent = true; + request.close(); + }); + + request->on>([](const auto &, auto &request) { + request.sync(); + }); + + request->open(filename, O_CREAT | O_RDWR | O_TRUNC, 0644); + + loop->run(); + + ASSERT_TRUE(checkFileSyncEvent); +} + + +TEST(FileReq, SyncSync) { + const std::string filename = std::string{TARGET_FILE_REQ_DIR} + std::string{"/test.file"}; + + auto loop = uvw::Loop::getDefault(); + auto request = loop->resource(); + + ASSERT_TRUE(request->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); + ASSERT_TRUE(request->syncSync()); + ASSERT_TRUE(request->closeSync()); + + loop->run(); +} + + +TEST(FileReq, Datasync) { + const std::string filename = std::string{TARGET_FILE_REQ_DIR} + std::string{"/test.file"}; + + auto loop = uvw::Loop::getDefault(); + auto request = loop->resource(); + + bool checkFileDatasyncEvent = false; + + request->on([](const auto &, auto &) { + FAIL(); + }); + + request->on>([&checkFileDatasyncEvent](const auto &, auto &request) { + ASSERT_FALSE(checkFileDatasyncEvent); + checkFileDatasyncEvent = true; + request.close(); + }); + + request->on>([](const auto &, auto &request) { + request.datasync(); + }); + + request->open(filename, O_CREAT | O_RDWR | O_TRUNC, 0644); + + loop->run(); + + ASSERT_TRUE(checkFileDatasyncEvent); +} + + +TEST(FileReq, DatasyncSync) { + const std::string filename = std::string{TARGET_FILE_REQ_DIR} + std::string{"/test.file"}; + + auto loop = uvw::Loop::getDefault(); + auto request = loop->resource(); + + ASSERT_TRUE(request->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); + ASSERT_TRUE(request->datasyncSync()); + ASSERT_TRUE(request->closeSync()); + + loop->run(); +} + + +TEST(FileReq, Truncate) { + const std::string filename = std::string{TARGET_FILE_REQ_DIR} + std::string{"/test.file"}; + + auto loop = uvw::Loop::getDefault(); + auto request = loop->resource(); + + bool checkFileTruncateEvent = false; + + request->on([](const auto &, auto &) { + FAIL(); + }); + + request->on>([&checkFileTruncateEvent](const auto &, auto &request) { + ASSERT_FALSE(checkFileTruncateEvent); + checkFileTruncateEvent = true; + request.close(); + }); + + request->on>([](const auto &, auto &request) { + request.truncate(0); + }); + + request->open(filename, O_CREAT | O_RDWR | O_TRUNC, 0644); + + loop->run(); + + ASSERT_TRUE(checkFileTruncateEvent); +} + + +TEST(FileReq, TruncateSync) { + const std::string filename = std::string{TARGET_FILE_REQ_DIR} + std::string{"/test.file"}; + + auto loop = uvw::Loop::getDefault(); + auto request = loop->resource(); + + ASSERT_TRUE(request->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); + ASSERT_TRUE(request->truncateSync(0)); + ASSERT_TRUE(request->closeSync()); + + loop->run(); +} + + +/* +TEST(FileReq, SendFile) { + // TODO +} + + +TEST(FileReq, SendFileSync) { + // TODO +} +*/ + + +TEST(FileReq, Chmod) { + const std::string filename = std::string{TARGET_FILE_REQ_DIR} + std::string{"/test.file"}; + + auto loop = uvw::Loop::getDefault(); + auto request = loop->resource(); + + bool checkFileChmodEvent = false; + + request->on([](const auto &, auto &) { + FAIL(); + }); + + request->on>([&checkFileChmodEvent](const auto &, auto &request) { + ASSERT_FALSE(checkFileChmodEvent); + checkFileChmodEvent = true; + request.close(); + }); + + request->on>([](const auto &, auto &request) { + request.chmod(0644); + }); + + request->open(filename, O_CREAT | O_RDWR | O_TRUNC, 0644); + + loop->run(); + + ASSERT_TRUE(checkFileChmodEvent); +} + + +TEST(FileReq, ChmodSync) { + const std::string filename = std::string{TARGET_FILE_REQ_DIR} + std::string{"/test.file"}; + + auto loop = uvw::Loop::getDefault(); + auto request = loop->resource(); + + ASSERT_TRUE(request->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); + ASSERT_TRUE(request->chmodSync(0644)); + ASSERT_TRUE(request->closeSync()); + + loop->run(); +} + + +TEST(FileReq, Utime) { + const std::string filename = std::string{TARGET_FILE_REQ_DIR} + std::string{"/test.file"}; + + auto loop = uvw::Loop::getDefault(); + auto request = loop->resource(); + + bool checkFileUtimeEvent = false; + + request->on([](const auto &, auto &) { + FAIL(); + }); + + request->on>([&checkFileUtimeEvent](const auto &, auto &request) { + ASSERT_FALSE(checkFileUtimeEvent); + checkFileUtimeEvent = true; + request.close(); + }); + + request->on>([](const auto &, auto &request) { + auto now = std::chrono::system_clock::now(); + auto epoch = now.time_since_epoch(); + auto value = std::chrono::duration_cast(epoch); + request.utime(value, value); + }); + + request->open(filename, O_CREAT | O_RDWR | O_TRUNC, 0644); + + loop->run(); + + ASSERT_TRUE(checkFileUtimeEvent); +} + + +TEST(FileReq, UtimeSync) { + const std::string filename = std::string{TARGET_FILE_REQ_DIR} + std::string{"/test.file"}; + + auto loop = uvw::Loop::getDefault(); + auto request = loop->resource(); + + ASSERT_TRUE(request->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); + + auto now = std::chrono::system_clock::now(); + auto epoch = now.time_since_epoch(); + auto value = std::chrono::duration_cast(epoch); + + ASSERT_TRUE(request->utimeSync(value, value)); + ASSERT_TRUE(request->truncateSync(0)); + ASSERT_TRUE(request->closeSync()); + + loop->run(); +} + + +TEST(FileReq, Chown) { + const std::string filename = std::string{TARGET_FILE_REQ_DIR} + std::string{"/test.file"}; + + auto loop = uvw::Loop::getDefault(); + auto request = loop->resource(); + + bool checkFileChownEvent = false; + + request->on([](const auto &, auto &) { + FAIL(); + }); + + request->on>([&checkFileChownEvent](const auto &, auto &request) { + ASSERT_FALSE(checkFileChownEvent); + checkFileChownEvent = true; + request.close(); + }); + + request->on>([](const auto &event, auto &request) { + request.chown(event.stat.st_uid, event.stat.st_gid); + }); + + request->on>([](const auto &, auto &request) { + request.stat(); + }); + + request->open(filename, O_CREAT | O_RDWR | O_TRUNC, 0644); + + loop->run(); + + ASSERT_TRUE(checkFileChownEvent); +} + + +TEST(FileReq, ChownSync) { + const std::string filename = std::string{TARGET_FILE_REQ_DIR} + std::string{"/test.file"}; + + auto loop = uvw::Loop::getDefault(); + auto request = loop->resource(); + + ASSERT_TRUE(request->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); + + auto statR = request->statSync(); + + ASSERT_TRUE(statR.first); + ASSERT_TRUE(request->chownSync(statR.second.st_uid, statR.second.st_gid)); + ASSERT_TRUE(request->closeSync()); + + loop->run(); +} diff --git a/test/uvw/fs.cpp b/test/uvw/fs_req.cpp similarity index 55% rename from test/uvw/fs.cpp rename to test/uvw/fs_req.cpp index 302f5e80..c0aaf3e9 100644 --- a/test/uvw/fs.cpp +++ b/test/uvw/fs_req.cpp @@ -8,464 +8,8 @@ #endif -TEST(FileReq, OpenAndClose) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - - auto loop = uvw::Loop::getDefault(); - auto request = loop->resource(); - - bool checkFileOpenEvent = false; - bool checkFileCloseEvent = false; - - request->on([](const auto &, auto &) { - FAIL(); - }); - - request->on>([&checkFileCloseEvent](const auto &, auto &request) { - ASSERT_FALSE(checkFileCloseEvent); - checkFileCloseEvent = true; - }); - - request->on>([&checkFileOpenEvent](const auto &, auto &request) { - ASSERT_FALSE(checkFileOpenEvent); - checkFileOpenEvent = true; - request.close(); - }); - - request->open(filename, O_CREAT | O_WRONLY, 0644); - - loop->run(); - - ASSERT_TRUE(checkFileOpenEvent); - ASSERT_TRUE(checkFileCloseEvent); -} - - -TEST(FileReq, OpenAndCloseSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - - auto loop = uvw::Loop::getDefault(); - auto request = loop->resource(); - - ASSERT_TRUE(request->openSync(filename, O_CREAT | O_WRONLY, 0644)); - - ASSERT_TRUE(request->closeSync()); - - loop->run(); -} - - -TEST(FileReq, RW) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - - auto loop = uvw::Loop::getDefault(); - auto request = loop->resource(); - - bool checkFileWriteEvent = false; - bool checkFileReadEvent = false; - - request->on([](const auto &, auto &) { - FAIL(); - }); - - request->on>([&checkFileReadEvent](const auto &event, auto &request) { - ASSERT_FALSE(checkFileReadEvent); - ASSERT_EQ(event.data[0], 42); - checkFileReadEvent = true; - request.close(); - }); - - request->on>([&checkFileWriteEvent](const auto &, auto &request) { - ASSERT_FALSE(checkFileWriteEvent); - checkFileWriteEvent = true; - request.read(0, 1); - }); - - request->on>([](const auto &, auto &request) { - request.write(std::unique_ptr{new char[1]{ 42 }}, 1, 0); - }); - - request->open(filename, O_CREAT | O_RDWR | O_TRUNC, 0644); - - loop->run(); - - ASSERT_TRUE(checkFileWriteEvent); - ASSERT_TRUE(checkFileReadEvent); -} - - -TEST(FileReq, RWSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - - auto loop = uvw::Loop::getDefault(); - auto request = loop->resource(); - - ASSERT_TRUE(request->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); - - auto writeR = request->writeSync(std::unique_ptr{new char[1]{ 42 }}, 1, 0); - - ASSERT_TRUE(writeR.first); - ASSERT_EQ(writeR.second, 1); - - auto readR = request->readSync(0, 1); - - ASSERT_TRUE(readR.first); - ASSERT_EQ(readR.second.first[0], 42); - ASSERT_EQ(readR.second.second, 1); - ASSERT_TRUE(request->closeSync()); - - loop->run(); -} - - - -TEST(FileReq, Stat) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - - auto loop = uvw::Loop::getDefault(); - auto request = loop->resource(); - - bool checkFileStatEvent = false; - - request->on([](const auto &, auto &) { - FAIL(); - }); - - request->on>([&checkFileStatEvent](const auto &, auto &request) { - ASSERT_FALSE(checkFileStatEvent); - checkFileStatEvent = true; - request.close(); - }); - - request->on>([](const auto &, auto &request) { - request.stat(); - }); - - request->open(filename, O_CREAT | O_RDWR | O_TRUNC, 0644); - - loop->run(); - - ASSERT_TRUE(checkFileStatEvent); -} - - - -TEST(FileReq, StatSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - - auto loop = uvw::Loop::getDefault(); - auto request = loop->resource(); - - ASSERT_TRUE(request->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); - - auto statR = request->statSync(); - - ASSERT_TRUE(statR.first); - ASSERT_TRUE(request->closeSync()); - - loop->run(); -} - - -TEST(FileReq, Sync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - - auto loop = uvw::Loop::getDefault(); - auto request = loop->resource(); - - bool checkFileSyncEvent = false; - - request->on([](const auto &, auto &) { - FAIL(); - }); - - request->on>([&checkFileSyncEvent](const auto &, auto &request) { - ASSERT_FALSE(checkFileSyncEvent); - checkFileSyncEvent = true; - request.close(); - }); - - request->on>([](const auto &, auto &request) { - request.sync(); - }); - - request->open(filename, O_CREAT | O_RDWR | O_TRUNC, 0644); - - loop->run(); - - ASSERT_TRUE(checkFileSyncEvent); -} - - -TEST(FileReq, SyncSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - - auto loop = uvw::Loop::getDefault(); - auto request = loop->resource(); - - ASSERT_TRUE(request->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); - - ASSERT_TRUE(request->syncSync()); - ASSERT_TRUE(request->closeSync()); - - loop->run(); -} - - -TEST(FileReq, Datasync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - - auto loop = uvw::Loop::getDefault(); - auto request = loop->resource(); - - bool checkFileDatasyncEvent = false; - - request->on([](const auto &, auto &) { - FAIL(); - }); - - request->on>([&checkFileDatasyncEvent](const auto &, auto &request) { - ASSERT_FALSE(checkFileDatasyncEvent); - checkFileDatasyncEvent = true; - request.close(); - }); - - request->on>([](const auto &, auto &request) { - request.datasync(); - }); - - request->open(filename, O_CREAT | O_RDWR | O_TRUNC, 0644); - - loop->run(); - - ASSERT_TRUE(checkFileDatasyncEvent); -} - - -TEST(FileReq, DatasyncSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - - auto loop = uvw::Loop::getDefault(); - auto request = loop->resource(); - - ASSERT_TRUE(request->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); - - ASSERT_TRUE(request->datasyncSync()); - ASSERT_TRUE(request->closeSync()); - - loop->run(); -} - - -TEST(FileReq, Truncate) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - - auto loop = uvw::Loop::getDefault(); - auto request = loop->resource(); - - bool checkFileTruncateEvent = false; - - request->on([](const auto &, auto &) { - FAIL(); - }); - - request->on>([&checkFileTruncateEvent](const auto &, auto &request) { - ASSERT_FALSE(checkFileTruncateEvent); - checkFileTruncateEvent = true; - request.close(); - }); - - request->on>([](const auto &, auto &request) { - request.truncate(0); - }); - - request->open(filename, O_CREAT | O_RDWR | O_TRUNC, 0644); - - loop->run(); - - ASSERT_TRUE(checkFileTruncateEvent); -} - - -TEST(FileReq, TruncateSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - - auto loop = uvw::Loop::getDefault(); - auto request = loop->resource(); - - ASSERT_TRUE(request->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); - - ASSERT_TRUE(request->truncateSync(0)); - ASSERT_TRUE(request->closeSync()); - - loop->run(); -} - - -/* -TEST(FileReq, SendFile) { - // TODO -} - - -TEST(FileReq, SendFileSync) { - // TODO -} -*/ - - -TEST(FileReq, Chmod) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - - auto loop = uvw::Loop::getDefault(); - auto request = loop->resource(); - - bool checkFileChmodEvent = false; - - request->on([](const auto &, auto &) { - FAIL(); - }); - - request->on>([&checkFileChmodEvent](const auto &, auto &request) { - ASSERT_FALSE(checkFileChmodEvent); - checkFileChmodEvent = true; - request.close(); - }); - - request->on>([](const auto &, auto &request) { - request.chmod(0644); - }); - - request->open(filename, O_CREAT | O_RDWR | O_TRUNC, 0644); - - loop->run(); - - ASSERT_TRUE(checkFileChmodEvent); -} - - -TEST(FileReq, ChmodSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - - auto loop = uvw::Loop::getDefault(); - auto request = loop->resource(); - - ASSERT_TRUE(request->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); - - ASSERT_TRUE(request->chmodSync(0644)); - ASSERT_TRUE(request->closeSync()); - - loop->run(); -} - - -TEST(FileReq, Utime) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - - auto loop = uvw::Loop::getDefault(); - auto request = loop->resource(); - - bool checkFileUtimeEvent = false; - - request->on([](const auto &, auto &) { - FAIL(); - }); - - request->on>([&checkFileUtimeEvent](const auto &, auto &request) { - ASSERT_FALSE(checkFileUtimeEvent); - checkFileUtimeEvent = true; - request.close(); - }); - - request->on>([](const auto &, auto &request) { - auto now = std::chrono::system_clock::now(); - auto epoch = now.time_since_epoch(); - auto value = std::chrono::duration_cast(epoch); - request.utime(value, value); - }); - - request->open(filename, O_CREAT | O_RDWR | O_TRUNC, 0644); - - loop->run(); - - ASSERT_TRUE(checkFileUtimeEvent); -} - - -TEST(FileReq, UtimeSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - - auto loop = uvw::Loop::getDefault(); - auto request = loop->resource(); - - ASSERT_TRUE(request->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); - - auto now = std::chrono::system_clock::now(); - auto epoch = now.time_since_epoch(); - auto value = std::chrono::duration_cast(epoch); - - ASSERT_TRUE(request->utimeSync(value, value)); - ASSERT_TRUE(request->truncateSync(0)); - ASSERT_TRUE(request->closeSync()); - - loop->run(); -} - - -TEST(FileReq, Chown) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - - auto loop = uvw::Loop::getDefault(); - auto request = loop->resource(); - - bool checkFileChownEvent = false; - - request->on([](const auto &, auto &) { - FAIL(); - }); - - request->on>([&checkFileChownEvent](const auto &, auto &request) { - ASSERT_FALSE(checkFileChownEvent); - checkFileChownEvent = true; - request.close(); - }); - - request->on>([](const auto &event, auto &request) { - request.chown(event.stat.st_uid, event.stat.st_gid); - }); - - request->on>([](const auto &, auto &request) { - request.stat(); - }); - - request->open(filename, O_CREAT | O_RDWR | O_TRUNC, 0644); - - loop->run(); - - ASSERT_TRUE(checkFileChownEvent); -} - - -TEST(FileReq, ChownSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - - auto loop = uvw::Loop::getDefault(); - auto request = loop->resource(); - - ASSERT_TRUE(request->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); - - auto statR = request->statSync(); - - ASSERT_TRUE(statR.first); - ASSERT_TRUE(request->chownSync(statR.second.st_uid, statR.second.st_gid)); - ASSERT_TRUE(request->closeSync()); - - loop->run(); -} - - TEST(FsReq, MkdirAndRmdir) { - const std::string dirname = std::string{TARGET_FS_DIR} + std::string{"/test.dir"}; + const std::string dirname = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.dir"}; auto loop = uvw::Loop::getDefault(); auto request = loop->resource(); @@ -498,7 +42,7 @@ TEST(FsReq, MkdirAndRmdir) { TEST(FsReq, MkdirAndRmdirSync) { - const std::string dirname = std::string{TARGET_FS_DIR} + std::string{"/test.dir"}; + const std::string dirname = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.dir"}; auto loop = uvw::Loop::getDefault(); auto request = loop->resource(); @@ -511,7 +55,7 @@ TEST(FsReq, MkdirAndRmdirSync) { TEST(FsReq, MkdtempAndRmdir) { - const std::string dirname = std::string{TARGET_FS_DIR} + std::string{"/test.dir.XXXXXX"}; + const std::string dirname = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.dir.XXXXXX"}; auto loop = uvw::Loop::getDefault(); auto request = loop->resource(); @@ -545,7 +89,7 @@ TEST(FsReq, MkdtempAndRmdir) { TEST(FsReq, MkdtempAndRmdirSync) { - const std::string dirname = std::string{TARGET_FS_DIR} + std::string{"/test.dir.XXXXXX"}; + const std::string dirname = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.dir.XXXXXX"}; auto loop = uvw::Loop::getDefault(); auto request = loop->resource(); @@ -573,7 +117,7 @@ TEST(FsReq, ScandirSync) { TEST(FsReq, Stat) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); @@ -611,14 +155,13 @@ TEST(FsReq, Stat) { TEST(FsReq, StatSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); auto fsReq = loop->resource(); ASSERT_TRUE(fileReq->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); - ASSERT_TRUE(fileReq->closeSync()); auto statR = fsReq->statSync(filename); @@ -630,7 +173,7 @@ TEST(FsReq, StatSync) { TEST(FsReq, Lstat) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); @@ -668,14 +211,13 @@ TEST(FsReq, Lstat) { TEST(FsReq, LstatSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); auto fsReq = loop->resource(); ASSERT_TRUE(fileReq->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); - ASSERT_TRUE(fileReq->closeSync()); auto statR = fsReq->lstatSync(filename); @@ -687,8 +229,8 @@ TEST(FsReq, LstatSync) { TEST(FsReq, Rename) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - const std::string rename = std::string{TARGET_FS_DIR} + std::string{"/test.rename"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; + const std::string rename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.rename"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); @@ -726,15 +268,14 @@ TEST(FsReq, Rename) { TEST(FsReq, RenameSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - const std::string rename = std::string{TARGET_FS_DIR} + std::string{"/test.rename"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; + const std::string rename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.rename"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); auto fsReq = loop->resource(); ASSERT_TRUE(fileReq->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); - ASSERT_TRUE(fileReq->closeSync()); ASSERT_TRUE(fsReq->renameSync(filename, rename)); @@ -743,7 +284,7 @@ TEST(FsReq, RenameSync) { TEST(FsReq, Access) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); @@ -781,14 +322,13 @@ TEST(FsReq, Access) { TEST(FsReq, AccessSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); auto fsReq = loop->resource(); ASSERT_TRUE(fileReq->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); - ASSERT_TRUE(fileReq->closeSync()); ASSERT_TRUE(fsReq->accessSync(filename, R_OK)); @@ -797,7 +337,7 @@ TEST(FsReq, AccessSync) { TEST(FsReq, Chmod) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); @@ -835,14 +375,13 @@ TEST(FsReq, Chmod) { TEST(FsReq, ChmodSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); auto fsReq = loop->resource(); ASSERT_TRUE(fileReq->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); - ASSERT_TRUE(fileReq->closeSync()); ASSERT_TRUE(fsReq->chmodSync(filename, 0644)); @@ -851,7 +390,7 @@ TEST(FsReq, ChmodSync) { TEST(FsReq, Utime) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); @@ -892,7 +431,7 @@ TEST(FsReq, Utime) { TEST(FsReq, UtimeSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); @@ -912,8 +451,8 @@ TEST(FsReq, UtimeSync) { TEST(FsReq, LinkAndUnlink) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - const std::string linkname = std::string{TARGET_FS_DIR} + std::string{"/test.link"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; + const std::string linkname = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.link"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); @@ -959,15 +498,14 @@ TEST(FsReq, LinkAndUnlink) { TEST(FsReq, LinkAndUnlinkSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - const std::string linkname = std::string{TARGET_FS_DIR} + std::string{"/test.link"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; + const std::string linkname = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.link"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); auto fsReq = loop->resource(); ASSERT_TRUE(fileReq->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); - ASSERT_TRUE(fileReq->closeSync()); ASSERT_TRUE(fsReq->linkSync(filename, linkname)); ASSERT_TRUE(fsReq->unlinkSync(linkname)); @@ -977,8 +515,8 @@ TEST(FsReq, LinkAndUnlinkSync) { TEST(FsReq, SymlinkAndUnlink) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - const std::string linkname = std::string{TARGET_FS_DIR} + std::string{"/test.link"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; + const std::string linkname = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.link"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); @@ -1024,15 +562,14 @@ TEST(FsReq, SymlinkAndUnlink) { TEST(FsReq, SymlinkAndUnlinkSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - const std::string linkname = std::string{TARGET_FS_DIR} + std::string{"/test.link"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; + const std::string linkname = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.link"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); auto fsReq = loop->resource(); ASSERT_TRUE(fileReq->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); - ASSERT_TRUE(fileReq->closeSync()); ASSERT_TRUE(fsReq->symlinkSync(filename, linkname, 0)); ASSERT_TRUE(fsReq->unlinkSync(linkname)); @@ -1042,8 +579,8 @@ TEST(FsReq, SymlinkAndUnlinkSync) { TEST(FsReq, Readlink) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - const std::string linkname = std::string{TARGET_FS_DIR} + std::string{"/test.link"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; + const std::string linkname = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.link"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); @@ -1086,15 +623,14 @@ TEST(FsReq, Readlink) { TEST(FsReq, ReadlinkSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; - const std::string linkname = std::string{TARGET_FS_DIR} + std::string{"/test.link"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; + const std::string linkname = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.link"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); auto fsReq = loop->resource(); ASSERT_TRUE(fileReq->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); - ASSERT_TRUE(fileReq->closeSync()); ASSERT_TRUE(fsReq->symlinkSync(filename, linkname, 0)); @@ -1108,7 +644,7 @@ TEST(FsReq, ReadlinkSync) { TEST(FsReq, Realpath) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); @@ -1147,14 +683,13 @@ TEST(FsReq, Realpath) { TEST(FsReq, RealpathSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); auto fsReq = loop->resource(); ASSERT_TRUE(fileReq->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); - ASSERT_TRUE(fileReq->closeSync()); auto realpathR = fsReq->realpathSync(filename); @@ -1167,7 +702,7 @@ TEST(FsReq, RealpathSync) { TEST(FsReq, Chown) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); @@ -1209,14 +744,13 @@ TEST(FsReq, Chown) { TEST(FsReq, ChownSync) { - const std::string filename = std::string{TARGET_FS_DIR} + std::string{"/test.file"}; + const std::string filename = std::string{TARGET_FS_REQ_DIR} + std::string{"/test.file"}; auto loop = uvw::Loop::getDefault(); auto fileReq = loop->resource(); auto fsReq = loop->resource(); ASSERT_TRUE(fileReq->openSync(filename, O_CREAT | O_RDWR | O_TRUNC, 0644)); - ASSERT_TRUE(fileReq->closeSync()); auto statR = fsReq->statSync(filename);