[ARVADOS] updated: 1.1.0-44-g2177ebf
Git user
git at public.curoverse.com
Wed Oct 18 10:03:35 EDT 2017
Summary of changes:
build/run-tests.sh | 2 +-
sdk/go/health/aggregator.go | 9 ++++++--
sdk/go/health/aggregator_test.go | 46 ++++++++++++++++++++++++----------------
3 files changed, 36 insertions(+), 21 deletions(-)
via 2177ebfe318b33eafcc95607a48039a887047730 (commit)
from 2e087bc0a6231762cf9b7b6d829000041cf28e16 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit 2177ebfe318b33eafcc95607a48039a887047730
Author: Tom Clegg <tclegg at veritasgenetics.com>
Date: Tue Oct 17 15:49:14 2017 -0400
11260: Fix tests.
refs #11260
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tclegg at veritasgenetics.com>
diff --git a/build/run-tests.sh b/build/run-tests.sh
index da27487..63c8801 100755
--- a/build/run-tests.sh
+++ b/build/run-tests.sh
@@ -792,7 +792,7 @@ gostuff=(
sdk/go/arvadosclient
sdk/go/blockdigest
sdk/go/dispatch
-# sdk/go/health
+ sdk/go/health
sdk/go/httpserver
sdk/go/manifest
sdk/go/streamer
diff --git a/sdk/go/health/aggregator.go b/sdk/go/health/aggregator.go
index 334584b..297a861 100644
--- a/sdk/go/health/aggregator.go
+++ b/sdk/go/health/aggregator.go
@@ -3,6 +3,7 @@ package health
import (
"context"
"encoding/json"
+ "errors"
"fmt"
"net"
"net/http"
@@ -199,10 +200,14 @@ func (agg *Aggregator) ping(url string, cluster *arvados.Cluster) (result CheckR
err = json.NewDecoder(resp.Body).Decode(&result.Response)
if err != nil {
err = fmt.Errorf("cannot decode response: %s", err)
- return
} else if resp.StatusCode != http.StatusOK {
err = fmt.Errorf("HTTP %d %s", resp.StatusCode, resp.Status)
- return
+ } else if h, _ := result.Response["health"].(string); h != "OK" {
+ if e, ok := result.Response["error"].(string); ok && e != "" {
+ err = errors.New(e)
+ } else {
+ err = fmt.Errorf("health=%q in ping response", h)
+ }
}
return
}
diff --git a/sdk/go/health/aggregator_test.go b/sdk/go/health/aggregator_test.go
index 048886a..7e601f2 100644
--- a/sdk/go/health/aggregator_test.go
+++ b/sdk/go/health/aggregator_test.go
@@ -2,8 +2,6 @@ package health
import (
"encoding/json"
- "fmt"
- "net"
"net/http"
"net/http/httptest"
"strings"
@@ -85,7 +83,7 @@ func (s *AggregatorSuite) TestUnhealthy(c *check.C) {
srv, listen := s.stubServer(&unhealthyHandler{})
defer srv.Close()
s.handler.Config.Clusters["zzzzz"].SystemNodes["localhost"] = arvados.SystemNode{
- Keepstore: arvados.Keepstore{Listen: listen},
+ Keepstore: arvados.SystemServiceInstance{Listen: listen},
}
s.handler.ServeHTTP(s.resp, s.req)
s.checkUnhealthy(c)
@@ -104,38 +102,50 @@ func (*healthyHandler) ServeHTTP(resp http.ResponseWriter, req *http.Request) {
func (s *AggregatorSuite) TestHealthy(c *check.C) {
srv, listen := s.stubServer(&healthyHandler{})
defer srv.Close()
- _, port, _ := net.SplitHostPort(listen)
s.handler.Config.Clusters["zzzzz"].SystemNodes["localhost"] = arvados.SystemNode{
- Keepstore: arvados.Keepstore{Listen: listen},
+ Keepproxy: arvados.SystemServiceInstance{Listen: listen},
+ Keepstore: arvados.SystemServiceInstance{Listen: listen},
+ Keepweb: arvados.SystemServiceInstance{Listen: listen},
+ Nodemanager: arvados.SystemServiceInstance{Listen: listen},
+ RailsAPI: arvados.SystemServiceInstance{Listen: listen},
+ Websocket: arvados.SystemServiceInstance{Listen: listen},
+ Workbench: arvados.SystemServiceInstance{Listen: listen},
}
s.handler.ServeHTTP(s.resp, s.req)
resp := s.checkOK(c)
- ep := resp.Checks[fmt.Sprintf("keepstore+http://localhost:%d/_health/ping", port)]
+ svc := "keepstore+http://localhost" + listen + "/_health/ping"
+ c.Logf("%#v", resp)
+ ep := resp.Checks[svc]
c.Check(ep.Health, check.Equals, "OK")
- c.Check(ep.Status, check.Equals, 200)
+ c.Check(ep.HTTPStatusCode, check.Equals, 200)
}
func (s *AggregatorSuite) TestHealthyAndUnhealthy(c *check.C) {
srvH, listenH := s.stubServer(&healthyHandler{})
defer srvH.Close()
- _, portH, _ := net.SplitHostPort(listenH)
srvU, listenU := s.stubServer(&unhealthyHandler{})
defer srvU.Close()
- _, portU, _ := net.SplitHostPort(listenU)
s.handler.Config.Clusters["zzzzz"].SystemNodes["localhost"] = arvados.SystemNode{
- Keepstore: arvados.Keepstore{Listen: listenH},
+ Keepproxy: arvados.SystemServiceInstance{Listen: listenH},
+ Keepstore: arvados.SystemServiceInstance{Listen: listenH},
+ Keepweb: arvados.SystemServiceInstance{Listen: listenH},
+ Nodemanager: arvados.SystemServiceInstance{Listen: listenH},
+ RailsAPI: arvados.SystemServiceInstance{Listen: listenH},
+ Websocket: arvados.SystemServiceInstance{Listen: listenH},
+ Workbench: arvados.SystemServiceInstance{Listen: listenH},
}
s.handler.Config.Clusters["zzzzz"].SystemNodes["127.0.0.1"] = arvados.SystemNode{
- Keepstore: arvados.Keepstore{Listen: listenU},
+ Keepstore: arvados.SystemServiceInstance{Listen: listenU},
}
s.handler.ServeHTTP(s.resp, s.req)
resp := s.checkUnhealthy(c)
- ep := resp.Checks[fmt.Sprintf("keepstore+http://localhost:%d/_health/ping", portH)]
+ ep := resp.Checks["keepstore+http://localhost"+listenH+"/_health/ping"]
c.Check(ep.Health, check.Equals, "OK")
- c.Check(ep.Status, check.Equals, 200)
- ep = resp.Checks[fmt.Sprintf("keepstore+http://127.0.0.1:%d/_health/ping", portU)]
+ c.Check(ep.HTTPStatusCode, check.Equals, 200)
+ ep = resp.Checks["keepstore+http://127.0.0.1"+listenU+"/_health/ping"]
c.Check(ep.Health, check.Equals, "ERROR")
- c.Check(ep.Status, check.Equals, 200)
+ c.Check(ep.HTTPStatusCode, check.Equals, 200)
+ c.Logf("%#v", ep)
}
func (s *AggregatorSuite) checkError(c *check.C) {
@@ -179,13 +189,13 @@ func (s *AggregatorSuite) TestPingTimeout(c *check.C) {
srv, listen := s.stubServer(&slowHandler{})
defer srv.Close()
s.handler.Config.Clusters["zzzzz"].SystemNodes["localhost"] = arvados.SystemNode{
- Keepstore: arvados.Keepstore{Listen: listen},
+ Keepstore: arvados.SystemServiceInstance{Listen: listen},
}
s.handler.ServeHTTP(s.resp, s.req)
resp := s.checkUnhealthy(c)
- ep := resp.Checks["localhost/keepstore/_health/ping"]
+ ep := resp.Checks["keepstore+http://localhost"+listen+"/_health/ping"]
c.Check(ep.Health, check.Equals, "ERROR")
- c.Check(ep.Status, check.Equals, 0)
+ c.Check(ep.HTTPStatusCode, check.Equals, 0)
rt, err := ep.ResponseTime.Float64()
c.Check(err, check.IsNil)
c.Check(rt > 0.005, check.Equals, true)
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list