diff --git a/tests/framework/e2e/etcdctl.go b/tests/framework/e2e/etcdctl.go index aa315ddf0..546c9c305 100644 --- a/tests/framework/e2e/etcdctl.go +++ b/tests/framework/e2e/etcdctl.go @@ -327,3 +327,19 @@ func (ctl *EtcdctlV3) LeaseKeepAliveOnce(id clientv3.LeaseID) (*clientv3.LeaseKe err = json.Unmarshal([]byte(line), &resp) return &resp, err } + +func (ctl *EtcdctlV3) LeaseRevoke(id clientv3.LeaseID) (*clientv3.LeaseRevokeResponse, error) { + args := ctl.cmdArgs() + args = append(args, "lease", "revoke", strconv.FormatInt(int64(id), 16), "-w", "json") + cmd, err := SpawnCmd(args, nil) + if err != nil { + return nil, err + } + var resp clientv3.LeaseRevokeResponse + line, err := cmd.Expect("header") + if err != nil { + return nil, err + } + err = json.Unmarshal([]byte(line), &resp) + return &resp, err +} diff --git a/tests/framework/integration.go b/tests/framework/integration.go index e5c8c01a4..28bb41422 100644 --- a/tests/framework/integration.go +++ b/tests/framework/integration.go @@ -244,3 +244,9 @@ func (c integrationClient) LeaseKeepAliveOnce(id clientv3.LeaseID) (*clientv3.Le return c.Client.KeepAliveOnce(ctx, id) } + +func (c integrationClient) LeaseRevoke(id clientv3.LeaseID) (*clientv3.LeaseRevokeResponse, error) { + ctx := context.Background() + + return c.Client.Revoke(ctx, id) +} diff --git a/tests/framework/interface.go b/tests/framework/interface.go index ca7fb18de..cde4c8a3a 100644 --- a/tests/framework/interface.go +++ b/tests/framework/interface.go @@ -45,4 +45,5 @@ type Client interface { TimeToLive(id clientv3.LeaseID, opts config.LeaseOption) (*clientv3.LeaseTimeToLiveResponse, error) LeaseList() (*clientv3.LeaseLeasesResponse, error) LeaseKeepAliveOnce(id clientv3.LeaseID) (*clientv3.LeaseKeepAliveResponse, error) + LeaseRevoke(id clientv3.LeaseID) (*clientv3.LeaseRevokeResponse, error) }