testutil: add ListKV method

This commit is contained in:
Ryan Uber 2015-03-23 22:47:34 -07:00
parent 4c42754886
commit d6ce64b472
1 changed files with 29 additions and 5 deletions

View File

@ -253,9 +253,10 @@ func (s *TestServer) url(path string) string {
return fmt.Sprintf("http://127.0.0.1:%d%s", s.Config.Ports.HTTP, path) return fmt.Sprintf("http://127.0.0.1:%d%s", s.Config.Ports.HTTP, path)
} }
// requireOK checks the HTTP response code and ensures it is acceptable.
func (s *TestServer) requireOK(resp *http.Response) error { func (s *TestServer) requireOK(resp *http.Response) error {
if resp.StatusCode != 200 { if resp.StatusCode != 200 {
return fmt.Errorf("Bad status code: %s", resp.StatusCode) return fmt.Errorf("Bad status code: %d", resp.StatusCode)
} }
return nil return nil
} }
@ -271,7 +272,8 @@ func (s *TestServer) put(path string, body io.Reader) *http.Response {
s.t.Fatalf("err: %s", err) s.t.Fatalf("err: %s", err)
} }
if err := s.requireOK(resp); err != nil { if err := s.requireOK(resp); err != nil {
s.t.Fatalf(err.Error()) defer resp.Body.Close()
s.t.Fatal(err)
} }
return resp return resp
} }
@ -283,7 +285,8 @@ func (s *TestServer) get(path string) *http.Response {
s.t.Fatalf("err: %s", err) s.t.Fatalf("err: %s", err)
} }
if err := s.requireOK(resp); err != nil { if err := s.requireOK(resp); err != nil {
s.t.Fatalf(err.Error()) defer resp.Body.Close()
s.t.Fatal(err)
} }
return resp return resp
} }
@ -322,15 +325,18 @@ func (s *TestServer) GetKV(key string) []byte {
resp := s.get("/v1/kv/" + key) resp := s.get("/v1/kv/" + key)
defer resp.Body.Close() defer resp.Body.Close()
data, err := ioutil.ReadAll(resp.Body) raw, err := ioutil.ReadAll(resp.Body)
if err != nil { if err != nil {
s.t.Fatalf("err: %s", err) s.t.Fatalf("err: %s", err)
} }
var result []*TestKVResponse var result []*TestKVResponse
if err := json.Unmarshal(data, &result); err != nil { if err := json.Unmarshal(raw, &result); err != nil {
s.t.Fatalf("err: %s", err) s.t.Fatalf("err: %s", err)
} }
if len(result) < 1 {
s.t.Fatalf("key does not exist: %s", key)
}
v, err := base64.StdEncoding.DecodeString(result[0].Value) v, err := base64.StdEncoding.DecodeString(result[0].Value)
if err != nil { if err != nil {
@ -347,6 +353,24 @@ func (s *TestServer) PopulateKV(data map[string][]byte) {
} }
} }
// ListKV returns a list of keys present in the KV store. This will list all
// keys under the given prefix recursively and return them as a slice.
func (s *TestServer) ListKV(prefix string) []string {
resp := s.get("/v1/kv/" + prefix + "?keys")
defer resp.Body.Close()
raw, err := ioutil.ReadAll(resp.Body)
if err != nil {
s.t.Fatalf("err: %s", err)
}
var result []string
if err := json.Unmarshal(raw, &result); err != nil {
s.t.Fatalf("err: %s", err)
}
return result
}
// AddService adds a new service to the Consul instance. It also // AddService adds a new service to the Consul instance. It also
// automatically adds a health check with the given status, which // automatically adds a health check with the given status, which
// can be one of "passing", "warning", or "critical". // can be one of "passing", "warning", or "critical".