Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
a8e4cb6d
Commit
a8e4cb6d
authored
Jun 10, 2015
by
Felix Lange
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
p2p/discover: use separate rand.Source instances in tests
rand.Source isn't safe for concurrent use.
parent
261a8077
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
19 additions
and
15 deletions
+19
-15
node_test.go
p2p/discover/node_test.go
+14
-11
table_test.go
p2p/discover/table_test.go
+5
-4
No files found.
p2p/discover/node_test.go
View file @
a8e4cb6d
...
...
@@ -13,11 +13,6 @@ import (
"github.com/ethereum/go-ethereum/crypto"
)
var
(
quickrand
=
rand
.
New
(
rand
.
NewSource
(
time
.
Now
()
.
Unix
()))
quickcfg
=
&
quick
.
Config
{
MaxCount
:
5000
,
Rand
:
quickrand
}
)
var
parseNodeTests
=
[]
struct
{
rawurl
string
wantError
string
...
...
@@ -176,7 +171,7 @@ func TestNodeID_distcmp(t *testing.T) {
bbig
:=
new
(
big
.
Int
)
.
SetBytes
(
b
[
:
])
return
new
(
big
.
Int
)
.
Xor
(
tbig
,
abig
)
.
Cmp
(
new
(
big
.
Int
)
.
Xor
(
tbig
,
bbig
))
}
if
err
:=
quick
.
CheckEqual
(
distcmp
,
distcmpBig
,
quickcfg
);
err
!=
nil
{
if
err
:=
quick
.
CheckEqual
(
distcmp
,
distcmpBig
,
quickcfg
()
);
err
!=
nil
{
t
.
Error
(
err
)
}
}
...
...
@@ -195,7 +190,7 @@ func TestNodeID_logdist(t *testing.T) {
abig
,
bbig
:=
new
(
big
.
Int
)
.
SetBytes
(
a
[
:
]),
new
(
big
.
Int
)
.
SetBytes
(
b
[
:
])
return
new
(
big
.
Int
)
.
Xor
(
abig
,
bbig
)
.
BitLen
()
}
if
err
:=
quick
.
CheckEqual
(
logdist
,
logdistBig
,
quickcfg
);
err
!=
nil
{
if
err
:=
quick
.
CheckEqual
(
logdist
,
logdistBig
,
quickcfg
()
);
err
!=
nil
{
t
.
Error
(
err
)
}
}
...
...
@@ -211,9 +206,10 @@ func TestNodeID_logdistEqual(t *testing.T) {
func
TestNodeID_hashAtDistance
(
t
*
testing
.
T
)
{
// we don't use quick.Check here because its output isn't
// very helpful when the test fails.
for
i
:=
0
;
i
<
quickcfg
.
MaxCount
;
i
++
{
a
:=
gen
(
common
.
Hash
{},
quickrand
)
.
(
common
.
Hash
)
dist
:=
quickrand
.
Intn
(
len
(
common
.
Hash
{})
*
8
)
cfg
:=
quickcfg
()
for
i
:=
0
;
i
<
cfg
.
MaxCount
;
i
++
{
a
:=
gen
(
common
.
Hash
{},
cfg
.
Rand
)
.
(
common
.
Hash
)
dist
:=
cfg
.
Rand
.
Intn
(
len
(
common
.
Hash
{})
*
8
)
result
:=
hashAtDistance
(
a
,
dist
)
actualdist
:=
logdist
(
result
,
a
)
...
...
@@ -225,7 +221,14 @@ func TestNodeID_hashAtDistance(t *testing.T) {
}
}
// TODO: this can be dropped when we require Go >= 1.5
func
quickcfg
()
*
quick
.
Config
{
return
&
quick
.
Config
{
MaxCount
:
5000
,
Rand
:
rand
.
New
(
rand
.
NewSource
(
time
.
Now
()
.
Unix
())),
}
}
// TODO: The Generate method can be dropped when we require Go >= 1.5
// because testing/quick learned to generate arrays in 1.5.
func
(
NodeID
)
Generate
(
rand
*
rand
.
Rand
,
size
int
)
reflect
.
Value
{
...
...
p2p/discover/table_test.go
View file @
a8e4cb6d
...
...
@@ -9,6 +9,7 @@ import (
"reflect"
"testing"
"testing/quick"
"time"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
...
...
@@ -74,7 +75,7 @@ func TestBucket_bumpNoDuplicates(t *testing.T) {
t
.
Parallel
()
cfg
:=
&
quick
.
Config
{
MaxCount
:
1000
,
Rand
:
quickrand
,
Rand
:
rand
.
New
(
rand
.
NewSource
(
time
.
Now
()
.
Unix
()))
,
Values
:
func
(
args
[]
reflect
.
Value
,
rand
*
rand
.
Rand
)
{
// generate a random list of nodes. this will be the content of the bucket.
n
:=
rand
.
Intn
(
bucketSize
-
1
)
+
1
...
...
@@ -205,7 +206,7 @@ func TestTable_closest(t *testing.T) {
}
return
true
}
if
err
:=
quick
.
Check
(
test
,
quickcfg
);
err
!=
nil
{
if
err
:=
quick
.
Check
(
test
,
quickcfg
()
);
err
!=
nil
{
t
.
Error
(
err
)
}
}
...
...
@@ -213,7 +214,7 @@ func TestTable_closest(t *testing.T) {
func
TestTable_ReadRandomNodesGetAll
(
t
*
testing
.
T
)
{
cfg
:=
&
quick
.
Config
{
MaxCount
:
200
,
Rand
:
quickrand
,
Rand
:
rand
.
New
(
rand
.
NewSource
(
time
.
Now
()
.
Unix
()))
,
Values
:
func
(
args
[]
reflect
.
Value
,
rand
*
rand
.
Rand
)
{
args
[
0
]
=
reflect
.
ValueOf
(
make
([]
*
Node
,
rand
.
Intn
(
1000
)))
},
...
...
@@ -221,7 +222,7 @@ func TestTable_ReadRandomNodesGetAll(t *testing.T) {
test
:=
func
(
buf
[]
*
Node
)
bool
{
tab
:=
newTable
(
nil
,
NodeID
{},
&
net
.
UDPAddr
{},
""
)
for
i
:=
0
;
i
<
len
(
buf
);
i
++
{
ld
:=
quickr
and
.
Intn
(
len
(
tab
.
buckets
))
ld
:=
cfg
.
R
and
.
Intn
(
len
(
tab
.
buckets
))
tab
.
add
([]
*
Node
{
nodeAtDistance
(
tab
.
self
.
sha
,
ld
)})
}
gotN
:=
tab
.
ReadRandomNodes
(
buf
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment