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 }