3FS/tests/storage/store/TestStorageTargets.cc
2025-02-27 21:53:53 +08:00

59 lines
1.9 KiB
C++

#include <folly/experimental/TestUtil.h>
#include "common/utils/CPUExecutorGroup.h"
#include "common/utils/SysResource.h"
#include "storage/store/StorageTargets.h"
#include "tests/GtestHelpers.h"
namespace hf3fs::storage {
namespace {
TEST(TestStorageTargets, Normal) {
folly::test::TemporaryDirectory tmpPath;
StorageTargets::Config config;
config.set_target_num_per_path(4);
config.set_target_paths({tmpPath.path()});
config.set_allow_disk_without_uuid(true);
{
AtomicallyTargetMap targetMap;
StorageTargets targets(config, targetMap);
ASSERT_FALSE(targetMap.snapshot()->getTarget(TargetId{1}));
ASSERT_FALSE(targetMap.snapshot()->getTarget(TargetId{5}));
StorageTargets::CreateConfig createConfig;
createConfig.set_chunk_size_list({1_MB});
createConfig.set_physical_file_count(8);
createConfig.set_allow_disk_without_uuid(true);
createConfig.set_target_ids({1, 2, 3, 4});
ASSERT_OK(targets.create(createConfig));
ASSERT_OK(targetMap.snapshot()->getTarget(TargetId{1}));
ASSERT_FALSE(targetMap.snapshot()->getTarget(TargetId{5}));
}
{
AtomicallyTargetMap targetMap;
StorageTargets targets(config, targetMap);
ASSERT_FALSE(targetMap.snapshot()->getTarget(TargetId{1}));
ASSERT_FALSE(targetMap.snapshot()->getTarget(TargetId{5}));
CPUExecutorGroup executor(8, "");
ASSERT_OK(targets.load(executor));
ASSERT_OK(targetMap.snapshot()->getTarget(TargetId{1}));
ASSERT_FALSE(targetMap.snapshot()->getTarget(TargetId{5}));
ASSERT_OK(targetMap.offlineTargets(tmpPath.path()));
auto target = targetMap.snapshot()->getTarget(TargetId{1});
ASSERT_OK(target);
ASSERT_TRUE((*target)->diskError);
auto result = targetMap.offlineTarget(TargetId{1});
ASSERT_TRUE(result.hasError());
ASSERT_EQ(result.error().code(), StorageCode::kTargetOffline);
}
}
} // namespace
} // namespace hf3fs::storage