commit c949290b6a88b4867ea9be8881a20efa951f58b6
parent f6980e26d2d95b490f1f4018b6ef086e496212d9
Author: Matsuda Kenji <info@mtkn.jp>
Date: Sat, 13 Jan 2024 15:02:43 +0900
flush unko
Diffstat:
5 files changed, 71 insertions(+), 68 deletions(-)
diff --git a/client/client_test.go b/client/client_test.go
@@ -74,7 +74,7 @@ func TestVersion(t *testing.T) {
&lib9p.TVersion{Tag: lib9p.NOTAG, Msize: 1024, Version: "9P2000"},
&lib9p.RVersion{Tag: lib9p.NOTAG, Msize: 1024, Version: "9P2000"}},
{"1",
- &lib9p.TVersion{Tag: lib9p.NOTAG, Msize: 1024, Version: "unko"},
+ &lib9p.TVersion{Tag: lib9p.NOTAG, Msize: 1024, Version: "hoge"},
&lib9p.RVersion{Tag: lib9p.NOTAG, Msize: 1024, Version: "unknown"}},
}
for _, test := range tests {
@@ -509,7 +509,7 @@ func TestRead(t *testing.T) {
}{
{"0",
&lib9p.TRead{Fid: 0, Offset: 0, Count: 1000},
- &lib9p.RRead{Count: 4, Data: []byte("unko")}},
+ &lib9p.RRead{Count: 4, Data: []byte("hoge")}},
{"1",
&lib9p.TRead{Fid: 0, Offset: 0, Count: 1000},
&lib9p.RError{Ename: errors.New("not open")}},
@@ -571,10 +571,10 @@ func TestWrite(t *testing.T) {
rmsg lib9p.Msg
}{
{"0",
- &lib9p.TWrite{Fid: 0, Offset: 0, Count: 4, Data: []byte("unko")},
+ &lib9p.TWrite{Fid: 0, Offset: 0, Count: 4, Data: []byte("hoge")},
&lib9p.RWrite{Count: 4}},
{"1",
- &lib9p.TWrite{Fid: 0, Offset: 0, Count: 4, Data: []byte("unko")},
+ &lib9p.TWrite{Fid: 0, Offset: 0, Count: 4, Data: []byte("hoge")},
&lib9p.RError{Ename: errors.New("not open")}},
}
for _, test := range tests {
diff --git a/client/fs2_test.go b/client/fs2_test.go
@@ -15,7 +15,7 @@ func TestCleanPath(t *testing.T) {
name string
want string
}{
- {"../../../unko", "unko"},
+ {"../../../hoge", "hoge"},
{"..", "."},
{".", "."},
{"/", "."},
diff --git a/server.go b/server.go
@@ -279,7 +279,7 @@ func sAuth(ctx context.Context, c *conn, rc <-chan *request) {
setError(r, r.err)
} else {
c.s.Auth(ctx, r)
- // TODO: move this code to c.s.Auth
+ // TODO: should move this code to c.s.Auth?
if rauth, ok := r.ofcall.(*RAuth); ok {
r.afid.qidpath = rauth.Aqid.Path
}
diff --git a/server_test.go b/server_test.go
@@ -148,7 +148,7 @@ func TestSVersion(t *testing.T) {
&RVersion{Msize: 564, Version: "9P2000"}},
{&TVersion{Msize: 8 * 1024, Version: "9P2000"},
&RVersion{Msize: 1024, Version: "9P2000"}},
- {&TVersion{Msize: 1024, Version: "unko"},
+ {&TVersion{Msize: 1024, Version: "hoge"},
&RVersion{Msize: 1024, Version: "unknown"}},
}
c, rc := setupConn(nil)
@@ -195,7 +195,7 @@ func TestSAuth(t *testing.T) {
r.ofcall = &RAuth{Tag: 0, Aqid: Qid{0, 1, 2}}
}},
}
- for _, test := range tests {
+ for i, test := range tests {
func() {
c, rc := setupConn(nil)
tc := make(chan *request)
@@ -209,54 +209,33 @@ func TestSAuth(t *testing.T) {
case *RAuth:
gotmsg, ok := ofcall.(*RAuth)
if !ok {
- t.Errorf("unexpected message: %v", ofcall)
+ t.Errorf("%d: unexpected message: %v", i, ofcall)
return
}
if !reflect.DeepEqual(wantmsg, gotmsg) {
- t.Errorf("want: %v,\n\tgot: %v", wantmsg, gotmsg)
+ t.Errorf("%d: want: %v,\n\tgot: %v", i, wantmsg, gotmsg)
return
}
case *RError:
_, ok := ofcall.(*RError)
if !ok {
- t.Errorf("unexpected message: %v", ofcall)
+ t.Errorf("%d: unexpected message: %v", i, ofcall)
return
}
default:
- t.Fatalf("unexpected message: %v", wantmsg)
+ t.Fatalf("%d: unexpected message: %v", i, wantmsg)
}
}()
}
}
-func TestSFlush(t *testing.T) {
- rp := newReqPool()
- tests := []struct {
- input *request
- }{
- {&request{ifcall: &TFlush{},
- oldreq: &request{pool: rp, done: make(chan struct{})}}},
- }
- c, rc := setupConn(nil)
- tc := make(chan *request)
- ctx, cancel := context.WithCancel(context.Background())
- defer cancel()
- go sFlush(ctx, c, tc)
- for _, test := range tests {
- tc <- test.input
- if gotmsg, ok := (<-rc).ofcall.(*RFlush); !ok {
- t.Errorf("unexpected message: %v", gotmsg)
- }
- if _, ok := <-test.input.oldreq.done; ok {
- t.Errorf("done channel not closed")
- }
- }
-}
-
+// TestSAttach tests sAttach.
+// It prepares a conn and adds an AuthFile to the FidPool with fid 0.
+// It also sets c.fsmap["fs"] to test a Tattach message with Aname other than "".
func TestSAttach(t *testing.T) {
tests := []struct {
input *TAttach
- auth bool
+ needAuth bool
authOK bool
want Msg
}{
@@ -272,7 +251,7 @@ func TestSAttach(t *testing.T) {
{&TAttach{Fid: 2, Afid: 0, Uname: "kenji", Aname: ""},
true, false,
&RError{}}, // not authOK
- {&TAttach{Fid: 2, Afid: 0, Uname: "unko", Aname: ""},
+ {&TAttach{Fid: 2, Afid: 0, Uname: "glenda", Aname: ""},
true, true,
&RError{}}, // wrong user
{&TAttach{Fid: 2, Afid: 0, Uname: "kenji", Aname: ""},
@@ -305,7 +284,7 @@ func TestSAttach(t *testing.T) {
for i, test := range tests {
af.AuthOK = test.authOK
af.Aname = test.input.Aname
- if test.auth {
+ if test.needAuth {
c.s.Auth = dammyAuth
} else {
c.s.Auth = nil
@@ -332,6 +311,30 @@ func TestSAttach(t *testing.T) {
}
}
+func TestSFlush(t *testing.T) {
+ rp := newReqPool()
+ tests := []struct {
+ input *request
+ }{
+ {&request{ifcall: &TFlush{},
+ oldreq: &request{pool: rp, done: make(chan struct{})}}},
+ }
+ c, rc := setupConn(nil)
+ tc := make(chan *request)
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+ go sFlush(ctx, c, tc)
+ for _, test := range tests {
+ tc <- test.input
+ if gotmsg, ok := (<-rc).ofcall.(*RFlush); !ok {
+ t.Errorf("unexpected message: %v", gotmsg)
+ }
+ if _, ok := <-test.input.oldreq.done; ok {
+ t.Errorf("done channel not closed")
+ }
+ }
+}
+
func TestSWalk(t *testing.T) {
tests := []struct {
input Msg
@@ -344,12 +347,12 @@ func TestSWalk(t *testing.T) {
1, nil},
{&TWalk{Fid: 0, Newfid: 3, Wnames: []string{"dir", "file"}},
2, nil},
- {&TWalk{Fid: 0, Newfid: 4, Wnames: []string{"dir", "unko"}},
+ {&TWalk{Fid: 0, Newfid: 4, Wnames: []string{"dir", "hoge"}},
1, nil}, // short walk
// 9P document says:
// If the first element cant be walked for any reason,
// RError is returned.
- {&TWalk{Fid: 0, Newfid: 5, Wnames: []string{"unko", "unko"}},
+ {&TWalk{Fid: 0, Newfid: 5, Wnames: []string{"hoge", "hoge"}},
0, errors.New("not found")},
}
c, rc := setupConn(testfs)
@@ -616,7 +619,7 @@ func TestSWrite(t *testing.T) {
pathname string
data []byte
}{
- {"c", []byte("unko")},
+ {"c", []byte("hoge")},
}
c, rc := setupConn(testfs)
tc := make(chan *request)
@@ -759,15 +762,15 @@ func TestSRemove(t *testing.T) {
want Msg
}{
// ok.
- {0, "unko", "glenda", OREAD, 0777, "glenda", &TRemove{Fid: 0}, &RRemove{}},
+ {0, "hoge", "glenda", OREAD, 0777, "glenda", &TRemove{Fid: 0}, &RRemove{}},
// unknown fid.
- {0, "unko", "glenda", OREAD, 0777, "glenda", &TRemove{Fid: 1}, &RError{}},
+ {0, "hoge", "glenda", OREAD, 0777, "glenda", &TRemove{Fid: 1}, &RError{}},
// permission denied.
- {0, "unko", "glenda", OREAD, 0777, "kenji", &TRemove{Fid: 0}, &RError{}},
+ {0, "hoge", "glenda", OREAD, 0777, "kenji", &TRemove{Fid: 0}, &RError{}},
// ok.
- {0, "dir/unko", "glenda", OREAD, 0000, "rob", &TRemove{Fid: 0}, &RRemove{}},
+ {0, "dir/hoge", "glenda", OREAD, 0000, "rob", &TRemove{Fid: 0}, &RRemove{}},
// permission denied.
- {0, "dir/unko", "glenda", OREAD, 0777, "glenda", &TRemove{Fid: 0}, &RError{}},
+ {0, "dir/hoge", "glenda", OREAD, 0777, "glenda", &TRemove{Fid: 0}, &RError{}},
}
c, rc := setupConn(testfs)
tc := make(chan *request)
@@ -877,123 +880,123 @@ func TestSWstat(t *testing.T) {
want Msg
}{
// 0 ok: rename by owner of the directory.
- {0, "./d/unko", "glenda", &Stat{Name: "unko"},
+ {0, "./d/hoge", "glenda", &Stat{Name: "hoge"},
&TWstat{
Fid: 0,
Stat: &Stat{Name: "oppai"},
}, &RWstat{}},
// 1 ok: rename by group member of the directory.
- {0, "./d/unko", "ken", &Stat{Name: "unko"},
+ {0, "./d/hoge", "ken", &Stat{Name: "hoge"},
&TWstat{
Fid: 0,
Stat: &Stat{Name: "oppai"},
}, &RWstat{}},
// 2 permission denied: rename by other.
- {0, "./d/unko", "kenji", &Stat{Name: "unko"},
+ {0, "./d/hoge", "kenji", &Stat{Name: "hoge"},
&TWstat{
Fid: 0,
Stat: &Stat{Name: "oppai"},
}, &RError{Ename: ErrPerm}},
// 3 ok: length change by owner with write permission
- {0, "unko", "glenda", &Stat{Uid: "glenda", Mode: 0700, Length: 10},
+ {0, "hoge", "glenda", &Stat{Uid: "glenda", Mode: 0700, Length: 10},
&TWstat{
Fid: 0,
Stat: &Stat{Uid: "glenda", Mode: 0700, Length: 20},
}, &RWstat{}},
// 4 permission denied: length change by owner without write permission
- {0, "unko", "glenda", &Stat{Uid: "glenda", Mode: 0000, Length: 10},
+ {0, "hoge", "glenda", &Stat{Uid: "glenda", Mode: 0000, Length: 10},
&TWstat{
Fid: 0,
Stat: &Stat{Uid: "glenda", Mode: 0700, Length: 20},
}, &RError{Ename: ErrPerm}},
// 5 operation not permitted: length change of a directory to other than 0
- {0, "unko", "glenda", &Stat{Uid: "glenda", Mode: fs.ModeDir | 0700, Length: 10},
+ {0, "hoge", "glenda", &Stat{Uid: "glenda", Mode: fs.ModeDir | 0700, Length: 10},
&TWstat{
Fid: 0,
Stat: &Stat{Uid: "glenda", Mode: fs.ModeDir | 0700, Length: 20},
}, &RError{}},
/*
// TODO: change directory length to 0.
- {0, "unko", "glenda", &Stat{Uid: "glenda", Mode: fs.ModeDir | 0700, Length: 10},
+ {0, "hoge", "glenda", &Stat{Uid: "glenda", Mode: fs.ModeDir | 0700, Length: 10},
&TWstat{
Fid: 0,
Stat: &Stat{Uid: "glenda", Mode: fs.ModeDir | 0700, Length:0},
}, &RWstat{}},
*/
// 6 ok: change mode by owner
- {0, "unko", "glenda", &Stat{Uid: "glenda", Mode: fs.ModeDir | 0700},
+ {0, "hoge", "glenda", &Stat{Uid: "glenda", Mode: fs.ModeDir | 0700},
&TWstat{
Fid: 0,
Stat: &Stat{Uid: "glenda", Mode: fs.ModeDir | 0755},
}, &RWstat{}},
// 7 ok: change mode by the leader
- {0, "unko", "glenda", &Stat{Gid: "bell", Mode: fs.ModeDir | 0700},
+ {0, "hoge", "glenda", &Stat{Gid: "bell", Mode: fs.ModeDir | 0700},
&TWstat{
Fid: 0,
Stat: &Stat{Gid: "glenda", Mode: fs.ModeDir | 0755},
}, &RWstat{}},
// 8 permission denied: change mode by a non-leader member
- {0, "unko", "ken", &Stat{Gid: "bell", Mode: fs.ModeDir | 0700},
+ {0, "hoge", "ken", &Stat{Gid: "bell", Mode: fs.ModeDir | 0700},
&TWstat{
Fid: 0,
Stat: &Stat{Gid: "glenda", Mode: fs.ModeDir | 0755},
}, &RError{}},
// 9 ok: change mtime by owner
- {0, "unko", "glenda", &Stat{Uid: "glenda", Mtime: 1},
+ {0, "hoge", "glenda", &Stat{Uid: "glenda", Mtime: 1},
&TWstat{
Fid: 0,
Stat: &Stat{Uid: "glenda", Mtime: 0},
}, &RWstat{}},
// 10 ok: change mtime by the leader
- {0, "unko", "glenda", &Stat{Gid: "bell", Mtime: 1},
+ {0, "hoge", "glenda", &Stat{Gid: "bell", Mtime: 1},
&TWstat{
Fid: 0,
Stat: &Stat{Gid: "bell", Mtime: 0},
}, &RWstat{}},
// 11 permission denied: change mtime by a non-leader member
- {0, "unko", "ken", &Stat{Gid: "bell", Mtime: 0},
+ {0, "hoge", "ken", &Stat{Gid: "bell", Mtime: 0},
&TWstat{
Fid: 0,
Stat: &Stat{Gid: "bel", Mtime: 1},
}, &RError{}},
// 12 operation not permitted: change directory bit.
- {0, "unko", "glenda", &Stat{Uid: "glenda", Mode: fs.ModeDir},
+ {0, "hoge", "glenda", &Stat{Uid: "glenda", Mode: fs.ModeDir},
&TWstat{
Fid: 0,
Stat: &Stat{Uid: "glenda"},
}, &RError{}},
// 13 ok: change gid by the owner, also a member of new group.
- {0, "unko", "glenda", &Stat{Uid: "glenda", Gid: "kessoku"},
+ {0, "hoge", "glenda", &Stat{Uid: "glenda", Gid: "kessoku"},
&TWstat{
Fid: 0,
Stat: &Stat{Uid: "glenda", Gid: "bell"},
}, &RWstat{}},
// 14 ok: change gid by the leader, also the leader of new group.
- {0, "unko", "glenda", &Stat{Uid: "ken", Gid: "glenda"},
+ {0, "hoge", "glenda", &Stat{Uid: "ken", Gid: "glenda"},
&TWstat{
Fid: 0,
Stat: &Stat{Uid: "ken", Gid: "bell"},
}, &RWstat{}},
// 15 permission denied: change gid by the leader, non-member of new group.
- {0, "unko", "ken", &Stat{Uid: "glenda", Gid: "ken"},
+ {0, "hoge", "ken", &Stat{Uid: "glenda", Gid: "ken"},
&TWstat{
Fid: 0,
Stat: &Stat{Uid: "glenda", Gid: "kessoku"},
}, &RError{}},
// 16 permission denied: change gid by the owner, non-member of new group.
- {0, "unko", "ken", &Stat{Uid: "glenda", Gid: "ken"},
+ {0, "hoge", "ken", &Stat{Uid: "glenda", Gid: "ken"},
&TWstat{
Fid: 0,
Stat: &Stat{Uid: "glenda", Gid: "kessoku"},
}, &RError{}},
// 17 operation not permitted: change uid
- {0, "unko", "ken", &Stat{Uid: "glenda"},
+ {0, "hoge", "ken", &Stat{Uid: "glenda"},
&TWstat{
Fid: 0,
Stat: &Stat{Uid: "ken"},
}, &RError{}},
// 18 ok: change mode and gid.
- {0, "unko", "glenda", &Stat{Gid: "bell", Mode: 0777},
+ {0, "hoge", "glenda", &Stat{Gid: "bell", Mode: 0777},
&TWstat{
Fid: 0,
Stat: &Stat{Gid: "glenda", Mode: 0755},
diff --git a/testdata/fs.go b/testdata/fs.go
@@ -16,7 +16,7 @@ var FileTree = []struct {
{"c", 0644, "glenda", "glenda", "glenda", ""},
{"d", fs.ModeDir | 0770, "glenda", "bell", "glenda", ""},
{"dir", fs.ModeDir | 0755, "rob", "rob", "rob", ""},
- {"dir/file", 0666, "brian", "brian", "dennis", "unko\n"},
+ {"dir/file", 0666, "brian", "brian", "dennis", "hogehoge\n"},
}
var Groups = []struct {