Skip to content

Commit 757a4af

Browse files
committed
fs: simplify TestReaddirplusParallel
Change-Id: I08155e2fdd5aaeab9e85052d849a9c0538a078bc
1 parent 6bbffd6 commit 757a4af

File tree

1 file changed

+37
-18
lines changed

1 file changed

+37
-18
lines changed

fs/mem_test.go

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,19 @@ func TestDataSymlink(t *testing.T) {
237237
}
238238
}
239239

240+
func readDirStream(st DirStream) (result []fuse.DirEntry, errno syscall.Errno) {
241+
for st.HasNext() {
242+
var de fuse.DirEntry
243+
de, errno = st.Next()
244+
if errno != 0 {
245+
return
246+
}
247+
248+
result = append(result, de)
249+
}
250+
return
251+
}
252+
240253
func TestReaddirplusParallel(t *testing.T) {
241254
root := &Inode{}
242255
N := 100
@@ -265,39 +278,45 @@ func TestReaddirplusParallel(t *testing.T) {
265278
},
266279
})
267280

268-
read := func() (map[string]int64, error) {
269-
es, err := os.ReadDir(mntDir)
270-
if err != nil {
271-
return nil, err
281+
read := func() ([]fuse.DirEntry, error) {
282+
ds, errno := NewLoopbackDirStream(mntDir)
283+
if errno != 0 {
284+
return nil, errno
272285
}
273-
274-
r := map[string]int64{}
275-
for _, e := range es {
276-
inf, err := e.Info()
277-
if err != nil {
278-
return nil, err
279-
}
280-
r[e.Name()] = inf.Size()
286+
defer ds.Close()
287+
es, errno := readDirStream(ds)
288+
if errno != 0 {
289+
return nil, errno
281290
}
282-
return r, nil
291+
return es, nil
283292
}
284293

294+
want, err := read()
295+
if err != nil {
296+
t.Fatal(err)
297+
}
298+
if len(want) != N {
299+
t.Fatalf("read back %d entries, want %d", len(want), N)
300+
}
285301
var wg sync.WaitGroup
286302
for i := 0; i < P; i++ {
287303
wg.Add(1)
288304
go func() {
289305
defer wg.Done()
290-
res, err := read()
306+
got, err := read()
291307
if err != nil {
292308
t.Errorf("readdir: %v", err)
293309
return
294310
}
295-
if got, want := len(res), len(names); got != want {
296-
t.Errorf("got %d want %d", got, want)
311+
if len(got) != len(want) {
312+
t.Errorf("got len %d, want %d", len(got), len(want))
297313
return
298314
}
299-
if !reflect.DeepEqual(res, names) {
300-
t.Errorf("maps have different content")
315+
for i := 0; i < len(got) && i < len(want); i++ {
316+
if !reflect.DeepEqual(got[i], want[i]) {
317+
t.Errorf("entry %d: got %v, want %v", i, got[i], want[i])
318+
return
319+
}
301320
}
302321
}()
303322
}

0 commit comments

Comments
 (0)