7 "github.com/anacrolix/dht/v2/krpc"
8 "github.com/stretchr/testify/require"
10 "github.com/anacrolix/torrent/metainfo"
11 pp "github.com/anacrolix/torrent/peer_protocol"
14 func TestPexConnState(t *testing.T) {
16 config: TestingConfig(t),
19 torrent := cl.newTorrent(metainfo.Hash{}, nil)
20 addr := &net.TCPAddr{IP: net.IPv6loopback, Port: 4747}
21 c := cl.newConnection(nil, false, addr, addr.Network(), "")
22 c.PeerExtensionIDs = make(map[pp.ExtensionName]pp.ExtensionNumber)
23 c.PeerExtensionIDs[pp.ExtensionNamePex] = pexExtendedId
26 torrent.addConnection(c)
29 require.True(t, c.pex.IsEnabled(), "should get enabled")
34 testWriter := func(m pp.Message) bool {
40 c.pex.Share(testWriter)
41 require.True(t, writerCalled)
42 require.EqualValues(t, pp.Extended, out.Type)
43 require.EqualValues(t, pexExtendedId, out.ExtendedID)
45 x, err := pp.LoadPexMsg(out.ExtendedPayload)
46 require.NoError(t, err)
48 Added: krpc.CompactIPv4NodeAddrs(nil),
49 AddedFlags: []pp.PexPeerFlags{},
50 Added6: krpc.CompactIPv6NodeAddrs{
53 Added6Flags: []pp.PexPeerFlags{0},
55 require.EqualValues(t, targx, x)