Merge pull request #14795 from falser101/fix/log_unstable
Fixed https://github.com/etcd-io/etcd/issues/14709
This commit is contained in:
@ -15,9 +15,10 @@
|
|||||||
package raft
|
package raft
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
pb "go.etcd.io/etcd/raft/v3/raftpb"
|
pb "go.etcd.io/etcd/raft/v3/raftpb"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -51,19 +52,18 @@ func TestUnstableMaybeFirstIndex(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for i, tt := range tests {
|
for i, tt := range tests {
|
||||||
u := unstable{
|
tt := tt
|
||||||
entries: tt.entries,
|
t.Run(fmt.Sprint(i), func(t *testing.T) {
|
||||||
offset: tt.offset,
|
u := unstable{
|
||||||
snapshot: tt.snap,
|
entries: tt.entries,
|
||||||
logger: raftLogger,
|
offset: tt.offset,
|
||||||
}
|
snapshot: tt.snap,
|
||||||
index, ok := u.maybeFirstIndex()
|
logger: raftLogger,
|
||||||
if ok != tt.wok {
|
}
|
||||||
t.Errorf("#%d: ok = %t, want %t", i, ok, tt.wok)
|
index, ok := u.maybeFirstIndex()
|
||||||
}
|
require.Equal(t, tt.wok, ok)
|
||||||
if index != tt.windex {
|
require.Equal(t, tt.windex, index)
|
||||||
t.Errorf("#%d: index = %d, want %d", i, index, tt.windex)
|
})
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,19 +98,18 @@ func TestMaybeLastIndex(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for i, tt := range tests {
|
for i, tt := range tests {
|
||||||
u := unstable{
|
tt := tt
|
||||||
entries: tt.entries,
|
t.Run(fmt.Sprint(i), func(t *testing.T) {
|
||||||
offset: tt.offset,
|
u := unstable{
|
||||||
snapshot: tt.snap,
|
entries: tt.entries,
|
||||||
logger: raftLogger,
|
offset: tt.offset,
|
||||||
}
|
snapshot: tt.snap,
|
||||||
index, ok := u.maybeLastIndex()
|
logger: raftLogger,
|
||||||
if ok != tt.wok {
|
}
|
||||||
t.Errorf("#%d: ok = %t, want %t", i, ok, tt.wok)
|
index, ok := u.maybeLastIndex()
|
||||||
}
|
require.Equal(t, tt.wok, ok)
|
||||||
if index != tt.windex {
|
require.Equal(t, tt.windex, index)
|
||||||
t.Errorf("#%d: index = %d, want %d", i, index, tt.windex)
|
})
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -179,19 +178,18 @@ func TestUnstableMaybeTerm(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for i, tt := range tests {
|
for i, tt := range tests {
|
||||||
u := unstable{
|
tt := tt
|
||||||
entries: tt.entries,
|
t.Run(fmt.Sprint(i), func(t *testing.T) {
|
||||||
offset: tt.offset,
|
u := unstable{
|
||||||
snapshot: tt.snap,
|
entries: tt.entries,
|
||||||
logger: raftLogger,
|
offset: tt.offset,
|
||||||
}
|
snapshot: tt.snap,
|
||||||
term, ok := u.maybeTerm(tt.index)
|
logger: raftLogger,
|
||||||
if ok != tt.wok {
|
}
|
||||||
t.Errorf("#%d: ok = %t, want %t", i, ok, tt.wok)
|
term, ok := u.maybeTerm(tt.index)
|
||||||
}
|
require.Equal(t, tt.wok, ok)
|
||||||
if term != tt.wterm {
|
require.Equal(t, tt.wterm, term)
|
||||||
t.Errorf("#%d: term = %d, want %d", i, term, tt.wterm)
|
})
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,15 +203,9 @@ func TestUnstableRestore(t *testing.T) {
|
|||||||
s := pb.Snapshot{Metadata: pb.SnapshotMetadata{Index: 6, Term: 2}}
|
s := pb.Snapshot{Metadata: pb.SnapshotMetadata{Index: 6, Term: 2}}
|
||||||
u.restore(s)
|
u.restore(s)
|
||||||
|
|
||||||
if u.offset != s.Metadata.Index+1 {
|
require.Equal(t, s.Metadata.Index+1, u.offset)
|
||||||
t.Errorf("offset = %d, want %d", u.offset, s.Metadata.Index+1)
|
require.Zero(t, len(u.entries))
|
||||||
}
|
require.Equal(t, &s, u.snapshot)
|
||||||
if len(u.entries) != 0 {
|
|
||||||
t.Errorf("len = %d, want 0", len(u.entries))
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(u.snapshot, &s) {
|
|
||||||
t.Errorf("snap = %v, want %v", u.snapshot, &s)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUnstableStableTo(t *testing.T) {
|
func TestUnstableStableTo(t *testing.T) {
|
||||||
@ -285,19 +277,18 @@ func TestUnstableStableTo(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for i, tt := range tests {
|
for i, tt := range tests {
|
||||||
u := unstable{
|
tt := tt
|
||||||
entries: tt.entries,
|
t.Run(fmt.Sprint(i), func(t *testing.T) {
|
||||||
offset: tt.offset,
|
u := unstable{
|
||||||
snapshot: tt.snap,
|
entries: tt.entries,
|
||||||
logger: raftLogger,
|
offset: tt.offset,
|
||||||
}
|
snapshot: tt.snap,
|
||||||
u.stableTo(tt.index, tt.term)
|
logger: raftLogger,
|
||||||
if u.offset != tt.woffset {
|
}
|
||||||
t.Errorf("#%d: offset = %d, want %d", i, u.offset, tt.woffset)
|
u.stableTo(tt.index, tt.term)
|
||||||
}
|
require.Equal(t, tt.woffset, u.offset)
|
||||||
if len(u.entries) != tt.wlen {
|
require.Equal(t, tt.wlen, len(u.entries))
|
||||||
t.Errorf("#%d: len = %d, want %d", i, len(u.entries), tt.wlen)
|
})
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -342,18 +333,17 @@ func TestUnstableTruncateAndAppend(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for i, tt := range tests {
|
for i, tt := range tests {
|
||||||
u := unstable{
|
tt := tt
|
||||||
entries: tt.entries,
|
t.Run(fmt.Sprint(i), func(t *testing.T) {
|
||||||
offset: tt.offset,
|
u := unstable{
|
||||||
snapshot: tt.snap,
|
entries: tt.entries,
|
||||||
logger: raftLogger,
|
offset: tt.offset,
|
||||||
}
|
snapshot: tt.snap,
|
||||||
u.truncateAndAppend(tt.toappend)
|
logger: raftLogger,
|
||||||
if u.offset != tt.woffset {
|
}
|
||||||
t.Errorf("#%d: offset = %d, want %d", i, u.offset, tt.woffset)
|
u.truncateAndAppend(tt.toappend)
|
||||||
}
|
require.Equal(t, tt.woffset, u.offset)
|
||||||
if !reflect.DeepEqual(u.entries, tt.wentries) {
|
require.Equal(t, tt.wentries, u.entries)
|
||||||
t.Errorf("#%d: entries = %v, want %v", i, u.entries, tt.wentries)
|
})
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user