mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
integration: test Observe can read leaders set prior to compaction
This commit is contained in:
parent
c49a87bd04
commit
6486be673b
@ -272,3 +272,39 @@ func TestElectionOnSessionRestart(t *testing.T) {
|
||||
t.Errorf("expected value=%q, got response %v", "def", resp)
|
||||
}
|
||||
}
|
||||
|
||||
// TestElectionObserveCompacted checks that observe can tolerate
|
||||
// a leader key with a modrev less than the compaction revision.
|
||||
func TestElectionObserveCompacted(t *testing.T) {
|
||||
clus := NewClusterV3(t, &ClusterConfig{Size: 1})
|
||||
defer clus.Terminate(t)
|
||||
|
||||
cli := clus.Client(0)
|
||||
|
||||
session, err := concurrency.NewSession(cli)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer session.Orphan()
|
||||
|
||||
e := concurrency.NewElection(session, "test-elect")
|
||||
if cerr := e.Campaign(context.TODO(), "abc"); cerr != nil {
|
||||
t.Fatal(cerr)
|
||||
}
|
||||
|
||||
presp, perr := cli.Put(context.TODO(), "foo", "bar")
|
||||
if perr != nil {
|
||||
t.Fatal(perr)
|
||||
}
|
||||
if _, cerr := cli.Compact(context.TODO(), presp.Header.Revision); cerr != nil {
|
||||
t.Fatal(cerr)
|
||||
}
|
||||
|
||||
v, ok := <-e.Observe(context.TODO())
|
||||
if !ok {
|
||||
t.Fatal("failed to observe on compacted revision")
|
||||
}
|
||||
if string(v.Kvs[0].Value) != "abc" {
|
||||
t.Fatalf(`expected leader value "abc", got %q`, string(v.Kvs[0].Value))
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user