Merge pull request #14795 from falser101/fix/log_unstable

Fixed https://github.com/etcd-io/etcd/issues/14709
This commit is contained in:
Tobias Grieger
2022-11-21 20:57:05 +01:00
committed by GitHub

View File

@ -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) })
}
} }
} }