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
699794d8
Commit
699794d8
authored
Jun 05, 2018
by
Andrey Petrov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
p2p: More tests for AddTrustedPeer/RemoveTrustedPeer
parent
773857a5
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
52 additions
and
8 deletions
+52
-8
server_test.go
p2p/server_test.go
+52
-8
No files found.
p2p/server_test.go
View file @
699794d8
...
...
@@ -148,7 +148,8 @@ func TestServerDial(t *testing.T) {
// tell the server to connect
tcpAddr
:=
listener
.
Addr
()
.
(
*
net
.
TCPAddr
)
srv
.
AddPeer
(
&
discover
.
Node
{
ID
:
remid
,
IP
:
tcpAddr
.
IP
,
TCP
:
uint16
(
tcpAddr
.
Port
)})
node
:=
&
discover
.
Node
{
ID
:
remid
,
IP
:
tcpAddr
.
IP
,
TCP
:
uint16
(
tcpAddr
.
Port
)}
srv
.
AddPeer
(
node
)
select
{
case
conn
:=
<-
accepted
:
...
...
@@ -170,6 +171,21 @@ func TestServerDial(t *testing.T) {
if
!
reflect
.
DeepEqual
(
peers
,
[]
*
Peer
{
peer
})
{
t
.
Errorf
(
"Peers mismatch: got %v, want %v"
,
peers
,
[]
*
Peer
{
peer
})
}
// Test AddTrustedPeer/RemoveTrustedPeer and changing Trusted flags
// Particularly for race conditions on changing the flag state.
if
peer
:=
srv
.
Peers
()[
0
];
peer
.
Info
()
.
Network
.
Trusted
{
t
.
Errorf
(
"peer is trusted prematurely: %v"
,
peer
)
}
srv
.
AddTrustedPeer
(
node
)
if
peer
:=
srv
.
Peers
()[
0
];
!
peer
.
Info
()
.
Network
.
Trusted
{
t
.
Errorf
(
"peer is not trusted after AddTrustedPeer: %v"
,
peer
)
}
srv
.
RemoveTrustedPeer
(
node
)
if
peer
:=
srv
.
Peers
()[
0
];
peer
.
Info
()
.
Network
.
Trusted
{
t
.
Errorf
(
"peer is trusted after RemoveTrustedPeer: %v"
,
peer
)
}
case
<-
time
.
After
(
1
*
time
.
Second
)
:
t
.
Error
(
"server did not launch peer within one second"
)
}
...
...
@@ -351,7 +367,8 @@ func TestServerAtCap(t *testing.T) {
}
}
// Try inserting a non-trusted connection.
c
:=
newconn
(
randomID
())
anotherID
:=
randomID
()
c
:=
newconn
(
anotherID
)
if
err
:=
srv
.
checkpoint
(
c
,
srv
.
posthandshake
);
err
!=
DiscTooManyPeers
{
t
.
Error
(
"wrong error for insert:"
,
err
)
}
...
...
@@ -363,15 +380,41 @@ func TestServerAtCap(t *testing.T) {
if
!
c
.
is
(
trustedConn
)
{
t
.
Error
(
"Server did not set trusted flag"
)
}
// Remove from trusted set and try again
srv
.
RemoveTrustedPeer
(
&
discover
.
Node
{
ID
:
trustedID
})
c
=
newconn
(
trustedID
)
if
err
:=
srv
.
checkpoint
(
c
,
srv
.
posthandshake
);
err
!=
DiscTooManyPeers
{
t
.
Error
(
"wrong error for insert:"
,
err
)
}
// Add anotherID to trusted set and try again
srv
.
AddTrustedPeer
(
&
discover
.
Node
{
ID
:
anotherID
})
c
=
newconn
(
anotherID
)
if
err
:=
srv
.
checkpoint
(
c
,
srv
.
posthandshake
);
err
!=
nil
{
t
.
Error
(
"unexpected error for trusted conn @posthandshake:"
,
err
)
}
if
!
c
.
is
(
trustedConn
)
{
t
.
Error
(
"Server did not set trusted flag"
)
}
}
func
TestServerPeerLimits
(
t
*
testing
.
T
)
{
srvkey
:=
newkey
()
srvid
:=
discover
.
PubkeyID
(
&
srvkey
.
PublicKey
)
var
tp
*
setupTransport
=
&
setupTransport
{
id
:
srvid
,
phs
:
&
protoHandshake
{
ID
:
srvid
}}
clientid
:=
randomID
()
clientnode
:=
&
discover
.
Node
{
ID
:
clientid
}
var
tp
*
setupTransport
=
&
setupTransport
{
id
:
clientid
,
phs
:
&
protoHandshake
{
ID
:
clientid
,
// Force "DiscUselessPeer" due to unmatching caps
// Caps: []Cap{discard.cap()},
},
}
var
flags
connFlag
=
dynDialedConn
var
dialDest
*
discover
.
Node
=
&
discover
.
Node
{
ID
:
srv
id
}
var
dialDest
*
discover
.
Node
=
&
discover
.
Node
{
ID
:
client
id
}
srv
:=
&
Server
{
Config
:
Config
{
...
...
@@ -386,6 +429,7 @@ func TestServerPeerLimits(t *testing.T) {
if
err
:=
srv
.
Start
();
err
!=
nil
{
t
.
Fatalf
(
"couldn't start server: %v"
,
err
)
}
defer
srv
.
Stop
()
// Check that server is full (MaxPeers=0)
conn
,
_
:=
net
.
Pipe
()
...
...
@@ -395,7 +439,7 @@ func TestServerPeerLimits(t *testing.T) {
}
conn
.
Close
()
srv
.
AddTrustedPeer
(
dialDest
)
srv
.
AddTrustedPeer
(
clientnode
)
// Check that server allows a trusted peer despite being full.
conn
,
_
=
net
.
Pipe
()
...
...
@@ -404,12 +448,12 @@ func TestServerPeerLimits(t *testing.T) {
t
.
Errorf
(
"failed to bypass MaxPeers with trusted node: %q"
,
tp
.
closeErr
)
}
if
tp
.
closeErr
!=
Disc
Self
{
if
tp
.
closeErr
!=
Disc
UselessPeer
{
t
.
Errorf
(
"unexpected close error: %q"
,
tp
.
closeErr
)
}
conn
.
Close
()
srv
.
RemoveTrustedPeer
(
dialDest
)
srv
.
RemoveTrustedPeer
(
clientnode
)
// Check that server is full again.
conn
,
_
=
net
.
Pipe
()
...
...
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