Browse Source

fix(server): try and add a expire dir test

This doesn't actually work yet.
Brandon Philips 12 years ago
parent
commit
74bd0d95b8
1 changed files with 46 additions and 0 deletions
  1. 46 0
      server/v2/tests/get_handler_test.go

+ 46 - 0
server/v2/tests/get_handler_test.go

@@ -173,3 +173,49 @@ func TestV2WatchKeyWithIndex(t *testing.T) {
 		assert.Equal(t, node["modifiedIndex"], 3, "")
 	})
 }
+
+// Ensures that a watcher can wait for a value to be set after a given index.
+//
+//   $ curl localhost:4001/v2/keys/keyindir/bar?wait=true
+//   $ curl -X PUT localhost:4001/v2/keys/keyindir -d dir=true -d ttl=1
+//   $ curl -X PUT localhost:4001/v2/keys/keyindir/bar -d value=YYY
+//
+func TestV2WatchKeyInDir(t *testing.T) {
+	tests.RunServer(func(s *server.Server) {
+		var body map[string]interface{}
+		c := make(chan bool)
+
+		// Set a value (before given index).
+		v := url.Values{}
+		v.Set("dir", "true")
+		v.Set("ttl", "1")
+		resp, _ := tests.PutForm(fmt.Sprintf("%s%s", s.URL(), "/v2/keys/keyindir"), v)
+		tests.ReadBody(resp)
+
+		// Set a value (before given index).
+		v = url.Values{}
+		v.Set("value", "XXX")
+		resp, _ = tests.PutForm(fmt.Sprintf("%s%s", s.URL(), "/v2/keys/keyindir/bar"), v)
+		tests.ReadBody(resp)
+
+		go func() {
+			resp, _ := tests.Get(fmt.Sprintf("%s%s", s.URL(), "/v2/keys/keyindir/bar?wait=true"))
+			body = tests.ReadBodyJSON(resp)
+			c <- true
+		}()
+
+		select {
+		case <-c:
+
+		default:
+			t.Fatal("cannot get watch result")
+		}
+
+		assert.NotNil(t, body, "")
+		assert.Equal(t, body["action"], "expire", "")
+
+		node := body["node"].(map[string]interface{})
+		assert.Equal(t, node["key"], "/keyindir/bar", "")
+		assert.Equal(t, node["value"], "XXX", "")
+	})
+}