diff --git a/.travis.yml b/.travis.yml index ebbf57f..50cda8f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,7 @@ language: go go: - - "1.11" + - "1.12" install: - - go get -u github.com/golang/dep/cmd/dep/... - curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | bash -s -- -b $GOPATH/bin v1.10.2 - go get -u github.com/goreleaser/goreleaser script: make ci diff --git a/Makefile b/Makefile index f559d6d..e2c0787 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,19 @@ -all: +all: dep check build test + +ci: check build test + +build: go build ./... go build +check: + go mod verify + golangci-lint run + +dep: + go mod tidy + docker: all docker build -t cycoresystems/ari-proxy ./ docker push cycoresystems/ari-proxy @@ -10,12 +21,3 @@ docker: all test: go test ./... -lint: - golangci-lint run - -check: all lint test - -deps: - dep ensure - -ci: deps check diff --git a/client/client.go b/client/client.go index 548686f..d1a8c6b 100644 --- a/client/client.go +++ b/client/client.go @@ -343,6 +343,20 @@ func (c *Client) ApplicationName() string { return c.appName } +// Connected indicates whether the client is connected through to at least one ARI websocket +func (c *Client) Connected() bool { + if c.closed { + return false + } + + // TODO: this is a surrogate indicator with low resolution... we should have + // something more proactive and concrete + if len(c.cluster.App(c.appName, proxy.AnnouncementInterval*2)) < 1 { + return false + } + return true +} + // Close shuts down the client func (c *Client) Close() { if c.cancel != nil { diff --git a/go.mod b/go.mod index 5efdadf..a77b111 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.12 require ( github.com/BurntSushi/toml v0.3.1 // indirect - github.com/CyCoreSystems/ari v5.0.0-pre4+incompatible + github.com/CyCoreSystems/ari v5.0.0-pre5+incompatible github.com/fsnotify/fsnotify v0.0.0-20170329110642-4da3e2cfbabc // indirect github.com/golang/protobuf v1.3.1 // indirect github.com/hashicorp/hcl v0.0.0-20170509225359-392dba7d905e // indirect @@ -25,7 +25,7 @@ require ( github.com/spf13/jwalterweatherman v0.0.0-20170523133247-0efa5202c046 // indirect github.com/spf13/pflag v1.0.0 // indirect github.com/spf13/viper v1.0.2 - github.com/stretchr/testify v1.2.1 + github.com/stretchr/testify v1.3.0 golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5 // indirect gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7 // indirect diff --git a/go.sum b/go.sum index f89be2a..e198f5b 100644 --- a/go.sum +++ b/go.sum @@ -1,9 +1,11 @@ github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/CyCoreSystems/ari v5.0.0-pre4+incompatible h1:lZYYOu1E9snXt4al9N7/OHSw/hy3N4QyvsTZ8NPu9RA= -github.com/CyCoreSystems/ari v5.0.0-pre4+incompatible/go.mod h1:OE5g9iMBw76ybED1pXS6tj5H2ps0aBX5XaUWKvbfdk8= +github.com/CyCoreSystems/ari v5.0.0-pre5+incompatible h1:41WZopBWACn3uhcGaau3oEFRW2KX+LdOo1CNMJENN2s= +github.com/CyCoreSystems/ari v5.0.0-pre5+incompatible/go.mod h1:EjkV7D03yBCsTWgwDjGlPPktsPdjWIdEZ8RnZJwloXA= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/fsnotify/fsnotify v0.0.0-20170329110642-4da3e2cfbabc h1:fqUzyjP8DApxXq0dOZJE/NvqQkyjxiTy9ARNyRwBPEw= github.com/fsnotify/fsnotify v0.0.0-20170329110642-4da3e2cfbabc/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/go-stack/stack v1.7.0 h1:S04+lLfST9FvL8dl4R31wVUC/paZp/WQZbLmUgWboGw= @@ -61,18 +63,22 @@ github.com/spf13/viper v1.0.2 h1:Ncr3ZIuJn322w2k1qmzXDnkLAdQMlJqBa9kfAH+irso= github.com/spf13/viper v1.0.2/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.1 h1:52QO5WkIUcHGIR7EnGagH88x1bUzqGXTC5/1bDTUQ7U= -github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5 h1:58fnuSXlxZmFdJyvtTFVmVhcMLU6v5fEb/ok4wyqtNU= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/net v0.0.0-20180320002117-6078986fec03/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/sys v0.0.0-20180326154331-13d03a9a82fb/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/net v0.0.0-20190607181551-461777fb6f67 h1:rJJxsykSlULwd2P2+pg/rtnwN2FrWp4IuCxOSyS0V00= +golang.org/x/net v0.0.0-20190607181551-461777fb6f67/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190608050228-5b15430b70e3 h1:xUZPeCzQtkdgRi9RjXIA+3w3RdyDLPqiaJlza5Fqpog= +golang.org/x/sys v0.0.0-20190608050228-5b15430b70e3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=