Skip to content

Commit

Permalink
Merge pull request etcd-io#18451 from ahrtr/lease_5members_20240816_3.5
Browse files Browse the repository at this point in the history
[3.5] test: extend leaseRevoke and leaseRenew test to support 5 members cluster
  • Loading branch information
ahrtr committed Aug 16, 2024
2 parents 1c62564 + 64ec42d commit 1f24635
Showing 1 changed file with 16 additions and 6 deletions.
22 changes: 16 additions & 6 deletions tests/e2e/v3_lease_no_proxy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,24 +32,34 @@ import (
// by old leader.
// See the case 1 in https://github.com/etcd-io/etcd/issues/15247#issuecomment-1777862093.
func TestLeaseRevoke_IgnoreOldLeader(t *testing.T) {
testLeaseRevokeIssue(t, true)
t.Run("3 members", func(t *testing.T) {
testLeaseRevokeIssue(t, 3, true)
})
t.Run("5 members", func(t *testing.T) {
testLeaseRevokeIssue(t, 5, true)
})
}

// TestLeaseRevoke_ClientSwitchToOtherMember verifies that leases shouldn't
// be revoked by new leader.
// See the case 2 in https://github.com/etcd-io/etcd/issues/15247#issuecomment-1777862093.
func TestLeaseRevoke_ClientSwitchToOtherMember(t *testing.T) {
testLeaseRevokeIssue(t, false)
t.Run("3 members", func(t *testing.T) {
testLeaseRevokeIssue(t, 3, false)
})
t.Run("5 members", func(t *testing.T) {
testLeaseRevokeIssue(t, 5, false)
})
}

func testLeaseRevokeIssue(t *testing.T, connectToOneFollower bool) {
func testLeaseRevokeIssue(t *testing.T, clusterSize int, connectToOneFollower bool) {
e2e.BeforeTest(t)

ctx := context.Background()

t.Log("Starting a new etcd cluster")
epc, err := e2e.NewEtcdProcessCluster(t, &e2e.EtcdProcessClusterConfig{
ClusterSize: 3,
ClusterSize: clusterSize,
GoFailEnabled: true,
GoFailClientTimeout: 40 * time.Second,
})
Expand All @@ -63,15 +73,15 @@ func testLeaseRevokeIssue(t *testing.T, connectToOneFollower bool) {
leaderIdx := epc.WaitLeader(t)
t.Logf("Leader index: %d", leaderIdx)

epsForNormalOperations := epc.Procs[(leaderIdx+2)%3].EndpointsGRPC()
epsForNormalOperations := epc.Procs[(leaderIdx+2)%clusterSize].EndpointsGRPC()
t.Logf("Creating a client for normal operations: %v", epsForNormalOperations)
client, err := clientv3.New(clientv3.Config{Endpoints: epsForNormalOperations, DialTimeout: 3 * time.Second})
require.NoError(t, err)
defer client.Close()

var epsForLeaseKeepAlive []string
if connectToOneFollower {
epsForLeaseKeepAlive = epc.Procs[(leaderIdx+1)%3].EndpointsGRPC()
epsForLeaseKeepAlive = epc.Procs[(leaderIdx+1)%clusterSize].EndpointsGRPC()
} else {
epsForLeaseKeepAlive = epc.EndpointsGRPC()
}
Expand Down

0 comments on commit 1f24635

Please sign in to comment.