X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/dfb9a5e285e4275c26b6f959a04babd5a8ad836e..7c7dc19ffa0a20fff6d97e51c874bfaca9596b24:/sdk/go/keepclient/discover_test.go diff --git a/sdk/go/keepclient/discover_test.go b/sdk/go/keepclient/discover_test.go index 43a984e8c4..4065ce342e 100644 --- a/sdk/go/keepclient/discover_test.go +++ b/sdk/go/keepclient/discover_test.go @@ -1,21 +1,52 @@ package keepclient import ( + "crypto/md5" "fmt" - "time" + "net/http" + "os" + + "gopkg.in/check.v1" "git.curoverse.com/arvados.git/sdk/go/arvadosclient" + "git.curoverse.com/arvados.git/sdk/go/arvadostest" ) -func ExampleRefreshServices() { - arv, err := arvadosclient.MakeArvadosClient() - if err != nil { - panic(err) - } - kc, err := MakeKeepClient(&arv) - if err != nil { - panic(err) - } - go kc.RefreshServices(5*time.Minute, 3*time.Second) - fmt.Printf("LocalRoots: %#v\n", kc.LocalRoots()) +func (s *ServerRequiredSuite) TestOverrideDiscovery(c *check.C) { + defer os.Setenv("ARVADOS_KEEP_SERVICES", "") + + hash := fmt.Sprintf("%x+3", md5.Sum([]byte("TestOverrideDiscovery"))) + st := StubGetHandler{ + c, + hash, + arvadostest.ActiveToken, + http.StatusOK, + []byte("TestOverrideDiscovery")} + ks := RunSomeFakeKeepServers(st, 2) + + os.Setenv("ARVADOS_KEEP_SERVICES", "") + arv1, err := arvadosclient.MakeArvadosClient() + c.Assert(err, check.IsNil) + arv1.ApiToken = arvadostest.ActiveToken + + os.Setenv("ARVADOS_KEEP_SERVICES", ks[0].url+" "+ks[1].url+" ") + arv2, err := arvadosclient.MakeArvadosClient() + c.Assert(err, check.IsNil) + arv2.ApiToken = arvadostest.ActiveToken + + // ARVADOS_KEEP_SERVICES was empty when we created arv1, but + // it pointed to our stub servers when we created + // arv2. Regardless of what it's set to now, a keepclient for + // arv2 should use our stub servers, but one created for arv1 + // should not. + + kc1, err := MakeKeepClient(arv1) + c.Assert(err, check.IsNil) + kc2, err := MakeKeepClient(arv2) + c.Assert(err, check.IsNil) + + _, _, _, err = kc1.Get(hash) + c.Check(err, check.NotNil) + _, _, _, err = kc2.Get(hash) + c.Check(err, check.IsNil) }