Skip to content

Commit bce368a

Browse files
yuhaijun999ketor
authored andcommitted
[test][store] Test to verify that br restore can create regions(store,index, document).
1 parent 6711572 commit bce368a

File tree

2 files changed

+61
-143
lines changed

2 files changed

+61
-143
lines changed

src/br/restore_region_meta.cc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,7 @@ butil::Status RestoreRegionMeta::CreateRegionToCoordinator() {
8080
// ignore store_ids
8181
// ignore split_from_region_id
8282
request.set_region_type(region_->region_type());
83-
if (region_->definition().has_index_parameter() &&
84-
region_->definition().index_parameter().index_type() != dingodb::pb::common::IndexType ::INDEX_TYPE_NONE) {
83+
if (region_->definition().has_index_parameter()) {
8584
request.mutable_index_parameter()->CopyFrom(region_->definition().index_parameter());
8685
}
8786

test/unit_test/br/test_restore_region_meta.cc

Lines changed: 60 additions & 141 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ class BrRestoreRegionMetaTest;
3131

3232
static bool GetRegion(const BrRestoreRegionMetaTest& br_restore_region_meta_test,
3333
std::shared_ptr<dingodb::pb::common::Region> region);
34+
35+
static void TestCreateRegion(const BrRestoreRegionMetaTest& br_restore_region_meta_test, const std::string& file_name);
3436
class BrRestoreRegionMetaTest : public testing::Test {
3537
protected:
3638
static void SetUpTestSuite() {
@@ -50,14 +52,15 @@ class BrRestoreRegionMetaTest : public testing::Test {
5052

5153
friend bool GetRegion(const BrRestoreRegionMetaTest& br_restore_region_meta_test,
5254
std::shared_ptr<dingodb::pb::common::Region> region);
55+
friend void TestCreateRegion(const BrRestoreRegionMetaTest& br_restore_region_meta_test,
56+
const std::string& file_name);
5357

54-
inline static std::shared_ptr<br::RestoreRegionMeta> restore_region_meta;
5558
inline static br::ServerInteractionPtr coordinator_interaction;
56-
inline static std::shared_ptr<dingodb::pb::common::Region> region;
5759
inline static int64_t replica_num = 0;
5860
inline static std::string backup_meta_region_name;
5961
inline static int64_t create_region_timeout_s = 60;
60-
inline static std::string base_dir = "/home/server/work/dingo-store/build/bin/backup2/";
62+
inline static std::string base_dir = "./backup2/";
63+
inline static std::string statics_regions;
6164
};
6265

6366
static bool GetRegion(const BrRestoreRegionMetaTest& br_restore_region_meta_test,
@@ -83,8 +86,7 @@ static bool GetRegion(const BrRestoreRegionMetaTest& br_restore_region_meta_test
8386
EXPECT_EQ(region->id(), response.region().id());
8487
EXPECT_EQ(region->region_type(), response.region().region_type());
8588

86-
// coordinator bug. TODO fix.
87-
// EXPECT_EQ(region->definition().id(), response.region().definition().id());
89+
EXPECT_EQ(region->definition().id(), response.region().definition().id());
8890
EXPECT_EQ(region->definition().name(), response.region().definition().name());
8991
EXPECT_EQ(region->definition().range().start_key(), response.region().definition().range().start_key());
9092
EXPECT_EQ(region->definition().range().end_key(), response.region().definition().range().end_key());
@@ -95,27 +97,26 @@ static bool GetRegion(const BrRestoreRegionMetaTest& br_restore_region_meta_test
9597
EXPECT_EQ(region->definition().index_id(), response.region().definition().index_id());
9698
EXPECT_EQ(region->definition().part_id(), response.region().definition().part_id());
9799
EXPECT_EQ(region->definition().tenant_id(), response.region().definition().tenant_id());
98-
if (region->definition().has_index_parameter() && response.region().definition().index_parameter().index_type() !=
99-
dingodb::pb::common::IndexType::INDEX_TYPE_NONE) {
100+
if (region->definition().has_index_parameter()) {
100101
EXPECT_EQ(region->definition().index_parameter().index_type(),
101102
response.region().definition().index_parameter().index_type());
102103

103104
if (region->definition().index_parameter().has_vector_index_parameter()) {
104-
google::protobuf::util::MessageDifferencer::Equals(
105+
EXPECT_TRUE(google::protobuf::util::MessageDifferencer::Equals(
105106
region->definition().index_parameter().vector_index_parameter(),
106-
response.region().definition().index_parameter().vector_index_parameter());
107+
response.region().definition().index_parameter().vector_index_parameter()));
107108
}
108109

109110
if (region->definition().index_parameter().has_scalar_index_parameter()) {
110-
google::protobuf::util::MessageDifferencer::Equals(
111+
EXPECT_TRUE(google::protobuf::util::MessageDifferencer::Equals(
111112
region->definition().index_parameter().scalar_index_parameter(),
112-
response.region().definition().index_parameter().scalar_index_parameter());
113+
response.region().definition().index_parameter().scalar_index_parameter()));
113114
}
114115

115116
if (region->definition().index_parameter().has_document_index_parameter()) {
116-
google::protobuf::util::MessageDifferencer::Equals(
117+
EXPECT_TRUE(google::protobuf::util::MessageDifferencer::Equals(
117118
region->definition().index_parameter().document_index_parameter(),
118-
response.region().definition().index_parameter().document_index_parameter());
119+
response.region().definition().index_parameter().document_index_parameter()));
119120
}
120121

121122
EXPECT_EQ(region->definition().index_parameter().origin_keys_size(),
@@ -138,59 +139,28 @@ static bool GetRegion(const BrRestoreRegionMetaTest& br_restore_region_meta_test
138139
return true;
139140
}
140141

141-
TEST_F(BrRestoreRegionMetaTest, TestIndexRegionSdkData) {
142-
const std::string file_name = "index_region_sdk_data.sst";
143-
const std::string file_path = base_dir + file_name;
144-
backup_meta_region_name = file_name;
142+
static void TestCreateRegion(const BrRestoreRegionMetaTest& br_restore_region_meta_test, const std::string& file_name) {
143+
const std::string file_path = br_restore_region_meta_test.base_dir + file_name;
144+
br_restore_region_meta_test.backup_meta_region_name = file_name;
145145

146146
std::shared_ptr<br::SstFileReader> reader_sst = std::make_shared<br::SstFileReader>();
147147

148148
std::map<std::string, std::string> kvs;
149149
auto status = reader_sst->ReadFile(file_path, kvs);
150150
EXPECT_EQ(status.error_code(), dingodb::pb::error::OK);
151151

152-
for (const auto& [region_id, region_ptr] : kvs) {
153-
region = std::make_shared<dingodb::pb::common::Region>();
154-
auto ret = region->ParseFromString(region_ptr);
155-
EXPECT_TRUE(ret);
156-
157-
LOG(INFO) << region->DebugString();
158-
159-
restore_region_meta = std::make_shared<br::RestoreRegionMeta>(coordinator_interaction, region, replica_num,
160-
backup_meta_region_name, create_region_timeout_s);
152+
br_restore_region_meta_test.statics_regions += "\n" + file_name + " : [";
161153

162-
status = restore_region_meta->Init();
163-
EXPECT_EQ(status.error_code(), dingodb::pb::error::OK);
164-
status = restore_region_meta->Run();
165-
EXPECT_EQ(status.error_code(), dingodb::pb::error::OK);
166-
status = restore_region_meta->Finish();
167-
EXPECT_EQ(status.error_code(), dingodb::pb::error::OK);
168-
169-
bool is_true = GetRegion(*this, region);
170-
EXPECT_TRUE(is_true);
171-
}
172-
}
173-
174-
TEST_F(BrRestoreRegionMetaTest, TestIndexRegionSqlData) {
175-
const std::string file_name = "index_region_sql_data.sst";
176-
const std::string file_path = base_dir + file_name;
177-
backup_meta_region_name = file_name;
178-
179-
std::shared_ptr<br::SstFileReader> reader_sst = std::make_shared<br::SstFileReader>();
180-
181-
std::map<std::string, std::string> kvs;
182-
auto status = reader_sst->ReadFile(file_path, kvs);
183-
EXPECT_EQ(status.error_code(), dingodb::pb::error::OK);
154+
int i = 0;
184155

185156
for (const auto& [region_id, region_ptr] : kvs) {
186-
region = std::make_shared<dingodb::pb::common::Region>();
157+
auto region = std::make_shared<dingodb::pb::common::Region>();
187158
auto ret = region->ParseFromString(region_ptr);
188159
EXPECT_TRUE(ret);
189160

190-
LOG(INFO) << region->DebugString();
191-
192-
restore_region_meta = std::make_shared<br::RestoreRegionMeta>(coordinator_interaction, region, replica_num,
193-
backup_meta_region_name, create_region_timeout_s);
161+
auto restore_region_meta = std::make_shared<br::RestoreRegionMeta>(
162+
br_restore_region_meta_test.coordinator_interaction, region, br_restore_region_meta_test.replica_num,
163+
br_restore_region_meta_test.backup_meta_region_name, br_restore_region_meta_test.create_region_timeout_s);
194164

195165
status = restore_region_meta->Init();
196166
EXPECT_EQ(status.error_code(), dingodb::pb::error::OK);
@@ -199,110 +169,59 @@ TEST_F(BrRestoreRegionMetaTest, TestIndexRegionSqlData) {
199169
status = restore_region_meta->Finish();
200170
EXPECT_EQ(status.error_code(), dingodb::pb::error::OK);
201171

202-
bool is_true = GetRegion(*this, region);
172+
bool is_true = GetRegion(br_restore_region_meta_test, region);
203173
EXPECT_TRUE(is_true);
174+
if (0 == i) {
175+
br_restore_region_meta_test.statics_regions += fmt::format("{}", region->id());
176+
} else {
177+
if (i % 16 == 0) {
178+
br_restore_region_meta_test.statics_regions += fmt::format("\n{}", region->id());
179+
} else {
180+
br_restore_region_meta_test.statics_regions += fmt::format(" {}", region->id());
181+
}
182+
}
183+
i++;
204184
}
185+
br_restore_region_meta_test.statics_regions += "]";
205186
}
206187

207-
TEST_F(BrRestoreRegionMetaTest, TestStoreRegionSdkData) {
208-
const std::string file_name = "store_region_sdk_data.sst";
209-
const std::string file_path = base_dir + file_name;
210-
backup_meta_region_name = file_name;
211-
212-
std::shared_ptr<br::SstFileReader> reader_sst = std::make_shared<br::SstFileReader>();
213-
214-
std::map<std::string, std::string> kvs;
215-
auto status = reader_sst->ReadFile(file_path, kvs);
216-
EXPECT_EQ(status.error_code(), dingodb::pb::error::OK);
217-
218-
for (const auto& [region_id, region_ptr] : kvs) {
219-
region = std::make_shared<dingodb::pb::common::Region>();
220-
auto ret = region->ParseFromString(region_ptr);
221-
EXPECT_TRUE(ret);
188+
TEST_F(BrRestoreRegionMetaTest, TestDocumentRegionSdkData) {
189+
const std::string& file_name = "document_region_sdk_data.sst";
190+
TestCreateRegion(*this, file_name);
191+
}
222192

223-
LOG(INFO) << region->DebugString();
193+
TEST_F(BrRestoreRegionMetaTest, TestDocumentRegionSqlData) {
194+
const std::string& file_name = "document_region_sql_data.sst";
195+
TestCreateRegion(*this, file_name);
196+
}
224197

225-
restore_region_meta = std::make_shared<br::RestoreRegionMeta>(coordinator_interaction, region, replica_num,
226-
backup_meta_region_name, create_region_timeout_s);
198+
TEST_F(BrRestoreRegionMetaTest, TestIndexRegionSdkData) {
199+
const std::string& file_name = "index_region_sdk_data.sst";
200+
TestCreateRegion(*this, file_name);
201+
}
227202

228-
status = restore_region_meta->Init();
229-
EXPECT_EQ(status.error_code(), dingodb::pb::error::OK);
230-
status = restore_region_meta->Run();
231-
EXPECT_EQ(status.error_code(), dingodb::pb::error::OK);
232-
status = restore_region_meta->Finish();
233-
EXPECT_EQ(status.error_code(), dingodb::pb::error::OK);
203+
TEST_F(BrRestoreRegionMetaTest, TestIndexRegionSqlData) {
204+
const std::string& file_name = "index_region_sql_data.sst";
205+
TestCreateRegion(*this, file_name);
206+
}
234207

235-
bool is_true = GetRegion(*this, region);
236-
EXPECT_TRUE(is_true);
237-
}
208+
TEST_F(BrRestoreRegionMetaTest, TestStoreRegionSdkData) {
209+
const std::string& file_name = "store_region_sdk_data.sst";
210+
TestCreateRegion(*this, file_name);
238211
}
239212

240213
TEST_F(BrRestoreRegionMetaTest, TestStoreRegionSqlData) {
241-
const std::string file_name = "store_region_sql_data.sst";
242-
const std::string file_path = base_dir + file_name;
243-
backup_meta_region_name = file_name;
244-
245-
std::shared_ptr<br::SstFileReader> reader_sst = std::make_shared<br::SstFileReader>();
246-
247-
std::map<std::string, std::string> kvs;
248-
auto status = reader_sst->ReadFile(file_path, kvs);
249-
EXPECT_EQ(status.error_code(), dingodb::pb::error::OK);
250-
251-
for (const auto& [region_id, region_ptr] : kvs) {
252-
region = std::make_shared<dingodb::pb::common::Region>();
253-
auto ret = region->ParseFromString(region_ptr);
254-
EXPECT_TRUE(ret);
255-
256-
LOG(INFO) << region->DebugString();
257-
258-
restore_region_meta = std::make_shared<br::RestoreRegionMeta>(coordinator_interaction, region, replica_num,
259-
backup_meta_region_name, create_region_timeout_s);
260-
261-
status = restore_region_meta->Init();
262-
EXPECT_EQ(status.error_code(), dingodb::pb::error::OK);
263-
status = restore_region_meta->Run();
264-
EXPECT_EQ(status.error_code(), dingodb::pb::error::OK);
265-
status = restore_region_meta->Finish();
266-
EXPECT_EQ(status.error_code(), dingodb::pb::error::OK);
267-
268-
bool is_true = GetRegion(*this, region);
269-
EXPECT_TRUE(is_true);
270-
}
214+
const std::string& file_name = "store_region_sql_data.sst";
215+
TestCreateRegion(*this, file_name);
271216
}
272217

273218
TEST_F(BrRestoreRegionMetaTest, TestStoreRegionSqlMeta) {
274-
const std::string file_name = "store_region_sql_meta.sst";
275-
const std::string file_path = base_dir + file_name;
276-
backup_meta_region_name = file_name;
277-
278-
std::shared_ptr<br::SstFileReader> reader_sst = std::make_shared<br::SstFileReader>();
279-
280-
std::map<std::string, std::string> kvs;
281-
auto status = reader_sst->ReadFile(file_path, kvs);
282-
EXPECT_EQ(status.error_code(), dingodb::pb::error::OK);
283-
284-
for (const auto& [region_id, region_ptr] : kvs) {
285-
region = std::make_shared<dingodb::pb::common::Region>();
286-
auto ret = region->ParseFromString(region_ptr);
287-
EXPECT_TRUE(ret);
288-
289-
LOG(INFO) << region->DebugString();
290-
291-
restore_region_meta = std::make_shared<br::RestoreRegionMeta>(coordinator_interaction, region, replica_num,
292-
backup_meta_region_name, create_region_timeout_s);
293-
294-
status = restore_region_meta->Init();
295-
EXPECT_EQ(status.error_code(), dingodb::pb::error::OK);
296-
status = restore_region_meta->Run();
297-
EXPECT_EQ(status.error_code(), dingodb::pb::error::OK);
298-
status = restore_region_meta->Finish();
299-
EXPECT_EQ(status.error_code(), dingodb::pb::error::OK);
300-
301-
bool is_true = GetRegion(*this, region);
302-
EXPECT_TRUE(is_true);
303-
}
219+
const std::string& file_name = "store_region_sql_meta.sst";
220+
TestCreateRegion(*this, file_name);
304221
}
305222

223+
TEST_F(BrRestoreRegionMetaTest, StaticsCreateRegion) { LOG(INFO) << statics_regions; }
224+
306225
TEST_F(BrRestoreRegionMetaTest, TestHasValue) {
307226
dingodb::pb::common::Region region;
308227
region.set_id(10);

0 commit comments

Comments
 (0)