mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcd: support v2 store stats endpoint
This commit is contained in:
parent
9a59f16964
commit
10b2f88b83
12
etcd/etcd.go
12
etcd/etcd.go
@ -19,11 +19,12 @@ const (
|
||||
|
||||
defaultTickDuration = time.Millisecond * 100
|
||||
|
||||
v2machineKVPrefix = "/_etcd/machines"
|
||||
v2Prefix = "/v2/keys"
|
||||
v2machinePrefix = "/v2/machines"
|
||||
v2peersPrefix = "/v2/peers"
|
||||
v2LeaderPrefix = "/v2/leader"
|
||||
v2machineKVPrefix = "/_etcd/machines"
|
||||
v2Prefix = "/v2/keys"
|
||||
v2machinePrefix = "/v2/machines"
|
||||
v2peersPrefix = "/v2/peers"
|
||||
v2LeaderPrefix = "/v2/leader"
|
||||
v2StoreStatsPrefix = "/v2/stats/store"
|
||||
|
||||
raftPrefix = "/raft"
|
||||
)
|
||||
@ -81,6 +82,7 @@ func New(c *config.Config, id int) *Server {
|
||||
m.Handle(v2machinePrefix, handlerErr(s.serveMachines))
|
||||
m.Handle(v2peersPrefix, handlerErr(s.serveMachines))
|
||||
m.Handle(v2LeaderPrefix, handlerErr(s.serveLeader))
|
||||
m.Handle(v2StoreStatsPrefix, handlerErr(s.serveStoreStats))
|
||||
s.Handler = m
|
||||
return s
|
||||
}
|
||||
|
@ -54,6 +54,12 @@ func (s *Server) serveLeader(w http.ResponseWriter, r *http.Request) error {
|
||||
return fmt.Errorf("no leader")
|
||||
}
|
||||
|
||||
func (s *Server) serveStoreStats(w http.ResponseWriter, req *http.Request) error {
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
w.Write(s.Store.JsonStats())
|
||||
return nil
|
||||
}
|
||||
|
||||
type handlerErr func(w http.ResponseWriter, r *http.Request) error
|
||||
|
||||
func (eh handlerErr) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
|
@ -1,12 +1,15 @@
|
||||
package etcd
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"reflect"
|
||||
"sort"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/coreos/etcd/store"
|
||||
)
|
||||
|
||||
func TestMachinesEndPoint(t *testing.T) {
|
||||
@ -82,3 +85,32 @@ func TestLeaderEndPoint(t *testing.T) {
|
||||
}
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
func TestStoreStatsEndPoint(t *testing.T) {
|
||||
es, hs := buildCluster(1)
|
||||
waitCluster(t, es)
|
||||
|
||||
resp, err := http.Get(hs[0].URL + v2StoreStatsPrefix)
|
||||
if err != nil {
|
||||
t.Errorf("%v", err)
|
||||
}
|
||||
stats := new(store.Stats)
|
||||
d := json.NewDecoder(resp.Body)
|
||||
err = d.Decode(stats)
|
||||
resp.Body.Close()
|
||||
if err != nil {
|
||||
t.Errorf("%v", err)
|
||||
}
|
||||
|
||||
if stats.SetSuccess != 1 {
|
||||
t.Errorf("setSuccess = %d, want 1", stats.SetSuccess)
|
||||
}
|
||||
|
||||
for i := range es {
|
||||
es[len(es)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
afterTest(t)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user