Skip to content

Commit

Permalink
add configuration parse ut
Browse files Browse the repository at this point in the history
  • Loading branch information
ehds committed Apr 26, 2024
1 parent 406ce3d commit 08c107e
Showing 1 changed file with 60 additions and 42 deletions.
102 changes: 60 additions & 42 deletions test/test_configuration.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*
* Filename: test_configuration.cpp
*
* Description:
* Description:
*
* Version: 1.0
* Created: 2015年10月22日 15时16分31秒
Expand All @@ -18,18 +18,23 @@

#include <butil/logging.h>

#include "braft/configuration.h"
#include "braft/configuration_manager.h"
#include "braft/log_entry.h"
#include "braft/raft.h"
#include "common.h"

namespace braft {
namespace test {

class TestUsageSuits : public testing::Test {
protected:
protected:
void SetUp() {}
void TearDown() {}
};

TEST_F(TestUsageSuits, PeerId) {
braft::PeerId id1;
PeerId id1;
ASSERT_TRUE(id1.is_empty());

ASSERT_NE(0, id1.parse("1.1.1.1::"));
Expand Down Expand Up @@ -59,87 +64,100 @@ TEST_F(TestUsageSuits, PeerId) {
LOG(INFO) << "id:" << id1.to_string();
LOG(INFO) << "id:" << id1;

braft::PeerId id2(id1);
PeerId id2(id1);
LOG(INFO) << "id:" << id2;

braft::PeerId id3("1.2.3.4:1000:0");
PeerId id3("1.2.3.4:1000:0");
LOG(INFO) << "id:" << id3;
}

TEST_F(TestUsageSuits, Configuration) {
braft::Configuration conf1;
Configuration conf1;
ASSERT_TRUE(conf1.empty());
std::vector<braft::PeerId> peers;
peers.push_back(braft::PeerId("1.1.1.1:1000:0"));
peers.push_back(braft::PeerId("1.1.1.1:1000:1"));
peers.push_back(braft::PeerId("1.1.1.1:1000:2"));
std::vector<PeerId> peers;
peers.push_back({"1.1.1.1:1000:0"});
peers.emplace_back("1.1.1.1:1000:0");
peers.emplace_back("1.1.1.1:1000:1");
peers.emplace_back("1.1.1.1:1000:2");
conf1 = peers;
LOG(INFO) << conf1;

ASSERT_TRUE(conf1.contains(braft::PeerId("1.1.1.1:1000:0")));
ASSERT_FALSE(conf1.contains(braft::PeerId("1.1.1.1:2000:0")));
ASSERT_TRUE(conf1.contains({"1.1.1.1:1000:0"}));
ASSERT_FALSE(conf1.contains({"1.1.1.1:2000:0"}));

std::vector<braft::PeerId> peers2;
peers2.push_back(braft::PeerId("1.1.1.1:1000:0"));
peers2.push_back(braft::PeerId("1.1.1.1:1000:1"));
std::vector<PeerId> peers2;
peers2.emplace_back("1.1.1.1:1000:0");
peers2.emplace_back("1.1.1.1:1000:1");
ASSERT_TRUE(conf1.contains(peers2));
peers2.push_back(braft::PeerId("1.1.1.1:2000:1"));
peers2.emplace_back("1.1.1.1:2000:1");
ASSERT_FALSE(conf1.contains(peers2));

ASSERT_FALSE(conf1.equals(peers2));
ASSERT_TRUE(conf1.equals(peers));

braft::Configuration conf2(peers);
conf2.remove_peer(braft::PeerId("1.1.1.1:1000:1"));
conf2.add_peer(braft::PeerId("1.1.1.1:1000:3"));
ASSERT_FALSE(conf2.contains(braft::PeerId("1.1.1.1:1000:1")));
ASSERT_TRUE(conf2.contains(braft::PeerId("1.1.1.1:1000:3")));
Configuration conf2(peers);
conf2.remove_peer({"1.1.1.1:1000:1"});
conf2.add_peer({"1.1.1.1:1000:3"});
ASSERT_FALSE(conf2.contains({"1.1.1.1:1000:1"}));
ASSERT_TRUE(conf2.contains({"1.1.1.1:1000:3"}));

std::set<braft::PeerId> peer_set;
std::set<PeerId> peer_set;
conf2.list_peers(&peer_set);
ASSERT_EQ(peer_set.size(), 3);
std::vector<braft::PeerId> peer_vector;
std::vector<PeerId> peer_vector;
conf2.list_peers(&peer_vector);
ASSERT_EQ(peer_vector.size(), 3);

Configuration conf3;
ASSERT_EQ(conf3.parse_from("1.1.1.1:1000:1,1.1.1.1:1000:2,1.1.1.1:1000:3"),
0);
std::set<PeerId> peer_set3;
conf2.list_peers(&peer_set3);
ASSERT_EQ(peer_set.size(), 3);

// invalid format.
Configuration conf4;
ASSERT_EQ(conf4.parse_from("1.1,1.1:100,1.1.1:100:3,aaabbbccc"), -1);
}

TEST_F(TestUsageSuits, ConfigurationManager) {
braft::ConfigurationManager conf_manager;
ConfigurationManager conf_manager;

braft::ConfigurationEntry it1;
ConfigurationEntry it1;
conf_manager.get(10, &it1);
ASSERT_EQ(it1.id, braft::LogId(0, 0));
ASSERT_EQ(it1.id, LogId(0, 0));
ASSERT_TRUE(it1.conf.empty());
ASSERT_EQ(braft::LogId(0, 0), conf_manager.last_configuration().id);
braft::ConfigurationEntry entry;
std::vector<braft::PeerId> peers;
peers.push_back(braft::PeerId("1.1.1.1:1000:0"));
peers.push_back(braft::PeerId("1.1.1.1:1000:1"));
peers.push_back(braft::PeerId("1.1.1.1:1000:2"));
ASSERT_EQ(LogId(0, 0), conf_manager.last_configuration().id);
ConfigurationEntry entry;
std::vector<PeerId> peers;
peers.emplace_back("1.1.1.1:1000:0");
peers.emplace_back("1.1.1.1:1000:1");
peers.emplace_back("1.1.1.1:1000:2");
entry.conf = peers;
entry.id = braft::LogId(8, 1);
entry.id = {8, 1};
conf_manager.add(entry);
ASSERT_EQ(braft::LogId(8, 1), conf_manager.last_configuration().id);
ASSERT_EQ(LogId(8, 1), conf_manager.last_configuration().id);

conf_manager.get(10, &it1);
ASSERT_EQ(it1.id, entry.id);

conf_manager.truncate_suffix(7);
ASSERT_EQ(braft::LogId(0, 0), conf_manager.last_configuration().id);
ASSERT_EQ(LogId(0, 0), conf_manager.last_configuration().id);

entry.id = braft::LogId(10, 1);
entry.id = LogId(10, 1);
entry.conf = peers;
conf_manager.add(entry);
peers.push_back(braft::PeerId("1.1.1.1:1000:3"));
entry.id = braft::LogId(20, 1);
peers.emplace_back("1.1.1.1:1000:3");
entry.id = LogId(20, 1);
entry.conf = peers;
conf_manager.add(entry);
ASSERT_EQ(braft::LogId(20, 1), conf_manager.last_configuration().id);
ASSERT_EQ(LogId(20, 1), conf_manager.last_configuration().id);

conf_manager.truncate_prefix(15);
ASSERT_EQ(braft::LogId(20, 1), conf_manager.last_configuration().id);
ASSERT_EQ(LogId(20, 1), conf_manager.last_configuration().id);

conf_manager.truncate_prefix(25);
ASSERT_EQ(braft::LogId(0, 0), conf_manager.last_configuration().id);

ASSERT_EQ(LogId(0, 0), conf_manager.last_configuration().id);
}
} // namespace test
} // namespace braft

0 comments on commit 08c107e

Please sign in to comment.