Compare commits

...

2 Commits

Author SHA1 Message Date
dcafb104ea [Unit Test] Complete WinFSP unit tests #21
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
initial support for winfsp to linux remote testing
initial support for linx to winfsp remote testing
2025-04-02 14:18:35 -05:00
ab757dfd36 [Unit Test] Complete WinFSP unit tests #21
initial support for winfsp to linux remote testing
2025-04-02 14:11:37 -05:00
2 changed files with 44 additions and 7 deletions

View File

@ -54,21 +54,31 @@ namespace repertory {
struct local_s3 final { struct local_s3 final {
static constexpr const provider_type type{provider_type::s3}; static constexpr const provider_type type{provider_type::s3};
static constexpr const provider_type type2{provider_type::s3}; static constexpr const provider_type type2{provider_type::s3};
static constexpr const std::uint16_t port{0U};
}; };
struct local_sia final { struct local_sia final {
static constexpr const provider_type type{provider_type::sia}; static constexpr const provider_type type{provider_type::sia};
static constexpr const provider_type type2{provider_type::sia}; static constexpr const provider_type type2{provider_type::sia};
static constexpr const std::uint16_t port{0U};
}; };
struct remote_s3 final { struct remote_s3 final {
static constexpr const provider_type type{provider_type::remote}; static constexpr const provider_type type{provider_type::remote};
static constexpr const provider_type type2{provider_type::s3}; static constexpr const provider_type type2{provider_type::s3};
static constexpr const std::uint16_t port{0U};
}; };
struct remote_sia final { struct remote_sia final {
static constexpr const provider_type type{provider_type::remote}; static constexpr const provider_type type{provider_type::remote};
static constexpr const provider_type type2{provider_type::sia}; static constexpr const provider_type type2{provider_type::sia};
static constexpr const std::uint16_t port{0U};
};
struct remote_linux_to_winfsp final {
static constexpr const provider_type type{provider_type::remote};
static constexpr const provider_type type2{provider_type::unknown};
static constexpr const std::uint16_t port{30001U};
}; };
template <typename provider_t> class fuse_test : public ::testing::Test { template <typename provider_t> class fuse_test : public ::testing::Test {
@ -178,7 +188,7 @@ protected:
execute_mount(drive_args, mount_location); execute_mount(drive_args, mount_location);
}; };
const auto mount_remote = [&]() { const auto mount_remote = [&](std::uint16_t port = 30000U) {
{ {
mount_location2 = mount_location; mount_location2 = mount_location;
@ -187,7 +197,8 @@ protected:
{ {
"fuse_test", "fuse_test",
app_config::get_provider_name(provider_t::type) + '_' + app_config::get_provider_name(provider_t::type) + '_' +
app_config::get_provider_name(provider_t::type2), app_config::get_provider_name(provider_t::type2) + '_' +
std::to_string(port),
}); });
mount_location = utils::path::combine(test_directory, {"mount"}); mount_location = utils::path::combine(test_directory, {"mount"});
@ -206,7 +217,7 @@ protected:
"-dd", "-dd",
config2->get_data_directory(), config2->get_data_directory(),
"-rm", "-rm",
"localhost:30000", fmt::format("localhost:{}", port),
mount_location, mount_location,
}); });
} }
@ -233,6 +244,10 @@ protected:
mount_sia(); mount_sia();
} break; } break;
case provider_type::unknown:
mount_remote(provider_t::port);
return;
default: default:
throw std::runtime_error("remote provider type is not implemented"); throw std::runtime_error("remote provider type is not implemented");
return; return;
@ -410,9 +425,15 @@ std::string fuse_test<provider_t>::mount_location;
template <typename provider_t> template <typename provider_t>
std::string fuse_test<provider_t>::mount_location2; std::string fuse_test<provider_t>::mount_location2;
// using fuse_provider_types = ::testing::Types<local_s3, remote_s3>; #if defined(__linux__)
using fuse_provider_types = using fuse_provider_types =
::testing::Types<local_s3, remote_s3, local_sia, remote_sia>; ::testing::Types<local_s3, remote_s3, local_sia, remote_sia>;
// using fuse_provider_types =
// ::testing::Types<local_s3, remote_s3, local_sia, remote_sia,
// remote_linux_to_winfsp>;
#else // !defined(__linux__)
build fails here
#endif // defined(_WIN32)
} // namespace repertory } // namespace repertory
#endif // !defined(_WIN32) #endif // !defined(_WIN32)

View File

@ -45,21 +45,31 @@ namespace repertory {
struct local_s3 final { struct local_s3 final {
static constexpr const provider_type type{provider_type::s3}; static constexpr const provider_type type{provider_type::s3};
static constexpr const provider_type type2{provider_type::s3}; static constexpr const provider_type type2{provider_type::s3};
static constexpr const std::uint16_t port{0U};
}; };
struct local_sia final { struct local_sia final {
static constexpr const provider_type type{provider_type::sia}; static constexpr const provider_type type{provider_type::sia};
static constexpr const provider_type type2{provider_type::sia}; static constexpr const provider_type type2{provider_type::sia};
static constexpr const std::uint16_t port{0U};
}; };
struct remote_s3 final { struct remote_s3 final {
static constexpr const provider_type type{provider_type::remote}; static constexpr const provider_type type{provider_type::remote};
static constexpr const provider_type type2{provider_type::s3}; static constexpr const provider_type type2{provider_type::s3};
static constexpr const std::uint16_t port{0U};
}; };
struct remote_sia final { struct remote_sia final {
static constexpr const provider_type type{provider_type::remote}; static constexpr const provider_type type{provider_type::remote};
static constexpr const provider_type type2{provider_type::sia}; static constexpr const provider_type type2{provider_type::sia};
static constexpr const std::uint16_t port{0U};
};
struct remote_winfsp_to_linux final {
static constexpr const provider_type type{provider_type::remote};
static constexpr const provider_type type2{provider_type::unknown};
static constexpr const std::uint16_t port{30001U};
}; };
template <typename provider_t> class winfsp_test : public ::testing::Test { template <typename provider_t> class winfsp_test : public ::testing::Test {
@ -160,13 +170,15 @@ protected:
execute_mount(drive_args, mount_location); execute_mount(drive_args, mount_location);
}; };
const auto mount_remote = [&]() { const auto mount_remote = [&](std::uint16_t port = 30000U) {
{ {
auto test_directory = utils::path::combine( auto test_directory = utils::path::combine(
test::get_test_output_dir(), test::get_test_output_dir(),
{ {
"winfsp_test", "winfsp_test",
app_config::get_provider_name(provider_type::remote), app_config::get_provider_name(provider_t::type) + '_' +
app_config::get_provider_name(provider_t::type2) + '_' +
std::to_string(port),
}); });
mount_location2 = mount_location; mount_location2 = mount_location;
@ -184,7 +196,7 @@ protected:
"-dd", "-dd",
config->get_data_directory(), config->get_data_directory(),
"-rm", "-rm",
"localhost:30000", fmt::format("localhost:{}", port),
mount_location, mount_location,
}); });
} }
@ -211,6 +223,10 @@ protected:
mount_sia(); mount_sia();
} break; } break;
case provider_type::unknown:
mount_remote(provider_t::port);
return;
default: default:
throw std::runtime_error("remote provider type is not implemented"); throw std::runtime_error("remote provider type is not implemented");
return; return;