Skip to content

Commit 85ef7ba

Browse files
authored
api: restore Leader() and Peers() to avoid breaking function signatures (#8395)
api: add TestAPI_StatusLeaderWithQueryOptions and TestAPI_StatusPeersWithQueryOptions api: make TestAPI_Status* error messages more verbose
1 parent 7d2aa18 commit 85ef7ba

File tree

2 files changed

+62
-10
lines changed

2 files changed

+62
-10
lines changed

api/status.go

+20-4
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,13 @@ func (c *Client) Status() *Status {
1111
}
1212

1313
// Leader is used to query for a known leader
14-
func (s *Status) Leader(q *QueryOptions) (string, error) {
14+
func (s *Status) LeaderWithQueryOptions(q *QueryOptions) (string, error) {
1515
r := s.c.newRequest("GET", "/v1/status/leader")
16-
r.setQueryOptions(q)
16+
17+
if q != nil {
18+
r.setQueryOptions(q)
19+
}
20+
1721
_, resp, err := requireOK(s.c.doRequest(r))
1822
if err != nil {
1923
return "", err
@@ -27,10 +31,18 @@ func (s *Status) Leader(q *QueryOptions) (string, error) {
2731
return leader, nil
2832
}
2933

34+
func (s *Status) Leader() (string, error) {
35+
return s.LeaderWithQueryOptions(nil)
36+
}
37+
3038
// Peers is used to query for a known raft peers
31-
func (s *Status) Peers(q *QueryOptions) ([]string, error) {
39+
func (s *Status) PeersWithQueryOptions(q *QueryOptions) ([]string, error) {
3240
r := s.c.newRequest("GET", "/v1/status/peers")
33-
r.setQueryOptions(q)
41+
42+
if q != nil {
43+
r.setQueryOptions(q)
44+
}
45+
3446
_, resp, err := requireOK(s.c.doRequest(r))
3547
if err != nil {
3648
return nil, err
@@ -43,3 +55,7 @@ func (s *Status) Peers(q *QueryOptions) ([]string, error) {
4355
}
4456
return peers, nil
4557
}
58+
59+
func (s *Status) Peers() ([]string, error) {
60+
return s.PeersWithQueryOptions(nil)
61+
}

api/status_test.go

+42-6
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,33 @@ func TestAPI_StatusLeader(t *testing.T) {
1313

1414
status := c.Status()
1515

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+
25+
func 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+
1633
opts := QueryOptions{
1734
Datacenter: "dc1",
1835
}
1936

20-
leader, err := status.Leader(&opts)
37+
leader, err := status.LeaderWithQueryOptions(&opts)
2138
if err != nil {
2239
t.Fatalf("err: %v", err)
2340
}
2441
if leader == "" {
25-
t.Fatalf("Expected leader")
42+
t.Fatalf("Expected leader, found empty string")
2643
}
2744
}
2845

@@ -34,15 +51,33 @@ func TestAPI_StatusPeers(t *testing.T) {
3451

3552
status := c.Status()
3653

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+
63+
func 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+
3771
opts := QueryOptions{
3872
Datacenter: "dc1",
3973
}
40-
peers, err := status.Peers(&opts)
74+
75+
peers, err := status.PeersWithQueryOptions(&opts)
4176
if err != nil {
4277
t.Fatalf("err: %v", err)
4378
}
4479
if len(peers) == 0 {
45-
t.Fatalf("Expected peers ")
80+
t.Fatalf("Expected peers, found %d", len(peers))
4681
}
4782
}
4883

@@ -59,7 +94,8 @@ func TestAPI_StatusLeader_WrongDC(t *testing.T) {
5994
opts := QueryOptions{
6095
Datacenter: "wrong_dc1",
6196
}
62-
_, err := status.Leader(&opts)
97+
98+
_, err := status.LeaderWithQueryOptions(&opts)
6399
require.Error(err)
64100
require.Contains(err.Error(), "No path to datacenter")
65101
}
@@ -77,7 +113,7 @@ func TestAPI_StatusPeers_WrongDC(t *testing.T) {
77113
opts := QueryOptions{
78114
Datacenter: "wrong_dc1",
79115
}
80-
_, err := status.Peers(&opts)
116+
_, err := status.PeersWithQueryOptions(&opts)
81117
require.Error(err)
82118
require.Contains(err.Error(), "No path to datacenter")
83119
}

0 commit comments

Comments
 (0)