X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/6fab045dba4714e9c748337ef974ef257df37353..482dc81f2b7533043bc5195bded942f970f163d8:/sdk/go/keepclient/discover_test.go diff --git a/sdk/go/keepclient/discover_test.go b/sdk/go/keepclient/discover_test.go index 43a984e8c4..379d44c820 100644 --- a/sdk/go/keepclient/discover_test.go +++ b/sdk/go/keepclient/discover_test.go @@ -1,21 +1,65 @@ package keepclient import ( + "crypto/md5" "fmt" + "gopkg.in/check.v1" + "net/http" + "os" "time" "git.curoverse.com/arvados.git/sdk/go/arvadosclient" + "git.curoverse.com/arvados.git/sdk/go/arvadostest" ) -func ExampleRefreshServices() { +func ExampleKeepClient_RefreshServices() { arv, err := arvadosclient.MakeArvadosClient() if err != nil { panic(err) } - kc, err := MakeKeepClient(&arv) + 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) +}