github.com/grafana/pyroscope@v1.18.0/pkg/objstore/reader_test.go (about)

     1  package objstore_test
     2  
     3  import (
     4  	"context"
     5  	"os"
     6  	"path/filepath"
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/require"
    10  
    11  	"github.com/grafana/pyroscope/pkg/objstore/client"
    12  	"github.com/grafana/pyroscope/pkg/objstore/providers/filesystem"
    13  )
    14  
    15  func Test_FileSystem(t *testing.T) {
    16  	testDir := t.TempDir()
    17  	b, err := client.NewBucket(context.Background(), client.Config{
    18  		StorageBackendConfig: client.StorageBackendConfig{
    19  			Backend: client.Filesystem,
    20  			Filesystem: filesystem.Config{
    21  				Directory: testDir,
    22  			},
    23  		},
    24  		Prefix: "testdata/",
    25  	}, "foo")
    26  	require.NoError(t, err)
    27  
    28  	// make the file locally
    29  	dir := filepath.Join(testDir, "testdata")
    30  	require.NoError(t, os.MkdirAll(dir, 0o755))
    31  	require.NoError(t, os.WriteFile(dir+"/foo.parquet", []byte(`12345`), 0o644))
    32  
    33  	ra, err := b.ReaderAt(context.Background(), "foo.parquet")
    34  	require.NoError(t, err)
    35  	defer func() {
    36  		require.NoError(t, ra.Close())
    37  	}()
    38  	require.NotNil(t, ra)
    39  	require.IsType(t, &filesystem.FileReaderAt{}, ra)
    40  
    41  	buf := make([]byte, 2)
    42  	read, err := ra.ReadAt(buf, 3)
    43  	require.NoError(t, err)
    44  	require.Equal(t, 2, read)
    45  	require.Equal(t, []byte("45"), buf)
    46  }