本文整理汇总了Golang中github.com/docker/libkv/store.Store.WatchTree方法的典型用法代码示例。如果您正苦于以下问题:Golang Store.WatchTree方法的具体用法?Golang Store.WatchTree怎么用?Golang Store.WatchTree使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/docker/libkv/store.Store
的用法示例。
在下文中一共展示了Store.WatchTree方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: testWatchTree
func testWatchTree(t *testing.T, kv store.Store) {
dir := "testWatchTree"
node1 := "testWatchTree/node1"
value1 := []byte("node1")
node2 := "testWatchTree/node2"
value2 := []byte("node2")
node3 := "testWatchTree/node3"
value3 := []byte("node3")
err := kv.Put(node1, value1, nil)
assert.NoError(t, err)
err = kv.Put(node2, value2, nil)
assert.NoError(t, err)
err = kv.Put(node3, value3, nil)
assert.NoError(t, err)
stopCh := make(<-chan struct{})
events, err := kv.WatchTree(dir, stopCh)
assert.NoError(t, err)
assert.NotNil(t, events)
// Update loop
go func() {
timeout := time.After(500 * time.Millisecond)
for {
select {
case <-timeout:
err := kv.Delete(node3)
assert.NoError(t, err)
return
}
}
}()
// Check for updates
eventCount := 1
for {
select {
case event := <-events:
assert.NotNil(t, event)
// We received the Delete event on a child node
// Exit test successfully
if eventCount == 2 {
return
}
eventCount++
case <-time.After(4 * time.Second):
t.Fatal("Timeout reached")
return
}
}
}