github.com/sereiner/library@v0.0.0-20200518095232-1fa3e640cc5f/zk/zookeeper.watch_test.go (about) 1 package zk 2 3 import ( 4 "fmt" 5 "strings" 6 "testing" 7 "time" 8 9 "github.com/sereiner/library/utility" 10 ) 11 12 // TestWatchChildren 获取节点值检查是否符合预期 13 func TestWatchValueChange(t *testing.T) { 14 15 zk, err := New(masterAddress, time.Second) 16 expect(t, err, nil) 17 err = zk.Connect() 18 expect(t, err, nil) 19 20 //创建临时节点 21 path1 := fmt.Sprintf("/t%s", utility.GetGUID()) 22 err = zk.CreateTempNode(path1, "data") 23 expect(t, err, nil) 24 25 //获取节点值,检查是否正确 26 buf, _, err := zk.GetValue(path1) 27 expect(t, err, nil) 28 expect(t, string(buf), "data") 29 30 valueCh, err := zk.WatchValue(path1) 31 expect(t, err, nil) 32 33 //更新节点值 34 value2 := utility.GetGUID() 35 err = zk.Update(path1, value2) 36 expect(t, err, nil) 37 38 buf, _, err = zk.GetValue(path1) 39 expect(t, err, nil) 40 expect(t, string(buf), value2) 41 42 //获取节点值,检查是否正确 43 select { 44 case <-time.After(TIMEOUT * 2): 45 t.Error("获取节点值超时") 46 case v := <-valueCh: 47 expect(t, v.GetError(), nil) 48 value, _ := v.GetValue() 49 expect(t, string(value), value2) 50 } 51 zk.Close() 52 } 53 54 // TestWatchChildren 获取节点值检查是否符合预期 55 func TestWatchChildren(t *testing.T) { 56 zk, err := New(masterAddress, time.Second) 57 expect(t, err, nil) 58 err = zk.Connect() 59 expect(t, err, nil) 60 61 //创建父节点 62 root := fmt.Sprintf("/%s", utility.GetGUID()) 63 err = zk.CreatePersistentNode(root, "data") 64 expect(t, err, nil) 65 66 valueCh, err := zk.WatchChildren(root) 67 expect(t, err, nil) 68 69 child := utility.GetGUID() 70 err = zk.CreateTempNode(fmt.Sprintf("%s/%s", root, child), "") 71 expect(t, err, nil) 72 73 //获取节点值,检查是否正确 74 select { 75 case <-time.After(TIMEOUT * 2): 76 t.Error("获取节点值超时") 77 case v := <-valueCh: 78 expect(t, v.GetError(), nil) 79 values, _ := v.GetValue() 80 expect(t, strings.Join(values, ","), child) 81 } 82 83 zk.Close() 84 85 }