From 206ad69b75404c711678670b07b9fe91b9842885 Mon Sep 17 00:00:00 2001 From: Olaoluwa Osuntokun Date: Wed, 4 Oct 2023 15:36:52 -0700 Subject: [PATCH] discovery: fix incorrect test, masked by loop scoping bug When we first go to boot up the syncer, when we're in the active phase, after we do the historical sync, we'll send a timestamp message that we want everything, then transition to the passive mode. The test didn't account for this extra message before, as the last test was being re-used here (ran in parallel). We fix this by asserting that the first expected message is sent, then also the follow up messages as well. --- discovery/chan_series.go | 2 ++ discovery/syncer_test.go | 27 ++++++++++++++++++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/discovery/chan_series.go b/discovery/chan_series.go index 0fe819d4e..18f806316 100644 --- a/discovery/chan_series.go +++ b/discovery/chan_series.go @@ -163,6 +163,8 @@ func (c *ChanSeries) UpdatesInHorizon(chain chainhash.Hash, return nil, err } for _, nodeAnn := range nodeAnnsInHorizon { + nodeAnn := nodeAnn + // Ensure we only forward nodes that are publicly advertised to // prevent leaking information about nodes. isNodePublic, err := c.graph.IsPublicNode(nodeAnn.PubKeyBytes) diff --git a/discovery/syncer_test.go b/discovery/syncer_test.go index 70920f9f4..a7b514db8 100644 --- a/discovery/syncer_test.go +++ b/discovery/syncer_test.go @@ -2134,18 +2134,33 @@ func TestGossipSyncerSyncTransitions(t *testing.T) { name: "active to passive", entrySyncType: ActiveSync, finalSyncType: PassiveSync, - assert: func(t *testing.T, msgChan chan []lnwire.Message, + assert: func(t *testing.T, mChan chan []lnwire.Message, g *GossipSyncer) { + // When we first boot up, we expect that we + // send out a message that indicates we want + // all the updates from here on. + firstTimestamp := uint32(time.Now().Unix()) + assertMsgSent( + t, mChan, &lnwire.GossipTimestampRange{ + FirstTimestamp: firstTimestamp, + TimestampRange: math.MaxUint32, + }, + ) + // When transitioning from active to passive, we // should expect to see a new local update // horizon sent to the remote peer indicating // that it would not like to receive any future // updates. - assertMsgSent(t, msgChan, &lnwire.GossipTimestampRange{ - FirstTimestamp: uint32(zeroTimestamp.Unix()), - TimestampRange: 0, - }) + assertMsgSent( + t, mChan, &lnwire.GossipTimestampRange{ + FirstTimestamp: uint32( + zeroTimestamp.Unix(), + ), + TimestampRange: 0, + }, + ) syncState := g.syncState() if syncState != chansSynced { @@ -2182,6 +2197,8 @@ func TestGossipSyncerSyncTransitions(t *testing.T) { } for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { t.Parallel()