10666: Added Version information to status.json on keep-web,
authorLucas Di Pentima <ldipentima@veritasgenetics.com>
Thu, 30 Nov 2017 17:49:38 +0000 (14:49 -0300)
committerLucas Di Pentima <ldipentima@veritasgenetics.com>
Thu, 30 Nov 2017 17:49:38 +0000 (14:49 -0300)
keepstore & ws.
Added tests.

Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <ldipentima@veritasgenetics.com>

services/keep-web/handler.go
services/keep-web/status_test.go
services/keepstore/handlers.go
services/keepstore/pull_worker_test.go
services/ws/router.go
services/ws/server_test.go

index fd36218bc1c7a3c96e9d8917e8ecc60a1641ba55..161864a8b948581299744ee4ea16020241fe6dc6 100644 (file)
@@ -24,6 +24,7 @@ import (
        "git.curoverse.com/arvados.git/sdk/go/health"
        "git.curoverse.com/arvados.git/sdk/go/httpserver"
        "git.curoverse.com/arvados.git/sdk/go/keepclient"
+       arvadosVersion "git.curoverse.com/arvados.git/sdk/go/version"
        "golang.org/x/net/webdav"
 )
 
@@ -90,8 +91,10 @@ func (h *handler) setup() {
 func (h *handler) serveStatus(w http.ResponseWriter, r *http.Request) {
        status := struct {
                cacheStats
+               Version string
        }{
                cacheStats: h.Config.Cache.Stats(),
+               Version:    arvadosVersion.GetVersion(),
        }
        json.NewEncoder(w).Encode(status)
 }
index 5f2d44cbe4d7ce4c12f86417763d02c28f0c5782..0a2b9eb988dce96c4791f7cbbaf0c602d5b16980 100644 (file)
@@ -31,6 +31,7 @@ func (s *UnitSuite) TestStatus(c *check.C) {
        err := json.NewDecoder(resp.Body).Decode(&status)
        c.Check(err, check.IsNil)
        c.Check(status["Cache.Requests"], check.Equals, float64(0))
+       c.Check(status["Version"], check.Not(check.Equals), "")
 }
 
 func (s *IntegrationSuite) TestNoStatusFromVHost(c *check.C) {
index 2d90aba14e4d36ddf41f035282b66100967d783b..5cd3aa8b7146d18a6eb4506ddee8cb9a3bcdb7a0 100644 (file)
@@ -31,6 +31,7 @@ import (
 
        "git.curoverse.com/arvados.git/sdk/go/health"
        "git.curoverse.com/arvados.git/sdk/go/httpserver"
+       arvadosVersion "git.curoverse.com/arvados.git/sdk/go/version"
        log "github.com/Sirupsen/logrus"
 )
 
@@ -311,6 +312,7 @@ type NodeStatus struct {
        TrashQueue      WorkQueueStatus
        RequestsCurrent int
        RequestsMax     int
+       Version         string
 }
 
 var st NodeStatus
@@ -346,6 +348,7 @@ func (rtr *router) StatusHandler(resp http.ResponseWriter, req *http.Request) {
 
 // populate the given NodeStatus struct with current values.
 func (rtr *router) readNodeStatus(st *NodeStatus) {
+       st.Version = arvadosVersion.GetVersion()
        vols := KeepVM.AllReadable()
        if cap(st.Volumes) < len(vols) {
                st.Volumes = make([]*volumeStatusEnt, len(vols))
index 9e547f30d0c1c29cd8f510c5b72c2ae6ceba4acf..7a8297039b513d62b2f8a38ab81ab0f9bc89f187 100644 (file)
@@ -271,6 +271,7 @@ func (s *PullWorkerTestSuite) performTest(testData PullWorkerTestData, c *C) {
 
        c.Check(getStatusItem("PullQueue", "InProgress"), Equals, float64(0))
        c.Check(getStatusItem("PullQueue", "Queued"), Equals, float64(0))
+       c.Check(getStatusItem("Version"), Not(Equals), "")
 
        response := IssueRequest(&testData.req)
        c.Assert(response.Code, Equals, testData.responseCode)
index 2b9bd66b1c466cfdee12d534cddc7eb11d4225e4..5fa16743520dd2eb93a3eb4cdcead5824a327186 100644 (file)
@@ -15,6 +15,7 @@ import (
 
        "git.curoverse.com/arvados.git/sdk/go/ctxlog"
        "git.curoverse.com/arvados.git/sdk/go/health"
+       arvadosVersion "git.curoverse.com/arvados.git/sdk/go/version"
        "github.com/Sirupsen/logrus"
        "golang.org/x/net/websocket"
 )
@@ -123,6 +124,7 @@ func (rtr *router) DebugStatus() interface{} {
 func (rtr *router) Status() interface{} {
        return map[string]interface{}{
                "Clients": atomic.LoadInt64(&rtr.status.ReqsActive),
+               "Version": arvadosVersion.GetVersion(),
        }
 }
 
index c1caa2ad37d31d40f962fbc1af8d43f05f18a5a9..b1f943857a18f495f2777c24aa3627855aa0d9f6 100644 (file)
@@ -5,6 +5,7 @@
 package main
 
 import (
+       "encoding/json"
        "io/ioutil"
        "net/http"
        "sync"
@@ -90,6 +91,21 @@ func (s *serverSuite) TestHealth(c *check.C) {
        }
 }
 
+func (s *serverSuite) TestStatus(c *check.C) {
+       go s.srv.Run()
+       defer s.srv.Close()
+       s.srv.WaitReady()
+       req, err := http.NewRequest("GET", "http://"+s.srv.listener.Addr().String()+"/status.json", nil)
+       c.Assert(err, check.IsNil)
+       resp, err := http.DefaultClient.Do(req)
+       c.Check(err, check.IsNil)
+       c.Check(resp.StatusCode, check.Equals, http.StatusOK)
+       var status map[string]interface{}
+       err = json.NewDecoder(resp.Body).Decode(&status)
+       c.Check(err, check.IsNil)
+       c.Check(status["Version"], check.Not(check.Equals), "")
+}
+
 func (s *serverSuite) TestHealthDisabled(c *check.C) {
        s.cfg.ManagementToken = ""