Refactored app_config unit tests
This commit is contained in:
parent
85c769009a
commit
c61afabbea
@ -73,6 +73,65 @@ public:
|
||||
void TearDown() override { event_system::instance().stop(); }
|
||||
};
|
||||
|
||||
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) {
|
||||
@ -108,61 +167,19 @@ static void defaults_tests(const json &json_data, provider_type prov) {
|
||||
{JSON_VERSION, REPERTORY_CONFIG_VERSION},
|
||||
};
|
||||
|
||||
remove_unused_types(json_defaults, prov);
|
||||
|
||||
switch (prov) {
|
||||
case provider_type::encrypt:
|
||||
json_defaults.erase(JSON_DOWNLOAD_TIMEOUT_SECS);
|
||||
json_defaults.erase(JSON_ENABLE_DOWNLOAD_TIMEOUT);
|
||||
json_defaults.erase(JSON_EVICTION_DELAY_MINS);
|
||||
json_defaults.erase(JSON_EVICTION_USE_ACCESS_TIME);
|
||||
json_defaults.erase(JSON_HOST_CONFIG);
|
||||
json_defaults.erase(JSON_MAX_CACHE_SIZE_BYTES);
|
||||
json_defaults.erase(JSON_MAX_UPLOAD_COUNT);
|
||||
json_defaults.erase(JSON_ONLINE_CHECK_RETRY_SECS);
|
||||
json_defaults.erase(JSON_PREFERRED_DOWNLOAD_TYPE);
|
||||
json_defaults.erase(JSON_REMOTE_CONFIG);
|
||||
json_defaults.erase(JSON_RETRY_READ_COUNT);
|
||||
json_defaults.erase(JSON_RING_BUFFER_FILE_SIZE);
|
||||
json_defaults.erase(JSON_S3_CONFIG);
|
||||
json_defaults.erase(JSON_SIA_CONFIG);
|
||||
json_defaults[JSON_REMOTE_MOUNT][JSON_API_PORT] =
|
||||
app_config::default_remote_api_port(prov);
|
||||
break;
|
||||
|
||||
case provider_type::remote:
|
||||
json_defaults.erase(JSON_DATABASE_TYPE);
|
||||
json_defaults.erase(JSON_DOWNLOAD_TIMEOUT_SECS);
|
||||
json_defaults.erase(JSON_ENABLE_DOWNLOAD_TIMEOUT);
|
||||
json_defaults.erase(JSON_ENCRYPT_CONFIG);
|
||||
json_defaults.erase(JSON_EVICTION_DELAY_MINS);
|
||||
json_defaults.erase(JSON_EVICTION_USE_ACCESS_TIME);
|
||||
json_defaults.erase(JSON_HIGH_FREQ_INTERVAL_SECS);
|
||||
json_defaults.erase(JSON_HOST_CONFIG);
|
||||
json_defaults.erase(JSON_LOW_FREQ_INTERVAL_SECS);
|
||||
json_defaults.erase(JSON_MAX_CACHE_SIZE_BYTES);
|
||||
json_defaults.erase(JSON_MAX_UPLOAD_COUNT);
|
||||
json_defaults.erase(JSON_MED_FREQ_INTERVAL_SECS);
|
||||
json_defaults.erase(JSON_ONLINE_CHECK_RETRY_SECS);
|
||||
json_defaults.erase(JSON_PREFERRED_DOWNLOAD_TYPE);
|
||||
json_defaults.erase(JSON_REMOTE_MOUNT);
|
||||
json_defaults.erase(JSON_RETRY_READ_COUNT);
|
||||
json_defaults.erase(JSON_RING_BUFFER_FILE_SIZE);
|
||||
json_defaults.erase(JSON_S3_CONFIG);
|
||||
json_defaults.erase(JSON_SIA_CONFIG);
|
||||
break;
|
||||
|
||||
case provider_type::s3:
|
||||
json_defaults.erase(JSON_ENCRYPT_CONFIG);
|
||||
json_defaults.erase(JSON_HOST_CONFIG);
|
||||
json_defaults.erase(JSON_REMOTE_CONFIG);
|
||||
json_defaults.erase(JSON_SIA_CONFIG);
|
||||
json_defaults[JSON_REMOTE_MOUNT][JSON_API_PORT] =
|
||||
app_config::default_remote_api_port(prov);
|
||||
break;
|
||||
|
||||
case provider_type::sia:
|
||||
json_defaults.erase(JSON_ENCRYPT_CONFIG);
|
||||
json_defaults.erase(JSON_REMOTE_CONFIG);
|
||||
json_defaults.erase(JSON_S3_CONFIG);
|
||||
json_defaults[JSON_HOST_CONFIG][JSON_API_PORT] =
|
||||
app_config::default_api_port(prov);
|
||||
json_defaults[JSON_HOST_CONFIG][JSON_AGENT_STRING] =
|
||||
@ -264,7 +281,34 @@ static void common_tests(app_config &config, provider_type prov) {
|
||||
JSON_ENABLE_REMOTE_MOUNT, "1");
|
||||
}},
|
||||
#endif // defined(_WIN32)
|
||||
{JSON_ENCRYPT_CONFIG, [](auto &&cfg) {}},
|
||||
{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,
|
||||
@ -389,12 +433,12 @@ static void common_tests(app_config &config, provider_type prov) {
|
||||
remote_cfg2, "", "");
|
||||
|
||||
remote::remote_config remote_cfg3{};
|
||||
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_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),
|
||||
@ -451,6 +495,11 @@ static void common_tests(app_config &config, provider_type prov) {
|
||||
"", "");
|
||||
|
||||
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));
|
||||
@ -496,7 +545,26 @@ static void common_tests(app_config &config, provider_type prov) {
|
||||
EXPECT_EQ(max_ring_buffer_file_size, cfg.get_ring_buffer_file_size());
|
||||
}},
|
||||
{JSON_S3_CONFIG, [](auto &&cfg) {}},
|
||||
{JSON_SIA_CONFIG, [](app_config &cfg) {}},
|
||||
{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(
|
||||
@ -510,62 +578,7 @@ static void common_tests(app_config &config, provider_type prov) {
|
||||
}},
|
||||
};
|
||||
|
||||
switch (config.get_provider_type()) {
|
||||
case provider_type::encrypt:
|
||||
methods.erase(JSON_DOWNLOAD_TIMEOUT_SECS);
|
||||
methods.erase(JSON_ENABLE_DOWNLOAD_TIMEOUT);
|
||||
methods.erase(JSON_EVICTION_DELAY_MINS);
|
||||
methods.erase(JSON_EVICTION_USE_ACCESS_TIME);
|
||||
methods.erase(JSON_HOST_CONFIG);
|
||||
methods.erase(JSON_MAX_CACHE_SIZE_BYTES);
|
||||
methods.erase(JSON_MAX_UPLOAD_COUNT);
|
||||
methods.erase(JSON_ONLINE_CHECK_RETRY_SECS);
|
||||
methods.erase(JSON_PREFERRED_DOWNLOAD_TYPE);
|
||||
methods.erase(JSON_REMOTE_CONFIG);
|
||||
methods.erase(JSON_RETRY_READ_COUNT);
|
||||
methods.erase(JSON_RING_BUFFER_FILE_SIZE);
|
||||
methods.erase(JSON_S3_CONFIG);
|
||||
methods.erase(JSON_SIA_CONFIG);
|
||||
break;
|
||||
|
||||
case provider_type::remote:
|
||||
methods.erase(JSON_DATABASE_TYPE);
|
||||
methods.erase(JSON_DOWNLOAD_TIMEOUT_SECS);
|
||||
methods.erase(JSON_ENABLE_DOWNLOAD_TIMEOUT);
|
||||
methods.erase(JSON_ENCRYPT_CONFIG);
|
||||
methods.erase(JSON_EVICTION_DELAY_MINS);
|
||||
methods.erase(JSON_EVICTION_USE_ACCESS_TIME);
|
||||
methods.erase(JSON_HIGH_FREQ_INTERVAL_SECS);
|
||||
methods.erase(JSON_HOST_CONFIG);
|
||||
methods.erase(JSON_LOW_FREQ_INTERVAL_SECS);
|
||||
methods.erase(JSON_MAX_CACHE_SIZE_BYTES);
|
||||
methods.erase(JSON_MAX_UPLOAD_COUNT);
|
||||
methods.erase(JSON_MED_FREQ_INTERVAL_SECS);
|
||||
methods.erase(JSON_ONLINE_CHECK_RETRY_SECS);
|
||||
methods.erase(JSON_PREFERRED_DOWNLOAD_TYPE);
|
||||
methods.erase(JSON_REMOTE_MOUNT);
|
||||
methods.erase(JSON_RETRY_READ_COUNT);
|
||||
methods.erase(JSON_RING_BUFFER_FILE_SIZE);
|
||||
methods.erase(JSON_S3_CONFIG);
|
||||
methods.erase(JSON_SIA_CONFIG);
|
||||
break;
|
||||
|
||||
case provider_type::s3:
|
||||
methods.erase(JSON_ENCRYPT_CONFIG);
|
||||
methods.erase(JSON_HOST_CONFIG);
|
||||
methods.erase(JSON_REMOTE_CONFIG);
|
||||
methods.erase(JSON_SIA_CONFIG);
|
||||
break;
|
||||
|
||||
case provider_type::sia:
|
||||
methods.erase(JSON_ENCRYPT_CONFIG);
|
||||
methods.erase(JSON_REMOTE_CONFIG);
|
||||
methods.erase(JSON_S3_CONFIG);
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
remove_unused_types(methods, prov);
|
||||
|
||||
for (const auto &[key, test_function] : methods) {
|
||||
fmt::println("testing setting|{}-{}", app_config::get_provider_name(prov),
|
||||
|
Loading…
x
Reference in New Issue
Block a user