func TestRegisterWithSetLeaderSelf(t *testing.T) { client, cleanup := testutil.SetupDiscoverd(t) defer cleanup() serviceName := "registerWithSetLeaderSelfTest" assert(client.Register(serviceName, ":1111"), t) set, err := client.RegisterWithSet(serviceName, ":2222", nil) assert(err, t) leader := make(chan *discoverd.Service, 2) go func() { leaders := set.Leaders() for { leader <- <-leaders } }() assert(client.Register(serviceName, ":3333"), t) if (<-leader).Addr != "127.0.0.1:1111" { t.Fatal("Incorrect leader") } assert(client.Unregister(serviceName, ":1111"), t) if (<-leader).Addr != set.SelfAddr() { t.Fatal("Incorrect leader", leader) } assert(set.Close(), t) }
func TestRegisterWithSet(t *testing.T) { client, cleanup := testutil.SetupDiscoverd(t) defer cleanup() serviceName := "registerWithSetTest" assert(client.Register(serviceName, ":1111"), t) set, err := client.RegisterWithSet(serviceName, ":2222", nil) assert(err, t) if len(set.Services()) != 1 { t.Fatal("There should only be one other service") } if set.Services()[0].Addr != "127.0.0.1:1111" { t.Fatal("Set contains the wrong service") } assert(set.Close(), t) services, err := client.Services(serviceName, 1) assert(err, t) if len(services) != 2 { t.Fatal("Not all registered services were returned:", services) } }