-func TestPexAdded(t *testing.T) {
- t.Run("noHold", func(t *testing.T) {
- s := new(pexState)
- s.Add(&PeerConn{peer: peer{RemoteAddr: addrs[0], outgoing: true}})
- targ := &pexState{
- ev: []pexEvent{
- pexEvent{pexAdd, addrs[0], pp.PexOutgoingConn},
- },
- nc: 1,
- }
- require.EqualValues(t, targ, s)
- })
- t.Run("belowTarg", func(t *testing.T) {
- s := &pexState{
- hold: []pexEvent{
- pexEvent{pexDrop, addrs[1], 0},
- },
- nc: 0,
- }
- s.Add(&PeerConn{peer: peer{RemoteAddr: addrs[0]}})
- targ := &pexState{
- hold: []pexEvent{
- pexEvent{pexDrop, addrs[1], 0},
- },
- ev: []pexEvent{
- pexEvent{pexAdd, addrs[0], 0},
- },
- nc: 1,
- }
- require.EqualValues(t, targ, s)
- })
- t.Run("aboveTarg", func(t *testing.T) {
- holdAddr := &net.TCPAddr{IP: net.IPv6loopback, Port: 4848}
- s := &pexState{
- hold: []pexEvent{
- pexEvent{pexDrop, holdAddr, 0},
- },
- nc: pexTargAdded,
- }
- s.Add(&PeerConn{peer: peer{RemoteAddr: addrs[0]}})
- targ := &pexState{
- hold: []pexEvent{},
- ev: []pexEvent{
- pexEvent{pexDrop, holdAddr, 0},
- pexEvent{pexAdd, addrs[0], 0},
- },
- nc: pexTargAdded + 1,
- }
- require.EqualValues(t, targ, s)
- })
-}
-
-func TestPexDropped(t *testing.T) {
- t.Run("belowTarg", func(t *testing.T) {
- s := &pexState{nc: 1}
- s.Drop(&PeerConn{peer: peer{RemoteAddr: addrs[0]}, pex: pexConnState{Listed: true}})
- targ := &pexState{
- hold: []pexEvent{pexEvent{pexDrop, addrs[0], 0}},
- nc: 0,
- }
- require.EqualValues(t, targ, s)
- })
- t.Run("aboveTarg", func(t *testing.T) {
- s := &pexState{nc: pexTargAdded + 1}
- s.Drop(&PeerConn{peer: peer{RemoteAddr: addrs[0]}, pex: pexConnState{Listed: true}})
- targ := &pexState{
- ev: []pexEvent{pexEvent{pexDrop, addrs[0], 0}},
- nc: pexTargAdded,
- }
- require.EqualValues(t, targ, s)
- })
- t.Run("aboveTargNotListed", func(t *testing.T) {
- s := &pexState{nc: pexTargAdded + 1}
- s.Drop(&PeerConn{peer: peer{RemoteAddr: addrs[0]}, pex: pexConnState{Listed: false}})
- targ := &pexState{nc: pexTargAdded + 1}
- require.EqualValues(t, targ, s)
- })
-}
-