func TestNull(t *testing.T) { var err error clnt, rootfid := setup(9000, t.Fatal) d := clnt.FidAlloc() if _, err = clnt.Walk(rootfid, d, []string{"null"}); err != nil { t.Fatalf("%v", err) } if err = clnt.Open(d, 0); err != nil { t.Fatalf("%v", err) } var b []byte if b, err = clnt.Read(d, 0, 64*1024); err != nil { t.Fatalf("%v", err) } if len(b) > 0 { t.Fatalf("Read of null: want 0, got %d bytes", len(b)) } st, err := clnt.Stat(d) if err != nil { t.Fatalf("%v", err) } if st.Name != "null" { t.Fatalf("Stat: want 'null', got %v", st.Name) } if st.Mode != 0666 { t.Fatalf("Stat: want 0777, got %o", st.Mode) } }
func BenchmarkNull(b *testing.B) { clnt, rootfid := setup(9000, b.Fatal) d := clnt.FidAlloc() if _, err := clnt.Walk(rootfid, d, []string{"null"}); err != nil { b.Fatalf("%v", err) } if err := clnt.Open(d, 0); err != nil { b.Fatalf("%v", err) } for i := 0; i < b.N; i++ { if _, err := clnt.Read(d, 0, 64*1024); err != nil { b.Fatalf("%v", err) } } }
func benchZero(b *testing.B, msize, iosize uint32) { clnt, rootfid := setup(msize, b.Fatal) d := clnt.FidAlloc() if _, err := clnt.Walk(rootfid, d, []string{"zero"}); err != nil { b.Fatalf("%v", err) } if err := clnt.Open(d, 0); err != nil { b.Fatalf("%v", err) } for i := 0; i < b.N; i++ { for tot := uint32(0); tot < iosize; { if n, err := clnt.Read(d, 0, iosize); err != nil { b.Fatalf("%v: only got %d of %d bytes", err, len(n), iosize) } else { tot += uint32(len(n)) } } } }
func TestZero(t *testing.T) { var err error clnt, rootfid := setup(9000, t.Fatal) d := clnt.FidAlloc() if _, err = clnt.Walk(rootfid, d, []string{"zero"}); err != nil { t.Fatalf("%v", err) } if err = clnt.Open(d, 0); err != nil { t.Fatalf("%v", err) } var b []byte if b, err = clnt.Read(d, 0, 64*1024); err != nil { t.Fatalf("%v", err) } if len(b) == 0 { t.Fatalf("Read of null: want > 0, got %d bytes", len(b)) } }
func TestAttachOpenReaddir(t *testing.T) { var err error clnt, rootfid := setup(9000, t.Fatal) dirfid := clnt.FidAlloc() if _, err = clnt.Walk(rootfid, dirfid, []string{}); err != nil { t.Fatalf("%v", err) } if err = clnt.Open(dirfid, 0); err != nil { t.Fatalf("%v", err) } var b []byte if b, err = clnt.Read(dirfid, 0, 64*1024); err != nil { t.Fatalf("%v", err) } var i, amt int var offset uint64 err = nil for err == nil { if b, err = clnt.Read(dirfid, offset, 64*1024); err != nil { t.Fatalf("%v", err) } if len(b) == 0 { break } for b != nil && len(b) > 0 { if _, b, amt, err = ninep.UnpackDir(b, true); err != nil { t.Errorf("UnpackDir returns %v", err) break } else { i++ offset += uint64(amt) } } } if i != len(dirQids) { t.Fatalf("Reading: got %d entries, wanted %d, err %v", i, len(dirQids), err) } t.Logf("-----------------------------> Alternate form, using readdir and File") // Alternate form, using readdir and File dirfile, err := clnt.FOpen(".", ninep.OREAD) if err != nil { t.Fatalf("%v", err) } i, amt, offset = 0, 0, 0 err = nil for err == nil { d, err := dirfile.Readdir(64) if err != nil && err != io.EOF { t.Errorf("%v", err) } if len(d) == 0 { break } i += len(d) if i >= len(dirQids) { break } } if i != len(dirQids)-1 { t.Fatalf("Readdir: got %d entries, wanted %d", i, len(dirQids)-1) } }