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¶
Index¶
- Variables
- func ExecBackground(t *testing.T, processName string, netNS *os.File, name string, args []string) (<-chan error, func() error)
- func StartClientDERP(t *testing.T, logger slog.Logger, serverURL *url.URL, derpMap *tailcfg.DERPMap, ...) *tailnet.Conn
- func StartClientDERPWebSockets(t *testing.T, logger slog.Logger, serverURL *url.URL, derpMap *tailcfg.DERPMap, ...) *tailnet.Conn
- func StartClientDirect(t *testing.T, logger slog.Logger, serverURL *url.URL, derpMap *tailcfg.DERPMap, ...) *tailnet.Conn
- func TestSuite(t *testing.T, _ slog.Logger, serverURL *url.URL, conn *tailnet.Conn, ...)
- type Client
- type ClientNumber
- type ClientStarter
- type NGINXServerOptions
- type ServerStarter
- type SimpleServerOptions
- type TestNetworking
- func SetupNetworkingEasyNAT(t *testing.T, _ slog.Logger) TestNetworking
- func SetupNetworkingEasyNATWithSTUN(t *testing.T, _ slog.Logger) TestNetworking
- func SetupNetworkingHardNATEasyNATDirect(t *testing.T, _ slog.Logger) TestNetworking
- func SetupNetworkingLoopback(t *testing.T, _ slog.Logger) TestNetworking
- type TestNetworkingClient
- type TestNetworkingProcess
- type TestNetworkingSTUN
- type TestNetworkingServer
- type TestTopology
Constants¶
This section is empty.
Variables¶
var Client1 =Client{Number:ClientNumber1,ID:uuid.MustParse("00000000-0000-0000-0000-000000000001"),ListenPort: client1Port,ShouldRunTests:true,}
var Client2 =Client{Number:ClientNumber2,ID:uuid.MustParse("00000000-0000-0000-0000-000000000002"),ListenPort: client2Port,ShouldRunTests:false,}
Functions¶
funcExecBackground¶added inv2.12.0
func ExecBackground(t *testing.T, processNamestring, netNS *os.File, namestring, args []string) (<-chanerror, func()error)
ExecBackground starts a subprocess with the given flags and returns achannel that will receive the error when the subprocess exits. The returnedfunction can be used to close the subprocess.
processName is used to identify the subprocess in logs.
Optionally, a network namespace can be passed to run the subprocess in.
Do not call close then wait on the channel. Use the returned value from thefunction instead in this case.
Cleanup is handled automatically if you don't care about monitoring theprocess manually.
funcStartClientDERP¶added inv2.12.0
func StartClientDERP(t *testing.T, loggerslog.Logger, serverURL *url.URL, derpMap *tailcfg.DERPMap, me, peerClient) *tailnet.Conn
StartClientDERP creates a client connection to the server for coordinationand creates a tailnet.Conn which will only use DERP to connect to the peer.
funcStartClientDERPWebSockets¶added inv2.12.0
func StartClientDERPWebSockets(t *testing.T, loggerslog.Logger, serverURL *url.URL, derpMap *tailcfg.DERPMap, me, peerClient) *tailnet.Conn
StartClientDERPWebSockets does the same thing as StartClientDERP but willonly use DERP WebSocket fallback.
funcStartClientDirect¶added inv2.12.0
func StartClientDirect(t *testing.T, loggerslog.Logger, serverURL *url.URL, derpMap *tailcfg.DERPMap, me, peerClient) *tailnet.Conn
StartClientDirect does the same thing as StartClientDERP but disablesBlockEndpoints (which enables Direct connections), and waits for a directconnection to be established between the two peers.
Types¶
typeClient¶added inv2.12.0
type Client struct {NumberClientNumberIDuuid.UUIDListenPortuint16ShouldRunTestsbool}
typeClientNumber¶added inv2.12.0
type ClientNumberint
const (ClientNumber1ClientNumber = 1ClientNumber2ClientNumber = 2)
typeClientStarter¶added inv2.12.0
typeNGINXServerOptions¶added inv2.12.0
type NGINXServerOptions struct {SimpleServerOptions}
func (NGINXServerOptions)StartServer¶added inv2.12.0
typeServerStarter¶added inv2.12.0
typeSimpleServerOptions¶added inv2.12.0
type SimpleServerOptions struct {// FailUpgradeDERP will make the DERP server fail to handle the initial DERP// upgrade in a way that causes the client to fallback to// DERP-over-WebSocket fallback automatically.// Incompatible with DERPWebsocketOnly.FailUpgradeDERPbool// DERPWebsocketOnly will make the DERP server only accept WebSocket// connections. If a DERP request is received that is not using WebSocket// fallback, the test will fail.// Incompatible with FailUpgradeDERP.DERPWebsocketOnlybool}
func (SimpleServerOptions)Router¶added inv2.12.0
func (oSimpleServerOptions) Router(t *testing.T, loggerslog.Logger) *chi.Mux
func (SimpleServerOptions)StartServer¶added inv2.12.0
typeTestNetworking¶
type TestNetworking struct {ServerTestNetworkingServerSTUNs []TestNetworkingSTUNClient1TestNetworkingClientClient2TestNetworkingClient}
funcSetupNetworkingEasyNAT¶added inv2.12.0
func SetupNetworkingEasyNAT(t *testing.T, _slog.Logger)TestNetworking
SetupNetworkingEasyNAT creates a fake internet and sets up "easy NAT"forwarding rules.See createFakeInternet.NAT is achieved through a single iptables masquerade rule.
funcSetupNetworkingEasyNATWithSTUN¶added inv2.12.0
func SetupNetworkingEasyNATWithSTUN(t *testing.T, _slog.Logger)TestNetworking
SetupNetworkingEasyNATWithSTUN does the same as SetupNetworkingEasyNAT, butalso creates a namespace and bridge address for a STUN server.
funcSetupNetworkingHardNATEasyNATDirect¶added inv2.12.0
func SetupNetworkingHardNATEasyNATDirect(t *testing.T, _slog.Logger)TestNetworking
funcSetupNetworkingLoopback¶
func SetupNetworkingLoopback(t *testing.T, _slog.Logger)TestNetworking
SetupNetworkingLoopback creates a network namespace with a loopback interfacefor all tests to share. This is the simplest networking setup. The networknamespace only exists for isolation on the host and doesn't serve any routingpurpose.
typeTestNetworkingClient¶added inv2.12.0
type TestNetworkingClient struct {ProcessTestNetworkingProcess// ServerAccessURL is the hostname and port that the client uses to access// the server over HTTP for coordination.ServerAccessURLstring// DERPMap is the DERP map that the client uses. If nil, a basic DERP map// containing only a single DERP with `ServerAccessURL` is used with no// STUN servers.DERPMap *tailcfg.DERPMap}
func (TestNetworkingClient)ResolveDERPMap¶added inv2.12.0
func (cTestNetworkingClient) ResolveDERPMap() (*tailcfg.DERPMap,error)
typeTestNetworkingSTUN¶added inv2.12.0
type TestNetworkingSTUN struct {ProcessTestNetworkingProcessIPstringListenAddrstring}
typeTestNetworkingServer¶added inv2.12.0
type TestNetworkingServer struct {ProcessTestNetworkingProcessListenAddrstring}
typeTestTopology¶
type TestTopology struct {Namestring// SetupNetworking creates interfaces and network namespaces for the test.// The most simple implementation is NetworkSetupDefault, which only creates// a network namespace shared for all tests.SetupNetworking func(t *testing.T, loggerslog.Logger)TestNetworking// Server is the server starter for the test. It is executed in the server// subprocess.ServerServerStarter// StartClient gets called in each client subprocess. It's expected to// create the tailnet.Conn and ensure connectivity to it's peer.StartClient func(t *testing.T, loggerslog.Logger, serverURL *url.URL, derpMap *tailcfg.DERPMap, meClient, peerClient) *tailnet.Conn// RunTests is the main test function. It's called in each of the client// subprocesses. If tests can only run once, they should check the client ID// and return early if it's not the expected one.RunTests func(t *testing.T, loggerslog.Logger, serverURL *url.URL, conn *tailnet.Conn, meClient, peerClient)}