integration
packageThis package is not in the latest version of its module.
Details
Validgo.mod file
The Go module system was introduced in Go 1.11 and is the official dependency management solution for Go.
Redistributable license
Redistributable licenses place minimal restrictions on how software can be used, modified, and redistributed.
Tagged version
Modules with tagged versions give importers more predictable builds.
Stable version
When a project reaches major version v1 it is considered stable.
- Learn more about best practices
Repository
Links
Documentation¶
Overview¶
Package integration contains Tailscale integration tests.
This package is considered internal and the public API is subjectto change without notice.
Index¶
- Variables
- func RunDERPAndSTUN(t testing.TB, logf logger.Logf, ipAddress string) (derpMap *tailcfg.DERPMap)
- type Binaries
- type BinaryInfo
- type ConfigureControl
- type Daemon
- type LogCatcher
- type TestEnv
- type TestEnvOpt
- type TestNode
- func (n *TestNode) AwaitBackendState(state string)
- func (n *TestNode) AwaitIP4() netip.Addr
- func (n *TestNode) AwaitIP6() netip.Addr
- func (n *TestNode) AwaitIPs() []netip.Addr
- func (n *TestNode) AwaitListening()
- func (n *TestNode) AwaitNeedsLogin()
- func (n *TestNode) AwaitResponding()
- func (n *TestNode) AwaitRunning()
- func (n *TestNode) AwaitSocksAddr(ch <-chan string) string
- func (n *TestNode) LocalClient() *local.Client
- func (n *TestNode) MustDown()
- func (n *TestNode) MustLogOut()
- func (n *TestNode) MustStatus() *ipnstate.Status
- func (n *TestNode) MustUp(extraArgs ...string)
- func (n *TestNode) NLPublicKey() string
- func (n *TestNode) Ping(otherNode *TestNode) error
- func (n *TestNode) PublicKey() string
- func (n *TestNode) StartDaemon() *Daemon
- func (n *TestNode) StartDaemonAsIPNGOOS(ipnGOOS string) *Daemon
- func (n *TestNode) Status() (*ipnstate.Status, error)
- func (n *TestNode) Tailscale(arg ...string) *exec.Cmd
- func (n *TestNode) TailscaleForOutput(arg ...string) *exec.Cmd
Constants¶
This section is empty.
Variables¶
var MainErrorsyncs.AtomicValue[error]MainError is an error that's set if an error conditions happens outside of acontext where a testing.TB is available. The caller can check it in its TestMainas a last ditch place to report errors.
Functions¶
funcRunDERPAndSTUN¶added inv1.12.0
RunDERPAndSTUN runs a local DERP and STUN server for tests, returning the derpMapthat clients should use. This creates resources that must be cleaned up with thereturned cleanup function.
Types¶
typeBinaries¶
type Binaries struct {DirstringTailscaleBinaryInfoTailscaledBinaryInfo}Binaries contains the paths to the tailscale and tailscaled binaries.
funcGetBinaries¶added inv1.84.0
GetBinaries create a temp directory using tb and builds (or copies previouslybuilt) cmd/tailscale and cmd/tailscaled binaries into that directory.
It fails tb if the build or binary copies fail.
typeBinaryInfo¶added inv1.84.0
type BinaryInfo struct {Pathstring// abs path to tailscale or tailscaled binarySizeint64// FD and FDmu are set on Unix to efficiently copy the binary to a new// test's automatically-cleaned-up temp directory.FD *os.File// for Unix (macOS, Linux, ...)FDMusync.Locker// Contents is used on Windows instead of FD to copy the binary between// test directories. (On Windows you can't keep an FD open while an earlier// test's temp directories are deleted.)// This burns some memory and costs more in I/O, but oh well.Contents []byte}BinaryInfo describes a tailscale or tailscaled binary.
func (BinaryInfo)CopyTo¶added inv1.84.0
func (bBinaryInfo) CopyTo(dirstring) (BinaryInfo,error)
typeConfigureControl¶added inv1.84.0
type ConfigureControl func(*testcontrol.Server)
ConfigureControl is a test option that configures the test control server.
func (ConfigureControl)ModifyTestEnv¶added inv1.84.0
func (fConfigureControl) ModifyTestEnv(te *TestEnv)
typeDaemon¶added inv1.84.0
func (*Daemon)MustCleanShutdown¶added inv1.84.0
typeLogCatcher¶added inv1.12.0
type LogCatcher struct {// contains filtered or unexported fields}LogCatcher is a minimal logcatcher for the logtail upload client.
func (*LogCatcher)Reset¶added inv1.12.0
func (lc *LogCatcher) Reset()
Reset clears the buffered logs from memory.
func (*LogCatcher)ServeHTTP¶added inv1.12.0
func (lc *LogCatcher) ServeHTTP(whttp.ResponseWriter, r *http.Request)
func (*LogCatcher)StoreRawJSON¶added inv1.22.0
func (lc *LogCatcher) StoreRawJSON()
StoreRawJSON instructs lc to save the raw JSON uploads, rather than just the text.
func (*LogCatcher)UseLogf¶added inv1.12.0
func (lc *LogCatcher) UseLogf(fnlogger.Logf)
UseLogf makes the logcatcher implementation use a given logf functionto dump all logs to.
typeTestEnv¶added inv1.84.0
type TestEnv struct {LogCatcher *LogCatcherLogCatcherServer *httptest.ServerControl *testcontrol.ServerControlServer *httptest.ServerTrafficTrap *trafficTrapTrafficTrapServer *httptest.Server// contains filtered or unexported fields}TestEnv contains the test environment (set of servers) used by oneor more nodes.
funcNewTestEnv¶added inv1.84.0
func NewTestEnv(ttesting.TB, opts ...TestEnvOpt) *TestEnv
NewTestEnv starts a bunch of services and returns a new test environment.NewTestEnv arranges for the environment's resources to be cleaned up on exit.
func (*TestEnv)ControlURL¶added inv1.84.0
ControlURL returns e.ControlServer.URL, panicking if it's the empty string,which it should never be in tests.
typeTestEnvOpt¶added inv1.84.0
type TestEnvOpt interface {ModifyTestEnv(*TestEnv)}TestEnvOpt represents an option that can be passed to NewTestEnv.
typeTestNode¶added inv1.84.0
type TestNode struct {// contains filtered or unexported fields}TestNode is a machine with a tailscale & tailscaled.Currently, the test is simplistic and user==node==machine.That may grow complexity later to test more.
funcNewTestNode¶added inv1.84.0
NewTestNode allocates a temp directory for a new test node.The node is not started automatically.
func (*TestNode)AwaitBackendState¶added inv1.84.0
func (*TestNode)AwaitListening¶added inv1.84.0
func (n *TestNode) AwaitListening()
AwaitListening waits for the tailscaled to be serving local clientsover its localhost IPC mechanism. (Unix socket, etc)
func (*TestNode)AwaitNeedsLogin¶added inv1.84.0
func (n *TestNode) AwaitNeedsLogin()
AwaitNeedsLogin waits for n to reach the IPN state "NeedsLogin".
func (*TestNode)AwaitResponding¶added inv1.84.0
func (n *TestNode) AwaitResponding()
AwaitResponding waits for n's tailscaled to be up enough to beresponding, but doesn't wait for any particular state.
func (*TestNode)AwaitRunning¶added inv1.84.0
func (n *TestNode) AwaitRunning()
AwaitRunning waits for n to reach the IPN state "Running".
func (*TestNode)AwaitSocksAddr¶added inv1.84.0
func (*TestNode)LocalClient¶added inv1.84.0
func (*TestNode)MustLogOut¶added inv1.84.0
func (n *TestNode) MustLogOut()
func (*TestNode)MustStatus¶added inv1.84.0
func (*TestNode)NLPublicKey¶added inv1.92.0
NLPublicKey returns the hex-encoded network lock public key ofthis node, e.g. `tlpub:123456abc`
func (*TestNode)PublicKey¶added inv1.92.0
PublicKey returns the hex-encoded public key of this node,e.g. `nodekey:123456abc`
func (*TestNode)StartDaemon¶added inv1.84.0
StartDaemon starts the node's tailscaled, failing if it fails to start.StartDaemon ensures that the process will exit when the test completes.
func (*TestNode)StartDaemonAsIPNGOOS¶added inv1.84.0
Directories¶
| Path | Synopsis |
|---|---|
Package testcontrol contains a minimal control plane server for testing purposes. | Package testcontrol contains a minimal control plane server for testing purposes. |
Package vms does VM-based integration/functional tests by using qemu and a bank of pre-made VM images. | Package vms does VM-based integration/functional tests by using qemu and a bank of pre-made VM images. |