oceanbase/unittest/storage/test_save_storage_info.cpp
oceanbase-admin cea7de1475 init push
2021-05-31 22:56:52 +08:00

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();
}