Normalize hashicorp raft peer ids (#8253)
* Normalize raft voter ids * 4.11 * Update raft_hashicorp.go
This commit is contained in:
87
weed/server/raft_hashicorp_test.go
Normal file
87
weed/server/raft_hashicorp_test.go
Normal file
@@ -0,0 +1,87 @@
|
||||
package weed_server
|
||||
|
||||
import (
|
||||
"sort"
|
||||
"testing"
|
||||
|
||||
"github.com/hashicorp/raft"
|
||||
"github.com/seaweedfs/seaweedfs/weed/pb"
|
||||
)
|
||||
|
||||
func TestRaftServerID(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
addr pb.ServerAddress
|
||||
want string
|
||||
}{
|
||||
{
|
||||
name: "without grpc suffix",
|
||||
addr: pb.ServerAddress("master-0:9333"),
|
||||
want: "master-0:9333",
|
||||
},
|
||||
{
|
||||
name: "with grpc suffix",
|
||||
addr: pb.NewServerAddress("master-0", 9333, 19333),
|
||||
want: "master-0:9333",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
if got := raftServerID(tt.addr); got != tt.want {
|
||||
t.Fatalf("raftServerID(%q) = %q, want %q", tt.addr, got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetPeerIdxUsesCanonicalID(t *testing.T) {
|
||||
peers := map[string]pb.ServerAddress{
|
||||
"master-0:9333": pb.ServerAddress("master-0:9333"),
|
||||
"master-1:9333": pb.ServerAddress("master-1:9333"),
|
||||
"master-2:9333": pb.ServerAddress("master-2:9333"),
|
||||
}
|
||||
self := pb.NewServerAddress("master-2", 9333, 19333)
|
||||
|
||||
if got := getPeerIdx(self, peers); got != 2 {
|
||||
t.Fatalf("getPeerIdx(%q) = %d, want 2", self, got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAddPeersConfigurationUsesCanonicalIDs(t *testing.T) {
|
||||
rs := &RaftServer{
|
||||
peers: map[string]pb.ServerAddress{
|
||||
"master-0:9333": pb.ServerAddress("master-0:9333"),
|
||||
"master-1:9333": pb.ServerAddress("master-1:9333"),
|
||||
"master-2:9333": pb.ServerAddress("master-2:9333"),
|
||||
},
|
||||
}
|
||||
|
||||
cfg := rs.AddPeersConfiguration()
|
||||
if len(cfg.Servers) != 3 {
|
||||
t.Fatalf("len(cfg.Servers) = %d, want 3", len(cfg.Servers))
|
||||
}
|
||||
|
||||
var ids []string
|
||||
var addrs []string
|
||||
for _, s := range cfg.Servers {
|
||||
if s.Suffrage != raft.Voter {
|
||||
t.Fatalf("server %q has suffrage %q, want %q", s.ID, s.Suffrage, raft.Voter)
|
||||
}
|
||||
ids = append(ids, string(s.ID))
|
||||
addrs = append(addrs, string(s.Address))
|
||||
}
|
||||
sort.Strings(ids)
|
||||
sort.Strings(addrs)
|
||||
|
||||
wantIDs := []string{"master-0:9333", "master-1:9333", "master-2:9333"}
|
||||
wantAddrs := []string{"master-0:19333", "master-1:19333", "master-2:19333"}
|
||||
for i := range wantIDs {
|
||||
if ids[i] != wantIDs[i] {
|
||||
t.Fatalf("ids[%d] = %q, want %q", i, ids[i], wantIDs[i])
|
||||
}
|
||||
if addrs[i] != wantAddrs[i] {
|
||||
t.Fatalf("addrs[%d] = %q, want %q", i, addrs[i], wantAddrs[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user