X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/65efe2535e49058ccf8250f93e958ea653f55cd8..7c7dc19ffa0a20fff6d97e51c874bfaca9596b24:/tools/keep-rsync/keep-rsync_test.go diff --git a/tools/keep-rsync/keep-rsync_test.go b/tools/keep-rsync/keep-rsync_test.go index afc27f513a..6f128c69a1 100644 --- a/tools/keep-rsync/keep-rsync_test.go +++ b/tools/keep-rsync/keep-rsync_test.go @@ -49,6 +49,7 @@ func (s *DoMainTestSuite) SetUpSuite(c *C) { var kcSrc, kcDst *keepclient.KeepClient var srcKeepServicesJSON, dstKeepServicesJSON, blobSigningKey string +var blobSignatureTTL = time.Duration(2*7*24) * time.Hour func (s *ServerRequiredSuite) SetUpTest(c *C) { // reset all variables between tests @@ -57,6 +58,7 @@ func (s *ServerRequiredSuite) SetUpTest(c *C) { dstKeepServicesJSON = "" kcSrc = &keepclient.KeepClient{} kcDst = &keepclient.KeepClient{} + keepclient.ClearCache() } func (s *ServerRequiredSuite) TearDownTest(c *C) { @@ -64,6 +66,7 @@ func (s *ServerRequiredSuite) TearDownTest(c *C) { } func (s *DoMainTestSuite) SetUpTest(c *C) { + keepclient.ClearCache() args := []string{"keep-rsync"} os.Args = args } @@ -99,10 +102,10 @@ func setupRsync(c *C, enforcePermissions bool, replications int) { // setup keepclients var err error - kcSrc, err = setupKeepClient(srcConfig, srcKeepServicesJSON, false, 0) + kcSrc, _, err = setupKeepClient(srcConfig, srcKeepServicesJSON, false, 0, blobSignatureTTL) c.Check(err, IsNil) - kcDst, err = setupKeepClient(dstConfig, dstKeepServicesJSON, true, replications) + kcDst, _, err = setupKeepClient(dstConfig, dstKeepServicesJSON, true, replications, 0) c.Check(err, IsNil) for uuid := range kcSrc.LocalRoots() { @@ -174,7 +177,7 @@ func testNoCrosstalk(c *C, testData string, kc1, kc2 *keepclient.KeepClient) { c.Assert(err, Equals, nil) locator = strings.Split(locator, "+")[0] - _, _, _, err = kc2.Get(keepclient.SignLocator(locator, kc2.Arvados.ApiToken, time.Now().AddDate(0, 0, 1), []byte(blobSigningKey))) + _, _, _, err = kc2.Get(keepclient.SignLocator(locator, kc2.Arvados.ApiToken, time.Now().AddDate(0, 0, 1), blobSignatureTTL, []byte(blobSigningKey))) c.Assert(err, NotNil) c.Check(err.Error(), Equals, "Block not found") } @@ -256,7 +259,7 @@ func testKeepRsync(c *C, enforcePermissions bool, prefix string) { // setupTestData setupTestData(c, prefix) - err := performKeepRsync(kcSrc, kcDst, blobSigningKey, prefix) + err := performKeepRsync(kcSrc, kcDst, blobSignatureTTL, blobSigningKey, prefix) c.Check(err, IsNil) // Now GetIndex from dst and verify that all 5 from src and the 2 extra blocks are found @@ -327,7 +330,7 @@ func (s *ServerRequiredSuite) TestErrorDuringRsync_FakeSrcKeepservers(c *C) { setupRsync(c, false, 1) - err := performKeepRsync(kcSrc, kcDst, "", "") + err := performKeepRsync(kcSrc, kcDst, blobSignatureTTL, "", "") log.Printf("Err = %v", err) c.Check(strings.Contains(err.Error(), "no such host"), Equals, true) } @@ -339,7 +342,7 @@ func (s *ServerRequiredSuite) TestErrorDuringRsync_FakeDstKeepservers(c *C) { setupRsync(c, false, 1) - err := performKeepRsync(kcSrc, kcDst, "", "") + err := performKeepRsync(kcSrc, kcDst, blobSignatureTTL, "", "") log.Printf("Err = %v", err) c.Check(strings.Contains(err.Error(), "no such host"), Equals, true) } @@ -354,7 +357,7 @@ func (s *ServerRequiredSuite) TestErrorDuringRsync_ErrorGettingBlockFromSrc(c *C // Change blob signing key to a fake key, so that Get from src fails blobSigningKey = "thisisfakeblobsigningkey" - err := performKeepRsync(kcSrc, kcDst, blobSigningKey, "") + err := performKeepRsync(kcSrc, kcDst, blobSignatureTTL, blobSigningKey, "") c.Check(strings.Contains(err.Error(), "HTTP 403 \"Forbidden\""), Equals, true) } @@ -368,7 +371,7 @@ func (s *ServerRequiredSuite) TestErrorDuringRsync_ErrorPuttingBlockInDst(c *C) // Increase Want_replicas on dst to result in insufficient replicas error during Put kcDst.Want_replicas = 2 - err := performKeepRsync(kcSrc, kcDst, blobSigningKey, "") + err := performKeepRsync(kcSrc, kcDst, blobSignatureTTL, blobSigningKey, "") c.Check(strings.Contains(err.Error(), "Could not write sufficient replicas"), Equals, true) } @@ -416,6 +419,18 @@ func (s *ServerNotRequiredSuite) TestLoadConfig_ErrorLoadingSrcConfig(c *C) { c.Assert(strings.Contains(err.Error(), "no such file or directory"), Equals, true) } +func (s *ServerNotRequiredSuite) TestSetupKeepClient_NoBlobSignatureTTL(c *C) { + var srcConfig apiConfig + srcConfig.APIHost = os.Getenv("ARVADOS_API_HOST") + srcConfig.APIToken = arvadostest.DataManagerToken + srcConfig.APIHostInsecure = matchTrue.MatchString(os.Getenv("ARVADOS_API_HOST_INSECURE")) + arvadostest.StartKeep(2, false) + + _, ttl, err := setupKeepClient(srcConfig, srcKeepServicesJSON, false, 0, 0) + c.Check(err, IsNil) + c.Assert(ttl, Equals, blobSignatureTTL) +} + func setupConfigFile(c *C, name string) *os.File { // Setup a config file file, err := ioutil.TempFile(os.TempDir(), name)