From b780694757e4c1ef55f22094ea8e4fdcef951af8 Mon Sep 17 00:00:00 2001 From: Brian Tiger Chow <brian.holderchow@gmail.com> Date: Thu, 18 Sep 2014 14:28:20 -0700 Subject: [PATCH] fix(bitswap) init wantlist + test that a partners wants are remembered by message receiver --- bitswap/strategy/ledger.go | 1 + bitswap/strategy/strategy_test.go | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/bitswap/strategy/ledger.go b/bitswap/strategy/ledger.go index 24bf4d4a..34f30105 100644 --- a/bitswap/strategy/ledger.go +++ b/bitswap/strategy/ledger.go @@ -14,6 +14,7 @@ type keySet map[u.Key]struct{} func newLedger(p *peer.Peer, strategy strategyFunc) *ledger { return &ledger{ + wantList: keySet{}, Strategy: strategy, Partner: p, } diff --git a/bitswap/strategy/strategy_test.go b/bitswap/strategy/strategy_test.go index e8ef9285..4adff29a 100644 --- a/bitswap/strategy/strategy_test.go +++ b/bitswap/strategy/strategy_test.go @@ -5,6 +5,7 @@ import ( message "github.com/jbenet/go-ipfs/bitswap/message" "github.com/jbenet/go-ipfs/peer" + "github.com/jbenet/go-ipfs/util/testutil" ) type peerAndStrategist struct { @@ -19,6 +20,23 @@ func newPeerAndStrategist(idStr string) peerAndStrategist { } } +func TestBlockRecordedAsWantedAfterMessageReceived(t *testing.T) { + beggar := newPeerAndStrategist("can't be chooser") + chooser := newPeerAndStrategist("chooses JIF") + + block := testutil.NewBlockOrFail(t, "data wanted by beggar") + + messageFromBeggarToChooser := message.New() + messageFromBeggarToChooser.AppendWanted(block.Key()) + + chooser.MessageReceived(beggar.Peer, messageFromBeggarToChooser) + // for this test, doesn't matter if you record that beggar sent + + if !chooser.IsWantedByPeer(block.Key(), beggar.Peer) { + t.Fatal("chooser failed to record that beggar wants block") + } +} + func TestPeerIsAddedToPeersWhenMessageReceivedOrSent(t *testing.T) { sanfrancisco := newPeerAndStrategist("sf") -- GitLab