mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-10 13:42:02 +00:00
add Probers to Probe pkgs.
This commit is contained in:
@@ -27,7 +27,13 @@ import (
|
||||
|
||||
const defaultHealthyOutput = "ok"
|
||||
|
||||
func Probe(e uexec.Cmd) (probe.Status, error) {
|
||||
func New() ExecProber {
|
||||
return ExecProber{}
|
||||
}
|
||||
|
||||
type ExecProber struct{}
|
||||
|
||||
func (pr ExecProber) Probe(e uexec.Cmd) (probe.Status, error) {
|
||||
data, err := e.CombinedOutput()
|
||||
glog.V(4).Infof("health check response: %s", string(data))
|
||||
if err != nil {
|
||||
|
@@ -42,6 +42,7 @@ type healthCheckTest struct {
|
||||
}
|
||||
|
||||
func TestExec(t *testing.T) {
|
||||
prober := New()
|
||||
fake := FakeCmd{}
|
||||
tests := []healthCheckTest{
|
||||
// Ok
|
||||
@@ -54,7 +55,7 @@ func TestExec(t *testing.T) {
|
||||
for _, test := range tests {
|
||||
fake.out = test.output
|
||||
fake.err = test.err
|
||||
status, err := Probe(&fake)
|
||||
status, err := prober.Probe(&fake)
|
||||
if status != test.expectedStatus {
|
||||
t.Errorf("expected %v, got %v", test.expectedStatus, status)
|
||||
}
|
||||
|
@@ -27,11 +27,17 @@ import (
|
||||
"github.com/golang/glog"
|
||||
)
|
||||
|
||||
var client = &http.Client{}
|
||||
func New() HTTPProber {
|
||||
return HTTPProber{&http.Client{}}
|
||||
}
|
||||
|
||||
type HTTPProber struct {
|
||||
client HTTPGetInterface
|
||||
}
|
||||
|
||||
// Probe returns a ProbeRunner capable of running an http check.
|
||||
func Probe(host string, port int, path string) (probe.Status, error) {
|
||||
return DoHTTPProbe(formatURL(host, port, path), client)
|
||||
func (pr *HTTPProber) Probe(host string, port int, path string) (probe.Status, error) {
|
||||
return DoHTTPProbe(formatURL(host, port, path), pr.client)
|
||||
}
|
||||
|
||||
type HTTPGetInterface interface {
|
||||
|
@@ -46,6 +46,7 @@ func TestFormatURL(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestHTTPProbeChecker(t *testing.T) {
|
||||
prober := New()
|
||||
testCases := []struct {
|
||||
status int
|
||||
health probe.Status
|
||||
@@ -70,7 +71,7 @@ func TestHTTPProbeChecker(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Errorf("Unexpected error: %v", err)
|
||||
}
|
||||
health, err := Probe(host, p, "")
|
||||
health, err := prober.Probe(host, p, "")
|
||||
if test.health == probe.Unknown && err == nil {
|
||||
t.Errorf("Expected error")
|
||||
}
|
||||
|
@@ -25,7 +25,13 @@ import (
|
||||
"github.com/golang/glog"
|
||||
)
|
||||
|
||||
func Probe(host string, port int) (probe.Status, error) {
|
||||
func New() TCPProber {
|
||||
return TCPProber{}
|
||||
}
|
||||
|
||||
type TCPProber struct{}
|
||||
|
||||
func (pr TCPProber) Probe(host string, port int) (probe.Status, error) {
|
||||
return DoTCPProbe(net.JoinHostPort(host, strconv.Itoa(port)))
|
||||
}
|
||||
|
||||
|
@@ -28,6 +28,7 @@ import (
|
||||
)
|
||||
|
||||
func TestTcpHealthChecker(t *testing.T) {
|
||||
prober := New()
|
||||
tests := []struct {
|
||||
expectedStatus probe.Status
|
||||
usePort bool
|
||||
@@ -58,7 +59,7 @@ func TestTcpHealthChecker(t *testing.T) {
|
||||
if !test.usePort {
|
||||
p = -1
|
||||
}
|
||||
status, err := Probe(host, p)
|
||||
status, err := prober.Probe(host, p)
|
||||
if status != test.expectedStatus {
|
||||
t.Errorf("expected: %v, got: %v", test.expectedStatus, status)
|
||||
}
|
||||
|
Reference in New Issue
Block a user