491 lines
9.1 KiB
Go
491 lines
9.1 KiB
Go
// Copyright 2018 Google Inc.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package p9test
|
|
|
|
import (
|
|
"gvisor.googlesource.com/gvisor/pkg/fd"
|
|
"gvisor.googlesource.com/gvisor/pkg/p9"
|
|
)
|
|
|
|
// StatFSMock mocks p9.File.StatFS.
|
|
type StatFSMock struct {
|
|
Called bool
|
|
|
|
// Return.
|
|
Stat p9.FSStat
|
|
Err error
|
|
}
|
|
|
|
// StatFS implements p9.File.StatFS.
|
|
func (f *StatFSMock) StatFS() (p9.FSStat, error) {
|
|
f.Called = true
|
|
return f.Stat, f.Err
|
|
}
|
|
|
|
// GetAttrMock mocks p9.File.GetAttr.
|
|
type GetAttrMock struct {
|
|
Called bool
|
|
|
|
// Args.
|
|
Req p9.AttrMask
|
|
|
|
// Return.
|
|
QID p9.QID
|
|
Valid p9.AttrMask
|
|
Attr p9.Attr
|
|
Err error
|
|
}
|
|
|
|
// GetAttr implements p9.File.GetAttr.
|
|
func (g *GetAttrMock) GetAttr(req p9.AttrMask) (p9.QID, p9.AttrMask, p9.Attr, error) {
|
|
g.Called, g.Req = true, req
|
|
return g.QID, g.Valid, g.Attr, g.Err
|
|
}
|
|
|
|
// WalkGetAttrMock mocks p9.File.WalkGetAttr.
|
|
type WalkGetAttrMock struct {
|
|
Called bool
|
|
|
|
// Args.
|
|
Names []string
|
|
|
|
// Return.
|
|
QIDs []p9.QID
|
|
File p9.File
|
|
Valid p9.AttrMask
|
|
Attr p9.Attr
|
|
Err error
|
|
}
|
|
|
|
// WalkGetAttr implements p9.File.WalkGetAttr.
|
|
func (w *WalkGetAttrMock) WalkGetAttr(names []string) ([]p9.QID, p9.File, p9.AttrMask, p9.Attr, error) {
|
|
w.Called, w.Names = true, names
|
|
return w.QIDs, w.File, w.Valid, w.Attr, w.Err
|
|
}
|
|
|
|
// SetAttrMock mocks p9.File.SetAttr.
|
|
type SetAttrMock struct {
|
|
Called bool
|
|
|
|
// Args.
|
|
Valid p9.SetAttrMask
|
|
Attr p9.SetAttr
|
|
|
|
// Return.
|
|
Err error
|
|
}
|
|
|
|
// SetAttr implements p9.File.SetAttr.
|
|
func (s *SetAttrMock) SetAttr(valid p9.SetAttrMask, attr p9.SetAttr) error {
|
|
s.Called, s.Valid, s.Attr = true, valid, attr
|
|
return s.Err
|
|
}
|
|
|
|
// RemoveMock mocks p9.File.Remove.
|
|
type RemoveMock struct {
|
|
Called bool
|
|
|
|
// Return.
|
|
Err error
|
|
}
|
|
|
|
// Remove implements p9.File.Remove.
|
|
func (r *RemoveMock) Remove() error {
|
|
r.Called = true
|
|
return r.Err
|
|
}
|
|
|
|
// OpenMock mocks p9.File.Open.
|
|
type OpenMock struct {
|
|
Called bool
|
|
|
|
// Args.
|
|
Flags p9.OpenFlags
|
|
|
|
// Return.
|
|
File *fd.FD
|
|
QID p9.QID
|
|
IOUnit uint32
|
|
Err error
|
|
}
|
|
|
|
// Open implements p9.File.Open.
|
|
func (o *OpenMock) Open(flags p9.OpenFlags) (*fd.FD, p9.QID, uint32, error) {
|
|
o.Called, o.Flags = true, flags
|
|
return o.File, o.QID, o.IOUnit, o.Err
|
|
}
|
|
|
|
// ReadAtMock mocks p9.File.ReadAt.
|
|
type ReadAtMock struct {
|
|
Called bool
|
|
|
|
// Args.
|
|
P []byte
|
|
Offset uint64
|
|
|
|
// Return.
|
|
N int
|
|
Err error
|
|
}
|
|
|
|
// ReadAt implements p9.File.ReadAt.
|
|
func (r *ReadAtMock) ReadAt(p []byte, offset uint64) (int, error) {
|
|
r.Called, r.P, r.Offset = true, p, offset
|
|
return r.N, r.Err
|
|
}
|
|
|
|
// WriteAtMock mocks p9.File.WriteAt.
|
|
type WriteAtMock struct {
|
|
Called bool
|
|
|
|
// Args.
|
|
P []byte
|
|
Offset uint64
|
|
|
|
// Return.
|
|
N int
|
|
Err error
|
|
}
|
|
|
|
// WriteAt implements p9.File.WriteAt.
|
|
func (w *WriteAtMock) WriteAt(p []byte, offset uint64) (int, error) {
|
|
w.Called, w.P, w.Offset = true, p, offset
|
|
return w.N, w.Err
|
|
}
|
|
|
|
// FSyncMock mocks p9.File.FSync.
|
|
type FSyncMock struct {
|
|
Called bool
|
|
|
|
// Return.
|
|
Err error
|
|
}
|
|
|
|
// FSync implements p9.File.FSync.
|
|
func (f *FSyncMock) FSync() error {
|
|
f.Called = true
|
|
return f.Err
|
|
}
|
|
|
|
// MkdirMock mocks p9.File.Mkdir.
|
|
type MkdirMock struct {
|
|
Called bool
|
|
|
|
// Args.
|
|
Name string
|
|
Permissions p9.FileMode
|
|
UID p9.UID
|
|
GID p9.GID
|
|
|
|
// Return.
|
|
QID p9.QID
|
|
Err error
|
|
}
|
|
|
|
// Mkdir implements p9.File.Mkdir.
|
|
func (s *MkdirMock) Mkdir(name string, permissions p9.FileMode, uid p9.UID, gid p9.GID) (p9.QID, error) {
|
|
s.Called, s.Name, s.Permissions, s.UID, s.GID = true, name, permissions, uid, gid
|
|
return s.QID, s.Err
|
|
}
|
|
|
|
// SymlinkMock mocks p9.File.Symlink.
|
|
type SymlinkMock struct {
|
|
Called bool
|
|
|
|
// Args.
|
|
Oldname string
|
|
Newname string
|
|
UID p9.UID
|
|
GID p9.GID
|
|
|
|
// Return.
|
|
QID p9.QID
|
|
Err error
|
|
}
|
|
|
|
// Symlink implements p9.File.Symlink.
|
|
func (s *SymlinkMock) Symlink(oldname string, newname string, uid p9.UID, gid p9.GID) (p9.QID, error) {
|
|
s.Called, s.Oldname, s.Newname, s.UID, s.GID = true, oldname, newname, uid, gid
|
|
return s.QID, s.Err
|
|
}
|
|
|
|
// MknodMock mocks p9.File.Mknod.
|
|
type MknodMock struct {
|
|
Called bool
|
|
|
|
// Args.
|
|
Name string
|
|
Permissions p9.FileMode
|
|
Major uint32
|
|
Minor uint32
|
|
UID p9.UID
|
|
GID p9.GID
|
|
|
|
// Return.
|
|
QID p9.QID
|
|
Err error
|
|
}
|
|
|
|
// Mknod implements p9.File.Mknod.
|
|
func (m *MknodMock) Mknod(name string, permissions p9.FileMode, major uint32, minor uint32, uid p9.UID, gid p9.GID) (p9.QID, error) {
|
|
m.Called, m.Name, m.Permissions, m.Major, m.Minor, m.UID, m.GID = true, name, permissions, major, minor, uid, gid
|
|
return m.QID, m.Err
|
|
}
|
|
|
|
// UnlinkAtMock mocks p9.File.UnlinkAt.
|
|
type UnlinkAtMock struct {
|
|
Called bool
|
|
|
|
// Args.
|
|
Name string
|
|
Flags uint32
|
|
|
|
// Return.
|
|
Err error
|
|
}
|
|
|
|
// UnlinkAt implements p9.File.UnlinkAt.
|
|
func (u *UnlinkAtMock) UnlinkAt(name string, flags uint32) error {
|
|
u.Called, u.Name, u.Flags = true, name, flags
|
|
return u.Err
|
|
}
|
|
|
|
// ReaddirMock mocks p9.File.Readdir.
|
|
type ReaddirMock struct {
|
|
Called bool
|
|
|
|
// Args.
|
|
Offset uint64
|
|
Count uint32
|
|
|
|
// Return.
|
|
Dirents []p9.Dirent
|
|
Err error
|
|
}
|
|
|
|
// Readdir implements p9.File.Readdir.
|
|
func (r *ReaddirMock) Readdir(offset uint64, count uint32) ([]p9.Dirent, error) {
|
|
r.Called, r.Offset, r.Count = true, offset, count
|
|
return r.Dirents, r.Err
|
|
}
|
|
|
|
// ReadlinkMock mocks p9.File.Readlink.
|
|
type ReadlinkMock struct {
|
|
Called bool
|
|
|
|
// Return.
|
|
Target string
|
|
Err error
|
|
}
|
|
|
|
// Readlink implements p9.File.Readlink.
|
|
func (r *ReadlinkMock) Readlink() (string, error) {
|
|
r.Called = true
|
|
return r.Target, r.Err
|
|
}
|
|
|
|
// AttachMock mocks p9.Attacher.Attach.
|
|
type AttachMock struct {
|
|
Called bool
|
|
|
|
// Args.
|
|
AttachName string
|
|
|
|
// Return.
|
|
File p9.File
|
|
Err error
|
|
}
|
|
|
|
// Attach implements p9.Attacher.Attach.
|
|
func (a *AttachMock) Attach(attachName string) (p9.File, error) {
|
|
a.Called, a.AttachName = true, attachName
|
|
return a.File, a.Err
|
|
}
|
|
|
|
// WalkMock mocks p9.File.Walk.
|
|
type WalkMock struct {
|
|
Called bool
|
|
|
|
// Args.
|
|
Names []string
|
|
|
|
// Return.
|
|
QIDs []p9.QID
|
|
File p9.File
|
|
Err error
|
|
}
|
|
|
|
// Walk implements p9.File.Walk.
|
|
func (w *WalkMock) Walk(names []string) ([]p9.QID, p9.File, error) {
|
|
w.Called, w.Names = true, names
|
|
return w.QIDs, w.File, w.Err
|
|
}
|
|
|
|
// RenameMock mocks p9.File.Rename.
|
|
type RenameMock struct {
|
|
Called bool
|
|
|
|
// Args.
|
|
Directory p9.File
|
|
Name string
|
|
|
|
// Return.
|
|
Err error
|
|
}
|
|
|
|
// Rename implements p9.File.Rename.
|
|
func (r *RenameMock) Rename(directory p9.File, name string) error {
|
|
r.Called, r.Directory, r.Name = true, directory, name
|
|
return r.Err
|
|
}
|
|
|
|
// CloseMock mocks p9.File.Close.
|
|
type CloseMock struct {
|
|
Called bool
|
|
|
|
// Return.
|
|
Err error
|
|
}
|
|
|
|
// Close implements p9.File.Close.
|
|
func (d *CloseMock) Close() error {
|
|
d.Called = true
|
|
return d.Err
|
|
}
|
|
|
|
// CreateMock mocks p9.File.Create.
|
|
type CreateMock struct {
|
|
Called bool
|
|
|
|
// Args.
|
|
Name string
|
|
Flags p9.OpenFlags
|
|
Permissions p9.FileMode
|
|
UID p9.UID
|
|
GID p9.GID
|
|
|
|
// Return.
|
|
HostFile *fd.FD
|
|
File p9.File
|
|
QID p9.QID
|
|
IOUnit uint32
|
|
Err error
|
|
}
|
|
|
|
// Create implements p9.File.Create.
|
|
func (c *CreateMock) Create(name string, flags p9.OpenFlags, permissions p9.FileMode, uid p9.UID, gid p9.GID) (*fd.FD, p9.File, p9.QID, uint32, error) {
|
|
c.Called, c.Name, c.Flags, c.Permissions, c.UID, c.GID = true, name, flags, permissions, uid, gid
|
|
return c.HostFile, c.File, c.QID, c.IOUnit, c.Err
|
|
}
|
|
|
|
// LinkMock mocks p9.File.Link.
|
|
type LinkMock struct {
|
|
Called bool
|
|
|
|
// Args.
|
|
Target p9.File
|
|
Newname string
|
|
|
|
// Return.
|
|
Err error
|
|
}
|
|
|
|
// Link implements p9.File.Link.
|
|
func (l *LinkMock) Link(target p9.File, newname string) error {
|
|
l.Called, l.Target, l.Newname = true, target, newname
|
|
return l.Err
|
|
}
|
|
|
|
// RenameAtMock mocks p9.File.RenameAt.
|
|
type RenameAtMock struct {
|
|
Called bool
|
|
|
|
// Args.
|
|
Oldname string
|
|
Newdir p9.File
|
|
Newname string
|
|
|
|
// Return.
|
|
Err error
|
|
}
|
|
|
|
// RenameAt implements p9.File.RenameAt.
|
|
func (r *RenameAtMock) RenameAt(oldname string, newdir p9.File, newname string) error {
|
|
r.Called, r.Oldname, r.Newdir, r.Newname = true, oldname, newdir, newname
|
|
return r.Err
|
|
}
|
|
|
|
// FlushMock mocks p9.File.Flush.
|
|
type FlushMock struct {
|
|
Called bool
|
|
|
|
// Return.
|
|
Err error
|
|
}
|
|
|
|
// Flush implements p9.File.Flush.
|
|
func (f *FlushMock) Flush() error {
|
|
return f.Err
|
|
}
|
|
|
|
// ConnectMock mocks p9.File.Connect.
|
|
type ConnectMock struct {
|
|
Called bool
|
|
|
|
// Args.
|
|
Flags p9.ConnectFlags
|
|
|
|
// Return.
|
|
File *fd.FD
|
|
Err error
|
|
}
|
|
|
|
// Connect implements p9.File.Connect.
|
|
func (o *ConnectMock) Connect(flags p9.ConnectFlags) (*fd.FD, error) {
|
|
o.Called, o.Flags = true, flags
|
|
return o.File, o.Err
|
|
}
|
|
|
|
// FileMock mocks p9.File.
|
|
type FileMock struct {
|
|
WalkMock
|
|
WalkGetAttrMock
|
|
StatFSMock
|
|
GetAttrMock
|
|
SetAttrMock
|
|
RemoveMock
|
|
RenameMock
|
|
CloseMock
|
|
OpenMock
|
|
ReadAtMock
|
|
WriteAtMock
|
|
FSyncMock
|
|
CreateMock
|
|
MkdirMock
|
|
SymlinkMock
|
|
LinkMock
|
|
MknodMock
|
|
RenameAtMock
|
|
UnlinkAtMock
|
|
ReaddirMock
|
|
ReadlinkMock
|
|
FlushMock
|
|
ConnectMock
|
|
}
|
|
|
|
var (
|
|
_ p9.File = &FileMock{}
|
|
)
|