lib9p

Go 9P library.
Log | Files | Refs

commit bf3141ec2d8a53f3a4e7988a10062e5184b442ad
parent 0b14fde3fefe9f1ce61d29b688aacaa5e9aedd4f
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Sat, 21 Oct 2023 09:11:29 +0900

update req_test

Diffstat:
Mreq.go | 3++-
Mreq_test.go | 28+++++++++++++++++++---------
Mserver.go | 8++++++--
3 files changed, 27 insertions(+), 12 deletions(-)

diff --git a/req.go b/req.go @@ -22,8 +22,9 @@ type Req struct { func (r *Req) flush() { // TODO: need mutex? r.cancel() + r.pool.delete(r.tag) // wait for tag being deleted. - <-r.tagDeleted + // <-r.tagDeleted } type ReqPool struct { diff --git a/req_test.go b/req_test.go @@ -57,18 +57,28 @@ func TestFlush(t *testing.T) { if err != nil { t.Fatalf("open: %v", err) } - ctx1, cancel1 := context.WithCancel(ctx) done := make(chan string) + tag0, err := c.tPool.add() + if err != nil { + t.Fatalf("add tag: %v", err) + } + ctx1, cancel1 := context.WithCancel(ctx) + var data []byte go func() { - tag, err := c.tPool.add() - if err != nil { - t.Fatalf("add tag: %v", err) - } - data, err := c.Read(ctx1, tag, 1, 0, mSize-IOHDRSZ) - c.tPool.delete(tag) - t.Logf("read data: %v, err: %v", data, err) - done <- "read goroutine returned" + data, err = c.Read(ctx1, tag0, 1, 0, mSize-IOHDRSZ) + c.tPool.delete(tag0) + close(done) }() + tag, err = c.tPool.add() + if err != nil { + t.Fatalf("add tag: %v", err) + } + err = c.Flush(ctx, tag, tag0) + c.tPool.delete(tag) + if err != nil { + t.Errorf("flush: %v", err) + } cancel1() t.Logf("canceled: %v", <-done) + t.Logf("read data: %v, err: %v", data, err) } diff --git a/server.go b/server.go @@ -261,7 +261,7 @@ func sFlush(ctx context.Context, s *Server, r *Req) { func rFlush(r *Req, err error) { if err != nil { - panic("err in flush") + panic(fmt.Errorf("err in flush: %v", err)) } if r.oldReq != nil { r.oldReq.flush() @@ -878,6 +878,8 @@ L: sAuth(ctx1, s, r) case *TAttach: sAttach(ctx1, s, r) + case *TFlush: + sFlush(ctx1, s, r) case *TWalk: sWalk(ctx1, s, r) case *TOpen: @@ -911,13 +913,15 @@ L: func respond(ctx context.Context, r *Req, err error) { switch r.ifcall.(type) { default: - panic("bug") + panic(fmt.Errorf("bug: r.ifcall: %v", r.ifcall)) case *TVersion: rVersion(r, err) case *TAuth: rAuth(r, err) case *TAttach: rAttach(r, err) + case *TFlush: + rFlush(r, err) case *TWalk: rWalk(r, err) case *TOpen: