github.com/sequix/cortex@v1.1.6/pkg/chunk/local/fs_object_client_test.go (about) 1 package local 2 3 import ( 4 "context" 5 "io/ioutil" 6 "os" 7 "testing" 8 "time" 9 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestFsObjectClient_DeleteChunksBefore(t *testing.T) { 14 deleteFilesOlderThan := 10 * time.Minute 15 16 fsChunksDir, err := ioutil.TempDir(os.TempDir(), "fs-chunks") 17 require.NoError(t, err) 18 19 bucketClient, err := NewFSObjectClient(FSConfig{ 20 Directory: fsChunksDir, 21 }) 22 require.NoError(t, err) 23 24 defer func() { 25 require.NoError(t, os.RemoveAll(fsChunksDir)) 26 }() 27 28 file1 := "file1" 29 file2 := "file2" 30 31 // Creating dummy files 32 require.NoError(t, os.Chdir(fsChunksDir)) 33 34 f, err := os.Create(file1) 35 require.NoError(t, err) 36 require.NoError(t, f.Close()) 37 38 f, err = os.Create(file2) 39 require.NoError(t, err) 40 require.NoError(t, f.Close()) 41 42 // Verify whether all files are created 43 files, _ := ioutil.ReadDir(".") 44 require.Equal(t, 2, len(files), "Number of files should be 2") 45 46 // No files should be deleted, since all of them are not much older 47 require.NoError(t, bucketClient.DeleteChunksBefore(context.Background(), time.Now().Add(-deleteFilesOlderThan))) 48 files, _ = ioutil.ReadDir(".") 49 require.Equal(t, 2, len(files), "Number of files should be 2") 50 51 // Changing mtime of file1 to make it look older 52 require.NoError(t, os.Chtimes(file1, time.Now().Add(-deleteFilesOlderThan), time.Now().Add(-deleteFilesOlderThan))) 53 require.NoError(t, bucketClient.DeleteChunksBefore(context.Background(), time.Now().Add(-deleteFilesOlderThan))) 54 55 // Verifying whether older file got deleted 56 files, _ = ioutil.ReadDir(".") 57 require.Equal(t, 1, len(files), "Number of files should be 1 after enforcing retention") 58 }