mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
server: Apply review comments and split basic handler
This commit is contained in:
parent
fb361e43f0
commit
26f42e7a9e
@ -701,7 +701,8 @@ func (e *Etcd) serveClients() (err error) {
|
|||||||
|
|
||||||
// Start a client server goroutine for each listen address
|
// Start a client server goroutine for each listen address
|
||||||
mux := http.NewServeMux()
|
mux := http.NewServeMux()
|
||||||
etcdhttp.HandleBasic(e.cfg.logger, mux, e.Server)
|
etcdhttp.HandleDebug(mux)
|
||||||
|
etcdhttp.HandleVersion(mux, e.Server)
|
||||||
etcdhttp.HandleMetrics(mux)
|
etcdhttp.HandleMetrics(mux)
|
||||||
etcdhttp.HandleHealth(e.cfg.logger, mux, e.Server)
|
etcdhttp.HandleHealth(e.cfg.logger, mux, e.Server)
|
||||||
|
|
||||||
|
@ -115,18 +115,21 @@ func TestHealthHandler(t *testing.T) {
|
|||||||
expectHealth: "true",
|
expectHealth: "true",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
name: "Healthy even if authentication failed",
|
||||||
healthCheckURL: "/health",
|
healthCheckURL: "/health",
|
||||||
apiError: auth.ErrUserEmpty,
|
apiError: auth.ErrUserEmpty,
|
||||||
expectStatusCode: http.StatusOK,
|
expectStatusCode: http.StatusOK,
|
||||||
expectHealth: "true",
|
expectHealth: "true",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
name: "Healthy even if authorization failed",
|
||||||
healthCheckURL: "/health",
|
healthCheckURL: "/health",
|
||||||
apiError: auth.ErrPermissionDenied,
|
apiError: auth.ErrPermissionDenied,
|
||||||
expectStatusCode: http.StatusOK,
|
expectStatusCode: http.StatusOK,
|
||||||
expectHealth: "true",
|
expectHealth: "true",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
name: "Unhealthy if api is not available",
|
||||||
healthCheckURL: "/health",
|
healthCheckURL: "/health",
|
||||||
apiError: fmt.Errorf("Unexpected error"),
|
apiError: fmt.Errorf("Unexpected error"),
|
||||||
expectStatusCode: http.StatusServiceUnavailable,
|
expectStatusCode: http.StatusServiceUnavailable,
|
||||||
@ -134,7 +137,7 @@ func TestHealthHandler(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for i, tt := range tests {
|
for _, tt := range tests {
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
mux := http.NewServeMux()
|
mux := http.NewServeMux()
|
||||||
HandleHealth(zaptest.NewLogger(t), mux, &fakeHealthServer{
|
HandleHealth(zaptest.NewLogger(t), mux, &fakeHealthServer{
|
||||||
@ -147,14 +150,14 @@ func TestHealthHandler(t *testing.T) {
|
|||||||
|
|
||||||
res, err := ts.Client().Do(&http.Request{Method: http.MethodGet, URL: testutil.MustNewURL(t, ts.URL+tt.healthCheckURL)})
|
res, err := ts.Client().Do(&http.Request{Method: http.MethodGet, URL: testutil.MustNewURL(t, ts.URL+tt.healthCheckURL)})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("fail serve http request %s %v in test case #%d", tt.healthCheckURL, err, i+1)
|
t.Errorf("fail serve http request %s %v", tt.healthCheckURL, err)
|
||||||
}
|
}
|
||||||
if res == nil {
|
if res == nil {
|
||||||
t.Errorf("got nil http response with http request %s in test case #%d", tt.healthCheckURL, i+1)
|
t.Errorf("got nil http response with http request %s", tt.healthCheckURL)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if res.StatusCode != tt.expectStatusCode {
|
if res.StatusCode != tt.expectStatusCode {
|
||||||
t.Errorf("want statusCode %d but got %d in test case #%d", tt.expectStatusCode, res.StatusCode, i+1)
|
t.Errorf("want statusCode %d but got %d", tt.expectStatusCode, res.StatusCode)
|
||||||
}
|
}
|
||||||
health, err := parseHealthOutput(res.Body)
|
health, err := parseHealthOutput(res.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -23,11 +23,6 @@ import (
|
|||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
func HandleBasic(lg *zap.Logger, mux *http.ServeMux, peer etcdserver.ServerPeer) {
|
|
||||||
HandleDebug(mux)
|
|
||||||
HandleVersion(mux, peer)
|
|
||||||
}
|
|
||||||
|
|
||||||
func allowMethod(w http.ResponseWriter, r *http.Request, m string) bool {
|
func allowMethod(w http.ResponseWriter, r *http.Request, m string) bool {
|
||||||
if m == r.Method {
|
if m == r.Method {
|
||||||
return true
|
return true
|
@ -992,7 +992,8 @@ func (m *Member) Launch() error {
|
|||||||
}
|
}
|
||||||
for _, ln := range m.ClientListeners {
|
for _, ln := range m.ClientListeners {
|
||||||
handler := http.NewServeMux()
|
handler := http.NewServeMux()
|
||||||
etcdhttp.HandleBasic(m.Logger, handler, m.Server)
|
etcdhttp.HandleDebug(handler)
|
||||||
|
etcdhttp.HandleVersion(handler, m.Server)
|
||||||
etcdhttp.HandleMetrics(handler)
|
etcdhttp.HandleMetrics(handler)
|
||||||
etcdhttp.HandleHealth(m.Logger, handler, m.Server)
|
etcdhttp.HandleHealth(m.Logger, handler, m.Server)
|
||||||
hs := &httptest.Server{
|
hs := &httptest.Server{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user