1package api 2 3import ( 4 "github.com/stretchr/testify/require" 5 "testing" 6) 7 8func TestAPI_StatusLeader(t *testing.T) { 9 t.Parallel() 10 c, s := makeClient(t) 11 defer s.Stop() 12 s.WaitForSerfCheck(t) 13 14 status := c.Status() 15 16 leader, err := status.Leader() 17 if err != nil { 18 t.Fatalf("err: %v", err) 19 } 20 if leader == "" { 21 t.Fatalf("Expected leader, found empty string") 22 } 23} 24 25func TestAPI_StatusLeaderWithQueryOptions(t *testing.T) { 26 t.Parallel() 27 c, s := makeClient(t) 28 defer s.Stop() 29 s.WaitForSerfCheck(t) 30 31 status := c.Status() 32 33 opts := QueryOptions{ 34 Datacenter: "dc1", 35 } 36 37 leader, err := status.LeaderWithQueryOptions(&opts) 38 if err != nil { 39 t.Fatalf("err: %v", err) 40 } 41 if leader == "" { 42 t.Fatalf("Expected leader, found empty string") 43 } 44} 45 46func TestAPI_StatusPeers(t *testing.T) { 47 t.Parallel() 48 c, s := makeClient(t) 49 defer s.Stop() 50 s.WaitForSerfCheck(t) 51 52 status := c.Status() 53 54 peers, err := status.Peers() 55 if err != nil { 56 t.Fatalf("err: %v", err) 57 } 58 if len(peers) == 0 { 59 t.Fatalf("Expected peers, found %d", len(peers)) 60 } 61} 62 63func TestAPI_StatusPeersWithQueryOptions(t *testing.T) { 64 t.Parallel() 65 c, s := makeClient(t) 66 defer s.Stop() 67 s.WaitForSerfCheck(t) 68 69 status := c.Status() 70 71 opts := QueryOptions{ 72 Datacenter: "dc1", 73 } 74 75 peers, err := status.PeersWithQueryOptions(&opts) 76 if err != nil { 77 t.Fatalf("err: %v", err) 78 } 79 if len(peers) == 0 { 80 t.Fatalf("Expected peers, found %d", len(peers)) 81 } 82} 83 84func TestAPI_StatusLeader_WrongDC(t *testing.T) { 85 t.Parallel() 86 require := require.New(t) 87 88 c, s := makeClient(t) 89 defer s.Stop() 90 s.WaitForSerfCheck(t) 91 92 status := c.Status() 93 94 opts := QueryOptions{ 95 Datacenter: "wrong_dc1", 96 } 97 98 _, err := status.LeaderWithQueryOptions(&opts) 99 require.Error(err) 100 require.Contains(err.Error(), "No path to datacenter") 101} 102 103func TestAPI_StatusPeers_WrongDC(t *testing.T) { 104 t.Parallel() 105 require := require.New(t) 106 107 c, s := makeClient(t) 108 defer s.Stop() 109 s.WaitForSerfCheck(t) 110 111 status := c.Status() 112 113 opts := QueryOptions{ 114 Datacenter: "wrong_dc1", 115 } 116 _, err := status.PeersWithQueryOptions(&opts) 117 require.Error(err) 118 require.Contains(err.Error(), "No path to datacenter") 119} 120