1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
package cgroups
import (
"os"
"path/filepath"
"sort"
"testing"
"github.com/intel/goresctrl/pkg/testutils"
)
var fsMockUtFiles map[string]mockFile = map[string]mockFile{
"/my/emptyfile": {},
"/my/emptydir": {
info: &mockFileInfo{mode: os.ModeDir},
},
"/my/dir/data0": {data: []byte("abc")},
"/my/dir/data1": {data: []byte("xyz")},
}
func TestWalk(t *testing.T) {
fs := NewFsiMock(fsMockUtFiles)
foundNotInMyDir := []string{}
err := fs.Walk("/", func(path string, info os.FileInfo, err error) error {
if filepath.Base(path) == "dir" {
return filepath.SkipDir
}
foundNotInMyDir = append(foundNotInMyDir, path)
return nil
})
testutils.VerifyNoError(t, err)
sort.Strings(foundNotInMyDir)
testutils.VerifyStringSlices(t, []string{"/", "/my", "/my/emptydir", "/my/emptyfile"}, foundNotInMyDir)
}
func TestReadWrite(t *testing.T) {
var info os.FileInfo
fs := NewFsiMock(fsMockUtFiles)
f, err := fs.OpenFile("/my/dir/data0", os.O_WRONLY, 0)
testutils.VerifyNoError(t, err)
_, err = f.Write([]byte{})
testutils.VerifyNoError(t, err)
_, err = f.Write([]byte("01"))
testutils.VerifyNoError(t, err)
info, err = fs.Lstat("/my/dir/data0")
testutils.VerifyNoError(t, err)
if info.Size() != 3 {
t.Errorf("expected file size %d, got %d", 3, info.Size())
}
_, err = f.Write([]byte("23"))
testutils.VerifyNoError(t, err)
if info.Size() != 4 {
t.Errorf("expected file size %d, got %d", 4, info.Size())
}
f.Close()
f, err = fs.OpenFile("/my/dir/data0", os.O_RDONLY, 0)
testutils.VerifyNoError(t, err)
buf := make([]byte, 10)
bytes, err := f.Read(buf)
testutils.VerifyNoError(t, err)
if bytes != 4 {
t.Errorf("expected to read %d bytes, Read returned %d", 4, bytes)
}
testutils.VerifyStringSlices(t, []string{"0123"}, []string{string(buf[:bytes])})
}
|