diff --git a/client/keys.go b/client/keys.go index 83644e475..1ac2e9fc8 100644 --- a/client/keys.go +++ b/client/keys.go @@ -274,6 +274,11 @@ func (n *Node) String() string { return fmt.Sprintf("{Key: %s, CreatedIndex: %d, ModifiedIndex: %d, TTL: %d}", n.Key, n.CreatedIndex, n.ModifiedIndex, n.TTL) } +// TTLDuration returns the Node's TTL as a time.Duration object +func (n *Node) TTLDuration() time.Duration { + return time.Duration(n.TTL) * time.Second +} + type httpKeysAPI struct { client httpClient prefix string diff --git a/client/keys_test.go b/client/keys_test.go index 39beb1e4a..56070d528 100644 --- a/client/keys_test.go +++ b/client/keys_test.go @@ -1313,3 +1313,26 @@ func TestHTTPKeysAPIUpdateAction(t *testing.T) { kAPI := httpKeysAPI{client: &actionAssertingHTTPClient{t: t, act: act}} kAPI.Update(context.Background(), "/foo", "bar") } + +func TestNodeTTLDuration(t *testing.T) { + tests := []struct { + node *Node + want time.Duration + }{ + { + node: &Node{TTL: 0}, + want: 0, + }, + { + node: &Node{TTL: 97}, + want: 97 * time.Second, + }, + } + + for i, tt := range tests { + got := tt.node.TTLDuration() + if tt.want != got { + t.Errorf("#%d: incorrect duration: want=%v got=%v", i, tt.want, got) + } + } +}