github.com/nutsdb/nutsdb@v1.0.4/rwmanager_fileio_test.go (about)

     1  package nutsdb
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestRWManager_FileIO_All(t *testing.T) {
    11  
    12  	filePath := "/tmp/foo_rw_fileio"
    13  	maxFdNums := 20
    14  	cleanThreshold := 0.5
    15  	var fdm *fdManager
    16  
    17  	t.Run("test write read", func(t *testing.T) {
    18  		fdm = newFdm(maxFdNums, cleanThreshold)
    19  		fd, err := fdm.getFd(filePath)
    20  		if err != nil {
    21  			require.NoError(t, err)
    22  		}
    23  
    24  		rwManager := &FileIORWManager{fd, filePath, fdm, 256 * MB}
    25  		b := []byte("hello")
    26  		off := int64(3)
    27  		_, err = rwManager.WriteAt(b, off)
    28  		if err != nil {
    29  			require.NoError(t, err)
    30  		}
    31  
    32  		bucketBufLen := len(b)
    33  		bucketBuf := make([]byte, bucketBufLen)
    34  		n, err := rwManager.ReadAt(bucketBuf, off)
    35  		if err != nil {
    36  			require.NoError(t, err)
    37  		}
    38  
    39  		assert.Equal(t, bucketBufLen, n)
    40  		assert.Equal(t, b, bucketBuf)
    41  	})
    42  }