From b5d01f8165524e6175d3639db437b8af5989e1a9 Mon Sep 17 00:00:00 2001 From: guillaumemichel Date: Wed, 19 Feb 2025 17:02:25 +0100 Subject: [PATCH] fix: flaky TestFindPeerQueryMinimal --- dht_test.go | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/dht_test.go b/dht_test.go index 24a0a255..b98200f1 100644 --- a/dht_test.go +++ b/dht_test.go @@ -1645,14 +1645,15 @@ func testFindPeerQuery(t *testing.T, leafs, // Number of nodes that might be connected to from the bootstrappers bootstrapConns int, // Number of bootstrappers each leaf should connect to. ) { - if runtime.GOOS == "windows" { - t.Skip("skipping due to #760") - } - ctx, cancel := context.WithCancel(context.Background()) defer cancel() - dhts := setupDHTS(t, ctx, 1+bootstrappers+leafs, BucketSize(4)) + bucketSize := 4 + // using bucketSize as Resiliency parameter allows to query to bucketSize + // closest peers, since we are looking for the bucketSize closest peers. + // Otherwise it is possible that we will miss some and it makes the test + // flaky. + dhts := setupDHTS(t, ctx, 1+bootstrappers+leafs, BucketSize(bucketSize), Resiliency(bucketSize)) defer func() { for _, d := range dhts { d.Close() @@ -1699,7 +1700,7 @@ func testFindPeerQuery(t *testing.T, waitForWellFormedTables(t, dhts, 4, 0, 5*time.Second) var peers []peer.ID - for _, d := range others { + for _, d := range dhts { peers = append(peers, d.PeerID()) } @@ -1715,7 +1716,20 @@ func testFindPeerQuery(t *testing.T, exp := kb.SortClosestPeers(peers, rtval)[:minInt(guy.bucketSize, len(peers))] t.Logf("got %d peers", len(outpeers)) + + // if guy is among the closest peers, artificially add it to outpeers since + // remote peers never tell a peer about itself. If not including self, + // results may be inaccurate since we are looking for the X closest peers + 1 + // (self) + for _, p := range exp { + if p == guy.self { + outpeers = append(outpeers, guy.self) + } + } got := kb.SortClosestPeers(outpeers, rtval) + if len(got) > len(exp) { + got = got[:len(exp)] + } assert.EqualValues(t, exp, got) }