mirror of
https://github.com/deepseek-ai/3FS
synced 2025-05-30 18:18:18 +00:00
59 lines
1.9 KiB
C++
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
|