9 "git.curoverse.com/arvados.git/sdk/go/arvados"
10 "git.curoverse.com/arvados.git/sdk/go/arvadostest"
14 type AggregatorSuite struct {
17 resp *httptest.ResponseRecorder
20 // Gocheck boilerplate
21 var _ = check.Suite(&AggregatorSuite{})
23 func (s *AggregatorSuite) TestInterface(c *check.C) {
24 var _ http.Handler = &Aggregator{}
27 func (s *AggregatorSuite) SetUpTest(c *check.C) {
28 s.handler = &Aggregator{Config: &arvados.Config{
29 Clusters: map[string]arvados.Cluster{
31 ManagementToken: arvadostest.ManagementToken,
32 SystemNodes: map[string]arvados.SystemNode{},
36 s.req = httptest.NewRequest("GET", "/_health/all", nil)
37 s.req.Header.Set("Authorization", "Bearer "+arvadostest.ManagementToken)
38 s.resp = httptest.NewRecorder()
41 func (s *AggregatorSuite) TestNoAuth(c *check.C) {
42 s.req.Header.Del("Authorization")
43 s.handler.ServeHTTP(s.resp, s.req)
45 c.Check(s.resp.Code, check.Equals, http.StatusUnauthorized)
48 func (s *AggregatorSuite) TestBadAuth(c *check.C) {
49 s.req.Header.Set("Authorization", "xyzzy")
50 s.handler.ServeHTTP(s.resp, s.req)
52 c.Check(s.resp.Code, check.Equals, http.StatusUnauthorized)
55 func (s *AggregatorSuite) TestEmptyConfig(c *check.C) {
56 s.handler.ServeHTTP(s.resp, s.req)
60 type unhealthyHandler struct{}
62 func (*unhealthyHandler) ServeHTTP(resp http.ResponseWriter, req *http.Request) {
63 resp.Write([]byte(`{"health":"ERROR"}`))
66 func (s *AggregatorSuite) TestUnhealthy(c *check.C) {
67 srv := httptest.NewServer(&unhealthyHandler{})
71 if parts := strings.Split(srv.URL, ":"); len(parts) < 3 {
74 port = parts[len(parts)-1]
76 s.handler.Config.Clusters["zzzzz"].SystemNodes["localhost"] = arvados.SystemNode{
77 Keepstore: arvados.Keepstore{Listen: ":" + port},
79 s.handler.ServeHTTP(s.resp, s.req)
83 func (s *AggregatorSuite) checkError(c *check.C) {
84 c.Check(s.resp.Code, check.Not(check.Equals), http.StatusOK)
85 var body map[string]interface{}
86 err := json.NewDecoder(s.resp.Body).Decode(&body)
87 c.Check(err, check.IsNil)
88 c.Check(body["health"], check.Not(check.Equals), "OK")
91 func (s *AggregatorSuite) checkUnhealthy(c *check.C) {
92 c.Check(s.resp.Code, check.Equals, http.StatusOK)
93 var body map[string]interface{}
94 err := json.NewDecoder(s.resp.Body).Decode(&body)
95 c.Check(err, check.IsNil)
96 c.Check(body["health"], check.Equals, "ERROR")
99 func (s *AggregatorSuite) checkOK(c *check.C) {
100 c.Check(s.resp.Code, check.Equals, http.StatusOK)
101 var body map[string]interface{}
102 err := json.NewDecoder(s.resp.Body).Decode(&body)
103 c.Check(err, check.IsNil)
104 c.Check(body["health"], check.Equals, "OK")