From bcc1e0619bb63c2b4bc18eaf679010981de79c57 Mon Sep 17 00:00:00 2001 From: Mike Morris Date: Tue, 28 Jul 2020 17:44:11 -0400 Subject: [PATCH 1/2] api: restore Leader() and Peers() to avoid breaking function signatures --- api/status.go | 24 ++++++++++++++++++++---- api/status_test.go | 29 ++++++++++++++++++++++------- 2 files changed, 42 insertions(+), 11 deletions(-) diff --git a/api/status.go b/api/status.go index 1b195a1d200f..57f379c7b1ea 100644 --- a/api/status.go +++ b/api/status.go @@ -11,9 +11,13 @@ func (c *Client) Status() *Status { } // Leader is used to query for a known leader -func (s *Status) Leader(q *QueryOptions) (string, error) { +func (s *Status) LeaderWithQueryOptions(q *QueryOptions) (string, error) { r := s.c.newRequest("GET", "/v1/status/leader") - r.setQueryOptions(q) + + if q != nil { + r.setQueryOptions(q) + } + _, resp, err := requireOK(s.c.doRequest(r)) if err != nil { return "", err @@ -27,10 +31,18 @@ func (s *Status) Leader(q *QueryOptions) (string, error) { return leader, nil } +func (s *Status) Leader() (string, error) { + return s.LeaderWithQueryOptions(nil) +} + // Peers is used to query for a known raft peers -func (s *Status) Peers(q *QueryOptions) ([]string, error) { +func (s *Status) PeersWithQueryOptions(q *QueryOptions) ([]string, error) { r := s.c.newRequest("GET", "/v1/status/peers") - r.setQueryOptions(q) + + if q != nil { + r.setQueryOptions(q) + } + _, resp, err := requireOK(s.c.doRequest(r)) if err != nil { return nil, err @@ -43,3 +55,7 @@ func (s *Status) Peers(q *QueryOptions) ([]string, error) { } return peers, nil } + +func (s *Status) Peers() ([]string, error) { + return s.PeersWithQueryOptions(nil) +} diff --git a/api/status_test.go b/api/status_test.go index 175eccc628b7..d6d06acc48c8 100644 --- a/api/status_test.go +++ b/api/status_test.go @@ -13,11 +13,28 @@ func TestAPI_StatusLeader(t *testing.T) { status := c.Status() + leader, err := status.Leader() + if err != nil { + t.Fatalf("err: %v", err) + } + if leader == "" { + t.Fatalf("Expected leader") + } +} + +func TestAPI_StatusLeaderWithQueryOptions(t *testing.T) { + t.Parallel() + c, s := makeClient(t) + defer s.Stop() + s.WaitForSerfCheck(t) + + status := c.Status() + opts := QueryOptions{ Datacenter: "dc1", } - leader, err := status.Leader(&opts) + leader, err := status.LeaderWithQueryOptions(&opts) if err != nil { t.Fatalf("err: %v", err) } @@ -34,10 +51,7 @@ func TestAPI_StatusPeers(t *testing.T) { status := c.Status() - opts := QueryOptions{ - Datacenter: "dc1", - } - peers, err := status.Peers(&opts) + peers, err := status.Peers() if err != nil { t.Fatalf("err: %v", err) } @@ -59,7 +73,8 @@ func TestAPI_StatusLeader_WrongDC(t *testing.T) { opts := QueryOptions{ Datacenter: "wrong_dc1", } - _, err := status.Leader(&opts) + + _, err := status.LeaderWithQueryOptions(&opts) require.Error(err) require.Contains(err.Error(), "No path to datacenter") } @@ -77,7 +92,7 @@ func TestAPI_StatusPeers_WrongDC(t *testing.T) { opts := QueryOptions{ Datacenter: "wrong_dc1", } - _, err := status.Peers(&opts) + _, err := status.PeersWithQueryOptions(&opts) require.Error(err) require.Contains(err.Error(), "No path to datacenter") } From 934045e3ef1fe78f4130e34f1efa6737d7c4c764 Mon Sep 17 00:00:00 2001 From: Mike Morris Date: Wed, 29 Jul 2020 10:19:02 -0400 Subject: [PATCH 2/2] api: add TestAPI_StatusPeersWithQueryOptions api: make TestAPI_Status error message more verbose --- api/status_test.go | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/api/status_test.go b/api/status_test.go index d6d06acc48c8..8802cc561764 100644 --- a/api/status_test.go +++ b/api/status_test.go @@ -18,7 +18,7 @@ func TestAPI_StatusLeader(t *testing.T) { t.Fatalf("err: %v", err) } if leader == "" { - t.Fatalf("Expected leader") + t.Fatalf("Expected leader, found empty string") } } @@ -39,7 +39,7 @@ func TestAPI_StatusLeaderWithQueryOptions(t *testing.T) { t.Fatalf("err: %v", err) } if leader == "" { - t.Fatalf("Expected leader") + t.Fatalf("Expected leader, found empty string") } } @@ -56,7 +56,28 @@ func TestAPI_StatusPeers(t *testing.T) { t.Fatalf("err: %v", err) } if len(peers) == 0 { - t.Fatalf("Expected peers ") + t.Fatalf("Expected peers, found %d", len(peers)) + } +} + +func TestAPI_StatusPeersWithQueryOptions(t *testing.T) { + t.Parallel() + c, s := makeClient(t) + defer s.Stop() + s.WaitForSerfCheck(t) + + status := c.Status() + + opts := QueryOptions{ + Datacenter: "dc1", + } + + peers, err := status.PeersWithQueryOptions(&opts) + if err != nil { + t.Fatalf("err: %v", err) + } + if len(peers) == 0 { + t.Fatalf("Expected peers, found %d", len(peers)) } }