github.com/dshulyak/uring@v0.0.0-20210209113719-1b2ec51f1542/fs/fixed_test.go (about) 1 package fs 2 3 import ( 4 "io/ioutil" 5 "os" 6 "testing" 7 8 "github.com/dshulyak/uring/loop" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func makeFiles(tb testing.TB, n int) []*os.File { 13 tb.Helper() 14 files := make([]*os.File, n) 15 for i := range files { 16 f, err := ioutil.TempFile("", "testing-fixed-") 17 require.NoError(tb, err) 18 tb.Cleanup(func() { 19 os.Remove(f.Name()) 20 }) 21 files[i] = f 22 } 23 return files 24 } 25 26 func TestFixedFiles(t *testing.T) { 27 queue, err := loop.Setup(32, nil, nil) 28 require.NoError(t, err) 29 defer queue.Close() 30 31 ff := newFixedFiles(queue, 10) 32 files := makeFiles(t, 10) 33 34 for i, f := range files { 35 idx, err := ff.register(f.Fd()) 36 require.NoError(t, err) 37 require.Equal(t, i, int(idx)) 38 } 39 for i := range files { 40 require.NoError(t, ff.unregister(uintptr(i))) 41 } 42 for i, f := range files { 43 idx, err := ff.register(f.Fd()) 44 require.NoError(t, err) 45 require.Equal(t, i, int(idx)) 46 } 47 files2 := makeFiles(t, 5) 48 for i, f := range files2 { 49 idx, err := ff.register(f.Fd()) 50 require.NoError(t, err) 51 require.Equal(t, i+len(files), int(idx)) 52 } 53 54 }