Documentation
¶
Overview ¶
Simple copy file
Simplifies work with file testing ¶
Simplifies work with ssh testing
Index ¶
- func CompareDirFiles(dir1, dir2 string) error
- func CopyFile(src, dst string) error
- func CreateRandomFiles(dir string, amount int) ([]string, error)
- func ExpectFailure(t *testing.T, f func(tt testing.TB))
- func MockSSHPortServer(t *testing.T, user, pass, key string) (string, string)
- func MockSSHPtyServer(t *testing.T, user, pass, key string) (string, string)
- func MockSSHServer(t *testing.T, sshSrv *sshd.Server, user, pass, key string) (string, string)
- func MockSSHSftpServer(t *testing.T, user, pass, key string) (string, string)
- func NewRPCClient(username, password string, clientType RPCClientType, caPool *x509.CertPool) (*http.Client, []connect.ClientOption)
- func Retry(r Retryer, t Failer, f func(r *R))
- func RunCmdPtySSH(addr, username, password, cmd string) ([]byte, error)
- func RunSftp(addr, username, password string, files []string, toPath string, toRemote bool) error
- type AFInstance
- func (afi *AFInstance) APIAddress(path string) string
- func (afi *AFInstance) APIEndpoint() string
- func (afi *AFInstance) AdminToken() string
- func (afi *AFInstance) Cleanup(tb testing.TB)
- func (afi *AFInstance) GetCA(tb testing.TB) *x509.CertPool
- func (afi *AFInstance) IsRunning() bool
- func (afi *AFInstance) NewAfInstanceCluster(tb testing.TB, name, cfg string) *AFInstance
- func (afi *AFInstance) NewClusterNode(tb testing.TB, name, cfg string, args ...string) *AFInstance
- func (afi *AFInstance) PrintMemUsage(tb testing.TB)
- func (afi *AFInstance) Restart(tb testing.TB, args ...string)
- func (afi *AFInstance) Start(tb testing.TB, args ...string)
- func (afi *AFInstance) Stop(tb testing.TB)
- func (afi *AFInstance) WaitForLog(substring string, call func(string, string) bool)
- func (afi *AFInstance) WaitForLogDelete(substring string)
- func (afi *AFInstance) Workspace() string
- type Counter
- type Failer
- type MockT
- type NotificationBuffer
- type R
- type RPCClientType
- type Retryer
- type StreamingClient
- func (sc *StreamingClient) Close()
- func (sc *StreamingClient) EstablishBidirectionalStreaming() error
- func (sc *StreamingClient) EstablishSubscriptionStreaming(subscriptionTypes []aquariumv2.SubscriptionType) error
- func (sc *StreamingClient) GetResourceNotifications() <-chan *aquariumv2.StreamingServiceSubscribeResponse
- func (sc *StreamingClient) GetStateNotifications() <-chan *aquariumv2.StreamingServiceSubscribeResponse
- func (sc *StreamingClient) GetTaskNotifications() <-chan *aquariumv2.StreamingServiceSubscribeResponse
- func (sc *StreamingClient) SendRequest(requestID, requestType string, requestData proto.Message) (*aquariumv2.StreamingServiceConnectResponse, error)
- func (sc *StreamingClient) WaitForApplicationResource(timeout time.Duration) (*aquariumv2.ApplicationResource, error)
- func (sc *StreamingClient) WaitForApplicationState(applicationUID string, expectedState aquariumv2.ApplicationState_Status, ...) (*aquariumv2.ApplicationState, error)
- func (sc *StreamingClient) WaitForApplicationTask(timeout time.Duration) (*aquariumv2.ApplicationTask, error)
- func (sc *StreamingClient) WaitForNotification(subscriptionType aquariumv2.SubscriptionType, timeout time.Duration, ...) (*aquariumv2.StreamingServiceSubscribeResponse, error)
- type StreamingTestHelper
- func (sth *StreamingTestHelper) Close()
- func (sth *StreamingTestHelper) GetStreamingClient() *StreamingClient
- func (sth *StreamingTestHelper) SendRequestAndExpectSuccess(requestID, requestType string, requestData proto.Message, ...) (*aquariumv2.StreamingServiceConnectResponse, error)
- func (sth *StreamingTestHelper) SetupFullStreaming(subscriptionTypes []aquariumv2.SubscriptionType) error
- type Timer
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CompareDirFiles ¶ added in v0.7.6
func CreateRandomFiles ¶ added in v0.7.6
CreateRandomFiles will take directory and put there as much random files as you want
func ExpectFailure ¶
xpectFailure when failure expected
func MockSSHPortServer ¶ added in v0.7.6
func MockSSHPtyServer ¶ added in v0.7.6
func MockSSHServer ¶ added in v0.7.6
Base ssh server with no handler
func MockSSHSftpServer ¶ added in v0.7.6
func NewRPCClient ¶ added in v0.9.0
func NewRPCClient(username, password string, clientType RPCClientType, caPool *x509.CertPool) (*http.Client, []connect.ClientOption)
NewRPCClient creates a new HTTP client and returns it along with the appropriate connect options for the specified client type and authentication credentials.
func RunCmdPtySSH ¶ added in v0.7.6
Types ¶
type AFInstance ¶ added in v0.7.5
type AFInstance struct {
// contains filtered or unexported fields
}
AFInstance saves state of the running Aquarium Fish for particular test
func NewAfInstance ¶
func NewAfInstance(tb testing.TB, name, cfg string) *AFInstance
NewAfInstance helpful if you need to create instance without starting it up right away
func NewAquariumFish ¶
func NewAquariumFish(tb testing.TB, name, cfg string, args ...string) *AFInstance
NewAquariumFish simple creates and run the fish node
func NewStoppedAquariumFish ¶ added in v0.9.0
func NewStoppedAquariumFish(tb testing.TB, name, cfg string) *AFInstance
NewStoppedAquariumFish creates the fish node
func (*AFInstance) APIAddress ¶ added in v0.7.5
func (afi *AFInstance) APIAddress(path string) string
APIAddress will return url to access API of AquariumFish
func (*AFInstance) APIEndpoint ¶ added in v0.7.6
func (afi *AFInstance) APIEndpoint() string
APIEndpoint will return IP:PORT
func (*AFInstance) AdminToken ¶ added in v0.7.5
func (afi *AFInstance) AdminToken() string
AdminToken returns admin token
func (*AFInstance) Cleanup ¶ added in v0.7.5
func (afi *AFInstance) Cleanup(tb testing.TB)
Cleanup after the test execution You don't need to call it if you use NewAfInstance(), NewAquariumFish() or NewStoppedAquariumFish()
func (*AFInstance) GetCA ¶ added in v0.9.0
func (afi *AFInstance) GetCA(tb testing.TB) *x509.CertPool
GetCA will return the node CA pool for secure communication
func (*AFInstance) IsRunning ¶ added in v0.7.5
func (afi *AFInstance) IsRunning() bool
IsRunning checks the fish instance is running
func (*AFInstance) NewAfInstanceCluster ¶ added in v0.7.5
func (afi *AFInstance) NewAfInstanceCluster(tb testing.TB, name, cfg string) *AFInstance
NewAfInstanceCluster just creates the node based on the existing cluster node
func (*AFInstance) NewClusterNode ¶ added in v0.7.5
func (afi *AFInstance) NewClusterNode(tb testing.TB, name, cfg string, args ...string) *AFInstance
NewClusterNode starts another node of cluster It will automatically add cluster_join parameter to the config
func (*AFInstance) PrintMemUsage ¶ added in v0.8.0
func (afi *AFInstance) PrintMemUsage(tb testing.TB)
func (*AFInstance) Restart ¶ added in v0.7.5
func (afi *AFInstance) Restart(tb testing.TB, args ...string)
Restart the application
func (*AFInstance) Start ¶ added in v0.7.5
func (afi *AFInstance) Start(tb testing.TB, args ...string)
Start the fish node executable
func (*AFInstance) Stop ¶ added in v0.7.5
func (afi *AFInstance) Stop(tb testing.TB)
Stop the fish node executable
func (*AFInstance) WaitForLog ¶ added in v0.8.0
func (afi *AFInstance) WaitForLog(substring string, call func(string, string) bool)
WaitForLog stores substring to be looked in the Fish log to execute call function with substring & found line
func (*AFInstance) WaitForLogDelete ¶ added in v0.9.0
func (afi *AFInstance) WaitForLogDelete(substring string)
WaitForLog stores substring to be looked in the Fish log to execute call function with substring & found line
func (*AFInstance) Workspace ¶ added in v0.7.5
func (afi *AFInstance) Workspace() string
Workspace will return workspace of the AquariumFish
type Counter ¶
Counter repeats an operation a given number of times and waits between subsequent operations.
type Failer ¶
type Failer interface { Helper() // Log is called for the final test output Log(args ...any) // FailNow is called when the retrying is abandoned. FailNow() }
Failer is an interface compatible with testing.T.
type NotificationBuffer ¶ added in v0.9.0
type NotificationBuffer struct {
// contains filtered or unexported fields
}
NotificationBuffer stores recent notifications in a circular buffer
func NewNotificationBuffer ¶ added in v0.9.0
func NewNotificationBuffer(size int) *NotificationBuffer
NewNotificationBuffer creates a new circular buffer for notifications
func (*NotificationBuffer) Add ¶ added in v0.9.0
func (nb *NotificationBuffer) Add(notification *aquariumv2.StreamingServiceSubscribeResponse)
Add stores a notification in the circular buffer
func (*NotificationBuffer) FindMatching ¶ added in v0.9.0
func (nb *NotificationBuffer) FindMatching(filter func(*aquariumv2.StreamingServiceSubscribeResponse) bool) *aquariumv2.StreamingServiceSubscribeResponse
FindMatching searches the buffer for a notification matching the filter
type R ¶
type R struct {
// contains filtered or unexported fields
}
R provides context for the retryer.
type RPCClientType ¶ added in v0.9.0
type RPCClientType int
RPCClientType represents the type of ConnectRPC client to create
const ( // RPCClientREST creates a REST-like client using HTTP GET RPCClientREST RPCClientType = iota // RPCClientGRPC creates a gRPC client RPCClientGRPC // RPCClientGRPCWeb creates a gRPC-Web client RPCClientGRPCWeb )
type Retryer ¶
type Retryer interface { // Continue returns true if the operation should be repeated, otherwise it // returns false to indicate retrying should stop. Continue() bool }
Retryer provides an interface for repeating operations until they succeed or an exit condition is met.
type StreamingClient ¶ added in v0.9.0
type StreamingClient struct {
// contains filtered or unexported fields
}
StreamingClient provides a high-level interface for streaming operations
func NewStreamingClient ¶ added in v0.9.0
func NewStreamingClient(ctx context.Context, t *testing.T, name string, client aquariumv2connect.StreamingServiceClient) *StreamingClient
NewStreamingClient creates a new streaming client with clean abstractions
func (*StreamingClient) Close ¶ added in v0.9.0
func (sc *StreamingClient) Close()
Close gracefully closes all streaming connections
func (*StreamingClient) EstablishBidirectionalStreaming ¶ added in v0.9.0
func (sc *StreamingClient) EstablishBidirectionalStreaming() error
EstablishBidirectionalStreaming sets up bidirectional streaming for request/response operations
func (*StreamingClient) EstablishSubscriptionStreaming ¶ added in v0.9.0
func (sc *StreamingClient) EstablishSubscriptionStreaming(subscriptionTypes []aquariumv2.SubscriptionType) error
EstablishSubscriptionStreaming sets up server-side streaming for real-time notifications
func (*StreamingClient) GetResourceNotifications ¶ added in v0.9.0
func (sc *StreamingClient) GetResourceNotifications() <-chan *aquariumv2.StreamingServiceSubscribeResponse
GetResourceNotifications returns the channel for application resource notifications
func (*StreamingClient) GetStateNotifications ¶ added in v0.9.0
func (sc *StreamingClient) GetStateNotifications() <-chan *aquariumv2.StreamingServiceSubscribeResponse
GetStateNotifications returns the channel for application state notifications
func (*StreamingClient) GetTaskNotifications ¶ added in v0.9.0
func (sc *StreamingClient) GetTaskNotifications() <-chan *aquariumv2.StreamingServiceSubscribeResponse
GetTaskNotifications returns the channel for application task notifications
func (*StreamingClient) SendRequest ¶ added in v0.9.0
func (sc *StreamingClient) SendRequest(requestID, requestType string, requestData proto.Message) (*aquariumv2.StreamingServiceConnectResponse, error)
SendRequest sends a request through bidirectional streaming and waits for response
func (*StreamingClient) WaitForApplicationResource ¶ added in v0.9.0
func (sc *StreamingClient) WaitForApplicationResource(timeout time.Duration) (*aquariumv2.ApplicationResource, error)
WaitForApplicationResource waits for an application resource notification
func (*StreamingClient) WaitForApplicationState ¶ added in v0.9.0
func (sc *StreamingClient) WaitForApplicationState(applicationUID string, expectedState aquariumv2.ApplicationState_Status, timeout time.Duration) (*aquariumv2.ApplicationState, error)
WaitForApplicationState waits for a specific application state notification for a specific application UID
func (*StreamingClient) WaitForApplicationTask ¶ added in v0.9.0
func (sc *StreamingClient) WaitForApplicationTask(timeout time.Duration) (*aquariumv2.ApplicationTask, error)
WaitForApplicationTask waits for an application task notification
func (*StreamingClient) WaitForNotification ¶ added in v0.9.0
func (sc *StreamingClient) WaitForNotification( subscriptionType aquariumv2.SubscriptionType, timeout time.Duration, filter func(*aquariumv2.StreamingServiceSubscribeResponse) bool, ) (*aquariumv2.StreamingServiceSubscribeResponse, error)
WaitForNotification waits for a specific notification type with optional filtering
type StreamingTestHelper ¶ added in v0.9.0
type StreamingTestHelper struct {
// contains filtered or unexported fields
}
StreamingTestHelper provides an even higher-level interface for common test patterns
func NewStreamingTestHelper ¶ added in v0.9.0
func NewStreamingTestHelper(ctx context.Context, t *testing.T, name string, client aquariumv2connect.StreamingServiceClient) *StreamingTestHelper
NewStreamingTestHelper creates a new test helper with streamlined setup
func (*StreamingTestHelper) Close ¶ added in v0.9.0
func (sth *StreamingTestHelper) Close()
Close closes all streaming connections
func (*StreamingTestHelper) GetStreamingClient ¶ added in v0.9.0
func (sth *StreamingTestHelper) GetStreamingClient() *StreamingClient
GetStreamingClient returns the underlying streaming client for advanced operations
func (*StreamingTestHelper) SendRequestAndExpectSuccess ¶ added in v0.9.0
func (sth *StreamingTestHelper) SendRequestAndExpectSuccess(requestID, requestType string, requestData proto.Message, expectedResponseType string) (*aquariumv2.StreamingServiceConnectResponse, error)
SendRequestAndExpectSuccess sends a request and expects a successful response
func (*StreamingTestHelper) SetupFullStreaming ¶ added in v0.9.0
func (sth *StreamingTestHelper) SetupFullStreaming(subscriptionTypes []aquariumv2.SubscriptionType) error
SetupFullStreaming establishes both bidirectional and subscription streaming