From 82b401eeeda6622b3eabf151344d444eaa8f0a13 Mon Sep 17 00:00:00 2001 From: algonautshant Date: Wed, 22 Sep 2021 17:58:25 -0400 Subject: [PATCH 1/2] fix TestLatestSigsFromThisNode Timing issues between writing to and reading from the database cause the test to occasionally fail. Make the test more tolerant to such timing issues by polling. --- compactcert/worker_test.go | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/compactcert/worker_test.go b/compactcert/worker_test.go index 2a14b43695..5ad2933afa 100644 --- a/compactcert/worker_test.go +++ b/compactcert/worker_test.go @@ -385,9 +385,17 @@ func TestLatestSigsFromThisNode(t *testing.T) { // Wait for a compact cert to be formed, so we know the signer thread is caught up. _ = <-s.txmsg - latestSigs, err := w.LatestSigsFromThisNode() - require.NoError(t, err) - require.Equal(t, len(latestSigs), len(keys)) + var latestSigs map[basics.Address]basics.Round + var err error + for x := 0; x < 100; x++ { + latestSigs, err = w.LatestSigsFromThisNode() + require.NoError(t, err) + if len(latestSigs) == 10 { + break + } + time.Sleep(100 * time.Millisecond) + } + require.Equal(t, len(keys), len(latestSigs)) for _, k := range keys { require.Equal(t, latestSigs[k.Parent], basics.Round(2*proto.CompactCertRounds)) } @@ -398,11 +406,15 @@ func TestLatestSigsFromThisNode(t *testing.T) { s.mu.Unlock() // Wait for the builder to discard the signatures. - time.Sleep(time.Second) - - latestSigs, err = w.LatestSigsFromThisNode() - require.NoError(t, err) - require.Equal(t, len(latestSigs), 0) + for x := 0; x < 100; x++ { + latestSigs, err = w.LatestSigsFromThisNode() + require.NoError(t, err) + if len(latestSigs) == 0 { + break + } + time.Sleep(100 * time.Millisecond) + } + require.Equal(t, 0, len(latestSigs)) } func TestWorkerRestart(t *testing.T) { From ca0c2e023c08f46d5648611971947006ef371ba3 Mon Sep 17 00:00:00 2001 From: algonautshant Date: Thu, 23 Sep 2021 12:52:28 -0400 Subject: [PATCH 2/2] changes per review comments --- compactcert/worker_test.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/compactcert/worker_test.go b/compactcert/worker_test.go index 5ad2933afa..c2236f6cd8 100644 --- a/compactcert/worker_test.go +++ b/compactcert/worker_test.go @@ -387,13 +387,13 @@ func TestLatestSigsFromThisNode(t *testing.T) { var latestSigs map[basics.Address]basics.Round var err error - for x := 0; x < 100; x++ { + for x := 0; x < 10; x++ { latestSigs, err = w.LatestSigsFromThisNode() require.NoError(t, err) - if len(latestSigs) == 10 { + if len(latestSigs) == len(keys) { break } - time.Sleep(100 * time.Millisecond) + time.Sleep(256 * time.Millisecond) } require.Equal(t, len(keys), len(latestSigs)) for _, k := range keys { @@ -406,13 +406,13 @@ func TestLatestSigsFromThisNode(t *testing.T) { s.mu.Unlock() // Wait for the builder to discard the signatures. - for x := 0; x < 100; x++ { + for x := 0; x < 10; x++ { latestSigs, err = w.LatestSigsFromThisNode() require.NoError(t, err) if len(latestSigs) == 0 { break } - time.Sleep(100 * time.Millisecond) + time.Sleep(256 * time.Millisecond) } require.Equal(t, 0, len(latestSigs)) }