From d40ba33d3ebe9af4ab9ba7e999e07bb8dcf926d6 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Fri, 17 Mar 2023 12:43:56 +0100 Subject: [PATCH 1/3] trie: reduce unit test time --- trie/trie_test.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/trie/trie_test.go b/trie/trie_test.go index e415937073ea..5786dae62690 100644 --- a/trie/trie_test.go +++ b/trie/trie_test.go @@ -1146,13 +1146,18 @@ func deleteString(trie *Trie, k string) { func TestDecodeNode(t *testing.T) { t.Parallel() + + var seed [8]byte + crand.Read(seed[:]) + rnd := rand.New(rand.NewSource(int64(binary.LittleEndian.Uint64(seed[:])))) + fmt.Printf("Seed: %v\n", seed) var ( hash = make([]byte, 20) elems = make([]byte, 20) ) for i := 0; i < 5000000; i++ { - crand.Read(hash) - crand.Read(elems) + rnd.Read(hash) + rnd.Read(elems) decodeNode(hash, elems) } } From 6168ec36c38b0cd9ddcb77f1942e7a2870b0d4f3 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Fri, 17 Mar 2023 13:47:22 +0100 Subject: [PATCH 2/3] trie: reduce unit test time --- trie/proof_test.go | 25 +++++++++++++++++++------ trie/trie_test.go | 9 ++------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/trie/proof_test.go b/trie/proof_test.go index 5796a308930e..6b23bcdb27d8 100644 --- a/trie/proof_test.go +++ b/trie/proof_test.go @@ -20,6 +20,7 @@ import ( "bytes" crand "crypto/rand" "encoding/binary" + "fmt" mrand "math/rand" "sort" "testing" @@ -30,6 +31,24 @@ import ( "github.com/ethereum/go-ethereum/ethdb/memorydb" ) +// Prng is a pseudo random number generator seeded by strong randomness. +// The randomness is printed on startup in order to make failures reproducible. +var prng = initRnd() + +func initRnd() *mrand.Rand { + var seed [8]byte + crand.Read(seed[:]) + rnd := mrand.New(mrand.NewSource(int64(binary.LittleEndian.Uint64(seed[:])))) + fmt.Printf("Seed: %x\n", seed) + return rnd +} + +func randBytes(n int) []byte { + r := make([]byte, n) + prng.Read(r) + return r +} + // makeProvers creates Merkle trie provers based on different implementations to // test all variations. func makeProvers(trie *Trie) []func(key []byte) *memorydb.Database { @@ -1041,12 +1060,6 @@ func randomTrie(n int) (*Trie, map[string]*kv) { return trie, vals } -func randBytes(n int) []byte { - r := make([]byte, n) - crand.Read(r) - return r -} - func nonRandomTrie(n int) (*Trie, map[string]*kv) { trie := NewEmpty(NewDatabase(rawdb.NewMemoryDatabase())) vals := make(map[string]*kv) diff --git a/trie/trie_test.go b/trie/trie_test.go index 5786dae62690..089bb44a9741 100644 --- a/trie/trie_test.go +++ b/trie/trie_test.go @@ -18,7 +18,6 @@ package trie import ( "bytes" - crand "crypto/rand" "encoding/binary" "errors" "fmt" @@ -1147,17 +1146,13 @@ func deleteString(trie *Trie, k string) { func TestDecodeNode(t *testing.T) { t.Parallel() - var seed [8]byte - crand.Read(seed[:]) - rnd := rand.New(rand.NewSource(int64(binary.LittleEndian.Uint64(seed[:])))) - fmt.Printf("Seed: %v\n", seed) var ( hash = make([]byte, 20) elems = make([]byte, 20) ) for i := 0; i < 5000000; i++ { - rnd.Read(hash) - rnd.Read(elems) + prng.Read(hash) + prng.Read(elems) decodeNode(hash, elems) } } From 2c303abd87437e90232fc9b70cdd712c45ed9664 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Fri, 17 Mar 2023 13:52:28 +0100 Subject: [PATCH 3/3] trie: reduce unit test time --- trie/sync_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/trie/sync_test.go b/trie/sync_test.go index fc871a22c80a..8fec378333da 100644 --- a/trie/sync_test.go +++ b/trie/sync_test.go @@ -434,6 +434,7 @@ func TestDuplicateAvoidanceSync(t *testing.T) { // Tests that at any point in time during a sync, only complete sub-tries are in // the database. func TestIncompleteSync(t *testing.T) { + t.Parallel() // Create a random trie to copy srcDb, srcTrie, _ := makeTestTrie()