integration: add 'TestTransferLeader/Stop'

This commit is contained in:
Gyu-Ho Lee
2016-08-13 12:41:10 -07:00
parent 64a0e34602
commit a205242ca5
2 changed files with 44 additions and 1 deletions

View File

@ -26,6 +26,7 @@ import (
"github.com/coreos/etcd/client"
"github.com/coreos/etcd/etcdserver"
"github.com/coreos/etcd/etcdserver/etcdserverpb"
"github.com/coreos/etcd/pkg/testutil"
"golang.org/x/net/context"
@ -462,3 +463,36 @@ func clusterMustProgress(t *testing.T, membs []*member) {
mcancel()
}
}
func TestTransferLeader(t *testing.T) {
defer testutil.AfterTest(t)
clus := NewClusterV3(t, &ClusterConfig{Size: 3})
defer clus.Terminate(t)
leaderIdx := clus.WaitLeader(t)
err := clus.Members[leaderIdx].s.TransferLeadership()
if err != nil {
t.Fatal(err)
}
}
func TestTransferLeaderStopTrigger(t *testing.T) {
defer testutil.AfterTest(t)
clus := NewClusterV3(t, &ClusterConfig{Size: 3})
defer clus.Terminate(t)
oldLeadIdx := clus.WaitLeader(t)
clus.Members[oldLeadIdx].StopWithAutoLeaderTransfer(t)
// issue put to one of the other member
kvc := toGRPC(clus.Client((oldLeadIdx + 1) % 3)).KV
sctx, scancel := context.WithTimeout(context.TODO(), clus.Members[oldLeadIdx].electionTimeout())
_, err := kvc.Range(sctx, &etcdserverpb.RangeRequest{Key: []byte("foo")})
scancel()
if err != nil {
t.Fatal(err)
}
}