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  }