kuma

Форк
0
/
http.go 
51 строка · 959.0 Байт
1
package test
2

3
import (
4
	"fmt"
5
	"net/http"
6
	"net/http/httptest"
7
)
8

9
const healthCheckPath = "/---/ready"
10

11
type CheckedHttpServer interface {
12
	Server() *httptest.Server
13
	Ready() error
14
}
15

16
type healthCheckHandler struct {
17
	http.Handler
18
}
19

20
func (h *healthCheckHandler) ServeHTTP(writer http.ResponseWriter, request *http.Request) {
21
	if request.RequestURI == fmt.Sprintf("/%s", healthCheckPath) {
22
		writer.WriteHeader(200)
23
		return
24
	}
25
	h.Handler.ServeHTTP(writer, request)
26
}
27

28
type healthCheckServer struct {
29
	server *httptest.Server
30
}
31

32
func (s *healthCheckServer) Server() *httptest.Server {
33
	return s.server
34
}
35

36
func (s *healthCheckServer) Ready() error {
37
	res, err := http.DefaultClient.Get(fmt.Sprintf("%s/%s", s.server.URL, healthCheckPath))
38
	if err == nil {
39
		_ = res.Body.Close()
40
	}
41

42
	return err
43
}
44

45
func NewHttpServer(handler http.Handler) CheckedHttpServer {
46
	return &healthCheckServer{
47
		server: httptest.NewServer(&healthCheckHandler{
48
			handler,
49
		}),
50
	}
51
}
52

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.