本文整理汇总了Golang中github.com/hashicorp/serf/client.Close函数的典型用法代码示例。如果您正苦于以下问题:Golang Close函数的具体用法?Golang Close怎么用?Golang Close使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Close函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestRPCClientJoin
func TestRPCClientJoin(t *testing.T) {
client, a1, ipc := testRPCClient(t)
a2 := testAgent(nil)
defer ipc.Shutdown()
defer client.Close()
defer a1.Shutdown()
defer a2.Shutdown()
if err := a1.Start(); err != nil {
t.Fatalf("err: %s", err)
}
if err := a2.Start(); err != nil {
t.Fatalf("err: %s", err)
}
testutil.Yield()
n, err := client.Join([]string{a2.conf.MemberlistConfig.BindAddr}, false)
if err != nil {
t.Fatalf("err: %s", err)
}
if n != 1 {
t.Fatalf("n != 1: %d", n)
}
}
示例2: TestRPCClientGetCoordinate
func TestRPCClientGetCoordinate(t *testing.T) {
client, a1, ipc := testRPCClient(t)
defer ipc.Shutdown()
defer client.Close()
defer a1.Shutdown()
if err := a1.Start(); err != nil {
t.Fatalf("err: %s", err)
}
testutil.Yield()
coord, err := client.GetCoordinate(a1.conf.NodeName)
if err != nil {
t.Fatalf("err: %v", err)
}
if coord == nil {
t.Fatalf("should have gotten a coordinate")
}
coord, err = client.GetCoordinate("nope")
if err != nil {
t.Fatalf("err: %v", err)
}
if coord != nil {
t.Fatalf("should have not gotten a coordinate")
}
}
示例3: TestRPCClientForceLeave
func TestRPCClientForceLeave(t *testing.T) {
client, a1, ipc := testRPCClient(t)
a2 := testAgent(nil)
defer ipc.Shutdown()
defer client.Close()
defer a1.Shutdown()
defer a2.Shutdown()
if err := a1.Start(); err != nil {
t.Fatalf("err: %s", err)
}
if err := a2.Start(); err != nil {
t.Fatalf("err: %s", err)
}
testutil.Yield()
s2Addr := a2.conf.MemberlistConfig.BindAddr
if _, err := a1.Join([]string{s2Addr}, false); err != nil {
t.Fatalf("err: %s", err)
}
testutil.Yield()
if err := a2.Shutdown(); err != nil {
t.Fatalf("err: %s", err)
}
start := time.Now()
WAIT:
time.Sleep(a1.conf.MemberlistConfig.ProbeInterval * 3)
m := a1.Serf().Members()
if len(m) != 2 {
t.Fatalf("should have 2 members: %#v", a1.Serf().Members())
}
if findMember(t, m, a2.conf.NodeName).Status != serf.StatusFailed && time.Now().Sub(start) < 3*time.Second {
goto WAIT
}
if err := client.ForceLeave(a2.conf.NodeName); err != nil {
t.Fatalf("err: %s", err)
}
testutil.Yield()
m = a1.Serf().Members()
if len(m) != 2 {
t.Fatalf("should have 2 members: %#v", a1.Serf().Members())
}
if findMember(t, m, a2.conf.NodeName).Status != serf.StatusLeft {
t.Fatalf("should be left: %#v", m[1])
}
}
示例4: TestCommandRun_advertiseAddr
func TestCommandRun_advertiseAddr(t *testing.T) {
doneCh := make(chan struct{})
shutdownCh := make(chan struct{})
defer func() {
close(shutdownCh)
<-doneCh
}()
c := &Command{
ShutdownCh: shutdownCh,
Ui: new(cli.MockUi),
}
rpcAddr := getRPCAddr()
args := []string{
"-bind", testutil.GetBindAddr().String(),
"-rpc-addr", rpcAddr,
"-advertise", "127.0.0.10:12345",
}
go func() {
code := c.Run(args)
if code != 0 {
log.Printf("bad: %d", code)
}
close(doneCh)
}()
testutil.Yield()
client, err := client.NewRPCClient(rpcAddr)
if err != nil {
t.Fatalf("err: %s", err)
}
defer client.Close()
members, err := client.Members()
if err != nil {
t.Fatalf("err: %s", err)
}
if len(members) != 1 {
t.Fatalf("bad: %#v", members)
}
// Check the addr and port is as advertised!
m := members[0]
if bytes.Compare(m.Addr, []byte{127, 0, 0, 10}) != 0 {
t.Fatalf("bad: %#v", m)
}
if m.Port != 12345 {
t.Fatalf("bad: %#v", m)
}
}
示例5: getAllMembers
/*func (c MemberContainer) String() string {
var result []string
for _, member := range c.Members {
// Format the tags as tag1=v1,tag2=v2,...
var tagPairs []string
for name, value := range member.Tags {
tagPairs = append(tagPairs, fmt.Sprintf("%s=%s", name, value))
}
tags := strings.Join(tagPairs, ",")
line := fmt.Sprintf("%s|%s|%s|%s",
member.Name, member.Addr, member.Status, tags)
result = append(result, line)
}
output, _ := columnize.SimpleFormat(result)
return output
}
*/
func getAllMembers() {
addr := "127.0.0.1:7373"
client, err := RPCClient(addr)
//client, err := RPCClient(*rpcAddr)
if err != nil {
fmt.Sprintf("Error connecting to Serf agent: %s", err)
return
}
defer client.Close()
members, err := client.Members()
if err != nil {
if debug {
log.Println("Error retrieving members: %s", err)
}
return
}
//fmt.Println(members)
result := MemberContainer{}
for _, member := range members {
addr := net.TCPAddr{IP: member.Addr, Port: int(member.Port)}
result.Members = append(result.Members, Member{
Name: member.Name,
Addr: addr.String(),
Port: member.Port,
Tags: member.Tags,
Status: member.Status,
Proto: map[string]uint8{
"min": member.DelegateMin,
"max": member.DelegateMax,
"version": member.DelegateCur,
},
})
}
r.Db("enforcer_db").TableDrop(tableMembers).Run(session)
var tables []string
tables = append(tables, tableMembers)
createTable(tables, debug)
// Insert the new item into the database
_, err = r.Table(tableMembers).Insert(result.Members).RunWrite(session)
if err != nil {
if debug {
log.Println("Error inserting data in rethindkdb", err)
}
return
}
}
示例6: TestRPCClientStream_User
func TestRPCClientStream_User(t *testing.T) {
client, a1, ipc := testRPCClient(t)
defer ipc.Shutdown()
defer client.Close()
defer a1.Shutdown()
if err := a1.Start(); err != nil {
t.Fatalf("err: %s", err)
}
eventCh := make(chan map[string]interface{}, 64)
if handle, err := client.Stream("user", eventCh); err != nil {
t.Fatalf("err: %s", err)
} else {
defer client.Stop(handle)
}
testutil.Yield()
if err := client.UserEvent("deploy", []byte("foo"), false); err != nil {
t.Fatalf("err: %s", err)
}
testutil.Yield()
select {
case e := <-eventCh:
if e["Event"].(string) != "user" {
t.Fatalf("bad event: %#v", e)
}
if e["LTime"].(int64) != 1 {
t.Fatalf("bad event: %#v", e)
}
if e["Name"].(string) != "deploy" {
t.Fatalf("bad event: %#v", e)
}
if bytes.Compare(e["Payload"].([]byte), []byte("foo")) != 0 {
t.Fatalf("bad event: %#v", e)
}
if e["Coalesce"].(bool) != false {
t.Fatalf("bad event: %#v", e)
}
default:
t.Fatalf("should have event")
}
}
示例7: TestRPCClient_Keys_EncryptionDisabledError
func TestRPCClient_Keys_EncryptionDisabledError(t *testing.T) {
client, a1, ipc := testRPCClient(t)
defer ipc.Shutdown()
defer client.Close()
defer a1.Shutdown()
if err := a1.Start(); err != nil {
t.Fatalf("err: %s", err)
}
// Failed installing key
failures, err := client.InstallKey("El/H8lEqX2WiUa36SxcpZw==")
if err == nil {
t.Fatalf("expected encryption disabled error")
}
if _, ok := failures[a1.conf.NodeName]; !ok {
t.Fatalf("expected error from node %s", a1.conf.NodeName)
}
// Failed using key
failures, err = client.UseKey("El/H8lEqX2WiUa36SxcpZw==")
if err == nil {
t.Fatalf("expected encryption disabled error")
}
if _, ok := failures[a1.conf.NodeName]; !ok {
t.Fatalf("expected error from node %s", a1.conf.NodeName)
}
// Failed removing key
failures, err = client.RemoveKey("El/H8lEqX2WiUa36SxcpZw==")
if err == nil {
t.Fatalf("expected encryption disabled error")
}
if _, ok := failures[a1.conf.NodeName]; !ok {
t.Fatalf("expected error from node %s", a1.conf.NodeName)
}
// Failed listing keys
_, _, failures, err = client.ListKeys()
if err == nil {
t.Fatalf("expected encryption disabled error")
}
if _, ok := failures[a1.conf.NodeName]; !ok {
t.Fatalf("expected error from node %s", a1.conf.NodeName)
}
}
示例8: TestRPCClientMonitor
func TestRPCClientMonitor(t *testing.T) {
client, a1, ipc := testRPCClient(t)
defer ipc.Shutdown()
defer client.Close()
defer a1.Shutdown()
if err := a1.Start(); err != nil {
t.Fatalf("err: %s", err)
}
eventCh := make(chan string, 64)
if handle, err := client.Monitor("debug", eventCh); err != nil {
t.Fatalf("err: %s", err)
} else {
defer client.Stop(handle)
}
testutil.Yield()
select {
case e := <-eventCh:
if !strings.Contains(e, "Accepted client") {
t.Fatalf("bad: %s", e)
}
default:
t.Fatalf("should have backlog")
}
// Drain the rest of the messages as we know it
drainEventCh(eventCh)
// Join a bad thing to generate more events
a1.Join(nil, false)
testutil.Yield()
select {
case e := <-eventCh:
if !strings.Contains(e, "joining") {
t.Fatalf("bad: %s", e)
}
default:
t.Fatalf("should have message")
}
}
示例9: TestCommandRun_rpc
func TestCommandRun_rpc(t *testing.T) {
doneCh := make(chan struct{})
shutdownCh := make(chan struct{})
defer func() {
close(shutdownCh)
<-doneCh
}()
c := &Command{
ShutdownCh: shutdownCh,
Ui: new(cli.MockUi),
}
rpcAddr := getRPCAddr()
args := []string{
"-bind", testutil.GetBindAddr().String(),
"-rpc-addr", rpcAddr,
}
go func() {
code := c.Run(args)
if code != 0 {
log.Printf("bad: %d", code)
}
close(doneCh)
}()
testutil.Yield()
client, err := client.NewRPCClient(rpcAddr)
if err != nil {
t.Fatalf("err: %s", err)
}
defer client.Close()
members, err := client.Members()
if err != nil {
t.Fatalf("err: %s", err)
}
if len(members) != 1 {
t.Fatalf("bad: %#v", members)
}
}
示例10: TestRPCClientUpdateTags
func TestRPCClientUpdateTags(t *testing.T) {
client, a1, ipc := testRPCClient(t)
defer ipc.Shutdown()
defer client.Close()
defer a1.Shutdown()
if err := a1.Start(); err != nil {
t.Fatalf("err: %s", err)
}
testutil.Yield()
mem, err := client.Members()
if err != nil {
t.Fatalf("err: %s", err)
}
if len(mem) != 1 {
t.Fatalf("bad: %#v", mem)
}
m0 := mem[0]
if _, ok := m0.Tags["testing"]; ok {
t.Fatalf("have testing tag")
}
if err := client.UpdateTags(map[string]string{"testing": "1"}, nil); err != nil {
t.Fatalf("err: %s", err)
}
mem, err = client.Members()
if err != nil {
t.Fatalf("err: %s", err)
}
if len(mem) != 1 {
t.Fatalf("bad: %#v", mem)
}
m0 = mem[0]
if _, ok := m0.Tags["testing"]; !ok {
t.Fatalf("missing testing tag")
}
}
示例11: TestRPCClientMembers
func TestRPCClientMembers(t *testing.T) {
client, a1, ipc := testRPCClient(t)
a2 := testAgent(nil)
defer ipc.Shutdown()
defer client.Close()
defer a1.Shutdown()
defer a2.Shutdown()
if err := a1.Start(); err != nil {
t.Fatalf("err: %s", err)
}
if err := a2.Start(); err != nil {
t.Fatalf("err: %s", err)
}
testutil.Yield()
mem, err := client.Members()
if err != nil {
t.Fatalf("err: %s", err)
}
if len(mem) != 1 {
t.Fatalf("bad: %#v", mem)
}
_, err = client.Join([]string{a2.conf.MemberlistConfig.BindAddr}, false)
if err != nil {
t.Fatalf("err: %s", err)
}
testutil.Yield()
mem, err = client.Members()
if err != nil {
t.Fatalf("err: %s", err)
}
if len(mem) != 2 {
t.Fatalf("bad: %#v", mem)
}
}
示例12: TestRPCClientLeave
func TestRPCClientLeave(t *testing.T) {
client, a1, ipc := testRPCClient(t)
defer ipc.Shutdown()
defer client.Close()
defer a1.Shutdown()
testutil.Yield()
if err := client.Leave(); err != nil {
t.Fatalf("err: %s", err)
}
testutil.Yield()
select {
case <-a1.ShutdownCh():
default:
t.Fatalf("agent should be shutdown!")
}
}
示例13: TestRPCClientUserEvent
func TestRPCClientUserEvent(t *testing.T) {
client, a1, ipc := testRPCClient(t)
defer ipc.Shutdown()
defer client.Close()
defer a1.Shutdown()
handler := new(MockEventHandler)
a1.RegisterEventHandler(handler)
if err := a1.Start(); err != nil {
t.Fatalf("err: %s", err)
}
testutil.Yield()
if err := client.UserEvent("deploy", []byte("foo"), false); err != nil {
t.Fatalf("err: %s", err)
}
testutil.Yield()
handler.Lock()
defer handler.Unlock()
if len(handler.Events) == 0 {
t.Fatal("no events")
}
serfEvent, ok := handler.Events[len(handler.Events)-1].(serf.UserEvent)
if !ok {
t.Fatalf("bad: %#v", serfEvent)
}
if serfEvent.Name != "deploy" {
t.Fatalf("bad: %#v", serfEvent)
}
if string(serfEvent.Payload) != "foo" {
t.Fatalf("bad: %#v", serfEvent)
}
}
示例14: TestRPCClientStats
func TestRPCClientStats(t *testing.T) {
client, a1, ipc := testRPCClient(t)
defer ipc.Shutdown()
defer client.Close()
defer a1.Shutdown()
if err := a1.Start(); err != nil {
t.Fatalf("err: %s", err)
}
testutil.Yield()
stats, err := client.Stats()
if err != nil {
t.Fatalf("err: %v", err)
}
if stats["agent"]["name"] != a1.conf.NodeName {
t.Fatalf("bad: %v", stats)
}
}
示例15: TestRPCClient_Keys_EncryptionDisabledError
func TestRPCClient_Keys_EncryptionDisabledError(t *testing.T) {
client, a1, ipc := testRPCClient(t)
defer ipc.Shutdown()
defer client.Close()
defer a1.Shutdown()
if err := a1.Start(); err != nil {
t.Fatalf("err: %s", err)
}
if _, err := client.InstallKey("El/H8lEqX2WiUa36SxcpZw=="); err == nil {
t.Fatalf("expected encryption disabled error")
}
if _, err := client.UseKey("El/H8lEqX2WiUa36SxcpZw=="); err == nil {
t.Fatalf("expected encryption disabled error")
}
if _, err := client.RemoveKey("El/H8lEqX2WiUa36SxcpZw=="); err == nil {
t.Fatalf("expected encryption disabled error")
}
if _, _, err := client.ListKeys(); err == nil {
t.Fatalf("expected encryption disabled error")
}
}