liuxiaolong
2020-05-13 e99db8571c51d5203e847b374bd8bd6210803485
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package syncdb
 
import (
    "context"
    "fmt"
    "github.com/hashicorp/serf/serf"
    "testing"
    "time"
)
 
func TestAgent(t *testing.T) {
    conf := DefaultConfig()
    conf.ClusterID = "testCluster"
    conf.NodeName = "testnode"
    agent, err := Create(conf, "")
    if err != nil {
        t.Errorf("create agent failed, error: %s", err)
    }
 
    fmt.Println("LocalMember1:", agent.LocalMember())
 
    agent.Start(context.Background())
    //<- agent.readyCh
    go func() {
        agent.ShutdownCh()
    }()
    time.Sleep(time.Second)
 
    fmt.Println("LocalMember2:", agent.LocalMember())
 
    fmt.Println("ClusterID:", agent.conf.ClusterID)
    fmt.Println("NodeName:", agent.conf.NodeName)
 
    err = agent.UserEvent("test", []byte("test"), true)
    if err != nil {
        t.Errorf("send user event failed, error: %s", err)
    }
 
    _, err = agent.Query("test", []byte("test"), &serf.QueryParam{})
    if err != nil {
        t.Errorf("query for other node failed, error: %s", err)
    }
    fmt.Println("LocalMember:", agent.LocalMember())
    //agent.LocalMember()
 
    mb := agent.Member("testnode")
    fmt.Println("mb:", mb)
 
    agent.SerfConfig()
 
    _, err = agent.Join([]string{"192.168.1.123:5000"}, true)
    if err != nil {
        t.Logf("join to other node failed, error: %s", err)
    }
 
    err = agent.Leave()
    if err != nil {
        t.Errorf("angent leave failed, error: %s", err)
    }
 
    err = agent.ForceLeave("testnode")
    if err != nil {
        t.Errorf("angent force leave failed, error: %s", err)
    }
 
    err = agent.Shutdown()
    if err != nil {
        t.Errorf("angent shutdown failed, error: %s", err)
    }
}