mirror of https://github.com/status-im/consul.git
Adds missing autopilot snapshot test and avoids snapshotting nil. (#3333)
This commit is contained in:
parent
9810c18591
commit
10b660d77a
|
@ -691,6 +691,9 @@ func (s *consulSnapshot) persistAutopilot(sink raft.SnapshotSink,
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if autopilot == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
sink.Write([]byte{byte(structs.AutopilotRequestType)})
|
sink.Write([]byte{byte(structs.AutopilotRequestType)})
|
||||||
if err := encoder.Encode(autopilot); err != nil {
|
if err := encoder.Encode(autopilot); err != nil {
|
||||||
|
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/hashicorp/consul/agent/consul/structs"
|
"github.com/hashicorp/consul/agent/consul/structs"
|
||||||
|
"github.com/pascaldekloe/goe/verify"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestStateStore_Autopilot(t *testing.T) {
|
func TestStateStore_Autopilot(t *testing.T) {
|
||||||
|
@ -92,3 +93,45 @@ func TestStateStore_AutopilotCAS(t *testing.T) {
|
||||||
t.Fatalf("bad: %#v", config)
|
t.Fatalf("bad: %#v", config)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestStateStore_Autopilot_Snapshot_Restore(t *testing.T) {
|
||||||
|
s := testStateStore(t)
|
||||||
|
before := &structs.AutopilotConfig{
|
||||||
|
CleanupDeadServers: true,
|
||||||
|
}
|
||||||
|
if err := s.AutopilotSetConfig(99, before); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
snap := s.Snapshot()
|
||||||
|
defer snap.Close()
|
||||||
|
|
||||||
|
after := &structs.AutopilotConfig{
|
||||||
|
CleanupDeadServers: false,
|
||||||
|
}
|
||||||
|
if err := s.AutopilotSetConfig(100, after); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
snapped, err := snap.Autopilot()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("err: %s", err)
|
||||||
|
}
|
||||||
|
verify.Values(t, "", before, snapped)
|
||||||
|
|
||||||
|
s2 := testStateStore(t)
|
||||||
|
restore := s2.Restore()
|
||||||
|
if err := restore.Autopilot(snapped); err != nil {
|
||||||
|
t.Fatalf("err: %s", err)
|
||||||
|
}
|
||||||
|
restore.Commit()
|
||||||
|
|
||||||
|
idx, res, err := s2.AutopilotConfig()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("err: %s", err)
|
||||||
|
}
|
||||||
|
if idx != 99 {
|
||||||
|
t.Fatalf("bad index: %d", idx)
|
||||||
|
}
|
||||||
|
verify.Values(t, "", before, res)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue