10078: config parameter to hide / show recent_collections panel in dashboard.
[arvados.git] / services / keepstore / s3_volume_test.go
index e41e04b36323e6ff250795d6c1a7a2728a490c1a..6ba390426f51dbe4f8ef1d6ac2ce2a27b4d3f3b2 100644 (file)
@@ -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)
        }
 }