X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/78d74f846e1b35b6b65d76c345227845d00a9722..ffe1fe1c77743147ee82aacdc50edde3672cd748:/services/keepstore/s3_volume_test.go diff --git a/services/keepstore/s3_volume_test.go b/services/keepstore/s3_volume_test.go index e41e04b363..6ba390426f 100644 --- a/services/keepstore/s3_volume_test.go +++ b/services/keepstore/s3_volume_test.go @@ -250,6 +250,7 @@ func (s *StubbedS3Suite) TestBackendStates(c *check.C) { return loc, blk } + // Check canGet loc, blk := setupScenario() buf := make([]byte, len(blk)) _, err := v.Get(loc, buf) @@ -258,6 +259,7 @@ func (s *StubbedS3Suite) TestBackendStates(c *check.C) { c.Check(os.IsNotExist(err), check.Equals, true) } + // Call Trash, then check canTrash and canGetAfterTrash loc, blk = setupScenario() err = v.Trash(loc) c.Check(err == nil, check.Equals, scenario.canTrash) @@ -267,10 +269,21 @@ func (s *StubbedS3Suite) TestBackendStates(c *check.C) { c.Check(os.IsNotExist(err), check.Equals, true) } + // Call Untrash, then check canUntrash loc, blk = setupScenario() err = v.Untrash(loc) c.Check(err == nil, check.Equals, scenario.canUntrash) + if scenario.dataT != none || scenario.trashT != none { + // In all scenarios where the data exists, we + // should be able to Get after Untrash -- + // regardless of timestamps, errors, race + // conditions, etc. + _, err = v.Get(loc, buf) + c.Check(err, check.IsNil) + } + // Call EmptyTrash, then check haveTrashAfterEmpty and + // freshAfterEmpty loc, blk = setupScenario() v.EmptyTrash() _, err = v.Bucket.Head("trash/"+loc, nil) @@ -282,6 +295,15 @@ func (s *StubbedS3Suite) TestBackendStates(c *check.C) { // allowance for 1s timestamp precision) c.Check(t.After(t0.Add(-time.Second)), check.Equals, true) } + + // Check for current Mtime after Put (applies to all + // scenarios) + loc, blk = setupScenario() + err = v.Put(loc, blk) + c.Check(err, check.IsNil) + t, err := v.Mtime(loc) + c.Check(err, check.IsNil) + c.Check(t.After(t0.Add(-time.Second)), check.Equals, true) } }