Patch for concurrent iterator & others (onto v1.11.6) #386
@ -113,7 +113,6 @@ func TestWatchNewFile(t *testing.T) {
|
|||||||
func TestWatchNoDir(t *testing.T) {
|
func TestWatchNoDir(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
// Create ks but not the directory that it watches.
|
// Create ks but not the directory that it watches.
|
||||||
rand.Seed(time.Now().UnixNano())
|
|
||||||
dir := filepath.Join(os.TempDir(), fmt.Sprintf("eth-keystore-watchnodir-test-%d-%d", os.Getpid(), rand.Int()))
|
dir := filepath.Join(os.TempDir(), fmt.Sprintf("eth-keystore-watchnodir-test-%d-%d", os.Getpid(), rand.Int()))
|
||||||
ks := NewKeyStore(dir, LightScryptN, LightScryptP)
|
ks := NewKeyStore(dir, LightScryptN, LightScryptP)
|
||||||
list := ks.Accounts()
|
list := ks.Accounts()
|
||||||
@ -322,7 +321,6 @@ func TestUpdatedKeyfileContents(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
// Create a temporary keystore to test with
|
// Create a temporary keystore to test with
|
||||||
rand.Seed(time.Now().UnixNano())
|
|
||||||
dir := filepath.Join(os.TempDir(), fmt.Sprintf("eth-keystore-updatedkeyfilecontents-test-%d-%d", os.Getpid(), rand.Int()))
|
dir := filepath.Join(os.TempDir(), fmt.Sprintf("eth-keystore-updatedkeyfilecontents-test-%d-%d", os.Getpid(), rand.Int()))
|
||||||
ks := NewKeyStore(dir, LightScryptN, LightScryptP)
|
ks := NewKeyStore(dir, LightScryptN, LightScryptP)
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
package lru
|
package lru
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
crand "crypto/rand"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
@ -181,9 +182,9 @@ func BenchmarkLRU(b *testing.B) {
|
|||||||
}
|
}
|
||||||
for i := range keys {
|
for i := range keys {
|
||||||
b := make([]byte, 32)
|
b := make([]byte, 32)
|
||||||
rand.Read(b)
|
crand.Read(b)
|
||||||
keys[i] = string(b)
|
keys[i] = string(b)
|
||||||
rand.Read(b)
|
crand.Read(b)
|
||||||
values[i] = b
|
values[i] = b
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,7 +56,6 @@ func testSetIndex(a interface{}, i int) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestLazyQueue(t *testing.T) {
|
func TestLazyQueue(t *testing.T) {
|
||||||
rand.Seed(time.Now().UnixNano())
|
|
||||||
clock := &mclock.Simulated{}
|
clock := &mclock.Simulated{}
|
||||||
q := NewLazyQueue(testSetIndex, testPriority, testMaxPriority, clock, testQueueRefresh)
|
q := NewLazyQueue(testSetIndex, testPriority, testMaxPriority, clock, testQueueRefresh)
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
package ethash
|
package ethash
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
crand "crypto/rand"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"math/big"
|
"math/big"
|
||||||
@ -90,16 +91,15 @@ func TestCalcDifficulty(t *testing.T) {
|
|||||||
|
|
||||||
func randSlice(min, max uint32) []byte {
|
func randSlice(min, max uint32) []byte {
|
||||||
var b = make([]byte, 4)
|
var b = make([]byte, 4)
|
||||||
rand.Read(b)
|
crand.Read(b)
|
||||||
a := binary.LittleEndian.Uint32(b)
|
a := binary.LittleEndian.Uint32(b)
|
||||||
size := min + a%(max-min)
|
size := min + a%(max-min)
|
||||||
out := make([]byte, size)
|
out := make([]byte, size)
|
||||||
rand.Read(out)
|
crand.Read(out)
|
||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDifficultyCalculators(t *testing.T) {
|
func TestDifficultyCalculators(t *testing.T) {
|
||||||
rand.Seed(2)
|
|
||||||
for i := 0; i < 5000; i++ {
|
for i := 0; i < 5000; i++ {
|
||||||
// 1 to 300 seconds diff
|
// 1 to 300 seconds diff
|
||||||
var timeDelta = uint64(1 + rand.Uint32()%3000)
|
var timeDelta = uint64(1 + rand.Uint32()%3000)
|
||||||
|
@ -18,6 +18,7 @@ package bloombits
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
crand "crypto/rand"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
@ -78,7 +79,7 @@ func BenchmarkGenerator(b *testing.B) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
for i := 0; i < types.BloomBitLength; i++ {
|
for i := 0; i < types.BloomBitLength; i++ {
|
||||||
rand.Read(input[i][:])
|
crand.Read(input[i][:])
|
||||||
}
|
}
|
||||||
b.Run("random", func(b *testing.B) {
|
b.Run("random", func(b *testing.B) {
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
|
@ -27,17 +27,12 @@ import (
|
|||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"testing"
|
"testing"
|
||||||
"testing/quick"
|
"testing/quick"
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/davecgh/go-spew/spew"
|
"github.com/davecgh/go-spew/spew"
|
||||||
"github.com/ethereum/go-ethereum/metrics"
|
"github.com/ethereum/go-ethereum/metrics"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
|
||||||
rand.Seed(time.Now().Unix())
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestFreezerBasics test initializing a freezertable from scratch, writing to the table,
|
// TestFreezerBasics test initializing a freezertable from scratch, writing to the table,
|
||||||
// and reading it back.
|
// and reading it back.
|
||||||
func TestFreezerBasics(t *testing.T) {
|
func TestFreezerBasics(t *testing.T) {
|
||||||
|
@ -18,6 +18,7 @@ package snapshot
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
crand "crypto/rand"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
@ -73,7 +74,7 @@ func TestMergeBasics(t *testing.T) {
|
|||||||
if rand.Intn(2) == 0 {
|
if rand.Intn(2) == 0 {
|
||||||
accStorage := make(map[common.Hash][]byte)
|
accStorage := make(map[common.Hash][]byte)
|
||||||
value := make([]byte, 32)
|
value := make([]byte, 32)
|
||||||
rand.Read(value)
|
crand.Read(value)
|
||||||
accStorage[randomHash()] = value
|
accStorage[randomHash()] = value
|
||||||
storage[h] = accStorage
|
storage[h] = accStorage
|
||||||
}
|
}
|
||||||
@ -294,7 +295,7 @@ func BenchmarkSearchSlot(b *testing.B) {
|
|||||||
accStorage := make(map[common.Hash][]byte)
|
accStorage := make(map[common.Hash][]byte)
|
||||||
for i := 0; i < 5; i++ {
|
for i := 0; i < 5; i++ {
|
||||||
value := make([]byte, 32)
|
value := make([]byte, 32)
|
||||||
rand.Read(value)
|
crand.Read(value)
|
||||||
accStorage[randomHash()] = value
|
accStorage[randomHash()] = value
|
||||||
storage[accountKey] = accStorage
|
storage[accountKey] = accStorage
|
||||||
}
|
}
|
||||||
@ -330,7 +331,7 @@ func BenchmarkFlatten(b *testing.B) {
|
|||||||
accStorage := make(map[common.Hash][]byte)
|
accStorage := make(map[common.Hash][]byte)
|
||||||
for i := 0; i < 20; i++ {
|
for i := 0; i < 20; i++ {
|
||||||
value := make([]byte, 32)
|
value := make([]byte, 32)
|
||||||
rand.Read(value)
|
crand.Read(value)
|
||||||
accStorage[randomHash()] = value
|
accStorage[randomHash()] = value
|
||||||
}
|
}
|
||||||
storage[accountKey] = accStorage
|
storage[accountKey] = accStorage
|
||||||
@ -379,7 +380,7 @@ func BenchmarkJournal(b *testing.B) {
|
|||||||
accStorage := make(map[common.Hash][]byte)
|
accStorage := make(map[common.Hash][]byte)
|
||||||
for i := 0; i < 200; i++ {
|
for i := 0; i < 200; i++ {
|
||||||
value := make([]byte, 32)
|
value := make([]byte, 32)
|
||||||
rand.Read(value)
|
crand.Read(value)
|
||||||
accStorage[randomHash()] = value
|
accStorage[randomHash()] = value
|
||||||
}
|
}
|
||||||
storage[accountKey] = accStorage
|
storage[accountKey] = accStorage
|
||||||
|
@ -18,6 +18,7 @@ package snapshot
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
crand "crypto/rand"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
@ -47,7 +48,7 @@ func TestAccountIteratorBasics(t *testing.T) {
|
|||||||
if rand.Intn(2) == 0 {
|
if rand.Intn(2) == 0 {
|
||||||
accStorage := make(map[common.Hash][]byte)
|
accStorage := make(map[common.Hash][]byte)
|
||||||
value := make([]byte, 32)
|
value := make([]byte, 32)
|
||||||
rand.Read(value)
|
crand.Read(value)
|
||||||
accStorage[randomHash()] = value
|
accStorage[randomHash()] = value
|
||||||
storage[h] = accStorage
|
storage[h] = accStorage
|
||||||
}
|
}
|
||||||
@ -79,7 +80,7 @@ func TestStorageIteratorBasics(t *testing.T) {
|
|||||||
|
|
||||||
var nilstorage int
|
var nilstorage int
|
||||||
for i := 0; i < 100; i++ {
|
for i := 0; i < 100; i++ {
|
||||||
rand.Read(value)
|
crand.Read(value)
|
||||||
if rand.Intn(2) == 0 {
|
if rand.Intn(2) == 0 {
|
||||||
accStorage[randomHash()] = common.CopyBytes(value)
|
accStorage[randomHash()] = common.CopyBytes(value)
|
||||||
} else {
|
} else {
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
package snapshot
|
package snapshot
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
crand "crypto/rand"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/big"
|
"math/big"
|
||||||
@ -33,7 +34,7 @@ import (
|
|||||||
// randomHash generates a random blob of data and returns it as a hash.
|
// randomHash generates a random blob of data and returns it as a hash.
|
||||||
func randomHash() common.Hash {
|
func randomHash() common.Hash {
|
||||||
var hash common.Hash
|
var hash common.Hash
|
||||||
if n, err := rand.Read(hash[:]); n != common.HashLength || err != nil {
|
if n, err := crand.Read(hash[:]); n != common.HashLength || err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
return hash
|
return hash
|
||||||
|
@ -18,6 +18,7 @@ package txpool
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
|
crand "crypto/rand"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/big"
|
"math/big"
|
||||||
@ -92,7 +93,7 @@ func pricedTransaction(nonce uint64, gaslimit uint64, gasprice *big.Int, key *ec
|
|||||||
|
|
||||||
func pricedDataTransaction(nonce uint64, gaslimit uint64, gasprice *big.Int, key *ecdsa.PrivateKey, bytes uint64) *types.Transaction {
|
func pricedDataTransaction(nonce uint64, gaslimit uint64, gasprice *big.Int, key *ecdsa.PrivateKey, bytes uint64) *types.Transaction {
|
||||||
data := make([]byte, bytes)
|
data := make([]byte, bytes)
|
||||||
rand.Read(data)
|
crand.Read(data)
|
||||||
|
|
||||||
tx, _ := types.SignTx(types.NewTransaction(nonce, common.Address{}, big.NewInt(0), gaslimit, gasprice, data), types.HomesteadSigner{}, key)
|
tx, _ := types.SignTx(types.NewTransaction(nonce, common.Address{}, big.NewInt(0), gaslimit, gasprice, data), types.HomesteadSigner{}, key)
|
||||||
return tx
|
return tx
|
||||||
|
@ -20,10 +20,9 @@
|
|||||||
package signify
|
package signify
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"math/rand"
|
"crypto/rand"
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/jedisct1/go-minisign"
|
"github.com/jedisct1/go-minisign"
|
||||||
)
|
)
|
||||||
@ -41,8 +40,6 @@ func TestSignify(t *testing.T) {
|
|||||||
defer os.Remove(tmpFile.Name())
|
defer os.Remove(tmpFile.Name())
|
||||||
defer tmpFile.Close()
|
defer tmpFile.Close()
|
||||||
|
|
||||||
rand.Seed(time.Now().UnixNano())
|
|
||||||
|
|
||||||
data := make([]byte, 1024)
|
data := make([]byte, 1024)
|
||||||
rand.Read(data)
|
rand.Read(data)
|
||||||
tmpFile.Write(data)
|
tmpFile.Write(data)
|
||||||
@ -85,8 +82,6 @@ func TestSignifyTrustedCommentTooManyLines(t *testing.T) {
|
|||||||
defer os.Remove(tmpFile.Name())
|
defer os.Remove(tmpFile.Name())
|
||||||
defer tmpFile.Close()
|
defer tmpFile.Close()
|
||||||
|
|
||||||
rand.Seed(time.Now().UnixNano())
|
|
||||||
|
|
||||||
data := make([]byte, 1024)
|
data := make([]byte, 1024)
|
||||||
rand.Read(data)
|
rand.Read(data)
|
||||||
tmpFile.Write(data)
|
tmpFile.Write(data)
|
||||||
@ -110,8 +105,6 @@ func TestSignifyTrustedCommentTooManyLinesLF(t *testing.T) {
|
|||||||
defer os.Remove(tmpFile.Name())
|
defer os.Remove(tmpFile.Name())
|
||||||
defer tmpFile.Close()
|
defer tmpFile.Close()
|
||||||
|
|
||||||
rand.Seed(time.Now().UnixNano())
|
|
||||||
|
|
||||||
data := make([]byte, 1024)
|
data := make([]byte, 1024)
|
||||||
rand.Read(data)
|
rand.Read(data)
|
||||||
tmpFile.Write(data)
|
tmpFile.Write(data)
|
||||||
@ -135,8 +128,6 @@ func TestSignifyTrustedCommentEmpty(t *testing.T) {
|
|||||||
defer os.Remove(tmpFile.Name())
|
defer os.Remove(tmpFile.Name())
|
||||||
defer tmpFile.Close()
|
defer tmpFile.Close()
|
||||||
|
|
||||||
rand.Seed(time.Now().UnixNano())
|
|
||||||
|
|
||||||
data := make([]byte, 1024)
|
data := make([]byte, 1024)
|
||||||
rand.Read(data)
|
rand.Read(data)
|
||||||
tmpFile.Write(data)
|
tmpFile.Write(data)
|
||||||
|
@ -18,7 +18,7 @@ package dbtest
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"math/rand"
|
"crypto/rand"
|
||||||
"reflect"
|
"reflect"
|
||||||
"sort"
|
"sort"
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -100,7 +100,6 @@ func TestSubscribeDuplicateType(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestMuxConcurrent(t *testing.T) {
|
func TestMuxConcurrent(t *testing.T) {
|
||||||
rand.Seed(time.Now().Unix())
|
|
||||||
mux := new(TypeMux)
|
mux := new(TypeMux)
|
||||||
defer mux.Stop()
|
defer mux.Stop()
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ package les
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
crand "crypto/rand"
|
||||||
"errors"
|
"errors"
|
||||||
"flag"
|
"flag"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
@ -326,7 +327,7 @@ func getHead(ctx context.Context, t *testing.T, client *rpc.Client) (uint64, com
|
|||||||
func testRequest(ctx context.Context, t *testing.T, client *rpc.Client) bool {
|
func testRequest(ctx context.Context, t *testing.T, client *rpc.Client) bool {
|
||||||
var res string
|
var res string
|
||||||
var addr common.Address
|
var addr common.Address
|
||||||
rand.Read(addr[:])
|
crand.Read(addr[:])
|
||||||
c, cancel := context.WithTimeout(ctx, time.Second*12)
|
c, cancel := context.WithTimeout(ctx, time.Second*12)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
err := client.CallContext(c, &res, "eth_getBalance", addr, "latest")
|
err := client.CallContext(c, &res, "eth_getBalance", addr, "latest")
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
package les
|
package les
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
crand "crypto/rand"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/big"
|
"math/big"
|
||||||
@ -114,7 +115,7 @@ func (b *benchmarkProofsOrCode) init(h *serverHandler, count int) error {
|
|||||||
|
|
||||||
func (b *benchmarkProofsOrCode) request(peer *serverPeer, index int) error {
|
func (b *benchmarkProofsOrCode) request(peer *serverPeer, index int) error {
|
||||||
key := make([]byte, 32)
|
key := make([]byte, 32)
|
||||||
rand.Read(key)
|
crand.Read(key)
|
||||||
if b.code {
|
if b.code {
|
||||||
return peer.requestCode(0, []CodeReq{{BHash: b.headHash, AccKey: key}})
|
return peer.requestCode(0, []CodeReq{{BHash: b.headHash, AccKey: key}})
|
||||||
}
|
}
|
||||||
@ -176,7 +177,7 @@ func (b *benchmarkTxSend) init(h *serverHandler, count int) error {
|
|||||||
|
|
||||||
for i := range b.txs {
|
for i := range b.txs {
|
||||||
data := make([]byte, txSizeCostLimit)
|
data := make([]byte, txSizeCostLimit)
|
||||||
rand.Read(data)
|
crand.Read(data)
|
||||||
tx, err := types.SignTx(types.NewTransaction(0, addr, new(big.Int), 0, new(big.Int), data), signer, key)
|
tx, err := types.SignTx(types.NewTransaction(0, addr, new(big.Int), 0, new(big.Int), data), signer, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
@ -200,7 +201,7 @@ func (b *benchmarkTxStatus) init(h *serverHandler, count int) error {
|
|||||||
|
|
||||||
func (b *benchmarkTxStatus) request(peer *serverPeer, index int) error {
|
func (b *benchmarkTxStatus) request(peer *serverPeer, index int) error {
|
||||||
var hash common.Hash
|
var hash common.Hash
|
||||||
rand.Read(hash[:])
|
crand.Read(hash[:])
|
||||||
return peer.requestTxStatus(0, []common.Hash{hash})
|
return peer.requestTxStatus(0, []common.Hash{hash})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,7 +279,7 @@ func (h *serverHandler) measure(setup *benchmarkSetup, count int) error {
|
|||||||
clientMeteredPipe := &meteredPipe{rw: clientPipe}
|
clientMeteredPipe := &meteredPipe{rw: clientPipe}
|
||||||
serverMeteredPipe := &meteredPipe{rw: serverPipe}
|
serverMeteredPipe := &meteredPipe{rw: serverPipe}
|
||||||
var id enode.ID
|
var id enode.ID
|
||||||
rand.Read(id[:])
|
crand.Read(id[:])
|
||||||
|
|
||||||
peer1 := newServerPeer(lpv2, NetworkId, false, p2p.NewPeer(id, "client", nil), clientMeteredPipe)
|
peer1 := newServerPeer(lpv2, NetworkId, false, p2p.NewPeer(id, "client", nil), clientMeteredPipe)
|
||||||
peer2 := newClientPeer(lpv2, NetworkId, p2p.NewPeer(id, "server", nil), serverMeteredPipe)
|
peer2 := newClientPeer(lpv2, NetworkId, p2p.NewPeer(id, "server", nil), serverMeteredPipe)
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
package utils
|
package utils
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"math/rand"
|
"crypto/rand"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/p2p/enode"
|
"github.com/ethereum/go-ethereum/p2p/enode"
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
package client
|
package client
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"math/rand"
|
"crypto/rand"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -135,7 +135,6 @@ func alwaysTrueFn() bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func testClientPool(t *testing.T, activeLimit, clientCount, paidCount int, randomDisconnect bool) {
|
func testClientPool(t *testing.T, activeLimit, clientCount, paidCount int, randomDisconnect bool) {
|
||||||
rand.Seed(time.Now().UnixNano())
|
|
||||||
var (
|
var (
|
||||||
clock mclock.Simulated
|
clock mclock.Simulated
|
||||||
db = rawdb.NewMemoryDatabase()
|
db = rawdb.NewMemoryDatabase()
|
||||||
|
@ -41,6 +41,7 @@ type ExpDecaySample struct {
|
|||||||
reservoirSize int
|
reservoirSize int
|
||||||
t0, t1 time.Time
|
t0, t1 time.Time
|
||||||
values *expDecaySampleHeap
|
values *expDecaySampleHeap
|
||||||
|
rand *rand.Rand
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewExpDecaySample constructs a new exponentially-decaying sample with the
|
// NewExpDecaySample constructs a new exponentially-decaying sample with the
|
||||||
@ -59,6 +60,12 @@ func NewExpDecaySample(reservoirSize int, alpha float64) Sample {
|
|||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetRand sets the random source (useful in tests)
|
||||||
|
func (s *ExpDecaySample) SetRand(prng *rand.Rand) Sample {
|
||||||
|
s.rand = prng
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
// Clear clears all samples.
|
// Clear clears all samples.
|
||||||
func (s *ExpDecaySample) Clear() {
|
func (s *ExpDecaySample) Clear() {
|
||||||
s.mutex.Lock()
|
s.mutex.Lock()
|
||||||
@ -168,8 +175,14 @@ func (s *ExpDecaySample) update(t time.Time, v int64) {
|
|||||||
if s.values.Size() == s.reservoirSize {
|
if s.values.Size() == s.reservoirSize {
|
||||||
s.values.Pop()
|
s.values.Pop()
|
||||||
}
|
}
|
||||||
|
var f64 float64
|
||||||
|
if s.rand != nil {
|
||||||
|
f64 = s.rand.Float64()
|
||||||
|
} else {
|
||||||
|
f64 = rand.Float64()
|
||||||
|
}
|
||||||
s.values.Push(expDecaySample{
|
s.values.Push(expDecaySample{
|
||||||
k: math.Exp(t.Sub(s.t0).Seconds()*s.alpha) / rand.Float64(),
|
k: math.Exp(t.Sub(s.t0).Seconds()*s.alpha) / f64,
|
||||||
v: v,
|
v: v,
|
||||||
})
|
})
|
||||||
if t.After(s.t1) {
|
if t.After(s.t1) {
|
||||||
@ -402,6 +415,7 @@ type UniformSample struct {
|
|||||||
mutex sync.Mutex
|
mutex sync.Mutex
|
||||||
reservoirSize int
|
reservoirSize int
|
||||||
values []int64
|
values []int64
|
||||||
|
rand *rand.Rand
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewUniformSample constructs a new uniform sample with the given reservoir
|
// NewUniformSample constructs a new uniform sample with the given reservoir
|
||||||
@ -416,6 +430,12 @@ func NewUniformSample(reservoirSize int) Sample {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetRand sets the random source (useful in tests)
|
||||||
|
func (s *UniformSample) SetRand(prng *rand.Rand) Sample {
|
||||||
|
s.rand = prng
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
// Clear clears all samples.
|
// Clear clears all samples.
|
||||||
func (s *UniformSample) Clear() {
|
func (s *UniformSample) Clear() {
|
||||||
s.mutex.Lock()
|
s.mutex.Lock()
|
||||||
@ -511,7 +531,12 @@ func (s *UniformSample) Update(v int64) {
|
|||||||
if len(s.values) < s.reservoirSize {
|
if len(s.values) < s.reservoirSize {
|
||||||
s.values = append(s.values, v)
|
s.values = append(s.values, v)
|
||||||
} else {
|
} else {
|
||||||
r := rand.Int63n(s.count)
|
var r int64
|
||||||
|
if s.rand != nil {
|
||||||
|
r = s.rand.Int63n(s.count)
|
||||||
|
} else {
|
||||||
|
r = rand.Int63n(s.count)
|
||||||
|
}
|
||||||
if r < int64(len(s.values)) {
|
if r < int64(len(s.values)) {
|
||||||
s.values[int(r)] = v
|
s.values[int(r)] = v
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,6 @@ func BenchmarkUniformSample1028(b *testing.B) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestExpDecaySample10(t *testing.T) {
|
func TestExpDecaySample10(t *testing.T) {
|
||||||
rand.Seed(1)
|
|
||||||
s := NewExpDecaySample(100, 0.99)
|
s := NewExpDecaySample(100, 0.99)
|
||||||
for i := 0; i < 10; i++ {
|
for i := 0; i < 10; i++ {
|
||||||
s.Update(int64(i))
|
s.Update(int64(i))
|
||||||
@ -102,7 +101,6 @@ func TestExpDecaySample10(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestExpDecaySample100(t *testing.T) {
|
func TestExpDecaySample100(t *testing.T) {
|
||||||
rand.Seed(1)
|
|
||||||
s := NewExpDecaySample(1000, 0.01)
|
s := NewExpDecaySample(1000, 0.01)
|
||||||
for i := 0; i < 100; i++ {
|
for i := 0; i < 100; i++ {
|
||||||
s.Update(int64(i))
|
s.Update(int64(i))
|
||||||
@ -124,7 +122,6 @@ func TestExpDecaySample100(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestExpDecaySample1000(t *testing.T) {
|
func TestExpDecaySample1000(t *testing.T) {
|
||||||
rand.Seed(1)
|
|
||||||
s := NewExpDecaySample(100, 0.99)
|
s := NewExpDecaySample(100, 0.99)
|
||||||
for i := 0; i < 1000; i++ {
|
for i := 0; i < 1000; i++ {
|
||||||
s.Update(int64(i))
|
s.Update(int64(i))
|
||||||
@ -150,7 +147,6 @@ func TestExpDecaySample1000(t *testing.T) {
|
|||||||
// The priority becomes +Inf quickly after starting if this is done,
|
// The priority becomes +Inf quickly after starting if this is done,
|
||||||
// effectively freezing the set of samples until a rescale step happens.
|
// effectively freezing the set of samples until a rescale step happens.
|
||||||
func TestExpDecaySampleNanosecondRegression(t *testing.T) {
|
func TestExpDecaySampleNanosecondRegression(t *testing.T) {
|
||||||
rand.Seed(1)
|
|
||||||
s := NewExpDecaySample(100, 0.99)
|
s := NewExpDecaySample(100, 0.99)
|
||||||
for i := 0; i < 100; i++ {
|
for i := 0; i < 100; i++ {
|
||||||
s.Update(10)
|
s.Update(10)
|
||||||
@ -183,8 +179,7 @@ func TestExpDecaySampleRescale(t *testing.T) {
|
|||||||
|
|
||||||
func TestExpDecaySampleSnapshot(t *testing.T) {
|
func TestExpDecaySampleSnapshot(t *testing.T) {
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
rand.Seed(1)
|
s := NewExpDecaySample(100, 0.99).(*ExpDecaySample).SetRand(rand.New(rand.NewSource(1)))
|
||||||
s := NewExpDecaySample(100, 0.99)
|
|
||||||
for i := 1; i <= 10000; i++ {
|
for i := 1; i <= 10000; i++ {
|
||||||
s.(*ExpDecaySample).update(now.Add(time.Duration(i)), int64(i))
|
s.(*ExpDecaySample).update(now.Add(time.Duration(i)), int64(i))
|
||||||
}
|
}
|
||||||
@ -195,8 +190,7 @@ func TestExpDecaySampleSnapshot(t *testing.T) {
|
|||||||
|
|
||||||
func TestExpDecaySampleStatistics(t *testing.T) {
|
func TestExpDecaySampleStatistics(t *testing.T) {
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
rand.Seed(1)
|
s := NewExpDecaySample(100, 0.99).(*ExpDecaySample).SetRand(rand.New(rand.NewSource(1)))
|
||||||
s := NewExpDecaySample(100, 0.99)
|
|
||||||
for i := 1; i <= 10000; i++ {
|
for i := 1; i <= 10000; i++ {
|
||||||
s.(*ExpDecaySample).update(now.Add(time.Duration(i)), int64(i))
|
s.(*ExpDecaySample).update(now.Add(time.Duration(i)), int64(i))
|
||||||
}
|
}
|
||||||
@ -204,7 +198,6 @@ func TestExpDecaySampleStatistics(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestUniformSample(t *testing.T) {
|
func TestUniformSample(t *testing.T) {
|
||||||
rand.Seed(1)
|
|
||||||
s := NewUniformSample(100)
|
s := NewUniformSample(100)
|
||||||
for i := 0; i < 1000; i++ {
|
for i := 0; i < 1000; i++ {
|
||||||
s.Update(int64(i))
|
s.Update(int64(i))
|
||||||
@ -226,7 +219,6 @@ func TestUniformSample(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestUniformSampleIncludesTail(t *testing.T) {
|
func TestUniformSampleIncludesTail(t *testing.T) {
|
||||||
rand.Seed(1)
|
|
||||||
s := NewUniformSample(100)
|
s := NewUniformSample(100)
|
||||||
max := 100
|
max := 100
|
||||||
for i := 0; i < max; i++ {
|
for i := 0; i < max; i++ {
|
||||||
@ -244,7 +236,7 @@ func TestUniformSampleIncludesTail(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestUniformSampleSnapshot(t *testing.T) {
|
func TestUniformSampleSnapshot(t *testing.T) {
|
||||||
s := NewUniformSample(100)
|
s := NewUniformSample(100).(*UniformSample).SetRand(rand.New(rand.NewSource(1)))
|
||||||
for i := 1; i <= 10000; i++ {
|
for i := 1; i <= 10000; i++ {
|
||||||
s.Update(int64(i))
|
s.Update(int64(i))
|
||||||
}
|
}
|
||||||
@ -254,8 +246,7 @@ func TestUniformSampleSnapshot(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestUniformSampleStatistics(t *testing.T) {
|
func TestUniformSampleStatistics(t *testing.T) {
|
||||||
rand.Seed(1)
|
s := NewUniformSample(100).(*UniformSample).SetRand(rand.New(rand.NewSource(1)))
|
||||||
s := NewUniformSample(100)
|
|
||||||
for i := 1; i <= 10000; i++ {
|
for i := 1; i <= 10000; i++ {
|
||||||
s.Update(int64(i))
|
s.Update(int64(i))
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
|
crand "crypto/rand"
|
||||||
"math/big"
|
"math/big"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"os"
|
"os"
|
||||||
@ -162,7 +163,7 @@ func makeTransaction(nonce uint64, privKey *ecdsa.PrivateKey, signer types.Signe
|
|||||||
// Feecap and feetip are limited to 32 bytes. Offer a sightly
|
// Feecap and feetip are limited to 32 bytes. Offer a sightly
|
||||||
// larger buffer for creating both valid and invalid transactions.
|
// larger buffer for creating both valid and invalid transactions.
|
||||||
var buf = make([]byte, 32+5)
|
var buf = make([]byte, 32+5)
|
||||||
rand.Read(buf)
|
crand.Read(buf)
|
||||||
gasTipCap := new(big.Int).SetBytes(buf)
|
gasTipCap := new(big.Int).SetBytes(buf)
|
||||||
|
|
||||||
// If the given base fee is nil(the 1559 is still not available),
|
// If the given base fee is nil(the 1559 is still not available),
|
||||||
@ -173,7 +174,7 @@ func makeTransaction(nonce uint64, privKey *ecdsa.PrivateKey, signer types.Signe
|
|||||||
// Generate the feecap, 75% valid feecap and 25% unguaranteed.
|
// Generate the feecap, 75% valid feecap and 25% unguaranteed.
|
||||||
var gasFeeCap *big.Int
|
var gasFeeCap *big.Int
|
||||||
if rand.Intn(4) == 0 {
|
if rand.Intn(4) == 0 {
|
||||||
rand.Read(buf)
|
crand.Read(buf)
|
||||||
gasFeeCap = new(big.Int).SetBytes(buf)
|
gasFeeCap = new(big.Int).SetBytes(buf)
|
||||||
} else {
|
} else {
|
||||||
gasFeeCap = new(big.Int).Add(baseFee, gasTipCap)
|
gasFeeCap = new(big.Int).Add(baseFee, gasTipCap)
|
||||||
|
@ -17,9 +17,9 @@
|
|||||||
package miner
|
package miner
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"crypto/rand"
|
||||||
"errors"
|
"errors"
|
||||||
"math/big"
|
"math/big"
|
||||||
"math/rand"
|
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
@ -105,8 +105,6 @@ func init() {
|
|||||||
GasPrice: big.NewInt(params.InitialBaseFee),
|
GasPrice: big.NewInt(params.InitialBaseFee),
|
||||||
})
|
})
|
||||||
newTxs = append(newTxs, tx2)
|
newTxs = append(newTxs, tx2)
|
||||||
|
|
||||||
rand.Seed(time.Now().UnixNano())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// testWorkerBackend implements worker.Backend interfaces and wraps all information needed during the testing.
|
// testWorkerBackend implements worker.Backend interfaces and wraps all information needed during the testing.
|
||||||
|
@ -165,7 +165,6 @@ func TestUDPv4_responseTimeouts(t *testing.T) {
|
|||||||
test := newUDPTest(t)
|
test := newUDPTest(t)
|
||||||
defer test.close()
|
defer test.close()
|
||||||
|
|
||||||
rand.Seed(time.Now().UnixNano())
|
|
||||||
randomDuration := func(max time.Duration) time.Duration {
|
randomDuration := func(max time.Duration) time.Duration {
|
||||||
return time.Duration(rand.Int63n(int64(max)))
|
return time.Duration(rand.Int63n(int64(max)))
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
package enode
|
package enode
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"math/rand"
|
"crypto/rand"
|
||||||
"net"
|
"net"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
@ -17,8 +17,8 @@
|
|||||||
package netutil
|
package netutil
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
crand "crypto/rand"
|
||||||
"fmt"
|
"fmt"
|
||||||
mrand "math/rand"
|
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -123,8 +123,8 @@ func TestIPTrackerForceGC(t *testing.T) {
|
|||||||
for i := 0; i < 5*max; i++ {
|
for i := 0; i < 5*max; i++ {
|
||||||
e1 := make([]byte, 4)
|
e1 := make([]byte, 4)
|
||||||
e2 := make([]byte, 4)
|
e2 := make([]byte, 4)
|
||||||
mrand.Read(e1)
|
crand.Read(e1)
|
||||||
mrand.Read(e2)
|
crand.Read(e2)
|
||||||
it.AddStatement(string(e1), string(e2))
|
it.AddStatement(string(e1), string(e2))
|
||||||
it.AddContact(string(e1))
|
it.AddContact(string(e1))
|
||||||
clock.Run(rate)
|
clock.Run(rate)
|
||||||
|
@ -18,6 +18,7 @@ package trie
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
crand "crypto/rand"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"testing"
|
"testing"
|
||||||
@ -97,7 +98,7 @@ func TestHexToCompactInPlaceRandom(t *testing.T) {
|
|||||||
for i := 0; i < 10000; i++ {
|
for i := 0; i < 10000; i++ {
|
||||||
l := rand.Intn(128)
|
l := rand.Intn(128)
|
||||||
key := make([]byte, l)
|
key := make([]byte, l)
|
||||||
rand.Read(key)
|
crand.Read(key)
|
||||||
hexBytes := keybytesToHex(key)
|
hexBytes := keybytesToHex(key)
|
||||||
hexOrig := []byte(string(hexBytes))
|
hexOrig := []byte(string(hexBytes))
|
||||||
exp := hexToCompact(hexBytes)
|
exp := hexToCompact(hexBytes)
|
||||||
|
@ -23,7 +23,6 @@ import (
|
|||||||
mrand "math/rand"
|
mrand "math/rand"
|
||||||
"sort"
|
"sort"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/core/rawdb"
|
"github.com/ethereum/go-ethereum/core/rawdb"
|
||||||
@ -31,10 +30,6 @@ import (
|
|||||||
"github.com/ethereum/go-ethereum/ethdb/memorydb"
|
"github.com/ethereum/go-ethereum/ethdb/memorydb"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
|
||||||
mrand.Seed(time.Now().Unix())
|
|
||||||
}
|
|
||||||
|
|
||||||
// makeProvers creates Merkle trie provers based on different implementations to
|
// makeProvers creates Merkle trie provers based on different implementations to
|
||||||
// test all variations.
|
// test all variations.
|
||||||
func makeProvers(trie *Trie) []func(key []byte) *memorydb.Database {
|
func makeProvers(trie *Trie) []func(key []byte) *memorydb.Database {
|
||||||
|
@ -18,6 +18,7 @@ package trie
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
crand "crypto/rand"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -1127,8 +1128,8 @@ func TestDecodeNode(t *testing.T) {
|
|||||||
elems = make([]byte, 20)
|
elems = make([]byte, 20)
|
||||||
)
|
)
|
||||||
for i := 0; i < 5000000; i++ {
|
for i := 0; i < 5000000; i++ {
|
||||||
rand.Read(hash)
|
crand.Read(hash)
|
||||||
rand.Read(elems)
|
crand.Read(elems)
|
||||||
decodeNode(hash, elems)
|
decodeNode(hash, elems)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user