--- /dev/null
+package torrent
+
+import (
+ "testing"
+
+ qt "github.com/frankban/quicktest"
+ "github.com/google/go-cmp/cmp"
+)
+
+// Ensure that cmp.Diff will detect errors as required.
+func TestPendingRequestsDiff(t *testing.T) {
+ var a, b pendingRequests
+ c := qt.New(t)
+ diff := func() string { return cmp.Diff(a.m, b.m) }
+ c.Check(diff(), qt.ContentEquals, "")
+ a.m = []int{1, 3}
+ b.m = []int{1, 2, 3}
+ c.Check(diff(), qt.Not(qt.Equals), "")
+}
})
},
)
+ p.t.assertPendingRequests()
heap.Init(&requestHeap)
for requestHeap.Len() != 0 && desired.Requests.GetCardinality() < uint64(p.nominalMaxRequests()) {
requestIndex := heap.Pop(&requestHeap).(RequestIndex)
"github.com/anacrolix/multiless"
"github.com/anacrolix/sync"
"github.com/davecgh/go-spew/spew"
+ "github.com/google/go-cmp/cmp"
"github.com/pion/datachannel"
"github.com/anacrolix/torrent/bencode"
}
torrent.Add("deleted connections", 1)
c.deleteAllRequests()
- if t.numActivePeers() == 0 && t.haveInfo() {
- t.assertNoPendingRequests()
- }
+ t.assertPendingRequests()
return
}
return
}
-func (t *Torrent) assertNoPendingRequests() {
- t.pendingRequests.AssertEmpty()
+func (t *Torrent) assertPendingRequests() {
+ var actual pendingRequests
+ if t.haveInfo() {
+ actual.m = make([]int, t.numRequests())
+ }
+ t.iterPeers(func(p *Peer) {
+ p.actualRequestState.Requests.Iterate(func(x uint32) bool {
+ actual.Inc(x)
+ return true
+ })
+ })
+ diff := cmp.Diff(actual.m, t.pendingRequests.m)
+ if diff != "" {
+ panic(diff)
+ }
}
func (t *Torrent) dropConnection(c *PeerConn) {