From 0e9dc33cee194889e563c335c294ba530f5d1866 Mon Sep 17 00:00:00 2001 From: Jorropo Date: Thu, 17 Aug 2023 08:26:14 +0200 Subject: [PATCH] tests: fix tests after 436 This wasn't caught because the tests hadn't run due to the test.Flaky. --- CHANGELOG.md | 3 +- bitswap/network/connecteventmanager_test.go | 32 ++++++++++----------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fcbd2769b..4489b13fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,8 @@ The following emojis are used to highlight certain changes: ### Fixed +- Address a Bitswap findpeers / connect race condition that can prevent peer communication ([#435](https://github.com/ipfs/boxo/issues/435)) + ### Security ## [v0.11.0] @@ -72,7 +74,6 @@ The following emojis are used to highlight certain changes: - Removed mentions of unused ARC algorithm ([#336](https://github.com/ipfs/boxo/issues/366#issuecomment-1597253540)) - Handle `_redirects` file when `If-None-Match` header is present ([#412](https://github.com/ipfs/boxo/pull/412)) -- Address a Bitswap findpeers / connect race condition that can prevent peer communication ([#435](https://github.com/ipfs/boxo/issues/435)) ### Security diff --git a/bitswap/network/connecteventmanager_test.go b/bitswap/network/connecteventmanager_test.go index 5ce4e690c..21c4676c7 100644 --- a/bitswap/network/connecteventmanager_test.go +++ b/bitswap/network/connecteventmanager_test.go @@ -6,7 +6,6 @@ import ( "time" "github.com/ipfs/boxo/bitswap/internal/testutil" - "github.com/ipfs/boxo/internal/test" "github.com/libp2p/go-libp2p/core/peer" "github.com/stretchr/testify/require" ) @@ -50,8 +49,6 @@ func wait(t *testing.T, c *connectEventManager) { } func TestConnectEventManagerConnectDisconnect(t *testing.T) { - test.Flaky(t) - connListener := newMockConnListener() peers := testutil.GeneratePeers(2) cem := newConnectEventManager(connListener) @@ -72,27 +69,32 @@ func TestConnectEventManagerConnectDisconnect(t *testing.T) { wait(t, cem) require.Equal(t, expectedEvents, connListener.events) - // Block up the event loop. + // Blocking up the event loop eventually resolves once free. + var asyncEvents sync.WaitGroup + asyncEvents.Add(1) connListener.Lock() - cem.Connected(peers[1]) - expectedEvents = append(expectedEvents, mockConnEvent{ - peer: peers[1], - connected: true, - }) + go func() { + defer asyncEvents.Done() - // We don't expect this to show up. - cem.Disconnected(peers[0]) - cem.Connected(peers[0]) + cem.Connected(peers[1]) + expectedEvents = append(expectedEvents, mockConnEvent{ + peer: peers[1], + connected: true, + }) + + // We don't expect this to show up. + cem.Disconnected(peers[0]) + cem.Connected(peers[0]) + }() connListener.Unlock() + asyncEvents.Wait() wait(t, cem) require.Equal(t, expectedEvents, connListener.events) } func TestConnectEventManagerMarkUnresponsive(t *testing.T) { - test.Flaky(t) - connListener := newMockConnListener() p := testutil.GeneratePeers(1)[0] cem := newConnectEventManager(connListener) @@ -142,8 +144,6 @@ func TestConnectEventManagerMarkUnresponsive(t *testing.T) { } func TestConnectEventManagerDisconnectAfterMarkUnresponsive(t *testing.T) { - test.Flaky(t) - connListener := newMockConnListener() p := testutil.GeneratePeers(1)[0] cem := newConnectEventManager(connListener)