From 89be098f7658138b51181cad8cc03aaae7845ecc Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Thu, 15 Oct 2026 07:37:43 +0000 Subject: [PATCH] integration/tsic: drop unused watchIPN ipn.Notify.NetMap is gone upstream; nothing called it. --- integration/tsic/tsic.go | 95 ---------------------------------------- 1 file changed, 95 deletions(-) diff --git a/integration/tsic/tsic.go b/integration/tsic/tsic.go index ca85c30e..ca0650ff 100644 --- a/integration/tsic/tsic.go +++ b/integration/tsic/tsic.go @@ -1134,101 +1134,6 @@ func (t *TailscaleInContainer) Netmap() (*netmap.NetworkMap, error) { return nm, nil } -// Netmap returns the current Netmap ([netmap.NetworkMap]) of the Tailscale instance. -// This implementation is based on getting the netmap from `tailscale debug watch-ipn` -// as there seem to be some weirdness omitting endpoint and DERP info if we use -// Patch updates. -// This implementation works on all supported versions. -// func (t *TailscaleInContainer) Netmap() (*netmap.NetworkMap, error) { -// // watch-ipn will only give an update if something is happening, -// // since we send keep alives, the worst case for this should be -// // 1 minute, but set a slightly more conservative time. -// ctx, _ := context.WithTimeout(context.Background(), 3*time.Minute) - -// notify, err := t.watchIPN(ctx) -// if err != nil { -// return nil, err -// } - -// if notify.NetMap == nil { -// return nil, fmt.Errorf("no netmap present in ipn.Notify") -// } - -// return notify.NetMap, nil -// } - -// watchIPN watches `tailscale debug watch-ipn` for a [ipn.Notify] object until -// it gets one that has a [netmap.NetworkMap]. -// -//nolint:unused -func (t *TailscaleInContainer) watchIPN(ctx context.Context) (*ipn.Notify, error) { - pr, pw := io.Pipe() - - type result struct { - notify *ipn.Notify - err error - } - - resultChan := make(chan result, 1) - - // There is no good way to kill the goroutine with watch-ipn, - // so make a nice func to send a kill command to issue when - // we are done. - killWatcher := func() { - stdout, stderr, err := t.Execute([]string{ - "/bin/sh", "-c", `kill $(ps aux | grep "tailscale debug watch-ipn" | grep -v grep | awk '{print $1}') || true`, - }) - if err != nil { - log.Printf("killing tailscale watcher, \nstdout: %s\nstderr: %s\nerr: %s", stdout, stderr, err) - } - } - - go func() { - _, _ = t.container.Exec( - // Prior to 1.56, the initial "Connected." message was printed to stdout, - // filter out with grep. - []string{"/bin/sh", "-c", `tailscale debug watch-ipn | grep -v "Connected."`}, - dockertest.ExecOptions{ - // The interesting output is sent to stdout, so ignore stderr. - StdOut: pw, - // StdErr: pw, - }, - ) - }() - - go func() { - decoder := json.NewDecoder(pr) - for decoder.More() { - var notify ipn.Notify - - err := decoder.Decode(¬ify) - if err != nil { - resultChan <- result{nil, fmt.Errorf("parse notify: %w", err)} - } - - if notify.NetMap != nil { //nolint:staticcheck // SA1019: NetMap is still populated on the platforms our integration containers run; migrating to InitialStatus/PeerChanges is a separate change - resultChan <- result{¬ify, nil} - } - } - }() - - select { - case <-ctx.Done(): - killWatcher() - - return nil, ctx.Err() - - case result := <-resultChan: - killWatcher() - - if result.err != nil { - return nil, result.err - } - - return result.notify, nil - } -} - func (t *TailscaleInContainer) DebugDERPRegion(region string) (*ipnstate.DebugDERPRegionReport, error) { if !util.TailscaleVersionNewerOrEqual("1.34", t.version) { panic("tsic.DebugDERPRegion() called with unsupported version: " + t.version)