v2.0.4-rc (#37)
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
# Changelog ## v2.0.4-rc ### BREAKING CHANGES * `renterd` v2.0.0+ is now required. Prior versions will fail to mount. ### Issues * \#35 [bug] Low frequency check is set to '0' instead of 1 hour by default * \#36 [bug] Max cache size bytes is set to '0' by default ### Changes from v2.0.3-rc * Added Sia API version check prior to mounting * Added back `-cv` (check version) CLI option * Continue documentation updates * Fixed setting `ApiAuth` via `set_value_by_name` * Fixed setting `HostConfig.ApiUser` via `set_value_by_name` * Fixed setting `HostConfig.Path` via `set_value_by_name` * Fixed setting `HostConfig.Protocol` via `set_value_by_name` * Improved ring buffer read-ahead * Integrated `renterd` version 2.0.0 * Prefer using local cache file when opening files * Refactored `app_config` unit tests * Refactored polling to be more accurate on scheduling tasks Reviewed-on: #37
This commit is contained in:
@@ -268,8 +268,8 @@ public:
|
||||
return file_path;
|
||||
}
|
||||
|
||||
static auto create_file_and_test(std::string &file_name,
|
||||
mode_t perms) -> std::string {
|
||||
static auto create_file_and_test(std::string &file_name, mode_t perms)
|
||||
-> std::string {
|
||||
file_name += std::to_string(++provider_idx);
|
||||
auto file_path = utils::path::combine(mount_location, {file_name});
|
||||
|
||||
@@ -287,7 +287,7 @@ public:
|
||||
EXPECT_TRUE(utils::file::file(file_path).exists());
|
||||
EXPECT_FALSE(utils::file::directory(file_path).exists());
|
||||
|
||||
struct stat64 unix_st {};
|
||||
struct stat64 unix_st{};
|
||||
EXPECT_EQ(0, stat64(file_path.c_str(), &unix_st));
|
||||
EXPECT_EQ(getgid(), unix_st.st_gid);
|
||||
EXPECT_EQ(getuid(), unix_st.st_uid);
|
||||
@@ -299,8 +299,8 @@ public:
|
||||
return create_file_and_test(file_name, ACCESSPERMS);
|
||||
}
|
||||
|
||||
static auto create_directory_and_test(std::string &dir_name,
|
||||
mode_t perms) -> std::string {
|
||||
static auto create_directory_and_test(std::string &dir_name, mode_t perms)
|
||||
-> std::string {
|
||||
dir_name += std::to_string(++provider_idx);
|
||||
|
||||
auto dir_path = utils::path::combine(mount_location, {dir_name});
|
||||
@@ -309,7 +309,7 @@ public:
|
||||
EXPECT_TRUE(utils::file::directory(dir_path).exists());
|
||||
EXPECT_FALSE(utils::file::file(dir_path).exists());
|
||||
|
||||
struct stat64 unix_st {};
|
||||
struct stat64 unix_st{};
|
||||
EXPECT_EQ(0, stat64(dir_path.c_str(), &unix_st));
|
||||
EXPECT_EQ(getgid(), unix_st.st_gid);
|
||||
EXPECT_EQ(getuid(), unix_st.st_uid);
|
||||
@@ -410,9 +410,9 @@ std::string fuse_test<provider_t>::mount_location;
|
||||
template <typename provider_t>
|
||||
std::string fuse_test<provider_t>::mount_location2;
|
||||
|
||||
using fuse_provider_types = ::testing::Types<local_s3, remote_s3>;
|
||||
// using fuse_provider_types =
|
||||
// ::testing::Types<local_s3, remote_s3, local_sia, remote_sia>;
|
||||
// using fuse_provider_types = ::testing::Types<local_s3, remote_s3>;
|
||||
using fuse_provider_types =
|
||||
::testing::Types<local_s3, remote_s3, local_sia, remote_sia>;
|
||||
} // namespace repertory
|
||||
|
||||
#endif // !defined(_WIN32)
|
||||
|
@@ -36,6 +36,10 @@ private:
|
||||
const bool allow_rename_;
|
||||
|
||||
public:
|
||||
MOCK_METHOD(bool, check_version,
|
||||
(std::string & required_version, std::string &returned_version),
|
||||
(const, override));
|
||||
|
||||
MOCK_METHOD(api_error, create_directory,
|
||||
(const std::string &api_path, api_meta_map &meta), (override));
|
||||
|
||||
|
763
repertory/repertory_test/src/app_config_test.cpp
Normal file
763
repertory/repertory_test/src/app_config_test.cpp
Normal file
@@ -0,0 +1,763 @@
|
||||
/*
|
||||
Copyright <2018-2025> <scott.e.graves@protonmail.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
*/
|
||||
#include "test_common.hpp"
|
||||
|
||||
#include "app_config.hpp"
|
||||
#include "utils/path.hpp"
|
||||
|
||||
namespace repertory {
|
||||
class app_config_test : public ::testing::Test {
|
||||
public:
|
||||
static std::atomic<std::uint64_t> idx;
|
||||
|
||||
std::string encrypt_directory;
|
||||
std::string remote_directory;
|
||||
std::string s3_directory;
|
||||
std::string sia_directory;
|
||||
|
||||
void SetUp() override {
|
||||
encrypt_directory = utils::path::combine(test::get_test_output_dir(),
|
||||
{
|
||||
"app_config_test",
|
||||
"encrypt",
|
||||
std::to_string(++idx),
|
||||
});
|
||||
|
||||
remote_directory = utils::path::combine(test::get_test_output_dir(),
|
||||
{
|
||||
"app_config_test",
|
||||
"remote",
|
||||
std::to_string(++idx),
|
||||
});
|
||||
|
||||
s3_directory = utils::path::combine(test::get_test_output_dir(),
|
||||
{
|
||||
"app_config_test",
|
||||
"s3",
|
||||
std::to_string(++idx),
|
||||
});
|
||||
|
||||
sia_directory = utils::path::combine(test::get_test_output_dir(),
|
||||
{
|
||||
"app_config_test",
|
||||
"sia",
|
||||
std::to_string(++idx),
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
static void remove_unused_types(auto &data, provider_type prov) {
|
||||
switch (prov) {
|
||||
case provider_type::encrypt:
|
||||
data.erase(JSON_DOWNLOAD_TIMEOUT_SECS);
|
||||
data.erase(JSON_ENABLE_DOWNLOAD_TIMEOUT);
|
||||
data.erase(JSON_EVICTION_DELAY_MINS);
|
||||
data.erase(JSON_EVICTION_USE_ACCESS_TIME);
|
||||
data.erase(JSON_HOST_CONFIG);
|
||||
data.erase(JSON_MAX_CACHE_SIZE_BYTES);
|
||||
data.erase(JSON_MAX_UPLOAD_COUNT);
|
||||
data.erase(JSON_ONLINE_CHECK_RETRY_SECS);
|
||||
data.erase(JSON_PREFERRED_DOWNLOAD_TYPE);
|
||||
data.erase(JSON_REMOTE_CONFIG);
|
||||
data.erase(JSON_RETRY_READ_COUNT);
|
||||
data.erase(JSON_RING_BUFFER_FILE_SIZE);
|
||||
data.erase(JSON_S3_CONFIG);
|
||||
data.erase(JSON_SIA_CONFIG);
|
||||
break;
|
||||
|
||||
case provider_type::remote:
|
||||
data.erase(JSON_DATABASE_TYPE);
|
||||
data.erase(JSON_DOWNLOAD_TIMEOUT_SECS);
|
||||
data.erase(JSON_ENABLE_DOWNLOAD_TIMEOUT);
|
||||
data.erase(JSON_ENCRYPT_CONFIG);
|
||||
data.erase(JSON_EVICTION_DELAY_MINS);
|
||||
data.erase(JSON_EVICTION_USE_ACCESS_TIME);
|
||||
data.erase(JSON_HIGH_FREQ_INTERVAL_SECS);
|
||||
data.erase(JSON_HOST_CONFIG);
|
||||
data.erase(JSON_LOW_FREQ_INTERVAL_SECS);
|
||||
data.erase(JSON_MAX_CACHE_SIZE_BYTES);
|
||||
data.erase(JSON_MAX_UPLOAD_COUNT);
|
||||
data.erase(JSON_MED_FREQ_INTERVAL_SECS);
|
||||
data.erase(JSON_ONLINE_CHECK_RETRY_SECS);
|
||||
data.erase(JSON_PREFERRED_DOWNLOAD_TYPE);
|
||||
data.erase(JSON_REMOTE_MOUNT);
|
||||
data.erase(JSON_RETRY_READ_COUNT);
|
||||
data.erase(JSON_RING_BUFFER_FILE_SIZE);
|
||||
data.erase(JSON_S3_CONFIG);
|
||||
data.erase(JSON_SIA_CONFIG);
|
||||
break;
|
||||
|
||||
case provider_type::s3:
|
||||
data.erase(JSON_ENCRYPT_CONFIG);
|
||||
data.erase(JSON_HOST_CONFIG);
|
||||
data.erase(JSON_REMOTE_CONFIG);
|
||||
data.erase(JSON_SIA_CONFIG);
|
||||
break;
|
||||
|
||||
case provider_type::sia:
|
||||
data.erase(JSON_ENCRYPT_CONFIG);
|
||||
data.erase(JSON_REMOTE_CONFIG);
|
||||
data.erase(JSON_S3_CONFIG);
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
std::atomic<std::uint64_t> app_config_test::idx{0U};
|
||||
|
||||
static void defaults_tests(const json &json_data, provider_type prov) {
|
||||
json json_defaults = {
|
||||
{JSON_API_PORT, app_config::default_rpc_port(prov)},
|
||||
{JSON_API_USER, std::string{REPERTORY}},
|
||||
{JSON_DOWNLOAD_TIMEOUT_SECS, default_download_timeout_secs},
|
||||
{JSON_DATABASE_TYPE, database_type::rocksdb},
|
||||
{JSON_ENABLE_DOWNLOAD_TIMEOUT, true},
|
||||
{JSON_ENABLE_DRIVE_EVENTS, false},
|
||||
#if defined(_WIN32)
|
||||
{JSON_ENABLE_MOUNT_MANAGER, false},
|
||||
#endif // defined(_WIN32)
|
||||
{JSON_ENCRYPT_CONFIG, encrypt_config{}},
|
||||
{JSON_EVENT_LEVEL, event_level::info},
|
||||
{JSON_EVICTION_DELAY_MINS, default_eviction_delay_mins},
|
||||
{JSON_EVICTION_USE_ACCESS_TIME, false},
|
||||
{JSON_HIGH_FREQ_INTERVAL_SECS, default_high_freq_interval_secs},
|
||||
{JSON_HOST_CONFIG, host_config{}},
|
||||
{JSON_LOW_FREQ_INTERVAL_SECS, default_low_freq_interval_secs},
|
||||
{JSON_MAX_CACHE_SIZE_BYTES, default_max_cache_size_bytes},
|
||||
{JSON_MAX_UPLOAD_COUNT, default_max_upload_count},
|
||||
{JSON_MED_FREQ_INTERVAL_SECS, default_med_freq_interval_secs},
|
||||
{JSON_ONLINE_CHECK_RETRY_SECS, default_online_check_retry_secs},
|
||||
{JSON_PREFERRED_DOWNLOAD_TYPE, download_type::default_},
|
||||
{JSON_REMOTE_CONFIG, remote::remote_config{}},
|
||||
{JSON_REMOTE_MOUNT, remote::remote_mount{}},
|
||||
{JSON_RETRY_READ_COUNT, default_retry_read_count},
|
||||
{JSON_RING_BUFFER_FILE_SIZE, default_ring_buffer_file_size},
|
||||
{JSON_S3_CONFIG, s3_config{}},
|
||||
{JSON_SIA_CONFIG, sia_config{}},
|
||||
{JSON_TASK_WAIT_MS, default_task_wait_ms},
|
||||
{JSON_VERSION, REPERTORY_CONFIG_VERSION},
|
||||
};
|
||||
|
||||
remove_unused_types(json_defaults, prov);
|
||||
|
||||
switch (prov) {
|
||||
case provider_type::encrypt:
|
||||
json_defaults[JSON_REMOTE_MOUNT][JSON_API_PORT] =
|
||||
app_config::default_remote_api_port(prov);
|
||||
break;
|
||||
|
||||
json_defaults[JSON_REMOTE_MOUNT][JSON_API_PORT] =
|
||||
app_config::default_remote_api_port(prov);
|
||||
break;
|
||||
|
||||
case provider_type::sia:
|
||||
json_defaults[JSON_HOST_CONFIG][JSON_API_PORT] =
|
||||
app_config::default_api_port(prov);
|
||||
json_defaults[JSON_HOST_CONFIG][JSON_AGENT_STRING] =
|
||||
app_config::default_agent_name(prov);
|
||||
json_defaults[JSON_REMOTE_MOUNT][JSON_API_PORT] =
|
||||
app_config::default_remote_api_port(prov);
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
fmt::println("testing default|{}-{}", app_config::get_provider_name(prov),
|
||||
JSON_API_AUTH);
|
||||
ASSERT_EQ(std::size_t(default_api_auth_size),
|
||||
json_data.at(JSON_API_AUTH).get<std::string>().size());
|
||||
for (const auto &[key, value] : json_defaults.items()) {
|
||||
fmt::println("testing default|{}-{}", app_config::get_provider_name(prov),
|
||||
key);
|
||||
EXPECT_EQ(value, json_data.at(key));
|
||||
}
|
||||
}
|
||||
|
||||
template <typename get_t, typename set_t, typename val_t>
|
||||
static void test_getter_setter(app_config &cfg, get_t getter, set_t setter,
|
||||
val_t val1, val_t val2, const std::string &key,
|
||||
const std::string &val_str) {
|
||||
(cfg.*setter)(val1);
|
||||
ASSERT_TRUE((cfg.*getter)() == val1);
|
||||
|
||||
(cfg.*setter)(val2);
|
||||
ASSERT_TRUE((cfg.*getter)() == val2);
|
||||
|
||||
if (key.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
EXPECT_STREQ(val_str.c_str(), cfg.set_value_by_name(key, val_str).c_str());
|
||||
}
|
||||
|
||||
static void common_tests(app_config &config, provider_type prov) {
|
||||
ASSERT_EQ(config.get_provider_type(), prov);
|
||||
|
||||
std::map<std::string_view, std::function<void(app_config &)>> methods{
|
||||
{JSON_API_AUTH,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(cfg, &app_config::get_api_auth,
|
||||
&app_config::set_api_auth, "", "auth",
|
||||
JSON_API_AUTH, "auth2");
|
||||
}},
|
||||
{JSON_API_PORT,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(cfg, &app_config::get_api_port,
|
||||
&app_config::set_api_port, std::uint16_t{0U},
|
||||
std::uint16_t{1024U}, JSON_API_PORT, "1025");
|
||||
}},
|
||||
{JSON_API_USER,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(cfg, &app_config::get_api_user,
|
||||
&app_config::set_api_user, "", "user",
|
||||
JSON_API_USER, "user2");
|
||||
}},
|
||||
{JSON_DOWNLOAD_TIMEOUT_SECS,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(cfg, &app_config::get_download_timeout_secs,
|
||||
&app_config::set_download_timeout_secs,
|
||||
std::uint8_t{min_download_timeout_secs + 1U},
|
||||
std::uint8_t{min_download_timeout_secs + 2U},
|
||||
JSON_DOWNLOAD_TIMEOUT_SECS,
|
||||
std::to_string(min_download_timeout_secs + 2U));
|
||||
|
||||
cfg.set_download_timeout_secs(min_download_timeout_secs - 1U);
|
||||
EXPECT_EQ(min_download_timeout_secs, cfg.get_download_timeout_secs());
|
||||
}},
|
||||
{JSON_DATABASE_TYPE,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(cfg, &app_config::get_database_type,
|
||||
&app_config::set_database_type,
|
||||
database_type::rocksdb, database_type::sqlite,
|
||||
JSON_DATABASE_TYPE, "rocksdb");
|
||||
}},
|
||||
{JSON_ENABLE_DOWNLOAD_TIMEOUT,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(cfg, &app_config::get_enable_download_timeout,
|
||||
&app_config::set_enable_download_timeout, true,
|
||||
false, JSON_ENABLE_DOWNLOAD_TIMEOUT, "1");
|
||||
}},
|
||||
{JSON_ENABLE_DRIVE_EVENTS,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(cfg, &app_config::get_enable_drive_events,
|
||||
&app_config::set_enable_drive_events, true, false,
|
||||
JSON_ENABLE_DRIVE_EVENTS, "1");
|
||||
}},
|
||||
#if defined(_WIN32)
|
||||
{JSON_ENABLE_MOUNT_MANAGER,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(cfg, &app_config::get_enable_mount_manager,
|
||||
&app_config::set_enable_mount_manager, true, false,
|
||||
JSON_ENABLE_MOUNT_MANAGER, "1");
|
||||
}},
|
||||
#endif // defined(_WIN32)
|
||||
{JSON_ENCRYPT_CONFIG,
|
||||
[](app_config &cfg) {
|
||||
encrypt_config cfg1{};
|
||||
cfg1.encryption_token = "1";
|
||||
cfg1.path = "2";
|
||||
|
||||
encrypt_config cfg2{};
|
||||
cfg2.encryption_token = "2";
|
||||
cfg2.path = "1";
|
||||
|
||||
ASSERT_NE(cfg1, cfg2);
|
||||
test_getter_setter(cfg, &app_config::get_encrypt_config,
|
||||
&app_config::set_encrypt_config, cfg1, cfg2, "",
|
||||
"");
|
||||
|
||||
encrypt_config cfg3{};
|
||||
cfg3.encryption_token = "3";
|
||||
cfg3.path = "4";
|
||||
|
||||
auto value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_ENCRYPT_CONFIG, JSON_ENCRYPTION_TOKEN),
|
||||
cfg3.encryption_token);
|
||||
EXPECT_STREQ(cfg3.encryption_token.c_str(), value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_ENCRYPT_CONFIG, JSON_PATH), cfg3.path);
|
||||
EXPECT_STREQ(cfg3.path.c_str(), value.c_str());
|
||||
}},
|
||||
{JSON_EVENT_LEVEL,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(cfg, &app_config::get_event_level,
|
||||
&app_config::set_event_level, event_level::critical,
|
||||
event_level::debug, JSON_EVENT_LEVEL, "info");
|
||||
}},
|
||||
{JSON_EVICTION_DELAY_MINS,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(cfg, &app_config::get_eviction_delay_mins,
|
||||
&app_config::set_eviction_delay_mins,
|
||||
std::uint32_t{0U}, std::uint32_t{1U},
|
||||
JSON_EVICTION_DELAY_MINS, "2");
|
||||
}},
|
||||
{JSON_EVICTION_USE_ACCESS_TIME,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(cfg, &app_config::get_eviction_uses_accessed_time,
|
||||
&app_config::set_eviction_uses_accessed_time, true,
|
||||
false, JSON_EVICTION_USE_ACCESS_TIME, "1");
|
||||
}},
|
||||
{JSON_HIGH_FREQ_INTERVAL_SECS,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(
|
||||
cfg, &app_config::get_high_frequency_interval_secs,
|
||||
&app_config::set_high_frequency_interval_secs,
|
||||
std::uint16_t{default_high_freq_interval_secs + 1U},
|
||||
std::uint16_t{default_high_freq_interval_secs + 2U},
|
||||
JSON_HIGH_FREQ_INTERVAL_SECS,
|
||||
std::to_string(default_high_freq_interval_secs + 3U));
|
||||
|
||||
cfg.set_high_frequency_interval_secs(0U);
|
||||
EXPECT_EQ(1U, cfg.get_high_frequency_interval_secs());
|
||||
}},
|
||||
{JSON_HOST_CONFIG,
|
||||
[](app_config &cfg) {
|
||||
host_config cfg1{};
|
||||
cfg1.agent_string = "1";
|
||||
cfg1.api_password = "2";
|
||||
cfg1.api_user = "3";
|
||||
cfg1.api_port = 4U;
|
||||
cfg1.host_name_or_ip = "5";
|
||||
cfg1.path = "6";
|
||||
cfg1.protocol = "http";
|
||||
cfg1.timeout_ms = 8U;
|
||||
|
||||
host_config cfg2{};
|
||||
cfg2.agent_string = "9";
|
||||
cfg2.api_password = "10";
|
||||
cfg2.api_user = "11";
|
||||
cfg2.api_port = 12U;
|
||||
cfg2.host_name_or_ip = "13";
|
||||
cfg2.path = "14";
|
||||
cfg2.protocol = "https";
|
||||
cfg2.timeout_ms = 16U;
|
||||
|
||||
ASSERT_NE(cfg1, cfg2);
|
||||
|
||||
test_getter_setter(cfg, &app_config::get_host_config,
|
||||
&app_config::set_host_config, cfg1, cfg2, "", "");
|
||||
|
||||
host_config cfg3{};
|
||||
cfg3.agent_string = "17";
|
||||
cfg3.api_password = "18";
|
||||
cfg3.api_user = "19";
|
||||
cfg3.api_port = 20U;
|
||||
cfg3.host_name_or_ip = "21";
|
||||
cfg3.path = "22";
|
||||
cfg3.protocol = "http";
|
||||
cfg3.timeout_ms = 24;
|
||||
|
||||
auto value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_HOST_CONFIG, JSON_AGENT_STRING),
|
||||
cfg3.agent_string);
|
||||
EXPECT_STREQ(cfg3.agent_string.c_str(), value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_HOST_CONFIG, JSON_API_PASSWORD),
|
||||
cfg3.api_password);
|
||||
EXPECT_STREQ(cfg3.api_password.c_str(), value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_HOST_CONFIG, JSON_API_USER),
|
||||
cfg3.api_user);
|
||||
EXPECT_STREQ(cfg3.api_user.c_str(), value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_HOST_CONFIG, JSON_API_PORT),
|
||||
std::to_string(cfg3.api_port));
|
||||
EXPECT_STREQ(std::to_string(cfg3.api_port).c_str(), value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_HOST_CONFIG, JSON_HOST_NAME_OR_IP),
|
||||
cfg3.host_name_or_ip);
|
||||
EXPECT_STREQ(cfg3.host_name_or_ip.c_str(), value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_HOST_CONFIG, JSON_PATH), cfg3.path);
|
||||
EXPECT_STREQ(cfg3.path.c_str(), value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_HOST_CONFIG, JSON_PROTOCOL),
|
||||
cfg3.protocol);
|
||||
EXPECT_STREQ(cfg3.protocol.c_str(), value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_HOST_CONFIG, JSON_TIMEOUT_MS),
|
||||
std::to_string(cfg3.timeout_ms));
|
||||
EXPECT_STREQ(std::to_string(cfg3.timeout_ms).c_str(), value.c_str());
|
||||
}},
|
||||
{JSON_LOW_FREQ_INTERVAL_SECS,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(
|
||||
cfg, &app_config::get_low_frequency_interval_secs,
|
||||
&app_config::set_low_frequency_interval_secs,
|
||||
std::uint16_t{default_low_freq_interval_secs + 1U},
|
||||
std::uint16_t{default_low_freq_interval_secs + 2U},
|
||||
JSON_LOW_FREQ_INTERVAL_SECS,
|
||||
std::to_string(default_low_freq_interval_secs + 3U));
|
||||
|
||||
cfg.set_low_frequency_interval_secs(0U);
|
||||
EXPECT_EQ(1U, cfg.get_low_frequency_interval_secs());
|
||||
}},
|
||||
{JSON_MAX_CACHE_SIZE_BYTES,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(
|
||||
cfg, &app_config::get_max_cache_size_bytes,
|
||||
&app_config::set_max_cache_size_bytes, min_cache_size_bytes + 1U,
|
||||
min_cache_size_bytes + 2U, JSON_MAX_CACHE_SIZE_BYTES,
|
||||
std::to_string(min_cache_size_bytes + 3U));
|
||||
|
||||
cfg.set_max_cache_size_bytes(min_cache_size_bytes - 1U);
|
||||
EXPECT_EQ(min_cache_size_bytes, cfg.get_max_cache_size_bytes());
|
||||
}},
|
||||
{JSON_MAX_UPLOAD_COUNT,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(cfg, &app_config::get_max_upload_count,
|
||||
&app_config::set_max_upload_count, std::uint8_t{1U},
|
||||
std::uint8_t{2U}, JSON_MAX_UPLOAD_COUNT, "3");
|
||||
|
||||
cfg.set_max_upload_count(0U);
|
||||
EXPECT_EQ(1U, cfg.get_max_upload_count());
|
||||
}},
|
||||
{JSON_MED_FREQ_INTERVAL_SECS,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(
|
||||
cfg, &app_config::get_med_frequency_interval_secs,
|
||||
&app_config::set_med_frequency_interval_secs,
|
||||
std::uint16_t{default_med_freq_interval_secs + 1U},
|
||||
std::uint16_t{default_med_freq_interval_secs + 2U},
|
||||
JSON_MED_FREQ_INTERVAL_SECS,
|
||||
std::to_string(default_med_freq_interval_secs + 3U));
|
||||
|
||||
cfg.set_med_frequency_interval_secs(0U);
|
||||
EXPECT_EQ(1U, cfg.get_med_frequency_interval_secs());
|
||||
}},
|
||||
{JSON_ONLINE_CHECK_RETRY_SECS,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(cfg, &app_config::get_online_check_retry_secs,
|
||||
&app_config::set_online_check_retry_secs,
|
||||
std::uint16_t{min_online_check_retry_secs + 1U},
|
||||
std::uint16_t{min_online_check_retry_secs + 2U},
|
||||
JSON_ONLINE_CHECK_RETRY_SECS,
|
||||
std::to_string(min_online_check_retry_secs + 3U));
|
||||
|
||||
cfg.set_online_check_retry_secs(min_online_check_retry_secs - 1U);
|
||||
EXPECT_EQ(min_online_check_retry_secs,
|
||||
cfg.get_online_check_retry_secs());
|
||||
}},
|
||||
{JSON_PREFERRED_DOWNLOAD_TYPE,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(cfg, &app_config::get_preferred_download_type,
|
||||
&app_config::set_preferred_download_type,
|
||||
download_type::direct, download_type::default_,
|
||||
JSON_PREFERRED_DOWNLOAD_TYPE, "ring_buffer");
|
||||
}},
|
||||
{JSON_REMOTE_CONFIG,
|
||||
[](app_config &cfg) {
|
||||
remote::remote_config remote_cfg1{};
|
||||
remote_cfg1.api_port = 1U;
|
||||
remote_cfg1.encryption_token = "2";
|
||||
remote_cfg1.host_name_or_ip = "3";
|
||||
remote_cfg1.max_connections = 4U;
|
||||
remote_cfg1.recv_timeout_ms = 5U;
|
||||
remote_cfg1.send_timeout_ms = 6U;
|
||||
|
||||
remote::remote_config remote_cfg2{};
|
||||
remote_cfg1.api_port = 6U;
|
||||
remote_cfg1.encryption_token = "5";
|
||||
remote_cfg1.host_name_or_ip = "4";
|
||||
remote_cfg1.max_connections = 3U;
|
||||
remote_cfg1.recv_timeout_ms = 2U;
|
||||
remote_cfg1.send_timeout_ms = 1U;
|
||||
|
||||
ASSERT_NE(remote_cfg1, remote_cfg2);
|
||||
|
||||
test_getter_setter(cfg, &app_config::get_remote_config,
|
||||
&app_config::set_remote_config, remote_cfg1,
|
||||
remote_cfg2, "", "");
|
||||
|
||||
remote::remote_config remote_cfg3{};
|
||||
remote_cfg1.api_port = 7U;
|
||||
remote_cfg1.encryption_token = "8";
|
||||
remote_cfg1.host_name_or_ip = "9";
|
||||
remote_cfg1.max_connections = 10U;
|
||||
remote_cfg1.recv_timeout_ms = 11U;
|
||||
remote_cfg1.send_timeout_ms = 12U;
|
||||
|
||||
auto value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_REMOTE_CONFIG, JSON_API_PORT),
|
||||
std::to_string(remote_cfg3.api_port));
|
||||
EXPECT_STREQ(std::to_string(remote_cfg3.api_port).c_str(),
|
||||
value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_REMOTE_CONFIG, JSON_ENCRYPTION_TOKEN),
|
||||
remote_cfg3.encryption_token);
|
||||
EXPECT_STREQ(remote_cfg3.encryption_token.c_str(), value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_REMOTE_CONFIG, JSON_HOST_NAME_OR_IP),
|
||||
remote_cfg3.host_name_or_ip);
|
||||
EXPECT_STREQ(remote_cfg3.host_name_or_ip.c_str(), value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_REMOTE_CONFIG, JSON_MAX_CONNECTIONS),
|
||||
std::to_string(remote_cfg3.max_connections));
|
||||
EXPECT_STREQ(std::to_string(remote_cfg3.max_connections).c_str(),
|
||||
value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_REMOTE_CONFIG, JSON_RECV_TIMEOUT_MS),
|
||||
std::to_string(remote_cfg3.recv_timeout_ms));
|
||||
EXPECT_STREQ(std::to_string(remote_cfg3.recv_timeout_ms).c_str(),
|
||||
value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_REMOTE_CONFIG, JSON_SEND_TIMEOUT_MS),
|
||||
std::to_string(remote_cfg3.send_timeout_ms));
|
||||
EXPECT_STREQ(std::to_string(remote_cfg3.send_timeout_ms).c_str(),
|
||||
value.c_str());
|
||||
}},
|
||||
{JSON_REMOTE_MOUNT,
|
||||
[](app_config &cfg) {
|
||||
remote::remote_mount mnt_cfg1{};
|
||||
mnt_cfg1.api_port = 1U;
|
||||
mnt_cfg1.client_pool_size = 2U;
|
||||
mnt_cfg1.enable = false;
|
||||
mnt_cfg1.encryption_token = "3";
|
||||
|
||||
remote::remote_mount mnt_cfg2{};
|
||||
mnt_cfg2.api_port = 3U;
|
||||
mnt_cfg2.client_pool_size = 4U;
|
||||
mnt_cfg2.enable = true;
|
||||
mnt_cfg2.encryption_token = "5";
|
||||
|
||||
ASSERT_NE(mnt_cfg1, mnt_cfg2);
|
||||
|
||||
test_getter_setter(cfg, &app_config::get_remote_mount,
|
||||
&app_config::set_remote_mount, mnt_cfg1, mnt_cfg2,
|
||||
"", "");
|
||||
|
||||
remote::remote_mount mnt_cfg3{};
|
||||
mnt_cfg3.api_port = 9U;
|
||||
mnt_cfg3.client_pool_size = 10U;
|
||||
mnt_cfg3.enable = false;
|
||||
mnt_cfg3.encryption_token = "11";
|
||||
|
||||
auto value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_REMOTE_MOUNT, JSON_API_PORT),
|
||||
std::to_string(mnt_cfg3.api_port));
|
||||
EXPECT_STREQ(std::to_string(mnt_cfg3.api_port).c_str(), value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_REMOTE_MOUNT, JSON_CLIENT_POOL_SIZE),
|
||||
std::to_string(mnt_cfg3.client_pool_size));
|
||||
EXPECT_STREQ(std::to_string(mnt_cfg3.client_pool_size).c_str(),
|
||||
value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_REMOTE_MOUNT, JSON_ENABLE_REMOTE_MOUNT),
|
||||
utils::string::from_bool(mnt_cfg3.enable));
|
||||
EXPECT_STREQ(utils::string::from_bool(mnt_cfg3.enable).c_str(),
|
||||
value.c_str());
|
||||
}},
|
||||
{JSON_RETRY_READ_COUNT,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(cfg, &app_config::get_retry_read_count,
|
||||
&app_config::set_retry_read_count,
|
||||
std::uint16_t{min_retry_read_count + 1U},
|
||||
std::uint16_t{min_retry_read_count + 2U},
|
||||
JSON_RETRY_READ_COUNT,
|
||||
std::to_string(min_retry_read_count + 3U));
|
||||
|
||||
cfg.set_retry_read_count(min_retry_read_count - 1U);
|
||||
EXPECT_EQ(min_retry_read_count, cfg.get_retry_read_count());
|
||||
}},
|
||||
{JSON_RING_BUFFER_FILE_SIZE,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(cfg, &app_config::get_ring_buffer_file_size,
|
||||
&app_config::set_ring_buffer_file_size,
|
||||
std::uint16_t{min_ring_buffer_file_size + 1U},
|
||||
std::uint16_t{min_ring_buffer_file_size + 2U},
|
||||
JSON_RING_BUFFER_FILE_SIZE,
|
||||
std::to_string(min_ring_buffer_file_size + 3U));
|
||||
|
||||
cfg.set_ring_buffer_file_size(min_ring_buffer_file_size - 1U);
|
||||
EXPECT_EQ(min_ring_buffer_file_size, cfg.get_ring_buffer_file_size());
|
||||
|
||||
cfg.set_ring_buffer_file_size(max_ring_buffer_file_size + 1U);
|
||||
EXPECT_EQ(max_ring_buffer_file_size, cfg.get_ring_buffer_file_size());
|
||||
}},
|
||||
{JSON_S3_CONFIG,
|
||||
[](auto &&cfg) {
|
||||
s3_config cfg1{};
|
||||
cfg1.access_key = "1";
|
||||
cfg1.bucket = "2";
|
||||
cfg1.encryption_token = "3";
|
||||
cfg1.region = "4";
|
||||
cfg1.secret_key = "5";
|
||||
cfg1.timeout_ms = 6U;
|
||||
cfg1.url = "7";
|
||||
cfg1.use_path_style = false;
|
||||
cfg1.use_region_in_url = false;
|
||||
|
||||
s3_config cfg2{};
|
||||
cfg2.access_key = "8";
|
||||
cfg2.bucket = "9";
|
||||
cfg2.encryption_token = "10";
|
||||
cfg2.region = "11";
|
||||
cfg2.secret_key = "12";
|
||||
cfg2.timeout_ms = 13U;
|
||||
cfg2.url = "14";
|
||||
cfg2.use_path_style = true;
|
||||
cfg2.use_region_in_url = true;
|
||||
|
||||
ASSERT_NE(cfg1, cfg2);
|
||||
|
||||
test_getter_setter(cfg, &app_config::get_s3_config,
|
||||
&app_config::set_s3_config, cfg1, cfg2, "", "");
|
||||
|
||||
s3_config cfg3{};
|
||||
cfg3.access_key = "8";
|
||||
cfg3.bucket = "9";
|
||||
cfg3.encryption_token = "10";
|
||||
cfg3.region = "11";
|
||||
cfg3.secret_key = "12";
|
||||
cfg3.timeout_ms = 13U;
|
||||
cfg3.url = "14";
|
||||
cfg3.use_path_style = true;
|
||||
cfg3.use_region_in_url = true;
|
||||
|
||||
auto value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_S3_CONFIG, JSON_ACCESS_KEY),
|
||||
cfg3.access_key);
|
||||
EXPECT_STREQ(cfg3.access_key.c_str(), value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_S3_CONFIG, JSON_BUCKET), cfg3.bucket);
|
||||
EXPECT_STREQ(cfg3.bucket.c_str(), value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_S3_CONFIG, JSON_ENCRYPTION_TOKEN),
|
||||
cfg3.encryption_token);
|
||||
EXPECT_STREQ(cfg3.encryption_token.c_str(), value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_S3_CONFIG, JSON_REGION), cfg3.region);
|
||||
EXPECT_STREQ(cfg3.region.c_str(), value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_S3_CONFIG, JSON_SECRET_KEY),
|
||||
cfg3.secret_key);
|
||||
EXPECT_STREQ(cfg3.secret_key.c_str(), value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_S3_CONFIG, JSON_TIMEOUT_MS),
|
||||
std::to_string(cfg3.timeout_ms));
|
||||
EXPECT_STREQ(std::to_string(cfg3.timeout_ms).c_str(), value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_S3_CONFIG, JSON_URL), cfg3.url);
|
||||
EXPECT_STREQ(cfg3.url.c_str(), value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_S3_CONFIG, JSON_USE_PATH_STYLE),
|
||||
utils::string::from_bool(cfg3.use_path_style));
|
||||
EXPECT_STREQ(utils::string::from_bool(cfg3.use_path_style).c_str(),
|
||||
value.c_str());
|
||||
|
||||
value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_S3_CONFIG, JSON_USE_REGION_IN_URL),
|
||||
utils::string::from_bool(cfg3.use_region_in_url));
|
||||
EXPECT_STREQ(utils::string::from_bool(cfg3.use_region_in_url).c_str(),
|
||||
value.c_str());
|
||||
}},
|
||||
{JSON_SIA_CONFIG,
|
||||
[](app_config &cfg) {
|
||||
sia_config cfg1{};
|
||||
cfg1.bucket = "1";
|
||||
|
||||
sia_config cfg2{};
|
||||
cfg2.bucket = "2";
|
||||
|
||||
ASSERT_NE(cfg1, cfg2);
|
||||
|
||||
test_getter_setter(cfg, &app_config::get_sia_config,
|
||||
&app_config::set_sia_config, cfg1, cfg2, "", "");
|
||||
|
||||
sia_config cfg3{};
|
||||
cfg3.bucket = "3";
|
||||
|
||||
auto value = cfg.set_value_by_name(
|
||||
fmt::format("{}.{}", JSON_SIA_CONFIG, JSON_BUCKET), cfg3.bucket);
|
||||
EXPECT_STREQ(cfg3.bucket.c_str(), value.c_str());
|
||||
}},
|
||||
{JSON_TASK_WAIT_MS,
|
||||
[](app_config &cfg) {
|
||||
test_getter_setter(
|
||||
cfg, &app_config::get_task_wait_ms, &app_config::set_task_wait_ms,
|
||||
std::uint16_t{min_task_wait_ms + 1U},
|
||||
std::uint16_t{min_task_wait_ms + 2U}, JSON_TASK_WAIT_MS,
|
||||
std::to_string(min_task_wait_ms + 3U));
|
||||
|
||||
cfg.set_task_wait_ms(min_task_wait_ms - 1U);
|
||||
EXPECT_EQ(min_task_wait_ms, cfg.get_task_wait_ms());
|
||||
}},
|
||||
};
|
||||
|
||||
remove_unused_types(methods, prov);
|
||||
|
||||
for (const auto &[key, test_function] : methods) {
|
||||
fmt::println("testing setting|{}-{}", app_config::get_provider_name(prov),
|
||||
key);
|
||||
test_function(config);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(app_config_test, encrypt_config) {
|
||||
app_config config(provider_type::encrypt, encrypt_directory);
|
||||
defaults_tests(config.get_json(), provider_type::encrypt);
|
||||
common_tests(config, provider_type::encrypt);
|
||||
}
|
||||
|
||||
TEST_F(app_config_test, remote_config) {
|
||||
app_config config(provider_type::remote, remote_directory);
|
||||
defaults_tests(config.get_json(), provider_type::remote);
|
||||
common_tests(config, provider_type::remote);
|
||||
}
|
||||
|
||||
TEST_F(app_config_test, s3_config) {
|
||||
app_config config(provider_type::s3, s3_directory);
|
||||
defaults_tests(config.get_json(), provider_type::s3);
|
||||
common_tests(config, provider_type::s3);
|
||||
}
|
||||
|
||||
TEST_F(app_config_test, sia_config) {
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
defaults_tests(config.get_json(), provider_type::sia);
|
||||
common_tests(config, provider_type::sia);
|
||||
}
|
||||
} // namespace repertory
|
@@ -24,7 +24,7 @@
|
||||
#include "types/repertory.hpp"
|
||||
|
||||
namespace repertory {
|
||||
TEST(atomic, atomic_primitive) {
|
||||
TEST(atomic_test, atomic_primitive) {
|
||||
atomic<std::uint16_t> value;
|
||||
value = 5U;
|
||||
EXPECT_EQ(5U, static_cast<std::uint16_t>(value));
|
||||
@@ -35,7 +35,7 @@ TEST(atomic, atomic_primitive) {
|
||||
EXPECT_EQ(6U, value.load());
|
||||
}
|
||||
|
||||
TEST(atomic, atomic_primitive_equality) {
|
||||
TEST(atomic_test, atomic_primitive_equality) {
|
||||
atomic<std::uint16_t> value1{5U};
|
||||
atomic<std::uint16_t> value2{5U};
|
||||
EXPECT_EQ(value1, value1);
|
||||
@@ -45,7 +45,7 @@ TEST(atomic, atomic_primitive_equality) {
|
||||
EXPECT_EQ(static_cast<std::uint16_t>(value2), 5U);
|
||||
}
|
||||
|
||||
TEST(atomic, atomic_primitive_inequality) {
|
||||
TEST(atomic_test, atomic_primitive_inequality) {
|
||||
atomic<std::uint16_t> value1{5U};
|
||||
atomic<std::uint16_t> value2{6U};
|
||||
EXPECT_NE(value1, value2);
|
||||
@@ -53,7 +53,7 @@ TEST(atomic, atomic_primitive_inequality) {
|
||||
EXPECT_NE(static_cast<std::uint16_t>(value2), 5U);
|
||||
}
|
||||
|
||||
TEST(atomic, atomic_struct) {
|
||||
TEST(atomic_test, atomic_struct) {
|
||||
atomic<encrypt_config> value{
|
||||
encrypt_config{
|
||||
.encryption_token = "token",
|
||||
|
@@ -1,696 +0,0 @@
|
||||
/*
|
||||
Copyright <2018-2025> <scott.e.graves@protonmail.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
*/
|
||||
#include "test_common.hpp"
|
||||
|
||||
#include "app_config.hpp"
|
||||
#include "events/event_system.hpp"
|
||||
#include "utils/common.hpp"
|
||||
#include "utils/file_utils.hpp"
|
||||
#include "utils/path.hpp"
|
||||
|
||||
namespace repertory {
|
||||
class config_test : public ::testing::Test {
|
||||
public:
|
||||
console_consumer cs;
|
||||
|
||||
static std::atomic<std::uint64_t> idx;
|
||||
|
||||
std::string s3_directory;
|
||||
std::string sia_directory;
|
||||
|
||||
void SetUp() override {
|
||||
s3_directory = utils::path::combine(test::get_test_output_dir(),
|
||||
{
|
||||
"config_test",
|
||||
"s3",
|
||||
std::to_string(++idx),
|
||||
});
|
||||
|
||||
sia_directory = utils::path::combine(test::get_test_output_dir(),
|
||||
{
|
||||
"config_test",
|
||||
"sia",
|
||||
std::to_string(++idx),
|
||||
});
|
||||
event_system::instance().start();
|
||||
}
|
||||
|
||||
void TearDown() override {
|
||||
event_system::instance().stop();
|
||||
}
|
||||
};
|
||||
|
||||
std::atomic<std::uint64_t> config_test::idx{0U};
|
||||
|
||||
TEST_F(config_test, api_path) {
|
||||
std::string original_value;
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
original_value = config.get_api_auth();
|
||||
EXPECT_EQ(48U, original_value.size());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, api_auth) {
|
||||
std::string original_value;
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
original_value = config.get_api_auth();
|
||||
config.set_api_auth(original_value.substr(0, 20));
|
||||
EXPECT_EQ(original_value.substr(0, 20), config.get_api_auth());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(original_value.substr(0, 20), config.get_api_auth());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, api_port) {
|
||||
std::uint16_t original_value{};
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
original_value = config.get_api_port();
|
||||
config.set_api_port(original_value + 5);
|
||||
EXPECT_EQ(original_value + 5, config.get_api_port());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(original_value + 5, config.get_api_port());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, api_user) {
|
||||
std::string original_value;
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
original_value = config.get_api_user();
|
||||
config.set_api_user(original_value.substr(0, 2));
|
||||
EXPECT_EQ(original_value.substr(0, 2), config.get_api_user());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(original_value.substr(0, 2), config.get_api_user());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, download_timeout_secs) {
|
||||
std::uint8_t original_value{};
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
original_value = config.get_download_timeout_secs();
|
||||
config.set_download_timeout_secs(original_value + 5);
|
||||
EXPECT_EQ(original_value + 5, config.get_download_timeout_secs());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(original_value + 5, config.get_download_timeout_secs());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, enable_download_timeout) {
|
||||
bool original_value{};
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
original_value = config.get_enable_download_timeout();
|
||||
config.set_enable_download_timeout(not original_value);
|
||||
EXPECT_EQ(not original_value, config.get_enable_download_timeout());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(not original_value, config.get_enable_download_timeout());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, enable_drive_events) {
|
||||
bool original_value{};
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
original_value = config.get_enable_drive_events();
|
||||
config.set_enable_drive_events(not original_value);
|
||||
EXPECT_EQ(not original_value, config.get_enable_drive_events());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(not original_value, config.get_enable_drive_events());
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(_WIN32)
|
||||
TEST_F(config_test, enable_mount_manager) {
|
||||
bool original_value;
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
original_value = config.get_enable_mount_manager();
|
||||
config.set_enable_mount_manager(not original_value);
|
||||
EXPECT_EQ(not original_value, config.get_enable_mount_manager());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(not original_value, config.get_enable_mount_manager());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
TEST_F(config_test, event_level) {
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
config.set_event_level(event_level::debug);
|
||||
EXPECT_EQ(event_level::debug, config.get_event_level());
|
||||
config.set_event_level(event_level::warn);
|
||||
EXPECT_EQ(event_level::warn, config.get_event_level());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(event_level::warn, config.get_event_level());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, eviction_delay_mins) {
|
||||
std::uint32_t original_value{};
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
original_value = config.get_eviction_delay_mins();
|
||||
config.set_eviction_delay_mins(original_value + 5);
|
||||
EXPECT_EQ(original_value + 5, config.get_eviction_delay_mins());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(original_value + 5, config.get_eviction_delay_mins());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, eviction_uses_accessed_time) {
|
||||
bool original_value{};
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
original_value = config.get_eviction_uses_accessed_time();
|
||||
config.set_eviction_uses_accessed_time(not original_value);
|
||||
EXPECT_EQ(not original_value, config.get_eviction_uses_accessed_time());
|
||||
}
|
||||
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(not original_value, config.get_eviction_uses_accessed_time());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, high_frequency_interval_secs) {
|
||||
std::uint16_t original_value{};
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
original_value = config.get_high_frequency_interval_secs();
|
||||
config.set_high_frequency_interval_secs(original_value + 5U);
|
||||
EXPECT_EQ(original_value + 5U, config.get_high_frequency_interval_secs());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(original_value + 5U, config.get_high_frequency_interval_secs());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, low_frequency_interval_secs) {
|
||||
std::uint16_t original_value{};
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
original_value = config.get_low_frequency_interval_secs();
|
||||
config.set_low_frequency_interval_secs(original_value + 5U);
|
||||
EXPECT_EQ(original_value + 5U, config.get_low_frequency_interval_secs());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(original_value + 5U, config.get_low_frequency_interval_secs());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, med_frequency_interval_secs) {
|
||||
std::uint16_t original_value{};
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
original_value = config.get_med_frequency_interval_secs();
|
||||
config.set_med_frequency_interval_secs(original_value + 5U);
|
||||
EXPECT_EQ(original_value + 5U, config.get_med_frequency_interval_secs());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(original_value + 5U, config.get_med_frequency_interval_secs());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, max_cache_size_bytes) {
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
config.set_max_cache_size_bytes(100 * 1024 * 1024);
|
||||
EXPECT_EQ(100U * 1024 * 1024, config.get_max_cache_size_bytes());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(100U * 1024 * 1024, config.get_max_cache_size_bytes());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, max_upload_count) {
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
config.set_max_upload_count(8U);
|
||||
EXPECT_EQ(std::uint8_t(8U), config.get_max_upload_count());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(std::uint8_t(8U), config.get_max_upload_count());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
config.set_max_upload_count(0U);
|
||||
EXPECT_EQ(std::uint8_t(1U), config.get_max_upload_count());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, online_check_retry_secs) {
|
||||
std::uint16_t original_value{};
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
original_value = config.get_online_check_retry_secs();
|
||||
config.set_online_check_retry_secs(original_value + 1);
|
||||
EXPECT_EQ(original_value + 1, config.get_online_check_retry_secs());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(original_value + 1, config.get_online_check_retry_secs());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, online_check_retry_secs_minimum_value) {
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
config.set_online_check_retry_secs(14);
|
||||
EXPECT_EQ(15, config.get_online_check_retry_secs());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, orphaned_file_retention_days) {
|
||||
std::uint16_t original_value{};
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
original_value = config.get_orphaned_file_retention_days();
|
||||
config.set_orphaned_file_retention_days(original_value + 1);
|
||||
EXPECT_EQ(original_value + 1, config.get_orphaned_file_retention_days());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(original_value + 1, config.get_orphaned_file_retention_days());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, orphaned_file_retention_days_minimum_value) {
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
config.set_orphaned_file_retention_days(0);
|
||||
EXPECT_EQ(1, config.get_orphaned_file_retention_days());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, orphaned_file_retention_days_maximum_value) {
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
config.set_orphaned_file_retention_days(32);
|
||||
EXPECT_EQ(31, config.get_orphaned_file_retention_days());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, get_cache_directory) {
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_STREQ(utils::path::combine(sia_directory, {"cache"}).c_str(),
|
||||
config.get_cache_directory().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, get_config_file_path) {
|
||||
{
|
||||
const auto config_file = utils::path::absolute(
|
||||
utils::path::combine(sia_directory, {"config.json"}));
|
||||
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_STREQ(config_file.c_str(), config.get_config_file_path().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, get_data_directory) {
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_STREQ(sia_directory.c_str(), config.get_data_directory().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, get_log_directory) {
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_STREQ(utils::path::combine(sia_directory, {"logs"}).c_str(),
|
||||
config.get_log_directory().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, ring_buffer_file_size) {
|
||||
std::uint16_t original_value;
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
original_value = config.get_ring_buffer_file_size();
|
||||
config.set_ring_buffer_file_size(original_value + 5u);
|
||||
EXPECT_EQ(original_value + 5u, config.get_ring_buffer_file_size());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(original_value + 5u, config.get_ring_buffer_file_size());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, ring_buffer_file_size_minimum_size) {
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
config.set_ring_buffer_file_size(63u);
|
||||
EXPECT_EQ(64u, config.get_ring_buffer_file_size());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(64u, config.get_ring_buffer_file_size());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, ring_buffer_file_size_maximum_size) {
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
config.set_ring_buffer_file_size(1025u);
|
||||
EXPECT_EQ(1024u, config.get_ring_buffer_file_size());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(1024u, config.get_ring_buffer_file_size());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, preferred_download_type) {
|
||||
download_type original_value;
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
original_value = config.get_preferred_download_type();
|
||||
config.set_preferred_download_type(download_type::ring_buffer);
|
||||
EXPECT_NE(original_value, config.get_preferred_download_type());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_NE(original_value, config.get_preferred_download_type());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, default_agent_name) {
|
||||
EXPECT_STREQ("Sia-Agent",
|
||||
app_config::default_agent_name(provider_type::sia).c_str());
|
||||
}
|
||||
|
||||
TEST_F(config_test, default_api_port) {
|
||||
EXPECT_EQ(9980U, app_config::default_api_port(provider_type::sia));
|
||||
}
|
||||
|
||||
TEST_F(config_test, default_data_directory) {
|
||||
const std::array<std::string, 1U> data_directory = {
|
||||
app_config::default_data_directory(provider_type::sia),
|
||||
};
|
||||
|
||||
#if defined(_WIN32)
|
||||
const auto local_app_data = utils::get_environment_variable("localappdata");
|
||||
#endif
|
||||
#if defined(__linux__)
|
||||
const auto local_app_data =
|
||||
utils::path::combine(utils::get_environment_variable("HOME"), {".local"});
|
||||
#endif
|
||||
#if defined(__APPLE__)
|
||||
const auto local_app_data = utils::path::combine(
|
||||
utils::get_environment_variable("HOME"), {"Library/Application Support"});
|
||||
#endif
|
||||
auto expected_directory =
|
||||
utils::path::combine(local_app_data, {"/repertory2/sia"});
|
||||
EXPECT_STREQ(expected_directory.c_str(), data_directory[0].c_str());
|
||||
}
|
||||
|
||||
TEST_F(config_test, default_rpc_port) {
|
||||
EXPECT_EQ(10000U, app_config::default_rpc_port(provider_type::sia));
|
||||
}
|
||||
|
||||
TEST_F(config_test, get_provider_display_name) {
|
||||
EXPECT_STREQ(
|
||||
"Sia", app_config::get_provider_display_name(provider_type::sia).c_str());
|
||||
}
|
||||
|
||||
TEST_F(config_test, get_provider_name) {
|
||||
EXPECT_STREQ("sia",
|
||||
app_config::get_provider_name(provider_type::sia).c_str());
|
||||
}
|
||||
|
||||
TEST_F(config_test, get_version) {
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(REPERTORY_CONFIG_VERSION, config.get_version());
|
||||
}
|
||||
}
|
||||
|
||||
// TEST_F(config_test, enable_remote_mount) {
|
||||
// bool original_value{};
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// original_value = config.get_enable_remote_mount();
|
||||
// config.set_enable_remote_mount(not original_value);
|
||||
// EXPECT_EQ(not original_value, config.get_enable_remote_mount());
|
||||
// }
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// EXPECT_EQ(not original_value, config.get_enable_remote_mount());
|
||||
// }
|
||||
// }
|
||||
|
||||
// TEST_F(config_test, is_remote_mount) {
|
||||
// bool original_value{};
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// original_value = config.get_is_remote_mount();
|
||||
// config.set_is_remote_mount(not original_value);
|
||||
// EXPECT_EQ(not original_value, config.get_is_remote_mount());
|
||||
// }
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// EXPECT_EQ(not original_value, config.get_is_remote_mount());
|
||||
// }
|
||||
// }
|
||||
|
||||
// TEST_F(config_test, enable_remote_mount_fails_if_remote_mount_is_true) {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// config.set_is_remote_mount(true);
|
||||
// config.set_enable_remote_mount(true);
|
||||
// EXPECT_FALSE(config.get_enable_remote_mount());
|
||||
// EXPECT_TRUE(config.get_is_remote_mount());
|
||||
// }
|
||||
|
||||
// TEST_F(config_test, set_is_remote_mount_fails_if_enable_remote_mount_is_true)
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// config.set_enable_remote_mount(true);
|
||||
// config.set_is_remote_mount(true);
|
||||
// EXPECT_FALSE(config.get_is_remote_mount());
|
||||
// EXPECT_TRUE(config.get_enable_remote_mount());
|
||||
// }
|
||||
|
||||
// TEST_F(config_test, remote_host_name_or_ip) {
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// config.set_remote_host_name_or_ip("my.host.name");
|
||||
// EXPECT_STREQ("my.host.name",
|
||||
// config.get_remote_host_name_or_ip().c_str());
|
||||
// }
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// EXPECT_STREQ("my.host.name",
|
||||
// config.get_remote_host_name_or_ip().c_str());
|
||||
// }
|
||||
// }
|
||||
|
||||
// TEST_F(config_test, remote_api_port) {
|
||||
// std::uint16_t original_value{};
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// original_value = config.get_remote_api_port();
|
||||
// config.set_remote_api_port(original_value + 5);
|
||||
// EXPECT_EQ(original_value + 5, config.get_remote_api_port());
|
||||
// }
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// EXPECT_EQ(original_value + 5, config.get_remote_api_port());
|
||||
// }
|
||||
// }
|
||||
|
||||
// TEST_F(config_test, remote_receive_timeout_secs) {
|
||||
// std::uint16_t original_value{};
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// original_value = config.get_remote_receive_timeout_secs();
|
||||
// config.set_remote_receive_timeout_secs(original_value + 5);
|
||||
// EXPECT_EQ(original_value + 5, config.get_remote_receive_timeout_secs());
|
||||
// }
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// EXPECT_EQ(original_value + 5, config.get_remote_receive_timeout_secs());
|
||||
// }
|
||||
// }
|
||||
|
||||
// TEST_F(config_test, remote_send_timeout_secs) {
|
||||
// std::uint16_t original_value{};
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// original_value = config.get_remote_send_timeout_secs();
|
||||
// config.set_remote_send_timeout_secs(original_value + 5);
|
||||
// EXPECT_EQ(original_value + 5, config.get_remote_send_timeout_secs());
|
||||
// }
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// EXPECT_EQ(original_value + 5, config.get_remote_send_timeout_secs());
|
||||
// }
|
||||
// }
|
||||
|
||||
// TEST_F(config_test, remote_encryption_token) {
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// config.set_remote_encryption_token("myToken");
|
||||
// EXPECT_STREQ("myToken", config.get_remote_encryption_token().c_str());
|
||||
// }
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// EXPECT_STREQ("myToken", config.get_remote_encryption_token().c_str());
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// TEST_F(config_test, remote_client_pool_size) {
|
||||
// std::uint8_t original_value{};
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// original_value = config.get_remote_client_pool_size();
|
||||
// config.set_remote_client_pool_size(original_value + 5);
|
||||
// EXPECT_EQ(original_value + 5, config.get_remote_client_pool_size());
|
||||
// }
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// EXPECT_EQ(original_value + 5, config.get_remote_client_pool_size());
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// TEST_F(config_test, remote_client_pool_size_minimum_value) {
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// config.set_remote_client_pool_size(0);
|
||||
// EXPECT_EQ(5, config.get_remote_client_pool_size());
|
||||
// }
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// EXPECT_EQ(5, config.get_remote_client_pool_size());
|
||||
// }
|
||||
// }
|
||||
|
||||
// TEST_F(config_test, remote_max_connections) {
|
||||
// std::uint8_t original_value{};
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// original_value = config.get_remote_max_connections();
|
||||
// config.set_remote_max_connections(original_value + 5);
|
||||
// EXPECT_EQ(original_value + 5, config.get_remote_max_connections());
|
||||
// }
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// EXPECT_EQ(original_value + 5, config.get_remote_max_connections());
|
||||
// }
|
||||
// }
|
||||
|
||||
// TEST_F(config_test, remote_max_connections_minimum_value) {
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// config.set_remote_max_connections(0);
|
||||
// EXPECT_EQ(1, config.get_remote_max_connections());
|
||||
// }
|
||||
// {
|
||||
// app_config config(provider_type::sia, sia_directory);
|
||||
// EXPECT_EQ(1, config.get_remote_max_connections());
|
||||
// }
|
||||
// }
|
||||
|
||||
TEST_F(config_test, retry_read_count) {
|
||||
std::uint16_t original_value{};
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
original_value = config.get_retry_read_count();
|
||||
config.set_retry_read_count(original_value + 1);
|
||||
EXPECT_EQ(original_value + 1, config.get_retry_read_count());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(original_value + 1, config.get_retry_read_count());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, retry_read_count_minimum_value) {
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
config.set_retry_read_count(1);
|
||||
EXPECT_EQ(2, config.get_retry_read_count());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, task_wait_ms) {
|
||||
std::uint16_t original_value{};
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
original_value = config.get_task_wait_ms();
|
||||
config.set_task_wait_ms(original_value + 1U);
|
||||
EXPECT_EQ(original_value + 1U, config.get_task_wait_ms());
|
||||
}
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
EXPECT_EQ(original_value + 1U, config.get_task_wait_ms());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, task_wait_ms_minimum_value) {
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
config.set_task_wait_ms(1U);
|
||||
EXPECT_EQ(50U, config.get_task_wait_ms());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(config_test, can_set_database_type) {
|
||||
{
|
||||
app_config config(provider_type::sia, sia_directory);
|
||||
config.set_database_type(database_type::rocksdb);
|
||||
EXPECT_EQ(database_type::rocksdb, config.get_database_type());
|
||||
|
||||
config.set_database_type(database_type::sqlite);
|
||||
EXPECT_EQ(database_type::sqlite, config.get_database_type());
|
||||
|
||||
config.set_database_type(database_type::rocksdb);
|
||||
EXPECT_EQ(database_type::rocksdb, config.get_database_type());
|
||||
}
|
||||
}
|
||||
} // namespace repertory
|
@@ -25,7 +25,7 @@
|
||||
#include "types/repertory.hpp"
|
||||
|
||||
namespace repertory {
|
||||
TEST(curl_comm, can_create_s3_host_config) {
|
||||
TEST(curl_comm_test, can_create_s3_host_config) {
|
||||
s3_config config{};
|
||||
config.bucket = "repertory";
|
||||
config.url = "https://s3.test.com";
|
||||
@@ -37,7 +37,7 @@ TEST(curl_comm, can_create_s3_host_config) {
|
||||
EXPECT_TRUE(hc.path.empty());
|
||||
}
|
||||
|
||||
TEST(curl_comm, can_create_s3_host_config_with_path_style) {
|
||||
TEST(curl_comm_test, can_create_s3_host_config_with_path_style) {
|
||||
s3_config config{};
|
||||
config.bucket = "repertory";
|
||||
config.url = "https://s3.test.com";
|
||||
@@ -49,7 +49,7 @@ TEST(curl_comm, can_create_s3_host_config_with_path_style) {
|
||||
EXPECT_STREQ("/repertory", hc.path.c_str());
|
||||
}
|
||||
|
||||
TEST(curl_comm, can_create_s3_host_config_with_region) {
|
||||
TEST(curl_comm_test, can_create_s3_host_config_with_region) {
|
||||
s3_config config{};
|
||||
config.bucket = "repertory";
|
||||
config.url = "https://s3.test.com";
|
||||
@@ -62,7 +62,7 @@ TEST(curl_comm, can_create_s3_host_config_with_region) {
|
||||
EXPECT_TRUE(hc.path.empty());
|
||||
}
|
||||
|
||||
TEST(curl_comm, can_create_s3_host_config_with_region_and_path_style) {
|
||||
TEST(curl_comm_test, can_create_s3_host_config_with_region_and_path_style) {
|
||||
s3_config config{};
|
||||
config.bucket = "repertory";
|
||||
config.url = "https://s3.test.com";
|
||||
|
@@ -25,7 +25,7 @@
|
||||
#include "types/repertory.hpp"
|
||||
|
||||
namespace repertory {
|
||||
TEST(json_serialize, can_handle_directory_item) {
|
||||
TEST(json_serialize_test, can_handle_directory_item) {
|
||||
directory_item cfg{
|
||||
"api", "parent", true, 2U, {{META_DIRECTORY, "true"}},
|
||||
};
|
||||
@@ -47,7 +47,7 @@ TEST(json_serialize, can_handle_directory_item) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST(json_serialize, can_handle_encrypt_config) {
|
||||
TEST(json_serialize_test, can_handle_encrypt_config) {
|
||||
encrypt_config cfg{
|
||||
"token",
|
||||
"path",
|
||||
@@ -65,7 +65,7 @@ TEST(json_serialize, can_handle_encrypt_config) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST(json_serialize, can_handle_host_config) {
|
||||
TEST(json_serialize_test, can_handle_host_config) {
|
||||
host_config cfg{
|
||||
"agent", "pwd", "user", 1024U, "host", "path", "http", 11U,
|
||||
};
|
||||
@@ -94,7 +94,7 @@ TEST(json_serialize, can_handle_host_config) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST(json_serialize, can_handle_remote_config) {
|
||||
TEST(json_serialize_test, can_handle_remote_config) {
|
||||
remote::remote_config cfg{
|
||||
1024U, "token", "host", 11U, 20U, 21U,
|
||||
};
|
||||
@@ -120,7 +120,7 @@ TEST(json_serialize, can_handle_remote_config) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST(json_serialize, can_handle_remote_mount) {
|
||||
TEST(json_serialize_test, can_handle_remote_mount) {
|
||||
remote::remote_mount cfg{1024U, 21U, true, "token"};
|
||||
|
||||
json data(cfg);
|
||||
@@ -139,7 +139,7 @@ TEST(json_serialize, can_handle_remote_mount) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST(json_serialize, can_handle_s3_config) {
|
||||
TEST(json_serialize_test, can_handle_s3_config) {
|
||||
s3_config cfg{
|
||||
"access", "bucket", "token", "region", "secret", 31U, "url", true, false,
|
||||
};
|
||||
@@ -170,7 +170,7 @@ TEST(json_serialize, can_handle_s3_config) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST(json_serialize, can_handle_sia_config) {
|
||||
TEST(json_serialize_test, can_handle_sia_config) {
|
||||
sia_config cfg{
|
||||
"bucket",
|
||||
};
|
||||
@@ -184,7 +184,7 @@ TEST(json_serialize, can_handle_sia_config) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST(json_serialize, can_handle_atomic) {
|
||||
TEST(json_serialize_test, can_handle_atomic) {
|
||||
atomic<sia_config> cfg({
|
||||
"bucket",
|
||||
});
|
||||
@@ -198,7 +198,7 @@ TEST(json_serialize, can_handle_atomic) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST(json_serialize, can_handle_database_type) {
|
||||
TEST(json_serialize_test, can_handle_database_type) {
|
||||
json data(database_type::rocksdb);
|
||||
EXPECT_EQ(database_type::rocksdb, data.get<database_type>());
|
||||
EXPECT_STREQ("rocksdb", data.get<std::string>().c_str());
|
||||
@@ -208,7 +208,7 @@ TEST(json_serialize, can_handle_database_type) {
|
||||
EXPECT_STREQ("sqlite", data.get<std::string>().c_str());
|
||||
}
|
||||
|
||||
TEST(json_serialize, can_handle_download_type) {
|
||||
TEST(json_serialize_test, can_handle_download_type) {
|
||||
json data(download_type::direct);
|
||||
EXPECT_EQ(download_type::direct, data.get<download_type>());
|
||||
EXPECT_STREQ("direct", data.get<std::string>().c_str());
|
||||
@@ -222,7 +222,33 @@ TEST(json_serialize, can_handle_download_type) {
|
||||
EXPECT_STREQ("ring_buffer", data.get<std::string>().c_str());
|
||||
}
|
||||
|
||||
TEST(json_serialize, can_handle_atomic_database_type) {
|
||||
TEST(json_serialize_test, can_handle_event_level) {
|
||||
json data(event_level{event_level::critical});
|
||||
EXPECT_EQ(event_level::critical, data.get<event_level>());
|
||||
EXPECT_STREQ("critical", data.get<std::string>().c_str());
|
||||
|
||||
data = event_level(event_level::error);
|
||||
EXPECT_EQ(event_level::error, data.get<event_level>());
|
||||
EXPECT_STREQ("error", data.get<std::string>().c_str());
|
||||
|
||||
data = event_level(event_level::warn);
|
||||
EXPECT_EQ(event_level::warn, data.get<event_level>());
|
||||
EXPECT_STREQ("warn", data.get<std::string>().c_str());
|
||||
|
||||
data = event_level(event_level::info);
|
||||
EXPECT_EQ(event_level::info, data.get<event_level>());
|
||||
EXPECT_STREQ("info", data.get<std::string>().c_str());
|
||||
|
||||
data = event_level(event_level::debug);
|
||||
EXPECT_EQ(event_level::debug, data.get<event_level>());
|
||||
EXPECT_STREQ("debug", data.get<std::string>().c_str());
|
||||
|
||||
data = event_level(event_level::trace);
|
||||
EXPECT_EQ(event_level::trace, data.get<event_level>());
|
||||
EXPECT_STREQ("trace", data.get<std::string>().c_str());
|
||||
}
|
||||
|
||||
TEST(json_serialize_test, can_handle_atomic_database_type) {
|
||||
json data(atomic<database_type>{database_type::rocksdb});
|
||||
EXPECT_EQ(database_type::rocksdb, data.get<atomic<database_type>>());
|
||||
EXPECT_STREQ("rocksdb", data.get<std::string>().c_str());
|
||||
@@ -232,7 +258,7 @@ TEST(json_serialize, can_handle_atomic_database_type) {
|
||||
EXPECT_STREQ("sqlite", data.get<std::string>().c_str());
|
||||
}
|
||||
|
||||
TEST(json_serialize, can_handle_atomic_download_type) {
|
||||
TEST(json_serialize_test, can_handle_atomic_download_type) {
|
||||
json data(atomic<download_type>{download_type::direct});
|
||||
EXPECT_EQ(download_type::direct, data.get<atomic<download_type>>());
|
||||
EXPECT_STREQ("direct", data.get<std::string>().c_str());
|
||||
@@ -245,4 +271,30 @@ TEST(json_serialize, can_handle_atomic_download_type) {
|
||||
EXPECT_EQ(download_type::ring_buffer, data.get<atomic<download_type>>());
|
||||
EXPECT_STREQ("ring_buffer", data.get<std::string>().c_str());
|
||||
}
|
||||
|
||||
TEST(json_serialize_test, can_handle_atomic_event_level) {
|
||||
json data(atomic<event_level>{event_level::critical});
|
||||
EXPECT_EQ(event_level::critical, data.get<atomic<event_level>>());
|
||||
EXPECT_STREQ("critical", data.get<std::string>().c_str());
|
||||
|
||||
data = atomic<event_level>(event_level::error);
|
||||
EXPECT_EQ(event_level::error, data.get<atomic<event_level>>());
|
||||
EXPECT_STREQ("error", data.get<std::string>().c_str());
|
||||
|
||||
data = atomic<event_level>(event_level::warn);
|
||||
EXPECT_EQ(event_level::warn, data.get<atomic<event_level>>());
|
||||
EXPECT_STREQ("warn", data.get<std::string>().c_str());
|
||||
|
||||
data = atomic<event_level>(event_level::info);
|
||||
EXPECT_EQ(event_level::info, data.get<atomic<event_level>>());
|
||||
EXPECT_STREQ("info", data.get<std::string>().c_str());
|
||||
|
||||
data = atomic<event_level>(event_level::debug);
|
||||
EXPECT_EQ(event_level::debug, data.get<atomic<event_level>>());
|
||||
EXPECT_STREQ("debug", data.get<std::string>().c_str());
|
||||
|
||||
data = atomic<event_level>(event_level::trace);
|
||||
EXPECT_EQ(event_level::trace, data.get<atomic<event_level>>());
|
||||
EXPECT_STREQ("trace", data.get<std::string>().c_str());
|
||||
}
|
||||
} // namespace repertory
|
||||
|
@@ -24,7 +24,7 @@
|
||||
#include "platform/platform.hpp"
|
||||
|
||||
namespace repertory {
|
||||
TEST(lock_data, lock_and_unlock) {
|
||||
TEST(lock_data_test, lock_and_unlock) {
|
||||
{
|
||||
lock_data l(provider_type::sia, "1");
|
||||
EXPECT_EQ(lock_result::success, l.grab_lock());
|
||||
@@ -50,7 +50,7 @@ TEST(lock_data, lock_and_unlock) {
|
||||
}
|
||||
|
||||
#if defined(_WIN32)
|
||||
TEST(lock_data, set_and_unset_mount_state) {
|
||||
TEST(lock_data_test, set_and_unset_mount_state) {
|
||||
lock_data l(provider_type::sia, "1");
|
||||
EXPECT_TRUE(l.set_mount_state(true, "C:", 99));
|
||||
|
||||
@@ -83,7 +83,7 @@ TEST(lock_data, set_and_unset_mount_state) {
|
||||
mount_state["Remote2"].dump().c_str());
|
||||
}
|
||||
#else
|
||||
TEST(lock_data, set_and_unset_mount_state) {
|
||||
TEST(lock_data_test, set_and_unset_mount_state) {
|
||||
lock_data l(provider_type::sia, "1");
|
||||
EXPECT_TRUE(l.set_mount_state(true, "/mnt/1", 99));
|
||||
|
||||
|
@@ -24,7 +24,7 @@
|
||||
#include "comm/packet/packet.hpp"
|
||||
|
||||
namespace repertory {
|
||||
TEST(packet, encrypt_and_decrypt) {
|
||||
TEST(packet_test, encrypt_and_decrypt) {
|
||||
packet test_packet;
|
||||
test_packet.encode("test");
|
||||
test_packet.encrypt("moose");
|
||||
|
@@ -19,8 +19,6 @@
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
*/
|
||||
#if 0
|
||||
|
||||
#include "test_common.hpp"
|
||||
|
||||
#include "comm/curl/curl_comm.hpp"
|
||||
@@ -99,8 +97,6 @@ const auto create_directory = [](repertory::i_provider &provider,
|
||||
repertory::utils::string::to_bool(meta2[repertory::META_PINNED]));
|
||||
EXPECT_EQ(std::uint64_t(0U),
|
||||
repertory::utils::string::to_uint64(meta2[repertory::META_SIZE]));
|
||||
EXPECT_STREQ((api_path + "_src").c_str(),
|
||||
meta2[repertory::META_SOURCE].c_str());
|
||||
EXPECT_EQ(getuid(), static_cast<uid_t>(repertory::utils::string::to_uint32(
|
||||
meta2[repertory::META_UID])));
|
||||
EXPECT_EQ(date + 4U, repertory::utils::string::to_uint64(
|
||||
@@ -178,6 +174,9 @@ const auto decrypt_parts = [](const repertory::app_config &cfg,
|
||||
|
||||
namespace repertory {
|
||||
static void can_create_and_remove_directory(i_provider &provider) {
|
||||
fmt::println("testing|{}|{}",
|
||||
app_config::get_provider_name(provider.get_provider_type()),
|
||||
__FUNCTION__);
|
||||
if (provider.is_read_only()) {
|
||||
api_meta_map meta{};
|
||||
EXPECT_EQ(api_error::not_implemented,
|
||||
@@ -196,6 +195,9 @@ static void can_create_and_remove_directory(i_provider &provider) {
|
||||
}
|
||||
|
||||
static void create_directory_fails_if_already_exists(i_provider &provider) {
|
||||
fmt::println("testing|{}|{}",
|
||||
app_config::get_provider_name(provider.get_provider_type()),
|
||||
__FUNCTION__);
|
||||
if (provider.is_read_only()) {
|
||||
return;
|
||||
}
|
||||
@@ -210,6 +212,9 @@ static void create_directory_fails_if_already_exists(i_provider &provider) {
|
||||
|
||||
static void
|
||||
create_directory_fails_if_file_already_exists(i_provider &provider) {
|
||||
fmt::println("testing|{}|{}",
|
||||
app_config::get_provider_name(provider.get_provider_type()),
|
||||
__FUNCTION__);
|
||||
if (provider.is_read_only()) {
|
||||
return;
|
||||
}
|
||||
@@ -223,6 +228,9 @@ create_directory_fails_if_file_already_exists(i_provider &provider) {
|
||||
}
|
||||
|
||||
static void create_directory_clone_source_meta(i_provider &provider) {
|
||||
fmt::println("testing|{}|{}",
|
||||
app_config::get_provider_name(provider.get_provider_type()),
|
||||
__FUNCTION__);
|
||||
if (provider.is_read_only()) {
|
||||
EXPECT_EQ(api_error::not_implemented,
|
||||
provider.create_directory_clone_source_meta("/moose", "/moose"));
|
||||
@@ -257,6 +265,9 @@ static void create_directory_clone_source_meta(i_provider &provider) {
|
||||
|
||||
static void create_directory_clone_source_meta_fails_if_already_exists(
|
||||
i_provider &provider) {
|
||||
fmt::println("testing|{}|{}",
|
||||
app_config::get_provider_name(provider.get_provider_type()),
|
||||
__FUNCTION__);
|
||||
if (provider.is_read_only()) {
|
||||
return;
|
||||
}
|
||||
@@ -272,6 +283,9 @@ 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) {
|
||||
fmt::println("testing|{}|{}",
|
||||
app_config::get_provider_name(provider.get_provider_type()),
|
||||
__FUNCTION__);
|
||||
if (provider.is_read_only()) {
|
||||
return;
|
||||
}
|
||||
@@ -282,6 +296,9 @@ 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) {
|
||||
fmt::println("testing|{}|{}",
|
||||
app_config::get_provider_name(provider.get_provider_type()),
|
||||
__FUNCTION__);
|
||||
if (provider.is_read_only()) {
|
||||
return;
|
||||
}
|
||||
@@ -297,6 +314,9 @@ static void create_directory_clone_source_meta_fails_if_file_already_exists(
|
||||
}
|
||||
|
||||
static void can_create_and_remove_file(i_provider &provider) {
|
||||
fmt::println("testing|{}|{}",
|
||||
app_config::get_provider_name(provider.get_provider_type()),
|
||||
__FUNCTION__);
|
||||
if (provider.is_read_only()) {
|
||||
api_meta_map meta{};
|
||||
EXPECT_EQ(api_error::not_implemented,
|
||||
@@ -317,6 +337,9 @@ static void can_create_and_remove_file(i_provider &provider) {
|
||||
}
|
||||
|
||||
static void create_file_fails_if_already_exists(i_provider &provider) {
|
||||
fmt::println("testing|{}|{}",
|
||||
app_config::get_provider_name(provider.get_provider_type()),
|
||||
__FUNCTION__);
|
||||
if (provider.is_read_only()) {
|
||||
return;
|
||||
}
|
||||
@@ -331,6 +354,9 @@ static void create_file_fails_if_already_exists(i_provider &provider) {
|
||||
|
||||
static void
|
||||
create_file_fails_if_directory_already_exists(i_provider &provider) {
|
||||
fmt::println("testing|{}|{}",
|
||||
app_config::get_provider_name(provider.get_provider_type()),
|
||||
__FUNCTION__);
|
||||
if (provider.is_read_only()) {
|
||||
return;
|
||||
}
|
||||
@@ -345,9 +371,12 @@ create_file_fails_if_directory_already_exists(i_provider &provider) {
|
||||
|
||||
static void get_api_path_from_source(const app_config &cfg,
|
||||
i_provider &provider) {
|
||||
fmt::println("testing|{}|{}",
|
||||
app_config::get_provider_name(provider.get_provider_type()),
|
||||
__FUNCTION__);
|
||||
if (provider.get_provider_type() == provider_type::encrypt) {
|
||||
const auto source_path =
|
||||
utils::path::combine("./test_date/encrypt", {"test.txt"});
|
||||
auto source_path =
|
||||
utils::path::combine("./test_input/encrypt", {"test.txt"});
|
||||
|
||||
std::string api_path{};
|
||||
EXPECT_EQ(api_error::success,
|
||||
@@ -376,6 +405,9 @@ static void get_api_path_from_source(const app_config &cfg,
|
||||
static void
|
||||
get_api_path_from_source_fails_if_file_not_found(const app_config &cfg,
|
||||
i_provider &provider) {
|
||||
fmt::println("testing|{}|{}",
|
||||
app_config::get_provider_name(provider.get_provider_type()),
|
||||
__FUNCTION__);
|
||||
std::string source_path{};
|
||||
if (provider.get_provider_type() == provider_type::encrypt) {
|
||||
source_path = utils::path::combine(cfg.get_encrypt_config().path,
|
||||
@@ -391,28 +423,50 @@ get_api_path_from_source_fails_if_file_not_found(const app_config &cfg,
|
||||
EXPECT_TRUE(api_path.empty());
|
||||
}
|
||||
|
||||
static void get_directory_item_count(const app_config &cfg,
|
||||
static void get_directory_item_count(const app_config & /* cfg */,
|
||||
i_provider &provider) {
|
||||
fmt::println("testing|{}|{}",
|
||||
app_config::get_provider_name(provider.get_provider_type()),
|
||||
__FUNCTION__);
|
||||
if (provider.get_provider_type() == provider_type::encrypt) {
|
||||
EXPECT_EQ(std::size_t(2U), provider.get_directory_item_count("/"));
|
||||
EXPECT_EQ(std::size_t(0U), provider.get_directory_item_count("/not_found"));
|
||||
|
||||
const auto source_path =
|
||||
auto source_path =
|
||||
utils::path::combine(test::get_test_input_dir(), {"encrypt", "sub10"});
|
||||
|
||||
std::string api_path{};
|
||||
EXPECT_EQ(api_error::success,
|
||||
provider.get_api_path_from_source(source_path, api_path));
|
||||
EXPECT_EQ(std::size_t(1U), provider.get_directory_item_count(api_path));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static void get_directory_items(const app_config &cfg, i_provider &provider) {
|
||||
create_file(provider, "/pt01.txt");
|
||||
create_file(provider, "/pt02.txt");
|
||||
create_directory(provider, "/dir01");
|
||||
create_directory(provider, "/dir02");
|
||||
|
||||
directory_item_list list{};
|
||||
EXPECT_EQ(api_error::success, provider.get_directory_items("/", list));
|
||||
check_forced_dirs(list);
|
||||
EXPECT_GE(list.size(), std::size_t(6U));
|
||||
|
||||
EXPECT_EQ(api_error::success, provider.remove_file("/pt01.txt"));
|
||||
EXPECT_EQ(api_error::success, provider.remove_file("/pt02.txt"));
|
||||
EXPECT_EQ(api_error::success, provider.remove_directory("/dir01"));
|
||||
EXPECT_EQ(api_error::success, provider.remove_directory("/dir02"));
|
||||
}
|
||||
|
||||
static void get_directory_items(const app_config &cfg, i_provider &provider) {
|
||||
fmt::println("testing|{}|{}",
|
||||
app_config::get_provider_name(provider.get_provider_type()),
|
||||
__FUNCTION__);
|
||||
if (provider.get_provider_type() == provider_type::encrypt) {
|
||||
directory_item_list list{};
|
||||
EXPECT_EQ(api_error::success, provider.get_directory_items("/", list));
|
||||
check_forced_dirs(list);
|
||||
|
||||
EXPECT_EQ(std::size_t(4U), list.size());
|
||||
|
||||
directory_item_list list_decrypted{list.begin() + 2U, list.end()};
|
||||
@@ -443,7 +497,7 @@ static void get_directory_items(const app_config &cfg, i_provider &provider) {
|
||||
EXPECT_EQ(std::size_t(46U), file->size);
|
||||
#endif
|
||||
|
||||
const auto source_path =
|
||||
auto source_path =
|
||||
utils::path::combine(cfg.get_encrypt_config().path, {"sub10"});
|
||||
std::string api_path{};
|
||||
EXPECT_EQ(api_error::success,
|
||||
@@ -472,11 +526,58 @@ static void get_directory_items(const app_config &cfg, i_provider &provider) {
|
||||
#else
|
||||
EXPECT_EQ(std::size_t(45U), file2->size);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
create_file(provider, "/pt01.txt");
|
||||
create_file(provider, "/pt02.txt");
|
||||
create_directory(provider, "/dir01");
|
||||
create_directory(provider, "/dir02");
|
||||
|
||||
directory_item_list list{};
|
||||
EXPECT_EQ(api_error::success, provider.get_directory_items("/", list));
|
||||
check_forced_dirs(list);
|
||||
EXPECT_GE(list.size(), std::size_t(6U));
|
||||
|
||||
auto iter = std::ranges::find_if(
|
||||
list, [](auto &&item) -> bool { return item.api_path == "/pt01.txt"; });
|
||||
EXPECT_NE(iter, list.end());
|
||||
EXPECT_STREQ("/", (*iter).api_parent.c_str());
|
||||
EXPECT_FALSE((*iter).directory);
|
||||
EXPECT_EQ(std::uint64_t{0U}, (*iter).size);
|
||||
|
||||
iter = std::ranges::find_if(
|
||||
list, [](auto &&item) -> bool { return item.api_path == "/pt02.txt"; });
|
||||
EXPECT_NE(iter, list.end());
|
||||
EXPECT_STREQ("/", (*iter).api_parent.c_str());
|
||||
EXPECT_FALSE((*iter).directory);
|
||||
EXPECT_EQ(std::uint64_t{0U}, (*iter).size);
|
||||
|
||||
iter = std::ranges::find_if(
|
||||
list, [](auto &&item) -> bool { return item.api_path == "/dir01"; });
|
||||
EXPECT_NE(iter, list.end());
|
||||
EXPECT_STREQ("/", (*iter).api_parent.c_str());
|
||||
EXPECT_TRUE((*iter).directory);
|
||||
EXPECT_EQ(std::uint64_t{0U}, (*iter).size);
|
||||
|
||||
iter = std::ranges::find_if(
|
||||
list, [](auto &&item) -> bool { return item.api_path == "/dir02"; });
|
||||
EXPECT_NE(iter, list.end());
|
||||
EXPECT_STREQ("/", (*iter).api_parent.c_str());
|
||||
EXPECT_TRUE((*iter).directory);
|
||||
EXPECT_EQ(std::uint64_t{0U}, (*iter).size);
|
||||
|
||||
EXPECT_EQ(api_error::success, provider.remove_file("/pt01.txt"));
|
||||
EXPECT_EQ(api_error::success, provider.remove_file("/pt02.txt"));
|
||||
EXPECT_EQ(api_error::success, provider.remove_directory("/dir01"));
|
||||
EXPECT_EQ(api_error::success, provider.remove_directory("/dir02"));
|
||||
}
|
||||
|
||||
static void
|
||||
get_directory_items_fails_if_directory_not_found(i_provider &provider) {
|
||||
fmt::println("testing|{}|{}",
|
||||
app_config::get_provider_name(provider.get_provider_type()),
|
||||
__FUNCTION__);
|
||||
directory_item_list list{};
|
||||
EXPECT_EQ(api_error::directory_not_found,
|
||||
provider.get_directory_items("/not_found", list));
|
||||
@@ -485,8 +586,11 @@ get_directory_items_fails_if_directory_not_found(i_provider &provider) {
|
||||
|
||||
static void get_directory_items_fails_if_item_is_file(const app_config &cfg,
|
||||
i_provider &provider) {
|
||||
fmt::println("testing|{}|{}",
|
||||
app_config::get_provider_name(provider.get_provider_type()),
|
||||
__FUNCTION__);
|
||||
if (provider.get_provider_type() == provider_type::encrypt) {
|
||||
const auto source_path =
|
||||
auto source_path =
|
||||
utils::path::combine(cfg.get_encrypt_config().path, {"test.txt"});
|
||||
|
||||
std::string api_path{};
|
||||
@@ -497,12 +601,24 @@ static void get_directory_items_fails_if_item_is_file(const app_config &cfg,
|
||||
EXPECT_EQ(api_error::item_exists,
|
||||
provider.get_directory_items(api_path, list));
|
||||
EXPECT_TRUE(list.empty());
|
||||
return;
|
||||
}
|
||||
|
||||
create_file(provider, "/pt01.txt");
|
||||
|
||||
directory_item_list list{};
|
||||
EXPECT_EQ(api_error::item_exists,
|
||||
provider.get_directory_items("/pt01.txt", list));
|
||||
|
||||
EXPECT_EQ(api_error::success, provider.remove_file("/pt01.txt"));
|
||||
}
|
||||
|
||||
static void get_file(const app_config &cfg, i_provider &provider) {
|
||||
fmt::println("testing|{}|{}",
|
||||
app_config::get_provider_name(provider.get_provider_type()),
|
||||
__FUNCTION__);
|
||||
if (provider.get_provider_type() == provider_type::encrypt) {
|
||||
const auto source_path =
|
||||
auto source_path =
|
||||
utils::path::combine(cfg.get_encrypt_config().path, {"test.txt"});
|
||||
|
||||
std::string api_path{};
|
||||
@@ -522,18 +638,43 @@ static void get_file(const app_config &cfg, i_provider &provider) {
|
||||
EXPECT_EQ(std::size_t(46U), file.file_size);
|
||||
#endif
|
||||
EXPECT_STREQ(source_path.c_str(), file.source_path.c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
create_file(provider, "/pt01.txt");
|
||||
|
||||
api_file file{};
|
||||
EXPECT_EQ(api_error::success, provider.get_file("/pt01.txt", file));
|
||||
|
||||
EXPECT_STREQ("/pt01.txt", file.api_path.c_str());
|
||||
EXPECT_STREQ("/", file.api_parent.c_str());
|
||||
EXPECT_LT(utils::time::get_time_now() - (utils::time::NANOS_PER_SECOND * 5U),
|
||||
file.accessed_date);
|
||||
EXPECT_LT(utils::time::get_time_now() - (utils::time::NANOS_PER_SECOND * 5U),
|
||||
file.changed_date);
|
||||
EXPECT_LT(utils::time::get_time_now() - (utils::time::NANOS_PER_SECOND * 5U),
|
||||
file.creation_date);
|
||||
EXPECT_LT(utils::time::get_time_now() - (utils::time::NANOS_PER_SECOND * 5U),
|
||||
file.modified_date);
|
||||
|
||||
EXPECT_EQ(api_error::success, provider.remove_file("/pt01.txt"));
|
||||
}
|
||||
|
||||
static void get_file_fails_if_file_not_found(i_provider &provider) {
|
||||
fmt::println("testing|{}|{}",
|
||||
app_config::get_provider_name(provider.get_provider_type()),
|
||||
__FUNCTION__);
|
||||
api_file file{};
|
||||
EXPECT_EQ(api_error::item_not_found, provider.get_file("/not_found", file));
|
||||
}
|
||||
|
||||
static void get_file_fails_if_item_is_directory(const app_config &cfg,
|
||||
i_provider &provider) {
|
||||
fmt::println("testing|{}|{}",
|
||||
app_config::get_provider_name(provider.get_provider_type()),
|
||||
__FUNCTION__);
|
||||
if (provider.get_provider_type() == provider_type::encrypt) {
|
||||
const auto source_path =
|
||||
auto source_path =
|
||||
utils::path::combine(cfg.get_encrypt_config().path, {"sub10"});
|
||||
|
||||
std::string api_path{};
|
||||
@@ -542,7 +683,15 @@ static void get_file_fails_if_item_is_directory(const app_config &cfg,
|
||||
|
||||
api_file file{};
|
||||
EXPECT_EQ(api_error::directory_exists, provider.get_file(api_path, file));
|
||||
return;
|
||||
}
|
||||
|
||||
create_directory(provider, "/dir01");
|
||||
|
||||
api_file file{};
|
||||
EXPECT_EQ(api_error::directory_exists, provider.get_file("/dir01", file));
|
||||
|
||||
EXPECT_EQ(api_error::success, provider.remove_directory("/dir01"));
|
||||
}
|
||||
|
||||
static void get_file_list(const app_config &cfg, i_provider &provider) {
|
||||
@@ -593,7 +742,6 @@ static void run_tests(const app_config &cfg, i_provider &provider) {
|
||||
get_api_path_from_source(cfg, provider);
|
||||
get_api_path_from_source_fails_if_file_not_found(cfg, provider);
|
||||
|
||||
// TODO: continue here
|
||||
get_directory_items(cfg, provider);
|
||||
get_directory_items_fails_if_directory_not_found(provider);
|
||||
get_directory_items_fails_if_item_is_file(cfg, provider);
|
||||
@@ -629,17 +777,16 @@ static void run_tests(const app_config &cfg, i_provider &provider) {
|
||||
upload_file(provider); */
|
||||
}
|
||||
|
||||
TEST(providers, encrypt_provider) {
|
||||
const auto config_path =
|
||||
utils::path::combine(test::get_test_output_dir(), {"encrypt_provider"});
|
||||
|
||||
TEST(providers_test, encrypt_provider) {
|
||||
auto config_path = utils::path::combine(test::get_test_output_dir(),
|
||||
{"provider", "encrypt"});
|
||||
console_consumer consumer{};
|
||||
event_system::instance().start();
|
||||
|
||||
{
|
||||
app_config cfg(provider_type::encrypt, config_path);
|
||||
|
||||
const auto encrypt_path =
|
||||
auto encrypt_path =
|
||||
utils::path::combine(test::get_test_input_dir(), {"encrypt"});
|
||||
|
||||
EXPECT_STREQ(
|
||||
@@ -673,9 +820,9 @@ TEST(providers, encrypt_provider) {
|
||||
event_system::instance().stop();
|
||||
}
|
||||
|
||||
TEST(providers, s3_provider) {
|
||||
const auto config_path =
|
||||
utils::path::combine(test::get_test_output_dir(), {"s3_provider"});
|
||||
TEST(providers_test, s3_provider) {
|
||||
auto config_path =
|
||||
utils::path::combine(test::get_test_output_dir(), {"provider", "s3"});
|
||||
|
||||
console_consumer consumer{};
|
||||
event_system::instance().start();
|
||||
@@ -685,7 +832,7 @@ TEST(providers, s3_provider) {
|
||||
{
|
||||
app_config src_cfg(
|
||||
provider_type::s3,
|
||||
utils::path::combine(test::get_test_config_dir(), {"storj"}));
|
||||
utils::path::combine(test::get_test_config_dir(), {"s3"}));
|
||||
cfg.set_s3_config(src_cfg.get_s3_config());
|
||||
}
|
||||
|
||||
@@ -713,9 +860,9 @@ TEST(providers, s3_provider) {
|
||||
event_system::instance().stop();
|
||||
}
|
||||
|
||||
TEST(providers, sia_provider) {
|
||||
const auto config_path =
|
||||
utils::path::combine(test::get_test_output_dir(), {"sia_provider"});
|
||||
TEST(providers_test, sia_provider) {
|
||||
auto config_path =
|
||||
utils::path::combine(test::get_test_output_dir(), {"sia", "provider"});
|
||||
|
||||
console_consumer consumer{};
|
||||
event_system::instance().start();
|
||||
@@ -753,5 +900,3 @@ TEST(providers, sia_provider) {
|
||||
event_system::instance().stop();
|
||||
}
|
||||
} // namespace repertory
|
||||
|
||||
#endif // 0
|
||||
|
@@ -29,7 +29,7 @@
|
||||
namespace repertory {
|
||||
static constexpr const std::size_t test_chunk_size{1024U};
|
||||
|
||||
TEST(upload, can_upload_a_valid_file) {
|
||||
TEST(upload_test, can_upload_a_valid_file) {
|
||||
console_consumer con;
|
||||
|
||||
event_system::instance().start();
|
||||
@@ -71,7 +71,7 @@ TEST(upload, can_upload_a_valid_file) {
|
||||
event_system::instance().stop();
|
||||
}
|
||||
|
||||
TEST(upload, can_cancel_upload) {
|
||||
TEST(upload_test, can_cancel_upload) {
|
||||
console_consumer con;
|
||||
|
||||
event_system::instance().start();
|
||||
@@ -135,7 +135,7 @@ TEST(upload, can_cancel_upload) {
|
||||
event_system::instance().stop();
|
||||
}
|
||||
|
||||
TEST(upload, can_stop_upload) {
|
||||
TEST(upload_test, can_stop_upload) {
|
||||
console_consumer con;
|
||||
|
||||
event_system::instance().start();
|
||||
|
@@ -25,7 +25,7 @@
|
||||
#include "utils/file.hpp"
|
||||
|
||||
namespace repertory {
|
||||
TEST(utils, convert_api_date) {
|
||||
TEST(utils_test, convert_api_date) {
|
||||
#if defined(_WIN32)
|
||||
auto file_time = utils::time::unix_time_to_filetime(
|
||||
s3_provider::convert_api_date("2009-10-12T17:50:30.111Z"));
|
||||
@@ -63,7 +63,7 @@ TEST(utils, convert_api_date) {
|
||||
#endif // defined(_WIN32)
|
||||
}
|
||||
|
||||
TEST(utils, generate_sha256) {
|
||||
TEST(utils_test, generate_sha256) {
|
||||
auto res = utils::file::file{__FILE__}.sha256();
|
||||
EXPECT_TRUE(res.has_value());
|
||||
if (res.has_value()) {
|
||||
|
Reference in New Issue
Block a user