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  }