Skip to content

Commit 9b7894f

Browse files
committed
test(fscache): add test for updating file modification time on cache hits
1 parent 8540c11 commit 9b7894f

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

store/fscache/fscache_test.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,3 +278,38 @@ func TestFSCache_SetGet_WithEncryption(t *testing.T) {
278278
"ciphertext should not contain plaintext",
279279
)
280280
}
281+
282+
func Test_fsCache_SetGet_UpdateMTime(t *testing.T) {
283+
u, err := url.Parse("fscache://" + filepath.ToSlash(t.TempDir()) +
284+
"?appname=testapp&update_mtime=on")
285+
testutil.RequireNoError(t, err)
286+
cache, err := fromURL(u)
287+
testutil.RequireNoError(t, err)
288+
t.Cleanup(func() { cache.Close() })
289+
290+
keyName := "mykey"
291+
value := []byte("some value")
292+
293+
err = cache.Set(keyName, value)
294+
testutil.RequireNoError(t, err)
295+
296+
// Get initial mtime
297+
fname := cache.fn.FileName(keyName)
298+
info1, err := fs.Stat(cache.root.FS(), fname)
299+
testutil.RequireNoError(t, err)
300+
mtime1 := info1.ModTime()
301+
302+
// Wait a bit to ensure mtime will be different
303+
time.Sleep(2 * time.Second)
304+
305+
// Get the key to update mtime
306+
_, err = cache.Get(keyName)
307+
testutil.RequireNoError(t, err)
308+
309+
// Get updated mtime
310+
info2, err := fs.Stat(cache.root.FS(), fname)
311+
testutil.RequireNoError(t, err)
312+
mtime2 := info2.ModTime()
313+
314+
testutil.AssertTrue(t, mtime2.After(mtime1))
315+
}

0 commit comments

Comments
 (0)