security/tailscale
Mesh VPN that makes it easy to connect your devices
| Flavor | Version | Run | OSVersion | Arch | License | Restricted | Status | |
|---|---|---|---|---|---|---|---|---|
| 1.80.0 | 601 | 3.2 | amd64 | bsd3 | 0 | fail |
License Permissions:
Events
| Machine | Type | Time | Message |
|---|---|---|---|
| m3264b | info | 2025-03-01 23:26:14.178148 | Test Started |
| m3264b | fail | 2025-03-01 23:35:13.95685 | make test returned non-zero: 1 |
| m3264b | fail | 2025-03-01 23:35:14.285888 | Test complete. |
Log
[1m===> Testing for tailscale-1.80.0[0m
(cd /magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0; for t in ./...; do echo "===> Testing ${t}"; /usr/bin/env -i HOME=/magus/work/usr/mports/security/tailscale/work PWD="${PWD}" __MAKE_CONF=/nonexistent OSVERSION=302002 PATH=/magus/work/usr/mports/security/tailscale/work/.bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin TERM=vt100 TMPDIR=/tmp XDG_DATA_HOME=/magus/work/usr/mports/security/tailscale/work XDG_CONFIG_HOME=/magus/work/usr/mports/security/tailscale/work HOME=/magus/work/usr/mports/security/tailscale/work TMPDIR="/tmp" PATH=/magus/work/usr/mports/security/tailscale/work/.bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin PKG_CONFIG_LIBDIR=/magus/work/usr/mports/security/tailscale/work/.pkgconfig:/usr/local/libdata/pkgconfig:/usr/local/share/pkgconfig:/usr/libdata/pkgconfig MK_DEBUG_FILES=no MK_KERNEL_SYMBOLS=no SHELL=/bin/sh NO_LINT=YES TARGETDIR=/usr/local DESTDIR= PREFIX=/usr/local LOCALBASE=/usr/local CC="cc" CFLAGS="-O2 -pipe -fstack-protector-strong -fno-strict-aliasing" CPP="cpp" CPPFLAGS="" LDFLAGS=" -fstack-protector-strong " LIBS="" CXX="c++" CXXFLAGS="-O2 -pipe -fstack-protector-strong -fno-strict-aliasing" BSD_INSTALL_PROGRAM="install -s -o root -g wheel -m 555" BSD_INSTALL_LIB="install -s -o root -g wheel -m 444" BSD_INSTALL_SCRIPT="install -o root -g wheel -m 555" BSD_INSTALL_DATA="install -o root -g wheel -m 444" BSD_INSTALL_MAN="install -o root -g wheel -m 444" CGO_ENABLED=1 CGO_CFLAGS="-I/usr/local/include" CGO_LDFLAGS="-L/usr/local/lib" GOAMD64= GOARM= GOTMPDIR="/magus/work/usr/mports/security/tailscale/work" GOPATH="/magus/distfiles/go/security_tailscale" GOBIN="/magus/work/usr/mports/security/tailscale/work/bin" GO111MODULE=on GOFLAGS=-modcacherw GOSUMDB=sum.golang.org GOPROXY=off /usr/local/bin/go123 test -v -buildvcs=false -mod=vendor ${t}; done)
===> Testing ./...
=== RUN TestGoMod
--- PASS: TestGoMod (0.00s)
=== RUN TestPackageDocs
pkgdoc_test.go:21: skipping on freebsd
--- SKIP: TestPackageDocs (0.00s)
=== RUN TestDockerfileVersion
--- PASS: TestDockerfileVersion (0.00s)
PASS
ok tailscale.com 0.226s
? tailscale.com/appc/appctest [no test files]
=== RUN TestUpdateDomains
logger.go:103: appc: handling domains: [example.com] and wildcards: []
logger.go:103: appc: handling domains: [example.com] and wildcards: []
logger.go:103: appc: handling domains: [up.example.com] and wildcards: []
logger.go:103: appc: handling domains: [example.com] and wildcards: []
logger.go:103: appc: handling domains: [example.com] and wildcards: []
logger.go:103: appc: handling domains: [up.example.com] and wildcards: []
--- PASS: TestUpdateDomains (0.00s)
=== RUN TestUpdateRoutes
logger.go:103: appc: handling domains: [] and wildcards: [example.com]
logger.go:103: appc: [v2] observed new routes for a.example.com: [192.0.2.1/32]
logger.go:103: appc: [v2] advertised route for a.example.com: 192.0.2.1
logger.go:103: appc: [v2] observed new routes for b.example.com: [192.0.0.1/32]
logger.go:103: appc: [v2] advertised route for b.example.com: 192.0.0.1
logger.go:103: appc: handling domains: [] and wildcards: [example.com]
logger.go:103: appc: [v2] observed new routes for a.example.com: [192.0.2.1/32]
logger.go:103: appc: [v2] advertised route for a.example.com: 192.0.2.1
logger.go:103: appc: [v2] observed new routes for b.example.com: [192.0.0.1/32]
logger.go:103: appc: [v2] advertised route for b.example.com: 192.0.0.1
--- PASS: TestUpdateRoutes (0.00s)
=== RUN TestUpdateRoutesUnadvertisesContainedRoutes
--- PASS: TestUpdateRoutesUnadvertisesContainedRoutes (0.00s)
=== RUN TestDomainRoutes
logger.go:103: appc: handling domains: [example.com] and wildcards: []
logger.go:103: appc: [v2] observed new routes for example.com: [192.0.0.8/32]
logger.go:103: appc: [v2] advertised route for example.com: 192.0.0.8
logger.go:103: appc: handling domains: [example.com] and wildcards: []
logger.go:103: appc: [v2] observed new routes for example.com: [192.0.0.8/32]
logger.go:103: appc: [v2] advertised route for example.com: 192.0.0.8
--- PASS: TestDomainRoutes (0.00s)
=== RUN TestObserveDNSResponse
logger.go:103: appc: handling domains: [example.com] and wildcards: []
logger.go:103: appc: [v2] observed new routes for example.com: [192.0.0.8/32]
logger.go:103: appc: [v2] advertised route for example.com: 192.0.0.8
logger.go:103: appc: handling domains: [example.com www.example.com] and wildcards: []
logger.go:103: appc: [v2] observed new routes for example.com: [192.0.0.9/32]
logger.go:103: appc: [v2] advertised route for example.com: 192.0.0.9
logger.go:103: appc: [v2] observed new routes for www.example.com: [192.0.0.10/32]
logger.go:103: appc: [v2] advertised route for www.example.com: 192.0.0.10
logger.go:103: appc: [v2] observed new routes for example.com: [2001:db8::1/128]
logger.go:103: appc: [v2] advertised route for example.com: 2001:db8::1
logger.go:103: appc: handling domains: [example.com] and wildcards: []
logger.go:103: appc: [v2] observed new routes for example.com: [192.0.0.8/32]
logger.go:103: appc: [v2] advertised route for example.com: 192.0.0.8
logger.go:103: appc: handling domains: [www.example.com example.com] and wildcards: []
logger.go:103: appc: [v2] observed new routes for example.com: [192.0.0.9/32]
logger.go:103: appc: [v2] advertised route for example.com: 192.0.0.9
logger.go:103: appc: [v2] observed new routes for www.example.com: [192.0.0.10/32]
logger.go:103: appc: [v2] advertised route for www.example.com: 192.0.0.10
logger.go:103: appc: [v2] observed new routes for example.com: [2001:db8::1/128]
logger.go:103: appc: [v2] advertised route for example.com: 2001:db8::1
--- PASS: TestObserveDNSResponse (0.00s)
=== RUN TestWildcardDomains
logger.go:103: appc: handling domains: [] and wildcards: [example.com]
logger.go:103: appc: [v2] observed new routes for foo.example.com: [192.0.0.8/32]
logger.go:103: appc: [v2] advertised route for foo.example.com: 192.0.0.8
logger.go:103: appc: handling domains: [example.com foo.example.com] and wildcards: [example.com]
logger.go:103: appc: handling domains: [example.com foo.example.com] and wildcards: [example.com]
logger.go:103: appc: handling domains: [] and wildcards: [example.com]
logger.go:103: appc: [v2] observed new routes for foo.example.com: [192.0.0.8/32]
logger.go:103: appc: [v2] advertised route for foo.example.com: 192.0.0.8
logger.go:103: appc: handling domains: [foo.example.com example.com] and wildcards: [example.com]
logger.go:103: appc: handling domains: [example.com foo.example.com] and wildcards: [example.com]
--- PASS: TestWildcardDomains (0.00s)
=== RUN TestUpdateRouteRouteRemoval
logger.go:103: appc: handling domains: [] and wildcards: []
logger.go:103: appc: handling domains: [] and wildcards: []
logger.go:103: appc: handling domains: [] and wildcards: []
logger.go:103: appc: handling domains: [] and wildcards: []
--- PASS: TestUpdateRouteRouteRemoval (0.00s)
=== RUN TestUpdateDomainRouteRemoval
logger.go:103: appc: handling domains: [a.example.com b.example.com] and wildcards: []
logger.go:103: appc: [v2] observed new routes for a.example.com: [1.2.3.1/32]
logger.go:103: appc: [v2] observed new routes for a.example.com: [1.2.3.2/32]
logger.go:103: appc: [v2] observed new routes for b.example.com: [1.2.3.3/32]
logger.go:103: appc: [v2] observed new routes for b.example.com: [1.2.3.4/32]
logger.go:103: appc: [v2] advertised route for a.example.com: 1.2.3.1
logger.go:103: appc: [v2] advertised route for a.example.com: 1.2.3.2
logger.go:103: appc: [v2] advertised route for b.example.com: 1.2.3.3
logger.go:103: appc: [v2] advertised route for b.example.com: 1.2.3.4
logger.go:103: appc: handling domains: [a.example.com] and wildcards: []
logger.go:103: appc: handling domains: [a.example.com b.example.com] and wildcards: []
logger.go:103: appc: [v2] observed new routes for a.example.com: [1.2.3.1/32]
logger.go:103: appc: [v2] observed new routes for a.example.com: [1.2.3.2/32]
logger.go:103: appc: [v2] observed new routes for b.example.com: [1.2.3.3/32]
logger.go:103: appc: [v2] observed new routes for b.example.com: [1.2.3.4/32]
logger.go:103: appc: [v2] advertised route for a.example.com: 1.2.3.1
logger.go:103: appc: [v2] advertised route for a.example.com: 1.2.3.2
logger.go:103: appc: [v2] advertised route for b.example.com: 1.2.3.3
logger.go:103: appc: [v2] advertised route for b.example.com: 1.2.3.4
logger.go:103: appc: handling domains: [a.example.com] and wildcards: []
--- PASS: TestUpdateDomainRouteRemoval (0.00s)
=== RUN TestUpdateWildcardRouteRemoval
logger.go:103: appc: handling domains: [a.example.com] and wildcards: [b.example.com]
logger.go:103: appc: [v2] observed new routes for a.example.com: [1.2.3.1/32]
logger.go:103: appc: [v2] observed new routes for a.example.com: [1.2.3.2/32]
logger.go:103: appc: [v2] observed new routes for 1.b.example.com: [1.2.3.3/32]
logger.go:103: appc: [v2] observed new routes for 2.b.example.com: [1.2.3.4/32]
logger.go:103: appc: [v2] advertised route for a.example.com: 1.2.3.1
logger.go:103: appc: [v2] advertised route for a.example.com: 1.2.3.2
logger.go:103: appc: [v2] advertised route for 1.b.example.com: 1.2.3.3
logger.go:103: appc: [v2] advertised route for 2.b.example.com: 1.2.3.4
logger.go:103: appc: handling domains: [a.example.com] and wildcards: []
logger.go:103: appc: handling domains: [a.example.com] and wildcards: [b.example.com]
logger.go:103: appc: [v2] observed new routes for a.example.com: [1.2.3.1/32]
logger.go:103: appc: [v2] observed new routes for a.example.com: [1.2.3.2/32]
logger.go:103: appc: [v2] observed new routes for 1.b.example.com: [1.2.3.3/32]
logger.go:103: appc: [v2] observed new routes for 2.b.example.com: [1.2.3.4/32]
logger.go:103: appc: [v2] advertised route for a.example.com: 1.2.3.1
logger.go:103: appc: [v2] advertised route for a.example.com: 1.2.3.2
logger.go:103: appc: [v2] advertised route for 1.b.example.com: 1.2.3.3
logger.go:103: appc: [v2] advertised route for 2.b.example.com: 1.2.3.4
logger.go:103: appc: handling domains: [a.example.com] and wildcards: []
--- PASS: TestUpdateWildcardRouteRemoval (0.00s)
=== RUN TestRoutesWithout
--- PASS: TestRoutesWithout (0.00s)
=== RUN TestRateLogger
--- PASS: TestRateLogger (0.00s)
=== RUN TestRouteStoreMetrics
--- PASS: TestRouteStoreMetrics (0.00s)
=== RUN TestMetricBucketsAreSorted
--- PASS: TestMetricBucketsAreSorted (0.00s)
PASS
ok tailscale.com/appc 0.062s
=== RUN TestDoesNotOverwriteIrregularFiles
--- PASS: TestDoesNotOverwriteIrregularFiles (0.00s)
PASS
ok tailscale.com/atomicfile 0.074s
=== RUN TestChirp
--- PASS: TestChirp (0.00s)
=== RUN TestChirpTimeout
--- PASS: TestChirpTimeout (0.51s)
PASS
ok tailscale.com/chirp 0.640s
? tailscale.com/client/systray [no test files]
? tailscale.com/client/tailscale/apitype [no test files]
? tailscale.com/client/tailscale/example/servetls [no test files]
=== RUN TestGetServeConfigFromJSON
--- PASS: TestGetServeConfigFromJSON (0.00s)
=== RUN TestWhoIsPeerNotFound
--- PASS: TestWhoIsPeerNotFound (0.00s)
=== RUN TestDeps
localclient_test.go:73: got 255 dependencies
--- PASS: TestDeps (2.71s)
PASS
ok tailscale.com/client/tailscale 2.837s
? tailscale.com/cmd/addlicense [no test files]
? tailscale.com/cmd/build-webclient [no test files]
=== RUN TestQnapAuthnURL
=== RUN TestQnapAuthnURL/localhost_http
=== RUN TestQnapAuthnURL/localhost_https
=== RUN TestQnapAuthnURL/IP_http
=== RUN TestQnapAuthnURL/IP6_https
=== RUN TestQnapAuthnURL/hostname_https
=== RUN TestQnapAuthnURL/invalid_URL
2025/03/01 23:31:20 Cannot parse QNAP login URL
=== RUN TestQnapAuthnURL/err_!=_nil
2025/03/01 23:31:20 Cannot parse QNAP login URL parse "http://192.168.0.%31/": invalid URL escape "%31"
--- PASS: TestQnapAuthnURL (0.00s)
--- PASS: TestQnapAuthnURL/localhost_http (0.00s)
--- PASS: TestQnapAuthnURL/localhost_https (0.00s)
--- PASS: TestQnapAuthnURL/IP_http (0.00s)
--- PASS: TestQnapAuthnURL/IP6_https (0.00s)
--- PASS: TestQnapAuthnURL/hostname_https (0.00s)
--- PASS: TestQnapAuthnURL/invalid_URL (0.00s)
--- PASS: TestQnapAuthnURL/err_!=_nil (0.00s)
=== RUN TestServeAPI
=== RUN TestServeAPI/100.100.100.102_requesting_/not-an-endpoint
=== RUN TestServeAPI/100.100.100.101_requesting_/not-an-endpoint
=== RUN TestServeAPI/100.100.100.102_requesting_/local/v0/not-an-endpoint
=== RUN TestServeAPI/100.100.100.101_requesting_/local/v0/not-an-endpoint
=== RUN TestServeAPI/100.100.100.102_requesting_/local/v0/logout
=== RUN TestServeAPI/100.100.100.101_requesting_/local/v0/logout
=== RUN TestServeAPI/100.100.100.102_requesting_/exit-nodes
=== RUN TestServeAPI/100.100.100.101_requesting_/exit-nodes
=== RUN TestServeAPI/100.100.100.102_requesting_/routes
=== RUN TestServeAPI/100.100.100.101_requesting_/routes
=== RUN TestServeAPI/100.100.100.102_requesting_/local/v0/prefs
=== RUN TestServeAPI/100.100.100.101_requesting_/local/v0/prefs
=== RUN TestServeAPI/100.100.100.102_requesting_/local/v0/prefs#01
=== RUN TestServeAPI/100.100.100.101_requesting_/local/v0/prefs#01
--- PASS: TestServeAPI (0.02s)
--- PASS: TestServeAPI/100.100.100.102_requesting_/not-an-endpoint (0.00s)
--- PASS: TestServeAPI/100.100.100.101_requesting_/not-an-endpoint (0.00s)
--- PASS: TestServeAPI/100.100.100.102_requesting_/local/v0/not-an-endpoint (0.00s)
--- PASS: TestServeAPI/100.100.100.101_requesting_/local/v0/not-an-endpoint (0.00s)
--- PASS: TestServeAPI/100.100.100.102_requesting_/local/v0/logout (0.00s)
--- PASS: TestServeAPI/100.100.100.101_requesting_/local/v0/logout (0.00s)
--- PASS: TestServeAPI/100.100.100.102_requesting_/exit-nodes (0.00s)
--- PASS: TestServeAPI/100.100.100.101_requesting_/exit-nodes (0.00s)
--- PASS: TestServeAPI/100.100.100.102_requesting_/routes (0.00s)
--- PASS: TestServeAPI/100.100.100.101_requesting_/routes (0.00s)
--- PASS: TestServeAPI/100.100.100.102_requesting_/local/v0/prefs (0.00s)
--- PASS: TestServeAPI/100.100.100.101_requesting_/local/v0/prefs (0.00s)
--- PASS: TestServeAPI/100.100.100.102_requesting_/local/v0/prefs#01 (0.00s)
--- PASS: TestServeAPI/100.100.100.101_requesting_/local/v0/prefs#01 (0.00s)
=== RUN TestGetTailscaleBrowserSession
=== RUN TestGetTailscaleBrowserSession/not-connected-over-tailscale
=== RUN TestGetTailscaleBrowserSession/no-session-user-self-node
=== RUN TestGetTailscaleBrowserSession/no-session-tagged-self-node
=== RUN TestGetTailscaleBrowserSession/not-owner
=== RUN TestGetTailscaleBrowserSession/tagged-remote-source
=== RUN TestGetTailscaleBrowserSession/tagged-local-source
=== RUN TestGetTailscaleBrowserSession/not-tagged-local-source
=== RUN TestGetTailscaleBrowserSession/has-session
=== RUN TestGetTailscaleBrowserSession/has-authorized-session
=== RUN TestGetTailscaleBrowserSession/session-associated-with-different-source
=== RUN TestGetTailscaleBrowserSession/session-expired
--- PASS: TestGetTailscaleBrowserSession (0.01s)
--- PASS: TestGetTailscaleBrowserSession/not-connected-over-tailscale (0.00s)
--- PASS: TestGetTailscaleBrowserSession/no-session-user-self-node (0.00s)
--- PASS: TestGetTailscaleBrowserSession/no-session-tagged-self-node (0.00s)
--- PASS: TestGetTailscaleBrowserSession/not-owner (0.00s)
--- PASS: TestGetTailscaleBrowserSession/tagged-remote-source (0.00s)
--- PASS: TestGetTailscaleBrowserSession/tagged-local-source (0.00s)
--- PASS: TestGetTailscaleBrowserSession/not-tagged-local-source (0.00s)
--- PASS: TestGetTailscaleBrowserSession/has-session (0.00s)
--- PASS: TestGetTailscaleBrowserSession/has-authorized-session (0.00s)
--- PASS: TestGetTailscaleBrowserSession/session-associated-with-different-source (0.00s)
--- PASS: TestGetTailscaleBrowserSession/session-expired (0.00s)
=== RUN TestAuthorizeRequest
=== RUN TestAuthorizeRequest/GET-/api/data
=== RUN TestAuthorizeRequest/POST-/api/data
=== RUN TestAuthorizeRequest/GET-/api/somethingelse
=== RUN TestAuthorizeRequest/-/assets/styles.css
--- PASS: TestAuthorizeRequest (0.01s)
--- PASS: TestAuthorizeRequest/GET-/api/data (0.00s)
--- PASS: TestAuthorizeRequest/POST-/api/data (0.00s)
--- PASS: TestAuthorizeRequest/GET-/api/somethingelse (0.00s)
--- PASS: TestAuthorizeRequest/-/assets/styles.css (0.00s)
=== RUN TestServeAuth
=== RUN TestServeAuth/no-session
2025/03/01 23:31:20 http: panic serving local-tailscaled.sock:80|0: runtime error: invalid memory address or nil pointer dereference
goroutine 166 [running]:
net/http.(*conn).serve.func1()
/usr/local/go123/src/net/http/server.go:1947 +0xbe
panic({0xa33120?, 0x1016bf0?})
/usr/local/go123/src/runtime/panic.go:785 +0x132
tailscale.com/client/web.TestServeAuth.mockLocalAPI.func5({0xc03570, 0xc000198fc0}, 0xc000486140)
/magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/client/web/web_test.go:1453 +0x47e
net/http.HandlerFunc.ServeHTTP(0x412f25?, {0xc03570?, 0xc000198fc0?}, 0xc000198f01?)
/usr/local/go123/src/net/http/server.go:2220 +0x29
net/http.serverHandler.ServeHTTP({0xc01298?}, {0xc03570?, 0xc000198fc0?}, 0x6?)
/usr/local/go123/src/net/http/server.go:3210 +0x8e
net/http.(*conn).serve(0xc0001e4750, {0xc04950, 0xc0001e6990})
/usr/local/go123/src/net/http/server.go:2092 +0x5d0
created by net/http.(*Server).Serve in goroutine 163
/usr/local/go123/src/net/http/server.go:3360 +0x485
=== RUN TestServeAuth/new-session
=== RUN TestServeAuth/query-existing-incomplete-session
2025/03/01 23:31:20 http: panic serving local-tailscaled.sock:80|0: runtime error: invalid memory address or nil pointer dereference
goroutine 178 [running]:
net/http.(*conn).serve.func1()
/usr/local/go123/src/net/http/server.go:1947 +0xbe
panic({0xa33120?, 0x1016bf0?})
/usr/local/go123/src/runtime/panic.go:785 +0x132
tailscale.com/client/web.TestServeAuth.mockLocalAPI.func5({0xc03570, 0xc000199880}, 0xc0004cc280)
/magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/client/web/web_test.go:1453 +0x47e
net/http.HandlerFunc.ServeHTTP(0x412f25?, {0xc03570?, 0xc000199880?}, 0xc000199801?)
/usr/local/go123/src/net/http/server.go:2220 +0x29
net/http.serverHandler.ServeHTTP({0xc01298?}, {0xc03570?, 0xc000199880?}, 0x6?)
/usr/local/go123/src/net/http/server.go:3210 +0x8e
net/http.(*conn).serve(0xc0001e57a0, {0xc04950, 0xc0001e6990})
/usr/local/go123/src/net/http/server.go:2092 +0x5d0
created by net/http.(*Server).Serve in goroutine 163
/usr/local/go123/src/net/http/server.go:3360 +0x485
=== RUN TestServeAuth/existing-session-used
=== RUN TestServeAuth/transition-to-successful-session
=== RUN TestServeAuth/query-existing-complete-session
2025/03/01 23:31:20 http: panic serving local-tailscaled.sock:80|0: runtime error: invalid memory address or nil pointer dereference
goroutine 196 [running]:
net/http.(*conn).serve.func1()
/usr/local/go123/src/net/http/server.go:1947 +0xbe
panic({0xa33120?, 0x1016bf0?})
/usr/local/go123/src/runtime/panic.go:785 +0x132
tailscale.com/client/web.TestServeAuth.mockLocalAPI.func5({0xc03570, 0xc0004fe460}, 0xc000502dc0)
/magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/client/web/web_test.go:1453 +0x47e
net/http.HandlerFunc.ServeHTTP(0x412f25?, {0xc03570?, 0xc0004fe460?}, 0xc0004fe401?)
/usr/local/go123/src/net/http/server.go:2220 +0x29
net/http.serverHandler.ServeHTTP({0xc01298?}, {0xc03570?, 0xc0004fe460?}, 0x6?)
/usr/local/go123/src/net/http/server.go:3210 +0x8e
net/http.(*conn).serve(0xc0004b74d0, {0xc04950, 0xc0001e6990})
/usr/local/go123/src/net/http/server.go:2092 +0x5d0
created by net/http.(*Server).Serve in goroutine 163
/usr/local/go123/src/net/http/server.go:3360 +0x485
=== RUN TestServeAuth/transition-to-failed-session
=== RUN TestServeAuth/failed-session-cleaned-up
=== RUN TestServeAuth/expired-cookie-gets-new-session
=== RUN TestServeAuth/control-server-no-check-mode
--- PASS: TestServeAuth (0.05s)
--- PASS: TestServeAuth/no-session (0.00s)
--- PASS: TestServeAuth/new-session (0.00s)
--- PASS: TestServeAuth/query-existing-incomplete-session (0.00s)
--- PASS: TestServeAuth/existing-session-used (0.00s)
--- PASS: TestServeAuth/transition-to-successful-session (0.00s)
--- PASS: TestServeAuth/query-existing-complete-session (0.04s)
--- PASS: TestServeAuth/transition-to-failed-session (0.00s)
--- PASS: TestServeAuth/failed-session-cleaned-up (0.00s)
--- PASS: TestServeAuth/expired-cookie-gets-new-session (0.00s)
--- PASS: TestServeAuth/control-server-no-check-mode (0.00s)
=== RUN TestServeAPIAuthMetricLogging
=== RUN TestServeAPIAuthMetricLogging/managing-remote
=== RUN TestServeAPIAuthMetricLogging/managing-local
=== RUN TestServeAPIAuthMetricLogging/viewing-not-owner
=== RUN TestServeAPIAuthMetricLogging/viewing-local-tagged
=== RUN TestServeAPIAuthMetricLogging/viewing-remote-tagged
=== RUN TestServeAPIAuthMetricLogging/viewing-local-non-tailscale
=== RUN TestServeAPIAuthMetricLogging/viewing-local-unauthenticated
=== RUN TestServeAPIAuthMetricLogging/viewing-remote-unauthenticated
--- PASS: TestServeAPIAuthMetricLogging (0.02s)
--- PASS: TestServeAPIAuthMetricLogging/managing-remote (0.00s)
--- PASS: TestServeAPIAuthMetricLogging/managing-local (0.00s)
--- PASS: TestServeAPIAuthMetricLogging/viewing-not-owner (0.00s)
--- PASS: TestServeAPIAuthMetricLogging/viewing-local-tagged (0.00s)
--- PASS: TestServeAPIAuthMetricLogging/viewing-remote-tagged (0.00s)
--- PASS: TestServeAPIAuthMetricLogging/viewing-local-non-tailscale (0.00s)
--- PASS: TestServeAPIAuthMetricLogging/viewing-local-unauthenticated (0.00s)
--- PASS: TestServeAPIAuthMetricLogging/viewing-remote-unauthenticated (0.00s)
=== RUN TestPathPrefix
=== RUN TestPathPrefix/no-leading-slash
=== RUN TestPathPrefix/2-slashes
=== RUN TestPathPrefix/absolute-url
=== RUN TestPathPrefix/double-dot
--- PASS: TestPathPrefix (0.01s)
--- PASS: TestPathPrefix/no-leading-slash (0.00s)
--- PASS: TestPathPrefix/2-slashes (0.00s)
--- PASS: TestPathPrefix/absolute-url (0.00s)
--- PASS: TestPathPrefix/double-dot (0.00s)
=== RUN TestRequireTailscaleIP
=== RUN TestRequireTailscaleIP/localhost
=== RUN TestRequireTailscaleIP/ipv4-no-port
=== RUN TestRequireTailscaleIP/ipv4-correct-port
=== RUN TestRequireTailscaleIP/ipv6-no-port
=== RUN TestRequireTailscaleIP/ipv6-correct-port
=== RUN TestRequireTailscaleIP/quad-100
=== RUN TestRequireTailscaleIP/ipv6-service-addr
--- PASS: TestRequireTailscaleIP (0.01s)
--- PASS: TestRequireTailscaleIP/localhost (0.00s)
--- PASS: TestRequireTailscaleIP/ipv4-no-port (0.00s)
--- PASS: TestRequireTailscaleIP/ipv4-correct-port (0.00s)
--- PASS: TestRequireTailscaleIP/ipv6-no-port (0.00s)
--- PASS: TestRequireTailscaleIP/ipv6-correct-port (0.00s)
--- PASS: TestRequireTailscaleIP/quad-100 (0.00s)
--- PASS: TestRequireTailscaleIP/ipv6-service-addr (0.00s)
=== RUN TestPeerCapabilities
=== RUN TestPeerCapabilities/toPeerCapabilities-empty-whois
=== RUN TestPeerCapabilities/toPeerCapabilities-user-owned-node-non-owner-caps-ignored
=== RUN TestPeerCapabilities/toPeerCapabilities-user-owned-node-owner-caps-ignored
=== RUN TestPeerCapabilities/toPeerCapabilities-tag-owned-no-webui-caps
=== RUN TestPeerCapabilities/toPeerCapabilities-tag-owned-one-webui-cap
=== RUN TestPeerCapabilities/toPeerCapabilities-tag-owned-multiple-webui-cap
=== RUN TestPeerCapabilities/toPeerCapabilities-tag-owned-case-insensitive-caps
=== RUN TestPeerCapabilities/toPeerCapabilities-tag-owned-random-canEdit-contents-get-dropped
=== RUN TestPeerCapabilities/toPeerCapabilities-tag-owned-no-canEdit-section
=== RUN TestPeerCapabilities/toPeerCapabilities-tagged-source-caps-ignored
=== RUN TestPeerCapabilities/canEdit-empty-caps
=== RUN TestPeerCapabilities/canEdit-some-caps
=== RUN TestPeerCapabilities/canEdit-wildcard-in-caps
--- PASS: TestPeerCapabilities (0.00s)
--- PASS: TestPeerCapabilities/toPeerCapabilities-empty-whois (0.00s)
--- PASS: TestPeerCapabilities/toPeerCapabilities-user-owned-node-non-owner-caps-ignored (0.00s)
--- PASS: TestPeerCapabilities/toPeerCapabilities-user-owned-node-owner-caps-ignored (0.00s)
--- PASS: TestPeerCapabilities/toPeerCapabilities-tag-owned-no-webui-caps (0.00s)
--- PASS: TestPeerCapabilities/toPeerCapabilities-tag-owned-one-webui-cap (0.00s)
--- PASS: TestPeerCapabilities/toPeerCapabilities-tag-owned-multiple-webui-cap (0.00s)
--- PASS: TestPeerCapabilities/toPeerCapabilities-tag-owned-case-insensitive-caps (0.00s)
--- PASS: TestPeerCapabilities/toPeerCapabilities-tag-owned-random-canEdit-contents-get-dropped (0.00s)
--- PASS: TestPeerCapabilities/toPeerCapabilities-tag-owned-no-canEdit-section (0.00s)
--- PASS: TestPeerCapabilities/toPeerCapabilities-tagged-source-caps-ignored (0.00s)
--- PASS: TestPeerCapabilities/canEdit-empty-caps (0.00s)
--- PASS: TestPeerCapabilities/canEdit-some-caps (0.00s)
--- PASS: TestPeerCapabilities/canEdit-wildcard-in-caps (0.00s)
PASS
ok tailscale.com/client/web 0.246s
=== RUN TestUpdateDebianAptSourcesListBytes
=== RUN TestUpdateDebianAptSourcesListBytes/stable-to-unstable
=== RUN TestUpdateDebianAptSourcesListBytes/stable-unchanged
=== RUN TestUpdateDebianAptSourcesListBytes/if-both-stable-and-unstable-dont-change
=== RUN TestUpdateDebianAptSourcesListBytes/if-both-stable-and-unstable-dont-change-unstable
=== RUN TestUpdateDebianAptSourcesListBytes/signed-by-form
=== RUN TestUpdateDebianAptSourcesListBytes/unsupported-lines
--- PASS: TestUpdateDebianAptSourcesListBytes (0.00s)
--- PASS: TestUpdateDebianAptSourcesListBytes/stable-to-unstable (0.00s)
--- PASS: TestUpdateDebianAptSourcesListBytes/stable-unchanged (0.00s)
--- PASS: TestUpdateDebianAptSourcesListBytes/if-both-stable-and-unstable-dont-change (0.00s)
--- PASS: TestUpdateDebianAptSourcesListBytes/if-both-stable-and-unstable-dont-change-unstable (0.00s)
--- PASS: TestUpdateDebianAptSourcesListBytes/signed-by-form (0.00s)
--- PASS: TestUpdateDebianAptSourcesListBytes/unsupported-lines (0.00s)
=== RUN TestUpdateYUMRepoTrack
=== RUN TestUpdateYUMRepoTrack/same_track
=== RUN TestUpdateYUMRepoTrack/change_track
=== RUN TestUpdateYUMRepoTrack/non-tailscale_repo_file
--- PASS: TestUpdateYUMRepoTrack (0.00s)
--- PASS: TestUpdateYUMRepoTrack/same_track (0.00s)
--- PASS: TestUpdateYUMRepoTrack/change_track (0.00s)
--- PASS: TestUpdateYUMRepoTrack/non-tailscale_repo_file (0.00s)
=== RUN TestParseAlpinePackageVersion
=== RUN TestParseAlpinePackageVersion/valid_version
=== RUN TestParseAlpinePackageVersion/wrong_package_output
=== RUN TestParseAlpinePackageVersion/missing_version
=== RUN TestParseAlpinePackageVersion/empty_output
=== RUN TestParseAlpinePackageVersion/multiple_versions
--- PASS: TestParseAlpinePackageVersion (0.00s)
--- PASS: TestParseAlpinePackageVersion/valid_version (0.00s)
--- PASS: TestParseAlpinePackageVersion/wrong_package_output (0.00s)
--- PASS: TestParseAlpinePackageVersion/missing_version (0.00s)
--- PASS: TestParseAlpinePackageVersion/empty_output (0.00s)
--- PASS: TestParseAlpinePackageVersion/multiple_versions (0.00s)
=== RUN TestSynoArch
=== RUN TestSynoArch/amd64-synology_x86_224
=== RUN TestSynoArch/arm64-synology_armv8_124
=== RUN TestSynoArch/386-synology_i686_415play
=== RUN TestSynoArch/arm-synology_88f6281_213air
=== RUN TestSynoArch/arm-synology_88f6282_413j
=== RUN TestSynoArch/arm-synology_hi3535_NVR1218
=== RUN TestSynoArch/arm-synology_alpine_1517
=== RUN TestSynoArch/arm-synology_armada370_216se
=== RUN TestSynoArch/arm-synology_armada375_115
=== RUN TestSynoArch/arm-synology_armada38x_419slim
=== RUN TestSynoArch/arm-synology_armadaxp_RS815
=== RUN TestSynoArch/arm-synology_comcerto2k_414j
=== RUN TestSynoArch/arm-synology_monaco_216play
=== RUN TestSynoArch/ppc64-synology_qoriq_413
--- PASS: TestSynoArch (0.01s)
--- PASS: TestSynoArch/amd64-synology_x86_224 (0.00s)
--- PASS: TestSynoArch/arm64-synology_armv8_124 (0.00s)
--- PASS: TestSynoArch/386-synology_i686_415play (0.00s)
--- PASS: TestSynoArch/arm-synology_88f6281_213air (0.00s)
--- PASS: TestSynoArch/arm-synology_88f6282_413j (0.00s)
--- PASS: TestSynoArch/arm-synology_hi3535_NVR1218 (0.00s)
--- PASS: TestSynoArch/arm-synology_alpine_1517 (0.00s)
--- PASS: TestSynoArch/arm-synology_armada370_216se (0.00s)
--- PASS: TestSynoArch/arm-synology_armada375_115 (0.00s)
--- PASS: TestSynoArch/arm-synology_armada38x_419slim (0.00s)
--- PASS: TestSynoArch/arm-synology_armadaxp_RS815 (0.00s)
--- PASS: TestSynoArch/arm-synology_comcerto2k_414j (0.00s)
--- PASS: TestSynoArch/arm-synology_monaco_216play (0.00s)
--- PASS: TestSynoArch/ppc64-synology_qoriq_413 (0.00s)
=== RUN TestParseSynoinfo
=== RUN TestParseSynoinfo/double-quoted
=== RUN TestParseSynoinfo/single-quoted
=== RUN TestParseSynoinfo/unquoted
=== RUN TestParseSynoinfo/missing_unique
=== RUN TestParseSynoinfo/empty_unique
=== RUN TestParseSynoinfo/empty_unique_double-quoted
=== RUN TestParseSynoinfo/empty_unique_single-quoted
=== RUN TestParseSynoinfo/malformed_unique
=== RUN TestParseSynoinfo/empty_file
=== RUN TestParseSynoinfo/empty_lines_and_comments
--- PASS: TestParseSynoinfo (0.01s)
--- PASS: TestParseSynoinfo/double-quoted (0.00s)
--- PASS: TestParseSynoinfo/single-quoted (0.00s)
--- PASS: TestParseSynoinfo/unquoted (0.00s)
--- PASS: TestParseSynoinfo/missing_unique (0.00s)
--- PASS: TestParseSynoinfo/empty_unique (0.00s)
--- PASS: TestParseSynoinfo/empty_unique_double-quoted (0.00s)
--- PASS: TestParseSynoinfo/empty_unique_single-quoted (0.00s)
--- PASS: TestParseSynoinfo/malformed_unique (0.00s)
--- PASS: TestParseSynoinfo/empty_file (0.00s)
--- PASS: TestParseSynoinfo/empty_lines_and_comments (0.00s)
=== RUN TestUnpackLinuxTarball
=== RUN TestUnpackLinuxTarball/success
clientupdate.go:949: Updated /tmp/TestUnpackLinuxTarballsuccess4171265234/001/tailscale
clientupdate.go:953: Updated /tmp/TestUnpackLinuxTarballsuccess4171265234/001/tailscaled
=== RUN TestUnpackLinuxTarball/don't_touch_unrelated_files
clientupdate.go:949: Updated /tmp/TestUnpackLinuxTarballdont_touch_unrelated_files3418579382/001/tailscale
clientupdate.go:953: Updated /tmp/TestUnpackLinuxTarballdont_touch_unrelated_files3418579382/001/tailscaled
=== RUN TestUnpackLinuxTarball/unmodified
clientupdate.go:949: Updated /tmp/TestUnpackLinuxTarballunmodified4010780534/001/tailscale
clientupdate.go:953: Updated /tmp/TestUnpackLinuxTarballunmodified4010780534/001/tailscaled
=== RUN TestUnpackLinuxTarball/ignore_extra_tarball_files
clientupdate.go:949: Updated /tmp/TestUnpackLinuxTarballignore_extra_tarball_files3846997396/001/tailscale
clientupdate.go:953: Updated /tmp/TestUnpackLinuxTarballignore_extra_tarball_files3846997396/001/tailscaled
=== RUN TestUnpackLinuxTarball/tarball_missing_tailscaled
=== RUN TestUnpackLinuxTarball/duplicate_tailscale_binary
=== RUN TestUnpackLinuxTarball/empty_archive
--- PASS: TestUnpackLinuxTarball (0.15s)
--- PASS: TestUnpackLinuxTarball/success (0.00s)
--- PASS: TestUnpackLinuxTarball/don't_touch_unrelated_files (0.00s)
--- PASS: TestUnpackLinuxTarball/unmodified (0.02s)
--- PASS: TestUnpackLinuxTarball/ignore_extra_tarball_files (0.00s)
--- PASS: TestUnpackLinuxTarball/tarball_missing_tailscaled (0.00s)
--- PASS: TestUnpackLinuxTarball/duplicate_tailscale_binary (0.03s)
--- PASS: TestUnpackLinuxTarball/empty_archive (0.00s)
=== RUN TestWriteFileOverwrite
--- PASS: TestWriteFileOverwrite (0.00s)
=== RUN TestWriteFileSymlink
--- PASS: TestWriteFileSymlink (0.00s)
=== RUN TestCleanupOldDownloads
=== RUN TestCleanupOldDownloads/MSIs
=== RUN TestCleanupOldDownloads/SPKs
=== RUN TestCleanupOldDownloads/empty-target
=== RUN TestCleanupOldDownloads/keep-dirs
=== RUN TestCleanupOldDownloads/no-follow-symlinks
--- PASS: TestCleanupOldDownloads (0.01s)
--- PASS: TestCleanupOldDownloads/MSIs (0.00s)
--- PASS: TestCleanupOldDownloads/SPKs (0.00s)
--- PASS: TestCleanupOldDownloads/empty-target (0.00s)
--- PASS: TestCleanupOldDownloads/keep-dirs (0.00s)
--- PASS: TestCleanupOldDownloads/no-follow-symlinks (0.00s)
=== RUN TestParseUnraidPluginVersion
=== RUN TestParseUnraidPluginVersion/testdata/tailscale-1.52.0.plg
=== RUN TestParseUnraidPluginVersion/testdata/tailscale-1.54.0.plg
=== RUN TestParseUnraidPluginVersion/testdata/tailscale-nover.plg
=== RUN TestParseUnraidPluginVersion/testdata/tailscale-nover-path-mentioned.plg
--- PASS: TestParseUnraidPluginVersion (0.00s)
--- PASS: TestParseUnraidPluginVersion/testdata/tailscale-1.52.0.plg (0.00s)
--- PASS: TestParseUnraidPluginVersion/testdata/tailscale-1.54.0.plg (0.00s)
--- PASS: TestParseUnraidPluginVersion/testdata/tailscale-nover.plg (0.00s)
--- PASS: TestParseUnraidPluginVersion/testdata/tailscale-nover-path-mentioned.plg (0.00s)
=== RUN TestConfirm
=== RUN TestConfirm/on_latest_stable
clientupdate.go:278: already running stable version 1.66.0; no update needed
=== RUN TestConfirm/stable_upgrade
=== RUN TestConfirm/unstable_upgrade
=== RUN TestConfirm/from_stable_to_unstable
=== RUN TestConfirm/from_unstable_to_stable
=== RUN TestConfirm/confirm_callback_rejects
=== RUN TestConfirm/confirm_callback_allows
=== RUN TestConfirm/downgrade
clientupdate.go:281: installed stable version 1.66.1 is newer than the latest available version 1.66.0; no update needed
--- PASS: TestConfirm (0.00s)
--- PASS: TestConfirm/on_latest_stable (0.00s)
--- PASS: TestConfirm/stable_upgrade (0.00s)
--- PASS: TestConfirm/unstable_upgrade (0.00s)
--- PASS: TestConfirm/from_stable_to_unstable (0.00s)
--- PASS: TestConfirm/from_unstable_to_stable (0.00s)
--- PASS: TestConfirm/confirm_callback_rejects (0.00s)
--- PASS: TestConfirm/confirm_callback_allows (0.00s)
--- PASS: TestConfirm/downgrade (0.00s)
PASS
ok tailscale.com/clientupdate 0.351s
=== RUN TestDownload
=== RUN TestDownload/missing_file
=== NAME TestDownload
distsign.go:223: Downloading "http://127.0.0.1:61841/hello"
=== RUN TestDownload/success
=== NAME TestDownload
distsign.go:223: Downloading "http://127.0.0.1:61841/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:61841/hello.sig"
distsign.go:242: Signature OK
=== RUN TestDownload/no_signature
=== NAME TestDownload
distsign.go:223: Downloading "http://127.0.0.1:61841/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:61841/hello.sig"
=== RUN TestDownload/bad_signature
=== NAME TestDownload
distsign.go:223: Downloading "http://127.0.0.1:61841/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:61841/hello.sig"
=== RUN TestDownload/signed_with_untrusted_key
=== NAME TestDownload
distsign.go:223: Downloading "http://127.0.0.1:61841/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:61841/hello.sig"
=== RUN TestDownload/signed_with_root_key
=== NAME TestDownload
distsign.go:223: Downloading "http://127.0.0.1:61841/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:61841/hello.sig"
=== RUN TestDownload/bad_signing_key_signature
--- PASS: TestDownload (0.08s)
--- PASS: TestDownload/missing_file (0.03s)
--- PASS: TestDownload/success (0.00s)
--- PASS: TestDownload/no_signature (0.02s)
--- PASS: TestDownload/bad_signature (0.01s)
--- PASS: TestDownload/signed_with_untrusted_key (0.01s)
--- PASS: TestDownload/signed_with_root_key (0.01s)
--- PASS: TestDownload/bad_signing_key_signature (0.00s)
=== RUN TestValidateLocalBinary
=== RUN TestValidateLocalBinary/missing_file
=== NAME TestValidateLocalBinary
distsign.go:223: Downloading "http://127.0.0.1:55163/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:55163/hello.sig"
distsign.go:242: Signature OK
distsign.go:278: Downloading "http://127.0.0.1:55163/hello.sig"
=== RUN TestValidateLocalBinary/success
=== NAME TestValidateLocalBinary
distsign.go:223: Downloading "http://127.0.0.1:55163/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:55163/hello.sig"
distsign.go:242: Signature OK
distsign.go:278: Downloading "http://127.0.0.1:55163/hello.sig"
distsign.go:288: Signature OK
=== RUN TestValidateLocalBinary/contents_changed
=== NAME TestValidateLocalBinary
distsign.go:223: Downloading "http://127.0.0.1:55163/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:55163/hello.sig"
distsign.go:242: Signature OK
distsign.go:278: Downloading "http://127.0.0.1:55163/hello.sig"
=== RUN TestValidateLocalBinary/no_signature
=== NAME TestValidateLocalBinary
distsign.go:223: Downloading "http://127.0.0.1:55163/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:55163/hello.sig"
distsign.go:242: Signature OK
distsign.go:278: Downloading "http://127.0.0.1:55163/hello.sig"
=== RUN TestValidateLocalBinary/bad_signature
=== NAME TestValidateLocalBinary
distsign.go:223: Downloading "http://127.0.0.1:55163/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:55163/hello.sig"
distsign.go:242: Signature OK
distsign.go:278: Downloading "http://127.0.0.1:55163/hello.sig"
=== RUN TestValidateLocalBinary/signed_with_untrusted_key
=== NAME TestValidateLocalBinary
distsign.go:223: Downloading "http://127.0.0.1:55163/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:55163/hello.sig"
distsign.go:242: Signature OK
distsign.go:278: Downloading "http://127.0.0.1:55163/hello.sig"
=== RUN TestValidateLocalBinary/signed_with_root_key
=== NAME TestValidateLocalBinary
distsign.go:223: Downloading "http://127.0.0.1:55163/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:55163/hello.sig"
distsign.go:242: Signature OK
distsign.go:278: Downloading "http://127.0.0.1:55163/hello.sig"
=== RUN TestValidateLocalBinary/bad_signing_key_signature
=== NAME TestValidateLocalBinary
distsign.go:223: Downloading "http://127.0.0.1:55163/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:55163/hello.sig"
distsign.go:242: Signature OK
--- PASS: TestValidateLocalBinary (0.35s)
--- PASS: TestValidateLocalBinary/missing_file (0.07s)
--- PASS: TestValidateLocalBinary/success (0.01s)
--- PASS: TestValidateLocalBinary/contents_changed (0.01s)
--- PASS: TestValidateLocalBinary/no_signature (0.02s)
--- PASS: TestValidateLocalBinary/bad_signature (0.01s)
--- PASS: TestValidateLocalBinary/signed_with_untrusted_key (0.21s)
--- PASS: TestValidateLocalBinary/signed_with_root_key (0.01s)
--- PASS: TestValidateLocalBinary/bad_signing_key_signature (0.00s)
=== RUN TestRotateRoot
distsign.go:223: Downloading "http://127.0.0.1:32799/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:32799/hello.sig"
distsign.go:242: Signature OK
distsign.go:223: Downloading "http://127.0.0.1:32799/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:32799/hello.sig"
distsign.go:242: Signature OK
distsign.go:223: Downloading "http://127.0.0.1:32799/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:32799/hello.sig"
distsign.go:242: Signature OK
distsign.go:223: Downloading "http://127.0.0.1:32799/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:32799/hello.sig"
distsign.go:242: Signature OK
--- PASS: TestRotateRoot (0.06s)
=== RUN TestRotateSigning
distsign.go:223: Downloading "http://127.0.0.1:37213/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:37213/hello.sig"
distsign.go:242: Signature OK
distsign.go:223: Downloading "http://127.0.0.1:37213/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:37213/hello.sig"
distsign.go:242: Signature OK
distsign.go:223: Downloading "http://127.0.0.1:37213/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:37213/hello.sig"
distsign.go:242: Signature OK
distsign.go:223: Downloading "http://127.0.0.1:37213/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:37213/hello.sig"
distsign.go:242: Signature OK
distsign.go:223: Downloading "http://127.0.0.1:37213/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:37213/hello.sig"
distsign.go:242: Signature OK
distsign.go:223: Downloading "http://127.0.0.1:37213/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:37213/hello.sig"
distsign.go:223: Downloading "http://127.0.0.1:37213/hello"
distsign.go:351: Download size: 5
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:406: Downloaded 5/5 (100.0%)
distsign.go:229: Downloading "http://127.0.0.1:37213/hello.sig"
distsign.go:242: Signature OK
--- PASS: TestRotateSigning (0.07s)
=== RUN TestParseRootKey
=== RUN TestParseRootKey/valid
=== RUN TestParseRootKey/signing
=== RUN TestParseRootKey/nil
=== RUN TestParseRootKey/invalid_PEM_tag
=== RUN TestParseRootKey/not_PEM
--- PASS: TestParseRootKey (0.00s)
--- PASS: TestParseRootKey/valid (0.00s)
--- PASS: TestParseRootKey/signing (0.00s)
--- PASS: TestParseRootKey/nil (0.00s)
--- PASS: TestParseRootKey/invalid_PEM_tag (0.00s)
--- PASS: TestParseRootKey/not_PEM (0.00s)
=== RUN TestParseSigningKey
=== RUN TestParseSigningKey/valid
=== RUN TestParseSigningKey/root
=== RUN TestParseSigningKey/nil
=== RUN TestParseSigningKey/invalid_PEM_tag
=== RUN TestParseSigningKey/not_PEM
--- PASS: TestParseSigningKey (0.00s)
--- PASS: TestParseSigningKey/valid (0.00s)
--- PASS: TestParseSigningKey/root (0.00s)
--- PASS: TestParseSigningKey/nil (0.00s)
--- PASS: TestParseSigningKey/invalid_PEM_tag (0.00s)
--- PASS: TestParseSigningKey/not_PEM (0.00s)
=== RUN TestParseRoots
--- PASS: TestParseRoots (0.00s)
PASS
ok tailscale.com/clientupdate/distsign 0.671s
? tailscale.com/cmd/checkmetrics [no test files]
? tailscale.com/cmd/cloner/clonerex [no test files]
? tailscale.com/cmd/connector-gen [no test files]
? tailscale.com/cmd/derpprobe [no test files]
? tailscale.com/cmd/dist [no test files]
? tailscale.com/cmd/get-authkey [no test files]
? tailscale.com/cmd/hello [no test files]
=== RUN TestSliceContainer
=== RUN TestSliceContainer/nil
=== RUN TestSliceContainer/zero
=== RUN TestSliceContainer/empty
=== RUN TestSliceContainer/nils
=== RUN TestSliceContainer/one
=== RUN TestSliceContainer/several
--- PASS: TestSliceContainer (0.00s)
--- PASS: TestSliceContainer/nil (0.00s)
--- PASS: TestSliceContainer/zero (0.00s)
--- PASS: TestSliceContainer/empty (0.00s)
--- PASS: TestSliceContainer/nils (0.00s)
--- PASS: TestSliceContainer/one (0.00s)
--- PASS: TestSliceContainer/several (0.00s)
PASS
ok tailscale.com/cmd/cloner 0.140s
=== RUN TestUnpublishedDNS
--- PASS: TestUnpublishedDNS (0.09s)
=== RUN TestUnpublishedDNSEmptyList
=== RUN TestUnpublishedDNSEmptyList/CacheMiss
=== RUN TestUnpublishedDNSEmptyList/CacheHit
--- PASS: TestUnpublishedDNSEmptyList (0.00s)
--- PASS: TestUnpublishedDNSEmptyList/CacheMiss (0.00s)
--- PASS: TestUnpublishedDNSEmptyList/CacheHit (0.00s)
=== RUN TestLookupMetric
--- PASS: TestLookupMetric (0.00s)
=== RUN TestRemoteAddrMatchesPercent
bootstrap_dns_test.go:225: got percent 0.50177001953125 (goal 0.5)
--- PASS: TestRemoteAddrMatchesPercent (0.07s)
=== RUN TestCertIP
--- PASS: TestCertIP (0.00s)
=== RUN TestProdAutocertHostPolicy
--- PASS: TestProdAutocertHostPolicy (0.00s)
=== RUN TestNoContent
=== RUN TestNoContent/no_challenge
=== RUN TestNoContent/valid_challenge
=== RUN TestNoContent/valid_challenge_hostname
=== RUN TestNoContent/invalid_challenge
=== RUN TestNoContent/whitespace_invalid_challenge
=== RUN TestNoContent/long_challenge
--- PASS: TestNoContent (0.00s)
--- PASS: TestNoContent/no_challenge (0.00s)
--- PASS: TestNoContent/valid_challenge (0.00s)
--- PASS: TestNoContent/valid_challenge_hostname (0.00s)
--- PASS: TestNoContent/invalid_challenge (0.00s)
--- PASS: TestNoContent/whitespace_invalid_challenge (0.00s)
--- PASS: TestNoContent/long_challenge (0.00s)
=== RUN TestDeps
derper_test.go:113: got 338 dependencies
--- PASS: TestDeps (2.25s)
=== RUN TestTemplate
--- PASS: TestTemplate (0.00s)
PASS
ok tailscale.com/cmd/derper 2.549s
=== RUN TestEmbeddedTypeUnmarshal
=== RUN TestEmbeddedTypeUnmarshal/unmarshal_gitops_type_from_acl_type
=== RUN TestEmbeddedTypeUnmarshal/unmarshal_acl_type_from_gitops_type
--- PASS: TestEmbeddedTypeUnmarshal (0.00s)
--- PASS: TestEmbeddedTypeUnmarshal/unmarshal_gitops_type_from_acl_type (0.00s)
--- PASS: TestEmbeddedTypeUnmarshal/unmarshal_acl_type_from_gitops_type (0.00s)
PASS
ok tailscale.com/cmd/gitops-pusher 0.193s
=== RUN TestNameserver
=== RUN TestNameserver/A_record_query,_record_exists
=== RUN TestNameserver/A_record_query,_record_does_not_exist
=== RUN TestNameserver/A_record_query,_but_the_name_is_not_a_valid_FQDN
=== RUN TestNameserver/AAAA_record_query,_A_record_exists
=== RUN TestNameserver/AAAA_record_query,_A_record_does_not_exist
=== RUN TestNameserver/CNAME_record_query
2025/03/01 23:32:13 [unexpected] nameserver received a query for an unsupported record type: ;foo.bar.com CLASS0 CNAME
--- PASS: TestNameserver (0.00s)
--- PASS: TestNameserver/A_record_query,_record_exists (0.00s)
--- PASS: TestNameserver/A_record_query,_record_does_not_exist (0.00s)
--- PASS: TestNameserver/A_record_query,_but_the_name_is_not_a_valid_FQDN (0.00s)
--- PASS: TestNameserver/AAAA_record_query,_A_record_exists (0.00s)
--- PASS: TestNameserver/AAAA_record_query,_A_record_does_not_exist (0.00s)
--- PASS: TestNameserver/CNAME_record_query (0.00s)
=== RUN TestResetRecords
=== RUN TestResetRecords/previously_empty_nameserver.ip4_gets_set
=== RUN TestResetRecords/nameserver.ip4_gets_reset
=== RUN TestResetRecords/configuration_with_incompatible_version
=== RUN TestResetRecords/nameserver.ip4_gets_reset_to_empty_config_when_no_configuration_is_provided
2025/03/01 23:32:13 nameserver's configuration is empty, any in-memory records will be unset
=== RUN TestResetRecords/nameserver.ip4_gets_reset_to_empty_config_when_the_provided_configuration_is_empty
2025/03/01 23:32:13 nameserver's configuration contains no records, any in-memory records will be unset
--- PASS: TestResetRecords (0.00s)
--- PASS: TestResetRecords/previously_empty_nameserver.ip4_gets_set (0.00s)
--- PASS: TestResetRecords/nameserver.ip4_gets_reset (0.00s)
--- PASS: TestResetRecords/configuration_with_incompatible_version (0.00s)
--- PASS: TestResetRecords/nameserver.ip4_gets_reset_to_empty_config_when_no_configuration_is_provided (0.00s)
--- PASS: TestResetRecords/nameserver.ip4_gets_reset_to_empty_config_when_the_provided_configuration_is_empty (0.00s)
PASS
ok tailscale.com/cmd/k8s-nameserver 0.284s
? tailscale.com/cmd/mkmanifest [no test files]
? tailscale.com/cmd/mkpkg [no test files]
? tailscale.com/cmd/mkversion [no test files]
? tailscale.com/cmd/nardump [no test files]
? tailscale.com/cmd/natc [no test files]
? tailscale.com/cmd/netlogfmt [no test files]
? tailscale.com/cmd/pgproxy [no test files]
? tailscale.com/cmd/printdep [no test files]
? tailscale.com/cmd/proxy-to-grafana [no test files]
? tailscale.com/cmd/speedtest [no test files]
? tailscale.com/cmd/ssh-auth-none-demo [no test files]
? tailscale.com/cmd/stunc [no test files]
? tailscale.com/cmd/stund [no test files]
=== RUN TestConnector
2025-03-01T23:32:58.813-0500 DEBUG k8s-operator/connector.go:80 starting reconcile {"Connector": "test"}
2025-03-01T23:32:58.814-0500 INFO k8s-operator/connector.go:130 ensuring Connector is set up {"Connector": "test"}
2025-03-01T23:32:58.814-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Connector": "test"}
2025-03-01T23:32:58.819-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"Connector": "test"}
2025-03-01T23:32:58.820-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"test-connector","acceptDNS":false,"acceptRoutes":false,"AdvertiseRoutes":["0.0.0.0/0","::/0","10.40.0.0/14"],"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Connector": "test"}
2025-03-01T23:32:58.822-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-jzkn5 {"Connector": "test"}
2025-03-01T23:32:58.823-0500 DEBUG k8s-operator/connector.go:252 no Tailscale hostname known yet, waiting for Connector Pod to finish auth {"Connector": "test"}
2025-03-01T23:32:58.823-0500 INFO k8s-operator/connector.go:159 Connector resources synced {"Connector": "test"}
2025-03-01T23:32:58.823-0500 DEBUG k8s-operator/connector.go:163 reconcile finished {"Connector": "test"}
2025-03-01T23:32:58.828-0500 DEBUG k8s-operator/connector.go:80 starting reconcile {"Connector": "test"}
2025-03-01T23:32:58.828-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Connector": "test"}
2025-03-01T23:32:58.837-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-jzkn5-0 already exists {"Connector": "test"}
2025-03-01T23:32:58.837-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"test-connector","acceptDNS":false,"acceptRoutes":false,"AdvertiseRoutes":["0.0.0.0/0","::/0","10.40.0.0/14"],"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Connector": "test"}
2025-03-01T23:32:58.840-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-jzkn5 {"Connector": "test"}
2025-03-01T23:32:58.842-0500 INFO k8s-operator/connector.go:159 Connector resources synced {"Connector": "test"}
2025-03-01T23:32:58.842-0500 DEBUG k8s-operator/connector.go:163 reconcile finished {"Connector": "test"}
2025-03-01T23:32:58.843-0500 DEBUG k8s-operator/connector.go:80 starting reconcile {"Connector": "test"}
2025-03-01T23:32:58.843-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Connector": "test"}
2025-03-01T23:32:58.844-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-jzkn5-0 already exists {"Connector": "test"}
2025-03-01T23:32:58.844-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"test-connector","acceptDNS":false,"acceptRoutes":false,"AdvertiseRoutes":["0.0.0.0/0","::/0","10.40.0.0/14","10.44.0.0/20"],"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Connector": "test"}
2025-03-01T23:32:58.846-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-jzkn5 {"Connector": "test"}
2025-03-01T23:32:58.848-0500 INFO k8s-operator/connector.go:159 Connector resources synced {"Connector": "test"}
2025-03-01T23:32:58.849-0500 DEBUG k8s-operator/connector.go:163 reconcile finished {"Connector": "test"}
2025-03-01T23:32:58.850-0500 DEBUG k8s-operator/connector.go:80 starting reconcile {"Connector": "test"}
2025-03-01T23:32:58.850-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Connector": "test"}
2025-03-01T23:32:58.851-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-jzkn5-0 already exists {"Connector": "test"}
2025-03-01T23:32:58.851-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"test-connector","acceptDNS":false,"acceptRoutes":false,"AdvertiseRoutes":["0.0.0.0/0","::/0","10.44.0.0/20"],"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Connector": "test"}
2025-03-01T23:32:58.853-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-jzkn5 {"Connector": "test"}
2025-03-01T23:32:58.855-0500 INFO k8s-operator/connector.go:159 Connector resources synced {"Connector": "test"}
2025-03-01T23:32:58.855-0500 DEBUG k8s-operator/connector.go:163 reconcile finished {"Connector": "test"}
2025-03-01T23:32:58.857-0500 DEBUG k8s-operator/connector.go:80 starting reconcile {"Connector": "test"}
2025-03-01T23:32:58.857-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Connector": "test"}
2025-03-01T23:32:58.858-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-jzkn5-0 already exists {"Connector": "test"}
2025-03-01T23:32:58.858-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"test-connector","acceptDNS":false,"acceptRoutes":false,"AdvertiseRoutes":["0.0.0.0/0","::/0"],"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Connector": "test"}
2025-03-01T23:32:58.860-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-jzkn5 {"Connector": "test"}
2025-03-01T23:32:58.862-0500 INFO k8s-operator/connector.go:159 Connector resources synced {"Connector": "test"}
2025-03-01T23:32:58.862-0500 DEBUG k8s-operator/connector.go:169 reconcile finished {"Connector": "test"}
2025-03-01T23:32:58.864-0500 DEBUG k8s-operator/connector.go:80 starting reconcile {"Connector": "test"}
2025-03-01T23:32:58.864-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Connector": "test"}
2025-03-01T23:32:58.865-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-jzkn5-0 already exists {"Connector": "test"}
2025-03-01T23:32:58.865-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"test-connector","acceptDNS":false,"acceptRoutes":false,"AdvertiseRoutes":["0.0.0.0/0","::/0","10.44.0.0/20"],"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Connector": "test"}
2025-03-01T23:32:58.867-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-jzkn5 {"Connector": "test"}
2025-03-01T23:32:58.869-0500 INFO k8s-operator/connector.go:159 Connector resources synced {"Connector": "test"}
2025-03-01T23:32:58.869-0500 DEBUG k8s-operator/connector.go:163 reconcile finished {"Connector": "test"}
2025-03-01T23:32:58.871-0500 DEBUG k8s-operator/connector.go:80 starting reconcile {"Connector": "test"}
2025-03-01T23:32:58.871-0500 DEBUG k8s-operator/connector.go:92 Connector is being deleted or should not be exposed, cleaning up resources {"Connector": "test"}
2025-03-01T23:32:58.891-0500 DEBUG k8s-operator/sts.go:249 started deletion of statefulset operator-ns/ts-test-jzkn5 {"Connector": "test"}
2025-03-01T23:32:58.894-0500 DEBUG k8s-operator/connector.go:269 Connector cleanup not done yet, waiting for next reconcile {"Connector": "test"}
2025-03-01T23:32:58.894-0500 DEBUG k8s-operator/connector.go:102 Connector resource cleanup not yet finished, will retry... {"Connector": "test"}
2025-03-01T23:32:58.894-0500 DEBUG k8s-operator/connector.go:103 reconcile finished {"Connector": "test"}
2025-03-01T23:32:58.894-0500 DEBUG k8s-operator/connector.go:80 starting reconcile {"Connector": "test"}
2025-03-01T23:32:58.894-0500 DEBUG k8s-operator/connector.go:92 Connector is being deleted or should not be exposed, cleaning up resources {"Connector": "test"}
2025-03-01T23:32:58.894-0500 DEBUG k8s-operator/sts.go:258 deleting device 1234 from control {"Connector": "test"}
2025-03-01T23:32:58.895-0500 DEBUG k8s-operator/sts.go:267 device 1234 deleted from control {"Connector": "test"}
2025-03-01T23:32:58.895-0500 INFO k8s-operator/connector.go:277 cleaned up Connector resources {"Connector": "test"}
2025-03-01T23:32:58.895-0500 INFO k8s-operator/connector.go:110 Connector resources cleaned up {"Connector": "test"}
2025-03-01T23:32:58.895-0500 DEBUG k8s-operator/connector.go:111 reconcile finished {"Connector": "test"}
2025-03-01T23:32:58.895-0500 DEBUG k8s-operator/connector.go:80 starting reconcile {"Connector": "test"}
2025-03-01T23:32:58.895-0500 INFO k8s-operator/connector.go:130 ensuring Connector is set up {"Connector": "test"}
2025-03-01T23:32:58.896-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Connector": "test"}
2025-03-01T23:32:58.896-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"Connector": "test"}
2025-03-01T23:32:58.896-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"test-connector","acceptDNS":false,"acceptRoutes":false,"AdvertiseRoutes":["10.40.0.0/14"],"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Connector": "test"}
2025-03-01T23:32:58.897-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-7vt8j {"Connector": "test"}
2025-03-01T23:32:58.897-0500 DEBUG k8s-operator/connector.go:252 no Tailscale hostname known yet, waiting for Connector Pod to finish auth {"Connector": "test"}
2025-03-01T23:32:58.897-0500 INFO k8s-operator/connector.go:159 Connector resources synced {"Connector": "test"}
2025-03-01T23:32:58.898-0500 DEBUG k8s-operator/connector.go:163 reconcile finished {"Connector": "test"}
2025-03-01T23:32:58.900-0500 DEBUG k8s-operator/connector.go:80 starting reconcile {"Connector": "test"}
2025-03-01T23:32:58.900-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Connector": "test"}
2025-03-01T23:32:58.901-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-7vt8j-0 already exists {"Connector": "test"}
2025-03-01T23:32:58.901-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"test-connector","acceptDNS":false,"acceptRoutes":false,"AdvertiseRoutes":["0.0.0.0/0","::/0","10.40.0.0/14"],"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Connector": "test"}
2025-03-01T23:32:58.942-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-7vt8j {"Connector": "test"}
2025-03-01T23:32:58.945-0500 DEBUG k8s-operator/connector.go:252 no Tailscale hostname known yet, waiting for Connector Pod to finish auth {"Connector": "test"}
2025-03-01T23:32:58.945-0500 INFO k8s-operator/connector.go:159 Connector resources synced {"Connector": "test"}
2025-03-01T23:32:58.946-0500 DEBUG k8s-operator/connector.go:163 reconcile finished {"Connector": "test"}
2025-03-01T23:32:58.948-0500 DEBUG k8s-operator/connector.go:80 starting reconcile {"Connector": "test"}
2025-03-01T23:32:58.948-0500 DEBUG k8s-operator/connector.go:92 Connector is being deleted or should not be exposed, cleaning up resources {"Connector": "test"}
2025-03-01T23:32:58.955-0500 DEBUG k8s-operator/sts.go:249 started deletion of statefulset operator-ns/ts-test-7vt8j {"Connector": "test"}
2025-03-01T23:32:58.956-0500 DEBUG k8s-operator/connector.go:269 Connector cleanup not done yet, waiting for next reconcile {"Connector": "test"}
2025-03-01T23:32:58.956-0500 DEBUG k8s-operator/connector.go:102 Connector resource cleanup not yet finished, will retry... {"Connector": "test"}
2025-03-01T23:32:58.956-0500 DEBUG k8s-operator/connector.go:103 reconcile finished {"Connector": "test"}
2025-03-01T23:32:58.956-0500 DEBUG k8s-operator/connector.go:80 starting reconcile {"Connector": "test"}
2025-03-01T23:32:58.956-0500 DEBUG k8s-operator/connector.go:92 Connector is being deleted or should not be exposed, cleaning up resources {"Connector": "test"}
2025-03-01T23:32:58.957-0500 INFO k8s-operator/connector.go:277 cleaned up Connector resources {"Connector": "test"}
2025-03-01T23:32:58.957-0500 INFO k8s-operator/connector.go:110 Connector resources cleaned up {"Connector": "test"}
2025-03-01T23:32:58.957-0500 DEBUG k8s-operator/connector.go:111 reconcile finished {"Connector": "test"}
--- PASS: TestConnector (0.14s)
=== RUN TestConnectorWithProxyClass
2025-03-01T23:32:58.958-0500 DEBUG k8s-operator/connector.go:80 starting reconcile {"Connector": "test"}
2025-03-01T23:32:58.958-0500 INFO k8s-operator/connector.go:130 ensuring Connector is set up {"Connector": "test"}
2025-03-01T23:32:58.958-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Connector": "test"}
2025-03-01T23:32:58.958-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"Connector": "test"}
2025-03-01T23:32:58.958-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"test-connector","acceptDNS":false,"acceptRoutes":false,"AdvertiseRoutes":["0.0.0.0/0","::/0","10.40.0.0/14"],"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Connector": "test"}
2025-03-01T23:32:58.959-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-8rg7t {"Connector": "test"}
2025-03-01T23:32:58.959-0500 DEBUG k8s-operator/connector.go:252 no Tailscale hostname known yet, waiting for Connector Pod to finish auth {"Connector": "test"}
2025-03-01T23:32:58.959-0500 INFO k8s-operator/connector.go:159 Connector resources synced {"Connector": "test"}
2025-03-01T23:32:58.959-0500 DEBUG k8s-operator/connector.go:163 reconcile finished {"Connector": "test"}
2025-03-01T23:32:58.961-0500 DEBUG k8s-operator/connector.go:80 starting reconcile {"Connector": "test"}
2025-03-01T23:32:58.961-0500 INFO k8s-operator/connector.go:186 ProxyClass custom-metadata specified for the Connector, but is not (yet) Ready, waiting.. {"Connector": "test"}
2025-03-01T23:32:58.961-0500 INFO k8s-operator/connector.go:159 Connector resources synced {"Connector": "test"}
2025-03-01T23:32:58.961-0500 DEBUG k8s-operator/connector.go:163 reconcile finished {"Connector": "test"}
2025-03-01T23:32:58.962-0500 DEBUG k8s-operator/connector.go:80 starting reconcile {"Connector": "test"}
2025-03-01T23:32:58.962-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Connector": "test"}
2025-03-01T23:32:58.963-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-8rg7t-0 already exists {"Connector": "test"}
2025-03-01T23:32:58.963-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"test-connector","acceptDNS":false,"acceptRoutes":false,"AdvertiseRoutes":["0.0.0.0/0","::/0","10.40.0.0/14"],"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Connector": "test"}
2025-03-01T23:32:58.964-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-8rg7t {"Connector": "test"}
2025-03-01T23:32:58.964-0500 DEBUG k8s-operator/sts.go:684 configuring proxy resources with ProxyClass custom-metadata {"Connector": "test"}
2025-03-01T23:32:58.965-0500 DEBUG k8s-operator/connector.go:252 no Tailscale hostname known yet, waiting for Connector Pod to finish auth {"Connector": "test"}
2025-03-01T23:32:58.965-0500 INFO k8s-operator/connector.go:159 Connector resources synced {"Connector": "test"}
2025-03-01T23:32:58.965-0500 DEBUG k8s-operator/connector.go:163 reconcile finished {"Connector": "test"}
connector_test.go:289: applying configuration from ProxyClass custom-metadata
2025-03-01T23:32:58.966-0500 DEBUG k8s-operator/connector.go:80 starting reconcile {"Connector": "test"}
2025-03-01T23:32:58.966-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Connector": "test"}
2025-03-01T23:32:58.966-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-8rg7t-0 already exists {"Connector": "test"}
2025-03-01T23:32:58.966-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"test-connector","acceptDNS":false,"acceptRoutes":false,"AdvertiseRoutes":["0.0.0.0/0","::/0","10.40.0.0/14"],"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Connector": "test"}
2025-03-01T23:32:58.967-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-8rg7t {"Connector": "test"}
2025-03-01T23:32:58.968-0500 DEBUG k8s-operator/connector.go:252 no Tailscale hostname known yet, waiting for Connector Pod to finish auth {"Connector": "test"}
2025-03-01T23:32:58.968-0500 INFO k8s-operator/connector.go:159 Connector resources synced {"Connector": "test"}
2025-03-01T23:32:58.968-0500 DEBUG k8s-operator/connector.go:163 reconcile finished {"Connector": "test"}
--- PASS: TestConnectorWithProxyClass (0.01s)
=== RUN TestConnectorWithAppConnector
2025-03-01T23:32:58.969-0500 DEBUG k8s-operator/connector.go:80 starting reconcile {"Connector": "test"}
2025-03-01T23:32:58.969-0500 INFO k8s-operator/connector.go:130 ensuring Connector is set up {"Connector": "test"}
2025-03-01T23:32:58.969-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Connector": "test"}
2025-03-01T23:32:58.969-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"Connector": "test"}
2025-03-01T23:32:58.969-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"test-connector","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":true},"NoStatefulFiltering":true} {"Connector": "test"}
2025-03-01T23:32:58.970-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-9sxf6 {"Connector": "test"}
2025-03-01T23:32:58.970-0500 DEBUG k8s-operator/connector.go:252 no Tailscale hostname known yet, waiting for Connector Pod to finish auth {"Connector": "test"}
2025-03-01T23:32:58.970-0500 INFO k8s-operator/connector.go:159 Connector resources synced {"Connector": "test"}
2025-03-01T23:32:58.970-0500 DEBUG k8s-operator/connector.go:169 reconcile finished {"Connector": "test"}
2025-03-01T23:32:58.972-0500 DEBUG k8s-operator/connector.go:80 starting reconcile {"Connector": "test"}
2025-03-01T23:32:58.972-0500 INFO k8s-operator/conditions.go:122 Status change for condition ConnectorReady from True to False {"Connector": "test"}
2025-03-01T23:32:58.972-0500 DEBUG k8s-operator/connector.go:141 reconcile finished {"Connector": "test"}
2025-03-01T23:32:58.972-0500 DEBUG k8s-operator/connector.go:80 starting reconcile {"Connector": "test"}
2025-03-01T23:32:58.973-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Connector": "test"}
2025-03-01T23:32:58.973-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-9sxf6-0 already exists {"Connector": "test"}
2025-03-01T23:32:58.973-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"test-connector","acceptDNS":false,"acceptRoutes":false,"AdvertiseRoutes":["10.88.2.21/32"],"AppConnector":{"Advertise":true},"NoStatefulFiltering":true} {"Connector": "test"}
2025-03-01T23:32:58.974-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-9sxf6 {"Connector": "test"}
2025-03-01T23:32:58.975-0500 DEBUG k8s-operator/connector.go:252 no Tailscale hostname known yet, waiting for Connector Pod to finish auth {"Connector": "test"}
2025-03-01T23:32:58.975-0500 INFO k8s-operator/connector.go:159 Connector resources synced {"Connector": "test"}
2025-03-01T23:32:58.975-0500 INFO k8s-operator/conditions.go:122 Status change for condition ConnectorReady from False to True {"Connector": "test"}
2025-03-01T23:32:58.975-0500 DEBUG k8s-operator/connector.go:169 reconcile finished {"Connector": "test"}
--- PASS: TestConnectorWithAppConnector (0.01s)
=== RUN TestDNSRecordsReconciler
2025-03-01T23:32:58.976-0500 DEBUG k8s-operator/dnsrecords.go:59 starting reconcile {"Service": "tailscale/egress-fqdn"}
2025-03-01T23:32:58.976-0500 INFO k8s-operator/dnsrecords.go:174 provisioning DNS record for MagicDNS name: foo.bar.ts.net {"Service": "tailscale/egress-fqdn"}
2025-03-01T23:32:58.976-0500 INFO k8s-operator/dnsrecords.go:200 EndpointSlice is for AddressType IPv6, currently only IPv4 address type is supported {"Service": "tailscale/egress-fqdn"}
2025-03-01T23:32:58.976-0500 DEBUG k8s-operator/dnsrecords.go:110 reconcile finished {"Service": "tailscale/egress-fqdn"}
2025-03-01T23:32:58.976-0500 DEBUG k8s-operator/dnsrecords.go:59 starting reconcile {"Service": "tailscale/egress-fqdn"}
2025-03-01T23:32:58.977-0500 DEBUG k8s-operator/dnsrecords.go:164 MagicDNS name has changed, remvoving record for foo.bar.ts.net {"Service": "tailscale/egress-fqdn"}
2025-03-01T23:32:58.977-0500 INFO k8s-operator/dnsrecords.go:174 provisioning DNS record for MagicDNS name: baz.bar.ts.net {"Service": "tailscale/egress-fqdn"}
2025-03-01T23:32:58.977-0500 INFO k8s-operator/dnsrecords.go:200 EndpointSlice is for AddressType IPv6, currently only IPv4 address type is supported {"Service": "tailscale/egress-fqdn"}
2025-03-01T23:32:58.977-0500 DEBUG k8s-operator/dnsrecords.go:110 reconcile finished {"Service": "tailscale/egress-fqdn"}
2025-03-01T23:32:58.977-0500 DEBUG k8s-operator/dnsrecords.go:59 starting reconcile {"Service": "tailscale/egress-fqdn"}
2025-03-01T23:32:58.977-0500 INFO k8s-operator/dnsrecords.go:200 EndpointSlice is for AddressType IPv6, currently only IPv4 address type is supported {"Service": "tailscale/egress-fqdn"}
2025-03-01T23:32:58.977-0500 DEBUG k8s-operator/dnsrecords.go:110 reconcile finished {"Service": "tailscale/egress-fqdn"}
2025-03-01T23:32:58.977-0500 DEBUG k8s-operator/dnsrecords.go:59 starting reconcile {"Service": "tailscale/ts-ingress"}
2025-03-01T23:32:58.978-0500 INFO k8s-operator/dnsrecords.go:174 provisioning DNS record for MagicDNS name: cluster.ingress.ts.net {"Service": "tailscale/ts-ingress"}
2025-03-01T23:32:58.978-0500 DEBUG k8s-operator/dnsrecords.go:110 reconcile finished {"Service": "tailscale/ts-ingress"}
dnsrecords_test.go:131: test case 5
2025-03-01T23:32:58.978-0500 DEBUG k8s-operator/dnsrecords.go:59 starting reconcile {"Service": "tailscale/ts-ingress"}
2025-03-01T23:32:58.978-0500 DEBUG k8s-operator/dnsrecords.go:164 MagicDNS name has changed, remvoving record for cluster.ingress.ts.net {"Service": "tailscale/ts-ingress"}
2025-03-01T23:32:58.978-0500 INFO k8s-operator/dnsrecords.go:174 provisioning DNS record for MagicDNS name: another.ingress.ts.net {"Service": "tailscale/ts-ingress"}
2025-03-01T23:32:58.979-0500 DEBUG k8s-operator/dnsrecords.go:110 reconcile finished {"Service": "tailscale/ts-ingress"}
2025-03-01T23:32:58.979-0500 DEBUG k8s-operator/dnsrecords.go:59 starting reconcile {"Service": "tailscale/ts-ingress"}
2025-03-01T23:32:58.979-0500 DEBUG k8s-operator/dnsrecords.go:110 reconcile finished {"Service": "tailscale/ts-ingress"}
2025-03-01T23:32:58.979-0500 DEBUG k8s-operator/dnsrecords.go:59 starting reconcile {"Service": "tailscale/ts-ingress"}
2025-03-01T23:32:58.979-0500 DEBUG k8s-operator/dnsrecords.go:205 Endpoint with addresses [7.8.9.10] appears not ready to receive traffic &EndpointConditions{Ready:*false,Serving:*true,Terminating:*false,} {"Service": "tailscale/ts-ingress"}
2025-03-01T23:32:58.980-0500 DEBUG k8s-operator/dnsrecords.go:110 reconcile finished {"Service": "tailscale/ts-ingress"}
--- PASS: TestDNSRecordsReconciler (0.00s)
=== RUN TestTailscaleEgressEndpointSlices
=== RUN TestTailscaleEgressEndpointSlices/no_proxy_group_resources
2025-03-01T23:32:58.980-0500 DEBUG k8s-operator/egress-eps.go:40 starting reconcile {"Service": "operator-ns/foo"}
2025-03-01T23:32:58.981-0500 INFO k8s-operator/egress-eps.go:133 Updating EndpointSlice to ensure traffic is routed to ready proxy Pods {"Service": "operator-ns/foo", "tailnet-service-name": "default-test"}
2025-03-01T23:32:58.981-0500 DEBUG k8s-operator/egress-eps.go:138 reconcile finished {"Service": "operator-ns/foo"}
=== RUN TestTailscaleEgressEndpointSlices/no_pods_ready_to_route_traffic
2025-03-01T23:32:58.981-0500 DEBUG k8s-operator/egress-eps.go:40 starting reconcile {"Service": "operator-ns/foo"}
2025-03-01T23:32:58.981-0500 DEBUG k8s-operator/egress-eps.go:159 checking whether proxy is ready to route to egress service {"Service": "operator-ns/foo", "tailnet-service-name": "default-test", "proxy_pod": "foo-0"}
2025-03-01T23:32:58.981-0500 DEBUG k8s-operator/egress-eps.go:188 proxy's state Secret does not contain egress services status, waiting... {"Service": "operator-ns/foo", "tailnet-service-name": "default-test", "proxy_pod": "foo-0"}
2025-03-01T23:32:58.981-0500 DEBUG k8s-operator/egress-eps.go:138 reconcile finished {"Service": "operator-ns/foo"}
=== RUN TestTailscaleEgressEndpointSlices/pods_are_ready_to_route_traffic
2025-03-01T23:32:58.982-0500 DEBUG k8s-operator/egress-eps.go:40 starting reconcile {"Service": "operator-ns/foo"}
2025-03-01T23:32:58.982-0500 DEBUG k8s-operator/egress-eps.go:159 checking whether proxy is ready to route to egress service {"Service": "operator-ns/foo", "tailnet-service-name": "default-test", "proxy_pod": "foo-0"}
2025-03-01T23:32:58.982-0500 DEBUG k8s-operator/egress-eps.go:212 proxy is ready to route traffic to egress service {"Service": "operator-ns/foo", "tailnet-service-name": "default-test", "proxy_pod": "foo-0"}
2025-03-01T23:32:58.982-0500 INFO k8s-operator/egress-eps.go:133 Updating EndpointSlice to ensure traffic is routed to ready proxy Pods {"Service": "operator-ns/foo", "tailnet-service-name": "default-test"}
2025-03-01T23:32:58.982-0500 DEBUG k8s-operator/egress-eps.go:138 reconcile finished {"Service": "operator-ns/foo"}
=== RUN TestTailscaleEgressEndpointSlices/status_does_not_match_pod_ip
2025-03-01T23:32:58.983-0500 DEBUG k8s-operator/egress-eps.go:40 starting reconcile {"Service": "operator-ns/foo"}
2025-03-01T23:32:58.983-0500 DEBUG k8s-operator/egress-eps.go:159 checking whether proxy is ready to route to egress service {"Service": "operator-ns/foo", "tailnet-service-name": "default-test", "proxy_pod": "foo-0"}
2025-03-01T23:32:58.983-0500 INFO k8s-operator/egress-eps.go:196 proxy's egress service status is for Pod IP 10.0.0.2, current proxy's Pod IP 10.0.0.1, waiting for the proxy to reconfigure... {"Service": "operator-ns/foo", "tailnet-service-name": "default-test", "proxy_pod": "foo-0"}
2025-03-01T23:32:58.983-0500 INFO k8s-operator/egress-eps.go:133 Updating EndpointSlice to ensure traffic is routed to ready proxy Pods {"Service": "operator-ns/foo", "tailnet-service-name": "default-test"}
2025-03-01T23:32:58.983-0500 DEBUG k8s-operator/egress-eps.go:138 reconcile finished {"Service": "operator-ns/foo"}
--- PASS: TestTailscaleEgressEndpointSlices (0.00s)
--- PASS: TestTailscaleEgressEndpointSlices/no_proxy_group_resources (0.00s)
--- PASS: TestTailscaleEgressEndpointSlices/no_pods_ready_to_route_traffic (0.00s)
--- PASS: TestTailscaleEgressEndpointSlices/pods_are_ready_to_route_traffic (0.00s)
--- PASS: TestTailscaleEgressEndpointSlices/status_does_not_match_pod_ip (0.00s)
=== RUN TestEgressPodReadiness
=== RUN TestEgressPodReadiness/no_egress_services
2025-03-01T23:32:58.985-0500 DEBUG k8s-operator/egress-pod-readiness.go:75 starting reconcile {"Pod": "operator-ns/pod"}
2025-03-01T23:32:58.985-0500 INFO k8s-operator/egress-pod-readiness.go:196 Pod is ready to route traffic to all egress targets {"Pod": "operator-ns/pod"}
2025-03-01T23:32:58.985-0500 DEBUG k8s-operator/egress-pod-readiness.go:187 reconcile finished {"Pod": "operator-ns/pod"}
=== RUN TestEgressPodReadiness/one_svc_already_routed_to
2025-03-01T23:32:58.986-0500 DEBUG k8s-operator/egress-pod-readiness.go:75 starting reconcile {"Pod": "operator-ns/pod"}
2025-03-01T23:32:58.986-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:58.987-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:58.987-0500 INFO k8s-operator/egress-pod-readiness.go:196 Pod is ready to route traffic to all egress targets {"Pod": "operator-ns/pod"}
2025-03-01T23:32:58.987-0500 DEBUG k8s-operator/egress-pod-readiness.go:187 reconcile finished {"Pod": "operator-ns/pod"}
2025-03-01T23:32:58.994-0500 DEBUG k8s-operator/egress-pod-readiness.go:75 starting reconcile {"Pod": "operator-ns/pod"}
2025-03-01T23:32:58.995-0500 DEBUG k8s-operator/egress-pod-readiness.go:128 Pod is already ready, do nothing {"Pod": "operator-ns/pod"}
2025-03-01T23:32:58.995-0500 DEBUG k8s-operator/egress-pod-readiness.go:129 reconcile finished {"Pod": "operator-ns/pod"}
=== RUN TestEgressPodReadiness/one_svc_many_backends_eventually_routed_to
2025-03-01T23:32:58.995-0500 DEBUG k8s-operator/egress-pod-readiness.go:75 starting reconcile {"Pod": "operator-ns/pod"}
2025-03-01T23:32:58.996-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:58.996-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:58.996-0500 INFO k8s-operator/egress-pod-readiness.go:196 Pod is ready to route traffic to all egress targets {"Pod": "operator-ns/pod"}
2025-03-01T23:32:58.997-0500 DEBUG k8s-operator/egress-pod-readiness.go:187 reconcile finished {"Pod": "operator-ns/pod"}
=== RUN TestEgressPodReadiness/one_svc_one_backend_eventually_healthy
2025-03-01T23:32:59.000-0500 DEBUG k8s-operator/egress-pod-readiness.go:75 starting reconcile {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.000-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.001-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.001-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.001-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.001-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.001-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.001-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.001-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.001-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.001-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.002-0500 INFO k8s-operator/egress-pod-readiness.go:196 Pod is ready to route traffic to all egress targets {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.002-0500 DEBUG k8s-operator/egress-pod-readiness.go:187 reconcile finished {"Pod": "operator-ns/pod"}
=== RUN TestEgressPodReadiness/one_svc_one_backend_never_routable
2025-03-01T23:32:59.002-0500 DEBUG k8s-operator/egress-pod-readiness.go:75 starting reconcile {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.002-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.003-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.003-0500 DEBUG k8s-operator/egress-pod-readiness.go:167 Pod is not yet configured as Service endpoint {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.003-0500 INFO k8s-operator/egress-pod-readiness.go:181 Pod is not yet added as an endpoint for all egress targets, waiting... {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.003-0500 DEBUG k8s-operator/egress-pod-readiness.go:182 reconcile finished {"Pod": "operator-ns/pod"}
=== RUN TestEgressPodReadiness/one_svc_many_backends_already_routable
2025-03-01T23:32:59.003-0500 DEBUG k8s-operator/egress-pod-readiness.go:75 starting reconcile {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.004-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.004-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.004-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.004-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.004-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.004-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.004-0500 INFO k8s-operator/egress-pod-readiness.go:196 Pod is ready to route traffic to all egress targets {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.005-0500 DEBUG k8s-operator/egress-pod-readiness.go:187 reconcile finished {"Pod": "operator-ns/pod"}
=== RUN TestEgressPodReadiness/one_svc_many_backends_eventually_routable_and_healthy
2025-03-01T23:32:59.005-0500 DEBUG k8s-operator/egress-pod-readiness.go:75 starting reconcile {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.006-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.006-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.006-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.006-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.006-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.006-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.006-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.006-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.006-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.007-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.007-0500 INFO k8s-operator/egress-pod-readiness.go:196 Pod is ready to route traffic to all egress targets {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.008-0500 DEBUG k8s-operator/egress-pod-readiness.go:187 reconcile finished {"Pod": "operator-ns/pod"}
=== RUN TestEgressPodReadiness/one_svc_many_backends_never_routable_and_healthy
2025-03-01T23:32:59.009-0500 DEBUG k8s-operator/egress-pod-readiness.go:75 starting reconcile {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.010-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.010-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.010-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.010-0500 DEBUG k8s-operator/egress-pod-readiness.go:167 Pod is not yet configured as Service endpoint {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.010-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.010-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.011-0500 DEBUG k8s-operator/egress-pod-readiness.go:167 Pod is not yet configured as Service endpoint {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.010-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.011-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.012-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.012-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.012-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.012-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.012-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.013-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.013-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.013-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.013-0500 DEBUG k8s-operator/egress-pod-readiness.go:167 Pod is not yet configured as Service endpoint {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.013-0500 INFO k8s-operator/egress-pod-readiness.go:181 Pod is not yet added as an endpoint for all egress targets, waiting... {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.013-0500 DEBUG k8s-operator/egress-pod-readiness.go:182 reconcile finished {"Pod": "operator-ns/pod"}
=== RUN TestEgressPodReadiness/one_svc_many_backends_one_never_routable
2025-03-01T23:32:59.014-0500 DEBUG k8s-operator/egress-pod-readiness.go:75 starting reconcile {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.015-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.015-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.016-0500 DEBUG k8s-operator/egress-pod-readiness.go:167 Pod is not yet configured as Service endpoint {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.016-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.016-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.016-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.016-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.016-0500 INFO k8s-operator/egress-pod-readiness.go:181 Pod is not yet added as an endpoint for all egress targets, waiting... {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.016-0500 DEBUG k8s-operator/egress-pod-readiness.go:182 reconcile finished {"Pod": "operator-ns/pod"}
=== RUN TestEgressPodReadiness/one_svc_many_backends_one_never_healthy
2025-03-01T23:32:59.017-0500 DEBUG k8s-operator/egress-pod-readiness.go:75 starting reconcile {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.018-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.018-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.018-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.018-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.018-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.018-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.019-0500 INFO backoff/backoff.go:72 svc-2: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.019-0500 INFO backoff/backoff.go:72 svc-2: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.019-0500 INFO backoff/backoff.go:72 svc-2: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.019-0500 INFO backoff/backoff.go:72 svc-2: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.019-0500 INFO backoff/backoff.go:72 svc-2: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.020-0500 INFO backoff/backoff.go:72 svc-2: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.020-0500 INFO backoff/backoff.go:72 svc-2: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.020-0500 INFO backoff/backoff.go:72 svc-2: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.020-0500 INFO backoff/backoff.go:72 svc-2: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.020-0500 DEBUG k8s-operator/egress-pod-readiness.go:167 Pod is not yet configured as Service endpoint {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.021-0500 INFO k8s-operator/egress-pod-readiness.go:181 Pod is not yet added as an endpoint for all egress targets, waiting... {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.021-0500 DEBUG k8s-operator/egress-pod-readiness.go:182 reconcile finished {"Pod": "operator-ns/pod"}
=== RUN TestEgressPodReadiness/one_svc_many_backends_different_ports_eventually_healthy_and_routable
2025-03-01T23:32:59.021-0500 DEBUG k8s-operator/egress-pod-readiness.go:75 starting reconcile {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.022-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.022-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.022-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.023-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.023-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.023-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.023-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.023-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.024-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.024-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.025-0500 INFO k8s-operator/egress-pod-readiness.go:196 Pod is ready to route traffic to all egress targets {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.025-0500 DEBUG k8s-operator/egress-pod-readiness.go:187 reconcile finished {"Pod": "operator-ns/pod"}
=== RUN TestEgressPodReadiness/pod_does_not_return_ip_header
2025-03-01T23:32:59.026-0500 DEBUG k8s-operator/egress-pod-readiness.go:75 starting reconcile {"Pod": "operator-ns/foo-bar"}
2025-03-01T23:32:59.026-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/foo-bar", "service_name": "foo-bar"}
2025-03-01T23:32:59.026-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/foo-bar", "service_name": "foo-bar"}
2025-03-01T23:32:59.027-0500 DEBUG k8s-operator/egress-pod-readiness.go:251 Health check does not return Pod's IP header, unable to verify if Pod is currently routable via Service {"Pod": "operator-ns/foo-bar", "service_name": "foo-bar"}
2025-03-01T23:32:59.027-0500 INFO k8s-operator/egress-pod-readiness.go:196 Pod is ready to route traffic to all egress targets {"Pod": "operator-ns/foo-bar"}
2025-03-01T23:32:59.027-0500 DEBUG k8s-operator/egress-pod-readiness.go:187 reconcile finished {"Pod": "operator-ns/foo-bar"}
=== RUN TestEgressPodReadiness/one_svc_one_backend_eventually_healthy_and_routable
2025-03-01T23:32:59.028-0500 DEBUG k8s-operator/egress-pod-readiness.go:75 starting reconcile {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.028-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.029-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.029-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.029-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.029-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.029-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.030-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.030-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.030-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.030-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.031-0500 INFO k8s-operator/egress-pod-readiness.go:196 Pod is ready to route traffic to all egress targets {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.031-0500 DEBUG k8s-operator/egress-pod-readiness.go:187 reconcile finished {"Pod": "operator-ns/pod"}
=== RUN TestEgressPodReadiness/one_svc_one_backend_svc_does_not_have_health_port
2025-03-01T23:32:59.032-0500 DEBUG k8s-operator/egress-pod-readiness.go:75 starting reconcile {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.032-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.032-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.032-0500 DEBUG k8s-operator/egress-pod-readiness.go:141 ClusterIP Service does not expose a health check endpoint, unable to verify if routing is set up {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.032-0500 INFO k8s-operator/egress-pod-readiness.go:196 Pod is ready to route traffic to all egress targets {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.033-0500 DEBUG k8s-operator/egress-pod-readiness.go:187 reconcile finished {"Pod": "operator-ns/pod"}
=== RUN TestEgressPodReadiness/error_setting_up_healthcheck
2025-03-01T23:32:59.034-0500 DEBUG k8s-operator/egress-pod-readiness.go:75 starting reconcile {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.034-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.034-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.035-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.035-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.035-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.035-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.035-0500 DEBUG k8s-operator/egress-pod-readiness.go:178 reconcile finished {"Pod": "operator-ns/pod"}
=== RUN TestEgressPodReadiness/pod_does_not_have_an_ip_address
2025-03-01T23:32:59.036-0500 DEBUG k8s-operator/egress-pod-readiness.go:75 starting reconcile {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.036-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.036-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.036-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.037-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.037-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.037-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.037-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.037-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.037-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.037-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.038-0500 INFO backoff/backoff.go:72 svc-3: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.038-0500 DEBUG k8s-operator/egress-pod-readiness.go:167 Pod is not yet configured as Service endpoint {"Pod": "operator-ns/pod", "service_name": "svc-3"}
2025-03-01T23:32:59.038-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.038-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.038-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.038-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.038-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.039-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.039-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.039-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.039-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.039-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.039-0500 INFO backoff/backoff.go:72 svc: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.039-0500 DEBUG k8s-operator/egress-pod-readiness.go:167 Pod is not yet configured as Service endpoint {"Pod": "operator-ns/pod", "service_name": "svc"}
2025-03-01T23:32:59.039-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.040-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.040-0500 INFO backoff/backoff.go:72 svc-2: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.040-0500 INFO backoff/backoff.go:72 svc-2: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.040-0500 INFO backoff/backoff.go:72 svc-2: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.040-0500 INFO backoff/backoff.go:72 svc-2: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.040-0500 INFO backoff/backoff.go:72 svc-2: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.040-0500 INFO backoff/backoff.go:72 svc-2: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.041-0500 INFO backoff/backoff.go:72 svc-2: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.041-0500 INFO backoff/backoff.go:72 svc-2: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.041-0500 INFO backoff/backoff.go:72 svc-2: [v1] backoff: 0 msec {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.041-0500 DEBUG k8s-operator/egress-pod-readiness.go:167 Pod is not yet configured as Service endpoint {"Pod": "operator-ns/pod", "service_name": "svc-2"}
2025-03-01T23:32:59.041-0500 INFO k8s-operator/egress-pod-readiness.go:181 Pod is not yet added as an endpoint for all egress targets, waiting... {"Pod": "operator-ns/pod"}
2025-03-01T23:32:59.041-0500 DEBUG k8s-operator/egress-pod-readiness.go:182 reconcile finished {"Pod": "operator-ns/pod"}
--- PASS: TestEgressPodReadiness (0.06s)
--- PASS: TestEgressPodReadiness/no_egress_services (0.00s)
--- PASS: TestEgressPodReadiness/one_svc_already_routed_to (0.01s)
--- PASS: TestEgressPodReadiness/one_svc_many_backends_eventually_routed_to (0.00s)
--- PASS: TestEgressPodReadiness/one_svc_one_backend_eventually_healthy (0.00s)
--- PASS: TestEgressPodReadiness/one_svc_one_backend_never_routable (0.00s)
--- PASS: TestEgressPodReadiness/one_svc_many_backends_already_routable (0.00s)
--- PASS: TestEgressPodReadiness/one_svc_many_backends_eventually_routable_and_healthy (0.00s)
--- PASS: TestEgressPodReadiness/one_svc_many_backends_never_routable_and_healthy (0.00s)
--- PASS: TestEgressPodReadiness/one_svc_many_backends_one_never_routable (0.00s)
--- PASS: TestEgressPodReadiness/one_svc_many_backends_one_never_healthy (0.00s)
--- PASS: TestEgressPodReadiness/one_svc_many_backends_different_ports_eventually_healthy_and_routable (0.00s)
--- PASS: TestEgressPodReadiness/pod_does_not_return_ip_header (0.00s)
--- PASS: TestEgressPodReadiness/one_svc_one_backend_eventually_healthy_and_routable (0.00s)
--- PASS: TestEgressPodReadiness/one_svc_one_backend_svc_does_not_have_health_port (0.00s)
--- PASS: TestEgressPodReadiness/error_setting_up_healthcheck (0.00s)
--- PASS: TestEgressPodReadiness/pod_does_not_have_an_ip_address (0.01s)
=== RUN TestEgressServiceReadiness
=== RUN TestEgressServiceReadiness/endpointslice_does_not_exist
2025-03-01T23:32:59.042-0500 DEBUG k8s-operator/egress-services-readiness.go:51 starting reconcile {"Service": "dev/my-app"}
2025-03-01T23:32:59.043-0500 INFO k8s-operator/egress-services-readiness.go:82 EndpointSlice for Service does not yet exist, waiting... {"Service": "dev/my-app"}
2025-03-01T23:32:59.043-0500 DEBUG k8s-operator/egress-services-readiness.go:85 reconcile finished {"Service": "dev/my-app"}
=== RUN TestEgressServiceReadiness/proxy_group_does_not_exist
2025-03-01T23:32:59.044-0500 DEBUG k8s-operator/egress-services-readiness.go:51 starting reconcile {"Service": "dev/my-app"}
2025-03-01T23:32:59.045-0500 INFO k8s-operator/egress-services-readiness.go:94 ProxyGroup for Service does not exist, waiting... {"Service": "dev/my-app"}
2025-03-01T23:32:59.045-0500 DEBUG k8s-operator/egress-services-readiness.go:97 reconcile finished {"Service": "dev/my-app"}
=== RUN TestEgressServiceReadiness/proxy_group_not_ready
2025-03-01T23:32:59.046-0500 DEBUG k8s-operator/egress-services-readiness.go:51 starting reconcile {"Service": "dev/my-app"}
2025-03-01T23:32:59.058-0500 INFO k8s-operator/egress-services-readiness.go:106 ProxyGroup for Service is not ready, waiting... {"Service": "dev/my-app"}
2025-03-01T23:32:59.058-0500 DEBUG k8s-operator/egress-services-readiness.go:109 reconcile finished {"Service": "dev/my-app"}
=== RUN TestEgressServiceReadiness/no_ready_replicas
2025-03-01T23:32:59.060-0500 DEBUG k8s-operator/egress-services-readiness.go:51 starting reconcile {"Service": "dev/my-app"}
2025-03-01T23:32:59.068-0500 DEBUG k8s-operator/egress-services-readiness.go:135 looking at Pod with IPs [{10.0.0.0}] {"Service": "dev/my-app"}
2025-03-01T23:32:59.069-0500 DEBUG k8s-operator/egress-services-readiness.go:135 looking at Pod with IPs [{10.0.0.1}] {"Service": "dev/my-app"}
2025-03-01T23:32:59.069-0500 DEBUG k8s-operator/egress-services-readiness.go:153 reconcile finished {"Service": "dev/my-app"}
=== RUN TestEgressServiceReadiness/one_ready_replica
2025-03-01T23:32:59.070-0500 INFO k8s-operator/conditions.go:122 Status change for condition TailscaleEgressSvcReady from False to True
2025-03-01T23:32:59.070-0500 DEBUG k8s-operator/egress-services-readiness.go:51 starting reconcile {"Service": "dev/my-app"}
2025-03-01T23:32:59.073-0500 DEBUG k8s-operator/egress-services-readiness.go:135 looking at Pod with IPs [{10.0.0.0}] {"Service": "dev/my-app"}
2025-03-01T23:32:59.073-0500 DEBUG k8s-operator/egress-services-readiness.go:138 looking at endpoint with addresses [10.0.0.0] {"Service": "dev/my-app"}
2025-03-01T23:32:59.073-0500 DEBUG k8s-operator/egress-services-readiness.go:140 endpoint is ready for Pod {"Service": "dev/my-app"}
2025-03-01T23:32:59.074-0500 DEBUG k8s-operator/egress-services-readiness.go:135 looking at Pod with IPs [{10.0.0.1}] {"Service": "dev/my-app"}
2025-03-01T23:32:59.074-0500 DEBUG k8s-operator/egress-services-readiness.go:138 looking at endpoint with addresses [10.0.0.0] {"Service": "dev/my-app"}
2025-03-01T23:32:59.074-0500 INFO k8s-operator/conditions.go:122 Status change for condition TailscaleEgressSvcReady from False to True {"Service": "dev/my-app"}
2025-03-01T23:32:59.074-0500 DEBUG k8s-operator/egress-services-readiness.go:161 reconcile finished {"Service": "dev/my-app"}
=== RUN TestEgressServiceReadiness/all_replicas_ready
2025-03-01T23:32:59.074-0500 DEBUG k8s-operator/egress-services-readiness.go:51 starting reconcile {"Service": "dev/my-app"}
2025-03-01T23:32:59.075-0500 DEBUG k8s-operator/egress-services-readiness.go:135 looking at Pod with IPs [{10.0.0.0}] {"Service": "dev/my-app"}
2025-03-01T23:32:59.075-0500 DEBUG k8s-operator/egress-services-readiness.go:138 looking at endpoint with addresses [10.0.0.0] {"Service": "dev/my-app"}
2025-03-01T23:32:59.075-0500 DEBUG k8s-operator/egress-services-readiness.go:140 endpoint is ready for Pod {"Service": "dev/my-app"}
2025-03-01T23:32:59.075-0500 DEBUG k8s-operator/egress-services-readiness.go:135 looking at Pod with IPs [{10.0.0.1}] {"Service": "dev/my-app"}
2025-03-01T23:32:59.075-0500 DEBUG k8s-operator/egress-services-readiness.go:138 looking at endpoint with addresses [10.0.0.0] {"Service": "dev/my-app"}
2025-03-01T23:32:59.075-0500 DEBUG k8s-operator/egress-services-readiness.go:138 looking at endpoint with addresses [10.0.0.0] {"Service": "dev/my-app"}
2025-03-01T23:32:59.075-0500 DEBUG k8s-operator/egress-services-readiness.go:138 looking at endpoint with addresses [10.0.0.1] {"Service": "dev/my-app"}
2025-03-01T23:32:59.075-0500 DEBUG k8s-operator/egress-services-readiness.go:140 endpoint is ready for Pod {"Service": "dev/my-app"}
2025-03-01T23:32:59.075-0500 DEBUG k8s-operator/egress-services-readiness.go:161 reconcile finished {"Service": "dev/my-app"}
--- PASS: TestEgressServiceReadiness (0.03s)
--- PASS: TestEgressServiceReadiness/endpointslice_does_not_exist (0.00s)
--- PASS: TestEgressServiceReadiness/proxy_group_does_not_exist (0.00s)
--- PASS: TestEgressServiceReadiness/proxy_group_not_ready (0.01s)
--- PASS: TestEgressServiceReadiness/no_ready_replicas (0.01s)
--- PASS: TestEgressServiceReadiness/one_ready_replica (0.00s)
--- PASS: TestEgressServiceReadiness/all_replicas_ready (0.00s)
=== RUN TestTailscaleEgressServices
=== RUN TestTailscaleEgressServices/service_one_unnamed_port
2025-03-01T23:32:59.076-0500 DEBUG k8s-operator/egress-services.go:539 egress service is valid {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.076-0500 INFO k8s-operator/conditions.go:122 Status change for condition TailscaleEgressSvcValid from Unknown to True {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.076-0500 INFO k8s-operator/egress-services.go:221 updating configuration... {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.077-0500 DEBUG k8s-operator/egress-services.go:280 mapping tailnet target port 80 to container port 10612 {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.077-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.077-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.077-0500 DEBUG k8s-operator/egress-services.go:353 updating egress services ConfigMap foo-egress-config {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.077-0500 INFO k8s-operator/egress-services.go:364 egress service configuration has been updated {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.077-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.077-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.077-0500 INFO k8s-operator/egress-services.go:208 Configuring ExternalName Service to point to ClusterIP Service ts-test-qf2f6.operator-ns.svc.cluster.local {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.077-0500 INFO k8s-operator/egress-services.go:169 reconcile finished {"Service": "default/test"}
2025-03-01T23:32:59.078-0500 INFO k8s-operator/conditions.go:122 Status change for condition TailscaleEgressSvcValid from True to Unknown {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.078-0500 DEBUG k8s-operator/egress-services.go:539 egress service is valid {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.078-0500 INFO k8s-operator/conditions.go:122 Status change for condition TailscaleEgressSvcValid from Unknown to True {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.078-0500 INFO k8s-operator/egress-services.go:221 updating configuration... {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.078-0500 DEBUG k8s-operator/egress-services.go:249 portmapping TCP:9002 -> TCP:9002 is no longer required, removing {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.079-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.079-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.079-0500 INFO k8s-operator/egress-services.go:364 egress service configuration has been updated {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.079-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.079-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.079-0500 INFO k8s-operator/egress-services.go:169 reconcile finished {"Service": "default/test"}
2025-03-01T23:32:59.080-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain..
2025-03-01T23:32:59.080-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'.
=== RUN TestTailscaleEgressServices/service_add_two_named_ports
2025-03-01T23:32:59.080-0500 INFO k8s-operator/conditions.go:122 Status change for condition TailscaleEgressSvcValid from True to Unknown {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.081-0500 DEBUG k8s-operator/egress-services.go:539 egress service is valid {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.081-0500 INFO k8s-operator/conditions.go:122 Status change for condition TailscaleEgressSvcValid from Unknown to True {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.081-0500 INFO k8s-operator/egress-services.go:221 updating configuration... {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.081-0500 DEBUG k8s-operator/egress-services.go:249 portmapping TCP:9002 -> TCP:9002 is no longer required, removing {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.081-0500 DEBUG k8s-operator/egress-services.go:280 mapping tailnet target port 443 to container port 10852 {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.082-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.082-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.082-0500 DEBUG k8s-operator/egress-services.go:353 updating egress services ConfigMap foo-egress-config {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.082-0500 INFO k8s-operator/egress-services.go:364 egress service configuration has been updated {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.082-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.082-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.082-0500 INFO k8s-operator/egress-services.go:169 reconcile finished {"Service": "default/test"}
2025-03-01T23:32:59.083-0500 INFO k8s-operator/conditions.go:122 Status change for condition TailscaleEgressSvcValid from True to Unknown {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.083-0500 DEBUG k8s-operator/egress-services.go:539 egress service is valid {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.083-0500 INFO k8s-operator/conditions.go:122 Status change for condition TailscaleEgressSvcValid from Unknown to True {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.083-0500 INFO k8s-operator/egress-services.go:221 updating configuration... {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.083-0500 DEBUG k8s-operator/egress-services.go:249 portmapping TCP:9002 -> TCP:9002 is no longer required, removing {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.083-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.083-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.083-0500 INFO k8s-operator/egress-services.go:364 egress service configuration has been updated {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.083-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.083-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.084-0500 INFO k8s-operator/egress-services.go:169 reconcile finished {"Service": "default/test"}
2025-03-01T23:32:59.084-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain..
2025-03-01T23:32:59.084-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'.
=== RUN TestTailscaleEgressServices/service_add_udp_port
2025-03-01T23:32:59.085-0500 INFO k8s-operator/conditions.go:122 Status change for condition TailscaleEgressSvcValid from True to Unknown {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.085-0500 DEBUG k8s-operator/egress-services.go:539 egress service is valid {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.085-0500 INFO k8s-operator/conditions.go:122 Status change for condition TailscaleEgressSvcValid from Unknown to True {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.086-0500 INFO k8s-operator/egress-services.go:221 updating configuration... {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.086-0500 DEBUG k8s-operator/egress-services.go:249 portmapping TCP:9002 -> TCP:9002 is no longer required, removing {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.086-0500 DEBUG k8s-operator/egress-services.go:280 mapping tailnet target port 53 to container port 10732 {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.086-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.086-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.086-0500 DEBUG k8s-operator/egress-services.go:353 updating egress services ConfigMap foo-egress-config {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.086-0500 INFO k8s-operator/egress-services.go:364 egress service configuration has been updated {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.087-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.087-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.087-0500 INFO k8s-operator/egress-services.go:169 reconcile finished {"Service": "default/test"}
2025-03-01T23:32:59.087-0500 INFO k8s-operator/conditions.go:122 Status change for condition TailscaleEgressSvcValid from True to Unknown {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.087-0500 DEBUG k8s-operator/egress-services.go:539 egress service is valid {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.087-0500 INFO k8s-operator/conditions.go:122 Status change for condition TailscaleEgressSvcValid from Unknown to True {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.087-0500 INFO k8s-operator/egress-services.go:221 updating configuration... {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.088-0500 DEBUG k8s-operator/egress-services.go:249 portmapping TCP:9002 -> TCP:9002 is no longer required, removing {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.088-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.088-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.088-0500 INFO k8s-operator/egress-services.go:364 egress service configuration has been updated {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.088-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.088-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.088-0500 INFO k8s-operator/egress-services.go:169 reconcile finished {"Service": "default/test"}
2025-03-01T23:32:59.089-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain..
2025-03-01T23:32:59.089-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'.
=== RUN TestTailscaleEgressServices/service_change_protocol
2025-03-01T23:32:59.090-0500 INFO k8s-operator/conditions.go:122 Status change for condition TailscaleEgressSvcValid from True to Unknown {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.090-0500 DEBUG k8s-operator/egress-services.go:539 egress service is valid {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.090-0500 INFO k8s-operator/conditions.go:122 Status change for condition TailscaleEgressSvcValid from Unknown to True {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.090-0500 INFO k8s-operator/egress-services.go:221 updating configuration... {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.090-0500 DEBUG k8s-operator/egress-services.go:249 portmapping TCP:9002 -> TCP:9002 is no longer required, removing {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.090-0500 DEBUG k8s-operator/egress-services.go:249 portmapping UDP:10732 -> UDP:53 is no longer required, removing {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.090-0500 DEBUG k8s-operator/egress-services.go:280 mapping tailnet target port 53 to container port 10816 {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.091-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.091-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.091-0500 DEBUG k8s-operator/egress-services.go:353 updating egress services ConfigMap foo-egress-config {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.091-0500 INFO k8s-operator/egress-services.go:364 egress service configuration has been updated {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.091-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.091-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.091-0500 INFO k8s-operator/egress-services.go:169 reconcile finished {"Service": "default/test"}
2025-03-01T23:32:59.091-0500 INFO k8s-operator/conditions.go:122 Status change for condition TailscaleEgressSvcValid from True to Unknown {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.091-0500 DEBUG k8s-operator/egress-services.go:539 egress service is valid {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.092-0500 INFO k8s-operator/conditions.go:122 Status change for condition TailscaleEgressSvcValid from Unknown to True {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.092-0500 INFO k8s-operator/egress-services.go:221 updating configuration... {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.092-0500 DEBUG k8s-operator/egress-services.go:249 portmapping TCP:9002 -> TCP:9002 is no longer required, removing {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.092-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.092-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.092-0500 INFO k8s-operator/egress-services.go:364 egress service configuration has been updated {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.092-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.092-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.092-0500 INFO k8s-operator/egress-services.go:169 reconcile finished {"Service": "default/test"}
2025-03-01T23:32:59.093-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain..
2025-03-01T23:32:59.093-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'.
=== RUN TestTailscaleEgressServices/delete_external_name_service
2025-03-01T23:32:59.094-0500 INFO k8s-operator/egress-services.go:122 Service is being deleted, ensuring resource cleanup {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.094-0500 INFO k8s-operator/egress-services.go:369 ensuring that resources created for egress service are deleted {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.094-0500 DEBUG k8s-operator/egress-services.go:475 ensuring that egress service configuration is removed from proxy config {"Service": "default/test", "tailnet-service": "default-test", "ConfigMap": "operator-ns/foo-egress-config"}
2025-03-01T23:32:59.094-0500 INFO k8s-operator/egress-services.go:497 before deleting config egressservices.Configs{"default-test":egressservices.Config{HealthCheckEndpoint:"http://ts-test-qf2f6.operator-ns.svc.cluster.local:9002/healthz", TailnetTarget:egressservices.TailnetTarget{IP:"", FQDN:"foo.bar.ts.net."}, Ports:egressservices.PortMaps{egressservices.PortMap{Protocol:"TCP", MatchPort:0x2974, TargetPort:0x50}:struct {}{}, egressservices.PortMap{Protocol:"TCP", MatchPort:0x2a40, TargetPort:0x35}:struct {}{}, egressservices.PortMap{Protocol:"TCP", MatchPort:0x2a64, TargetPort:0x1bb}:struct {}{}}}} {"Service": "default/test", "tailnet-service": "default-test", "ConfigMap": "operator-ns/foo-egress-config"}
2025-03-01T23:32:59.094-0500 INFO k8s-operator/egress-services.go:499 after deleting config egressservices.Configs{} {"Service": "default/test", "tailnet-service": "default-test", "ConfigMap": "operator-ns/foo-egress-config"}
2025-03-01T23:32:59.094-0500 DEBUG k8s-operator/egress-services.go:391 Removing Tailscale finalizer from Service {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.095-0500 INFO k8s-operator/egress-services.go:401 successfully cleaned up resources for egress Service {"Service": "default/test", "tailnet-service": "default-test"}
2025-03-01T23:32:59.095-0500 INFO k8s-operator/egress-services.go:123 reconcile finished {"Service": "default/test"}
--- PASS: TestTailscaleEgressServices (0.02s)
--- PASS: TestTailscaleEgressServices/service_one_unnamed_port (0.00s)
--- PASS: TestTailscaleEgressServices/service_add_two_named_ports (0.00s)
--- PASS: TestTailscaleEgressServices/service_add_udp_port (0.00s)
--- PASS: TestTailscaleEgressServices/service_change_protocol (0.00s)
--- PASS: TestTailscaleEgressServices/delete_external_name_service (0.00s)
=== RUN TestIngressPGReconciler
2025-03-01T23:32:59.095-0500 DEBUG k8s-operator/ingress-for-pg.go:79 starting reconcile {"Ingress": "default/test-ingress"}
2025-03-01T23:32:59.095-0500 INFO k8s-operator/ingress-for-pg.go:153 exposing Ingress over tailscale {"Ingress": "default/test-ingress", "hostname": "my-svc", "proxy-group": {"metadata":{"name":"test-pg","resourceVersion":"1000","generation":1,"creationTimestamp":null},"spec":{"type":"ingress"},"status":{"conditions":[{"type":"ProxyGroupReady","status":"True","observedGeneration":1,"lastTransitionTime":null,"reason":"","message":""}]}}}
2025-03-01T23:32:59.096-0500 INFO k8s-operator/ingress-for-pg.go:231 Updating serve config {"Ingress": "default/test-ingress", "hostname": "my-svc", "proxy-group": {"metadata":{"name":"test-pg","resourceVersion":"1000","generation":1,"creationTimestamp":null},"spec":{"type":"ingress"},"status":{"conditions":[{"type":"ProxyGroupReady","status":"True","observedGeneration":1,"lastTransitionTime":null,"reason":"","message":""}]}}}
2025-03-01T23:32:59.096-0500 INFO k8s-operator/ingress-for-pg.go:259 Ensuring VIPService "my-svc" exists and is up to date {"Ingress": "default/test-ingress", "hostname": "my-svc", "proxy-group": {"metadata":{"name":"test-pg","resourceVersion":"1000","generation":1,"creationTimestamp":null},"spec":{"type":"ingress"},"status":{"conditions":[{"type":"ProxyGroupReady","status":"True","observedGeneration":1,"lastTransitionTime":null,"reason":"","message":""}]}}}
2025-03-01T23:32:59.096-0500 DEBUG k8s-operator/ingress-for-pg.go:104 reconcile finished {"Ingress": "default/test-ingress"}
2025-03-01T23:32:59.096-0500 DEBUG k8s-operator/ingress-for-pg.go:79 starting reconcile {"Ingress": "default/test-ingress"}
2025-03-01T23:32:59.097-0500 INFO k8s-operator/ingress-for-pg.go:259 Ensuring VIPService "my-svc" exists and is up to date {"Ingress": "default/test-ingress", "hostname": "my-svc", "proxy-group": {"metadata":{"name":"test-pg","resourceVersion":"1000","generation":1,"creationTimestamp":null},"spec":{"type":"ingress"},"status":{"conditions":[{"type":"ProxyGroupReady","status":"True","observedGeneration":1,"lastTransitionTime":null,"reason":"","message":""}]}}}
2025-03-01T23:32:59.097-0500 DEBUG k8s-operator/ingress-for-pg.go:104 reconcile finished {"Ingress": "default/test-ingress"}
2025-03-01T23:32:59.097-0500 DEBUG k8s-operator/ingress-for-pg.go:79 starting reconcile {"Ingress": "default/test-ingress"}
2025-03-01T23:32:59.097-0500 DEBUG k8s-operator/ingress-for-pg.go:361 Ensuring any resources for Ingress are cleaned up {"Ingress": "default/test-ingress", "hostname": "my-svc"}
2025-03-01T23:32:59.097-0500 INFO k8s-operator/ingress-for-pg.go:386 Ensuring that VIPService "my-svc" configuration is cleaned up {"Ingress": "default/test-ingress", "hostname": "my-svc"}
2025-03-01T23:32:59.097-0500 INFO k8s-operator/ingress-for-pg.go:564 Deleting VIPService "my-svc" {"Ingress": "default/test-ingress", "hostname": "my-svc"}
2025-03-01T23:32:59.097-0500 INFO k8s-operator/ingress-for-pg.go:394 Removing VIPService "my-svc" from serve config for ProxyGroup "test-pg" {"Ingress": "default/test-ingress", "hostname": "my-svc"}
2025-03-01T23:32:59.097-0500 DEBUG k8s-operator/ingress-for-pg.go:424 ensure %q finalizer is removedtailscale.com/ingress-pg-finalizer {"Ingress": "default/test-ingress", "hostname": "my-svc"}
2025-03-01T23:32:59.098-0500 DEBUG k8s-operator/ingress-for-pg.go:98 reconcile finished {"Ingress": "default/test-ingress"}
--- PASS: TestIngressPGReconciler (0.00s)
=== RUN TestValidateIngress
=== RUN TestValidateIngress/valid_ingress_with_hostname
=== RUN TestValidateIngress/valid_ingress_with_default_hostname
=== RUN TestValidateIngress/invalid_tags
=== RUN TestValidateIngress/multiple_TLS_entries
=== RUN TestValidateIngress/multiple_hosts_in_TLS_entry
=== RUN TestValidateIngress/wrong_proxy_group_type
=== RUN TestValidateIngress/proxy_group_not_ready
--- PASS: TestValidateIngress (0.00s)
--- PASS: TestValidateIngress/valid_ingress_with_hostname (0.00s)
--- PASS: TestValidateIngress/valid_ingress_with_default_hostname (0.00s)
--- PASS: TestValidateIngress/invalid_tags (0.00s)
--- PASS: TestValidateIngress/multiple_TLS_entries (0.00s)
--- PASS: TestValidateIngress/multiple_hosts_in_TLS_entry (0.00s)
--- PASS: TestValidateIngress/wrong_proxy_group_type (0.00s)
--- PASS: TestValidateIngress/proxy_group_not_ready (0.00s)
=== RUN TestTailscaleIngress
2025-03-01T23:32:59.099-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.099-0500 INFO k8s-operator/ingress.go:140 exposing ingress over tailscale {"Ingress": "default/test"}
2025-03-01T23:32:59.099-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Ingress": "default/test"}
2025-03-01T23:32:59.099-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"Ingress": "default/test"}
2025-03-01T23:32:59.099-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Ingress": "default/test"}
2025-03-01T23:32:59.100-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-hn64k {"Ingress": "default/test"}
2025-03-01T23:32:59.100-0500 DEBUG k8s-operator/ingress.go:235 no Ingress DNS name known yet, waiting for proxy Pod initialize and start serving Ingress {"Ingress": "default/test"}
2025-03-01T23:32:59.101-0500 DEBUG k8s-operator/ingress.go:88 reconcile finished {"Ingress": "default/test"}
2025-03-01T23:32:59.102-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.112-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Ingress": "default/test"}
2025-03-01T23:32:59.113-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-hn64k-0 already exists {"Ingress": "default/test"}
2025-03-01T23:32:59.113-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Ingress": "default/test"}
2025-03-01T23:32:59.114-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-hn64k {"Ingress": "default/test"}
2025-03-01T23:32:59.115-0500 DEBUG k8s-operator/ingress.go:244 setting Ingress hostname to "foo.tailnetxyz.ts.net" {"Ingress": "default/test"}
2025-03-01T23:32:59.115-0500 DEBUG k8s-operator/ingress.go:88 reconcile finished {"Ingress": "default/test"}
2025-03-01T23:32:59.115-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.115-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Ingress": "default/test"}
2025-03-01T23:32:59.116-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-hn64k-0 already exists {"Ingress": "default/test"}
2025-03-01T23:32:59.116-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Ingress": "default/test"}
2025-03-01T23:32:59.117-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-hn64k {"Ingress": "default/test"}
2025-03-01T23:32:59.122-0500 DEBUG k8s-operator/ingress.go:244 setting Ingress hostname to "foo.tailnetxyz.ts.net" {"Ingress": "default/test"}
2025-03-01T23:32:59.123-0500 DEBUG k8s-operator/ingress.go:88 reconcile finished {"Ingress": "default/test"}
2025-03-01T23:32:59.128-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.128-0500 DEBUG k8s-operator/ingress.go:76 ingress is being deleted or should not be exposed, cleaning up {"Ingress": "default/test"}
2025-03-01T23:32:59.130-0500 DEBUG k8s-operator/sts.go:249 started deletion of statefulset operator-ns/ts-test-hn64k {"Ingress": "default/test"}
2025-03-01T23:32:59.130-0500 DEBUG k8s-operator/ingress.go:105 cleanup not done yet, waiting for next reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.130-0500 DEBUG k8s-operator/ingress.go:77 reconcile finished {"Ingress": "default/test"}
2025-03-01T23:32:59.130-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.130-0500 DEBUG k8s-operator/ingress.go:76 ingress is being deleted or should not be exposed, cleaning up {"Ingress": "default/test"}
2025-03-01T23:32:59.130-0500 DEBUG k8s-operator/sts.go:258 deleting device 1234 from control {"Ingress": "default/test"}
2025-03-01T23:32:59.131-0500 DEBUG k8s-operator/sts.go:267 device 1234 deleted from control {"Ingress": "default/test"}
2025-03-01T23:32:59.131-0500 INFO k8s-operator/ingress.go:118 unexposed ingress from tailnet {"Ingress": "default/test"}
2025-03-01T23:32:59.131-0500 DEBUG k8s-operator/ingress.go:77 reconcile finished {"Ingress": "default/test"}
--- PASS: TestTailscaleIngress (0.03s)
=== RUN TestTailscaleIngressHostname
2025-03-01T23:32:59.131-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.131-0500 INFO k8s-operator/ingress.go:140 exposing ingress over tailscale {"Ingress": "default/test"}
2025-03-01T23:32:59.132-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Ingress": "default/test"}
2025-03-01T23:32:59.132-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"Ingress": "default/test"}
2025-03-01T23:32:59.132-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Ingress": "default/test"}
2025-03-01T23:32:59.133-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-25gtl {"Ingress": "default/test"}
2025-03-01T23:32:59.133-0500 DEBUG k8s-operator/ingress.go:235 no Ingress DNS name known yet, waiting for proxy Pod initialize and start serving Ingress {"Ingress": "default/test"}
2025-03-01T23:32:59.133-0500 DEBUG k8s-operator/ingress.go:88 reconcile finished {"Ingress": "default/test"}
2025-03-01T23:32:59.135-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.136-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Ingress": "default/test"}
2025-03-01T23:32:59.136-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-25gtl-0 already exists {"Ingress": "default/test"}
2025-03-01T23:32:59.136-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Ingress": "default/test"}
2025-03-01T23:32:59.138-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-25gtl {"Ingress": "default/test"}
2025-03-01T23:32:59.139-0500 DEBUG k8s-operator/ingress.go:235 no Ingress DNS name known yet, waiting for proxy Pod initialize and start serving Ingress {"Ingress": "default/test"}
2025-03-01T23:32:59.139-0500 DEBUG k8s-operator/ingress.go:88 reconcile finished {"Ingress": "default/test"}
2025-03-01T23:32:59.140-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.140-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Ingress": "default/test"}
2025-03-01T23:32:59.147-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-25gtl-0 already exists {"Ingress": "default/test"}
2025-03-01T23:32:59.147-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Ingress": "default/test"}
2025-03-01T23:32:59.149-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-25gtl {"Ingress": "default/test"}
2025-03-01T23:32:59.149-0500 DEBUG k8s-operator/ingress.go:244 setting Ingress hostname to "foo.tailnetxyz.ts.net" {"Ingress": "default/test"}
2025-03-01T23:32:59.150-0500 DEBUG k8s-operator/ingress.go:88 reconcile finished {"Ingress": "default/test"}
2025-03-01T23:32:59.150-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.150-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Ingress": "default/test"}
2025-03-01T23:32:59.150-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-25gtl-0 already exists {"Ingress": "default/test"}
2025-03-01T23:32:59.151-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Ingress": "default/test"}
2025-03-01T23:32:59.152-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-25gtl {"Ingress": "default/test"}
2025-03-01T23:32:59.152-0500 DEBUG k8s-operator/ingress.go:235 no Ingress DNS name known yet, waiting for proxy Pod initialize and start serving Ingress {"Ingress": "default/test"}
2025-03-01T23:32:59.158-0500 DEBUG k8s-operator/ingress.go:88 reconcile finished {"Ingress": "default/test"}
2025-03-01T23:32:59.158-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.159-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Ingress": "default/test"}
2025-03-01T23:32:59.159-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-25gtl-0 already exists {"Ingress": "default/test"}
2025-03-01T23:32:59.159-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Ingress": "default/test"}
2025-03-01T23:32:59.160-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-25gtl {"Ingress": "default/test"}
2025-03-01T23:32:59.161-0500 DEBUG k8s-operator/ingress.go:244 setting Ingress hostname to "foo.tailnetxyz.ts.net" {"Ingress": "default/test"}
2025-03-01T23:32:59.161-0500 DEBUG k8s-operator/ingress.go:88 reconcile finished {"Ingress": "default/test"}
--- PASS: TestTailscaleIngressHostname (0.03s)
=== RUN TestTailscaleIngressWithProxyClass
2025-03-01T23:32:59.162-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.162-0500 INFO k8s-operator/ingress.go:140 exposing ingress over tailscale {"Ingress": "default/test"}
2025-03-01T23:32:59.162-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Ingress": "default/test"}
2025-03-01T23:32:59.162-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"Ingress": "default/test"}
2025-03-01T23:32:59.162-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Ingress": "default/test"}
2025-03-01T23:32:59.163-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-vgjc4 {"Ingress": "default/test"}
2025-03-01T23:32:59.163-0500 DEBUG k8s-operator/ingress.go:235 no Ingress DNS name known yet, waiting for proxy Pod initialize and start serving Ingress {"Ingress": "default/test"}
2025-03-01T23:32:59.163-0500 DEBUG k8s-operator/ingress.go:88 reconcile finished {"Ingress": "default/test"}
2025-03-01T23:32:59.164-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.164-0500 INFO k8s-operator/ingress.go:152 ProxyClass custom-metadata specified for the Ingress, but is not (yet) Ready, waiting.. {"Ingress": "default/test"}
2025-03-01T23:32:59.164-0500 DEBUG k8s-operator/ingress.go:88 reconcile finished {"Ingress": "default/test"}
2025-03-01T23:32:59.165-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.165-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Ingress": "default/test"}
2025-03-01T23:32:59.166-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-vgjc4-0 already exists {"Ingress": "default/test"}
2025-03-01T23:32:59.166-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Ingress": "default/test"}
2025-03-01T23:32:59.167-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-vgjc4 {"Ingress": "default/test"}
2025-03-01T23:32:59.167-0500 DEBUG k8s-operator/sts.go:684 configuring proxy resources with ProxyClass custom-metadata {"Ingress": "default/test"}
2025-03-01T23:32:59.168-0500 DEBUG k8s-operator/ingress.go:235 no Ingress DNS name known yet, waiting for proxy Pod initialize and start serving Ingress {"Ingress": "default/test"}
2025-03-01T23:32:59.168-0500 DEBUG k8s-operator/ingress.go:88 reconcile finished {"Ingress": "default/test"}
ingress_test.go:411: applying configuration from ProxyClass custom-metadata
2025-03-01T23:32:59.169-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.169-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Ingress": "default/test"}
2025-03-01T23:32:59.169-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-vgjc4-0 already exists {"Ingress": "default/test"}
2025-03-01T23:32:59.169-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Ingress": "default/test"}
2025-03-01T23:32:59.170-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-vgjc4 {"Ingress": "default/test"}
2025-03-01T23:32:59.171-0500 DEBUG k8s-operator/ingress.go:235 no Ingress DNS name known yet, waiting for proxy Pod initialize and start serving Ingress {"Ingress": "default/test"}
2025-03-01T23:32:59.171-0500 DEBUG k8s-operator/ingress.go:88 reconcile finished {"Ingress": "default/test"}
--- PASS: TestTailscaleIngressWithProxyClass (0.01s)
=== RUN TestTailscaleIngressWithServiceMonitor
2025-03-01T23:32:59.172-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.172-0500 INFO k8s-operator/ingress.go:140 exposing ingress over tailscale {"Ingress": "default/test"}
2025-03-01T23:32:59.172-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Ingress": "default/test"}
2025-03-01T23:32:59.172-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"Ingress": "default/test"}
2025-03-01T23:32:59.172-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Ingress": "default/test"}
2025-03-01T23:32:59.173-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-5tpxf {"Ingress": "default/test"}
2025-03-01T23:32:59.173-0500 DEBUG k8s-operator/sts.go:684 configuring proxy resources with ProxyClass metrics {"Ingress": "default/test"}
2025-03-01T23:32:59.173-0500 DEBUG k8s-operator/ingress.go:235 no Ingress DNS name known yet, waiting for proxy Pod initialize and start serving Ingress {"Ingress": "default/test"}
2025-03-01T23:32:59.173-0500 DEBUG k8s-operator/ingress.go:88 reconcile finished {"Ingress": "default/test"}
2025-03-01T23:32:59.173-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.174-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Ingress": "default/test"}
2025-03-01T23:32:59.174-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-5tpxf-0 already exists {"Ingress": "default/test"}
2025-03-01T23:32:59.174-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Ingress": "default/test"}
2025-03-01T23:32:59.175-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-5tpxf {"Ingress": "default/test"}
2025-03-01T23:32:59.175-0500 DEBUG k8s-operator/sts.go:684 configuring proxy resources with ProxyClass metrics {"Ingress": "default/test"}
2025-03-01T23:32:59.176-0500 DEBUG k8s-operator/ingress.go:235 no Ingress DNS name known yet, waiting for proxy Pod initialize and start serving Ingress {"Ingress": "default/test"}
2025-03-01T23:32:59.176-0500 DEBUG k8s-operator/ingress.go:88 reconcile finished {"Ingress": "default/test"}
2025-03-01T23:32:59.176-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.176-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Ingress": "default/test"}
2025-03-01T23:32:59.177-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-5tpxf-0 already exists {"Ingress": "default/test"}
2025-03-01T23:32:59.177-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Ingress": "default/test"}
2025-03-01T23:32:59.178-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-5tpxf {"Ingress": "default/test"}
2025-03-01T23:32:59.178-0500 DEBUG k8s-operator/sts.go:684 configuring proxy resources with ProxyClass metrics {"Ingress": "default/test"}
2025-03-01T23:32:59.179-0500 DEBUG k8s-operator/ingress.go:235 no Ingress DNS name known yet, waiting for proxy Pod initialize and start serving Ingress {"Ingress": "default/test"}
2025-03-01T23:32:59.179-0500 DEBUG k8s-operator/ingress.go:88 reconcile finished {"Ingress": "default/test"}
2025-03-01T23:32:59.179-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.180-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Ingress": "default/test"}
2025-03-01T23:32:59.180-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-5tpxf-0 already exists {"Ingress": "default/test"}
2025-03-01T23:32:59.196-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Ingress": "default/test"}
2025-03-01T23:32:59.197-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-5tpxf {"Ingress": "default/test"}
2025-03-01T23:32:59.197-0500 DEBUG k8s-operator/sts.go:684 configuring proxy resources with ProxyClass metrics {"Ingress": "default/test"}
2025-03-01T23:32:59.200-0500 INFO k8s-operator/metrics_resources.go:119 ensuring ServiceMonitor for metrics Service operator-ns/ts-test-5tpxf-metrics {"Ingress": "default/test"}
2025-03-01T23:32:59.203-0500 DEBUG k8s-operator/ingress.go:235 no Ingress DNS name known yet, waiting for proxy Pod initialize and start serving Ingress {"Ingress": "default/test"}
2025-03-01T23:32:59.203-0500 DEBUG k8s-operator/ingress.go:88 reconcile finished {"Ingress": "default/test"}
2025-03-01T23:32:59.205-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.205-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Ingress": "default/test"}
2025-03-01T23:32:59.205-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-5tpxf-0 already exists {"Ingress": "default/test"}
2025-03-01T23:32:59.205-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Ingress": "default/test"}
2025-03-01T23:32:59.207-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-5tpxf {"Ingress": "default/test"}
2025-03-01T23:32:59.207-0500 DEBUG k8s-operator/sts.go:684 configuring proxy resources with ProxyClass metrics {"Ingress": "default/test"}
2025-03-01T23:32:59.208-0500 INFO k8s-operator/metrics_resources.go:119 ensuring ServiceMonitor for metrics Service operator-ns/ts-test-5tpxf-metrics {"Ingress": "default/test"}
2025-03-01T23:32:59.209-0500 DEBUG k8s-operator/ingress.go:235 no Ingress DNS name known yet, waiting for proxy Pod initialize and start serving Ingress {"Ingress": "default/test"}
2025-03-01T23:32:59.209-0500 DEBUG k8s-operator/ingress.go:88 reconcile finished {"Ingress": "default/test"}
2025-03-01T23:32:59.210-0500 DEBUG k8s-operator/ingress.go:63 starting reconcile {"Ingress": "default/test"}
2025-03-01T23:32:59.210-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"Ingress": "default/test"}
2025-03-01T23:32:59.211-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-5tpxf-0 already exists {"Ingress": "default/test"}
2025-03-01T23:32:59.211-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"Ingress": "default/test"}
2025-03-01T23:32:59.212-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-5tpxf {"Ingress": "default/test"}
2025-03-01T23:32:59.212-0500 DEBUG k8s-operator/sts.go:684 configuring proxy resources with ProxyClass metrics {"Ingress": "default/test"}
2025-03-01T23:32:59.213-0500 DEBUG k8s-operator/ingress.go:235 no Ingress DNS name known yet, waiting for proxy Pod initialize and start serving Ingress {"Ingress": "default/test"}
2025-03-01T23:32:59.214-0500 DEBUG k8s-operator/ingress.go:88 reconcile finished {"Ingress": "default/test"}
--- PASS: TestTailscaleIngressWithServiceMonitor (0.04s)
=== RUN TestNameserverReconciler
2025-03-01T23:32:59.214-0500 DEBUG k8s-operator/nameserver.go:71 starting reconcile {"dnsConfig": "test"}
2025-03-01T23:32:59.214-0500 INFO k8s-operator/nameserver.go:126 ensuring nameserver resources {"dnsConfig": "test"}
2025-03-01T23:32:59.216-0500 INFO k8s-operator/nameserver.go:160 nameserver Service does not have an IP address allocated, waiting... {"dnsConfig": "test"}
2025-03-01T23:32:59.216-0500 DEBUG k8s-operator/nameserver.go:161 reconcile finished {"dnsConfig": "test"}
2025-03-01T23:32:59.217-0500 DEBUG k8s-operator/nameserver.go:71 starting reconcile {"dnsConfig": "test"}
2025-03-01T23:32:59.219-0500 DEBUG k8s-operator/nameserver.go:158 reconcile finished {"dnsConfig": "test"}
2025-03-01T23:32:59.220-0500 DEBUG k8s-operator/nameserver.go:71 starting reconcile {"dnsConfig": "test"}
2025-03-01T23:32:59.241-0500 DEBUG k8s-operator/nameserver.go:158 reconcile finished {"dnsConfig": "test"}
2025-03-01T23:32:59.243-0500 DEBUG k8s-operator/nameserver.go:71 starting reconcile {"dnsConfig": "test"}
2025-03-01T23:32:59.244-0500 DEBUG k8s-operator/nameserver.go:158 reconcile finished {"dnsConfig": "test"}
2025-03-01T23:32:59.245-0500 DEBUG k8s-operator/nameserver.go:71 starting reconcile {"dnsConfig": "test"}
2025-03-01T23:32:59.246-0500 DEBUG k8s-operator/nameserver.go:158 reconcile finished {"dnsConfig": "test"}
--- PASS: TestNameserverReconciler (0.03s)
=== RUN TestLoadBalancerClass
2025-03-01T23:32:59.247-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.247-0500 ERROR k8s-operator/svc.go:226 unable to provision proxy resources: invalid Service: invalid value of annotation tailscale.com/tailnet-fqdn: "invalid.example.com" does not appear to be a valid MagicDNS name
tailscale.com/cmd/k8s-operator.(*ServiceReconciler).maybeProvision
/magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/cmd/k8s-operator/svc.go:226
tailscale.com/cmd/k8s-operator.(*ServiceReconciler).Reconcile
/magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/cmd/k8s-operator/svc.go:124
tailscale.com/cmd/k8s-operator.expectReconciled
/magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/cmd/k8s-operator/testutils_test.go:696
tailscale.com/cmd/k8s-operator.TestLoadBalancerClass
/magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/cmd/k8s-operator/operator_test.go:78
testing.tRunner
/usr/local/go123/src/testing/testing.go:1690
2025-03-01T23:32:59.247-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.247-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.247-0500 INFO k8s-operator/svc.go:250 exposing service over tailscale {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.248-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.248-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.248-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.249-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-8fgmg {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.249-0500 DEBUG k8s-operator/svc.go:337 no Tailscale hostname known yet, waiting for proxy pod to finish auth {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.249-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.250-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.250-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.251-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-8fgmg-0 already exists {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.251-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.252-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-8fgmg {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.253-0500 DEBUG k8s-operator/svc.go:344 setting Service LoadBalancer status to "tailscale.device.name", 100.99.98.97, 2c0a:8083:94d4:2012:3165:34a5:3616:5fdf {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.253-0500 INFO k8s-operator/conditions.go:122 Status change for condition TailscaleProxyReady from False to True {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.253-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.254-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.254-0500 DEBUG k8s-operator/svc.go:120 service is being deleted or is (no longer) referring to Tailscale ingress/egress, ensuring any created resources are cleaned up {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.254-0500 DEBUG k8s-operator/sts.go:249 started deletion of statefulset operator-ns/ts-test-8fgmg {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.254-0500 DEBUG k8s-operator/svc.go:171 cleanup not done yet, waiting for next reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.254-0500 DEBUG k8s-operator/svc.go:121 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.254-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.255-0500 DEBUG k8s-operator/svc.go:120 service is being deleted or is (no longer) referring to Tailscale ingress/egress, ensuring any created resources are cleaned up {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.255-0500 DEBUG k8s-operator/sts.go:258 deleting device ts-id-1234 from control {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.255-0500 DEBUG k8s-operator/sts.go:267 device ts-id-1234 deleted from control {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.255-0500 INFO k8s-operator/svc.go:184 unexposed Service from tailnet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.255-0500 DEBUG k8s-operator/svc.go:121 reconcile finished {"service-ns": "default", "service-name": "test"}
--- PASS: TestLoadBalancerClass (0.01s)
=== RUN TestTailnetTargetFQDNAnnotation
2025-03-01T23:32:59.256-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.256-0500 INFO k8s-operator/svc.go:250 exposing service over tailscale {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.256-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.256-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.256-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.257-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-m92wd {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.258-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.258-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.258-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.260-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.260-0500 DEBUG k8s-operator/svc.go:120 service is being deleted or is (no longer) referring to Tailscale ingress/egress, ensuring any created resources are cleaned up {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.261-0500 DEBUG k8s-operator/sts.go:249 started deletion of statefulset operator-ns/ts-test-m92wd {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.261-0500 DEBUG k8s-operator/svc.go:171 cleanup not done yet, waiting for next reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.261-0500 DEBUG k8s-operator/svc.go:121 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.261-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.261-0500 DEBUG k8s-operator/svc.go:120 service is being deleted or is (no longer) referring to Tailscale ingress/egress, ensuring any created resources are cleaned up {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.262-0500 INFO k8s-operator/svc.go:184 unexposed Service from tailnet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.262-0500 DEBUG k8s-operator/svc.go:121 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.262-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.263-0500 DEBUG k8s-operator/svc.go:120 service is being deleted or is (no longer) referring to Tailscale ingress/egress, ensuring any created resources are cleaned up {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.263-0500 DEBUG k8s-operator/svc.go:149 no finalizer, nothing to do {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.263-0500 DEBUG k8s-operator/svc.go:121 reconcile finished {"service-ns": "default", "service-name": "test"}
--- PASS: TestTailnetTargetFQDNAnnotation (0.01s)
=== RUN TestTailnetTargetIPAnnotation
2025-03-01T23:32:59.263-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.263-0500 INFO k8s-operator/svc.go:250 exposing service over tailscale {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.263-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.263-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.264-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.264-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-n7nj9 {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.264-0500 INFO k8s-operator/svc.go:463 attempting to retrieve cluster domain.. {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.264-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'. {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.265-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.267-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.267-0500 DEBUG k8s-operator/svc.go:120 service is being deleted or is (no longer) referring to Tailscale ingress/egress, ensuring any created resources are cleaned up {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.268-0500 DEBUG k8s-operator/sts.go:249 started deletion of statefulset operator-ns/ts-test-n7nj9 {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.269-0500 DEBUG k8s-operator/svc.go:171 cleanup not done yet, waiting for next reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.269-0500 DEBUG k8s-operator/svc.go:121 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.269-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.269-0500 DEBUG k8s-operator/svc.go:120 service is being deleted or is (no longer) referring to Tailscale ingress/egress, ensuring any created resources are cleaned up {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.270-0500 INFO k8s-operator/svc.go:184 unexposed Service from tailnet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.270-0500 DEBUG k8s-operator/svc.go:121 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.270-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.271-0500 DEBUG k8s-operator/svc.go:120 service is being deleted or is (no longer) referring to Tailscale ingress/egress, ensuring any created resources are cleaned up {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.271-0500 DEBUG k8s-operator/svc.go:149 no finalizer, nothing to do {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.271-0500 DEBUG k8s-operator/svc.go:121 reconcile finished {"service-ns": "default", "service-name": "test"}
--- PASS: TestTailnetTargetIPAnnotation (0.01s)
=== RUN TestTailnetTargetIPAnnotation_IPCouldNotBeParsed
2025-03-01T23:32:59.271-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.271-0500 ERROR k8s-operator/svc.go:226 unable to provision proxy resources: invalid Service: invalid value of annotation tailscale.com/tailnet-ip: "invalid-ip" could not be parsed as a valid IP Address, error: ParseAddr("invalid-ip"): unable to parse IP
tailscale.com/cmd/k8s-operator.(*ServiceReconciler).maybeProvision
/magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/cmd/k8s-operator/svc.go:226
tailscale.com/cmd/k8s-operator.(*ServiceReconciler).Reconcile
/magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/cmd/k8s-operator/svc.go:124
tailscale.com/cmd/k8s-operator.expectReconciled
/magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/cmd/k8s-operator/testutils_test.go:696
tailscale.com/cmd/k8s-operator.TestTailnetTargetIPAnnotation_IPCouldNotBeParsed
/magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/cmd/k8s-operator/operator_test.go:475
testing.tRunner
/usr/local/go123/src/testing/testing.go:1690
2025-03-01T23:32:59.271-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
--- PASS: TestTailnetTargetIPAnnotation_IPCouldNotBeParsed (0.00s)
=== RUN TestTailnetTargetIPAnnotation_InvalidIP
2025-03-01T23:32:59.272-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.272-0500 ERROR k8s-operator/svc.go:226 unable to provision proxy resources: invalid Service: invalid value of annotation tailscale.com/tailnet-ip: "999.999.999.999" could not be parsed as a valid IP Address, error: ParseAddr("999.999.999.999"): IPv4 field has value >255
tailscale.com/cmd/k8s-operator.(*ServiceReconciler).maybeProvision
/magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/cmd/k8s-operator/svc.go:226
tailscale.com/cmd/k8s-operator.(*ServiceReconciler).Reconcile
/magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/cmd/k8s-operator/svc.go:124
tailscale.com/cmd/k8s-operator.expectReconciled
/magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/cmd/k8s-operator/testutils_test.go:696
tailscale.com/cmd/k8s-operator.TestTailnetTargetIPAnnotation_InvalidIP
/magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/cmd/k8s-operator/operator_test.go:546
testing.tRunner
/usr/local/go123/src/testing/testing.go:1690
2025-03-01T23:32:59.272-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
--- PASS: TestTailnetTargetIPAnnotation_InvalidIP (0.00s)
=== RUN TestAnnotations
2025-03-01T23:32:59.272-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.273-0500 INFO k8s-operator/svc.go:250 exposing service over tailscale {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.273-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.273-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.273-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.273-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-knh7d {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.274-0500 DEBUG k8s-operator/svc.go:326 service is not a LoadBalancer, so not updating ingress {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.274-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.275-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.275-0500 DEBUG k8s-operator/svc.go:120 service is being deleted or is (no longer) referring to Tailscale ingress/egress, ensuring any created resources are cleaned up {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.276-0500 DEBUG k8s-operator/sts.go:249 started deletion of statefulset operator-ns/ts-test-knh7d {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.276-0500 DEBUG k8s-operator/svc.go:171 cleanup not done yet, waiting for next reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.276-0500 DEBUG k8s-operator/svc.go:121 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.276-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.276-0500 DEBUG k8s-operator/svc.go:120 service is being deleted or is (no longer) referring to Tailscale ingress/egress, ensuring any created resources are cleaned up {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.276-0500 INFO k8s-operator/svc.go:184 unexposed Service from tailnet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.277-0500 DEBUG k8s-operator/svc.go:121 reconcile finished {"service-ns": "default", "service-name": "test"}
--- PASS: TestAnnotations (0.01s)
=== RUN TestAnnotationIntoLB
2025-03-01T23:32:59.278-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.278-0500 INFO k8s-operator/svc.go:250 exposing service over tailscale {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.278-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.278-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.278-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.279-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-6zjp8 {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.279-0500 DEBUG k8s-operator/svc.go:326 service is not a LoadBalancer, so not updating ingress {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.279-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.280-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.280-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.281-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-6zjp8-0 already exists {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.281-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.282-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-6zjp8 {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.283-0500 DEBUG k8s-operator/svc.go:326 service is not a LoadBalancer, so not updating ingress {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.283-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.283-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.283-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.284-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-6zjp8-0 already exists {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.284-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.285-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-6zjp8 {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.297-0500 DEBUG k8s-operator/svc.go:344 setting Service LoadBalancer status to "tailscale.device.name", 100.99.98.97, 2c0a:8083:94d4:2012:3165:34a5:3616:5fdf {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.298-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
--- PASS: TestAnnotationIntoLB (0.03s)
=== RUN TestLBIntoAnnotation
2025-03-01T23:32:59.305-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.305-0500 INFO k8s-operator/svc.go:250 exposing service over tailscale {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.306-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.306-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.306-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.307-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-249b9 {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.307-0500 DEBUG k8s-operator/svc.go:337 no Tailscale hostname known yet, waiting for proxy pod to finish auth {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.308-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.310-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.310-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.310-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-249b9-0 already exists {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.310-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.312-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-249b9 {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.458-0500 DEBUG k8s-operator/svc.go:344 setting Service LoadBalancer status to "tailscale.device.name", 100.99.98.97, 2c0a:8083:94d4:2012:3165:34a5:3616:5fdf {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.458-0500 INFO k8s-operator/conditions.go:122 Status change for condition TailscaleProxyReady from False to True {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.458-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.459-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.459-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.459-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-249b9-0 already exists {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.459-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.460-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-249b9 {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.461-0500 DEBUG k8s-operator/svc.go:326 service is not a LoadBalancer, so not updating ingress {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.461-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
--- PASS: TestLBIntoAnnotation (0.16s)
=== RUN TestCustomHostname
2025-03-01T23:32:59.463-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.463-0500 INFO k8s-operator/svc.go:250 exposing service over tailscale {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.463-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.463-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.463-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"reindeer-flotilla","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.468-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-q95zd {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.470-0500 DEBUG k8s-operator/svc.go:326 service is not a LoadBalancer, so not updating ingress {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.470-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.471-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.472-0500 DEBUG k8s-operator/svc.go:120 service is being deleted or is (no longer) referring to Tailscale ingress/egress, ensuring any created resources are cleaned up {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.472-0500 DEBUG k8s-operator/sts.go:249 started deletion of statefulset operator-ns/ts-test-q95zd {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.473-0500 DEBUG k8s-operator/svc.go:171 cleanup not done yet, waiting for next reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.473-0500 DEBUG k8s-operator/svc.go:121 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.473-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.473-0500 DEBUG k8s-operator/svc.go:120 service is being deleted or is (no longer) referring to Tailscale ingress/egress, ensuring any created resources are cleaned up {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.474-0500 INFO k8s-operator/svc.go:184 unexposed Service from tailnet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.474-0500 DEBUG k8s-operator/svc.go:121 reconcile finished {"service-ns": "default", "service-name": "test"}
--- PASS: TestCustomHostname (0.01s)
=== RUN TestCustomPriorityClassName
2025-03-01T23:32:59.474-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.474-0500 INFO k8s-operator/svc.go:250 exposing service over tailscale {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.475-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.475-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.475-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"tailscale-critical","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.476-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-2x42k {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.476-0500 DEBUG k8s-operator/svc.go:326 service is not a LoadBalancer, so not updating ingress {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.476-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
--- PASS: TestCustomPriorityClassName (0.00s)
=== RUN TestProxyClassForService
2025-03-01T23:32:59.477-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.477-0500 INFO k8s-operator/svc.go:250 exposing service over tailscale {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.477-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.477-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.478-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.479-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-6psqg {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.485-0500 DEBUG k8s-operator/svc.go:337 no Tailscale hostname known yet, waiting for proxy pod to finish auth {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.485-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.486-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.487-0500 INFO k8s-operator/svc.go:240 ProxyClass custom-metadata specified for the Service, but is not (yet) Ready, waiting.. {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.487-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.488-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.490-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.491-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-6psqg-0 already exists {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.491-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":true,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.492-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-6psqg {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.492-0500 DEBUG k8s-operator/sts.go:684 configuring proxy resources with ProxyClass custom-metadata {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.493-0500 DEBUG k8s-operator/svc.go:337 no Tailscale hostname known yet, waiting for proxy pod to finish auth {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.493-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
operator_test.go:1216: applying configuration from ProxyClass custom-metadata
operator_test.go:1217: applying configuration from ProxyClass custom-metadata
2025-03-01T23:32:59.495-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.495-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.495-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-6psqg-0 already exists {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.495-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.496-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-6psqg {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.497-0500 DEBUG k8s-operator/svc.go:337 no Tailscale hostname known yet, waiting for proxy pod to finish auth {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.497-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
--- PASS: TestProxyClassForService (0.02s)
=== RUN TestDefaultLoadBalancer
2025-03-01T23:32:59.498-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.498-0500 INFO k8s-operator/svc.go:250 exposing service over tailscale {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.498-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.498-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.499-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.499-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-2cmdb {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.499-0500 DEBUG k8s-operator/svc.go:337 no Tailscale hostname known yet, waiting for proxy pod to finish auth {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.500-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
--- PASS: TestDefaultLoadBalancer (0.00s)
=== RUN TestProxyFirewallMode
2025-03-01T23:32:59.501-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.501-0500 INFO k8s-operator/svc.go:250 exposing service over tailscale {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.501-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.501-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.501-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.502-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-lf25w {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.502-0500 DEBUG k8s-operator/svc.go:337 no Tailscale hostname known yet, waiting for proxy pod to finish auth {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.502-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
--- PASS: TestProxyFirewallMode (0.00s)
=== RUN Test_isMagicDNSName
=== RUN Test_isMagicDNSName/foo.tail4567.ts.net
=== RUN Test_isMagicDNSName/foo.tail4567.ts.net.
=== RUN Test_isMagicDNSName/foo.tail4567
--- PASS: Test_isMagicDNSName (0.00s)
--- PASS: Test_isMagicDNSName/foo.tail4567.ts.net (0.00s)
--- PASS: Test_isMagicDNSName/foo.tail4567.ts.net. (0.00s)
--- PASS: Test_isMagicDNSName/foo.tail4567 (0.00s)
=== RUN Test_serviceHandlerForIngress
--- PASS: Test_serviceHandlerForIngress (0.00s)
=== RUN Test_clusterDomainFromResolverConf
=== RUN Test_clusterDomainFromResolverConf/success-_custom_domain
2025-03-01T23:32:59.504-0500 INFO k8s-operator/svc.go:502 Cluster domain "department.org.io" extracted from resolver config
=== RUN Test_clusterDomainFromResolverConf/success-_default_domain
2025-03-01T23:32:59.504-0500 INFO k8s-operator/svc.go:502 Cluster domain "cluster.local" extracted from resolver config
=== RUN Test_clusterDomainFromResolverConf/only_two_search_domains_found
2025-03-01T23:32:59.504-0500 INFO k8s-operator/svc.go:480 [unexpected] resolver config contains only %d search domains, at least three expected.
Defaulting cluster domain to 'cluster.local'.
=== RUN Test_clusterDomainFromResolverConf/first_search_domain_does_not_match_the_expected_structure
2025-03-01T23:32:59.504-0500 INFO k8s-operator/svc.go:485 [unexpected] first search domain in resolver config is foo.bar.department.org.io.; expected foo.svc..
Defaulting cluster domain to 'cluster.local'.
=== RUN Test_clusterDomainFromResolverConf/second_search_domain_does_not_match_the_expected_structure
2025-03-01T23:32:59.505-0500 INFO k8s-operator/svc.go:490 [unexpected] second search domain in resolver config is foo.department.org.io.; expected 'svc.'.
Defaulting cluster domain to 'cluster.local'.
=== RUN Test_clusterDomainFromResolverConf/third_search_domain_does_not_match_the_expected_structure
2025-03-01T23:32:59.505-0500 INFO k8s-operator/svc.go:499 [unexpected] expected resolver config to contain serch domains .svc., svc., ; got foo.svc.department.org.io. svc.department.org.io. some.other.fqdn.
. Defaulting cluster domain to 'cluster.local'.
--- PASS: Test_clusterDomainFromResolverConf (0.00s)
--- PASS: Test_clusterDomainFromResolverConf/success-_custom_domain (0.00s)
--- PASS: Test_clusterDomainFromResolverConf/success-_default_domain (0.00s)
--- PASS: Test_clusterDomainFromResolverConf/only_two_search_domains_found (0.00s)
--- PASS: Test_clusterDomainFromResolverConf/first_search_domain_does_not_match_the_expected_structure (0.00s)
--- PASS: Test_clusterDomainFromResolverConf/second_search_domain_does_not_match_the_expected_structure (0.00s)
--- PASS: Test_clusterDomainFromResolverConf/third_search_domain_does_not_match_the_expected_structure (0.00s)
=== RUN Test_authKeyRemoval
2025-03-01T23:32:59.505-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.505-0500 INFO k8s-operator/svc.go:250 exposing service over tailscale {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.505-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.505-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.506-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.553-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-mv7ds {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.554-0500 DEBUG k8s-operator/svc.go:337 no Tailscale hostname known yet, waiting for proxy pod to finish auth {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.554-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.556-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.556-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.556-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-mv7ds-0 already exists {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.557-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.558-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-mv7ds {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.559-0500 DEBUG k8s-operator/svc.go:337 no Tailscale hostname known yet, waiting for proxy pod to finish auth {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.560-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
--- PASS: Test_authKeyRemoval (0.05s)
=== RUN Test_externalNameService
2025-03-01T23:32:59.560-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.560-0500 INFO k8s-operator/svc.go:250 exposing service over tailscale {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.560-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.561-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.561-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.561-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-5cqm9 {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.561-0500 DEBUG k8s-operator/svc.go:326 service is not a LoadBalancer, so not updating ingress {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.562-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.563-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.563-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.564-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-5cqm9-0 already exists {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.564-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.565-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-5cqm9 {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.569-0500 DEBUG k8s-operator/svc.go:326 service is not a LoadBalancer, so not updating ingress {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.569-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
--- PASS: Test_externalNameService (0.01s)
=== RUN Test_metricsResourceCreation
2025-03-01T23:32:59.570-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.571-0500 INFO k8s-operator/svc.go:250 exposing service over tailscale {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.571-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.571-0500 DEBUG k8s-operator/sts.go:374 creating authkey for new tailscale proxy {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.572-0500 DEBUG k8s-operator/sts.go:422 creating a new Secret for the proxy with tailscaled config {"Version":"alpha0","Locked":false,"AuthKey":"**redacted**","Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.572-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-x5dm8 {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.572-0500 DEBUG k8s-operator/sts.go:684 configuring proxy resources with ProxyClass metrics {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.572-0500 DEBUG k8s-operator/svc.go:337 no Tailscale hostname known yet, waiting for proxy pod to finish auth {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.573-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.573-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.573-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.574-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-x5dm8-0 already exists {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.574-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.575-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-x5dm8 {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.575-0500 DEBUG k8s-operator/sts.go:684 configuring proxy resources with ProxyClass metrics {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.576-0500 DEBUG k8s-operator/svc.go:337 no Tailscale hostname known yet, waiting for proxy pod to finish auth {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.576-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.576-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.576-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.577-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-x5dm8-0 already exists {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.577-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.578-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-x5dm8 {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.578-0500 DEBUG k8s-operator/sts.go:684 configuring proxy resources with ProxyClass metrics {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.579-0500 DEBUG k8s-operator/svc.go:337 no Tailscale hostname known yet, waiting for proxy pod to finish auth {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.579-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.579-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.579-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.579-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-x5dm8-0 already exists {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.579-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.580-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-x5dm8 {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.580-0500 DEBUG k8s-operator/sts.go:684 configuring proxy resources with ProxyClass metrics {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.582-0500 INFO k8s-operator/metrics_resources.go:119 ensuring ServiceMonitor for metrics Service operator-ns/ts-test-x5dm8-metrics {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.582-0500 DEBUG k8s-operator/svc.go:337 no Tailscale hostname known yet, waiting for proxy pod to finish auth {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.582-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.582-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.583-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.583-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-x5dm8-0 already exists {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.583-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.584-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-x5dm8 {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.584-0500 DEBUG k8s-operator/sts.go:684 configuring proxy resources with ProxyClass metrics {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.585-0500 INFO k8s-operator/metrics_resources.go:119 ensuring ServiceMonitor for metrics Service operator-ns/ts-test-x5dm8-metrics {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.585-0500 DEBUG k8s-operator/svc.go:337 no Tailscale hostname known yet, waiting for proxy pod to finish auth {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.585-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.586-0500 DEBUG k8s-operator/svc.go:102 starting reconcile {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.586-0500 DEBUG k8s-operator/sts.go:334 reconciling headless service for StatefulSet {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.586-0500 DEBUG k8s-operator/sts.go:351 secret operator-ns/ts-test-x5dm8-0 already exists {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.586-0500 DEBUG k8s-operator/sts.go:417 patching the existing proxy Secret with tailscaled config {"Version":"alpha0","Locked":false,"Hostname":"default-test","acceptDNS":false,"acceptRoutes":false,"AppConnector":{"Advertise":false},"NoStatefulFiltering":true} {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.587-0500 DEBUG k8s-operator/sts.go:682 reconciling statefulset operator-ns/ts-test-x5dm8 {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.587-0500 DEBUG k8s-operator/sts.go:684 configuring proxy resources with ProxyClass metrics {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.588-0500 DEBUG k8s-operator/svc.go:337 no Tailscale hostname known yet, waiting for proxy pod to finish auth {"service-ns": "default", "service-name": "test"}
2025-03-01T23:32:59.588-0500 DEBUG k8s-operator/svc.go:132 reconcile finished {"service-ns": "default", "service-name": "test"}
--- PASS: Test_metricsResourceCreation (0.02s)
=== RUN TestImpersonationHeaders
2025-03-01T23:32:59.589-0500 DEBUG k8s-operator/proxy.go:368 adding user impersonation header for user foo@example.com {"remote": ""}
2025-03-01T23:32:59.589-0500 DEBUG k8s-operator/proxy.go:375 adding user impersonation header for node name node.ts.net {"remote": ""}
2025-03-01T23:32:59.589-0500 DEBUG k8s-operator/proxy.go:381 adding group impersonation header for node tag tag:foo {"remote": ""}
2025-03-01T23:32:59.589-0500 DEBUG k8s-operator/proxy.go:381 adding group impersonation header for node tag tag:bar {"remote": ""}
2025-03-01T23:32:59.589-0500 DEBUG k8s-operator/proxy.go:362 adding group impersonation header for user group group1 {"remote": ""}
2025-03-01T23:32:59.589-0500 DEBUG k8s-operator/proxy.go:362 adding group impersonation header for user group group2 {"remote": ""}
2025-03-01T23:32:59.589-0500 DEBUG k8s-operator/proxy.go:362 adding group impersonation header for user group group3 {"remote": ""}
2025-03-01T23:32:59.589-0500 DEBUG k8s-operator/proxy.go:362 adding group impersonation header for user group group4 {"remote": ""}
2025-03-01T23:32:59.589-0500 DEBUG k8s-operator/proxy.go:368 adding user impersonation header for user foo@example.com {"remote": ""}
2025-03-01T23:32:59.589-0500 DEBUG k8s-operator/proxy.go:362 adding group impersonation header for user group group1 {"remote": ""}
2025-03-01T23:32:59.589-0500 DEBUG k8s-operator/proxy.go:375 adding user impersonation header for node name node.ts.net {"remote": ""}
2025-03-01T23:32:59.590-0500 DEBUG k8s-operator/proxy.go:362 adding group impersonation header for user group group1 {"remote": ""}
2025-03-01T23:32:59.590-0500 DEBUG k8s-operator/proxy.go:375 adding user impersonation header for node name node.ts.net {"remote": ""}
--- PASS: TestImpersonationHeaders (0.00s)
=== RUN Test_determineRecorderConfig
=== RUN Test_determineRecorderConfig/two_ips_fail_closed
=== RUN Test_determineRecorderConfig/two_ips_fail_open
=== RUN Test_determineRecorderConfig/odd_rule_combination_fail_closed
=== RUN Test_determineRecorderConfig/no_caps
=== RUN Test_determineRecorderConfig/no_recorder_caps
--- PASS: Test_determineRecorderConfig (0.00s)
--- PASS: Test_determineRecorderConfig/two_ips_fail_closed (0.00s)
--- PASS: Test_determineRecorderConfig/two_ips_fail_open (0.00s)
--- PASS: Test_determineRecorderConfig/odd_rule_combination_fail_closed (0.00s)
--- PASS: Test_determineRecorderConfig/no_caps (0.00s)
--- PASS: Test_determineRecorderConfig/no_recorder_caps (0.00s)
=== RUN TestProxyClass
2025-03-01T23:32:59.591-0500 DEBUG k8s-operator/proxyclass.go:66 starting reconcile {"ProxyClass": "test"}
2025-03-01T23:32:59.592-0500 DEBUG k8s-operator/proxyclass.go:112 reconcile finished {"ProxyClass": "test"}
2025-03-01T23:32:59.592-0500 DEBUG k8s-operator/proxyclass.go:66 starting reconcile {"ProxyClass": "test"}
2025-03-01T23:32:59.592-0500 INFO k8s-operator/conditions.go:122 Status change for condition ProxyClassReady from True to False {"ProxyClass": "test"}
2025-03-01T23:32:59.593-0500 DEBUG k8s-operator/proxyclass.go:112 reconcile finished {"ProxyClass": "test"}
2025-03-01T23:32:59.593-0500 INFO k8s-operator/conditions.go:122 Status change for condition ProxyClassReady from True to False
2025-03-01T23:32:59.593-0500 DEBUG k8s-operator/proxyclass.go:66 starting reconcile {"ProxyClass": "test"}
2025-03-01T23:32:59.593-0500 DEBUG k8s-operator/proxyclass.go:112 reconcile finished {"ProxyClass": "test"}
2025-03-01T23:32:59.594-0500 DEBUG k8s-operator/proxyclass.go:66 starting reconcile {"ProxyClass": "test"}
2025-03-01T23:32:59.594-0500 DEBUG k8s-operator/proxyclass.go:112 reconcile finished {"ProxyClass": "test"}
2025-03-01T23:32:59.595-0500 DEBUG k8s-operator/proxyclass.go:66 starting reconcile {"ProxyClass": "test"}
2025-03-01T23:32:59.595-0500 INFO k8s-operator/conditions.go:122 Status change for condition ProxyClassReady from False to True {"ProxyClass": "test"}
2025-03-01T23:32:59.595-0500 DEBUG k8s-operator/proxyclass.go:112 reconcile finished {"ProxyClass": "test"}
2025-03-01T23:32:59.596-0500 DEBUG k8s-operator/proxyclass.go:66 starting reconcile {"ProxyClass": "test"}
2025-03-01T23:32:59.596-0500 INFO k8s-operator/conditions.go:122 Status change for condition ProxyClassReady from True to False {"ProxyClass": "test"}
2025-03-01T23:32:59.596-0500 DEBUG k8s-operator/proxyclass.go:112 reconcile finished {"ProxyClass": "test"}
2025-03-01T23:32:59.597-0500 DEBUG k8s-operator/proxyclass.go:66 starting reconcile {"ProxyClass": "test"}
2025-03-01T23:32:59.597-0500 INFO k8s-operator/conditions.go:122 Status change for condition ProxyClassReady from False to True {"ProxyClass": "test"}
2025-03-01T23:32:59.597-0500 DEBUG k8s-operator/proxyclass.go:112 reconcile finished {"ProxyClass": "test"}
2025-03-01T23:32:59.597-0500 INFO k8s-operator/conditions.go:122 Status change for condition ProxyClassReady from False to True
2025-03-01T23:32:59.598-0500 DEBUG k8s-operator/proxyclass.go:66 starting reconcile {"ProxyClass": "test"}
2025-03-01T23:32:59.598-0500 INFO k8s-operator/conditions.go:122 Status change for condition ProxyClassReady from True to False {"ProxyClass": "test"}
2025-03-01T23:32:59.598-0500 DEBUG k8s-operator/proxyclass.go:112 reconcile finished {"ProxyClass": "test"}
2025-03-01T23:32:59.598-0500 INFO k8s-operator/conditions.go:122 Status change for condition ProxyClassReady from True to False
2025-03-01T23:32:59.599-0500 DEBUG k8s-operator/proxyclass.go:66 starting reconcile {"ProxyClass": "test"}
2025-03-01T23:32:59.599-0500 INFO k8s-operator/conditions.go:122 Status change for condition ProxyClassReady from False to True {"ProxyClass": "test"}
2025-03-01T23:32:59.599-0500 DEBUG k8s-operator/proxyclass.go:112 reconcile finished {"ProxyClass": "test"}
2025-03-01T23:32:59.599-0500 INFO k8s-operator/conditions.go:122 Status change for condition ProxyClassReady from False to True
--- PASS: TestProxyClass (0.01s)
=== RUN TestValidateProxyClass
=== RUN TestValidateProxyClass/empty
=== RUN TestValidateProxyClass/debug_enabled_for_main_container
=== RUN TestValidateProxyClass/debug_enabled_for_init_container
--- PASS: TestValidateProxyClass (0.00s)
--- PASS: TestValidateProxyClass/empty (0.00s)
--- PASS: TestValidateProxyClass/debug_enabled_for_main_container (0.00s)
--- PASS: TestValidateProxyClass/debug_enabled_for_init_container (0.00s)
=== RUN TestProxyGroup
=== RUN TestProxyGroup/proxyclass_not_ready
2025-03-01T23:32:59.601-0500 DEBUG k8s-operator/proxygroup.go:86 starting reconcile {"ProxyGroup": "test"}
2025-03-01T23:32:59.601-0500 INFO k8s-operator/proxygroup.go:173 the ProxyGroup's ProxyClass default-pc is not yet in a ready state, waiting... {"ProxyGroup": "test"}
2025-03-01T23:32:59.601-0500 DEBUG k8s-operator/proxygroup.go:174 reconcile finished {"ProxyGroup": "test"}
=== RUN TestProxyGroup/observe_ProxyGroupCreating_status_reason
2025-03-01T23:32:59.602-0500 DEBUG k8s-operator/proxygroup.go:86 starting reconcile {"ProxyGroup": "test"}
2025-03-01T23:32:59.602-0500 DEBUG k8s-operator/proxygroup.go:472 creating authkey for new ProxyGroup proxy {"ProxyGroup": "test"}
2025-03-01T23:32:59.603-0500 DEBUG k8s-operator/proxygroup.go:528 creating a new config Secret test-0-config for the ProxyGroup {"ProxyGroup": "test"}
2025-03-01T23:32:59.603-0500 DEBUG k8s-operator/proxygroup.go:472 creating authkey for new ProxyGroup proxy {"ProxyGroup": "test"}
2025-03-01T23:32:59.603-0500 DEBUG k8s-operator/proxygroup.go:528 creating a new config Secret test-1-config for the ProxyGroup {"ProxyGroup": "test"}
2025-03-01T23:32:59.722-0500 DEBUG k8s-operator/proxygroup.go:195 0/2 ProxyGroup pods running {"ProxyGroup": "test"}
2025-03-01T23:32:59.722-0500 DEBUG k8s-operator/proxygroup.go:196 reconcile finished {"ProxyGroup": "test"}
=== RUN TestProxyGroup/simulate_successful_device_auth
2025-03-01T23:32:59.759-0500 DEBUG k8s-operator/proxygroup.go:86 starting reconcile {"ProxyGroup": "test"}
2025-03-01T23:32:59.759-0500 DEBUG k8s-operator/proxygroup.go:464 secret tailscale/test-0-config already exists {"ProxyGroup": "test"}
2025-03-01T23:32:59.759-0500 DEBUG k8s-operator/proxygroup.go:523 patching the existing ProxyGroup config Secret test-0-config {"ProxyGroup": "test"}
2025-03-01T23:32:59.760-0500 DEBUG k8s-operator/proxygroup.go:464 secret tailscale/test-1-config already exists {"ProxyGroup": "test"}
2025-03-01T23:32:59.760-0500 DEBUG k8s-operator/proxygroup.go:523 patching the existing ProxyGroup config Secret test-1-config {"ProxyGroup": "test"}
2025-03-01T23:32:59.762-0500 INFO k8s-operator/proxygroup.go:205 ProxyGroup resources synced {"ProxyGroup": "test"}
2025-03-01T23:32:59.762-0500 INFO k8s-operator/conditions.go:122 Status change for condition ProxyGroupReady from False to True {"ProxyGroup": "test"}
2025-03-01T23:32:59.763-0500 DEBUG k8s-operator/proxygroup.go:206 reconcile finished {"ProxyGroup": "test"}
2025-03-01T23:32:59.763-0500 INFO k8s-operator/conditions.go:122 Status change for condition ProxyGroupReady from False to True
=== RUN TestProxyGroup/scale_up_to_3
2025-03-01T23:32:59.765-0500 DEBUG k8s-operator/proxygroup.go:86 starting reconcile {"ProxyGroup": "test"}
2025-03-01T23:32:59.766-0500 DEBUG k8s-operator/proxygroup.go:464 secret tailscale/test-0-config already exists {"ProxyGroup": "test"}
2025-03-01T23:32:59.766-0500 DEBUG k8s-operator/proxygroup.go:523 patching the existing ProxyGroup config Secret test-0-config {"ProxyGroup": "test"}
2025-03-01T23:32:59.767-0500 DEBUG k8s-operator/proxygroup.go:464 secret tailscale/test-1-config already exists {"ProxyGroup": "test"}
2025-03-01T23:32:59.767-0500 DEBUG k8s-operator/proxygroup.go:523 patching the existing ProxyGroup config Secret test-1-config {"ProxyGroup": "test"}
2025-03-01T23:32:59.768-0500 DEBUG k8s-operator/proxygroup.go:472 creating authkey for new ProxyGroup proxy {"ProxyGroup": "test"}
2025-03-01T23:32:59.768-0500 DEBUG k8s-operator/proxygroup.go:528 creating a new config Secret test-2-config for the ProxyGroup {"ProxyGroup": "test"}
2025-03-01T23:32:59.771-0500 DEBUG k8s-operator/proxygroup.go:195 2/3 ProxyGroup pods running {"ProxyGroup": "test"}
2025-03-01T23:32:59.771-0500 INFO k8s-operator/conditions.go:122 Status change for condition ProxyGroupReady from True to False {"ProxyGroup": "test"}
2025-03-01T23:32:59.771-0500 DEBUG k8s-operator/proxygroup.go:196 reconcile finished {"ProxyGroup": "test"}
2025-03-01T23:32:59.771-0500 INFO k8s-operator/conditions.go:122 Status change for condition ProxyGroupReady from True to False
2025-03-01T23:32:59.774-0500 DEBUG k8s-operator/proxygroup.go:86 starting reconcile {"ProxyGroup": "test"}
2025-03-01T23:32:59.774-0500 DEBUG k8s-operator/proxygroup.go:464 secret tailscale/test-0-config already exists {"ProxyGroup": "test"}
2025-03-01T23:32:59.774-0500 DEBUG k8s-operator/proxygroup.go:523 patching the existing ProxyGroup config Secret test-0-config {"ProxyGroup": "test"}
2025-03-01T23:32:59.774-0500 DEBUG k8s-operator/proxygroup.go:464 secret tailscale/test-1-config already exists {"ProxyGroup": "test"}
2025-03-01T23:32:59.775-0500 DEBUG k8s-operator/proxygroup.go:523 patching the existing ProxyGroup config Secret test-1-config {"ProxyGroup": "test"}
2025-03-01T23:32:59.775-0500 DEBUG k8s-operator/proxygroup.go:464 secret tailscale/test-2-config already exists {"ProxyGroup": "test"}
2025-03-01T23:32:59.775-0500 DEBUG k8s-operator/proxygroup.go:523 patching the existing ProxyGroup config Secret test-2-config {"ProxyGroup": "test"}
2025-03-01T23:32:59.777-0500 INFO k8s-operator/proxygroup.go:205 ProxyGroup resources synced {"ProxyGroup": "test"}
2025-03-01T23:32:59.777-0500 INFO k8s-operator/conditions.go:122 Status change for condition ProxyGroupReady from False to True {"ProxyGroup": "test"}
2025-03-01T23:32:59.777-0500 DEBUG k8s-operator/proxygroup.go:206 reconcile finished {"ProxyGroup": "test"}
2025-03-01T23:32:59.777-0500 INFO k8s-operator/conditions.go:122 Status change for condition ProxyGroupReady from False to True
=== RUN TestProxyGroup/scale_down_to_1
2025-03-01T23:32:59.783-0500 DEBUG k8s-operator/proxygroup.go:86 starting reconcile {"ProxyGroup": "test"}
2025-03-01T23:32:59.783-0500 DEBUG k8s-operator/proxygroup.go:464 secret tailscale/test-0-config already exists {"ProxyGroup": "test"}
2025-03-01T23:32:59.783-0500 DEBUG k8s-operator/proxygroup.go:523 patching the existing ProxyGroup config Secret test-0-config {"ProxyGroup": "test"}
2025-03-01T23:32:59.787-0500 DEBUG k8s-operator/proxygroup.go:434 deleting device nodeid-1 from control {"ProxyGroup": "test"}
2025-03-01T23:32:59.788-0500 DEBUG k8s-operator/proxygroup.go:443 device nodeid-1 deleted from control {"ProxyGroup": "test"}
2025-03-01T23:32:59.788-0500 DEBUG k8s-operator/proxygroup.go:434 deleting device nodeid-2 from control {"ProxyGroup": "test"}
2025-03-01T23:32:59.788-0500 DEBUG k8s-operator/proxygroup.go:443 device nodeid-2 deleted from control {"ProxyGroup": "test"}
2025-03-01T23:32:59.788-0500 INFO k8s-operator/proxygroup.go:205 ProxyGroup resources synced {"ProxyGroup": "test"}
2025-03-01T23:32:59.788-0500 DEBUG k8s-operator/proxygroup.go:206 reconcile finished {"ProxyGroup": "test"}
=== RUN TestProxyGroup/trigger_config_change_and_observe_new_config_hash
2025-03-01T23:32:59.792-0500 DEBUG k8s-operator/proxygroup.go:86 starting reconcile {"ProxyGroup": "test"}
2025-03-01T23:32:59.792-0500 DEBUG k8s-operator/proxygroup.go:464 secret tailscale/test-0-config already exists {"ProxyGroup": "test"}
2025-03-01T23:32:59.792-0500 DEBUG k8s-operator/proxygroup.go:523 patching the existing ProxyGroup config Secret test-0-config {"ProxyGroup": "test"}
2025-03-01T23:32:59.795-0500 INFO k8s-operator/proxygroup.go:205 ProxyGroup resources synced {"ProxyGroup": "test"}
2025-03-01T23:32:59.795-0500 DEBUG k8s-operator/proxygroup.go:206 reconcile finished {"ProxyGroup": "test"}
=== RUN TestProxyGroup/enable_metrics
2025-03-01T23:32:59.799-0500 DEBUG k8s-operator/proxygroup.go:86 starting reconcile {"ProxyGroup": "test"}
2025-03-01T23:32:59.799-0500 DEBUG k8s-operator/proxygroup.go:464 secret tailscale/test-0-config already exists {"ProxyGroup": "test"}
2025-03-01T23:32:59.799-0500 DEBUG k8s-operator/proxygroup.go:523 patching the existing ProxyGroup config Secret test-0-config {"ProxyGroup": "test"}
2025-03-01T23:32:59.802-0500 INFO k8s-operator/proxygroup.go:205 ProxyGroup resources synced {"ProxyGroup": "test"}
2025-03-01T23:32:59.802-0500 DEBUG k8s-operator/proxygroup.go:206 reconcile finished {"ProxyGroup": "test"}
=== RUN TestProxyGroup/enable_service_monitor_no_crd
2025-03-01T23:32:59.864-0500 DEBUG k8s-operator/proxygroup.go:86 starting reconcile {"ProxyGroup": "test"}
2025-03-01T23:32:59.865-0500 DEBUG k8s-operator/proxygroup.go:464 secret tailscale/test-0-config already exists {"ProxyGroup": "test"}
2025-03-01T23:32:59.865-0500 DEBUG k8s-operator/proxygroup.go:523 patching the existing ProxyGroup config Secret test-0-config {"ProxyGroup": "test"}
2025-03-01T23:32:59.867-0500 INFO k8s-operator/proxygroup.go:205 ProxyGroup resources synced {"ProxyGroup": "test"}
2025-03-01T23:32:59.867-0500 DEBUG k8s-operator/proxygroup.go:206 reconcile finished {"ProxyGroup": "test"}
=== RUN TestProxyGroup/create_crd_expect_service_monitor
2025-03-01T23:32:59.867-0500 DEBUG k8s-operator/proxygroup.go:86 starting reconcile {"ProxyGroup": "test"}
2025-03-01T23:32:59.867-0500 DEBUG k8s-operator/proxygroup.go:464 secret tailscale/test-0-config already exists {"ProxyGroup": "test"}
2025-03-01T23:32:59.867-0500 DEBUG k8s-operator/proxygroup.go:523 patching the existing ProxyGroup config Secret test-0-config {"ProxyGroup": "test"}
2025-03-01T23:32:59.869-0500 INFO k8s-operator/metrics_resources.go:119 ensuring ServiceMonitor for metrics Service tailscale/test-metrics {"ProxyGroup": "test"}
2025-03-01T23:32:59.869-0500 INFO k8s-operator/proxygroup.go:205 ProxyGroup resources synced {"ProxyGroup": "test"}
2025-03-01T23:32:59.869-0500 DEBUG k8s-operator/proxygroup.go:206 reconcile finished {"ProxyGroup": "test"}
=== RUN TestProxyGroup/delete_and_cleanup
2025-03-01T23:32:59.869-0500 DEBUG k8s-operator/proxygroup.go:86 starting reconcile {"ProxyGroup": "test"}
2025-03-01T23:32:59.869-0500 DEBUG k8s-operator/proxygroup.go:98 ProxyGroup is being deleted, cleaning up resources {"ProxyGroup": "test"}
2025-03-01T23:32:59.870-0500 DEBUG k8s-operator/proxygroup.go:434 deleting device nodeid-0 from control {"ProxyGroup": "test"}
2025-03-01T23:32:59.870-0500 DEBUG k8s-operator/proxygroup.go:443 device nodeid-0 deleted from control {"ProxyGroup": "test"}
2025-03-01T23:32:59.870-0500 INFO k8s-operator/proxygroup.go:426 cleaned up ProxyGroup resources {"ProxyGroup": "test"}
2025-03-01T23:32:59.870-0500 DEBUG k8s-operator/proxygroup.go:116 reconcile finished {"ProxyGroup": "test"}
--- PASS: TestProxyGroup (0.27s)
--- PASS: TestProxyGroup/proxyclass_not_ready (0.00s)
--- PASS: TestProxyGroup/observe_ProxyGroupCreating_status_reason (0.15s)
--- PASS: TestProxyGroup/simulate_successful_device_auth (0.01s)
--- PASS: TestProxyGroup/scale_up_to_3 (0.02s)
--- PASS: TestProxyGroup/scale_down_to_1 (0.01s)
--- PASS: TestProxyGroup/trigger_config_change_and_observe_new_config_hash (0.01s)
--- PASS: TestProxyGroup/enable_metrics (0.07s)
--- PASS: TestProxyGroup/enable_service_monitor_no_crd (0.00s)
--- PASS: TestProxyGroup/create_crd_expect_service_monitor (0.00s)
--- PASS: TestProxyGroup/delete_and_cleanup (0.00s)
=== RUN TestProxyGroupTypes
=== RUN TestProxyGroupTypes/egress_type
2025-03-01T23:32:59.870-0500 DEBUG k8s-operator/proxygroup.go:86 starting reconcile {"ProxyGroup": "test-egress"}
2025-03-01T23:32:59.870-0500 INFO k8s-operator/proxygroup.go:136 ensuring ProxyGroup is set up {"ProxyGroup": "test-egress"}
2025-03-01T23:32:59.871-0500 INFO k8s-operator/proxygroup.go:205 ProxyGroup resources synced {"ProxyGroup": "test-egress"}
2025-03-01T23:32:59.871-0500 DEBUG k8s-operator/proxygroup.go:206 reconcile finished {"ProxyGroup": "test-egress"}
=== RUN TestProxyGroupTypes/egress_type_no_lifecycle_hook_when_local_addr_port_set
2025-03-01T23:32:59.872-0500 DEBUG k8s-operator/proxygroup.go:86 starting reconcile {"ProxyGroup": "test-egress-no-lifecycle"}
2025-03-01T23:32:59.872-0500 INFO k8s-operator/proxygroup.go:136 ensuring ProxyGroup is set up {"ProxyGroup": "test-egress-no-lifecycle"}
2025-03-01T23:32:59.872-0500 WARN k8s-operator/proxygroup.go:230 ProxyClass test applied to an egress ProxyGroup has TS_LOCAL_ADDR_PORT env var set to a custom value.This will disable the ProxyGroup graceful failover mechanism, so you might experience downtime when ProxyGroup pods are restarted.In future we will remove the ability to set custom TS_LOCAL_ADDR_PORT for egress ProxyGroups.Please raise an issue if you expect that this will cause issues for your workflow. {"ProxyGroup": "test-egress-no-lifecycle"}
tailscale.com/cmd/k8s-operator.validateProxyClassForPG
/magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/cmd/k8s-operator/proxygroup.go:230
tailscale.com/cmd/k8s-operator.(*ProxyGroupReconciler).Reconcile
/magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/cmd/k8s-operator/proxygroup.go:170
tailscale.com/cmd/k8s-operator.expectReconciled
/magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/cmd/k8s-operator/testutils_test.go:696
tailscale.com/cmd/k8s-operator.TestProxyGroupTypes.func3
/magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/cmd/k8s-operator/proxygroup_test.go:383
testing.tRunner
/usr/local/go123/src/testing/testing.go:1690
2025-03-01T23:32:59.873-0500 INFO k8s-operator/proxygroup.go:205 ProxyGroup resources synced {"ProxyGroup": "test-egress-no-lifecycle"}
2025-03-01T23:32:59.873-0500 DEBUG k8s-operator/proxygroup.go:206 reconcile finished {"ProxyGroup": "test-egress-no-lifecycle"}
=== RUN TestProxyGroupTypes/ingress_type
2025-03-01T23:32:59.873-0500 DEBUG k8s-operator/proxygroup.go:86 starting reconcile {"ProxyGroup": "test-ingress"}
2025-03-01T23:32:59.873-0500 INFO k8s-operator/proxygroup.go:136 ensuring ProxyGroup is set up {"ProxyGroup": "test-ingress"}
2025-03-01T23:32:59.873-0500 INFO k8s-operator/proxygroup.go:205 ProxyGroup resources synced {"ProxyGroup": "test-ingress"}
2025-03-01T23:32:59.874-0500 DEBUG k8s-operator/proxygroup.go:206 reconcile finished {"ProxyGroup": "test-ingress"}
--- PASS: TestProxyGroupTypes (0.00s)
--- PASS: TestProxyGroupTypes/egress_type (0.00s)
--- PASS: TestProxyGroupTypes/egress_type_no_lifecycle_hook_when_local_addr_port_set (0.00s)
--- PASS: TestProxyGroupTypes/ingress_type (0.00s)
=== RUN Test_statefulSetNameBase
--- PASS: Test_statefulSetNameBase (0.00s)
=== RUN Test_applyProxyClassToStatefulSet
--- PASS: Test_applyProxyClassToStatefulSet (0.00s)
=== RUN Test_mergeStatefulSetLabelsOrAnnots
=== RUN Test_mergeStatefulSetLabelsOrAnnots/no_custom_labels_specified_and_none_present_in_current_labels,_return_current_labels
=== RUN Test_mergeStatefulSetLabelsOrAnnots/no_custom_labels_specified,_but_some_present_in_current_labels,_return_tailscale_managed_labels_only_from_the_current_labels
=== RUN Test_mergeStatefulSetLabelsOrAnnots/custom_labels_specified,_current_labels_only_contain_tailscale_managed_labels,_return_a_union_of_both
=== RUN Test_mergeStatefulSetLabelsOrAnnots/custom_labels_specified,_current_labels_contain_tailscale_managed_labels_and_custom_labels,_some_of_which_re_not_present_in_the_new_custom_labels,_return_a_union_of_managed_labels_and_the_desired_custom_labels
=== RUN Test_mergeStatefulSetLabelsOrAnnots/no_current_labels_present,_return_custom_labels_only
=== RUN Test_mergeStatefulSetLabelsOrAnnots/no_current_labels_present,_no_custom_labels_specified,_return_empty_map
=== RUN Test_mergeStatefulSetLabelsOrAnnots/no_custom_annots_specified_and_none_present_in_current_annots,_return_current_annots
=== RUN Test_mergeStatefulSetLabelsOrAnnots/no_custom_annots_specified,_but_some_present_in_current_annots,_return_tailscale_managed_annots_only_from_the_current_annots
=== RUN Test_mergeStatefulSetLabelsOrAnnots/custom_annots_specified,_current_annots_only_contain_tailscale_managed_annots,_return_a_union_of_both
=== RUN Test_mergeStatefulSetLabelsOrAnnots/custom_annots_specified,_current_annots_contain_tailscale_managed_annots_and_custom_annots,_some_of_which_are_not_present_in_the_new_custom_annots,_return_a_union_of_managed_annots_and_the_desired_custom_annots
=== RUN Test_mergeStatefulSetLabelsOrAnnots/no_current_annots_present,_return_custom_annots_only
=== RUN Test_mergeStatefulSetLabelsOrAnnots/no_current_labels_present,_no_custom_labels_specified,_return_empty_map#01
--- PASS: Test_mergeStatefulSetLabelsOrAnnots (0.00s)
--- PASS: Test_mergeStatefulSetLabelsOrAnnots/no_custom_labels_specified_and_none_present_in_current_labels,_return_current_labels (0.00s)
--- PASS: Test_mergeStatefulSetLabelsOrAnnots/no_custom_labels_specified,_but_some_present_in_current_labels,_return_tailscale_managed_labels_only_from_the_current_labels (0.00s)
--- PASS: Test_mergeStatefulSetLabelsOrAnnots/custom_labels_specified,_current_labels_only_contain_tailscale_managed_labels,_return_a_union_of_both (0.00s)
--- PASS: Test_mergeStatefulSetLabelsOrAnnots/custom_labels_specified,_current_labels_contain_tailscale_managed_labels_and_custom_labels,_some_of_which_re_not_present_in_the_new_custom_labels,_return_a_union_of_managed_labels_and_the_desired_custom_labels (0.00s)
--- PASS: Test_mergeStatefulSetLabelsOrAnnots/no_current_labels_present,_return_custom_labels_only (0.00s)
--- PASS: Test_mergeStatefulSetLabelsOrAnnots/no_current_labels_present,_no_custom_labels_specified,_return_empty_map (0.00s)
--- PASS: Test_mergeStatefulSetLabelsOrAnnots/no_custom_annots_specified_and_none_present_in_current_annots,_return_current_annots (0.00s)
--- PASS: Test_mergeStatefulSetLabelsOrAnnots/no_custom_annots_specified,_but_some_present_in_current_annots,_return_tailscale_managed_annots_only_from_the_current_annots (0.00s)
--- PASS: Test_mergeStatefulSetLabelsOrAnnots/custom_annots_specified,_current_annots_only_contain_tailscale_managed_annots,_return_a_union_of_both (0.00s)
--- PASS: Test_mergeStatefulSetLabelsOrAnnots/custom_annots_specified,_current_annots_contain_tailscale_managed_annots_and_custom_annots,_some_of_which_are_not_present_in_the_new_custom_annots,_return_a_union_of_managed_annots_and_the_desired_custom_annots (0.00s)
--- PASS: Test_mergeStatefulSetLabelsOrAnnots/no_current_annots_present,_return_custom_annots_only (0.00s)
--- PASS: Test_mergeStatefulSetLabelsOrAnnots/no_current_labels_present,_no_custom_labels_specified,_return_empty_map#01 (0.00s)
=== RUN TestRecorderSpecs
=== RUN TestRecorderSpecs/ensure_spec_fields_are_passed_through_correctly
--- PASS: TestRecorderSpecs (0.00s)
--- PASS: TestRecorderSpecs/ensure_spec_fields_are_passed_through_correctly (0.00s)
=== RUN TestRecorder
=== RUN TestRecorder/invalid_spec_gives_an_error_condition
2025-03-01T23:32:59.879-0500 DEBUG k8s-operator/tsrecorder.go:71 starting reconcile {"Recorder": "test"}
2025-03-01T23:32:59.880-0500 DEBUG k8s-operator/tsrecorder.go:131 reconcile finished {"Recorder": "test"}
=== RUN TestRecorder/observe_Ready=true_status_condition_for_a_valid_spec
2025-03-01T23:32:59.881-0500 DEBUG k8s-operator/tsrecorder.go:71 starting reconcile {"Recorder": "test"}
2025-03-01T23:32:59.881-0500 DEBUG k8s-operator/tsrecorder.go:286 creating authkey for new Recorder {"Recorder": "test"}
2025-03-01T23:32:59.881-0500 DEBUG k8s-operator/tsrecorder.go:296 creating a new Secret for the Recorder {"Recorder": "test"}
2025-03-01T23:32:59.881-0500 DEBUG k8s-operator/tsrecorder.go:216 no Tailscale hostname known yet, waiting for Recorder pod to finish auth {"Recorder": "test"}
2025-03-01T23:32:59.881-0500 INFO k8s-operator/tsrecorder.go:148 Recorder resources synced {"Recorder": "test"}
2025-03-01T23:32:59.881-0500 INFO k8s-operator/conditions.go:122 Status change for condition RecorderReady from False to True {"Recorder": "test"}
2025-03-01T23:32:59.881-0500 DEBUG k8s-operator/tsrecorder.go:149 reconcile finished {"Recorder": "test"}
2025-03-01T23:32:59.881-0500 INFO k8s-operator/conditions.go:122 Status change for condition RecorderReady from False to True
=== RUN TestRecorder/populate_node_info_in_state_secret,_and_see_it_appear_in_status
2025-03-01T23:32:59.883-0500 DEBUG k8s-operator/tsrecorder.go:71 starting reconcile {"Recorder": "test"}
2025-03-01T23:32:59.883-0500 DEBUG k8s-operator/tsrecorder.go:278 auth Secret test already exists {"Recorder": "test"}
2025-03-01T23:32:59.883-0500 INFO k8s-operator/tsrecorder.go:148 Recorder resources synced {"Recorder": "test"}
2025-03-01T23:32:59.883-0500 DEBUG k8s-operator/tsrecorder.go:149 reconcile finished {"Recorder": "test"}
=== RUN TestRecorder/delete_the_Recorder_and_observe_cleanup
2025-03-01T23:32:59.884-0500 DEBUG k8s-operator/tsrecorder.go:71 starting reconcile {"Recorder": "test"}
2025-03-01T23:32:59.884-0500 DEBUG k8s-operator/tsrecorder.go:83 Recorder is being deleted, cleaning up resources {"Recorder": "test"}
2025-03-01T23:32:59.884-0500 DEBUG k8s-operator/tsrecorder.go:246 deleting device nodeid-123 from control {"Recorder": "test"}
2025-03-01T23:32:59.884-0500 DEBUG k8s-operator/tsrecorder.go:255 device nodeid-123 deleted from control {"Recorder": "test"}
2025-03-01T23:32:59.884-0500 INFO k8s-operator/tsrecorder.go:262 cleaned up Recorder resources {"Recorder": "test"}
2025-03-01T23:32:59.884-0500 DEBUG k8s-operator/tsrecorder.go:101 reconcile finished {"Recorder": "test"}
--- PASS: TestRecorder (0.01s)
--- PASS: TestRecorder/invalid_spec_gives_an_error_condition (0.00s)
--- PASS: TestRecorder/observe_Ready=true_status_condition_for_a_valid_spec (0.00s)
--- PASS: TestRecorder/populate_node_info_in_state_secret,_and_see_it_appear_in_status (0.00s)
--- PASS: TestRecorder/delete_the_Recorder_and_observe_cleanup (0.00s)
PASS
ok tailscale.com/cmd/k8s-operator 1.276s
=== RUN TestIngress
ingress_test.go:25: TestIngress requires credentials for a tailscale client
--- SKIP: TestIngress (0.00s)
=== RUN TestProxy
proxy_test.go:28: TestProxy requires credentials for a tailscale client
--- SKIP: TestProxy (0.00s)
PASS
ok tailscale.com/cmd/k8s-operator/e2e 0.193s
=== RUN Test_generate
main_test.go:35: error packaging Helm chart: fork/exec /magus/work/usr/mports/security/tailscale/work/github.com/tailscale/tailscale@v1.80.0/tool/helm: permission denied
2025/03/01 23:32:58 Cleaning up CRD from Helm templates
--- FAIL: Test_generate (0.01s)
FAIL
FAIL tailscale.com/cmd/k8s-operator/generate 0.160s
=== RUN TestTCPRoundRobinHandler
--- PASS: TestTCPRoundRobinHandler (0.00s)
=== RUN TestTCPSNIHandler
--- PASS: TestTCPSNIHandler (0.00s)
=== RUN TestMakeConnectorsFromConfig
=== RUN TestMakeConnectorsFromConfig/empty
=== RUN TestMakeConnectorsFromConfig/DNAT
=== RUN TestMakeConnectorsFromConfig/SNIProxy
--- PASS: TestMakeConnectorsFromConfig (0.00s)
--- PASS: TestMakeConnectorsFromConfig/empty (0.00s)
--- PASS: TestMakeConnectorsFromConfig/DNAT (0.00s)
--- PASS: TestMakeConnectorsFromConfig/SNIProxy (0.00s)
=== RUN TestPortForwardingArguments
--- PASS: TestPortForwardingArguments (0.00s)
=== RUN TestSNIProxyWithNetmapConfig
sniproxy_test.go:75: DERP httpsrv listener: 127.0.0.1:54487
sniproxy_test.go:87: testcontrol listening on http://127.0.0.1:23416
2025/03/01 23:33:00 tsnet starting with hostname "snitest", varRoot "/tmp/TestSNIProxyWithNetmapConfig1036940193/001/snitest"
2025/03/01 23:33:00 LocalBackend state is NeedsLogin; running StartLoginInteractive...
2025/03/01 23:33:00 tsnet starting with hostname "client", varRoot "/tmp/TestSNIProxyWithNetmapConfig1036940193/002/client"
2025/03/01 23:33:00 LocalBackend state is NeedsLogin; running StartLoginInteractive...
2025/03/01 23:33:00 installed app connector config: map[]
2025/03/01 23:33:01 installed app connector config: map[nic_test:{Handlers:map[{Dest:100.64.0.1/32 Matching:tcp:36058}:0xc000231480]}]
2025/03/01 23:33:01 installed app connector config: map[nic_test:{Handlers:map[{Dest:100.64.0.1/32 Matching:tcp:36058}:0xc0002b9240]}]
2025/03/01 23:33:01 installed app connector config: map[nic_test:{Handlers:map[{Dest:100.64.0.1/32 Matching:tcp:36058}:0xc0005845c0]}]
2025/03/01 23:33:01 installed app connector config: map[nic_test:{Handlers:map[{Dest:100.64.0.1/32 Matching:tcp:36058}:0xc0008aae40]}]
2025/03/01 23:33:01 installed app connector config: map[nic_test:{Handlers:map[{Dest:100.64.0.1/32 Matching:tcp:36058}:0xc000ca1a00]}]
2025/03/01 23:33:01 installed app connector config: map[nic_test:{Handlers:map[{Dest:100.64.0.1/32 Matching:tcp:36058}:0xc0005843c0]}]
2025/03/01 23:33:01 serveDNS accept: tsnet: use of closed network connection
stuntest.go:65: STUN server shutdown
--- PASS: TestSNIProxyWithNetmapConfig (1.14s)
=== RUN TestSNIProxyWithFlagConfig
sniproxy_test.go:75: DERP httpsrv listener: 127.0.0.1:13077
sniproxy_test.go:87: testcontrol listening on http://127.0.0.1:13079
2025/03/01 23:33:01 tsnet starting with hostname "snitest", varRoot "/tmp/TestSNIProxyWithFlagConfig286096954/001/snitest"
2025/03/01 23:33:01 LocalBackend state is NeedsLogin; running StartLoginInteractive...
2025/03/01 23:33:02 tsnet starting with hostname "client", varRoot "/tmp/TestSNIProxyWithFlagConfig286096954/002/client"
2025/03/01 23:33:02 LocalBackend state is NeedsLogin; running StartLoginInteractive...
2025/03/01 23:33:02 installed app connector config: map[flags:{Handlers:map[]} flags_0:{Handlers:map[{Dest:100.64.0.1/32 Matching:tcp:13080}:0xc0001e5980 {Dest:fd7a:115c:a1e0:ab12:4843:cd96:6240:1/128 Matching:tcp:13080}:0xc0001e5980]}]
2025/03/01 23:33:02 installed app connector config: map[flags:{Handlers:map[]} flags_0:{Handlers:map[{Dest:100.64.0.1/32 Matching:tcp:13080}:0xc000a750c0 {Dest:fd7a:115c:a1e0:ab12:4843:cd96:6240:1/128 Matching:tcp:13080}:0xc000a750c0]}]
2025/03/01 23:33:02 installed app connector config: map[flags:{Handlers:map[]} flags_0:{Handlers:map[{Dest:100.64.0.1/32 Matching:tcp:13080}:0xc000631ac0 {Dest:fd7a:115c:a1e0:ab12:4843:cd96:6240:1/128 Matching:tcp:13080}:0xc000631ac0]}]
2025/03/01 23:33:02 installed app connector config: map[flags:{Handlers:map[]} flags_0:{Handlers:map[{Dest:100.64.0.1/32 Matching:tcp:13080}:0xc000eba600 {Dest:fd7a:115c:a1e0:ab12:4843:cd96:6240:1/128 Matching:tcp:13080}:0xc000eba600]}]
2025/03/01 23:33:02 installed app connector config: map[flags:{Handlers:map[]} flags_0:{Handlers:map[{Dest:100.64.0.1/32 Matching:tcp:13080}:0xc001058900 {Dest:fd7a:115c:a1e0:ab12:4843:cd96:6240:1/128 Matching:tcp:13080}:0xc001058900]}]
2025/03/01 23:33:02 installed app connector config: map[flags:{Handlers:map[]} flags_0:{Handlers:map[{Dest:100.64.0.1/32 Matching:tcp:13080}:0xc000de8040 {Dest:fd7a:115c:a1e0:ab12:4843:cd96:6240:1/128 Matching:tcp:13080}:0xc000de8040]}]
2025/03/01 23:33:02 installed app connector config: map[flags:{Handlers:map[]} flags_0:{Handlers:map[{Dest:100.64.0.1/32 Matching:tcp:13080}:0xc000677080 {Dest:fd7a:115c:a1e0:ab12:4843:cd96:6240:1/128 Matching:tcp:13080}:0xc000677080]}]
2025/03/01 23:33:02 installed app connector config: map[flags:{Handlers:map[]} flags_0:{Handlers:map[{Dest:100.64.0.1/32 Matching:tcp:13080}:0xc000ebb940 {Dest:fd7a:115c:a1e0:ab12:4843:cd96:6240:1/128 Matching:tcp:13080}:0xc000ebb940]}]
2025/03/01 23:33:02 serveDNS accept: tsnet: use of closed network connection
stuntest.go:65: STUN server shutdown
--- PASS: TestSNIProxyWithFlagConfig (1.14s)
PASS
ok tailscale.com/cmd/sniproxy 2.612s
? tailscale.com/cmd/stunstamp [no test files]
? tailscale.com/cmd/sync-containers [no test files]
? tailscale.com/cmd/systray [no test files]
=== RUN TestDeps
tailscale_test.go:25: got 363 dependencies
--- PASS: TestDeps (2.34s)
PASS
ok tailscale.com/cmd/tailscale 2.391s
? tailscale.com/cmd/tailscale/cli/ffcomplete [no test files]
? tailscale.com/cmd/tailscaled/childproc [no test files]
? tailscale.com/cmd/testcontrol [no test files]
? tailscale.com/cmd/tl-longchain [no test files]
? tailscale.com/cmd/tsconnect [no test files]
? tailscale.com/cmd/tsidp [no test files]
? tailscale.com/cmd/viewer/tests [no test files]
? tailscale.com/cmd/tta [no test files]
=== RUN TestPanicIfAnyEnvCheckedInInit
--- PASS: TestPanicIfAnyEnvCheckedInInit (0.00s)
=== RUN TestShortUsage
--- PASS: TestShortUsage (0.00s)
=== RUN TestCutWord
--- PASS: TestCutWord (0.00s)
=== RUN TestUpdateMaskedPrefsFromUpFlag
--- PASS: TestUpdateMaskedPrefsFromUpFlag (0.00s)
=== RUN TestCheckForAccidentalSettingReverts
=== RUN TestCheckForAccidentalSettingReverts/bare_up_means_up
=== RUN TestCheckForAccidentalSettingReverts/losing_hostname
=== RUN TestCheckForAccidentalSettingReverts/hostname_changing_explicitly
=== RUN TestCheckForAccidentalSettingReverts/hostname_changing_empty_explicitly
=== RUN TestCheckForAccidentalSettingReverts/up_with_default_prefs
=== RUN TestCheckForAccidentalSettingReverts/implicit_operator_change
=== RUN TestCheckForAccidentalSettingReverts/implicit_operator_matches_shell_user
=== RUN TestCheckForAccidentalSettingReverts/error_advertised_routes_exit_node_removed
=== RUN TestCheckForAccidentalSettingReverts/advertised_routes_exit_node_removed_explicit
=== RUN TestCheckForAccidentalSettingReverts/advertised_routes_includes_the_0_routes
=== RUN TestCheckForAccidentalSettingReverts/advertise_exit_node
=== RUN TestCheckForAccidentalSettingReverts/advertise_exit_node_over_existing_routes
=== RUN TestCheckForAccidentalSettingReverts/advertise_exit_node_over_existing_routes_and_exit_node
=== RUN TestCheckForAccidentalSettingReverts/exit_node_clearing
=== RUN TestCheckForAccidentalSettingReverts/remove_all_implicit
=== RUN TestCheckForAccidentalSettingReverts/remove_all_implicit_except_hostname
=== RUN TestCheckForAccidentalSettingReverts/loggedout_is_implicit
=== RUN TestCheckForAccidentalSettingReverts/make_windows_exit_node
=== RUN TestCheckForAccidentalSettingReverts/ignore_netfilter_change_non_linux
=== RUN TestCheckForAccidentalSettingReverts/operator_losing_routes_step1
=== RUN TestCheckForAccidentalSettingReverts/operator_losing_routes_step2
=== RUN TestCheckForAccidentalSettingReverts/errors_preserve_explicit_flags
=== RUN TestCheckForAccidentalSettingReverts/error_exit_node_omit_with_ip_pref
=== RUN TestCheckForAccidentalSettingReverts/error_exit_node_omit_with_id_pref
=== RUN TestCheckForAccidentalSettingReverts/error_exit_node_and_allow_lan_omit_with_id_pref
=== RUN TestCheckForAccidentalSettingReverts/ignore_login_server_synonym
=== RUN TestCheckForAccidentalSettingReverts/ignore_login_server_synonym_on_other_change
up.go:322: netfilter=off; configure iptables yourself.
=== RUN TestCheckForAccidentalSettingReverts/synology_permit_omit_accept_routes
=== RUN TestCheckForAccidentalSettingReverts/not_synology_dont_permit_omit_accept_routes
=== RUN TestCheckForAccidentalSettingReverts/profile_name_ignored_in_up
=== RUN TestCheckForAccidentalSettingReverts/losing_posture_checking
--- PASS: TestCheckForAccidentalSettingReverts (0.01s)
--- PASS: TestCheckForAccidentalSettingReverts/bare_up_means_up (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/losing_hostname (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/hostname_changing_explicitly (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/hostname_changing_empty_explicitly (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/up_with_default_prefs (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/implicit_operator_change (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/implicit_operator_matches_shell_user (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/error_advertised_routes_exit_node_removed (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/advertised_routes_exit_node_removed_explicit (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/advertised_routes_includes_the_0_routes (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/advertise_exit_node (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/advertise_exit_node_over_existing_routes (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/advertise_exit_node_over_existing_routes_and_exit_node (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/exit_node_clearing (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/remove_all_implicit (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/remove_all_implicit_except_hostname (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/loggedout_is_implicit (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/make_windows_exit_node (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/ignore_netfilter_change_non_linux (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/operator_losing_routes_step1 (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/operator_losing_routes_step2 (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/errors_preserve_explicit_flags (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/error_exit_node_omit_with_ip_pref (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/error_exit_node_omit_with_id_pref (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/error_exit_node_and_allow_lan_omit_with_id_pref (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/ignore_login_server_synonym (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/ignore_login_server_synonym_on_other_change (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/synology_permit_omit_accept_routes (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/not_synology_dont_permit_omit_accept_routes (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/profile_name_ignored_in_up (0.00s)
--- PASS: TestCheckForAccidentalSettingReverts/losing_posture_checking (0.00s)
=== RUN TestPrefsFromUpArgs
=== RUN TestPrefsFromUpArgs/default_linux
=== RUN TestPrefsFromUpArgs/default_windows
=== RUN TestPrefsFromUpArgs/advertise_default_route
=== RUN TestPrefsFromUpArgs/error_advertise_route_invalid_ip
=== RUN TestPrefsFromUpArgs/error_advertise_route_unmasked_bits
=== RUN TestPrefsFromUpArgs/error_exit_node_bad_ip
=== RUN TestPrefsFromUpArgs/error_exit_node_allow_lan_without_exit_node
=== RUN TestPrefsFromUpArgs/error_tag_prefix
=== RUN TestPrefsFromUpArgs/error_long_hostname
=== RUN TestPrefsFromUpArgs/error_long_label
=== RUN TestPrefsFromUpArgs/error_linux_netfilter_empty
=== RUN TestPrefsFromUpArgs/error_linux_netfilter_bogus
=== RUN TestPrefsFromUpArgs/error_exit_node_ip_is_self_ip
=== RUN TestPrefsFromUpArgs/warn_linux_netfilter_nodivert
=== RUN TestPrefsFromUpArgs/warn_linux_netfilter_off
=== RUN TestPrefsFromUpArgs/via_route_good
=== RUN TestPrefsFromUpArgs/via_route_good_16_bit
=== RUN TestPrefsFromUpArgs/via_route_short_prefix
=== RUN TestPrefsFromUpArgs/via_route_short_reserved_siteid
--- PASS: TestPrefsFromUpArgs (0.00s)
--- PASS: TestPrefsFromUpArgs/default_linux (0.00s)
--- PASS: TestPrefsFromUpArgs/default_windows (0.00s)
--- PASS: TestPrefsFromUpArgs/advertise_default_route (0.00s)
--- PASS: TestPrefsFromUpArgs/error_advertise_route_invalid_ip (0.00s)
--- PASS: TestPrefsFromUpArgs/error_advertise_route_unmasked_bits (0.00s)
--- PASS: TestPrefsFromUpArgs/error_exit_node_bad_ip (0.00s)
--- PASS: TestPrefsFromUpArgs/error_exit_node_allow_lan_without_exit_node (0.00s)
--- PASS: TestPrefsFromUpArgs/error_tag_prefix (0.00s)
--- PASS: TestPrefsFromUpArgs/error_long_hostname (0.00s)
--- PASS: TestPrefsFromUpArgs/error_long_label (0.00s)
--- PASS: TestPrefsFromUpArgs/error_linux_netfilter_empty (0.00s)
--- PASS: TestPrefsFromUpArgs/error_linux_netfilter_bogus (0.00s)
--- PASS: TestPrefsFromUpArgs/error_exit_node_ip_is_self_ip (0.00s)
--- PASS: TestPrefsFromUpArgs/warn_linux_netfilter_nodivert (0.00s)
--- PASS: TestPrefsFromUpArgs/warn_linux_netfilter_off (0.00s)
--- PASS: TestPrefsFromUpArgs/via_route_good (0.00s)
--- PASS: TestPrefsFromUpArgs/via_route_good_16_bit (0.00s)
--- PASS: TestPrefsFromUpArgs/via_route_short_prefix (0.00s)
--- PASS: TestPrefsFromUpArgs/via_route_short_reserved_siteid (0.00s)
=== RUN TestPrefFlagMapping
--- PASS: TestPrefFlagMapping (0.00s)
=== RUN TestFlagAppliesToOS
--- PASS: TestFlagAppliesToOS (0.00s)
=== RUN TestUpdatePrefs
=== RUN TestUpdatePrefs/bare_up_means_up
=== RUN TestUpdatePrefs/just_up
=== RUN TestUpdatePrefs/just_edit
=== RUN TestUpdatePrefs/just_edit_reset
=== RUN TestUpdatePrefs/control_synonym
=== RUN TestUpdatePrefs/change_login_server
=== RUN TestUpdatePrefs/change_tags
=== RUN TestUpdatePrefs/explicit_empty_operator
=== RUN TestUpdatePrefs/enable_ssh
=== RUN TestUpdatePrefs/disable_ssh
=== RUN TestUpdatePrefs/disable_ssh_over_ssh_no_risk
=== RUN TestUpdatePrefs/enable_ssh_over_ssh_no_risk
=== RUN TestUpdatePrefs/enable_ssh_over_ssh
=== RUN TestUpdatePrefs/disable_ssh_over_ssh
=== RUN TestUpdatePrefs/force_reauth_over_ssh_no_risk
=== RUN TestUpdatePrefs/force_reauth_over_ssh
=== RUN TestUpdatePrefs/advertise_connector
=== RUN TestUpdatePrefs/no_advertise_connector
--- PASS: TestUpdatePrefs (0.01s)
--- PASS: TestUpdatePrefs/bare_up_means_up (0.00s)
--- PASS: TestUpdatePrefs/just_up (0.00s)
--- PASS: TestUpdatePrefs/just_edit (0.00s)
--- PASS: TestUpdatePrefs/just_edit_reset (0.00s)
--- PASS: TestUpdatePrefs/control_synonym (0.00s)
--- PASS: TestUpdatePrefs/change_login_server (0.00s)
--- PASS: TestUpdatePrefs/change_tags (0.00s)
--- PASS: TestUpdatePrefs/explicit_empty_operator (0.00s)
--- PASS: TestUpdatePrefs/enable_ssh (0.00s)
--- PASS: TestUpdatePrefs/disable_ssh (0.00s)
--- PASS: TestUpdatePrefs/disable_ssh_over_ssh_no_risk (0.00s)
--- PASS: TestUpdatePrefs/enable_ssh_over_ssh_no_risk (0.00s)
--- PASS: TestUpdatePrefs/enable_ssh_over_ssh (0.00s)
--- PASS: TestUpdatePrefs/disable_ssh_over_ssh (0.00s)
--- PASS: TestUpdatePrefs/force_reauth_over_ssh_no_risk (0.00s)
--- PASS: TestUpdatePrefs/force_reauth_over_ssh (0.00s)
--- PASS: TestUpdatePrefs/advertise_connector (0.00s)
--- PASS: TestUpdatePrefs/no_advertise_connector (0.00s)
=== RUN TestCleanUpArgs
--- PASS: TestCleanUpArgs (0.00s)
=== RUN TestUpWorthWarning
--- PASS: TestUpWorthWarning (0.00s)
=== RUN TestParseNLArgs
=== RUN TestParseNLArgs/empty
=== RUN TestParseNLArgs/key_no_votes
=== RUN TestParseNLArgs/key_with_votes
=== RUN TestParseNLArgs/disablements
=== RUN TestParseNLArgs/disablements_not_allowed
=== RUN TestParseNLArgs/keys_not_allowed
--- PASS: TestParseNLArgs (0.01s)
--- PASS: TestParseNLArgs/empty (0.00s)
--- PASS: TestParseNLArgs/key_no_votes (0.00s)
--- PASS: TestParseNLArgs/key_with_votes (0.00s)
--- PASS: TestParseNLArgs/disablements (0.00s)
--- PASS: TestParseNLArgs/disablements_not_allowed (0.00s)
--- PASS: TestParseNLArgs/keys_not_allowed (0.00s)
=== RUN TestHelpAlias
--- PASS: TestHelpAlias (0.00s)
=== RUN TestDocs
=== RUN TestDocs/tailscale
=== RUN TestDocs/tailscale/up
=== RUN TestDocs/tailscale/down
=== RUN TestDocs/tailscale/set
=== RUN TestDocs/tailscale/login
=== RUN TestDocs/tailscale/logout
=== RUN TestDocs/tailscale/switch
=== RUN TestDocs/tailscale/configure
=== RUN TestDocs/tailscale/configure/kubeconfig
=== RUN TestDocs/tailscale/syspolicy
=== RUN TestDocs/tailscale/syspolicy/list
=== RUN TestDocs/tailscale/syspolicy/reload
=== RUN TestDocs/tailscale/netcheck
=== RUN TestDocs/tailscale/ip
=== RUN TestDocs/tailscale/dns
=== RUN TestDocs/tailscale/dns/status
=== RUN TestDocs/tailscale/dns/query
=== RUN TestDocs/tailscale/status
=== RUN TestDocs/tailscale/metrics
=== RUN TestDocs/tailscale/metrics/print
=== RUN TestDocs/tailscale/metrics/write
=== RUN TestDocs/tailscale/ping
=== RUN TestDocs/tailscale/nc
=== RUN TestDocs/tailscale/ssh
=== RUN TestDocs/tailscale/funnel
=== RUN TestDocs/tailscale/funnel/status
=== RUN TestDocs/tailscale/funnel/reset
=== RUN TestDocs/tailscale/serve
=== RUN TestDocs/tailscale/serve/status
=== RUN TestDocs/tailscale/serve/reset
=== RUN TestDocs/tailscale/version
=== RUN TestDocs/tailscale/web
=== RUN TestDocs/tailscale/file
=== RUN TestDocs/tailscale/file/cp
=== RUN TestDocs/tailscale/file/get
=== RUN TestDocs/tailscale/bugreport
=== RUN TestDocs/tailscale/cert
=== RUN TestDocs/tailscale/lock
=== RUN TestDocs/tailscale/lock/init
=== RUN TestDocs/tailscale/lock/status
=== RUN TestDocs/tailscale/lock/add
=== RUN TestDocs/tailscale/lock/remove
=== RUN TestDocs/tailscale/lock/sign
=== RUN TestDocs/tailscale/lock/disable
=== RUN TestDocs/tailscale/lock/disablement-kdf
=== RUN TestDocs/tailscale/lock/log
=== RUN TestDocs/tailscale/lock/local-disable
=== RUN TestDocs/tailscale/lock/revoke-keys
=== RUN TestDocs/tailscale/licenses
=== RUN TestDocs/tailscale/exit-node
=== RUN TestDocs/tailscale/exit-node/list
=== RUN TestDocs/tailscale/exit-node/suggest
=== RUN TestDocs/tailscale/update
=== RUN TestDocs/tailscale/whois
=== RUN TestDocs/tailscale/debug
=== RUN TestDocs/tailscale/debug/derp-map
=== RUN TestDocs/tailscale/debug/component-logs
=== RUN TestDocs/tailscale/debug/daemon-goroutines
=== RUN TestDocs/tailscale/debug/daemon-logs
=== RUN TestDocs/tailscale/debug/metrics
=== RUN TestDocs/tailscale/debug/env
=== RUN TestDocs/tailscale/debug/stat
=== RUN TestDocs/tailscale/debug/hostinfo
=== RUN TestDocs/tailscale/debug/local-creds
=== RUN TestDocs/tailscale/debug/restun
=== RUN TestDocs/tailscale/debug/rebind
=== RUN TestDocs/tailscale/debug/derp-set-on-demand
=== RUN TestDocs/tailscale/debug/derp-unset-on-demand
=== RUN TestDocs/tailscale/debug/break-tcp-conns
=== RUN TestDocs/tailscale/debug/break-derp-conns
=== RUN TestDocs/tailscale/debug/pick-new-derp
=== RUN TestDocs/tailscale/debug/force-prefer-derp
=== RUN TestDocs/tailscale/debug/force-netmap-update
=== RUN TestDocs/tailscale/debug/reload-config
=== RUN TestDocs/tailscale/debug/control-knobs
=== RUN TestDocs/tailscale/debug/prefs
=== RUN TestDocs/tailscale/debug/watch-ipn
=== RUN TestDocs/tailscale/debug/netmap
=== RUN TestDocs/tailscale/debug/via
=== RUN TestDocs/tailscale/debug/ts2021
=== RUN TestDocs/tailscale/debug/set-expire
=== RUN TestDocs/tailscale/debug/dev-store-set
=== RUN TestDocs/tailscale/debug/derp
=== RUN TestDocs/tailscale/debug/capture
=== RUN TestDocs/tailscale/debug/portmap
=== RUN TestDocs/tailscale/debug/peer-endpoint-changes
=== RUN TestDocs/tailscale/debug/dial-types
=== RUN TestDocs/tailscale/debug/resolve
=== RUN TestDocs/tailscale/debug/go-buildinfo
=== RUN TestDocs/tailscale/drive
=== RUN TestDocs/tailscale/drive/share
=== RUN TestDocs/tailscale/drive/rename
=== RUN TestDocs/tailscale/drive/unshare
=== RUN TestDocs/tailscale/drive/list
=== RUN TestDocs/tailscale/id-token
=== RUN TestDocs/tailscale/completion
=== RUN TestDocs/tailscale/completion/bash
=== RUN TestDocs/tailscale/completion/zsh
=== RUN TestDocs/tailscale/completion/fish
=== RUN TestDocs/tailscale/completion/powershell
=== RUN TestDocs/tailscale/completion/__complete
--- PASS: TestDocs (0.01s)
--- PASS: TestDocs/tailscale (0.01s)
--- PASS: TestDocs/tailscale/up (0.00s)
--- PASS: TestDocs/tailscale/down (0.00s)
--- PASS: TestDocs/tailscale/set (0.00s)
--- PASS: TestDocs/tailscale/login (0.00s)
--- PASS: TestDocs/tailscale/logout (0.00s)
--- PASS: TestDocs/tailscale/switch (0.00s)
--- PASS: TestDocs/tailscale/configure (0.00s)
--- PASS: TestDocs/tailscale/configure/kubeconfig (0.00s)
--- PASS: TestDocs/tailscale/syspolicy (0.00s)
--- PASS: TestDocs/tailscale/syspolicy/list (0.00s)
--- PASS: TestDocs/tailscale/syspolicy/reload (0.00s)
--- PASS: TestDocs/tailscale/netcheck (0.00s)
--- PASS: TestDocs/tailscale/ip (0.00s)
--- PASS: TestDocs/tailscale/dns (0.00s)
--- PASS: TestDocs/tailscale/dns/status (0.00s)
--- PASS: TestDocs/tailscale/dns/query (0.00s)
--- PASS: TestDocs/tailscale/status (0.00s)
--- PASS: TestDocs/tailscale/metrics (0.00s)
--- PASS: TestDocs/tailscale/metrics/print (0.00s)
--- PASS: TestDocs/tailscale/metrics/write (0.00s)
--- PASS: TestDocs/tailscale/ping (0.00s)
--- PASS: TestDocs/tailscale/nc (0.00s)
--- PASS: TestDocs/tailscale/ssh (0.00s)
--- PASS: TestDocs/tailscale/funnel (0.00s)
--- PASS: TestDocs/tailscale/funnel/status (0.00s)
--- PASS: TestDocs/tailscale/funnel/reset (0.00s)
--- PASS: TestDocs/tailscale/serve (0.00s)
--- PASS: TestDocs/tailscale/serve/status (0.00s)
--- PASS: TestDocs/tailscale/serve/reset (0.00s)
--- PASS: TestDocs/tailscale/version (0.00s)
--- PASS: TestDocs/tailscale/web (0.00s)
--- PASS: TestDocs/tailscale/file (0.00s)
--- PASS: TestDocs/tailscale/file/cp (0.00s)
--- PASS: TestDocs/tailscale/file/get (0.00s)
--- PASS: TestDocs/tailscale/bugreport (0.00s)
--- PASS: TestDocs/tailscale/cert (0.00s)
--- PASS: TestDocs/tailscale/lock (0.00s)
--- PASS: TestDocs/tailscale/lock/init (0.00s)
--- PASS: TestDocs/tailscale/lock/status (0.00s)
--- PASS: TestDocs/tailscale/lock/add (0.00s)
--- PASS: TestDocs/tailscale/lock/remove (0.00s)
--- PASS: TestDocs/tailscale/lock/sign (0.00s)
--- PASS: TestDocs/tailscale/lock/disable (0.00s)
--- PASS: TestDocs/tailscale/lock/disablement-kdf (0.00s)
--- PASS: TestDocs/tailscale/lock/log (0.00s)
--- PASS: TestDocs/tailscale/lock/local-disable (0.00s)
--- PASS: TestDocs/tailscale/lock/revoke-keys (0.00s)
--- PASS: TestDocs/tailscale/licenses (0.00s)
--- PASS: TestDocs/tailscale/exit-node (0.00s)
--- PASS: TestDocs/tailscale/exit-node/list (0.00s)
--- PASS: TestDocs/tailscale/exit-node/suggest (0.00s)
--- PASS: TestDocs/tailscale/update (0.00s)
--- PASS: TestDocs/tailscale/whois (0.00s)
--- PASS: TestDocs/tailscale/debug (0.00s)
--- PASS: TestDocs/tailscale/debug/derp-map (0.00s)
--- PASS: TestDocs/tailscale/debug/component-logs (0.00s)
--- PASS: TestDocs/tailscale/debug/daemon-goroutines (0.00s)
--- PASS: TestDocs/tailscale/debug/daemon-logs (0.00s)
--- PASS: TestDocs/tailscale/debug/metrics (0.00s)
--- PASS: TestDocs/tailscale/debug/env (0.00s)
--- PASS: TestDocs/tailscale/debug/stat (0.00s)
--- PASS: TestDocs/tailscale/debug/hostinfo (0.00s)
--- PASS: TestDocs/tailscale/debug/local-creds (0.00s)
--- PASS: TestDocs/tailscale/debug/restun (0.00s)
--- PASS: TestDocs/tailscale/debug/rebind (0.00s)
--- PASS: TestDocs/tailscale/debug/derp-set-on-demand (0.00s)
--- PASS: TestDocs/tailscale/debug/derp-unset-on-demand (0.00s)
--- PASS: TestDocs/tailscale/debug/break-tcp-conns (0.00s)
--- PASS: TestDocs/tailscale/debug/break-derp-conns (0.00s)
--- PASS: TestDocs/tailscale/debug/pick-new-derp (0.00s)
--- PASS: TestDocs/tailscale/debug/force-prefer-derp (0.00s)
--- PASS: TestDocs/tailscale/debug/force-netmap-update (0.00s)
--- PASS: TestDocs/tailscale/debug/reload-config (0.00s)
--- PASS: TestDocs/tailscale/debug/control-knobs (0.00s)
--- PASS: TestDocs/tailscale/debug/prefs (0.00s)
--- PASS: TestDocs/tailscale/debug/watch-ipn (0.00s)
--- PASS: TestDocs/tailscale/debug/netmap (0.00s)
--- PASS: TestDocs/tailscale/debug/via (0.00s)
--- PASS: TestDocs/tailscale/debug/ts2021 (0.00s)
--- PASS: TestDocs/tailscale/debug/set-expire (0.00s)
--- PASS: TestDocs/tailscale/debug/dev-store-set (0.00s)
--- PASS: TestDocs/tailscale/debug/derp (0.00s)
--- PASS: TestDocs/tailscale/debug/capture (0.00s)
--- PASS: TestDocs/tailscale/debug/portmap (0.00s)
--- PASS: TestDocs/tailscale/debug/peer-endpoint-changes (0.00s)
--- PASS: TestDocs/tailscale/debug/dial-types (0.00s)
--- PASS: TestDocs/tailscale/debug/resolve (0.00s)
--- PASS: TestDocs/tailscale/debug/go-buildinfo (0.00s)
--- PASS: TestDocs/tailscale/drive (0.00s)
--- PASS: TestDocs/tailscale/drive/share (0.00s)
--- PASS: TestDocs/tailscale/drive/rename (0.00s)
--- PASS: TestDocs/tailscale/drive/unshare (0.00s)
--- PASS: TestDocs/tailscale/drive/list (0.00s)
--- PASS: TestDocs/tailscale/id-token (0.00s)
--- PASS: TestDocs/tailscale/completion (0.00s)
--- PASS: TestDocs/tailscale/completion/bash (0.00s)
--- PASS: TestDocs/tailscale/completion/zsh (0.00s)
--- PASS: TestDocs/tailscale/completion/fish (0.00s)
--- PASS: TestDocs/tailscale/completion/powershell (0.00s)
--- PASS: TestDocs/tailscale/completion/__complete (0.00s)
=== RUN TestDeps
cli_test.go:1586: got 381 dependencies
--- PASS: TestDeps (3.86s)
=== RUN TestDepsNoCapture
cli_test.go:1598: got 380 dependencies
--- PASS: TestDepsNoCapture (1.64s)
=== RUN TestKubeconfig
=== RUN TestKubeconfig/invalid-yaml
=== RUN TestKubeconfig/invalid-cfg
=== RUN TestKubeconfig/empty
=== RUN TestKubeconfig/all_configs,_clusters,_users_have_been_deleted
=== RUN TestKubeconfig/already-configured
=== RUN TestKubeconfig/other-cluster
=== RUN TestKubeconfig/already-using-tailscale
--- PASS: TestKubeconfig (0.00s)
--- PASS: TestKubeconfig/invalid-yaml (0.00s)
--- PASS: TestKubeconfig/invalid-cfg (0.00s)
--- PASS: TestKubeconfig/empty (0.00s)
--- PASS: TestKubeconfig/all_configs,_clusters,_users_have_been_deleted (0.00s)
--- PASS: TestKubeconfig/already-configured (0.00s)
--- PASS: TestKubeconfig/other-cluster (0.00s)
--- PASS: TestKubeconfig/already-using-tailscale (0.00s)
=== RUN Test_listCerts
=== RUN Test_listCerts/normal_response
=== RUN Test_listCerts/call_error
=== RUN Test_listCerts/payload_decode_error
--- PASS: Test_listCerts (0.00s)
--- PASS: Test_listCerts/normal_response (0.00s)
--- PASS: Test_listCerts/call_error (0.00s)
--- PASS: Test_listCerts/payload_decode_error (0.00s)
=== RUN TestFilterFormatAndSortExitNodes
=== RUN TestFilterFormatAndSortExitNodes/without_filter
=== RUN TestFilterFormatAndSortExitNodes/with_country_filter
--- PASS: TestFilterFormatAndSortExitNodes (0.00s)
--- PASS: TestFilterFormatAndSortExitNodes/without_filter (0.00s)
--- PASS: TestFilterFormatAndSortExitNodes/with_country_filter (0.00s)
=== RUN TestSortPeersByPriority
--- PASS: TestSortPeersByPriority (0.00s)
=== RUN TestSortByCountryName
--- PASS: TestSortByCountryName (0.00s)
=== RUN TestSortByCityName
--- PASS: TestSortByCityName (0.00s)
=== RUN TestCleanMountPoint
--- PASS: TestCleanMountPoint (0.00s)
=== RUN TestServeConfigMutations
serve_legacy_test.go:699: Executing step #0, line 78: [reset]
serve_legacy_test.go:705: Executing step #1, line 79: ["funnel" "443" "on"] ...
serve_legacy_test.go:705: Executing step #2, line 83: ["funnel" "443" "on"] ...
serve_legacy_test.go:705: Executing step #3, line 87: ["funnel" "443" "off"] ...
serve_legacy_test.go:705: Executing step #4, line 91: ["funnel" "443" "off"] ...
serve_legacy_test.go:705: Executing step #5, line 95: ["funnel"] ...
serve_legacy_test.go:699: Executing step #6, line 101: [reset]
serve_legacy_test.go:705: Executing step #7, line 102: ["http" "/" "http://localhost:3000"] ...
serve_legacy_test.go:705: Executing step #8, line 113: ["http:9999" "/abc" "http://localhost:3001"] ...
serve_legacy_test.go:705: Executing step #9, line 127: ["http:9999" "/abc" "off"] ...
serve_legacy_test.go:705: Executing step #10, line 138: ["http:8080" "/abc" "http://127.0.0.1:3001"] ...
serve_legacy_test.go:699: Executing step #11, line 154: [reset]
serve_legacy_test.go:705: Executing step #12, line 155: ["https:443" "/" "http://localhost:0"] ...
serve_legacy_test.go:705: Executing step #13, line 159: ["https:443" "/" "http://localhost:65536"] ...
serve_legacy_test.go:705: Executing step #14, line 163: ["https:443" "/" "http://somehost:3000"] ...
serve_legacy_test.go:705: Executing step #15, line 167: ["https:443" "/" "httpz://127.0.0.1"] ...
serve_legacy_test.go:705: Executing step #16, line 171: ["https" "/" "http://localhost:3000"] ...
serve_legacy_test.go:705: Executing step #17, line 182: ["https:9999" "/abc" "http://localhost:3001"] ...
serve_legacy_test.go:705: Executing step #18, line 196: ["https:9999" "/abc" "off"] ...
serve_legacy_test.go:705: Executing step #19, line 207: ["https:8443" "/abc" "http://127.0.0.1:3001"] ...
serve_legacy_test.go:705: Executing step #20, line 221: ["https:10000" "/" "text:hi"] ...
serve_legacy_test.go:705: Executing step #21, line 239: ["https:443" "/foo" "off"] ...
serve_legacy_test.go:705: Executing step #22, line 244: ["https:10000" "/" "off"] ...
serve_legacy_test.go:705: Executing step #23, line 258: ["https:443" "/" "off"] ...
serve_legacy_test.go:705: Executing step #24, line 269: ["https:8443" "/abc" "off"] ...
serve_legacy_test.go:705: Executing step #25, line 273: ["https:443" "bar" "https://127.0.0.1:8443"] ...
serve_legacy_test.go:705: Executing step #26, line 284: ["https:443" "bar" "https://127.0.0.1:8443"] ...
serve_legacy_test.go:705: Executing step #27, line 288: ["reset"] ...
serve_legacy_test.go:705: Executing step #28, line 292: ["https:443" "/" "https+insecure://127.0.0.1:3001"] ...
serve_legacy_test.go:699: Executing step #29, line 303: [reset]
serve_legacy_test.go:705: Executing step #30, line 304: ["https:443" "/foo" "localhost:3000"] ...
serve_legacy_test.go:705: Executing step #31, line 315: ["https:8443" "/foo" "localhost:3000"] ...
serve_legacy_test.go:699: Executing step #32, line 329: [reset]
serve_legacy_test.go:705: Executing step #33, line 330: ["https" "/" "http://127.0.0.1:3000/foo/bar"] ...
serve_legacy_test.go:699: Executing step #34, line 343: [reset]
serve_legacy_test.go:705: Executing step #35, line 344: ["tls-terminated-tcp:443" "localhost:5432"] ...
serve_legacy_test.go:705: Executing step #36, line 348: ["tls-terminated-tcp:443" "tcp://somehost:5432"] ...
serve_legacy_test.go:705: Executing step #37, line 352: ["tls-terminated-tcp:443" "tcp://somehost:0"] ...
serve_legacy_test.go:705: Executing step #38, line 356: ["tls-terminated-tcp:443" "tcp://somehost:65536"] ...
serve_legacy_test.go:705: Executing step #39, line 360: ["tls-terminated-tcp:443" "tcp://localhost:5432"] ...
serve_legacy_test.go:705: Executing step #40, line 371: ["tls-terminated-tcp:443" "tcp://127.0.0.1:8443"] ...
serve_legacy_test.go:705: Executing step #41, line 382: ["tls-terminated-tcp:443" "tcp://127.0.0.1:8443"] ...
serve_legacy_test.go:705: Executing step #42, line 386: ["tls-terminated-tcp:443" "tcp://localhost:8444"] ...
serve_legacy_test.go:705: Executing step #43, line 397: ["tls-terminated-tcp:443" "tcp://127.0.0.1:8445"] ...
serve_legacy_test.go:699: Executing step #44, line 408: [reset]
serve_legacy_test.go:705: Executing step #45, line 409: ["tls-terminated-tcp:443" "tcp://localhost:123"] ...
serve_legacy_test.go:705: Executing step #46, line 420: ["tls-terminated-tcp:8443" "off"] ...
serve_legacy_test.go:705: Executing step #47, line 424: ["tls-terminated-tcp:443" "off"] ...
serve_legacy_test.go:699: Executing step #48, line 430: [reset]
serve_legacy_test.go:705: Executing step #49, line 431: ["https:443" "/" "text:hello"] ...
serve_legacy_test.go:699: Executing step #50, line 450: [reset]
serve_legacy_test.go:705: Executing step #51, line 452: ["https:443" "/" "/tmp/TestServeConfigMutations3044748458/001/foo"] ...
serve_legacy_test.go:705: Executing step #52, line 465: ["https:443" "/some/where" "/tmp/TestServeConfigMutations3044748458/001/subdir/file-a"] ...
serve_legacy_test.go:705: Executing step #53, line 477: ["https:443" "/" "bad/path"] ...
serve_legacy_test.go:699: Executing step #54, line 481: [reset]
serve_legacy_test.go:705: Executing step #55, line 482: ["https:443" "/" "/tmp/TestServeConfigMutations3044748458/001/subdir"] ...
serve_legacy_test.go:705: Executing step #56, line 493: ["https:443" "/" "off"] ...
serve_legacy_test.go:699: Executing step #57, line 499: [reset]
serve_legacy_test.go:705: Executing step #58, line 500: ["https:443" "/" "localhost:3000"] ...
serve_legacy_test.go:705: Executing step #59, line 511: ["funnel" "443" "on"] ...
serve_legacy_test.go:705: Executing step #60, line 523: ["https:8443" "/bar" "localhost:3001"] ...
serve_legacy_test.go:705: Executing step #61, line 538: ["funnel" "8443" "on"] ...
serve_legacy_test.go:705: Executing step #62, line 553: ["funnel" "443" "off"] ...
serve_legacy_test.go:705: Executing step #63, line 568: ["https:8443" "/bar" "off"] ...
serve_legacy_test.go:705: Executing step #64, line 580: ["tcp:8443" "tcp://localhost:5432"] ...
serve_legacy_test.go:705: Executing step #65, line 592: ["https:443" "/" "off"] ...
serve_legacy_test.go:705: Executing step #66, line 599: ["tls-terminated-tcp:8443" "off"] ...
serve_legacy_test.go:705: Executing step #67, line 605: ["funnel" "8443" "off"] ...
serve_legacy_test.go:699: Executing step #68, line 611: [reset]
serve_legacy_test.go:705: Executing step #69, line 612: ["https:443" "/dir" "/tmp/TestServeConfigMutations3044748458/001/subdir"] ...
serve_legacy_test.go:705: Executing step #70, line 623: ["https:443" "/dir" "/tmp/TestServeConfigMutations3044748458/001/foo"] ...
serve_legacy_test.go:699: Executing step #71, line 634: [reset]
serve_legacy_test.go:705: Executing step #72, line 635: ["https:443" "/dir" "/tmp/TestServeConfigMutations3044748458/001/foo"] ...
serve_legacy_test.go:705: Executing step #73, line 646: ["https:443" "/dir" "/tmp/TestServeConfigMutations3044748458/001/subdir"] ...
serve_legacy_test.go:699: Executing step #74, line 659: [reset]
serve_legacy_test.go:705: Executing step #75, line 660: ["tls-terminated-tcp:443" "tcp://localhost:5432"] ...
serve_legacy_test.go:705: Executing step #76, line 671: ["https:443" "/" "localhost:3000"] ...
serve_legacy_test.go:699: Executing step #77, line 675: [reset]
serve_legacy_test.go:705: Executing step #78, line 676: ["https:443" "/" "localhost:3000"] ...
serve_legacy_test.go:705: Executing step #79, line 687: ["tls-terminated-tcp:443" "tcp://localhost:5432"] ...
--- PASS: TestServeConfigMutations (0.00s)
=== RUN TestVerifyFunnelEnabled
=== RUN TestVerifyFunnelEnabled/enabled
=== RUN TestVerifyFunnelEnabled/fallback-to-non-interactive-flow
=== RUN TestVerifyFunnelEnabled/fallback-flow-missing-acl-rule
=== RUN TestVerifyFunnelEnabled/fallback-flow-enabled
=== RUN TestVerifyFunnelEnabled/not-allowed-to-enable
--- PASS: TestVerifyFunnelEnabled (0.00s)
--- PASS: TestVerifyFunnelEnabled/enabled (0.00s)
--- PASS: TestVerifyFunnelEnabled/fallback-to-non-interactive-flow (0.00s)
--- PASS: TestVerifyFunnelEnabled/fallback-flow-missing-acl-rule (0.00s)
--- PASS: TestVerifyFunnelEnabled/fallback-flow-enabled (0.00s)
--- PASS: TestVerifyFunnelEnabled/not-allowed-to-enable (0.00s)
=== RUN TestServeDevConfigMutations
=== RUN TestServeDevConfigMutations/using_port_number
=== RUN TestServeDevConfigMutations/funnel_background
=== RUN TestServeDevConfigMutations/serve_background
=== RUN TestServeDevConfigMutations/set_path_bg
=== RUN TestServeDevConfigMutations/http_listener
=== RUN TestServeDevConfigMutations/https_listener_valid_port
=== RUN TestServeDevConfigMutations/multiple_http_with_off
=== RUN TestServeDevConfigMutations/invalid_port_too_low
=== RUN TestServeDevConfigMutations/invalid_port_too_high
=== RUN TestServeDevConfigMutations/invalid_mount_port_too_high
=== RUN TestServeDevConfigMutations/invalid_host
=== RUN TestServeDevConfigMutations/invalid_scheme
=== RUN TestServeDevConfigMutations/turn_off_https
=== RUN TestServeDevConfigMutations/https_text_bg
=== RUN TestServeDevConfigMutations/handler_not_found
=== RUN TestServeDevConfigMutations/clean_mount
=== RUN TestServeDevConfigMutations/serve_reset
=== RUN TestServeDevConfigMutations/https_insecure
=== RUN TestServeDevConfigMutations/two_ports_same_dest
=== RUN TestServeDevConfigMutations/path_in_dest
=== RUN TestServeDevConfigMutations/unknown_host_tcp
=== RUN TestServeDevConfigMutations/tcp_port_too_low
=== RUN TestServeDevConfigMutations/tcp_port_too_high
=== RUN TestServeDevConfigMutations/tcp_shorthand
=== RUN TestServeDevConfigMutations/tls_terminated_tcp
=== RUN TestServeDevConfigMutations/tcp_off
=== RUN TestServeDevConfigMutations/text
=== RUN TestServeDevConfigMutations/path
=== RUN TestServeDevConfigMutations/bad_path
=== RUN TestServeDevConfigMutations/path_off
=== RUN TestServeDevConfigMutations/combos
=== RUN TestServeDevConfigMutations/tricky_steps
=== RUN TestServeDevConfigMutations/cannot_override_tcp_with_http
=== RUN TestServeDevConfigMutations/cannot_override_http_with_tcp
=== RUN TestServeDevConfigMutations/turn_off_multiple_handlers
=== RUN TestServeDevConfigMutations/no_http_with_funnel
serve_v2_test.go:842: flag package output: "flag provided but not defined: -http\nServe content and local servers on the internet\n\nUSAGE\n tailscale funnel \n tailscale funnel status [--json]\n tailscale funnel reset\n\nFunnel enables you to share a local server on the internet using Tailscale.\n\nTo share only within your tailnet, use `tailscale serve`\n\n can be a file, directory, text, or most commonly the location to a service running on the\nlocal machine. The location to the location service can be expressed as a port number (e.g., 3000),\na partial URL (e.g., localhost:3000), or a full URL including a path (e.g., http://localhost:3000/foo).\n\nEXAMPLES\n - Expose an HTTP server running at 127.0.0.1:3000 in the foreground:\n $ tailscale funnel 3000\n\n - Expose an HTTP server running at 127.0.0.1:3000 in the background:\n $ tailscale funnel --bg 3000\n\n - Expose an HTTPS server with invalid or self-signed certificates at https://localhost:8443\n $ tailscale funnel https+insecure://localhost:8443\n\nFor more examples and use cases visit our docs site https://tailscale.com/kb/1247/funnel-serve-use-cases\n\nSUBCOMMANDS\n status View current funnel configuration\n reset Reset current funnel config\n\nFLAGS\n --bg, --bg=false\n \tRun the command as a background process (default false)\n --https uint\n \tExpose an HTTPS server at the specified port (default mode)\n --set-path string\n \tAppends the specified path to the base URL for accessing the underlying service\n --tcp uint\n \tExpose a TCP forwarder to forward raw TCP packets at the specified port\n --tls-terminated-tcp uint\n \tExpose a TCP forwarder to forward TLS-terminated TCP packets at the specified port\n --yes, --yes=false\n \tUpdate without interactive prompts (default false)\n"
=== RUN TestServeDevConfigMutations/forground_with_bg_conflict
--- PASS: TestServeDevConfigMutations (0.48s)
--- PASS: TestServeDevConfigMutations/using_port_number (0.01s)
--- PASS: TestServeDevConfigMutations/funnel_background (0.01s)
--- PASS: TestServeDevConfigMutations/serve_background (0.01s)
--- PASS: TestServeDevConfigMutations/set_path_bg (0.00s)
--- PASS: TestServeDevConfigMutations/http_listener (0.00s)
--- PASS: TestServeDevConfigMutations/https_listener_valid_port (0.00s)
--- PASS: TestServeDevConfigMutations/multiple_http_with_off (0.00s)
--- PASS: TestServeDevConfigMutations/invalid_port_too_low (0.00s)
--- PASS: TestServeDevConfigMutations/invalid_port_too_high (0.01s)
--- PASS: TestServeDevConfigMutations/invalid_mount_port_too_high (0.00s)
--- PASS: TestServeDevConfigMutations/invalid_host (0.00s)
--- PASS: TestServeDevConfigMutations/invalid_scheme (0.00s)
--- PASS: TestServeDevConfigMutations/turn_off_https (0.00s)
--- PASS: TestServeDevConfigMutations/https_text_bg (0.00s)
--- PASS: TestServeDevConfigMutations/handler_not_found (0.00s)
--- PASS: TestServeDevConfigMutations/clean_mount (0.00s)
--- PASS: TestServeDevConfigMutations/serve_reset (0.00s)
--- PASS: TestServeDevConfigMutations/https_insecure (0.00s)
--- PASS: TestServeDevConfigMutations/two_ports_same_dest (0.03s)
--- PASS: TestServeDevConfigMutations/path_in_dest (0.01s)
--- PASS: TestServeDevConfigMutations/unknown_host_tcp (0.00s)
--- PASS: TestServeDevConfigMutations/tcp_port_too_low (0.01s)
--- PASS: TestServeDevConfigMutations/tcp_port_too_high (0.00s)
--- PASS: TestServeDevConfigMutations/tcp_shorthand (0.02s)
--- PASS: TestServeDevConfigMutations/tls_terminated_tcp (0.05s)
--- PASS: TestServeDevConfigMutations/tcp_off (0.02s)
--- PASS: TestServeDevConfigMutations/text (0.00s)
--- PASS: TestServeDevConfigMutations/path (0.02s)
--- PASS: TestServeDevConfigMutations/bad_path (0.01s)
--- PASS: TestServeDevConfigMutations/path_off (0.00s)
--- PASS: TestServeDevConfigMutations/combos (0.23s)
--- PASS: TestServeDevConfigMutations/tricky_steps (0.02s)
--- PASS: TestServeDevConfigMutations/cannot_override_tcp_with_http (0.00s)
--- PASS: TestServeDevConfigMutations/cannot_override_http_with_tcp (0.00s)
--- PASS: TestServeDevConfigMutations/turn_off_multiple_handlers (0.00s)
--- PASS: TestServeDevConfigMutations/no_http_with_funnel (0.00s)
--- PASS: TestServeDevConfigMutations/forground_with_bg_conflict (0.00s)
=== RUN TestValidateConfig
=== RUN TestValidateConfig/nil_config
=== RUN TestValidateConfig/new_bg_tcp
=== RUN TestValidateConfig/override_bg_tcp
=== RUN TestValidateConfig/override_bg_tcp#01
=== RUN TestValidateConfig/new_fg_port
=== RUN TestValidateConfig/same_fg_port
--- PASS: TestValidateConfig (0.00s)
--- PASS: TestValidateConfig/nil_config (0.00s)
--- PASS: TestValidateConfig/new_bg_tcp (0.00s)
--- PASS: TestValidateConfig/override_bg_tcp (0.00s)
--- PASS: TestValidateConfig/override_bg_tcp#01 (0.00s)
--- PASS: TestValidateConfig/new_fg_port (0.00s)
--- PASS: TestValidateConfig/same_fg_port (0.00s)
=== RUN TestSrcTypeFromFlags
=== RUN TestSrcTypeFromFlags/only_http_set
=== RUN TestSrcTypeFromFlags/only_https_set
=== RUN TestSrcTypeFromFlags/only_tcp_set
=== RUN TestSrcTypeFromFlags/only_tls-terminated-tcp_set
=== RUN TestSrcTypeFromFlags/defaults_to_https,_port_443
=== RUN TestSrcTypeFromFlags/multiple_types_set
--- PASS: TestSrcTypeFromFlags (0.00s)
--- PASS: TestSrcTypeFromFlags/only_http_set (0.00s)
--- PASS: TestSrcTypeFromFlags/only_https_set (0.00s)
--- PASS: TestSrcTypeFromFlags/only_tcp_set (0.00s)
--- PASS: TestSrcTypeFromFlags/only_tls-terminated-tcp_set (0.00s)
--- PASS: TestSrcTypeFromFlags/defaults_to_https,_port_443 (0.00s)
--- PASS: TestSrcTypeFromFlags/multiple_types_set (0.00s)
=== RUN TestCleanURLPath
=== RUN TestCleanURLPath/#00
=== RUN TestCleanURLPath//
=== RUN TestCleanURLPath//foo
=== RUN TestCleanURLPath//foo/
=== RUN TestCleanURLPath//../bar
--- PASS: TestCleanURLPath (0.00s)
--- PASS: TestCleanURLPath/#00 (0.00s)
--- PASS: TestCleanURLPath// (0.00s)
--- PASS: TestCleanURLPath//foo (0.00s)
--- PASS: TestCleanURLPath//foo/ (0.00s)
--- PASS: TestCleanURLPath//../bar (0.00s)
=== RUN TestMessageForPort
=== RUN TestMessageForPort/funnel-https
=== RUN TestMessageForPort/serve-http
--- PASS: TestMessageForPort (0.00s)
--- PASS: TestMessageForPort/funnel-https (0.00s)
--- PASS: TestMessageForPort/serve-http (0.00s)
=== RUN TestIsLegacyInvocation
=== RUN TestIsLegacyInvocation/0
=== RUN TestIsLegacyInvocation/1
=== RUN TestIsLegacyInvocation/2
=== RUN TestIsLegacyInvocation/3
=== RUN TestIsLegacyInvocation/4
=== RUN TestIsLegacyInvocation/5
=== RUN TestIsLegacyInvocation/6
=== RUN TestIsLegacyInvocation/7
=== RUN TestIsLegacyInvocation/8
=== RUN TestIsLegacyInvocation/9
=== RUN TestIsLegacyInvocation/10
=== RUN TestIsLegacyInvocation/11
=== RUN TestIsLegacyInvocation/12
=== RUN TestIsLegacyInvocation/13
=== RUN TestIsLegacyInvocation/14
--- PASS: TestIsLegacyInvocation (0.00s)
--- PASS: TestIsLegacyInvocation/0 (0.00s)
--- PASS: TestIsLegacyInvocation/1 (0.00s)
--- PASS: TestIsLegacyInvocation/2 (0.00s)
--- PASS: TestIsLegacyInvocation/3 (0.00s)
--- PASS: TestIsLegacyInvocation/4 (0.00s)
--- PASS: TestIsLegacyInvocation/5 (0.00s)
--- PASS: TestIsLegacyInvocation/6 (0.00s)
--- PASS: TestIsLegacyInvocation/7 (0.00s)
--- PASS: TestIsLegacyInvocation/8 (0.00s)
--- PASS: TestIsLegacyInvocation/9 (0.00s)
--- PASS: TestIsLegacyInvocation/10 (0.00s)
--- PASS: TestIsLegacyInvocation/11 (0.00s)
--- PASS: TestIsLegacyInvocation/12 (0.00s)
--- PASS: TestIsLegacyInvocation/13 (0.00s)
--- PASS: TestIsLegacyInvocation/14 (0.00s)
=== RUN TestCalcAdvertiseRoutesForSet
=== RUN TestCalcAdvertiseRoutesForSet/empty
=== RUN TestCalcAdvertiseRoutesForSet/advertise-exit
=== RUN TestCalcAdvertiseRoutesForSet/advertise-exit/already-routes
=== RUN TestCalcAdvertiseRoutesForSet/advertise-exit/already-exit
=== RUN TestCalcAdvertiseRoutesForSet/stop-advertise-exit
=== RUN TestCalcAdvertiseRoutesForSet/stop-advertise-exit/with-routes
=== RUN TestCalcAdvertiseRoutesForSet/advertise-routes
=== RUN TestCalcAdvertiseRoutesForSet/advertise-routes/already-exit
=== RUN TestCalcAdvertiseRoutesForSet/advertise-routes/already-diff-routes
=== RUN TestCalcAdvertiseRoutesForSet/stop-advertise-routes
=== RUN TestCalcAdvertiseRoutesForSet/stop-advertise-routes/already-exit
=== RUN TestCalcAdvertiseRoutesForSet/advertise-routes-and-exit
=== RUN TestCalcAdvertiseRoutesForSet/advertise-routes-and-exit/already-exit
=== RUN TestCalcAdvertiseRoutesForSet/advertise-routes-and-exit/already-routes
--- PASS: TestCalcAdvertiseRoutesForSet (0.00s)
--- PASS: TestCalcAdvertiseRoutesForSet/empty (0.00s)
--- PASS: TestCalcAdvertiseRoutesForSet/advertise-exit (0.00s)
--- PASS: TestCalcAdvertiseRoutesForSet/advertise-exit/already-routes (0.00s)
--- PASS: TestCalcAdvertiseRoutesForSet/advertise-exit/already-exit (0.00s)
--- PASS: TestCalcAdvertiseRoutesForSet/stop-advertise-exit (0.00s)
--- PASS: TestCalcAdvertiseRoutesForSet/stop-advertise-exit/with-routes (0.00s)
--- PASS: TestCalcAdvertiseRoutesForSet/advertise-routes (0.00s)
--- PASS: TestCalcAdvertiseRoutesForSet/advertise-routes/already-exit (0.00s)
--- PASS: TestCalcAdvertiseRoutesForSet/advertise-routes/already-diff-routes (0.00s)
--- PASS: TestCalcAdvertiseRoutesForSet/stop-advertise-routes (0.00s)
--- PASS: TestCalcAdvertiseRoutesForSet/stop-advertise-routes/already-exit (0.00s)
--- PASS: TestCalcAdvertiseRoutesForSet/advertise-routes-and-exit (0.00s)
--- PASS: TestCalcAdvertiseRoutesForSet/advertise-routes-and-exit/already-exit (0.00s)
--- PASS: TestCalcAdvertiseRoutesForSet/advertise-routes-and-exit/already-routes (0.00s)
=== RUN TestUrlOfListenAddr
=== RUN TestUrlOfListenAddr/TestLocalhost
=== RUN TestUrlOfListenAddr/TestNoHost
=== RUN TestUrlOfListenAddr/TestExplicitHost
=== RUN TestUrlOfListenAddr/TestIPv6
--- PASS: TestUrlOfListenAddr (0.00s)
--- PASS: TestUrlOfListenAddr/TestLocalhost (0.00s)
--- PASS: TestUrlOfListenAddr/TestNoHost (0.00s)
--- PASS: TestUrlOfListenAddr/TestExplicitHost (0.00s)
--- PASS: TestUrlOfListenAddr/TestIPv6 (0.00s)
PASS
ok tailscale.com/cmd/tailscale/cli 6.138s
=== RUN TestComplete
=== PAUSE TestComplete
=== CONT TestComplete
=== RUN TestComplete/deb
=== RUN TestComplete/deb+descs
=== RUN TestComplete/-
=== RUN TestComplete/--
=== RUN TestComplete/-r
=== RUN TestComplete/--r
=== RUN TestComplete/--root-str=s␣--r
=== RUN TestComplete/--␣--root
=== RUN TestComplete/--root-str␣--␣--r
=== RUN TestComplete/--root-str␣--␣--root
=== RUN TestComplete/--root-str␣--␣--␣--r
=== RUN TestComplete/--root-bool=
=== RUN TestComplete/--root-bool=t
=== RUN TestComplete/--root-bool=T
=== RUN TestComplete/debug␣--de
=== RUN TestComplete/debug␣--enum=
=== RUN TestComplete/debug␣--enum=al
=== RUN TestComplete/debug␣--level␣
=== RUN TestComplete/debug␣--enum␣b
=== RUN TestComplete/debug␣--enum␣al
=== RUN TestComplete/ping␣+flags
=== RUN TestComplete/ping␣+flags+descs
=== RUN TestComplete/ping␣
=== RUN TestComplete/ping␣j
--- PASS: TestComplete (0.00s)
--- PASS: TestComplete/deb (0.00s)
--- PASS: TestComplete/deb+descs (0.00s)
--- PASS: TestComplete/- (0.00s)
--- PASS: TestComplete/-- (0.00s)
--- PASS: TestComplete/-r (0.00s)
--- PASS: TestComplete/--r (0.00s)
--- PASS: TestComplete/--root-str=s␣--r (0.00s)
--- PASS: TestComplete/--␣--root (0.00s)
--- PASS: TestComplete/--root-str␣--␣--r (0.00s)
--- PASS: TestComplete/--root-str␣--␣--root (0.00s)
--- PASS: TestComplete/--root-str␣--␣--␣--r (0.00s)
--- PASS: TestComplete/--root-bool= (0.00s)
--- PASS: TestComplete/--root-bool=t (0.00s)
--- PASS: TestComplete/--root-bool=T (0.00s)
--- PASS: TestComplete/debug␣--de (0.00s)
--- PASS: TestComplete/debug␣--enum= (0.00s)
--- PASS: TestComplete/debug␣--enum=al (0.00s)
--- PASS: TestComplete/debug␣--level␣ (0.00s)
--- PASS: TestComplete/debug␣--enum␣b (0.00s)
--- PASS: TestComplete/debug␣--enum␣al (0.00s)
--- PASS: TestComplete/ping␣+flags (0.00s)
--- PASS: TestComplete/ping␣+flags+descs (0.00s)
--- PASS: TestComplete/ping␣ (0.00s)
--- PASS: TestComplete/ping␣j (0.00s)
PASS
ok tailscale.com/cmd/tailscale/cli/ffcomplete/internal 0.421s
=== RUN TestOmitSSH
deps_test.go:29: got 611 dependencies
--- PASS: TestOmitSSH (4.53s)
=== RUN TestNothing
--- PASS: TestNothing (0.00s)
=== RUN TestDeps
tailscaled_test.go:28: got 513 dependencies
tailscaled_test.go:39: got 623 dependencies
--- PASS: TestDeps (3.68s)
PASS
ok tailscale.com/cmd/tailscaled 8.553s
=== RUN TestSplitArgs
=== RUN TestSplitArgs/empty
=== RUN TestSplitArgs/all
=== RUN TestSplitArgs/only_pkgs
=== RUN TestSplitArgs/pkgs_and_post
=== RUN TestSplitArgs/pkgs_and_post#01
=== RUN TestSplitArgs/only_args
=== RUN TestSplitArgs/space_in_pre_arg
=== RUN TestSplitArgs/space_in_arg
=== RUN TestSplitArgs/test-arg
=== RUN TestSplitArgs/dupe-args
--- PASS: TestSplitArgs (0.00s)
--- PASS: TestSplitArgs/empty (0.00s)
--- PASS: TestSplitArgs/all (0.00s)
--- PASS: TestSplitArgs/only_pkgs (0.00s)
--- PASS: TestSplitArgs/pkgs_and_post (0.00s)
--- PASS: TestSplitArgs/pkgs_and_post#01 (0.00s)
--- PASS: TestSplitArgs/only_args (0.00s)
--- PASS: TestSplitArgs/space_in_pre_arg (0.00s)
--- PASS: TestSplitArgs/space_in_arg (0.00s)
--- PASS: TestSplitArgs/test-arg (0.00s)
--- PASS: TestSplitArgs/dupe-args (0.00s)
=== RUN TestRetry
=== PAUSE TestRetry
=== RUN TestNoRetry
=== PAUSE TestNoRetry
=== RUN TestBuildError
=== PAUSE TestBuildError
=== RUN TestTimeout
=== PAUSE TestTimeout
=== CONT TestRetry
=== CONT TestBuildError
=== CONT TestTimeout
=== CONT TestNoRetry
=== NAME TestBuildError
testwrapper_test.go:178: success - output:
# command-line-arguments
/tmp/TestBuildError3627144394/001/builderror_test.go:3:1: expected declaration, found derp
FAIL command-line-arguments [setup failed]
--- PASS: TestBuildError (3.93s)
=== NAME TestTimeout
testwrapper_test.go:212: success - output:
=== RUN TestTimeout
panic: test timed out after 20ms
running tests:
TestTimeout (0s)
goroutine 33 [running]:
testing.(*M).startAlarm.func1()
/usr/local/go123/src/testing/testing.go:2373 +0x385
created by time.goFunc
/usr/local/go123/src/time/sleep.go:215 +0x2d
goroutine 1 [chan receive]:
testing.(*T).Run(0xc000156340, {0x5516fa?, 0x1235c9a300128b50?}, 0x55c388)
/usr/local/go123/src/testing/testing.go:1751 +0x3ab
testing.runTests.func1(0xc000156340)
/usr/local/go123/src/testing/testing.go:2168 +0x37
testing.tRunner(0xc000156340, 0xc000128c70)
/usr/local/go123/src/testing/testing.go:1690 +0xf4
testing.runTests(0xc000140018, {0x655bd0, 0x1, 0x1}, {0x469a10?, 0x46967a?, 0x65f180?})
/usr/local/go123/src/testing/testing.go:2166 +0x43d
testing.(*M).Run(0xc0001200a0)
/usr/local/go123/src/testing/testing.go:2034 +0x64a
main.main()
_testmain.go:45 +0x9b
goroutine 18 [sleep]:
time.Sleep(0x1dcd6500)
/usr/local/go123/src/runtime/time.go:300 +0xe5
command-line-arguments_test.TestTimeout(0xc0001564e0?)
/tmp/TestTimeout1703530026/001/timeout_test.go:9 +0x18
testing.tRunner(0xc0001564e0, 0x55c388)
/usr/local/go123/src/testing/testing.go:1690 +0xf4
created by testing.(*T).Run in goroutine 1
/usr/local/go123/src/testing/testing.go:1743 +0x390
FAIL /tmp/TestTimeout1703530026/001/timeout_test.go 0.095s
Not retrying flaky tests because non-flaky tests failed.
--- PASS: TestTimeout (5.50s)
=== NAME TestNoRetry
testwrapper_test.go:142: success - output:
=== RUN TestFlakeRun
flakytest.go:43: flakytest: issue tracking this flaky test: https://github.com/tailscale/tailscale/issues/0
noretry_test.go:10: shouldn't be retried
--- FAIL: TestFlakeRun (0.07s)
=== RUN TestAlwaysError
noretry_test.go:14: error
--- FAIL: TestAlwaysError (0.00s)
FAIL /tmp/TestNoRetry550948256/001/noretry_test.go 0.262s
Not retrying flaky tests because non-flaky tests failed.
--- PASS: TestNoRetry (5.82s)
=== NAME TestRetry
testwrapper_test.go:96: success - output:
=== RUN TestOK
--- PASS: TestOK (0.00s)
=== RUN TestFlakeRun
flakytest.go:43: flakytest: issue tracking this flaky test: https://github.com/tailscale/tailscale/issues/0
retry_test.go:18: First run in testwrapper, failing so that test is retried. This is expected.
--- FAIL: TestFlakeRun (0.00s)
FAIL /tmp/TestRetry432273171/001/retry_test.go 0.036s
Attempt #2: Retrying flaky tests:
flakytest failures JSON: [{"Pattern":"/tmp/TestRetry432273171/001/retry_test.go","Tests":["TestFlakeRun"],"IssueURLs":{"TestFlakeRun":"https://github.com/tailscale/tailscale/issues/0"}}]
=== RUN TestFlakeRun
flakytest.go:43: flakytest: issue tracking this flaky test: https://github.com/tailscale/tailscale/issues/0
--- PASS: TestFlakeRun (0.00s)
ok /tmp/TestRetry432273171/001/retry_test.go 0.00s [attempt=2]
--- PASS: TestRetry (7.92s)
PASS
ok tailscale.com/cmd/testwrapper 8.045s
=== RUN TestIssueFormat
--- PASS: TestIssueFormat (0.00s)
=== RUN TestFlakeRun
flakytest.go:43: flakytest: issue tracking this flaky test: https://github.com/tailscale/tailscale/issues/0
flakytest_test.go:38: not running in testwrapper
--- SKIP: TestFlakeRun (0.00s)
PASS
ok tailscale.com/cmd/testwrapper/flakytest 0.340s
=== RUN TestViewerImports
=== RUN TestViewerImports/Map
=== RUN TestViewerImports/Slice
--- PASS: TestViewerImports (0.00s)
--- PASS: TestViewerImports/Map (0.00s)
--- PASS: TestViewerImports/Slice (0.00s)
PASS
ok tailscale.com/cmd/viewer 0.248s
? tailscale.com/cmd/vnet [no test files]
? tailscale.com/cmd/xdpderper [no test files]
? tailscale.com/control/controlhttp/controlhttpcommon [no test files]
? tailscale.com/control/controlhttp/controlhttpserver [no test files]
? tailscale.com/derp/xdp [no test files]
? tailscale.com/derp/xdp/headers [no test files]
? tailscale.com/docs/webhooks [no test files]
? tailscale.com/doctor/ethtool [no test files]
? tailscale.com/doctor/routetable [no test files]
=== RUN TestMessageSize
--- PASS: TestMessageSize (0.00s)
=== RUN TestConnBasic
--- PASS: TestConnBasic (0.00s)
=== RUN TestFastPath
--- PASS: TestFastPath (0.00s)
=== RUN TestBigData
--- PASS: TestBigData (0.00s)
=== RUN TestDataTrickle
--- PASS: TestDataTrickle (0.00s)
=== RUN TestConnStd
conn_test.go:199: not all tests can pass on this Conn, see https://github.com/golang/go/issues/46977
--- SKIP: TestConnStd (0.00s)
=== RUN TestConnMemoryOverhead
conn_test.go:282: Alloced 1964032 bytes, 1964.03 B/each
--- PASS: TestConnMemoryOverhead (1.89s)
=== RUN TestHandshake
--- PASS: TestHandshake (0.00s)
=== RUN TestNoReuse
--- PASS: TestNoReuse (0.01s)
=== RUN TestTampering
--- PASS: TestTampering (0.40s)
=== RUN TestInteropClient
--- PASS: TestInteropClient (0.00s)
=== RUN TestInteropServer
--- PASS: TestInteropServer (0.00s)
PASS
ok tailscale.com/control/controlbase 2.404s
=== RUN TestStatusEqual
--- PASS: TestStatusEqual (0.00s)
=== RUN TestCanSkipStatus
=== RUN TestCanSkipStatus/nil-s2
=== RUN TestCanSkipStatus/equal
=== RUN TestCanSkipStatus/s1-error
=== RUN TestCanSkipStatus/s1-url
=== RUN TestCanSkipStatus/s1-persist-diff
=== RUN TestCanSkipStatus/s1-state-diff
=== RUN TestCanSkipStatus/s1-no-netmap1
=== RUN TestCanSkipStatus/s1-no-netmap2
=== RUN TestCanSkipStatus/skip
--- PASS: TestCanSkipStatus (0.00s)
--- PASS: TestCanSkipStatus/nil-s2 (0.00s)
--- PASS: TestCanSkipStatus/equal (0.00s)
--- PASS: TestCanSkipStatus/s1-error (0.00s)
--- PASS: TestCanSkipStatus/s1-url (0.00s)
--- PASS: TestCanSkipStatus/s1-persist-diff (0.00s)
--- PASS: TestCanSkipStatus/s1-state-diff (0.00s)
--- PASS: TestCanSkipStatus/s1-no-netmap1 (0.00s)
--- PASS: TestCanSkipStatus/s1-no-netmap2 (0.00s)
--- PASS: TestCanSkipStatus/skip (0.00s)
=== RUN TestNewDirect
2025/03/01 23:33:26 [v1] HostInfo: {"IPNVersion":"1.80.0-ERR-BuildInfo","OS":"freebsd","OSVersion":"3.2.2","Hostname":"m3264b","Machine":"amd64","GoArch":"amd64","GoVersion":"go1.23.3"}
2025/03/01 23:33:26 NetInfo: NetInfo{varies= hairpin= ipv6= ipv6os= udp= icmpv4= derp=#0 portmap=? link="wired" firewallmode=""}
2025/03/01 23:33:26 NetInfo: NetInfo{varies= hairpin= ipv6= ipv6os= udp= icmpv4= derp=#0 portmap=? link="wifi" firewallmode=""}
2025/03/01 23:33:26 [v1] HostInfo: {"IPNVersion":"1.80.0-ERR-BuildInfo","OS":"freebsd","OSVersion":"3.2.2","Hostname":"different host name","Machine":"amd64","GoArch":"amd64","GoVersion":"go1.23.3"}
2025/03/01 23:33:26 [v2] client.newEndpoints([{invalid AddrPort ?} {invalid AddrPort ?} {invalid AddrPort ?}])
2025/03/01 23:33:26 [v2] client.newEndpoints([{invalid AddrPort ?} {invalid AddrPort ?} {invalid AddrPort ?}])
--- PASS: TestNewDirect (0.00s)
=== RUN TestTsmpPing
2025/03/01 23:33:26 [v1] HostInfo: {"IPNVersion":"1.80.0-ERR-BuildInfo","OS":"freebsd","OSVersion":"3.2.2","Hostname":"m3264b","Machine":"amd64","GoArch":"amd64","GoVersion":"go1.23.3"}
2025/03/01 23:33:26 NetInfo: NetInfo{varies= hairpin= ipv6= ipv6os= udp= icmpv4= derp=#0 portmap=? link="wired" firewallmode=""}
--- PASS: TestTsmpPing (0.02s)
=== RUN TestUpdatePeersStateFromResponse
=== RUN TestUpdatePeersStateFromResponse/full_peers
=== RUN TestUpdatePeersStateFromResponse/full_peers_ignores_deltas
=== RUN TestUpdatePeersStateFromResponse/add_and_update
=== RUN TestUpdatePeersStateFromResponse/remove
=== RUN TestUpdatePeersStateFromResponse/add_and_remove
=== RUN TestUpdatePeersStateFromResponse/unchanged
=== RUN TestUpdatePeersStateFromResponse/online_change
=== RUN TestUpdatePeersStateFromResponse/online_change_offline
=== RUN TestUpdatePeersStateFromResponse/peer_seen_at
=== RUN TestUpdatePeersStateFromResponse/ep_change_derp
=== RUN TestUpdatePeersStateFromResponse/ep_change_udp
=== RUN TestUpdatePeersStateFromResponse/ep_change_udp_2
=== RUN TestUpdatePeersStateFromResponse/ep_change_both
=== RUN TestUpdatePeersStateFromResponse/change_key
=== RUN TestUpdatePeersStateFromResponse/change_key_signature
=== RUN TestUpdatePeersStateFromResponse/change_disco_key
=== RUN TestUpdatePeersStateFromResponse/change_online
=== RUN TestUpdatePeersStateFromResponse/change_last_seen
=== RUN TestUpdatePeersStateFromResponse/change_key_expiry
--- PASS: TestUpdatePeersStateFromResponse (0.01s)
--- PASS: TestUpdatePeersStateFromResponse/full_peers (0.00s)
--- PASS: TestUpdatePeersStateFromResponse/full_peers_ignores_deltas (0.00s)
--- PASS: TestUpdatePeersStateFromResponse/add_and_update (0.00s)
--- PASS: TestUpdatePeersStateFromResponse/remove (0.00s)
--- PASS: TestUpdatePeersStateFromResponse/add_and_remove (0.00s)
--- PASS: TestUpdatePeersStateFromResponse/unchanged (0.00s)
--- PASS: TestUpdatePeersStateFromResponse/online_change (0.00s)
--- PASS: TestUpdatePeersStateFromResponse/online_change_offline (0.00s)
--- PASS: TestUpdatePeersStateFromResponse/peer_seen_at (0.00s)
--- PASS: TestUpdatePeersStateFromResponse/ep_change_derp (0.00s)
--- PASS: TestUpdatePeersStateFromResponse/ep_change_udp (0.00s)
--- PASS: TestUpdatePeersStateFromResponse/ep_change_udp_2 (0.00s)
--- PASS: TestUpdatePeersStateFromResponse/ep_change_both (0.00s)
--- PASS: TestUpdatePeersStateFromResponse/change_key (0.00s)
--- PASS: TestUpdatePeersStateFromResponse/change_key_signature (0.00s)
--- PASS: TestUpdatePeersStateFromResponse/change_disco_key (0.00s)
--- PASS: TestUpdatePeersStateFromResponse/change_online (0.00s)
--- PASS: TestUpdatePeersStateFromResponse/change_last_seen (0.00s)
--- PASS: TestUpdatePeersStateFromResponse/change_key_expiry (0.00s)
=== RUN TestNetmapForResponse
=== RUN TestNetmapForResponse/implicit_packetfilter
=== RUN TestNetmapForResponse/implicit_dnsconfig
=== RUN TestNetmapForResponse/collect_services
=== RUN TestNetmapForResponse/implicit_domain
=== RUN TestNetmapForResponse/implicit_node
=== RUN TestNetmapForResponse/named_packetfilter
--- PASS: TestNetmapForResponse (0.00s)
--- PASS: TestNetmapForResponse/implicit_packetfilter (0.00s)
--- PASS: TestNetmapForResponse/implicit_dnsconfig (0.00s)
--- PASS: TestNetmapForResponse/collect_services (0.00s)
--- PASS: TestNetmapForResponse/implicit_domain (0.00s)
--- PASS: TestNetmapForResponse/implicit_node (0.00s)
--- PASS: TestNetmapForResponse/named_packetfilter (0.00s)
=== RUN TestDeltaDERPMap
=== RUN TestDeltaDERPMap/nothing-to-nothing
=== RUN TestDeltaDERPMap/regions-sticky
=== RUN TestDeltaDERPMap/regions-change
=== RUN TestDeltaDERPMap/home-params
=== RUN TestDeltaDERPMap/home-params-sub-fields
--- PASS: TestDeltaDERPMap (0.00s)
--- PASS: TestDeltaDERPMap/nothing-to-nothing (0.00s)
--- PASS: TestDeltaDERPMap/regions-sticky (0.00s)
--- PASS: TestDeltaDERPMap/regions-change (0.00s)
--- PASS: TestDeltaDERPMap/home-params (0.00s)
--- PASS: TestDeltaDERPMap/home-params-sub-fields (0.00s)
=== RUN TestPeerChangeDiff
=== RUN TestPeerChangeDiff/eq
=== RUN TestPeerChangeDiff/patch-derp
=== RUN TestPeerChangeDiff/patch-endpoints
=== RUN TestPeerChangeDiff/patch-cap
=== RUN TestPeerChangeDiff/patch-lastseen
=== RUN TestPeerChangeDiff/patch-online-to-true
=== RUN TestPeerChangeDiff/patch-online-to-false
=== RUN TestPeerChangeDiff/mix-patchable-and-not
=== RUN TestPeerChangeDiff/miss-change-stableid
=== RUN TestPeerChangeDiff/miss-change-id
=== RUN TestPeerChangeDiff/miss-change-name
=== RUN TestPeerChangeDiff/miss-change-user
=== RUN TestPeerChangeDiff/miss-change-masq-v4
=== RUN TestPeerChangeDiff/miss-change-masq-v6
=== RUN TestPeerChangeDiff/patch-capmap-add-value-to-existing-key
=== RUN TestPeerChangeDiff/patch-capmap-add-new-key
=== RUN TestPeerChangeDiff/patch-capmap-remove-key
=== RUN TestPeerChangeDiff/patch-capmap-remove-as-nil
=== RUN TestPeerChangeDiff/patch-capmap-add-key-to-empty-map
=== RUN TestPeerChangeDiff/patch-capmap-no-change
--- PASS: TestPeerChangeDiff (0.00s)
--- PASS: TestPeerChangeDiff/eq (0.00s)
--- PASS: TestPeerChangeDiff/patch-derp (0.00s)
--- PASS: TestPeerChangeDiff/patch-endpoints (0.00s)
--- PASS: TestPeerChangeDiff/patch-cap (0.00s)
--- PASS: TestPeerChangeDiff/patch-lastseen (0.00s)
--- PASS: TestPeerChangeDiff/patch-online-to-true (0.00s)
--- PASS: TestPeerChangeDiff/patch-online-to-false (0.00s)
--- PASS: TestPeerChangeDiff/mix-patchable-and-not (0.00s)
--- PASS: TestPeerChangeDiff/miss-change-stableid (0.00s)
--- PASS: TestPeerChangeDiff/miss-change-id (0.00s)
--- PASS: TestPeerChangeDiff/miss-change-name (0.00s)
--- PASS: TestPeerChangeDiff/miss-change-user (0.00s)
--- PASS: TestPeerChangeDiff/miss-change-masq-v4 (0.00s)
--- PASS: TestPeerChangeDiff/miss-change-masq-v6 (0.00s)
--- PASS: TestPeerChangeDiff/patch-capmap-add-value-to-existing-key (0.00s)
--- PASS: TestPeerChangeDiff/patch-capmap-add-new-key (0.00s)
--- PASS: TestPeerChangeDiff/patch-capmap-remove-key (0.00s)
--- PASS: TestPeerChangeDiff/patch-capmap-remove-as-nil (0.00s)
--- PASS: TestPeerChangeDiff/patch-capmap-add-key-to-empty-map (0.00s)
--- PASS: TestPeerChangeDiff/patch-capmap-no-change (0.00s)
=== RUN TestPeerChangeDiffAllocs
--- PASS: TestPeerChangeDiffAllocs (0.01s)
=== RUN TestPatchifyPeersChanged
=== RUN TestPatchifyPeersChanged/change_one_endpoint
=== RUN TestPatchifyPeersChanged/change_some
=== RUN TestPatchifyPeersChanged/change_exitnodednsresolvers
=== RUN TestPatchifyPeersChanged/same_exitnoderesolvers
--- PASS: TestPatchifyPeersChanged (0.01s)
--- PASS: TestPatchifyPeersChanged/change_one_endpoint (0.00s)
--- PASS: TestPatchifyPeersChanged/change_some (0.00s)
--- PASS: TestPatchifyPeersChanged/change_exitnodednsresolvers (0.00s)
--- PASS: TestPatchifyPeersChanged/same_exitnoderesolvers (0.00s)
=== RUN TestUpgradeNode
=== RUN TestUpgradeNode/nil
=== RUN TestUpgradeNode/empty
=== RUN TestUpgradeNode/derp-both
=== RUN TestUpgradeNode/derp-str-only
=== RUN TestUpgradeNode/derp-int-only
=== RUN TestUpgradeNode/implicit-allowed-ips-all-set
=== RUN TestUpgradeNode/implicit-allowed-ips-only-address-set
=== RUN TestUpgradeNode/implicit-allowed-ips-set-empty-slice
--- PASS: TestUpgradeNode (0.00s)
--- PASS: TestUpgradeNode/nil (0.00s)
--- PASS: TestUpgradeNode/empty (0.00s)
--- PASS: TestUpgradeNode/derp-both (0.00s)
--- PASS: TestUpgradeNode/derp-str-only (0.00s)
--- PASS: TestUpgradeNode/derp-int-only (0.00s)
--- PASS: TestUpgradeNode/implicit-allowed-ips-all-set (0.00s)
--- PASS: TestUpgradeNode/implicit-allowed-ips-only-address-set (0.00s)
--- PASS: TestUpgradeNode/implicit-allowed-ips-set-empty-slice (0.00s)
=== RUN TestNoiseVersion
--- PASS: TestNoiseVersion (0.00s)
=== RUN TestNoiseClientHTTP2Upgrade
noise.go:139: setting empty HTTPS port with http scheme and private host 127.0.0.1
--- PASS: TestNoiseClientHTTP2Upgrade (0.02s)
=== RUN TestNoiseClientHTTP2Upgrade_earlyPayload
noise.go:139: setting empty HTTPS port with http scheme and private host 127.0.0.1
--- PASS: TestNoiseClientHTTP2Upgrade_earlyPayload (0.06s)
=== RUN TestNoiseClientPortsAreSet
=== RUN TestNoiseClientPortsAreSet/https-url
=== RUN TestNoiseClientPortsAreSet/http-url
=== RUN TestNoiseClientPortsAreSet/https-url-custom-port
=== RUN TestNoiseClientPortsAreSet/http-url-custom-port
=== RUN TestNoiseClientPortsAreSet/http-loopback-no-port
=== RUN TestNoiseClientPortsAreSet/http-loopback-custom-port
noise.go:139: setting empty HTTPS port with http scheme and private host 127.0.0.1
=== RUN TestNoiseClientPortsAreSet/http-localhost-no-port
=== RUN TestNoiseClientPortsAreSet/http-localhost-custom-port
noise.go:139: setting empty HTTPS port with http scheme and private host localhost
=== RUN TestNoiseClientPortsAreSet/http-private-ip-no-port
=== RUN TestNoiseClientPortsAreSet/http-private-ip-custom-port
noise.go:139: setting empty HTTPS port with http scheme and private host 192.168.2.3
=== RUN TestNoiseClientPortsAreSet/http-public-ip
=== RUN TestNoiseClientPortsAreSet/http-public-ip-custom-port
=== RUN TestNoiseClientPortsAreSet/https-public-ip
=== RUN TestNoiseClientPortsAreSet/https-public-ip-custom-port
--- PASS: TestNoiseClientPortsAreSet (0.00s)
--- PASS: TestNoiseClientPortsAreSet/https-url (0.00s)
--- PASS: TestNoiseClientPortsAreSet/http-url (0.00s)
--- PASS: TestNoiseClientPortsAreSet/https-url-custom-port (0.00s)
--- PASS: TestNoiseClientPortsAreSet/http-url-custom-port (0.00s)
--- PASS: TestNoiseClientPortsAreSet/http-loopback-no-port (0.00s)
--- PASS: TestNoiseClientPortsAreSet/http-loopback-custom-port (0.00s)
--- PASS: TestNoiseClientPortsAreSet/http-localhost-no-port (0.00s)
--- PASS: TestNoiseClientPortsAreSet/http-localhost-custom-port (0.00s)
--- PASS: TestNoiseClientPortsAreSet/http-private-ip-no-port (0.00s)
--- PASS: TestNoiseClientPortsAreSet/http-private-ip-custom-port (0.00s)
--- PASS: TestNoiseClientPortsAreSet/http-public-ip (0.00s)
--- PASS: TestNoiseClientPortsAreSet/http-public-ip-custom-port (0.00s)
--- PASS: TestNoiseClientPortsAreSet/https-public-ip (0.00s)
--- PASS: TestNoiseClientPortsAreSet/https-public-ip-custom-port (0.00s)
PASS
ok tailscale.com/control/controlclient 0.437s
=== RUN TestControlHTTP
=== RUN TestControlHTTP/no_proxy
=== RUN TestControlHTTP/port80_broken_mitm
2025/03/01 23:33:27 tlsdial: error: server cert for "localhost" failed to verify and is not a Let's Encrypt cert
=== RUN TestControlHTTP/socks5
=== RUN TestControlHTTP/http_to_http
=== RUN TestControlHTTP/http_to_https
2025/03/01 23:33:27 tshttpproxy: CONNECT response from http://127.0.0.1:13130 for target "localhost:13129" (auth ""): 200 OK
=== RUN TestControlHTTP/http_to_any
=== RUN TestControlHTTP/https_to_http
=== RUN TestControlHTTP/https_to_https
2025/03/01 23:33:27 tshttpproxy: CONNECT response from https://127.0.0.1:13150 for target "localhost:13149" (auth ""): 200 OK
=== RUN TestControlHTTP/https_to_any
=== RUN TestControlHTTP/early_write
=== RUN TestControlHTTP/http_request_in_dial
--- PASS: TestControlHTTP (0.35s)
--- PASS: TestControlHTTP/no_proxy (0.01s)
--- PASS: TestControlHTTP/port80_broken_mitm (0.23s)
--- PASS: TestControlHTTP/socks5 (0.01s)
--- PASS: TestControlHTTP/http_to_http (0.01s)
--- PASS: TestControlHTTP/http_to_https (0.04s)
--- PASS: TestControlHTTP/http_to_any (0.01s)
--- PASS: TestControlHTTP/https_to_http (0.01s)
--- PASS: TestControlHTTP/https_to_https (0.02s)
--- PASS: TestControlHTTP/https_to_any (0.01s)
--- PASS: TestControlHTTP/early_write (0.00s)
--- PASS: TestControlHTTP/http_request_in_dial (0.00s)
=== RUN TestDialPlan
http_test.go:549: only works on Linux due to multiple localhost addresses
--- SKIP: TestDialPlan (0.00s)
=== RUN TestDeps
http_test.go:834: got 246 dependencies
--- PASS: TestDeps (1.14s)
PASS
ok tailscale.com/control/controlhttp 1.679s
=== RUN TestAsDebugJSON
controlknobs_test.go:23: Got: {"AppCStoreRoutes":false,"DisableCaptivePortalDetection":false,"DisableCryptorouting":false,"DisableDNSForwarderTCPRetries":false,"DisableDeltaUpdates":false,"DisableLocalDNSOverrideViaNRPT":false,"DisableSkipStatusQueue":false,"DisableSplitDNSWhenNoCustomResolvers":false,"DisableUPnP":false,"ForceBackgroundSTUN":false,"KeepFullWGConfig":false,"LinuxForceIPTables":false,"LinuxForceNfTables":false,"OneCGNAT":null,"PeerMTUEnable":false,"ProbeUDPLifetime":false,"RandomizeClientPort":false,"SeamlessKeyRenewal":false,"SilentDisco":false,"UserDialUseRoutes":false}
--- PASS: TestAsDebugJSON (0.00s)
PASS
ok tailscale.com/control/controlknobs 0.265s
=== RUN TestClientInfoUnmarshal
--- PASS: TestClientInfoUnmarshal (0.00s)
=== RUN TestSendRecv
derp_test.go:79: Connecting client 0 ...
derp_test.go:109: Connected client 0.
derp_test.go:79: Connecting client 1 ...
derp_test.go:109: Connected client 1.
derp_test.go:79: Connecting client 2 ...
derp_test.go:109: Connected client 2.
derp_test.go:115: Starting read loops
derp_test.go:267: passed
logger.go:103: derp client [abc::def]:0[IsmTG]: closing; server closed
--- PASS: TestSendRecv (0.09s)
=== RUN TestSendFreeze
=== RUN TestSendFreeze/initial_send
=== RUN TestSendFreeze/block_cathy
=== NAME TestSendFreeze
derp_test.go:451: TEST COMPLETE, cancelling sender
derp_test.go:453: closing connections
logger.go:103: derp client cathy[H0O0J]: sender failed: use of closed network connection
--- PASS: TestSendFreeze (0.22s)
--- PASS: TestSendFreeze/initial_send (0.00s)
--- PASS: TestSendFreeze/block_cathy (0.21s)
=== RUN TestWatch
logger.go:103: derp-server: test adding named key "w1" for 6e6f64656b65793a30383837646430333730343833313037633332653134366332653765313765373463336431626265663534313738316532376431326464613932363638663237
derp_test.go:686: got present with IP 127.0.0.1:13179, flags=2
logger.go:103: derp-server: test adding named key "c1" for 6e6f64656b65793a37363966663964373661393766313735333761353436666136653832633066376438316633383566646439646335613338353138623134626362316433353134
derp_test.go:689: got present with IP 127.0.0.1:13180, flags=1
logger.go:103: derp-server: test adding named key "c2" for 6e6f64656b65793a65313937343130346562613661613764613435393534363065356664643832393233626364636435383365353634633532316662663637366630383961373464
derp_test.go:692: got present with IP 127.0.0.1:13181, flags=1
logger.go:103: derp-server: test adding named key "w2" for 6e6f64656b65793a31636135383162353335653830396139623863653535643836666639616562633665346330653135383934336661306332393535313166646434633830623163
derp_test.go:695: got present with IP 127.0.0.1:13182, flags=2
derp_test.go:696: got present with IP 127.0.0.1:13179, flags=2
derp_test.go:696: got present with IP 127.0.0.1:13180, flags=1
derp_test.go:696: got present with IP 127.0.0.1:13181, flags=1
derp_test.go:696: got present with IP 127.0.0.1:13182, flags=2
logger.go:103: derp-server: test adding named key "c3" for 6e6f64656b65793a32383762373037376330383766376531316134396361346137363733396637383034343237303935663133663566323665633837653362396236386661353433
derp_test.go:699: got present with IP 127.0.0.1:13183, flags=1
derp_test.go:700: got present with IP 127.0.0.1:13183, flags=1
derp_test.go:702: closing client "c2" (6e6f64656b65793a65313937343130346562613661613764613435393534363065356664643832393233626364636435383365353634633532316662663637366630383961373464)
logger.go:103: derp-server: test adding named key "w3" for 6e6f64656b65793a36633532363665643431323465333764646163616130333166393830376265353362343937363935343235363166633665376237326163326438653437333134
derp_test.go:707: got present with IP 127.0.0.1:13185, flags=2
derp_test.go:708: got present with IP 127.0.0.1:13185, flags=2
derp_test.go:709: got present with IP 127.0.0.1:13185, flags=2
derp_test.go:709: got present with IP 127.0.0.1:13182, flags=2
derp_test.go:709: got present with IP 127.0.0.1:13183, flags=1
derp_test.go:709: got present with IP 127.0.0.1:13179, flags=2
derp_test.go:709: got present with IP 127.0.0.1:13180, flags=1
derp_test.go:711: closing client "c1" (6e6f64656b65793a37363966663964373661393766313735333761353436666136653832633066376438316633383566646439646335613338353138623134626362316433353134)
logger.go:103: derp-server: derp client 127.0.0.1:13183[KHtwd]: closing; server closed
logger.go:103: derp-server: derp client 127.0.0.1:13179[CIfdA]: closing; server closed
logger.go:103: derp-server: derp client 127.0.0.1:13185[bFJm7]: closing; server closed
logger.go:103: derp-server: derp client 127.0.0.1:13182[HKWBt]: closing; server closed
derp_test.go:508: closing client "c3" (6e6f64656b65793a32383762373037376330383766376531316134396361346137363733396637383034343237303935663133663566323665633837653362396236386661353433)
derp_test.go:508: closing client "w3" (6e6f64656b65793a36633532363665643431323465333764646163616130333166393830376265353362343937363935343235363166633665376237326163326438653437333134)
derp_test.go:508: closing client "w1" (6e6f64656b65793a30383837646430333730343833313037633332653134366332653765313765373463336431626265663534313738316532376431326464613932363638663237)
derp_test.go:508: closing client "w2" (6e6f64656b65793a31636135383162353335653830396139623863653535643836666639616562633665346330653135383934336661306332393535313166646434633830623163)
--- PASS: TestWatch (0.08s)
=== RUN TestForwarderRegistration
--- PASS: TestForwarderRegistration (0.00s)
=== RUN TestMultiForwarder
--- PASS: TestMultiForwarder (0.39s)
=== RUN TestMetaCert
--- PASS: TestMetaCert (0.00s)
=== RUN TestClientRecv
=== RUN TestClientRecv/ping
=== RUN TestClientRecv/pong
=== RUN TestClientRecv/health_bad
=== RUN TestClientRecv/health_ok
=== RUN TestClientRecv/server_restarting
--- PASS: TestClientRecv (0.00s)
--- PASS: TestClientRecv/ping (0.00s)
--- PASS: TestClientRecv/pong (0.00s)
--- PASS: TestClientRecv/health_bad (0.00s)
--- PASS: TestClientRecv/health_ok (0.00s)
--- PASS: TestClientRecv/server_restarting (0.00s)
=== RUN TestClientSendPing
--- PASS: TestClientSendPing (0.00s)
=== RUN TestClientSendPong
--- PASS: TestClientSendPong (0.00s)
=== RUN TestServerDupClients
=== RUN TestServerDupClients/one_comes_and_goes_disablefighters
=== RUN TestServerDupClients/one_comes_and_goes_lastwriteractive
=== RUN TestServerDupClients/small_overlap_replacement_disablefighters
=== RUN TestServerDupClients/small_overlap_replacement_lastwriteractive
=== RUN TestServerDupClients/concurrent_dups_get_disabled
=== RUN TestServerDupClients/concurrent_dups_three_parties
=== RUN TestServerDupClients/activity_promotes_primary_when_nil
=== RUN TestServerDupClients/concurrent_dups_three_parties_last_writer
--- PASS: TestServerDupClients (0.07s)
--- PASS: TestServerDupClients/one_comes_and_goes_disablefighters (0.00s)
--- PASS: TestServerDupClients/one_comes_and_goes_lastwriteractive (0.00s)
--- PASS: TestServerDupClients/small_overlap_replacement_disablefighters (0.00s)
--- PASS: TestServerDupClients/small_overlap_replacement_lastwriteractive (0.00s)
--- PASS: TestServerDupClients/concurrent_dups_get_disabled (0.00s)
--- PASS: TestServerDupClients/concurrent_dups_three_parties (0.00s)
--- PASS: TestServerDupClients/activity_promotes_primary_when_nil (0.00s)
--- PASS: TestServerDupClients/concurrent_dups_three_parties_last_writer (0.00s)
=== RUN TestLimiter
derp_test.go:1312: i=0, allow=true, d=0s
derp_test.go:1312: i=1, allow=true, d=0s
derp_test.go:1312: i=2, allow=true, d=0s
derp_test.go:1312: i=3, allow=true, d=0s
derp_test.go:1312: i=4, allow=true, d=0s
derp_test.go:1312: i=5, allow=true, d=0s
derp_test.go:1312: i=6, allow=true, d=0s
derp_test.go:1312: i=7, allow=true, d=0s
derp_test.go:1312: i=8, allow=true, d=0s
derp_test.go:1312: i=9, allow=true, d=0s
derp_test.go:1312: i=10, allow=true, d=0s
derp_test.go:1312: i=11, allow=true, d=0s
derp_test.go:1312: i=12, allow=true, d=0s
derp_test.go:1312: i=13, allow=true, d=0s
derp_test.go:1312: i=14, allow=true, d=0s
derp_test.go:1312: i=15, allow=true, d=0s
derp_test.go:1312: i=16, allow=true, d=0s
derp_test.go:1312: i=17, allow=true, d=0s
derp_test.go:1312: i=18, allow=true, d=0s
derp_test.go:1312: i=19, allow=true, d=0s
derp_test.go:1312: i=20, allow=true, d=0s
derp_test.go:1312: i=21, allow=true, d=0s
derp_test.go:1312: i=22, allow=true, d=0s
derp_test.go:1312: i=23, allow=true, d=0s
derp_test.go:1312: i=24, allow=true, d=0s
derp_test.go:1312: i=25, allow=true, d=0s
derp_test.go:1312: i=26, allow=true, d=0s
derp_test.go:1312: i=27, allow=true, d=0s
derp_test.go:1312: i=28, allow=true, d=0s
derp_test.go:1312: i=29, allow=true, d=0s
derp_test.go:1312: i=30, allow=true, d=0s
derp_test.go:1312: i=31, allow=true, d=0s
derp_test.go:1312: i=32, allow=true, d=0s
derp_test.go:1312: i=33, allow=true, d=0s
derp_test.go:1312: i=34, allow=true, d=0s
derp_test.go:1312: i=35, allow=true, d=0s
derp_test.go:1312: i=36, allow=true, d=0s
derp_test.go:1312: i=37, allow=true, d=0s
derp_test.go:1312: i=38, allow=true, d=0s
derp_test.go:1312: i=39, allow=true, d=0s
derp_test.go:1312: i=40, allow=true, d=0s
derp_test.go:1312: i=41, allow=true, d=0s
derp_test.go:1312: i=42, allow=true, d=0s
derp_test.go:1312: i=43, allow=true, d=0s
derp_test.go:1312: i=44, allow=true, d=0s
derp_test.go:1312: i=45, allow=true, d=0s
derp_test.go:1312: i=46, allow=true, d=0s
derp_test.go:1312: i=47, allow=true, d=0s
derp_test.go:1312: i=48, allow=true, d=0s
derp_test.go:1312: i=49, allow=true, d=0s
derp_test.go:1312: i=50, allow=true, d=0s
derp_test.go:1312: i=51, allow=true, d=0s
derp_test.go:1312: i=52, allow=true, d=0s
derp_test.go:1312: i=53, allow=true, d=0s
derp_test.go:1312: i=54, allow=true, d=0s
derp_test.go:1312: i=55, allow=true, d=0s
derp_test.go:1312: i=56, allow=true, d=0s
derp_test.go:1312: i=57, allow=true, d=0s
derp_test.go:1312: i=58, allow=true, d=0s
derp_test.go:1312: i=59, allow=true, d=0s
derp_test.go:1312: i=60, allow=true, d=0s
derp_test.go:1312: i=61, allow=true, d=0s
derp_test.go:1312: i=62, allow=true, d=0s
derp_test.go:1312: i=63, allow=true, d=0s
derp_test.go:1312: i=64, allow=true, d=0s
derp_test.go:1312: i=65, allow=true, d=0s
derp_test.go:1312: i=66, allow=true, d=0s
derp_test.go:1312: i=67, allow=true, d=0s
derp_test.go:1312: i=68, allow=true, d=0s
derp_test.go:1312: i=69, allow=true, d=0s
derp_test.go:1312: i=70, allow=true, d=0s
derp_test.go:1312: i=71, allow=true, d=0s
derp_test.go:1312: i=72, allow=true, d=0s
derp_test.go:1312: i=73, allow=true, d=0s
derp_test.go:1312: i=74, allow=true, d=0s
derp_test.go:1312: i=75, allow=true, d=0s
derp_test.go:1312: i=76, allow=true, d=0s
derp_test.go:1312: i=77, allow=true, d=0s
derp_test.go:1312: i=78, allow=true, d=0s
derp_test.go:1312: i=79, allow=true, d=0s
derp_test.go:1312: i=80, allow=true, d=0s
derp_test.go:1312: i=81, allow=true, d=0s
derp_test.go:1312: i=82, allow=true, d=0s
derp_test.go:1312: i=83, allow=true, d=0s
derp_test.go:1312: i=84, allow=true, d=0s
derp_test.go:1312: i=85, allow=true, d=0s
derp_test.go:1312: i=86, allow=true, d=0s
derp_test.go:1312: i=87, allow=true, d=0s
derp_test.go:1312: i=88, allow=true, d=0s
derp_test.go:1312: i=89, allow=true, d=0s
derp_test.go:1312: i=90, allow=true, d=0s
derp_test.go:1312: i=91, allow=true, d=0s
derp_test.go:1312: i=92, allow=true, d=0s
derp_test.go:1312: i=93, allow=true, d=0s
derp_test.go:1312: i=94, allow=true, d=0s
derp_test.go:1312: i=95, allow=true, d=0s
derp_test.go:1312: i=96, allow=true, d=0s
derp_test.go:1312: i=97, allow=true, d=0s
derp_test.go:1312: i=98, allow=true, d=0s
derp_test.go:1312: i=99, allow=true, d=0s
derp_test.go:1312: i=100, allow=true, d=59.993722139s
derp_test.go:1312: i=101, allow=true, d=1m59.993686853s
derp_test.go:1312: i=102, allow=true, d=2m59.993646203s
derp_test.go:1312: i=103, allow=true, d=3m59.993600844s
derp_test.go:1312: i=104, allow=true, d=4m59.993563591s
derp_test.go:1312: i=105, allow=true, d=5m59.993466793s
derp_test.go:1312: i=106, allow=true, d=6m59.993427871s
derp_test.go:1312: i=107, allow=true, d=7m59.993391036s
derp_test.go:1312: i=108, allow=true, d=8m59.993357299s
derp_test.go:1312: i=109, allow=true, d=9m59.993319987s
derp_test.go:1312: i=110, allow=true, d=10m59.993277787s
derp_test.go:1312: i=111, allow=true, d=11m59.99324411s
derp_test.go:1312: i=112, allow=true, d=12m59.993200897s
derp_test.go:1312: i=113, allow=true, d=13m59.993154107s
derp_test.go:1312: i=114, allow=true, d=14m59.993110715s
derp_test.go:1312: i=115, allow=true, d=15m59.993055461s
derp_test.go:1312: i=116, allow=true, d=16m59.993003605s
derp_test.go:1312: i=117, allow=true, d=17m59.992965518s
derp_test.go:1312: i=118, allow=true, d=18m59.99290496s
derp_test.go:1312: i=119, allow=true, d=19m59.992860912s
derp_test.go:1312: i=120, allow=true, d=20m59.992816506s
derp_test.go:1312: i=121, allow=true, d=21m59.992763339s
derp_test.go:1312: i=122, allow=true, d=22m59.992721318s
derp_test.go:1312: i=123, allow=true, d=23m59.992597698s
derp_test.go:1312: i=124, allow=true, d=24m59.992545842s
derp_test.go:1312: i=125, allow=true, d=25m59.992509602s
derp_test.go:1312: i=126, allow=true, d=26m59.992468713s
derp_test.go:1312: i=127, allow=true, d=27m59.992426573s
derp_test.go:1312: i=128, allow=true, d=28m59.992379783s
derp_test.go:1312: i=129, allow=true, d=29m59.992338537s
derp_test.go:1312: i=130, allow=true, d=30m59.992290913s
derp_test.go:1312: i=131, allow=true, d=31m59.992242216s
derp_test.go:1312: i=132, allow=true, d=32m59.992203473s
derp_test.go:1312: i=133, allow=true, d=33m59.992161928s
derp_test.go:1312: i=134, allow=true, d=34m59.992120503s
derp_test.go:1312: i=135, allow=true, d=35m59.992077468s
derp_test.go:1312: i=136, allow=true, d=36m59.992035209s
derp_test.go:1312: i=137, allow=true, d=37m59.991991638s
derp_test.go:1312: i=138, allow=true, d=38m59.991949795s
derp_test.go:1312: i=139, allow=true, d=39m59.991907714s
derp_test.go:1312: i=140, allow=true, d=40m59.991867183s
derp_test.go:1312: i=141, allow=true, d=41m59.99181938s
derp_test.go:1312: i=142, allow=true, d=42m59.991774081s
derp_test.go:1312: i=143, allow=true, d=43m59.99172145s
derp_test.go:1312: i=144, allow=true, d=44m59.991657852s
derp_test.go:1312: i=145, allow=true, d=45m59.991613267s
derp_test.go:1312: i=146, allow=true, d=46m59.991556345s
derp_test.go:1312: i=147, allow=true, d=47m59.99151486s
derp_test.go:1312: i=148, allow=true, d=48m59.99147564s
derp_test.go:1312: i=149, allow=true, d=49m59.991438209s
derp_test.go:1312: i=150, allow=true, d=50m59.991391836s
derp_test.go:1312: i=151, allow=true, d=51m59.991351722s
derp_test.go:1312: i=152, allow=true, d=52m59.991315959s
derp_test.go:1312: i=153, allow=true, d=53m59.991268276s
derp_test.go:1312: i=154, allow=true, d=54m59.991225539s
derp_test.go:1312: i=155, allow=true, d=55m59.991163848s
derp_test.go:1312: i=156, allow=true, d=56m59.991100429s
derp_test.go:1312: i=157, allow=true, d=57m59.991031109s
derp_test.go:1312: i=158, allow=true, d=58m59.990960597s
derp_test.go:1312: i=159, allow=true, d=59m59.990916191s
derp_test.go:1312: i=160, allow=true, d=1h0m59.990853964s
derp_test.go:1312: i=161, allow=true, d=1h1m59.99081534s
derp_test.go:1312: i=162, allow=true, d=1h2m59.990762769s
derp_test.go:1312: i=163, allow=true, d=1h3m59.990723787s
derp_test.go:1312: i=164, allow=true, d=1h4m59.990666805s
derp_test.go:1312: i=165, allow=true, d=1h5m59.990627824s
derp_test.go:1312: i=166, allow=true, d=1h6m59.990571557s
derp_test.go:1312: i=167, allow=true, d=1h7m59.990449487s
derp_test.go:1312: i=168, allow=true, d=1h8m59.990404843s
derp_test.go:1312: i=169, allow=true, d=1h9m59.990362106s
derp_test.go:1312: i=170, allow=true, d=1h10m59.990317939s
derp_test.go:1312: i=171, allow=true, d=1h11m59.990272401s
derp_test.go:1312: i=172, allow=true, d=1h12m59.990223228s
derp_test.go:1312: i=173, allow=true, d=1h13m59.990185259s
derp_test.go:1312: i=174, allow=true, d=1h14m59.989846347s
derp_test.go:1312: i=175, allow=true, d=1h15m59.989734469s
derp_test.go:1312: i=176, allow=true, d=1h16m59.989693819s
derp_test.go:1312: i=177, allow=true, d=1h17m59.989607154s
derp_test.go:1312: i=178, allow=true, d=1h18m59.989543556s
derp_test.go:1312: i=179, allow=true, d=1h19m59.989087342s
derp_test.go:1312: i=180, allow=true, d=1h20m59.989006697s
derp_test.go:1312: i=181, allow=true, d=1h21m59.988957702s
derp_test.go:1312: i=182, allow=true, d=1h22m59.988919316s
derp_test.go:1312: i=183, allow=true, d=1h23m59.988872229s
derp_test.go:1312: i=184, allow=true, d=1h24m59.988839088s
derp_test.go:1312: i=185, allow=true, d=1h25m59.988655983s
derp_test.go:1312: i=186, allow=true, d=1h26m59.988596974s
derp_test.go:1312: i=187, allow=true, d=1h27m59.988558231s
derp_test.go:1312: i=188, allow=true, d=1h28m59.988503335s
derp_test.go:1312: i=189, allow=true, d=1h29m59.988462387s
derp_test.go:1312: i=190, allow=true, d=1h30m59.988424836s
derp_test.go:1312: i=191, allow=true, d=1h31m59.988357245s
derp_test.go:1312: i=192, allow=true, d=1h32m59.988034128s
derp_test.go:1312: i=193, allow=true, d=1h33m59.987995504s
derp_test.go:1312: i=194, allow=true, d=1h34m59.987947939s
derp_test.go:1312: i=195, allow=true, d=1h35m59.987898348s
derp_test.go:1312: i=196, allow=true, d=1h36m59.98785287s
derp_test.go:1312: i=197, allow=true, d=1h37m59.987810312s
derp_test.go:1312: i=198, allow=true, d=1h38m59.987772225s
derp_test.go:1312: i=199, allow=true, d=1h39m59.987725971s
--- PASS: TestLimiter (0.01s)
=== RUN TestParseSSOutput
--- PASS: TestParseSSOutput (0.00s)
=== RUN TestClientSendRateLimiting
--- PASS: TestClientSendRateLimiting (0.00s)
=== RUN TestServerRepliesToPing
logger.go:103: derp-server: test adding named key "alice" for 6e6f64656b65793a31363236366263663236346135303132323263386335383365356435353365373336633664396232613563643166396235333762303837643632373936303235
logger.go:103: derp-server: derp client 127.0.0.1:13204[FiZrz]: closing; server closed
derp_test.go:508: closing client "alice" (6e6f64656b65793a31363236366263663236346135303132323263386335383365356435353365373336633664396232613563643166396235333762303837643632373936303235)
--- PASS: TestServerRepliesToPing (0.04s)
=== RUN TestGetPerClientSendQueueDepth
=== RUN TestGetPerClientSendQueueDepth/empty
=== RUN TestGetPerClientSendQueueDepth/64
--- PASS: TestGetPerClientSendQueueDepth (0.00s)
--- PASS: TestGetPerClientSendQueueDepth/empty (0.00s)
--- PASS: TestGetPerClientSendQueueDepth/64 (0.00s)
PASS
ok tailscale.com/derp 1.290s
? tailscale.com/envknob [no test files]
? tailscale.com/envknob/featureknob [no test files]
=== RUN TestSendRecv
derphttp_test.go:52: server URL: http://127.0.0.1:13106
derphttp_client.go:423: derphttp.Client.Connect: connecting to http://127.0.0.1:13106
derphttp_client.go:423: derphttp.Client.Connect: connecting to http://127.0.0.1:13106
derphttp_client.go:423: derphttp.Client.Connect: connecting to http://127.0.0.1:13106
logger.go:103: derp client 127.0.0.1:13109[7/W+L]: closing; server closed
logger.go:103: derp client 127.0.0.1:13107[nDtAL]: closing; server closed
--- PASS: TestSendRecv (0.04s)
=== RUN TestPing
derphttp_test.go:180: server URL: http://127.0.0.1:13114
derphttp_client.go:423: derphttp.Client.Connect: connecting to http://127.0.0.1:13114
derphttp_test.go:208: Recv: derp.ServerInfoMessage
logger.go:103: derp client 127.0.0.1:13115[PXQ8/]: closing; server closed
--- PASS: TestPing (0.00s)
=== RUN TestBreakWatcherConnRecv
derphttp_client.go:423: RunWatchConnectionLoop: connecting to http://127.0.0.1:13123
derphttp_test.go:304: add: [92Oeu]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13123
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:309: remove: [92Oeu]
mesh_client.go:143: Recv: derp.Recv: read tcp 127.0.0.1:13124->127.0.0.1:13123: use of closed network connection
derphttp_test.go:304: add: [92Oeu]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13123
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:309: remove: [92Oeu]
mesh_client.go:143: Recv: derp.Recv: read tcp 127.0.0.1:13127->127.0.0.1:13123: use of closed network connection
derphttp_test.go:304: add: [92Oeu]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13123
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:309: remove: [92Oeu]
mesh_client.go:143: Recv: derp.Recv: read tcp 127.0.0.1:13141->127.0.0.1:13123: use of closed network connection
derphttp_test.go:304: add: [92Oeu]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13123
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:309: remove: [92Oeu]
mesh_client.go:143: Recv: derp.Recv: read tcp 127.0.0.1:13173->127.0.0.1:13123: use of closed network connection
derphttp_test.go:304: add: [92Oeu]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13123
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:309: remove: [92Oeu]
mesh_client.go:143: Recv: derp.Recv: read tcp 127.0.0.1:13174->127.0.0.1:13123: use of closed network connection
derphttp_test.go:304: add: [92Oeu]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13123
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:309: remove: [92Oeu]
mesh_client.go:143: Recv: derp.Recv: read tcp 127.0.0.1:13175->127.0.0.1:13123: use of closed network connection
derphttp_test.go:304: add: [92Oeu]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13123
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:309: remove: [92Oeu]
mesh_client.go:143: Recv: derp.Recv: read tcp 127.0.0.1:13176->127.0.0.1:13123: use of closed network connection
derphttp_test.go:304: add: [92Oeu]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13123
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:309: remove: [92Oeu]
mesh_client.go:143: Recv: derp.Recv: read tcp 127.0.0.1:13177->127.0.0.1:13123: use of closed network connection
derphttp_test.go:304: add: [92Oeu]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13123
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:309: remove: [92Oeu]
mesh_client.go:143: Recv: derp.Recv: read tcp 127.0.0.1:13184->127.0.0.1:13123: use of closed network connection
derphttp_test.go:304: add: [92Oeu]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13123
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:309: remove: [92Oeu]
mesh_client.go:143: Recv: derphttp.Client closed
--- PASS: TestBreakWatcherConnRecv (0.51s)
=== RUN TestBreakWatcherConn
derphttp_client.go:423: RunWatchConnectionLoop: connecting to http://127.0.0.1:13189
derphttp_test.go:375: add: [A3c9l]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13189
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:382: remove: [A3c9l]
derphttp_test.go:375: add: [A3c9l]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13189
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:382: remove: [A3c9l]
derphttp_test.go:375: add: [A3c9l]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13189
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:382: remove: [A3c9l]
derphttp_test.go:375: add: [A3c9l]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13189
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:382: remove: [A3c9l]
derphttp_test.go:375: add: [A3c9l]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13189
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:382: remove: [A3c9l]
derphttp_test.go:375: add: [A3c9l]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13189
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:382: remove: [A3c9l]
derphttp_test.go:375: add: [A3c9l]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13189
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:382: remove: [A3c9l]
derphttp_test.go:375: add: [A3c9l]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13189
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:382: remove: [A3c9l]
derphttp_test.go:375: add: [A3c9l]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13189
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:382: remove: [A3c9l]
derphttp_test.go:375: add: [A3c9l]
derphttp_client.go:423: derphttp.Client.ForwardPacket: connecting to http://127.0.0.1:13189
mesh_client.go:71: reconnected; clearing 1 forwarding mappings
derphttp_test.go:382: remove: [A3c9l]
mesh_client.go:143: Recv: derphttp.Client closed
--- PASS: TestBreakWatcherConn (0.10s)
=== RUN TestRunWatchConnectionLoopServeConnect
derphttp_client.go:423: RunWatchConnectionLoop: connecting to http://127.0.0.1:13201
--- PASS: TestRunWatchConnectionLoopServeConnect (0.02s)
=== RUN TestLocalAddrNoMutex
--- PASS: TestLocalAddrNoMutex (0.00s)
=== RUN TestProbe
--- PASS: TestProbe (0.00s)
=== RUN TestDeps
derphttp_test.go:498: got 273 dependencies
derphttp_test.go:507: got 278 dependencies
--- PASS: TestDeps (1.52s)
PASS
ok tailscale.com/derp/derphttp 2.435s
=== RUN TestMarshalAndParse
=== RUN TestMarshalAndParse/ping
=== RUN TestMarshalAndParse/ping_with_nodekey_src
=== RUN TestMarshalAndParse/ping_with_padding
=== RUN TestMarshalAndParse/ping_with_padding_and_nodekey_src
=== RUN TestMarshalAndParse/pong
=== RUN TestMarshalAndParse/pongv6
=== RUN TestMarshalAndParse/call_me_maybe
=== RUN TestMarshalAndParse/call_me_maybe_endpoints
--- PASS: TestMarshalAndParse (0.00s)
--- PASS: TestMarshalAndParse/ping (0.00s)
--- PASS: TestMarshalAndParse/ping_with_nodekey_src (0.00s)
--- PASS: TestMarshalAndParse/ping_with_padding (0.00s)
--- PASS: TestMarshalAndParse/ping_with_padding_and_nodekey_src (0.00s)
--- PASS: TestMarshalAndParse/pong (0.00s)
--- PASS: TestMarshalAndParse/pongv6 (0.00s)
--- PASS: TestMarshalAndParse/call_me_maybe (0.00s)
--- PASS: TestMarshalAndParse/call_me_maybe_endpoints (0.00s)
PASS
ok tailscale.com/disco 0.199s
=== RUN TestRunChecks
--- PASS: TestRunChecks (0.00s)
PASS
ok tailscale.com/doctor 0.272s
=== RUN TestPermissionsImpl
permissions_bsd.go:15: uid=0("root") euid=0("root") gid=0("wheel") egid=0("wheel") groups=0("wheel"),0("wheel"),5("operator")
--- PASS: TestPermissionsImpl (0.00s)
PASS
ok tailscale.com/doctor/permissions 0.103s
=== RUN TestPermissions
=== RUN TestPermissions/a
=== RUN TestPermissions/b
=== RUN TestPermissions/c
--- PASS: TestPermissions (0.00s)
--- PASS: TestPermissions/a (0.00s)
--- PASS: TestPermissions/b (0.00s)
--- PASS: TestPermissions/c (0.00s)
=== RUN TestNormalizeShareName
=== RUN TestNormalizeShareName/name_"__(_this_is_A_5_nAme_)__"
=== RUN TestNormalizeShareName/name_""
=== RUN TestNormalizeShareName/name_"generally_good_except_for_."
--- PASS: TestNormalizeShareName (0.00s)
--- PASS: TestNormalizeShareName/name_"__(_this_is_A_5_nAme_)__" (0.00s)
--- PASS: TestNormalizeShareName/name_"" (0.00s)
--- PASS: TestNormalizeShareName/name_"generally_good_except_for_." (0.00s)
PASS
ok tailscale.com/drive 0.074s
? tailscale.com/feature [no test files]
? tailscale.com/feature/capture [no test files]
? tailscale.com/feature/capture/dissector [no test files]
? tailscale.com/feature/condregister [no test files]
? tailscale.com/feature/wakeonlan [no test files]
? tailscale.com/health/healthmsg [no test files]
? tailscale.com/internal/noiseconn [no test files]
? tailscale.com/ipn/conffile [no test files]
? tailscale.com/ipn/ipnauth [no test files]
=== RUN TestConnListener
--- PASS: TestConnListener (0.00s)
=== RUN TestDirectoryListing
drive_test.go:409: FileSystemForLocal listening at 127.0.0.1:13207
drive_test.go:438: Remote for rem ote$%<>1 listening at 127.0.0.1:13208
drive_test.go:445: FileServer for rem ote$%<>1 listening at 14cc3a0338bb3a0fed6050501f5671a29c56317c7e201535dad3c2cce7a22317|127.0.0.1:13209
drive_test.go:438: Remote for _rem ote$%<>2 listening at 127.0.0.1:13224
drive_test.go:445: FileServer for _rem ote$%<>2 listening at c4efb030f491c456594f9164cd4abd2fea8199951ae31797c5bee0130bbd569f|127.0.0.1:13225
2025/03/01 23:33:34 http: proxy error: net/http: timeout awaiting response headers
drive_test.go:414: Accept: accept tcp 127.0.0.1:13207: use of closed network connection
2025/03/01 23:33:34 serve: invalid argument
--- PASS: TestDirectoryListing (5.04s)
=== RUN TestFileManipulation
drive_test.go:409: FileSystemForLocal listening at 127.0.0.1:13242
drive_test.go:438: Remote for rem ote$%<>1 listening at 127.0.0.1:13243
drive_test.go:445: FileServer for rem ote$%<>1 listening at 002f5e1ba3d1b88f282864d2a963ce50907f1761a76d8c5f727a1a3fa4ceb849|127.0.0.1:13244
drive_test.go:414: Accept: accept tcp 127.0.0.1:13242: use of closed network connection
2025/03/01 23:33:34 serve: invalid argument
--- PASS: TestFileManipulation (0.07s)
=== RUN TestPermissions
drive_test.go:409: FileSystemForLocal listening at 127.0.0.1:13268
drive_test.go:438: Remote for rem ote$%<>1 listening at 127.0.0.1:13269
drive_test.go:445: FileServer for rem ote$%<>1 listening at f6219793c730996c3806bfe1eed03b75d4e589cb24b8df6afda1dfdfba6f1f40|127.0.0.1:13270
drive_test.go:414: Accept: accept tcp 127.0.0.1:13268: use of closed network connection
2025/03/01 23:33:34 serve: invalid argument
--- PASS: TestPermissions (0.01s)
=== RUN TestSecretTokenAuth
drive_test.go:409: FileSystemForLocal listening at 127.0.0.1:13278
drive_test.go:438: Remote for rem ote$%<>1 listening at 127.0.0.1:13279
drive_test.go:445: FileServer for rem ote$%<>1 listening at a37aa1b64f5cead4ede0de4fa10841c004d7de69b53dff0acfa054cabbb1ddd8|127.0.0.1:13280
drive_test.go:414: Accept: accept tcp 127.0.0.1:13278: use of closed network connection
2025/03/01 23:33:34 serve: invalid argument
--- PASS: TestSecretTokenAuth (0.02s)
=== RUN TestLOCK
drive_test.go:409: FileSystemForLocal listening at 127.0.0.1:13285
drive_test.go:438: Remote for rem ote$%<>1 listening at 127.0.0.1:13286
drive_test.go:445: FileServer for rem ote$%<>1 listening at c61d828cf028ebac0655fc95774fb4c5e321cda032d301825bba26a95a8a5db9|127.0.0.1:13287
drive_test.go:414: Accept: accept tcp 127.0.0.1:13285: use of closed network connection
2025/03/01 23:33:35 serve: invalid argument
--- PASS: TestLOCK (1.06s)
=== RUN TestUNLOCK
drive_test.go:409: FileSystemForLocal listening at 127.0.0.1:13303
drive_test.go:438: Remote for rem ote$%<>1 listening at 127.0.0.1:13304
drive_test.go:445: FileServer for rem ote$%<>1 listening at 90be4385fd8d6ad850eaf664454e6c2cdacdd5d6a91912ebed83f888bd240126|127.0.0.1:13305
drive_test.go:414: Accept: accept tcp 127.0.0.1:13303: use of closed network connection
2025/03/01 23:33:35 serve: invalid argument
--- PASS: TestUNLOCK (0.04s)
PASS
ok tailscale.com/drive/driveimpl 6.313s
=== RUN TestStatCacheNoTimeout
--- PASS: TestStatCacheNoTimeout (0.01s)
=== RUN TestStatCacheTimeout
--- PASS: TestStatCacheTimeout (0.52s)
=== RUN TestParentChildRelationship
2025/03/01 23:33:29 statcache.set error: XML syntax error on line 1: attribute name without = in element
=== RUN TestParentChildRelationship/1/parent
=== RUN TestParentChildRelationship/0/parent
=== RUN TestParentChildRelationship/0/parent/child.txt
=== RUN TestParentChildRelationship/0/parent/nonexistent.txt
=== RUN TestParentChildRelationship/1/missingparent
=== RUN TestParentChildRelationship/0/missingparent
=== RUN TestParentChildRelationship/0/missingparent/filename.txt
=== RUN TestParentChildRelationship/1/unparseable
=== RUN TestParentChildRelationship/0/unparseable
=== RUN TestParentChildRelationship/0/unparseable/filename.txt
=== RUN TestParentChildRelationship/1/unknown
--- PASS: TestParentChildRelationship (0.02s)
--- PASS: TestParentChildRelationship/1/parent (0.00s)
--- PASS: TestParentChildRelationship/0/parent (0.00s)
--- PASS: TestParentChildRelationship/0/parent/child.txt (0.00s)
--- PASS: TestParentChildRelationship/0/parent/nonexistent.txt (0.00s)
--- PASS: TestParentChildRelationship/1/missingparent (0.00s)
--- PASS: TestParentChildRelationship/0/missingparent (0.00s)
--- PASS: TestParentChildRelationship/0/missingparent/filename.txt (0.00s)
--- PASS: TestParentChildRelationship/1/unparseable (0.00s)
--- PASS: TestParentChildRelationship/0/unparseable (0.00s)
--- PASS: TestParentChildRelationship/0/unparseable/filename.txt (0.00s)
--- PASS: TestParentChildRelationship/1/unknown (0.00s)
PASS
ok tailscale.com/drive/driveimpl/compositedav 0.666s
=== RUN TestStat
=== RUN TestStat/root_folder
=== RUN TestStat/static_root_folder
=== RUN TestStat/remote1
=== RUN TestStat/remote2
=== RUN TestStat/non-existent_remote
--- PASS: TestStat (0.00s)
--- PASS: TestStat/root_folder (0.00s)
--- PASS: TestStat/static_root_folder (0.00s)
--- PASS: TestStat/remote1 (0.00s)
--- PASS: TestStat/remote2 (0.00s)
--- PASS: TestStat/non-existent_remote (0.00s)
=== RUN TestListDir
=== RUN TestListDir/root_folder
=== RUN TestListDir/static_root_folder
--- PASS: TestListDir (0.00s)
--- PASS: TestListDir/root_folder (0.00s)
--- PASS: TestListDir/static_root_folder (0.00s)
=== RUN TestMkdir
=== RUN TestMkdir/attempt_to_create_root_folder
=== RUN TestMkdir/attempt_to_create_static_root_folder
=== RUN TestMkdir/attempt_to_create_remote
=== RUN TestMkdir/attempt_to_create_non-existent_remote
--- PASS: TestMkdir (0.00s)
--- PASS: TestMkdir/attempt_to_create_root_folder (0.00s)
--- PASS: TestMkdir/attempt_to_create_static_root_folder (0.00s)
--- PASS: TestMkdir/attempt_to_create_remote (0.00s)
--- PASS: TestMkdir/attempt_to_create_non-existent_remote (0.00s)
=== RUN TestRemoveAll
=== RUN TestRemoveAll/attempt_to_remove_root_folder
--- PASS: TestRemoveAll (0.00s)
--- PASS: TestRemoveAll/attempt_to_remove_root_folder (0.00s)
=== RUN TestRename
=== RUN TestRename/attempt_to_move_root_folder
--- PASS: TestRename (0.00s)
--- PASS: TestRename/attempt_to_move_root_folder (0.00s)
PASS
ok tailscale.com/drive/driveimpl/dirfs 0.120s
=== RUN TestCleanAndSplit
=== RUN TestCleanAndSplit/#00
=== RUN TestCleanAndSplit//
=== RUN TestCleanAndSplit///
=== RUN TestCleanAndSplit/a
=== RUN TestCleanAndSplit//a
=== RUN TestCleanAndSplit/a/
=== RUN TestCleanAndSplit//a/
=== RUN TestCleanAndSplit/a/b
=== RUN TestCleanAndSplit//a/b
=== RUN TestCleanAndSplit/a/b/
=== RUN TestCleanAndSplit//a/b/
=== RUN TestCleanAndSplit//a/../b
--- PASS: TestCleanAndSplit (0.00s)
--- PASS: TestCleanAndSplit/#00 (0.00s)
--- PASS: TestCleanAndSplit// (0.00s)
--- PASS: TestCleanAndSplit/// (0.00s)
--- PASS: TestCleanAndSplit/a (0.00s)
--- PASS: TestCleanAndSplit//a (0.00s)
--- PASS: TestCleanAndSplit/a/ (0.00s)
--- PASS: TestCleanAndSplit//a/ (0.00s)
--- PASS: TestCleanAndSplit/a/b (0.00s)
--- PASS: TestCleanAndSplit//a/b (0.00s)
--- PASS: TestCleanAndSplit/a/b/ (0.00s)
--- PASS: TestCleanAndSplit//a/b/ (0.00s)
--- PASS: TestCleanAndSplit//a/../b (0.00s)
=== RUN TestJoin
=== RUN TestJoin//
=== RUN TestJoin//a
=== RUN TestJoin//a#01
=== RUN TestJoin//a#02
=== RUN TestJoin//a/b
=== RUN TestJoin//b/c
--- PASS: TestJoin (0.00s)
--- PASS: TestJoin// (0.00s)
--- PASS: TestJoin//a (0.00s)
--- PASS: TestJoin//a#01 (0.00s)
--- PASS: TestJoin//a#02 (0.00s)
--- PASS: TestJoin//a/b (0.00s)
--- PASS: TestJoin//b/c (0.00s)
PASS
ok tailscale.com/drive/driveimpl/shared 0.132s
=== RUN TestLogKnob
=== RUN TestLogKnob/Default
=== RUN TestLogKnob/Manual
=== RUN TestLogKnob/Env
=== RUN TestLogKnob/NetMap
--- PASS: TestLogKnob (0.00s)
--- PASS: TestLogKnob/Default (0.00s)
--- PASS: TestLogKnob/Manual (0.00s)
--- PASS: TestLogKnob/Env (0.00s)
--- PASS: TestLogKnob/NetMap (0.00s)
PASS
ok tailscale.com/envknob/logknob 0.081s
=== RUN TestAppendWarnableDebugFlags
--- PASS: TestAppendWarnableDebugFlags (0.00s)
=== RUN TestNilMethodsDontCrash
health_test.go:53: calling Tracker.AppendWarnableDebugFlags ...
health_test.go:53: calling Tracker.CurrentState ...
health_test.go:53: calling Tracker.DNSHealth ...
health_test.go:53: calling Tracker.GetDERPRegionReceivedTime ...
health_test.go:53: calling Tracker.GetInPollNetMap ...
health_test.go:53: calling Tracker.GotStreamedMapResponse ...
health_test.go:53: calling Tracker.LastNoiseDialWasRecent ...
health_test.go:53: calling Tracker.NoteDERPRegionReceivedFrame ...
health_test.go:53: calling Tracker.NoteMapRequestHeard ...
health_test.go:53: calling Tracker.OverallError ...
health_test.go:53: calling Tracker.ReceiveFuncStats ...
health_test.go:53: calling Tracker.RegisterWatcher ...
health_test.go:53: calling Tracker.RouterHealth ...
health_test.go:53: calling Tracker.SetAnyInterfaceUp ...
health_test.go:53: calling Tracker.SetAuthRoutineInError ...
health_test.go:53: calling Tracker.SetAutoUpdatePrefs ...
health_test.go:53: calling Tracker.SetControlHealth ...
health_test.go:53: calling Tracker.SetDERPMap ...
health_test.go:53: calling Tracker.SetDERPRegionConnectedState ...
health_test.go:53: calling Tracker.SetDERPRegionHealth ...
health_test.go:53: calling Tracker.SetDNSHealth ...
health_test.go:53: calling Tracker.SetDNSManagerHealth ...
health_test.go:53: calling Tracker.SetHealthy ...
health_test.go:53: calling Tracker.SetIPNState ...
health_test.go:53: calling Tracker.SetLatestVersion ...
health_test.go:53: calling Tracker.SetLocalLogConfigHealth ...
health_test.go:53: calling Tracker.SetMagicSockDERPHome ...
health_test.go:53: calling Tracker.SetMetricsRegistry ...
health_test.go:53: calling Tracker.SetOutOfPollNetMap ...
health_test.go:53: calling Tracker.SetRouterHealth ...
health_test.go:53: calling Tracker.SetTKAHealth ...
health_test.go:53: calling Tracker.SetTLSConnectionError ...
health_test.go:53: calling Tracker.SetUDP4Unbound ...
health_test.go:53: calling Tracker.SetUnhealthy ...
health_test.go:53: calling Tracker.Strings ...
health_test.go:53: calling Tracker.TKAHealth ...
--- PASS: TestNilMethodsDontCrash (0.00s)
=== RUN TestSetUnhealthyWithDuplicateThenHealthyAgain
--- PASS: TestSetUnhealthyWithDuplicateThenHealthyAgain (0.00s)
=== RUN TestRemoveAllWarnings
--- PASS: TestRemoveAllWarnings (0.00s)
=== RUN TestWatcher
--- PASS: TestWatcher (0.00s)
=== RUN TestSetUnhealthyWithTimeToVisible
--- PASS: TestSetUnhealthyWithTimeToVisible (1.01s)
=== RUN TestRegisterWarnablePanicsWithDuplicate
--- PASS: TestRegisterWarnablePanicsWithDuplicate (0.00s)
=== RUN TestCheckDependsOnAppearsInUnhealthyState
--- PASS: TestCheckDependsOnAppearsInUnhealthyState (0.00s)
=== RUN TestShowUpdateWarnable
=== RUN TestShowUpdateWarnable/nil_ClientVersion
=== RUN TestShowUpdateWarnable/RunningLatest
=== RUN TestShowUpdateWarnable/no_LatestVersion
=== RUN TestShowUpdateWarnable/show_regular_update
=== RUN TestShowUpdateWarnable/show_security_update
=== RUN TestShowUpdateWarnable/update_check_disabled
=== RUN TestShowUpdateWarnable/hide_update_with_auto-updates
=== RUN TestShowUpdateWarnable/show_security_update_with_auto-updates
--- PASS: TestShowUpdateWarnable (0.00s)
--- PASS: TestShowUpdateWarnable/nil_ClientVersion (0.00s)
--- PASS: TestShowUpdateWarnable/RunningLatest (0.00s)
--- PASS: TestShowUpdateWarnable/no_LatestVersion (0.00s)
--- PASS: TestShowUpdateWarnable/show_regular_update (0.00s)
--- PASS: TestShowUpdateWarnable/show_security_update (0.00s)
--- PASS: TestShowUpdateWarnable/update_check_disabled (0.00s)
--- PASS: TestShowUpdateWarnable/hide_update_with_auto-updates (0.00s)
--- PASS: TestShowUpdateWarnable/show_security_update_with_auto-updates (0.00s)
=== RUN TestHealthMetric
=== RUN TestHealthMetric/base-warnings
health_test.go:405: warning: {wantrunning-false low Tailscale off Tailscale is stopped. 2025-03-01 23:33:31.174973905 -0500 EST m=+1.016779203 map[State:] [warming-up] false}
=== RUN TestHealthMetric/update-warning
health_test.go:405: warning: {update-available low Update available An update from version 1.80.0-ERR-BuildInfo to 1.2.3 is available. Run `tailscale update` or `tailscale set --auto-update` to update now. 2025-03-01 23:33:31.176257133 -0500 EST m=+1.017481405 map[available-version:1.2.3 current-version:1.80.0-ERR-BuildInfo] [warming-up] false}
health_test.go:405: warning: {wantrunning-false low Tailscale off Tailscale is stopped. 2025-03-01 23:33:31.176304757 -0500 EST m=+1.017531711 map[State:] [warming-up] false}
--- PASS: TestHealthMetric (0.00s)
--- PASS: TestHealthMetric/base-warnings (0.00s)
--- PASS: TestHealthMetric/update-warning (0.00s)
=== RUN TestNoDERPHomeWarnable
health_test.go:415: TODO: fix https://github.com/tailscale/tailscale/issues/14798 to make this test not deadlock
--- SKIP: TestNoDERPHomeWarnable (0.00s)
=== RUN TestNoDERPHomeWarnableManual
--- PASS: TestNoDERPHomeWarnableManual (0.00s)
PASS
ok tailscale.com/health 1.063s
=== RUN TestNew
hostinfo_test.go:21: Got: {
"IPNVersion": "1.80.0-ERR-BuildInfo",
"OS": "freebsd",
"OSVersion": "3.2.2",
"Hostname": "m3264b",
"Machine": "amd64",
"GoArch": "amd64",
"GoVersion": "go1.23.3"
}
--- PASS: TestNew (0.00s)
=== RUN TestOSVersion
hostinfo_test.go:28: Got: `3.2.2`
--- PASS: TestOSVersion (0.00s)
=== RUN TestEtcAptSourceFileIsDisabled
=== RUN TestEtcAptSourceFileIsDisabled/empty
=== RUN TestEtcAptSourceFileIsDisabled/normal
=== RUN TestEtcAptSourceFileIsDisabled/normal-commented
=== RUN TestEtcAptSourceFileIsDisabled/normal-disabled-by-ubuntu
=== RUN TestEtcAptSourceFileIsDisabled/normal-disabled-then-uncommented
--- PASS: TestEtcAptSourceFileIsDisabled (0.00s)
--- PASS: TestEtcAptSourceFileIsDisabled/empty (0.00s)
--- PASS: TestEtcAptSourceFileIsDisabled/normal (0.00s)
--- PASS: TestEtcAptSourceFileIsDisabled/normal-commented (0.00s)
--- PASS: TestEtcAptSourceFileIsDisabled/normal-disabled-by-ubuntu (0.00s)
--- PASS: TestEtcAptSourceFileIsDisabled/normal-disabled-then-uncommented (0.00s)
PASS
ok tailscale.com/hostinfo 0.077s
=== RUN TestDeps
ipn_test.go:21: got 236 dependencies
--- PASS: TestDeps (0.58s)
=== RUN TestPrefsEqual
--- PASS: TestPrefsEqual (0.00s)
=== RUN TestBasicPrefs
prefs_test.go:362:
pp: "Prefs{ra=false dns=false want=false update=off Persist=nil}"
prefs_test.go:382:
p2p: "Prefs{ra=true dns=false want=false update=off Persist=nil}"
p2bp: "Prefs{ra=true dns=false want=false update=off Persist=nil}"
--- PASS: TestBasicPrefs (0.00s)
=== RUN TestPrefsPersist
prefs_test.go:362:
pp: "Prefs{ra=false dns=true want=false update=off Persist{o=, n= u=\"test@example.com\"}}"
prefs_test.go:382:
p2p: "Prefs{ra=true dns=true want=false update=off Persist{o=, n= u=\"test@example.com\"}}"
p2bp: "Prefs{ra=true dns=true want=false update=off Persist{o=, n= u=\"test@example.com\"}}"
--- PASS: TestPrefsPersist (0.00s)
=== RUN TestPrefsPretty
--- PASS: TestPrefsPretty (0.00s)
=== RUN TestLoadPrefsNotExist
--- PASS: TestLoadPrefsNotExist (0.00s)
=== RUN TestLoadPrefsFileWithZeroInIt
--- PASS: TestLoadPrefsFileWithZeroInIt (0.00s)
=== RUN TestMaskedPrefsSetsInternal
--- PASS: TestMaskedPrefsSetsInternal (0.00s)
=== RUN TestMaskedPrefsFields
--- PASS: TestMaskedPrefsFields (0.00s)
=== RUN TestPrefsApplyEdits
=== RUN TestPrefsApplyEdits/no_change
=== RUN TestPrefsApplyEdits/set1_decoy1
=== RUN TestPrefsApplyEdits/set_several
--- PASS: TestPrefsApplyEdits (0.00s)
--- PASS: TestPrefsApplyEdits/no_change (0.00s)
--- PASS: TestPrefsApplyEdits/set1_decoy1 (0.00s)
--- PASS: TestPrefsApplyEdits/set_several (0.00s)
=== RUN TestMaskedPrefsPretty
--- PASS: TestMaskedPrefsPretty (0.00s)
=== RUN TestPrefsExitNode
--- PASS: TestPrefsExitNode (0.00s)
=== RUN TestExitNodeIPOfArg
=== RUN TestExitNodeIPOfArg/ip_while_stopped_okay
=== RUN TestExitNodeIPOfArg/ip_not_found
=== RUN TestExitNodeIPOfArg/ip_not_exit
=== RUN TestExitNodeIPOfArg/ip
=== RUN TestExitNodeIPOfArg/no_match
=== RUN TestExitNodeIPOfArg/name
=== RUN TestExitNodeIPOfArg/name_fqdn
=== RUN TestExitNodeIPOfArg/name_not_exit
=== RUN TestExitNodeIPOfArg/name_wrong_fqdn
=== RUN TestExitNodeIPOfArg/ambiguous
--- PASS: TestExitNodeIPOfArg (0.00s)
--- PASS: TestExitNodeIPOfArg/ip_while_stopped_okay (0.00s)
--- PASS: TestExitNodeIPOfArg/ip_not_found (0.00s)
--- PASS: TestExitNodeIPOfArg/ip_not_exit (0.00s)
--- PASS: TestExitNodeIPOfArg/ip (0.00s)
--- PASS: TestExitNodeIPOfArg/no_match (0.00s)
--- PASS: TestExitNodeIPOfArg/name (0.00s)
--- PASS: TestExitNodeIPOfArg/name_fqdn (0.00s)
--- PASS: TestExitNodeIPOfArg/name_not_exit (0.00s)
--- PASS: TestExitNodeIPOfArg/name_wrong_fqdn (0.00s)
--- PASS: TestExitNodeIPOfArg/ambiguous (0.00s)
=== RUN TestControlURLOrDefault
--- PASS: TestControlURLOrDefault (0.00s)
=== RUN TestMaskedPrefsIsEmpty
=== RUN TestMaskedPrefsIsEmpty/nil
=== RUN TestMaskedPrefsIsEmpty/empty
=== RUN TestMaskedPrefsIsEmpty/no-masks
=== RUN TestMaskedPrefsIsEmpty/with-mask
--- PASS: TestMaskedPrefsIsEmpty (0.00s)
--- PASS: TestMaskedPrefsIsEmpty/nil (0.00s)
--- PASS: TestMaskedPrefsIsEmpty/empty (0.00s)
--- PASS: TestMaskedPrefsIsEmpty/no-masks (0.00s)
--- PASS: TestMaskedPrefsIsEmpty/with-mask (0.00s)
=== RUN TestNotifyPrefsJSONRoundtrip
--- PASS: TestNotifyPrefsJSONRoundtrip (0.00s)
=== RUN TestPrefsDowngrade
--- PASS: TestPrefsDowngrade (0.00s)
=== RUN TestCheckFunnelAccess
--- PASS: TestCheckFunnelAccess (0.00s)
=== RUN TestHasPathHandler
=== RUN TestHasPathHandler/empty-config
=== RUN TestHasPathHandler/with-bg-path-handler
=== RUN TestHasPathHandler/with-fg-path-handler
=== RUN TestHasPathHandler/with-no-bg-path-handler
=== RUN TestHasPathHandler/with-no-fg-path-handler
--- PASS: TestHasPathHandler (0.00s)
--- PASS: TestHasPathHandler/empty-config (0.00s)
--- PASS: TestHasPathHandler/with-bg-path-handler (0.00s)
--- PASS: TestHasPathHandler/with-fg-path-handler (0.00s)
--- PASS: TestHasPathHandler/with-no-bg-path-handler (0.00s)
--- PASS: TestHasPathHandler/with-no-fg-path-handler (0.00s)
=== RUN TestExpandProxyTargetDev
=== RUN TestExpandProxyTargetDev/port-only
=== RUN TestExpandProxyTargetDev/hostname+port
=== RUN TestExpandProxyTargetDev/no-change
=== RUN TestExpandProxyTargetDev/include-path
=== RUN TestExpandProxyTargetDev/https-scheme
=== RUN TestExpandProxyTargetDev/https+insecure-scheme
=== RUN TestExpandProxyTargetDev/change-default-scheme
=== RUN TestExpandProxyTargetDev/change-supported-schemes
=== RUN TestExpandProxyTargetDev/invalid-port
=== RUN TestExpandProxyTargetDev/unsupported-scheme
=== RUN TestExpandProxyTargetDev/not-localhost
=== RUN TestExpandProxyTargetDev/empty-input
--- PASS: TestExpandProxyTargetDev (0.00s)
--- PASS: TestExpandProxyTargetDev/port-only (0.00s)
--- PASS: TestExpandProxyTargetDev/hostname+port (0.00s)
--- PASS: TestExpandProxyTargetDev/no-change (0.00s)
--- PASS: TestExpandProxyTargetDev/include-path (0.00s)
--- PASS: TestExpandProxyTargetDev/https-scheme (0.00s)
--- PASS: TestExpandProxyTargetDev/https+insecure-scheme (0.00s)
--- PASS: TestExpandProxyTargetDev/change-default-scheme (0.00s)
--- PASS: TestExpandProxyTargetDev/change-supported-schemes (0.00s)
--- PASS: TestExpandProxyTargetDev/invalid-port (0.00s)
--- PASS: TestExpandProxyTargetDev/unsupported-scheme (0.00s)
--- PASS: TestExpandProxyTargetDev/not-localhost (0.00s)
--- PASS: TestExpandProxyTargetDev/empty-input (0.00s)
=== RUN TestIsFunnelOn
=== RUN TestIsFunnelOn/nil_config
=== RUN TestIsFunnelOn/empty_config
=== RUN TestIsFunnelOn/funnel_enabled_in_background
=== RUN TestIsFunnelOn/funnel_disabled_in_background
=== RUN TestIsFunnelOn/funnel_enabled_in_foreground
=== RUN TestIsFunnelOn/funnel_disabled_in_both
=== RUN TestIsFunnelOn/funnel_enabled_in_both
--- PASS: TestIsFunnelOn (0.00s)
--- PASS: TestIsFunnelOn/nil_config (0.00s)
--- PASS: TestIsFunnelOn/empty_config (0.00s)
--- PASS: TestIsFunnelOn/funnel_enabled_in_background (0.00s)
--- PASS: TestIsFunnelOn/funnel_disabled_in_background (0.00s)
--- PASS: TestIsFunnelOn/funnel_enabled_in_foreground (0.00s)
--- PASS: TestIsFunnelOn/funnel_disabled_in_both (0.00s)
--- PASS: TestIsFunnelOn/funnel_enabled_in_both (0.00s)
=== RUN TestWriteState
--- PASS: TestWriteState (0.00s)
PASS
ok tailscale.com/ipn 0.679s
? tailscale.com/ipn/ipnstate [no test files]
? tailscale.com/ipn/policy [no test files]
? tailscale.com/ipn/store/awsstore [no test files]
? tailscale.com/ipn/store/kubestore [no test files]
? tailscale.com/ipn/store/mem [no test files]
? tailscale.com/k8s-operator/apis [no test files]
? tailscale.com/k8s-operator/apis/v1alpha1 [no test files]
? tailscale.com/k8s-operator/sessionrecording/fakes [no test files]
? tailscale.com/k8s-operator/sessionrecording/tsrecorder [no test files]
? tailscale.com/kube/kubeapi [no test files]
? tailscale.com/kube/kubetypes [no test files]
? tailscale.com/licenses [no test files]
? tailscale.com/logtail/backoff [no test files]
? tailscale.com/logtail/example/logadopt [no test files]
? tailscale.com/logtail/example/logreprocess [no test files]
? tailscale.com/logtail/example/logtail [no test files]
? tailscale.com/net/netaddr [no test files]
? tailscale.com/net/neterror [no test files]
? tailscale.com/net/netkernelconf [no test files]
? tailscale.com/net/netknob [no test files]
? tailscale.com/net/sockstats [no test files]
? tailscale.com/net/stun/stuntest [no test files]
=== RUN TestIsNotableNotify
--- PASS: TestIsNotableNotify (0.00s)
=== RUN TestRateLimitingBusSender
=== RUN TestRateLimitingBusSender/unbuffered
=== RUN TestRateLimitingBusSender/buffered
=== RUN TestRateLimitingBusSender/run
--- PASS: TestRateLimitingBusSender (0.00s)
--- PASS: TestRateLimitingBusSender/unbuffered (0.00s)
--- PASS: TestRateLimitingBusSender/buffered (0.00s)
--- PASS: TestRateLimitingBusSender/run (0.00s)
=== RUN TestHandleC2NTLSCertStatus
=== RUN TestHandleC2NTLSCertStatus/no_domain
=== RUN TestHandleC2NTLSCertStatus/missing
=== RUN TestHandleC2NTLSCertStatus/valid
=== RUN TestHandleC2NTLSCertStatus/expired
--- PASS: TestHandleC2NTLSCertStatus (0.01s)
--- PASS: TestHandleC2NTLSCertStatus/no_domain (0.00s)
--- PASS: TestHandleC2NTLSCertStatus/missing (0.00s)
--- PASS: TestHandleC2NTLSCertStatus/valid (0.00s)
--- PASS: TestHandleC2NTLSCertStatus/expired (0.00s)
=== RUN TestValidLookingCertDomain
--- PASS: TestValidLookingCertDomain (0.00s)
=== RUN TestCertStoreRoundTrip
=== RUN TestCertStoreRoundTrip/FileStore
=== RUN TestCertStoreRoundTrip/StateStore
--- PASS: TestCertStoreRoundTrip (0.03s)
--- PASS: TestCertStoreRoundTrip/FileStore (0.02s)
--- PASS: TestCertStoreRoundTrip/StateStore (0.01s)
=== RUN TestShouldStartDomainRenewal
=== RUN TestShouldStartDomainRenewal/should_renew
=== RUN TestShouldStartDomainRenewal/short-lived_renewal
=== RUN TestShouldStartDomainRenewal/no_renew
--- PASS: TestShouldStartDomainRenewal (0.00s)
--- PASS: TestShouldStartDomainRenewal/should_renew (0.00s)
--- PASS: TestShouldStartDomainRenewal/short-lived_renewal (0.00s)
--- PASS: TestShouldStartDomainRenewal/no_renew (0.00s)
=== RUN TestDebugACMEDirectoryURL
=== RUN TestDebugACMEDirectoryURL/#00
=== RUN TestDebugACMEDirectoryURL/https://acme-staging-v02.api.letsencrypt.org/directory
--- PASS: TestDebugACMEDirectoryURL (0.00s)
--- PASS: TestDebugACMEDirectoryURL/#00 (0.00s)
--- PASS: TestDebugACMEDirectoryURL/https://acme-staging-v02.api.letsencrypt.org/directory (0.00s)
=== RUN TestDNSConfigForNetmap
=== RUN TestDNSConfigForNetmap/empty
=== RUN TestDNSConfigForNetmap/self_name_and_peers
=== RUN TestDNSConfigForNetmap/v6_only_self
=== RUN TestDNSConfigForNetmap/extra_records
=== RUN TestDNSConfigForNetmap/corp_dns_misc
=== RUN TestDNSConfigForNetmap/android_does_NOT_need_fallbacks
=== RUN TestDNSConfigForNetmap/exit_nodes_need_fallbacks
=== RUN TestDNSConfigForNetmap/not_exit_node_NOT_need_fallbacks
=== RUN TestDNSConfigForNetmap/self_expired
--- PASS: TestDNSConfigForNetmap (0.00s)
--- PASS: TestDNSConfigForNetmap/empty (0.00s)
--- PASS: TestDNSConfigForNetmap/self_name_and_peers (0.00s)
--- PASS: TestDNSConfigForNetmap/v6_only_self (0.00s)
--- PASS: TestDNSConfigForNetmap/extra_records (0.00s)
--- PASS: TestDNSConfigForNetmap/corp_dns_misc (0.00s)
--- PASS: TestDNSConfigForNetmap/android_does_NOT_need_fallbacks (0.00s)
--- PASS: TestDNSConfigForNetmap/exit_nodes_need_fallbacks (0.00s)
--- PASS: TestDNSConfigForNetmap/not_exit_node_NOT_need_fallbacks (0.00s)
--- PASS: TestDNSConfigForNetmap/self_expired (0.00s)
=== RUN TestAllowExitNodeDNSProxyToServeName
--- PASS: TestAllowExitNodeDNSProxyToServeName (0.00s)
=== RUN TestFlagExpiredPeers
=== RUN TestFlagExpiredPeers/no_expiry
=== RUN TestFlagExpiredPeers/expiry
expiry.go:102: [v1] netmap: flagExpiredPeers: clearing expired peer
=== RUN TestFlagExpiredPeers/bad_ControlTime
expiry.go:59: [v1] netmap: flagExpiredPeers: setting clock delta to -1m4s
expiry.go:86: netmap: flagExpiredPeers: [unexpected] delta-adjusted current time is before hardcoded epoch; skipping
=== RUN TestFlagExpiredPeers/tagged_node
--- PASS: TestFlagExpiredPeers (0.00s)
--- PASS: TestFlagExpiredPeers/no_expiry (0.00s)
--- PASS: TestFlagExpiredPeers/expiry (0.00s)
--- PASS: TestFlagExpiredPeers/bad_ControlTime (0.00s)
--- PASS: TestFlagExpiredPeers/tagged_node (0.00s)
=== RUN TestNextPeerExpiry
=== RUN TestNextPeerExpiry/no_expiry
=== RUN TestNextPeerExpiry/future_expiry_from_peer
=== RUN TestNextPeerExpiry/future_expiry_from_self
=== RUN TestNextPeerExpiry/future_expiry_from_multiple_peers
=== RUN TestNextPeerExpiry/future_expiry_from_peer_and_self
=== RUN TestNextPeerExpiry/only_self
=== RUN TestNextPeerExpiry/peer_already_expired
=== RUN TestNextPeerExpiry/self_already_expired
=== RUN TestNextPeerExpiry/all_nodes_already_expired
=== RUN TestNextPeerExpiry/ClockSkew
expiry_test.go:255: local time: "2023-02-06T18:18:36-05:00"
expiry_test.go:261: 'real' time: "2023-02-06T16:18:36-05:00"
expiry.go:212: netmap: nextPeerExpiry: skipping nextExpiry "2023-02-06T22:18:36Z" before local time "2023-02-06T23:18:36Z" due to clock skew
--- PASS: TestNextPeerExpiry (0.00s)
--- PASS: TestNextPeerExpiry/no_expiry (0.00s)
--- PASS: TestNextPeerExpiry/future_expiry_from_peer (0.00s)
--- PASS: TestNextPeerExpiry/future_expiry_from_self (0.00s)
--- PASS: TestNextPeerExpiry/future_expiry_from_multiple_peers (0.00s)
--- PASS: TestNextPeerExpiry/future_expiry_from_peer_and_self (0.00s)
--- PASS: TestNextPeerExpiry/only_self (0.00s)
--- PASS: TestNextPeerExpiry/peer_already_expired (0.00s)
--- PASS: TestNextPeerExpiry/self_already_expired (0.00s)
--- PASS: TestNextPeerExpiry/all_nodes_already_expired (0.00s)
--- PASS: TestNextPeerExpiry/ClockSkew (0.00s)
=== RUN TestShrinkDefaultRoute
--- PASS: TestShrinkDefaultRoute (0.00s)
=== RUN TestPeerRoutes
=== RUN TestPeerRoutes/small_v4
=== RUN TestPeerRoutes/big_v4
=== RUN TestPeerRoutes/has_1_v6
=== RUN TestPeerRoutes/has_2_v6
=== RUN TestPeerRoutes/big_v4_big_v6
=== RUN TestPeerRoutes/output-should-be-sorted
=== RUN TestPeerRoutes/skip-unmasked-prefixes
local.go:5012: advertised route 10.0.0.100/16 from [BGM06] has non-address bits set; expected 10.0.0.0/16
--- PASS: TestPeerRoutes (0.00s)
--- PASS: TestPeerRoutes/small_v4 (0.00s)
--- PASS: TestPeerRoutes/big_v4 (0.00s)
--- PASS: TestPeerRoutes/has_1_v6 (0.00s)
--- PASS: TestPeerRoutes/has_2_v6 (0.00s)
--- PASS: TestPeerRoutes/big_v4_big_v6 (0.00s)
--- PASS: TestPeerRoutes/output-should-be-sorted (0.00s)
--- PASS: TestPeerRoutes/skip-unmasked-prefixes (0.00s)
=== RUN TestPeerAPIBase
=== RUN TestPeerAPIBase/nil_netmap
=== RUN TestPeerAPIBase/nil_peer
=== RUN TestPeerAPIBase/self_only_4_them_both
=== RUN TestPeerAPIBase/self_only_6_them_both
=== RUN TestPeerAPIBase/self_both_them_only_4
=== RUN TestPeerAPIBase/self_both_them_only_6
=== RUN TestPeerAPIBase/self_both_them_no_peerapi_service
--- PASS: TestPeerAPIBase (0.00s)
--- PASS: TestPeerAPIBase/nil_netmap (0.00s)
--- PASS: TestPeerAPIBase/nil_peer (0.00s)
--- PASS: TestPeerAPIBase/self_only_4_them_both (0.00s)
--- PASS: TestPeerAPIBase/self_only_6_them_both (0.00s)
--- PASS: TestPeerAPIBase/self_both_them_only_4 (0.00s)
--- PASS: TestPeerAPIBase/self_both_them_only_6 (0.00s)
--- PASS: TestPeerAPIBase/self_both_them_no_peerapi_service (0.00s)
=== RUN TestLazyMachineKeyGeneration
--- PASS: TestLazyMachineKeyGeneration (0.52s)
=== RUN TestZeroExitNodeViaLocalAPI
--- PASS: TestZeroExitNodeViaLocalAPI (0.00s)
=== RUN TestSetUseExitNodeEnabled
--- PASS: TestSetUseExitNodeEnabled (0.00s)
=== RUN TestFileTargets
--- PASS: TestFileTargets (0.00s)
=== RUN TestInternalAndExternalInterfaces
=== RUN TestInternalAndExternalInterfaces/single-interface
=== RUN TestInternalAndExternalInterfaces/multiple-interfaces
=== RUN TestInternalAndExternalInterfaces/wsl2
--- PASS: TestInternalAndExternalInterfaces (0.00s)
--- PASS: TestInternalAndExternalInterfaces/single-interface (0.00s)
--- PASS: TestInternalAndExternalInterfaces/multiple-interfaces (0.00s)
--- PASS: TestInternalAndExternalInterfaces/wsl2 (0.00s)
=== RUN TestPacketFilterPermitsUnlockedNodes
=== RUN TestPacketFilterPermitsUnlockedNodes/empty
=== RUN TestPacketFilterPermitsUnlockedNodes/no-unsigned
=== RUN TestPacketFilterPermitsUnlockedNodes/unsigned-good
=== RUN TestPacketFilterPermitsUnlockedNodes/unsigned-bad
=== RUN TestPacketFilterPermitsUnlockedNodes/unsigned-bad-src-is-superset
=== RUN TestPacketFilterPermitsUnlockedNodes/unsigned-okay-because-no-dsts
--- PASS: TestPacketFilterPermitsUnlockedNodes (0.00s)
--- PASS: TestPacketFilterPermitsUnlockedNodes/empty (0.00s)
--- PASS: TestPacketFilterPermitsUnlockedNodes/no-unsigned (0.00s)
--- PASS: TestPacketFilterPermitsUnlockedNodes/unsigned-good (0.00s)
--- PASS: TestPacketFilterPermitsUnlockedNodes/unsigned-bad (0.00s)
--- PASS: TestPacketFilterPermitsUnlockedNodes/unsigned-bad-src-is-superset (0.00s)
--- PASS: TestPacketFilterPermitsUnlockedNodes/unsigned-okay-because-no-dsts (0.00s)
=== RUN TestStatusPeerCapabilities
=== RUN TestStatusPeerCapabilities/peers-with-capabilities
=== RUN TestStatusPeerCapabilities/peers-without-capabilities
--- PASS: TestStatusPeerCapabilities (0.00s)
--- PASS: TestStatusPeerCapabilities/peers-with-capabilities (0.00s)
--- PASS: TestStatusPeerCapabilities/peers-without-capabilities (0.00s)
=== RUN TestWatchNotificationsCallbacks
--- PASS: TestWatchNotificationsCallbacks (0.00s)
=== RUN TestUpdateNetmapDelta
--- PASS: TestUpdateNetmapDelta (0.00s)
=== RUN TestWhoIs
=== RUN TestWhoIs/100.101.102.103:0
=== RUN TestWhoIs/100.101.102.103:123
=== RUN TestWhoIs/100.200.200.200:0
=== RUN TestWhoIs/100.200.200.200:123
=== RUN TestWhoIs/100.4.0.4:404
--- PASS: TestWhoIs (0.40s)
--- PASS: TestWhoIs/100.101.102.103:0 (0.00s)
--- PASS: TestWhoIs/100.101.102.103:123 (0.00s)
--- PASS: TestWhoIs/100.200.200.200:0 (0.00s)
--- PASS: TestWhoIs/100.200.200.200:123 (0.00s)
--- PASS: TestWhoIs/100.4.0.4:404 (0.40s)
=== RUN TestWireguardExitNodeDNSResolvers
--- PASS: TestWireguardExitNodeDNSResolvers (0.00s)
=== RUN TestDNSConfigForNetmapForExitNodeConfigs
=== RUN TestDNSConfigForNetmapForExitNodeConfigs/noExit/noRoutes/noResolver
=== RUN TestDNSConfigForNetmapForExitNodeConfigs/tsExit/noRoutes/noResolver
=== RUN TestDNSConfigForNetmapForExitNodeConfigs/tsExit/noRoutes/defaultResolver
=== RUN TestDNSConfigForNetmapForExitNodeConfigs/tsExit/routes/noResolver
=== RUN TestDNSConfigForNetmapForExitNodeConfigs/tsExit/routes/defaultResolver
=== RUN TestDNSConfigForNetmapForExitNodeConfigs/wgExit/noRoutes/noResolver
=== RUN TestDNSConfigForNetmapForExitNodeConfigs/wgExit/noRoutes/defaultResolver
=== RUN TestDNSConfigForNetmapForExitNodeConfigs/wgExit/routes/defaultResolver
=== RUN TestDNSConfigForNetmapForExitNodeConfigs/wgExit/routes/noResolver
--- PASS: TestDNSConfigForNetmapForExitNodeConfigs (0.00s)
--- PASS: TestDNSConfigForNetmapForExitNodeConfigs/noExit/noRoutes/noResolver (0.00s)
--- PASS: TestDNSConfigForNetmapForExitNodeConfigs/tsExit/noRoutes/noResolver (0.00s)
--- PASS: TestDNSConfigForNetmapForExitNodeConfigs/tsExit/noRoutes/defaultResolver (0.00s)
--- PASS: TestDNSConfigForNetmapForExitNodeConfigs/tsExit/routes/noResolver (0.00s)
--- PASS: TestDNSConfigForNetmapForExitNodeConfigs/tsExit/routes/defaultResolver (0.00s)
--- PASS: TestDNSConfigForNetmapForExitNodeConfigs/wgExit/noRoutes/noResolver (0.00s)
--- PASS: TestDNSConfigForNetmapForExitNodeConfigs/wgExit/noRoutes/defaultResolver (0.00s)
--- PASS: TestDNSConfigForNetmapForExitNodeConfigs/wgExit/routes/defaultResolver (0.00s)
--- PASS: TestDNSConfigForNetmapForExitNodeConfigs/wgExit/routes/noResolver (0.00s)
=== RUN TestOfferingAppConnector
logger.go:103: ... ... [v1] using fake (no-op) tun device
logger.go:103: ... ... [v1] using fake (no-op) OS network configurator
logger.go:103: ... ... [v1] using fake (no-op) DNS configurator
logger.go:103: ... ... monitor: devd dial error: dial unixpacket /var/run/devd.seqpacket.pipe: connect: no such file or directory, falling back to polling method
logger.go:103: ... ... dns: using dns.noopManager
logger.go:103: ... ... link state: interfaces.State{defaultRoute=vtnet0 ifs={vtnet0:[10.1.10.215/24 2603:3015:425f:100:5a9c:fcff:fe0b:d311/64 llu6]} v4=true v6=true}
logger.go:103: ... ... onPortUpdate(port=28501, network=udp6)
logger.go:103: ... ... [v1] warning: fakeRouter.UpdateMagicsockPort: not implemented.
logger.go:103: ... ... magicsock: failed to set UDP read buffer size to 7340032: set udp6 [::]:28501: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: failed to set UDP write buffer size to 7340032: set udp6 [::]:28501: setsockopt: no buffer space available
logger.go:103: ... ... onPortUpdate(port=32357, network=udp4)
logger.go:103: ... ... [v1] warning: fakeRouter.UpdateMagicsockPort: not implemented.
logger.go:103: ... ... magicsock: failed to set UDP read buffer size to 7340032: set udp4 0.0.0.0:32357: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: failed to set UDP write buffer size to 7340032: set udp4 0.0.0.0:32357: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: disco key = d:7aa61c9cb6810b21
logger.go:103: ... ... Creating WireGuard device...
logger.go:103: ... ... Bringing WireGuard device up...
logger.go:103: ... ... wg: [v2] UDP bind has been updated
logger.go:103: ... ... wg: [v2] Interface state was Down, requested Up, now Up
logger.go:103: ... ... Bringing router up...
logger.go:103: ... ... [v1] warning: fakeRouter.Up: not implemented.
logger.go:103: ... ... Clearing router settings...
logger.go:103: ... ... [v1] warning: fakeRouter.Set: not implemented.
logger.go:103: ... ... Starting network monitor...
logger.go:103: ... ... Engine created.
logger.go:103: ... ... pm: migrating "_daemon" profile to new format
logger.go:103: ... ... envknob: TS_DEBUG_ACME_DIRECTORY_URL="https://acme-staging-v02.api.letsencrypt.org/directory"
logger.go:103: ... ... logpolicy: using system state directory "/var/db/tailscale"
logger.go:103: ... ... [v1] netmap packet filter: (not ready yet)
logger.go:103: ... ... pm: migrating "_daemon" profile to new format
logger.go:103: ... ... [v1] using fake (no-op) tun device
logger.go:103: ... ... [v1] using fake (no-op) OS network configurator
logger.go:103: ... ... [v1] using fake (no-op) DNS configurator
logger.go:103: ... ... wg: [v2] Routine: receive incoming receiveDERP - started
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - started
logger.go:103: ... ... monitor: devd dial error: dial unixpacket /var/run/devd.seqpacket.pipe: connect: no such file or directory, falling back to polling method
logger.go:103: ... ... dns: using dns.noopManager
logger.go:103: ... ... link state: interfaces.State{defaultRoute=vtnet0 ifs={vtnet0:[10.1.10.215/24 2603:3015:425f:100:5a9c:fcff:fe0b:d311/64 llu6]} v4=true v6=true}
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - started
logger.go:103: ... ... onPortUpdate(port=49109, network=udp6)
logger.go:103: ... ... [v1] warning: fakeRouter.UpdateMagicsockPort: not implemented.
logger.go:103: ... ... magicsock: failed to set UDP read buffer size to 7340032: set udp6 [::]:49109: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: failed to set UDP write buffer size to 7340032: set udp6 [::]:49109: setsockopt: no buffer space available
logger.go:103: ... ... onPortUpdate(port=11257, network=udp4)
logger.go:103: ... ... [v1] warning: fakeRouter.UpdateMagicsockPort: not implemented.
logger.go:103: ... ... magicsock: failed to set UDP read buffer size to 7340032: set udp4 0.0.0.0:11257: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: failed to set UDP write buffer size to 7340032: set udp4 0.0.0.0:11257: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: disco key = d:c0cdbc4ae61fe368
logger.go:103: ... ... Creating WireGuard device...
logger.go:103: ... ... Bringing WireGuard device up...
logger.go:103: ... ... wg: [v2] UDP bind has been updated
logger.go:103: ... ... wg: [v2] Interface state was Down, requested Up, now Up
logger.go:103: ... ... Bringing router up...
logger.go:103: ... ... [v1] warning: fakeRouter.Up: not implemented.
logger.go:103: ... ... Clearing router settings...
logger.go:103: ... ... [v1] warning: fakeRouter.Set: not implemented.
logger.go:103: ... ... Starting network monitor...
logger.go:103: ... ... Engine created.
logger.go:103: ... ... pm: migrating "_daemon" profile to new format
logger.go:103: ... ... envknob: TS_DEBUG_ACME_DIRECTORY_URL="https://acme-staging-v02.api.letsencrypt.org/directory"
logger.go:103: ... ... logpolicy: using system state directory "/var/db/tailscale"
logger.go:103: ... ... [v1] netmap packet filter: (not ready yet)
logger.go:103: ... ... pm: migrating "_daemon" profile to new format
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - started
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - stopped
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - started
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - stopped
logger.go:103: ... ... wg: [v2] Routine: receive incoming receiveDERP - started
logger.go:103: ... ... [v1] warning: fakeRouter.Close: not implemented.
logger.go:103: ... ... wg: [v2] Device closing
logger.go:103: ... ... wg: [v2] Routine: receive incoming receiveDERP - stopped
logger.go:103: ... ... wg: [v2] Device closed
logger.go:103: ... ... [v1] warning: fakeRouter.Close: not implemented.
logger.go:103: ... ... wg: [v2] Device closing
logger.go:103: ... ... wg: [v2] Routine: receive incoming receiveDERP - stopped
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - stopped
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - stopped
logger.go:103: ... ... wg: [v2] Device closed
--- PASS: TestOfferingAppConnector (0.01s)
=== RUN TestRouteAdvertiser
logger.go:103: ... ... [v1] using fake (no-op) tun device
logger.go:103: ... ... [v1] using fake (no-op) OS network configurator
logger.go:103: ... ... [v1] using fake (no-op) DNS configurator
logger.go:103: ... ... monitor: devd dial error: dial unixpacket /var/run/devd.seqpacket.pipe: connect: no such file or directory, falling back to polling method
logger.go:103: ... ... dns: using dns.noopManager
logger.go:103: ... ... link state: interfaces.State{defaultRoute=vtnet0 ifs={vtnet0:[10.1.10.215/24 2603:3015:425f:100:5a9c:fcff:fe0b:d311/64 llu6]} v4=true v6=true}
logger.go:103: ... ... onPortUpdate(port=30134, network=udp6)
logger.go:103: ... ... [v1] warning: fakeRouter.UpdateMagicsockPort: not implemented.
logger.go:103: ... ... magicsock: failed to set UDP read buffer size to 7340032: set udp6 [::]:30134: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: failed to set UDP write buffer size to 7340032: set udp6 [::]:30134: setsockopt: no buffer space available
logger.go:103: ... ... onPortUpdate(port=63349, network=udp4)
logger.go:103: ... ... [v1] warning: fakeRouter.UpdateMagicsockPort: not implemented.
logger.go:103: ... ... magicsock: failed to set UDP read buffer size to 7340032: set udp4 0.0.0.0:63349: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: failed to set UDP write buffer size to 7340032: set udp4 0.0.0.0:63349: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: disco key = d:aa126bbde4019b10
logger.go:103: ... ... Creating WireGuard device...
logger.go:103: ... ... Bringing WireGuard device up...
logger.go:103: ... ... wg: [v2] UDP bind has been updated
logger.go:103: ... ... wg: [v2] Interface state was Down, requested Up, now Up
logger.go:103: ... ... Bringing router up...
logger.go:103: ... ... [v1] warning: fakeRouter.Up: not implemented.
logger.go:103: ... ... Clearing router settings...
logger.go:103: ... ... [v1] warning: fakeRouter.Set: not implemented.
logger.go:103: ... ... Starting network monitor...
logger.go:103: ... ... Engine created.
logger.go:103: ... ... pm: migrating "_daemon" profile to new format
logger.go:103: ... ... envknob: TS_DEBUG_ACME_DIRECTORY_URL="https://acme-staging-v02.api.letsencrypt.org/directory"
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - started
logger.go:103: ... ... logpolicy: using system state directory "/var/db/tailscale"
logger.go:103: ... ... [v1] netmap packet filter: (not ready yet)
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - started
logger.go:103: ... ... wg: [v2] Routine: receive incoming receiveDERP - started
logger.go:103: ... ... pm: migrating "_daemon" profile to new format
logger.go:103: ... ... advertising new app connector routes: [192.0.0.8/32]
logger.go:103: ... ... EditPrefs: MaskedPrefs{AdvertiseRoutes=[192.0.0.8/32]}
logger.go:103: ... ... [v1] netmap packet filter: 0 filters
logger.go:103: ... ... [v1] authReconfig: skipping because !WantRunning.
logger.go:103: ... ... EditPrefs: MaskedPrefs{AdvertiseRoutes=[]}
logger.go:103: ... ... [v1] netmap packet filter: 0 filters
logger.go:103: ... ... [v1] authReconfig: skipping because !WantRunning.
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - stopped
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - stopped
logger.go:103: ... ... [v1] warning: fakeRouter.Close: not implemented.
logger.go:103: ... ... wg: [v2] Device closing
logger.go:103: ... ... wg: [v2] Routine: receive incoming receiveDERP - stopped
logger.go:103: ... ... wg: [v2] Device closed
--- PASS: TestRouteAdvertiser (0.00s)
=== RUN TestRouterAdvertiserIgnoresContainedRoutes
logger.go:103: ... ... [v1] using fake (no-op) tun device
logger.go:103: ... ... [v1] using fake (no-op) OS network configurator
logger.go:103: ... ... [v1] using fake (no-op) DNS configurator
logger.go:103: ... ... monitor: devd dial error: dial unixpacket /var/run/devd.seqpacket.pipe: connect: no such file or directory, falling back to polling method
logger.go:103: ... ... dns: using dns.noopManager
logger.go:103: ... ... link state: interfaces.State{defaultRoute=vtnet0 ifs={vtnet0:[10.1.10.215/24 2603:3015:425f:100:5a9c:fcff:fe0b:d311/64 llu6]} v4=true v6=true}
logger.go:103: ... ... onPortUpdate(port=56237, network=udp6)
logger.go:103: ... ... [v1] warning: fakeRouter.UpdateMagicsockPort: not implemented.
logger.go:103: ... ... magicsock: failed to set UDP read buffer size to 7340032: set udp6 [::]:56237: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: failed to set UDP write buffer size to 7340032: set udp6 [::]:56237: setsockopt: no buffer space available
logger.go:103: ... ... onPortUpdate(port=56913, network=udp4)
logger.go:103: ... ... [v1] warning: fakeRouter.UpdateMagicsockPort: not implemented.
logger.go:103: ... ... magicsock: failed to set UDP read buffer size to 7340032: set udp4 0.0.0.0:56913: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: failed to set UDP write buffer size to 7340032: set udp4 0.0.0.0:56913: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: disco key = d:cbaa91ee6b02d06e
logger.go:103: ... ... Creating WireGuard device...
logger.go:103: ... ... Bringing WireGuard device up...
logger.go:103: ... ... wg: [v2] UDP bind has been updated
logger.go:103: ... ... wg: [v2] Interface state was Down, requested Up, now Up
logger.go:103: ... ... Bringing router up...
logger.go:103: ... ... [v1] warning: fakeRouter.Up: not implemented.
logger.go:103: ... ... Clearing router settings...
logger.go:103: ... ... [v1] warning: fakeRouter.Set: not implemented.
logger.go:103: ... ... Starting network monitor...
logger.go:103: ... ... Engine created.
logger.go:103: ... ... pm: migrating "_daemon" profile to new format
logger.go:103: ... ... envknob: TS_DEBUG_ACME_DIRECTORY_URL="https://acme-staging-v02.api.letsencrypt.org/directory"
logger.go:103: ... ... logpolicy: using system state directory "/var/db/tailscale"
logger.go:103: ... ... [v1] netmap packet filter: (not ready yet)
logger.go:103: ... ... pm: migrating "_daemon" profile to new format
logger.go:103: ... ... advertising new app connector routes: [192.0.0.0/24]
logger.go:103: ... ... EditPrefs: MaskedPrefs{AdvertiseRoutes=[192.0.0.0/24]}
logger.go:103: ... ... [v1] netmap packet filter: 0 filters
logger.go:103: ... ... [v1] authReconfig: skipping because !WantRunning.
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - started
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - stopped
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - started
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - stopped
logger.go:103: ... ... wg: [v2] Routine: receive incoming receiveDERP - started
logger.go:103: ... ... [v1] warning: fakeRouter.Close: not implemented.
logger.go:103: ... ... wg: [v2] Device closing
logger.go:103: ... ... wg: [v2] Routine: receive incoming receiveDERP - stopped
logger.go:103: ... ... wg: [v2] Device closed
--- PASS: TestRouterAdvertiserIgnoresContainedRoutes (0.01s)
=== RUN TestObserveDNSResponse
logger.go:103: ... ... [v1] using fake (no-op) tun device
logger.go:103: ... ... [v1] using fake (no-op) OS network configurator
logger.go:103: ... ... [v1] using fake (no-op) DNS configurator
logger.go:103: ... ... monitor: devd dial error: dial unixpacket /var/run/devd.seqpacket.pipe: connect: no such file or directory, falling back to polling method
logger.go:103: ... ... dns: using dns.noopManager
logger.go:103: ... ... link state: interfaces.State{defaultRoute=vtnet0 ifs={vtnet0:[10.1.10.215/24 2603:3015:425f:100:5a9c:fcff:fe0b:d311/64 llu6]} v4=true v6=true}
logger.go:103: ... ... onPortUpdate(port=48506, network=udp6)
logger.go:103: ... ... [v1] warning: fakeRouter.UpdateMagicsockPort: not implemented.
logger.go:103: ... ... magicsock: failed to set UDP read buffer size to 7340032: set udp6 [::]:48506: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: failed to set UDP write buffer size to 7340032: set udp6 [::]:48506: setsockopt: no buffer space available
logger.go:103: ... ... onPortUpdate(port=53159, network=udp4)
logger.go:103: ... ... [v1] warning: fakeRouter.UpdateMagicsockPort: not implemented.
logger.go:103: ... ... magicsock: failed to set UDP read buffer size to 7340032: set udp4 0.0.0.0:53159: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: failed to set UDP write buffer size to 7340032: set udp4 0.0.0.0:53159: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: disco key = d:81dfb28ff2375778
logger.go:103: ... ... Creating WireGuard device...
logger.go:103: ... ... Bringing WireGuard device up...
logger.go:103: ... ... wg: [v2] UDP bind has been updated
logger.go:103: ... ... wg: [v2] Interface state was Down, requested Up, now Up
logger.go:103: ... ... Bringing router up...
logger.go:103: ... ... [v1] warning: fakeRouter.Up: not implemented.
logger.go:103: ... ... Clearing router settings...
logger.go:103: ... ... [v1] warning: fakeRouter.Set: not implemented.
logger.go:103: ... ... Starting network monitor...
logger.go:103: ... ... Engine created.
logger.go:103: ... ... pm: migrating "_daemon" profile to new format
logger.go:103: ... ... envknob: TS_DEBUG_ACME_DIRECTORY_URL="https://acme-staging-v02.api.letsencrypt.org/directory"
logger.go:103: ... ... logpolicy: using system state directory "/var/db/tailscale"
logger.go:103: ... ... [v1] netmap packet filter: (not ready yet)
logger.go:103: ... ... pm: migrating "_daemon" profile to new format
logger.go:103: appc: handling domains: [example.com] and wildcards: []
logger.go:103: appc: [v2] observed new routes for example.com: [192.0.0.8/32]
logger.go:103: appc: [v2] advertised route for example.com: 192.0.0.8
logger.go:103: ... ... [v1] using fake (no-op) tun device
logger.go:103: ... ... [v1] using fake (no-op) OS network configurator
logger.go:103: ... ... [v1] using fake (no-op) DNS configurator
logger.go:103: ... ... monitor: devd dial error: dial unixpacket /var/run/devd.seqpacket.pipe: connect: no such file or directory, falling back to polling method
logger.go:103: ... ... dns: using dns.noopManager
logger.go:103: ... ... link state: interfaces.State{defaultRoute=vtnet0 ifs={vtnet0:[10.1.10.215/24 2603:3015:425f:100:5a9c:fcff:fe0b:d311/64 llu6]} v4=true v6=true}
logger.go:103: ... ... onPortUpdate(port=18944, network=udp6)
logger.go:103: ... ... [v1] warning: fakeRouter.UpdateMagicsockPort: not implemented.
logger.go:103: ... ... magicsock: failed to set UDP read buffer size to 7340032: set udp6 [::]:18944: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: failed to set UDP write buffer size to 7340032: set udp6 [::]:18944: setsockopt: no buffer space available
logger.go:103: ... ... onPortUpdate(port=20990, network=udp4)
logger.go:103: ... ... [v1] warning: fakeRouter.UpdateMagicsockPort: not implemented.
logger.go:103: ... ... magicsock: failed to set UDP read buffer size to 7340032: set udp4 0.0.0.0:20990: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: failed to set UDP write buffer size to 7340032: set udp4 0.0.0.0:20990: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: disco key = d:ef3d80048e71d3fb
logger.go:103: ... ... Creating WireGuard device...
logger.go:103: ... ... Bringing WireGuard device up...
logger.go:103: ... ... wg: [v2] UDP bind has been updated
logger.go:103: ... ... wg: [v2] Interface state was Down, requested Up, now Up
logger.go:103: ... ... Bringing router up...
logger.go:103: ... ... [v1] warning: fakeRouter.Up: not implemented.
logger.go:103: ... ... Clearing router settings...
logger.go:103: ... ... [v1] warning: fakeRouter.Set: not implemented.
logger.go:103: ... ... Starting network monitor...
logger.go:103: ... ... Engine created.
logger.go:103: ... ... pm: migrating "_daemon" profile to new format
logger.go:103: ... ... envknob: TS_DEBUG_ACME_DIRECTORY_URL="https://acme-staging-v02.api.letsencrypt.org/directory"
logger.go:103: ... ... logpolicy: using system state directory "/var/db/tailscale"
logger.go:103: ... ... [v1] netmap packet filter: (not ready yet)
logger.go:103: ... ... pm: migrating "_daemon" profile to new format
logger.go:103: appc: handling domains: [example.com] and wildcards: []
logger.go:103: appc: [v2] observed new routes for example.com: [192.0.0.8/32]
logger.go:103: appc: [v2] advertised route for example.com: 192.0.0.8
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - started
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - started
logger.go:103: ... ... wg: [v2] Routine: receive incoming receiveDERP - started
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - started
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - stopped
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - started
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - stopped
logger.go:103: ... ... wg: [v2] Routine: receive incoming receiveDERP - started
logger.go:103: ... ... [v1] warning: fakeRouter.Close: not implemented.
logger.go:103: ... ... wg: [v2] Device closing
logger.go:103: ... ... wg: [v2] Routine: receive incoming receiveDERP - stopped
logger.go:103: ... ... wg: [v2] Device closed
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - stopped
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - stopped
logger.go:103: ... ... [v1] warning: fakeRouter.Close: not implemented.
logger.go:103: ... ... wg: [v2] Device closing
logger.go:103: ... ... wg: [v2] Routine: receive incoming receiveDERP - stopped
logger.go:103: ... ... wg: [v2] Device closed
--- PASS: TestObserveDNSResponse (0.04s)
=== RUN TestCoveredRouteRangeNoDefault
--- PASS: TestCoveredRouteRangeNoDefault (0.00s)
=== RUN TestReconfigureAppConnector
logger.go:103: ... ... [v1] using fake (no-op) tun device
logger.go:103: ... ... [v1] using fake (no-op) OS network configurator
logger.go:103: ... ... [v1] using fake (no-op) DNS configurator
logger.go:103: ... ... monitor: devd dial error: dial unixpacket /var/run/devd.seqpacket.pipe: connect: no such file or directory, falling back to polling method
logger.go:103: ... ... dns: using dns.noopManager
logger.go:103: ... ... link state: interfaces.State{defaultRoute=vtnet0 ifs={vtnet0:[10.1.10.215/24 2603:3015:425f:100:5a9c:fcff:fe0b:d311/64 llu6]} v4=true v6=true}
logger.go:103: ... ... onPortUpdate(port=18027, network=udp6)
logger.go:103: ... ... [v1] warning: fakeRouter.UpdateMagicsockPort: not implemented.
logger.go:103: ... ... magicsock: failed to set UDP read buffer size to 7340032: set udp6 [::]:18027: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: failed to set UDP write buffer size to 7340032: set udp6 [::]:18027: setsockopt: no buffer space available
logger.go:103: ... ... onPortUpdate(port=45818, network=udp4)
logger.go:103: ... ... [v1] warning: fakeRouter.UpdateMagicsockPort: not implemented.
logger.go:103: ... ... magicsock: failed to set UDP read buffer size to 7340032: set udp4 0.0.0.0:45818: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: failed to set UDP write buffer size to 7340032: set udp4 0.0.0.0:45818: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: disco key = d:8bba0105b11757a0
logger.go:103: ... ... Creating WireGuard device...
logger.go:103: ... ... Bringing WireGuard device up...
logger.go:103: ... ... wg: [v2] UDP bind has been updated
logger.go:103: ... ... wg: [v2] Interface state was Down, requested Up, now Up
logger.go:103: ... ... Bringing router up...
logger.go:103: ... ... [v1] warning: fakeRouter.Up: not implemented.
logger.go:103: ... ... Clearing router settings...
logger.go:103: ... ... [v1] warning: fakeRouter.Set: not implemented.
logger.go:103: ... ... Starting network monitor...
logger.go:103: ... ... Engine created.
logger.go:103: ... ... pm: migrating "_daemon" profile to new format
logger.go:103: ... ... envknob: TS_DEBUG_ACME_DIRECTORY_URL="https://acme-staging-v02.api.letsencrypt.org/directory"
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - started
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - started
logger.go:103: ... ... wg: [v2] Routine: receive incoming receiveDERP - started
logger.go:103: ... ... logpolicy: using system state directory "/var/db/tailscale"
logger.go:103: ... ... [v1] netmap packet filter: (not ready yet)
logger.go:103: ... ... pm: migrating "_daemon" profile to new format
logger.go:103: ... ... EditPrefs: MaskedPrefs{AppConnector={Advertise:true}}
logger.go:103: ... ... [v1] netmap packet filter: 0 filters
logger.go:103: ... ... [v1] authReconfig: skipping because !WantRunning.
logger.go:103: ... ... appc: handling domains: [] and wildcards: []
logger.go:103: ... ... appc: handling domains: [] and wildcards: []
logger.go:103: ... ... appc: handling domains: [example.com] and wildcards: []
logger.go:103: ... ... EditPrefs: MaskedPrefs{AppConnector={Advertise:false}}
logger.go:103: ... ... [v1] netmap packet filter: 0 filters
logger.go:103: ... ... [v1] authReconfig: skipping because !WantRunning.
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - stopped
logger.go:103: ... ... wg: [v2] Routine: receive incoming mkReceiveFunc - stopped
logger.go:103: ... ... [v1] warning: fakeRouter.Close: not implemented.
logger.go:103: ... ... wg: [v2] Device closing
logger.go:103: ... ... wg: [v2] Routine: receive incoming receiveDERP - stopped
logger.go:103: ... ... wg: [v2] Device closed
--- PASS: TestReconfigureAppConnector (0.00s)
=== RUN TestBackfillAppConnectorRoutes
logger.go:103: ... ... [v1] using fake (no-op) tun device
logger.go:103: ... ... [v1] using fake (no-op) OS network configurator
logger.go:103: ... ... [v1] using fake (no-op) DNS configurator
logger.go:103: ... ... monitor: devd dial error: dial unixpacket /var/run/devd.seqpacket.pipe: connect: no such file or directory, falling back to polling method
logger.go:103: ... ... dns: using dns.noopManager
logger.go:103: ... ... link state: interfaces.State{defaultRoute=vtnet0 ifs={vtnet0:[10.1.10.215/24 2603:3015:425f:100:5a9c:fcff:fe0b:d311/64 llu6]} v4=true v6=true}
logger.go:103: ... ... onPortUpdate(port=48728, network=udp6)
logger.go:103: ... ... [v1] warning: fakeRouter.UpdateMagicsockPort: not implemented.
logger.go:103: ... ... magicsock: failed to set UDP read buffer size to 7340032: set udp6 [::]:48728: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: failed to set UDP write buffer size to 7340032: set udp6 [::]:48728: setsockopt: no buffer space available
logger.go:103: ... ... onPortUpdate(port=41364, network=udp4)
logger.go:103: ... ... [v1] warning: fakeRouter.UpdateMagicsockPort: not implemented.
logger.go:103: ... ... magicsock: failed to set UDP read buffer size to 7340032: set udp4 0.0.0.0:41364: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: failed to set UDP write buffer size to 7340032: set udp4 0.0.0.0:41364: setsockopt: no buffer space available
logger.go:103: ... ... magicsock: disco key = d:fb8354a0fc4d528b
logger.go:103: ... ... Creating WireGuard device...
logger.go:103: ... ... Bringing WireGuard device up...
logger.go:103: ... ... wg: [v2] UDP bind has been updated
logger.go:103: ... ... wg: [v2] Interface state was Down, requested Up, now Up
logger.go:103: ... ... Bringing router up...
logger.go:103: ... ... [v1] warning: fakeRouter.Up: not implemented.
logger.go:103: ... ... Clearing router settings...
logger.go:103: ... ... [v1] warning: fakeRouter.Set: not implemented.
logger.go:103: ... ... Starting network monitor...
logger.go:103: ... ... Engine created.
logger.go:103: ... ... pm: migrating "_daemon" profile to new format
logger.go:103: ... ... envknob: TS_DEBUG_ACME_DIRECTORY_URL="https://acme-staging-v02.api.letsencrypt.org/directory"
logger.go:103: ... ... logpolicy: using system state directory "/var/db/tailscale"
logger.go:103: ... ... [v1] netmap packet filter: (not ready yet)
logger.go:103: ... ... pm: migrating "_daemon" profile to new format
logger.go:103: ... ... Start
logger.go:103: ... ... [v
Links
Depends On
- lang/go123 (build)
- lang/go123 (fetch)
- security/ca_root_nss (fetch)
- security/ca_root_nss (run)
Depend Of
NothingCategories
CVEs
- Loading CVE information...
MidnightBSD Magus