Browse Source

client: add Node.TTLDuration()

Brian Waldon 10 years ago
parent
commit
ee9e336fd4
2 changed files with 28 additions and 0 deletions
  1. 5 0
      client/keys.go
  2. 23 0
      client/keys_test.go

+ 5 - 0
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

+ 23 - 0
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)
+		}
+	}
+}