MCPcopy
hub / github.com/etcd-io/etcd / TestV3LeaseRecoverKeyWithDetachedLease

Function TestV3LeaseRecoverKeyWithDetachedLease

tests/integration/v3_lease_test.go:852–892  ·  view source on GitHub ↗

TestV3LeaseRecoverKeyWithDetachedLease ensures that revoking a detached lease after restart does not delete the key.

(t *testing.T)

Source from the content-addressed store, hash-verified

850// TestV3LeaseRecoverKeyWithDetachedLease ensures that revoking a detached lease after restart
851// does not delete the key.
852func TestV3LeaseRecoverKeyWithDetachedLease(t *testing.T) {
853 integration.BeforeTest(t)
854
855 clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 1, UseBridge: true})
856 defer clus.Terminate(t)
857
858 kvc := integration.ToGRPC(clus.Client(0)).KV
859 lsc := integration.ToGRPC(clus.Client(0)).Lease
860
861 lresp, err := lsc.LeaseGrant(context.TODO(), &pb.LeaseGrantRequest{TTL: fiveMinTTL})
862 require.NoError(t, err)
863 require.Empty(t, lresp.Error)
864 _, err = kvc.Put(context.TODO(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar"), Lease: lresp.ID})
865 require.NoError(t, err)
866
867 // overwrite lease with none
868 _, err = kvc.Put(context.TODO(), &pb.PutRequest{Key: []byte("foo"), Value: []byte("bar")})
869 require.NoError(t, err)
870
871 // restart server and ensure lease still exists
872 clus.Members[0].Stop(t)
873 clus.Members[0].Restart(t)
874 clus.WaitMembersForLeader(t, clus.Members)
875
876 // overwrite old client with newly dialed connection
877 // otherwise, error with "grpc: RPC failed fast due to transport failure"
878 nc, err := integration.NewClientV3(clus.Members[0])
879 require.NoError(t, err)
880 kvc = integration.ToGRPC(nc).KV
881 lsc = integration.ToGRPC(nc).Lease
882 defer nc.Close()
883
884 // revoke the detached lease
885 _, err = lsc.LeaseRevoke(context.TODO(), &pb.LeaseRevokeRequest{ID: lresp.ID})
886 require.NoError(t, err)
887 rresp, err := kvc.Range(context.TODO(), &pb.RangeRequest{Key: []byte("foo")})
888 require.NoError(t, err)
889 if len(rresp.Kvs) != 1 {
890 t.Fatalf("only detached lease removed, key should remain")
891 }
892}
893
894func TestV3LeaseRecoverKeyWithMutipleLease(t *testing.T) {
895 integration.BeforeTest(t)

Callers

nothing calls this directly

Calls 15

TerminateMethod · 0.95
ClientMethod · 0.95
WaitMembersForLeaderMethod · 0.95
NewClientV3Method · 0.80
BeforeTestMethod · 0.65
NewClusterMethod · 0.65
LeaseGrantMethod · 0.65
PutMethod · 0.65
StopMethod · 0.65
RestartMethod · 0.65
CloseMethod · 0.65
LeaseRevokeMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…