(t *testing.T, logger slog.Logger, serverURL *url.URL, derpMap *tailcfg.DERPMap, me, peer Client)
| 403 | } |
| 404 | |
| 405 | func (b BasicClientStarter) StartClient(t *testing.T, logger slog.Logger, serverURL *url.URL, derpMap *tailcfg.DERPMap, me, peer Client) *tailnet.Conn { |
| 406 | var hook capture.Callback |
| 407 | if b.LogPackets { |
| 408 | pktLogger := packetLogger{logger} |
| 409 | hook = pktLogger.LogPacket |
| 410 | } |
| 411 | conn := startClientOptions(t, logger, serverURL, me, peer, &tailnet.Options{ |
| 412 | Addresses: []netip.Prefix{tailnet.TailscaleServicePrefix.PrefixFromUUID(me.ID)}, |
| 413 | DERPMap: derpMap, |
| 414 | BlockEndpoints: b.BlockEndpoints, |
| 415 | Logger: logger, |
| 416 | DERPForceWebSockets: b.DERPForceWebsockets, |
| 417 | ListenPort: me.ListenPort, |
| 418 | // These tests don't have internet connection, so we need to force |
| 419 | // magicsock to do anything. |
| 420 | ForceNetworkUp: true, |
| 421 | CaptureHook: hook, |
| 422 | }) |
| 423 | |
| 424 | if b.Service != nil { |
| 425 | b.Service.StartService(t, logger, conn) |
| 426 | } |
| 427 | |
| 428 | if b.WaitForConnection || b.WaitForDirect { |
| 429 | // Wait for connection to be established. |
| 430 | peerIP := tailnet.TailscaleServicePrefix.AddrFromUUID(peer.ID) |
| 431 | require.Eventually(t, func() bool { |
| 432 | t.Log("attempting ping to peer to judge direct connection") |
| 433 | ctx := testutil.Context(t, testutil.WaitShort) |
| 434 | _, p2p, pong, err := conn.Ping(ctx, peerIP) |
| 435 | if err != nil { |
| 436 | t.Logf("ping failed: %v", err) |
| 437 | return false |
| 438 | } |
| 439 | if !p2p && b.WaitForDirect { |
| 440 | t.Log("ping succeeded, but not direct yet") |
| 441 | return false |
| 442 | } |
| 443 | t.Logf("ping succeeded, p2p=%t, endpoint=%s", p2p, pong.Endpoint) |
| 444 | return true |
| 445 | }, testutil.WaitLong, testutil.IntervalMedium) |
| 446 | } |
| 447 | |
| 448 | return conn |
| 449 | } |
| 450 | |
| 451 | const EchoPort = 2381 |
| 452 |
nothing calls this directly
no test coverage detected