mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Merge branch 'add-expire-dir-test' of https://github.com/philips/etcd into fix_expire_notify
This commit is contained in:
commit
44b08fea62
@ -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", "")
|
||||
})
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user