From 52df12493b4d9f6b1e70a445d232e2ce96033ee3 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Thu, 24 Oct 2024 12:40:30 -0500 Subject: [PATCH] refactor --- .../providers/encrypt/encrypt_provider.hpp | 2 +- .../include/providers/i_provider.hpp | 103 ++++++++++-------- .../include/providers/s3/s3_provider.hpp | 2 +- .../include/providers/sia/sia_provider.hpp | 2 +- .../src/drives/fuse/fuse_drive.cpp | 2 +- .../src/drives/winfsp/winfsp_drive.cpp | 2 +- .../src/file_manager/file_manager.cpp | 16 +-- .../src/file_manager/open_file.cpp | 8 +- .../src/file_manager/open_file_base.cpp | 2 +- .../src/providers/base_provider.cpp | 2 +- .../include/mocks/mock_provider.hpp | 2 +- .../repertory_test/src/file_manager_test.cpp | 64 +++++------ .../repertory_test/src/open_file_test.cpp | 24 ++-- .../repertory_test/src/providers_test.cpp | 26 ++--- .../src/ring_buffer_open_file_test.cpp | 26 ++--- repertory/repertory_test/src/upload_test.cpp | 6 +- .../repertory_test/src/winfsp_drive_test.cpp | 4 + 17 files changed, 152 insertions(+), 141 deletions(-) diff --git a/repertory/librepertory/include/providers/encrypt/encrypt_provider.hpp b/repertory/librepertory/include/providers/encrypt/encrypt_provider.hpp index 502d4a88..9da28d19 100644 --- a/repertory/librepertory/include/providers/encrypt/encrypt_provider.hpp +++ b/repertory/librepertory/include/providers/encrypt/encrypt_provider.hpp @@ -149,7 +149,7 @@ public: [[nodiscard]] auto get_used_drive_space() const -> std::uint64_t override; - [[nodiscard]] auto is_direct_only() const -> bool override { return true; } + [[nodiscard]] auto is_read_only() const -> bool override { return true; } [[nodiscard]] auto is_directory(const std::string &api_path, bool &exists) const -> api_error override; diff --git a/repertory/librepertory/include/providers/i_provider.hpp b/repertory/librepertory/include/providers/i_provider.hpp index 27812291..5643ca90 100644 --- a/repertory/librepertory/include/providers/i_provider.hpp +++ b/repertory/librepertory/include/providers/i_provider.hpp @@ -31,13 +31,14 @@ class i_provider { INTERFACE_SETUP(i_provider); public: - [[nodiscard]] virtual auto - create_directory(const std::string &api_path, - api_meta_map &meta) -> api_error = 0; + [[nodiscard]] virtual auto create_directory(const std::string &api_path, + api_meta_map &meta) + -> api_error = 0; - [[nodiscard]] virtual auto create_directory_clone_source_meta( - const std::string &source_api_path, - const std::string &api_path) -> api_error = 0; + [[nodiscard]] virtual auto + create_directory_clone_source_meta(const std::string &source_api_path, + const std::string &api_path) + -> api_error = 0; [[nodiscard]] virtual auto create_file(const std::string &api_path, api_meta_map &meta) -> api_error = 0; @@ -46,8 +47,9 @@ public: get_api_path_from_source(const std::string &source_path, std::string &api_path) const -> api_error = 0; - [[nodiscard]] virtual auto get_directory_item_count( - const std::string &api_path) const -> std::uint64_t = 0; + [[nodiscard]] virtual auto + get_directory_item_count(const std::string &api_path) const + -> std::uint64_t = 0; [[nodiscard]] virtual auto get_directory_items(const std::string &api_path, @@ -56,35 +58,38 @@ public: [[nodiscard]] virtual auto get_file(const std::string &api_path, api_file &file) const -> api_error = 0; - [[nodiscard]] virtual auto - get_file_list(api_file_list &list) const -> api_error = 0; + [[nodiscard]] virtual auto get_file_list(api_file_list &list) const + -> api_error = 0; - [[nodiscard]] virtual auto - get_file_size(const std::string &api_path, - std::uint64_t &file_size) const -> api_error = 0; + [[nodiscard]] virtual auto get_file_size(const std::string &api_path, + std::uint64_t &file_size) const + -> api_error = 0; - [[nodiscard]] virtual auto - get_filesystem_item(const std::string &api_path, bool directory, - filesystem_item &fsi) const -> api_error = 0; + [[nodiscard]] virtual auto get_filesystem_item(const std::string &api_path, + bool directory, + filesystem_item &fsi) const + -> api_error = 0; [[nodiscard]] virtual auto get_filesystem_item_and_file(const std::string &api_path, api_file &file, filesystem_item &fsi) const -> api_error = 0; - [[nodiscard]] virtual auto get_filesystem_item_from_source_path( - const std::string &source_path, - filesystem_item &fsi) const -> api_error = 0; - [[nodiscard]] virtual auto - get_item_meta(const std::string &api_path, - api_meta_map &meta) const -> api_error = 0; + get_filesystem_item_from_source_path(const std::string &source_path, + filesystem_item &fsi) const + -> api_error = 0; - [[nodiscard]] virtual auto - get_item_meta(const std::string &api_path, const std::string &key, - std::string &value) const -> api_error = 0; + [[nodiscard]] virtual auto get_item_meta(const std::string &api_path, + api_meta_map &meta) const + -> api_error = 0; - [[nodiscard]] virtual auto - get_pinned_files() const -> std::vector = 0; + [[nodiscard]] virtual auto get_item_meta(const std::string &api_path, + const std::string &key, + std::string &value) const + -> api_error = 0; + + [[nodiscard]] virtual auto get_pinned_files() const + -> std::vector = 0; [[nodiscard]] virtual auto get_provider_type() const -> provider_type = 0; @@ -94,8 +99,6 @@ public: [[nodiscard]] virtual auto get_used_drive_space() const -> std::uint64_t = 0; - [[nodiscard]] virtual auto is_direct_only() const -> bool = 0; - [[nodiscard]] virtual auto is_directory(const std::string &api_path, bool &exists) const -> api_error = 0; @@ -107,6 +110,8 @@ public: [[nodiscard]] virtual auto is_online() const -> bool = 0; + [[nodiscard]] virtual auto is_read_only() const -> bool = 0; + [[nodiscard]] virtual auto is_rename_supported() const -> bool = 0; [[nodiscard]] virtual auto @@ -114,36 +119,38 @@ public: std::uint64_t offset, data_buffer &data, stop_type &stop_requested) -> api_error = 0; - [[nodiscard]] virtual auto - remove_directory(const std::string &api_path) -> api_error = 0; + [[nodiscard]] virtual auto remove_directory(const std::string &api_path) + -> api_error = 0; - [[nodiscard]] virtual auto - remove_file(const std::string &api_path) -> api_error = 0; + [[nodiscard]] virtual auto remove_file(const std::string &api_path) + -> api_error = 0; - [[nodiscard]] virtual auto - remove_item_meta(const std::string &api_path, - const std::string &key) -> api_error = 0; + [[nodiscard]] virtual auto remove_item_meta(const std::string &api_path, + const std::string &key) + -> api_error = 0; - [[nodiscard]] virtual auto - rename_file(const std::string &from_api_path, - const std::string &to_api_path) -> api_error = 0; + [[nodiscard]] virtual auto rename_file(const std::string &from_api_path, + const std::string &to_api_path) + -> api_error = 0; - [[nodiscard]] virtual auto - set_item_meta(const std::string &api_path, const std::string &key, - const std::string &value) -> api_error = 0; + [[nodiscard]] virtual auto set_item_meta(const std::string &api_path, + const std::string &key, + const std::string &value) + -> api_error = 0; - [[nodiscard]] virtual auto - set_item_meta(const std::string &api_path, - const api_meta_map &meta) -> api_error = 0; + [[nodiscard]] virtual auto set_item_meta(const std::string &api_path, + const api_meta_map &meta) + -> api_error = 0; [[nodiscard]] virtual auto start(api_item_added_callback api_item_added, i_file_manager *mgr) -> bool = 0; virtual void stop() = 0; - [[nodiscard]] virtual auto - upload_file(const std::string &api_path, const std::string &source_path, - stop_type &stop_requested) -> api_error = 0; + [[nodiscard]] virtual auto upload_file(const std::string &api_path, + const std::string &source_path, + stop_type &stop_requested) + -> api_error = 0; }; } // namespace repertory diff --git a/repertory/librepertory/include/providers/s3/s3_provider.hpp b/repertory/librepertory/include/providers/s3/s3_provider.hpp index 9eece8da..c5a42bdc 100644 --- a/repertory/librepertory/include/providers/s3/s3_provider.hpp +++ b/repertory/librepertory/include/providers/s3/s3_provider.hpp @@ -117,7 +117,7 @@ public: return type; } - [[nodiscard]] auto is_direct_only() const -> bool override { return false; } + [[nodiscard]] auto is_read_only() const -> bool override { return false; } [[nodiscard]] auto is_directory(const std::string &api_path, bool &exists) const -> api_error override; diff --git a/repertory/librepertory/include/providers/sia/sia_provider.hpp b/repertory/librepertory/include/providers/sia/sia_provider.hpp index 2c4433f8..11a2deb1 100644 --- a/repertory/librepertory/include/providers/sia/sia_provider.hpp +++ b/repertory/librepertory/include/providers/sia/sia_provider.hpp @@ -90,7 +90,7 @@ public: [[nodiscard]] auto get_total_drive_space() const -> std::uint64_t override; - [[nodiscard]] auto is_direct_only() const -> bool override { return false; } + [[nodiscard]] auto is_read_only() const -> bool override { return false; } [[nodiscard]] auto is_directory(const std::string &api_path, bool &exists) const -> api_error override; diff --git a/repertory/librepertory/src/drives/fuse/fuse_drive.cpp b/repertory/librepertory/src/drives/fuse/fuse_drive.cpp index 70fa8421..b9e555f3 100644 --- a/repertory/librepertory/src/drives/fuse/fuse_drive.cpp +++ b/repertory/librepertory/src/drives/fuse/fuse_drive.cpp @@ -564,7 +564,7 @@ void *fuse_drive::init_impl(struct fuse_conn_info *conn) { fm_ = std::make_unique(config_, provider_); server_ = std::make_unique(config_, provider_, *fm_); - if (not provider_.is_direct_only()) { + if (not provider_.is_read_only()) { eviction_ = std::make_unique(provider_, config_, *fm_); } directory_cache_ = std::make_unique(); diff --git a/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp b/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp index ccebabe7..e5d32743 100644 --- a/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp +++ b/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp @@ -609,7 +609,7 @@ auto winfsp_drive::Mounted(PVOID host) -> NTSTATUS { polling::instance().start(&config_); fm_ = std::make_unique(config_, provider_); server_ = std::make_unique(config_, provider_, *fm_); - if (not provider_.is_direct_only()) { + if (not provider_.is_read_only()) { eviction_ = std::make_unique(provider_, config_, *fm_); } diff --git a/repertory/librepertory/src/file_manager/file_manager.cpp b/repertory/librepertory/src/file_manager/file_manager.cpp index e3c0befa..9381bc18 100644 --- a/repertory/librepertory/src/file_manager/file_manager.cpp +++ b/repertory/librepertory/src/file_manager/file_manager.cpp @@ -110,7 +110,7 @@ file_manager::file_manager(app_config &config, i_provider &provider) utils::path::combine(config_.get_data_directory(), {"file_manager.db"}), sql_create_tables); - if (not provider_.is_direct_only()) { + if (not provider_.is_read_only()) { E_SUBSCRIBE_EXACT(file_upload_completed, [this](const file_upload_completed &completed) { this->upload_completed(completed); @@ -190,7 +190,7 @@ auto file_manager::create(const std::string &api_path, api_meta_map &meta, auto file_manager::evict_file(const std::string &api_path) -> bool { REPERTORY_USES_FUNCTION_NAME(); - if (provider_.is_direct_only()) { + if (provider_.is_read_only()) { return false; } @@ -330,7 +330,7 @@ auto file_manager::get_open_handle_count() const -> std::size_t { auto file_manager::get_stored_downloads() const -> std::vector { REPERTORY_USES_FUNCTION_NAME(); - if (provider_.is_direct_only()) { + if (provider_.is_read_only()) { return {}; } @@ -408,7 +408,7 @@ auto file_manager::has_no_open_file_handles() const -> bool { } auto file_manager::is_processing(const std::string &api_path) const -> bool { - if (provider_.is_direct_only()) { + if (provider_.is_read_only()) { return false; } @@ -491,7 +491,7 @@ void file_manager::queue_upload(const i_open_file &file) { void file_manager::queue_upload(const std::string &api_path, const std::string &source_path, bool no_lock) { - if (provider_.is_direct_only()) { + if (provider_.is_read_only()) { return; } @@ -581,7 +581,7 @@ void file_manager::remove_upload(const std::string &api_path) { void file_manager::remove_upload(const std::string &api_path, bool no_lock) { REPERTORY_USES_FUNCTION_NAME(); - if (provider_.is_direct_only()) { + if (provider_.is_read_only()) { return; } @@ -786,7 +786,7 @@ void file_manager::start() { {"timed_out_close", polling::frequency::second, [this]() { this->close_timed_out_files(); }}); - if (provider_.is_direct_only()) { + if (provider_.is_read_only()) { stop_requested_ = false; return; } @@ -933,7 +933,7 @@ void file_manager::stop() { } void file_manager::store_resume(const i_open_file &file) { - if (provider_.is_direct_only()) { + if (provider_.is_read_only()) { return; } diff --git a/repertory/librepertory/src/file_manager/open_file.cpp b/repertory/librepertory/src/file_manager/open_file.cpp index fd5f5aa9..23866263 100644 --- a/repertory/librepertory/src/file_manager/open_file.cpp +++ b/repertory/librepertory/src/file_manager/open_file.cpp @@ -69,7 +69,7 @@ open_file::open_file(std::uint64_t chunk_size, std::uint8_t chunk_timeout, if (not fsi.directory) { nf_ = utils::file::file::open_or_create_file(fsi.source_path, - provider_.is_direct_only()); + provider_.is_read_only()); set_api_error(*nf_ ? api_error::success : api_error::os_error); if (get_api_error() == api_error::success) { if (read_state.has_value()) { @@ -81,7 +81,7 @@ open_file::open_file(std::uint64_t chunk_size, std::uint8_t chunk_timeout, false); auto file_size = nf_->size(); - if (provider_.is_direct_only() || file_size == fsi.size) { + if (provider_.is_read_only() || file_size == fsi.size) { read_state_.set(0U, read_state_.size(), true); } else if (not nf_->truncate(fsi.size)) { set_api_error(api_error::os_error); @@ -351,7 +351,7 @@ auto open_file::read(std::size_t read_size, std::uint64_t read_offset, const auto read_from_source = [this, &data, &read_offset, &read_size]() -> api_error { return do_io([this, &data, &read_offset, &read_size]() -> api_error { - if (provider_.is_direct_only()) { + if (provider_.is_read_only()) { return provider_.read_file_bytes(fsi_.api_path, read_size, read_offset, data, stop_requested_); } @@ -531,7 +531,7 @@ auto open_file::write(std::uint64_t write_offset, const data_buffer &data, bytes_written = 0U; - if (fsi_.directory || provider_.is_direct_only()) { + if (fsi_.directory || provider_.is_read_only()) { return api_error::invalid_operation; } diff --git a/repertory/librepertory/src/file_manager/open_file_base.cpp b/repertory/librepertory/src/file_manager/open_file_base.cpp index f8e073c8..6ae7e30b 100644 --- a/repertory/librepertory/src/file_manager/open_file_base.cpp +++ b/repertory/librepertory/src/file_manager/open_file_base.cpp @@ -119,7 +119,7 @@ auto open_file_base::can_close() const -> bool { return true; } - if (provider_.is_direct_only()) { + if (provider_.is_read_only()) { return true; } diff --git a/repertory/librepertory/src/providers/base_provider.cpp b/repertory/librepertory/src/providers/base_provider.cpp index 70c67c10..0e959e91 100644 --- a/repertory/librepertory/src/providers/base_provider.cpp +++ b/repertory/librepertory/src/providers/base_provider.cpp @@ -431,7 +431,7 @@ auto base_provider::is_file_writeable(const std::string &api_path) const void base_provider::remove_deleted_files(bool source_only) { REPERTORY_USES_FUNCTION_NAME(); - if (not is_direct_only()) { + if (not is_read_only()) { auto source_list = utils::file::directory{config_.get_cache_directory()}.get_files(); for (auto &&source_file : source_list) { diff --git a/repertory/repertory_test/include/mocks/mock_provider.hpp b/repertory/repertory_test/include/mocks/mock_provider.hpp index d8bcb978..beb78a7c 100644 --- a/repertory/repertory_test/include/mocks/mock_provider.hpp +++ b/repertory/repertory_test/include/mocks/mock_provider.hpp @@ -101,7 +101,7 @@ public: MOCK_METHOD(std::uint64_t, get_used_drive_space, (), (const, override)); - MOCK_METHOD(bool, is_direct_only, (), (const, override)); + MOCK_METHOD(bool, is_read_only, (), (const, override)); MOCK_METHOD(api_error, is_directory, (const std::string &api_path, bool &exists), (const, override)); diff --git a/repertory/repertory_test/src/file_manager_test.cpp b/repertory/repertory_test/src/file_manager_test.cpp index 9bb84ca9..091a479a 100644 --- a/repertory/repertory_test/src/file_manager_test.cpp +++ b/repertory/repertory_test/src/file_manager_test.cpp @@ -76,7 +76,7 @@ protected: std::atomic file_manager_test::inst{0U}; TEST_F(file_manager_test, can_start_and_stop) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); event_consumer es("service_started", [](const event &e) { const auto &ee = dynamic_cast(e); @@ -107,7 +107,7 @@ TEST_F(file_manager_test, can_start_and_stop) { TEST_F(file_manager_test, can_create_and_close_file) { cfg->set_enable_chunk_downloader_timeout(true); - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); polling::instance().start(cfg.get()); @@ -215,7 +215,7 @@ TEST_F(file_manager_test, can_create_and_close_file) { TEST_F(file_manager_test, can_open_and_close_file) { cfg->set_enable_chunk_downloader_timeout(true); - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); polling::instance().start(cfg.get()); file_manager fm(*cfg, mp); @@ -319,7 +319,7 @@ TEST_F(file_manager_test, can_open_and_close_file) { } TEST_F(file_manager_test, can_open_and_close_multiple_handles_for_same_file) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); polling::instance().start(cfg.get()); file_manager fm(*cfg, mp); @@ -381,7 +381,7 @@ TEST_F(file_manager_test, can_open_and_close_multiple_handles_for_same_file) { TEST_F(file_manager_test, download_is_stored_after_write_if_partially_downloaded) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); fm.start(); @@ -531,7 +531,7 @@ TEST_F(file_manager_test, TEST_F(file_manager_test, upload_occurs_after_write_if_fully_downloaded) { cfg->set_enable_chunk_downloader_timeout(true); - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); polling::instance().start(cfg.get()); file_manager fm(*cfg, mp); @@ -639,7 +639,7 @@ TEST_F(file_manager_test, upload_occurs_after_write_if_fully_downloaded) { } TEST_F(file_manager_test, can_evict_file) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); fm.start(); @@ -730,7 +730,7 @@ TEST_F(file_manager_test, can_evict_file) { } TEST_F(file_manager_test, evict_file_fails_if_file_is_pinned) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); EXPECT_CALL(mp, get_item_meta(_, META_PINNED, _)) @@ -745,14 +745,14 @@ TEST_F(file_manager_test, evict_file_fails_if_file_is_pinned) { EXPECT_FALSE(fm.evict_file("/test_open.txt")); } -TEST_F(file_manager_test, evict_file_fails_if_provider_is_direct_only) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(true)); +TEST_F(file_manager_test, evict_file_fails_if_provider_is_read_only) { + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(true)); file_manager fm(*cfg, mp); EXPECT_FALSE(fm.evict_file("/test.txt")); } TEST_F(file_manager_test, evict_file_fails_if_file_is_open) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); EXPECT_CALL(mp, get_filesystem_item) @@ -793,7 +793,7 @@ TEST_F(file_manager_test, evict_file_fails_if_file_is_open) { TEST_F(file_manager_test, evict_file_fails_if_unable_to_get_source_path_from_item_meta) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); EXPECT_CALL(mp, get_item_meta(_, META_SOURCE, _)) @@ -817,7 +817,7 @@ TEST_F(file_manager_test, } TEST_F(file_manager_test, evict_file_fails_if_source_path_is_empty) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); EXPECT_CALL(mp, get_item_meta(_, META_SOURCE, _)) @@ -841,7 +841,7 @@ TEST_F(file_manager_test, evict_file_fails_if_source_path_is_empty) { } TEST_F(file_manager_test, evict_file_fails_if_file_is_uploading) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); fm.start(); @@ -924,7 +924,7 @@ TEST_F(file_manager_test, evict_file_fails_if_file_is_uploading) { } TEST_F(file_manager_test, evict_file_fails_if_file_is_in_upload_queue) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); @@ -939,7 +939,7 @@ TEST_F(file_manager_test, evict_file_fails_if_file_is_in_upload_queue) { } TEST_F(file_manager_test, evict_file_fails_if_file_is_modified) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); EXPECT_CALL(mp, get_filesystem_item) @@ -975,7 +975,7 @@ TEST_F(file_manager_test, evict_file_fails_if_file_is_modified) { } TEST_F(file_manager_test, evict_file_fails_if_file_is_not_complete) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); EXPECT_CALL(mp, get_filesystem_item) @@ -1013,7 +1013,7 @@ TEST_F(file_manager_test, evict_file_fails_if_file_is_not_complete) { } TEST_F(file_manager_test, can_get_directory_items) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); EXPECT_CALL(mp, get_directory_items) @@ -1037,7 +1037,7 @@ TEST_F(file_manager_test, can_get_directory_items) { } TEST_F(file_manager_test, file_is_not_opened_if_provider_create_file_fails) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); const auto now = utils::time::get_time_now(); auto meta = create_meta_attributes( @@ -1062,7 +1062,7 @@ TEST_F(file_manager_test, file_is_not_opened_if_provider_create_file_fails) { } TEST_F(file_manager_test, create_fails_if_provider_create_is_unsuccessful) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); @@ -1083,7 +1083,7 @@ TEST_F(file_manager_test, create_fails_if_provider_create_is_unsuccessful) { } TEST_F(file_manager_test, get_open_file_fails_if_file_is_not_open) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); @@ -1097,7 +1097,7 @@ TEST_F(file_manager_test, get_open_file_fails_if_file_is_not_open) { TEST_F(file_manager_test, get_open_file_promotes_non_writeable_file_if_writeable_is_specified) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); @@ -1173,7 +1173,7 @@ TEST_F(file_manager_test, } TEST_F(file_manager_test, open_file_fails_if_file_is_not_found) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); @@ -1189,7 +1189,7 @@ TEST_F(file_manager_test, open_file_fails_if_file_is_not_found) { TEST_F(file_manager_test, open_file_fails_if_provider_get_filesystem_item_fails) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); @@ -1223,7 +1223,7 @@ TEST_F(file_manager_test, } TEST_F(file_manager_test, open_file_fails_if_provider_set_item_meta_fails) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); @@ -1264,7 +1264,7 @@ TEST_F(file_manager_test, open_file_fails_if_provider_set_item_meta_fails) { } TEST_F(file_manager_test, open_file_creates_source_path_if_empty) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); @@ -1317,7 +1317,7 @@ TEST_F(file_manager_test, open_file_creates_source_path_if_empty) { } TEST_F(file_manager_test, open_file_first_file_handle_is_not_zero) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); @@ -1355,7 +1355,7 @@ TEST_F(file_manager_test, open_file_first_file_handle_is_not_zero) { } TEST_F(file_manager_test, can_remove_file) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); @@ -1391,7 +1391,7 @@ TEST_F(file_manager_test, can_queue_and_remove_upload) { "download_resume_removed", }); - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); @@ -1415,7 +1415,7 @@ TEST_F(file_manager_test, file_is_closed_after_download_timeout) { polling::instance().start(cfg.get()); - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); fm.start(); @@ -1499,7 +1499,7 @@ TEST_F(file_manager_test, file_is_closed_after_download_timeout) { } TEST_F(file_manager_test, remove_file_fails_if_file_does_not_exist) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); @@ -1515,7 +1515,7 @@ TEST_F(file_manager_test, remove_file_fails_if_file_does_not_exist) { } TEST_F(file_manager_test, remove_file_fails_if_provider_remove_file_fails) { - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); file_manager fm(*cfg, mp); diff --git a/repertory/repertory_test/src/open_file_test.cpp b/repertory/repertory_test/src/open_file_test.cpp index 86a1c492..173eb95d 100644 --- a/repertory/repertory_test/src/open_file_test.cpp +++ b/repertory/repertory_test/src/open_file_test.cpp @@ -59,7 +59,7 @@ TEST(open_file, properly_initializes_state_for_0_byte_file) { mock_provider mp; mock_upload_manager um; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.directory = false; @@ -80,7 +80,7 @@ TEST(open_file, properly_initializes_state_based_on_chunk_size) { mock_provider mp; mock_upload_manager um; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.directory = false; @@ -113,7 +113,7 @@ TEST(open_file, will_not_change_source_path_for_0_byte_file) { mock_provider mp; mock_upload_manager um; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.directory = false; @@ -137,7 +137,7 @@ TEST(open_file, will_change_source_path_if_file_size_is_greater_than_0) { mock_provider mp; mock_upload_manager um; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.api_path = "/test.txt"; @@ -177,7 +177,7 @@ TEST(open_file, mock_provider mp; mock_upload_manager um; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.api_path = "/test.txt"; @@ -201,7 +201,7 @@ TEST(open_file, write_with_incomplete_download) { mock_provider mp; mock_upload_manager um; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.api_path = "/test.txt"; @@ -289,7 +289,7 @@ TEST(open_file, write_new_file) { mock_provider mp; mock_upload_manager um; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.api_path = "/test.txt"; @@ -362,7 +362,7 @@ TEST(open_file, write_new_file_multiple_chunks) { mock_provider mp; mock_upload_manager um; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.api_path = "/test.txt"; @@ -455,7 +455,7 @@ TEST(open_file, resize_file_to_0_bytes) { mock_provider mp; mock_upload_manager um; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.api_path = "/test.txt"; @@ -505,7 +505,7 @@ TEST(open_file, resize_file_by_full_chunk) { mock_provider mp; mock_upload_manager um; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.api_path = "/test.txt"; @@ -556,7 +556,7 @@ TEST(open_file, can_add_handle) { mock_provider mp; mock_upload_manager um; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.api_path = "/test.txt"; @@ -618,7 +618,7 @@ TEST(open_file, can_remove_handle) { mock_provider mp; mock_upload_manager um; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.api_path = "/test.txt"; diff --git a/repertory/repertory_test/src/providers_test.cpp b/repertory/repertory_test/src/providers_test.cpp index 40cf6153..ad79ff9b 100644 --- a/repertory/repertory_test/src/providers_test.cpp +++ b/repertory/repertory_test/src/providers_test.cpp @@ -178,7 +178,7 @@ const auto decrypt_parts = [](const repertory::app_config &cfg, namespace repertory { static void can_create_and_remove_directory(i_provider &provider) { - if (provider.is_direct_only()) { + if (provider.is_read_only()) { api_meta_map meta{}; EXPECT_EQ(api_error::not_implemented, provider.create_directory("/moose", meta)); @@ -196,7 +196,7 @@ static void can_create_and_remove_directory(i_provider &provider) { } static void create_directory_fails_if_already_exists(i_provider &provider) { - if (provider.is_direct_only()) { + if (provider.is_read_only()) { return; } @@ -210,7 +210,7 @@ static void create_directory_fails_if_already_exists(i_provider &provider) { static void create_directory_fails_if_file_already_exists(i_provider &provider) { - if (provider.is_direct_only()) { + if (provider.is_read_only()) { return; } @@ -223,7 +223,7 @@ create_directory_fails_if_file_already_exists(i_provider &provider) { } static void create_directory_clone_source_meta(i_provider &provider) { - if (provider.is_direct_only()) { + if (provider.is_read_only()) { EXPECT_EQ(api_error::not_implemented, provider.create_directory_clone_source_meta("/moose", "/moose")); return; @@ -257,7 +257,7 @@ static void create_directory_clone_source_meta(i_provider &provider) { static void create_directory_clone_source_meta_fails_if_already_exists( i_provider &provider) { - if (provider.is_direct_only()) { + if (provider.is_read_only()) { return; } create_directory(provider, "/clone"); @@ -272,7 +272,7 @@ static void create_directory_clone_source_meta_fails_if_already_exists( static void create_directory_clone_source_meta_fails_if_directory_not_found( i_provider &provider) { - if (provider.is_direct_only()) { + if (provider.is_read_only()) { return; } @@ -282,7 +282,7 @@ static void create_directory_clone_source_meta_fails_if_directory_not_found( static void create_directory_clone_source_meta_fails_if_file_already_exists( i_provider &provider) { - if (provider.is_direct_only()) { + if (provider.is_read_only()) { return; } @@ -297,7 +297,7 @@ static void create_directory_clone_source_meta_fails_if_file_already_exists( } static void can_create_and_remove_file(i_provider &provider) { - if (provider.is_direct_only()) { + if (provider.is_read_only()) { api_meta_map meta{}; EXPECT_EQ(api_error::not_implemented, provider.create_file("/moose.txt", meta)); @@ -317,7 +317,7 @@ static void can_create_and_remove_file(i_provider &provider) { } static void create_file_fails_if_already_exists(i_provider &provider) { - if (provider.is_direct_only()) { + if (provider.is_read_only()) { return; } @@ -331,7 +331,7 @@ static void create_file_fails_if_already_exists(i_provider &provider) { static void create_file_fails_if_directory_already_exists(i_provider &provider) { - if (provider.is_direct_only()) { + if (provider.is_read_only()) { return; } @@ -659,7 +659,7 @@ TEST(providers, encrypt_provider) { }, &mgr)); EXPECT_EQ(provider_type::encrypt, provider.get_provider_type()); - EXPECT_TRUE(provider.is_direct_only()); + EXPECT_TRUE(provider.is_read_only()); EXPECT_TRUE(provider.is_online()); EXPECT_FALSE(provider.is_rename_supported()); @@ -698,7 +698,7 @@ TEST(providers, s3_provider) { }, &mgr)); EXPECT_EQ(provider_type::s3, provider.get_provider_type()); - EXPECT_FALSE(provider.is_direct_only()); + EXPECT_FALSE(provider.is_read_only()); EXPECT_TRUE(provider.is_online()); EXPECT_FALSE(provider.is_rename_supported()); @@ -737,7 +737,7 @@ TEST(providers, sia_provider) { }, &mgr)); EXPECT_EQ(provider_type::sia, provider.get_provider_type()); - EXPECT_FALSE(provider.is_direct_only()); + EXPECT_FALSE(provider.is_read_only()); EXPECT_TRUE(provider.is_online()); EXPECT_TRUE(provider.is_rename_supported()); diff --git a/repertory/repertory_test/src/ring_buffer_open_file_test.cpp b/repertory/repertory_test/src/ring_buffer_open_file_test.cpp index f8d58a97..38ef392d 100644 --- a/repertory/repertory_test/src/ring_buffer_open_file_test.cpp +++ b/repertory/repertory_test/src/ring_buffer_open_file_test.cpp @@ -39,7 +39,7 @@ TEST(ring_buffer_open_file, can_forward_to_last_chunk) { mock_provider mp; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.directory = false; @@ -71,7 +71,7 @@ TEST(ring_buffer_open_file, mock_provider mp; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.directory = false; @@ -102,7 +102,7 @@ TEST(ring_buffer_open_file, can_forward_after_last_chunk) { mock_provider mp; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.directory = false; @@ -134,7 +134,7 @@ TEST(ring_buffer_open_file, can_forward_and_rollover_after_last_chunk) { mock_provider mp; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.directory = false; @@ -162,7 +162,7 @@ TEST(ring_buffer_open_file, can_reverse_to_first_chunk) { mock_provider mp; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.directory = false; @@ -194,7 +194,7 @@ TEST(ring_buffer_open_file, mock_provider mp; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.directory = false; @@ -225,7 +225,7 @@ TEST(ring_buffer_open_file, can_reverse_before_first_chunk) { mock_provider mp; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.directory = false; @@ -257,7 +257,7 @@ TEST(ring_buffer_open_file, can_reverse_and_rollover_before_first_chunk) { mock_provider mp; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.directory = false; @@ -293,7 +293,7 @@ TEST(ring_buffer_open_file, can_reverse_full_ring) { mock_provider mp; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.directory = false; @@ -327,7 +327,7 @@ TEST(ring_buffer_open_file, read_full_file) { mock_provider mp; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.directory = false; @@ -392,7 +392,7 @@ TEST(ring_buffer_open_file, read_full_file_in_reverse) { mock_provider mp; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.directory = false; @@ -457,7 +457,7 @@ TEST(ring_buffer_open_file, read_full_file_in_partial_chunks) { mock_provider mp; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.directory = false; @@ -523,7 +523,7 @@ TEST(ring_buffer_open_file, read_full_file_in_partial_chunks_in_reverse) { mock_provider mp; - EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.directory = false; diff --git a/repertory/repertory_test/src/upload_test.cpp b/repertory/repertory_test/src/upload_test.cpp index f6ee3890..724335a2 100644 --- a/repertory/repertory_test/src/upload_test.cpp +++ b/repertory/repertory_test/src/upload_test.cpp @@ -37,7 +37,7 @@ TEST(upload, can_upload_a_valid_file) { mock_provider mock_prov; - EXPECT_CALL(mock_prov, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mock_prov, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.api_path = "/test.txt"; @@ -80,7 +80,7 @@ TEST(upload, can_cancel_upload) { mock_provider mock_provider; - EXPECT_CALL(mock_provider, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mock_provider, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.api_path = "/test.txt"; @@ -146,7 +146,7 @@ TEST(upload, can_stop_upload) { mock_provider mock_provider; - EXPECT_CALL(mock_provider, is_direct_only()).WillRepeatedly(Return(false)); + EXPECT_CALL(mock_provider, is_read_only()).WillRepeatedly(Return(false)); filesystem_item fsi; fsi.api_path = "/test.txt"; diff --git a/repertory/repertory_test/src/winfsp_drive_test.cpp b/repertory/repertory_test/src/winfsp_drive_test.cpp index 94761720..99f55274 100644 --- a/repertory/repertory_test/src/winfsp_drive_test.cpp +++ b/repertory/repertory_test/src/winfsp_drive_test.cpp @@ -220,6 +220,10 @@ TYPED_TEST(winfsp_test, can_get_and_set_basic_info_test) { } TYPED_TEST(winfsp_test, run_winfsp_tests) { + if (this->provider->is_read_only()) { + return; + } + auto cur = std::filesystem::current_path(); std::filesystem::current_path(this->mount_location);