add Probers to Probe pkgs.

This commit is contained in:
Mike Danese
2015-01-27 10:00:21 -08:00
parent a298402bd4
commit 6eb0b89cbd
7 changed files with 38 additions and 11 deletions

View File

@@ -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 {

View File

@@ -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)
}

View File

@@ -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 {

View File

@@ -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")
}

View File

@@ -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)))
}

View File

@@ -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)
}