Skip to content

Commit

Permalink
p2p: Test for MaxPeers=0 and TrustedPeer override
Browse files Browse the repository at this point in the history
  • Loading branch information
shazow committed Jun 21, 2018
1 parent 2a75fe3 commit 773857a
Showing 1 changed file with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions p2p/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -363,7 +363,61 @@ func TestServerAtCap(t *testing.T) {
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}}
var flags connFlag = dynDialedConn
var dialDest *discover.Node = &discover.Node{ID: srvid}

srv := &Server{
Config: Config{
PrivateKey: srvkey,
MaxPeers: 0,
NoDial: true,
Protocols: []Protocol{discard},
},
newTransport: func(fd net.Conn) transport { return tp },
log: log.New(),
}
if err := srv.Start(); err != nil {
t.Fatalf("couldn't start server: %v", err)
}

// Check that server is full (MaxPeers=0)
conn, _ := net.Pipe()
srv.SetupConn(conn, flags, dialDest)
if tp.closeErr != DiscTooManyPeers {
t.Errorf("unexpected close error: %q", tp.closeErr)
}
conn.Close()

srv.AddTrustedPeer(dialDest)

// Check that server allows a trusted peer despite being full.
conn, _ = net.Pipe()
srv.SetupConn(conn, flags, dialDest)
if tp.closeErr == DiscTooManyPeers {
t.Errorf("failed to bypass MaxPeers with trusted node: %q", tp.closeErr)
}

if tp.closeErr != DiscSelf {
t.Errorf("unexpected close error: %q", tp.closeErr)
}
conn.Close()

srv.RemoveTrustedPeer(dialDest)

// Check that server is full again.
conn, _ = net.Pipe()
srv.SetupConn(conn, flags, dialDest)
if tp.closeErr != DiscTooManyPeers {
t.Errorf("unexpected close error: %q", tp.closeErr)
}
conn.Close()
}

func TestServerSetupConn(t *testing.T) {
Expand Down

0 comments on commit 773857a

Please sign in to comment.