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
261a8077
Commit
261a8077
authored
Jun 10, 2015
by
Felix Lange
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
p2p/discover: deflake TestUDP_successfulPing
parent
dffe6d32
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
30 additions
and
33 deletions
+30
-33
table.go
p2p/discover/table.go
+8
-0
udp_test.go
p2p/discover/udp_test.go
+22
-33
No files found.
p2p/discover/table.go
View file @
261a8077
...
...
@@ -40,6 +40,8 @@ type Table struct {
bonding
map
[
NodeID
]
*
bondproc
bondslots
chan
struct
{}
// limits total number of active bonding processes
nodeAddedHook
func
(
*
Node
)
// for testing
net
transport
self
*
Node
// metadata of the local node
}
...
...
@@ -431,6 +433,9 @@ func (tab *Table) pingreplace(new *Node, b *bucket) {
}
copy
(
b
.
entries
[
1
:
],
b
.
entries
)
b
.
entries
[
0
]
=
new
if
tab
.
nodeAddedHook
!=
nil
{
tab
.
nodeAddedHook
(
new
)
}
}
// ping a remote endpoint and wait for a reply, also updating the node database
...
...
@@ -466,6 +471,9 @@ outer:
}
if
len
(
bucket
.
entries
)
<
bucketSize
{
bucket
.
entries
=
append
(
bucket
.
entries
,
n
)
if
tab
.
nodeAddedHook
!=
nil
{
tab
.
nodeAddedHook
(
n
)
}
}
}
}
...
...
p2p/discover/udp_test.go
View file @
261a8077
...
...
@@ -234,14 +234,12 @@ func TestUDP_findnodeMultiReply(t *testing.T) {
func
TestUDP_successfulPing
(
t
*
testing
.
T
)
{
test
:=
newUDPTest
(
t
)
added
:=
make
(
chan
*
Node
,
1
)
test
.
table
.
nodeAddedHook
=
func
(
n
*
Node
)
{
added
<-
n
}
defer
test
.
table
.
Close
()
done
:=
make
(
chan
struct
{})
go
func
()
{
// The remote side sends a ping packet to initiate the exchange.
test
.
packetIn
(
nil
,
pingPacket
,
&
ping
{
From
:
testRemote
,
To
:
testLocalAnnounced
,
Version
:
Version
,
Expiration
:
futureExp
})
close
(
done
)
}()
// The remote side sends a ping packet to initiate the exchange.
go
test
.
packetIn
(
nil
,
pingPacket
,
&
ping
{
From
:
testRemote
,
To
:
testLocalAnnounced
,
Version
:
Version
,
Expiration
:
futureExp
})
// the ping is replied to.
test
.
waitPacketOut
(
func
(
p
*
pong
)
{
...
...
@@ -277,35 +275,26 @@ func TestUDP_successfulPing(t *testing.T) {
})
test
.
packetIn
(
nil
,
pongPacket
,
&
pong
{
Expiration
:
futureExp
})
// ping should return shortly after getting the pong packet.
<-
done
// check that the node was added.
rid
:=
PubkeyID
(
&
test
.
remotekey
.
PublicKey
)
rnode
:=
find
(
test
.
table
,
rid
)
if
rnode
==
nil
{
t
.
Fatalf
(
"node %v not found in table"
,
rid
)
}
if
!
bytes
.
Equal
(
rnode
.
IP
,
test
.
remoteaddr
.
IP
)
{
t
.
Errorf
(
"node has wrong IP: got %v, want: %v"
,
rnode
.
IP
,
test
.
remoteaddr
.
IP
)
}
if
int
(
rnode
.
UDP
)
!=
test
.
remoteaddr
.
Port
{
t
.
Errorf
(
"node has wrong UDP port: got %v, want: %v"
,
rnode
.
UDP
,
test
.
remoteaddr
.
Port
)
}
if
rnode
.
TCP
!=
testRemote
.
TCP
{
t
.
Errorf
(
"node has wrong TCP port: got %v, want: %v"
,
rnode
.
TCP
,
testRemote
.
TCP
)
}
}
func
find
(
tab
*
Table
,
id
NodeID
)
*
Node
{
for
_
,
b
:=
range
tab
.
buckets
{
for
_
,
e
:=
range
b
.
entries
{
if
e
.
ID
==
id
{
return
e
}
// the node should be added to the table shortly after getting the
// pong packet.
select
{
case
n
:=
<-
added
:
rid
:=
PubkeyID
(
&
test
.
remotekey
.
PublicKey
)
if
n
.
ID
!=
rid
{
t
.
Errorf
(
"node has wrong ID: got %v, want %v"
,
n
.
ID
,
rid
)
}
if
!
bytes
.
Equal
(
n
.
IP
,
test
.
remoteaddr
.
IP
)
{
t
.
Errorf
(
"node has wrong IP: got %v, want: %v"
,
n
.
IP
,
test
.
remoteaddr
.
IP
)
}
if
int
(
n
.
UDP
)
!=
test
.
remoteaddr
.
Port
{
t
.
Errorf
(
"node has wrong UDP port: got %v, want: %v"
,
n
.
UDP
,
test
.
remoteaddr
.
Port
)
}
if
n
.
TCP
!=
testRemote
.
TCP
{
t
.
Errorf
(
"node has wrong TCP port: got %v, want: %v"
,
n
.
TCP
,
testRemote
.
TCP
)
}
case
<-
time
.
After
(
2
*
time
.
Second
)
:
t
.
Errorf
(
"node was not added within 2 seconds"
)
}
return
nil
}
// dgramPipe is a fake UDP socket. It queues all sent datagrams.
...
...
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