fix(bitswap) init wantlist
+ test that a partners wants are remembered by message receiver
Brian Tiger Chow committed
Sep 18, 2014 at 14:28 UTC
b780694757e4c1ef55f22094ea8e4fdcef951af8
2 files changed
+19
bitswap/strategy/ledger.go
+1
@@ -14,6 +14,7 @@ type keySet map[u.Key]struct{}
14
15
func newLedger(p *peer.Peer, strategy strategyFunc) *ledger {
16
return &ledger{
17
+ wantList: keySet{},
18
Strategy: strategy,
19
Partner: p,
20
}
bitswap/strategy/strategy_test.go
+18
@@ -5,6 +5,7 @@ import (
5
6
message "github.com/jbenet/go-ipfs/bitswap/message"
7
"github.com/jbenet/go-ipfs/peer"
8
+ "github.com/jbenet/go-ipfs/util/testutil"
9
)
10
11
type peerAndStrategist struct {
@@ -19,6 +20,23 @@ func newPeerAndStrategist(idStr string) peerAndStrategist {
20
}
21
}
22
23
+func TestBlockRecordedAsWantedAfterMessageReceived(t *testing.T) {
24
+ beggar := newPeerAndStrategist("can't be chooser")
25
+ chooser := newPeerAndStrategist("chooses JIF")
26
+
27
+ block := testutil.NewBlockOrFail(t, "data wanted by beggar")
28
+
29
+ messageFromBeggarToChooser := message.New()
30
+ messageFromBeggarToChooser.AppendWanted(block.Key())
31
+
32
+ chooser.MessageReceived(beggar.Peer, messageFromBeggarToChooser)
33
+ // for this test, doesn't matter if you record that beggar sent
34
+
35
+ if !chooser.IsWantedByPeer(block.Key(), beggar.Peer) {
36
+ t.Fatal("chooser failed to record that beggar wants block")
37
+ }
38
+}
39
+
40
func TestPeerIsAddedToPeersWhenMessageReceivedOrSent(t *testing.T) {
41
42
sanfrancisco := newPeerAndStrategist("sf")