89 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /**
 | |
|  * Copyright (c) 2021 OceanBase
 | |
|  * OceanBase CE is licensed under Mulan PubL v2.
 | |
|  * You can use this software according to the terms and conditions of the Mulan PubL v2.
 | |
|  * You may obtain a copy of Mulan PubL v2 at:
 | |
|  *          http://license.coscl.org.cn/MulanPubL-2.0
 | |
|  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 | |
|  * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 | |
|  * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 | |
|  * See the Mulan PubL v2 for more details.
 | |
|  */
 | |
| 
 | |
| #include "clog/ob_log_define.h"
 | |
| #include "storage/ob_saved_storage_info.h"
 | |
| 
 | |
| #include <gtest/gtest.h>
 | |
| 
 | |
| namespace oceanbase {
 | |
| using namespace common;
 | |
| using namespace storage;
 | |
| namespace unittest {
 | |
| TEST(ob_save_storage_info_test, test1)
 | |
| {
 | |
|   const int64_t BUF_LEN = 1000;
 | |
|   const int64_t member_number = 3;
 | |
|   const int32_t begin_port = 3000;
 | |
|   const int64_t epoch_id = 3333;
 | |
|   ObProposalID proposal_id;
 | |
|   proposal_id.addr_.set_ip_addr("127.0.0.1", 8001);
 | |
|   proposal_id.ts_ = 1;
 | |
|   const uint64_t last_replay_log_id = 5555;
 | |
|   const uint64_t last_submit_timestamp = 5555;
 | |
|   const uint64_t accumulate_checksum = 5555;
 | |
|   const int64_t replica_num = 1;
 | |
| 
 | |
|   ObAddr server;
 | |
|   ObMemberList ob_member_list;
 | |
|   ObAddr addr;
 | |
|   addr.set_ip_addr("127.0.0.1", 8001);
 | |
|   ob_member_list.add_server(addr);
 | |
|   ObBaseStorageInfo base_info;
 | |
|   ObSavedStorageInfo save_info;
 | |
|   ObVersion version;
 | |
|   ObProposalID fake_ms_proposal_id;
 | |
| 
 | |
|   ob_member_list.reset();
 | |
|   for (int64_t i = 0; i < member_number; ++i) {
 | |
|     server.reset();
 | |
|     server.set_ip_addr("127.0.0.1", begin_port + static_cast<int32_t>(i));
 | |
|     EXPECT_EQ(OB_SUCCESS, ob_member_list.add_member(ObMember(server, OB_INVALID_TIMESTAMP)));
 | |
|   }
 | |
| 
 | |
|   EXPECT_EQ(OB_SUCCESS,
 | |
|       base_info.init(epoch_id,
 | |
|           proposal_id,
 | |
|           last_replay_log_id,
 | |
|           last_submit_timestamp,
 | |
|           accumulate_checksum,
 | |
|           replica_num,
 | |
|           0,
 | |
|           0,
 | |
|           ob_member_list,
 | |
|           fake_ms_proposal_id));
 | |
|   EXPECT_EQ(OB_SUCCESS, save_info.deep_copy(base_info));
 | |
|   version.version_ = 1;
 | |
|   save_info.set_memstore_version(version);
 | |
| 
 | |
|   char buf[BUF_LEN];
 | |
|   int64_t pos = 0;
 | |
|   ObSavedStorageInfo info;
 | |
| 
 | |
|   EXPECT_EQ(OB_SUCCESS, save_info.serialize(buf, BUF_LEN, pos));
 | |
|   pos = 0;
 | |
|   EXPECT_EQ(OB_SUCCESS, info.deserialize(buf, BUF_LEN, pos));
 | |
| 
 | |
|   STORAGE_LOG(INFO, "before and after", K(save_info), K(info));
 | |
| }
 | |
| }  // namespace unittest
 | |
| }  // namespace oceanbase
 | |
| 
 | |
| int main(int argc, char** argv)
 | |
| {
 | |
|   OB_LOGGER.set_file_name("test_saved_storage_info.log", true);
 | |
|   OB_LOGGER.set_log_level("INFO");
 | |
|   STORAGE_LOG(INFO, "begin unittest:test_saved_storage_info");
 | |
|   ::testing::InitGoogleTest(&argc, argv);
 | |
|   return RUN_ALL_TESTS();
 | |
| }
 | 
