fix(bitswap) init wantlist

+ test that a partners wants are remembered by message receiver
This commit is contained in:
Brian Tiger Chow 2014-09-18 14:28:20 -07:00
parent be8e08675d
commit b780694757
2 changed files with 19 additions and 0 deletions

View File

@ -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,
}

View File

@ -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")