Documentation ¶
Overview ¶
Package integration simplifies the creation of integration tests.
Index ¶
- Constants
- func ExecuteTimed(name string, f func() error) error
- func ExtractUniqueDsts(pairs []IAPair) []addr.IA
- func Init(name string) error
- func RunClient(in Integration, pair IAPair, timeout time.Duration) error
- func StartServer(in Integration, dst addr.IA) (io.Closer, error)
- type IAPair
- type Integration
- type Waiter
Constants ¶
const ( // SrcIAReplace is a placeholder for the source IA in the arguments. SrcIAReplace = "<SRCIA>" // DstIAReplace is a placeholder for the destination IA in the arguments. DstIAReplace = "<DSTIA>" // ReadySignal should be written to Stdout by the server once it is read to accept clients. // The message should always be `Listening ia=<IA>` // where <IA> is the IA the server is listening on. ReadySignal = "Listening ia=" // GoIntegrationEnv is an environment variable that is set for the binary under test. // It can be used to guard certain statements, like printing the ReadySignal, // in a program under test. GoIntegrationEnv = "SCION_GO_INTEGRATION" )
Variables ¶
This section is empty.
Functions ¶
func ExecuteTimed ¶
ExecuteTimed executes f and prints how long f took to StdOut. Returns the error of f.
func ExtractUniqueDsts ¶
ExtractUniqueDsts returns all unique destinations in pairs.
func Init ¶
Init initializes the integration test, it adds and validates the command line flags, and initializes logging.
func RunClient ¶
func RunClient(in Integration, pair IAPair, timeout time.Duration) error
RunClient runs a client on the given IAPair. If the client does not finish until timeout it is killed.
func StartServer ¶
StartServer runs a server. The server can be stopped by calling Close() on the returned Closer. To start a server with a custom context use in.StartServer directly.
Types ¶
type Integration ¶
type Integration interface { // Name returns the name of the test Name() string // StartServer should start the server listening on the address dst. // StartServer should return after it is ready to accept clients. // The context should be used to make the server cancellable. StartServer(ctx context.Context, dst addr.IA) (Waiter, error) // StartClient should start the client on the src address connecting to the dst address. // StartClient should return immediately. // The context should be used to make the client cancellable. StartClient(ctx context.Context, src, dst addr.IA) (Waiter, error) }
Integration can be used to run integration tests.
func NewBinaryIntegration ¶
func NewBinaryIntegration(name string, clientArgs, serverArgs []string) Integration
NewBinaryIntegration returns an implementation of the Integration interface. Start* will run the binary programm with name and use the given arguments for the client/server. Use SrcIAReplace and DstIAReplace in arguments as placeholder for the source and destination IAs. When starting a client/server the placeholders will be replaced with the actual values. The server should output the ReadySignal to Stdout once it is ready to accept clients.