mirror of
https://github.com/minio/minio.git
synced 2025-11-20 18:06:10 -05:00
Purge stale object cache entry (#2770)
This commit is contained in:
committed by
Harshavardhana
parent
27e474b3d2
commit
669783f875
@@ -57,7 +57,9 @@ func TestObjExpiry(t *testing.T) {
|
||||
}
|
||||
// Wait for 500 millisecond.
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
_, err = cache.Open("test")
|
||||
// Setting objModTime to the beginning of golang's time.Time to avoid deletion of stale entry.
|
||||
fakeObjModTime := time.Time{}
|
||||
_, err = cache.Open("test", fakeObjModTime)
|
||||
if err != testCase.err {
|
||||
t.Errorf("Test case 1 expected %s, got instead %s", testCase.err, err)
|
||||
}
|
||||
@@ -65,6 +67,9 @@ func TestObjExpiry(t *testing.T) {
|
||||
|
||||
// TestObjCache - tests various cases for object cache behavior.
|
||||
func TestObjCache(t *testing.T) {
|
||||
// Setting objModTime to the beginning of golang's time.Time to avoid deletion of stale entry.
|
||||
fakeObjModTime := time.Time{}
|
||||
|
||||
// Non exhaustive list of all object cache behavior cases.
|
||||
testCases := []struct {
|
||||
expiry time.Duration
|
||||
@@ -117,7 +122,7 @@ func TestObjCache(t *testing.T) {
|
||||
// Test 1 validating Open failure.
|
||||
testCase := testCases[0]
|
||||
cache := New(testCase.cacheSize, testCase.expiry)
|
||||
_, err := cache.Open("test")
|
||||
_, err := cache.Open("test", fakeObjModTime)
|
||||
if testCase.err != err {
|
||||
t.Errorf("Test case 2 expected to pass, failed instead %s", err)
|
||||
}
|
||||
@@ -157,7 +162,7 @@ func TestObjCache(t *testing.T) {
|
||||
if err = w.Close(); err != nil {
|
||||
t.Errorf("Test case 4 expected to pass, failed instead %s", err)
|
||||
}
|
||||
r, err := cache.Open("test")
|
||||
r, err := cache.Open("test", fakeObjModTime)
|
||||
if err != nil {
|
||||
t.Errorf("Test case 4 expected to pass, failed instead %s", err)
|
||||
}
|
||||
@@ -186,7 +191,7 @@ func TestObjCache(t *testing.T) {
|
||||
}
|
||||
// Delete the cache entry.
|
||||
cache.Delete("test")
|
||||
_, err = cache.Open("test")
|
||||
_, err = cache.Open("test", fakeObjModTime)
|
||||
if testCase.err != err {
|
||||
t.Errorf("Test case 5 expected to pass, failed instead %s", err)
|
||||
}
|
||||
@@ -237,3 +242,23 @@ func TestObjCache(t *testing.T) {
|
||||
t.Errorf("Test case 7 expected to fail, passed instead")
|
||||
}
|
||||
}
|
||||
|
||||
// TestStateEntryPurge - tests if objCache purges stale entry and returns ErrKeyNotFoundInCache.
|
||||
func TestStaleEntryPurge(t *testing.T) {
|
||||
cache := New(1024, NoExpiry)
|
||||
w, err := cache.Create("test", 5)
|
||||
if err != nil {
|
||||
t.Errorf("Test case expected to pass, failed instead %s", err)
|
||||
}
|
||||
// Write '5' bytes.
|
||||
w.Write([]byte("Hello"))
|
||||
// Close to successfully save into cache.
|
||||
if err = w.Close(); err != nil {
|
||||
t.Errorf("Test case expected to pass, failed instead %s", err)
|
||||
}
|
||||
|
||||
_, err = cache.Open("test", time.Now().AddDate(0, 0, 1).UTC())
|
||||
if err != ErrKeyNotFoundInCache {
|
||||
t.Errorf("Test case expected to return ErrKeyNotFoundInCache, instead returned %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user