]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Fix pending peer counts in transfer tests
authorMatt Joiner <anacrolix@gmail.com>
Thu, 16 Apr 2020 04:09:45 +0000 (14:09 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Thu, 16 Apr 2020 04:09:45 +0000 (14:09 +1000)
Also expose number of peers successfully added in some method returns.

t.go
test/transfer_test.go
torrent.go

diff --git a/t.go b/t.go
index ccd300967b0264d449545a67777ec512d45711e8..f517ab680533f5df774e59a1cde00123daea7bab 100644 (file)
--- a/t.go
+++ b/t.go
@@ -221,11 +221,11 @@ func (t *Torrent) Files() []*File {
        return *t.files
 }
 
-func (t *Torrent) AddPeers(pp []Peer) {
+func (t *Torrent) AddPeers(pp []Peer) int {
        cl := t.cl
        cl.lock()
        defer cl.unlock()
-       t.addPeers(pp)
+       return t.addPeers(pp)
 }
 
 // Marks the entire torrent for download. Requires the info first, see
index 4fe9d5623db684b55f27dcca9f9ff9aa89ded974..74dd656e685bcf3df31f839e7afb8a119fe6bb26 100644 (file)
@@ -117,11 +117,11 @@ func testClientTransfer(t *testing.T, ps testClientTransferParams) {
        //logPieceStateChanges(leecherTorrent)
 
        // Now do some things with leecher and seeder.
-       leecherTorrent.AddClientPeer(seeder)
+       added := leecherTorrent.AddClientPeer(seeder)
        // The Torrent should not be interested in obtaining peers, so the one we
        // just added should be the only one.
        assert.False(t, leecherTorrent.Seeding())
-       assert.EqualValues(t, 1, leecherTorrent.Stats().PendingPeers)
+       assert.EqualValues(t, added, leecherTorrent.Stats().PendingPeers)
        r := leecherTorrent.NewReader()
        defer r.Close()
        if ps.Responsive {
index d81437ad8e3c94b3d2cbd27d59016237429d77ea..1bf2211a0d8195db1a9120580c8544d9555f0576 100644 (file)
@@ -254,24 +254,27 @@ func (t *Torrent) unclosedConnsAsSlice() (ret []*PeerConn) {
        return
 }
 
-func (t *Torrent) addPeer(p Peer) {
+func (t *Torrent) addPeer(p Peer) (added bool) {
        cl := t.cl
        torrent.Add(fmt.Sprintf("peers added by source %q", p.Source), 1)
        if t.closed.IsSet() {
-               return
+               return false
        }
        if ipAddr, ok := tryIpPortFromNetAddr(p.Addr); ok {
                if cl.badPeerIPPort(ipAddr.IP, ipAddr.Port) {
                        torrent.Add("peers not added because of bad addr", 1)
                        // cl.logger.Printf("peers not added because of bad addr: %v", p)
-                       return
+                       return false
                }
        }
        if replaced, ok := t.peers.AddReturningReplacedPeer(p); ok {
                torrent.Add("peers replaced", 1)
                if !replaced.Equal(p) {
                        t.logger.Printf("added %v replacing %v", p, replaced)
+                       added = true
                }
+       } else {
+               added = true
        }
        t.openNewConns()
        for t.peers.Len() > cl.config.TorrentPeersHighWater {
@@ -280,6 +283,7 @@ func (t *Torrent) addPeer(p Peer) {
                        torrent.Add("excess reserve peers discarded", 1)
                }
        }
+       return
 }
 
 func (t *Torrent) invalidateMetadata() {
@@ -1473,10 +1477,13 @@ func (t *Torrent) dhtAnnouncer(s DhtServer) {
        }
 }
 
-func (t *Torrent) addPeers(peers []Peer) {
+func (t *Torrent) addPeers(peers []Peer) (added int) {
        for _, p := range peers {
-               t.addPeer(p)
+               if t.addPeer(p) {
+                       added++
+               }
        }
+       return
 }
 
 // The returned TorrentStats may require alignment in memory. See
@@ -1841,8 +1848,8 @@ func (t *Torrent) initiateConn(peer Peer) {
 
 // Adds a trusted, pending peer for each of the given Client's addresses. Typically used in tests to
 // quickly make one Client visible to the Torrent of another Client.
-func (t *Torrent) AddClientPeer(cl *Client) {
-       t.AddPeers(func() (ps []Peer) {
+func (t *Torrent) AddClientPeer(cl *Client) int {
+       return t.AddPeers(func() (ps []Peer) {
                for _, la := range cl.ListenAddrs() {
                        ps = append(ps, Peer{
                                Addr:    la,