Documentation
¶
Overview ¶
Package framework contains tools to enable multiple clients to connect to a central repository server and run robustness tests concurrently.
Index ¶
- Variables
- func NewClientContext(ctx context.Context) context.Context
- func NewClientContexts(ctx context.Context, n int) []context.Context
- type Client
- type ClientSnapshotter
- type FileWriter
- type MultiClientFileWriter
- func (mcfw *MultiClientFileWriter) Cleanup()
- func (mcfw *MultiClientFileWriter) DataDirectory(ctx context.Context) string
- func (mcfw *MultiClientFileWriter) DeleteDirectoryContents(ctx context.Context, opts map[string]string) (map[string]string, error)
- func (mcfw *MultiClientFileWriter) DeleteEverything(ctx context.Context) error
- func (mcfw *MultiClientFileWriter) DeleteRandomSubdirectory(ctx context.Context, opts map[string]string) (map[string]string, error)
- func (mcfw *MultiClientFileWriter) WriteRandomFiles(ctx context.Context, opts map[string]string) (map[string]string, error)
- type MultiClientSnapshotter
- func (mcs *MultiClientSnapshotter) Cleanup()
- func (mcs *MultiClientSnapshotter) CleanupClient(ctx context.Context)
- func (mcs *MultiClientSnapshotter) ConnectOrCreateRepo(repoPath string) error
- func (mcs *MultiClientSnapshotter) CreateSnapshot(ctx context.Context, sourceDir string, opts map[string]string) (snapID string, fingerprint []byte, snapStats *robustness.CreateSnapshotStats, ...)
- func (mcs *MultiClientSnapshotter) DeleteSnapshot(ctx context.Context, snapID string, opts map[string]string) error
- func (mcs *MultiClientSnapshotter) GetCacheDirInfo() (stdout, stderr string, err error)
- func (mcs *MultiClientSnapshotter) ListSnapshots(ctx context.Context) ([]string, error)
- func (mcs *MultiClientSnapshotter) RestoreSnapshot(ctx context.Context, snapID, restoreDir string, opts map[string]string) (fingerprint []byte, err error)
- func (mcs *MultiClientSnapshotter) RestoreSnapshotCompare(ctx context.Context, snapID, restoreDir string, validationData []byte, ...) (err error)
- func (mcs *MultiClientSnapshotter) RunGC(ctx context.Context, opts map[string]string) error
- func (mcs *MultiClientSnapshotter) ServerCmd() *exec.Cmd
- type Server
- type TestHarness
- func (th *TestHarness) Cleanup(ctx context.Context) (retErr error)
- func (th *TestHarness) Engine() *engine.Engine
- func (th *TestHarness) GetDirsToLog(ctx context.Context) []string
- func (th *TestHarness) Run(ctxs []context.Context, t *testing.T, cleanup bool, ...)
- func (th *TestHarness) RunN(ctx context.Context, t *testing.T, numClients int, ...)
Constants ¶
This section is empty.
Variables ¶
var RepoPathPrefix = flag.String("repo-path-prefix", "", "Point the robustness tests at this path prefix")
RepoPathPrefix is used by robustness tests as a base dir for repository under test.
Functions ¶
func NewClientContext ¶
NewClientContext returns a copy of ctx with a new client.
Types ¶
type Client ¶
type Client struct {
ID string
}
Client is a unique client for use in multiclient robustness tests.
func UnwrapContext ¶
UnwrapContext returns a client from the given context.
type ClientSnapshotter ¶
type ClientSnapshotter interface {
robustness.Snapshotter
ConnectClient(fingerprint, user string) error
DisconnectClient(user string)
Cleanup()
}
ClientSnapshotter is an interface that wraps robustness.Snapshotter with methods for handling client connections to a server and cleanup.
type FileWriter ¶
type FileWriter interface {
robustness.FileWriter
Cleanup()
}
FileWriter is a robustness.FileWriter with the ability to cleanup.
type MultiClientFileWriter ¶
type MultiClientFileWriter struct {
// contains filtered or unexported fields
}
MultiClientFileWriter manages a set of client FileWriter instances and implements the FileWriter interface itself. FileWriter methods must be provided with a client-wrapped context so the MultiClientFileWriter can delegate to a specific client FileWriter.
func NewMultiClientFileWriter ¶
func NewMultiClientFileWriter(f newFileWriterFn) *MultiClientFileWriter
NewMultiClientFileWriter returns a MultiClientFileWriter that is responsible for delegating FileWriter method calls to a specific client's FileWriter instance.
func (*MultiClientFileWriter) Cleanup ¶
func (mcfw *MultiClientFileWriter) Cleanup()
Cleanup delegates to a specific client's FileWriter for cleanup and removes the client FileWriter instance from the MultiClientFileWriter.
func (*MultiClientFileWriter) DataDirectory ¶
func (mcfw *MultiClientFileWriter) DataDirectory(ctx context.Context) string
DataDirectory delegates to a specific client's FileWriter.
func (*MultiClientFileWriter) DeleteDirectoryContents ¶
func (mcfw *MultiClientFileWriter) DeleteDirectoryContents(ctx context.Context, opts map[string]string) (map[string]string, error)
DeleteDirectoryContents delegates to a specific client's FileWriter.
func (*MultiClientFileWriter) DeleteEverything ¶
func (mcfw *MultiClientFileWriter) DeleteEverything(ctx context.Context) error
DeleteEverything delegates to a specific client's FileWriter.
func (*MultiClientFileWriter) DeleteRandomSubdirectory ¶
func (mcfw *MultiClientFileWriter) DeleteRandomSubdirectory(ctx context.Context, opts map[string]string) (map[string]string, error)
DeleteRandomSubdirectory delegates to a specific client's FileWriter.
func (*MultiClientFileWriter) WriteRandomFiles ¶
func (mcfw *MultiClientFileWriter) WriteRandomFiles(ctx context.Context, opts map[string]string) (map[string]string, error)
WriteRandomFiles delegates to a specific client's FileWriter.
type MultiClientSnapshotter ¶
type MultiClientSnapshotter struct {
// contains filtered or unexported fields
}
MultiClientSnapshotter manages a set of client Snapshotter instances and implements the Snapshotter interface itself. Snapshotter methods must be provided with a client-wrapped context so the MultiClientSnapshotter can delegate to a specific client Snapshotter.
func NewMultiClientSnapshotter ¶
func NewMultiClientSnapshotter(baseDirPath string, f newClientFn) (*MultiClientSnapshotter, error)
NewMultiClientSnapshotter returns a MultiClientSnapshotter that is responsible for delegating Snapshotter method calls to a specific client's Snapshotter instance. ConnectOrCreateRepo must be invoked to start the server.
func (*MultiClientSnapshotter) Cleanup ¶
func (mcs *MultiClientSnapshotter) Cleanup()
Cleanup cleans up the server and all remaining clients. It delegates to a specific client's Snapshotter Cleanup method, but also disconnects the client from the server, removes the client from the server's user list, and removes the ClientSnapshotter from MultiClientSnapshotter.
func (*MultiClientSnapshotter) CleanupClient ¶
func (mcs *MultiClientSnapshotter) CleanupClient(ctx context.Context)
CleanupClient cleans up a given client. It delegates to the client's Snapshotter Cleanup method, but also disconnects the client from the server, removes the client from the server's user list, and removes the ClientSnapshotter from MultiClientSnapshotter.
func (*MultiClientSnapshotter) ConnectOrCreateRepo ¶
func (mcs *MultiClientSnapshotter) ConnectOrCreateRepo(repoPath string) error
ConnectOrCreateRepo makes the MultiClientSnapshotter ready for use. It will connect to an existing repository if possible or create a new one, and start a repository server.
func (*MultiClientSnapshotter) CreateSnapshot ¶
func (mcs *MultiClientSnapshotter) CreateSnapshot(ctx context.Context, sourceDir string, opts map[string]string) (snapID string, fingerprint []byte, snapStats *robustness.CreateSnapshotStats, err error)
CreateSnapshot delegates to a specific client's Snapshotter.
func (*MultiClientSnapshotter) DeleteSnapshot ¶
func (mcs *MultiClientSnapshotter) DeleteSnapshot(ctx context.Context, snapID string, opts map[string]string) error
DeleteSnapshot delegates to a specific client's Snapshotter.
func (*MultiClientSnapshotter) GetCacheDirInfo ¶ added in v0.18.0
func (mcs *MultiClientSnapshotter) GetCacheDirInfo() (stdout, stderr string, err error)
GetCacheDirInfo runs cache info command to get cache dir path for the repository.
func (*MultiClientSnapshotter) ListSnapshots ¶
func (mcs *MultiClientSnapshotter) ListSnapshots(ctx context.Context) ([]string, error)
ListSnapshots delegates to a specific client's Snapshotter.
func (*MultiClientSnapshotter) RestoreSnapshot ¶
func (mcs *MultiClientSnapshotter) RestoreSnapshot(ctx context.Context, snapID, restoreDir string, opts map[string]string) (fingerprint []byte, err error)
RestoreSnapshot delegates to a specific client's Snapshotter.
func (*MultiClientSnapshotter) RestoreSnapshotCompare ¶
func (mcs *MultiClientSnapshotter) RestoreSnapshotCompare(ctx context.Context, snapID, restoreDir string, validationData []byte, reportOut io.Writer, opts map[string]string) (err error)
RestoreSnapshotCompare delegates to a specific client's Snapshotter.
func (*MultiClientSnapshotter) RunGC ¶
RunGC runs garbage collection on the server repository directly since clients are not authorized to do this.
func (*MultiClientSnapshotter) ServerCmd ¶
func (mcs *MultiClientSnapshotter) ServerCmd() *exec.Cmd
ServerCmd returns the server command.
type Server ¶
type Server interface {
// Initialize and cleanup the server
ConnectOrCreateRepo(repoPath string) error
Cleanup()
// Handle client authorization
AuthorizeClient(user string) error
RemoveClient(user string)
// Run commands directly on the server repository
Run(args ...string) (stdout, stderr string, err error)
RunGC(ctx context.Context, opts map[string]string) error
// Get information from the server
ServerCmd() *exec.Cmd
ServerFingerprint() string
}
Server is an interface for a repository server.
type TestHarness ¶
type TestHarness struct {
// contains filtered or unexported fields
}
TestHarness provides a Kopia robustness.Engine.
func NewHarness ¶
func NewHarness(ctx context.Context) *TestHarness
NewHarness returns a test harness. It requires a context that contains a client.
func (*TestHarness) Cleanup ¶
func (th *TestHarness) Cleanup(ctx context.Context) (retErr error)
Cleanup shuts down the engine and stops the test app. It requires a context that contains the client that was used to initialize the harness.
func (*TestHarness) Engine ¶
func (th *TestHarness) Engine() *engine.Engine
Engine returns the Kopia robustness test engine.
func (*TestHarness) GetDirsToLog ¶ added in v0.18.0
func (th *TestHarness) GetDirsToLog(ctx context.Context) []string
GetDirsToLog collects the directory paths to log.