mirror of
https://github.com/ipfs/kubo.git
synced 2025-10-26 02:45:48 +08:00
removed error from return type of blocks.NewBlock()
This commit is contained in:
@ -12,8 +12,8 @@ type Block struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewBlock creates a Block object from opaque data. It will hash the data.
|
// NewBlock creates a Block object from opaque data. It will hash the data.
|
||||||
func NewBlock(data []byte) (*Block, error) {
|
func NewBlock(data []byte) *Block {
|
||||||
return &Block{Data: data, Multihash: u.Hash(data)}, nil
|
return &Block{Data: data, Multihash: u.Hash(data)}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Key returns the block's Multihash as a Key value.
|
// Key returns the block's Multihash as a Key value.
|
||||||
|
|||||||
@ -6,20 +6,11 @@ func TestBlocksBasic(t *testing.T) {
|
|||||||
|
|
||||||
// Test empty data
|
// Test empty data
|
||||||
empty := []byte{}
|
empty := []byte{}
|
||||||
_, err := NewBlock(empty)
|
NewBlock(empty)
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test nil case
|
// Test nil case
|
||||||
_, err = NewBlock(nil)
|
NewBlock(nil)
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test some data
|
// Test some data
|
||||||
_, err = NewBlock([]byte("Hello world!"))
|
NewBlock([]byte("Hello world!"))
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,7 +35,7 @@ func (bs *blockstore) Get(k u.Key) (*blocks.Block, error) {
|
|||||||
if !ok {
|
if !ok {
|
||||||
return nil, ValueTypeMismatch
|
return nil, ValueTypeMismatch
|
||||||
}
|
}
|
||||||
return blocks.NewBlock(bdata)
|
return blocks.NewBlock(bdata), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (bs *blockstore) Put(block blocks.Block) error {
|
func (bs *blockstore) Put(block blocks.Block) error {
|
||||||
|
|||||||
@ -5,8 +5,8 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/datastore.go"
|
ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/datastore.go"
|
||||||
|
blocks "github.com/jbenet/go-ipfs/blocks"
|
||||||
u "github.com/jbenet/go-ipfs/util"
|
u "github.com/jbenet/go-ipfs/util"
|
||||||
testutil "github.com/jbenet/go-ipfs/util/testutil"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// TODO(brian): TestGetReturnsNil
|
// TODO(brian): TestGetReturnsNil
|
||||||
@ -24,7 +24,7 @@ func TestGetWhenKeyNotPresent(t *testing.T) {
|
|||||||
|
|
||||||
func TestPutThenGetBlock(t *testing.T) {
|
func TestPutThenGetBlock(t *testing.T) {
|
||||||
bs := NewBlockstore(ds.NewMapDatastore())
|
bs := NewBlockstore(ds.NewMapDatastore())
|
||||||
block := testutil.NewBlockOrFail(t, "some data")
|
block := blocks.NewBlock("some data")
|
||||||
|
|
||||||
err := bs.Put(block)
|
err := bs.Put(block)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -41,7 +41,7 @@ func TestPutThenGetBlock(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestValueTypeMismatch(t *testing.T) {
|
func TestValueTypeMismatch(t *testing.T) {
|
||||||
block := testutil.NewBlockOrFail(t, "some data")
|
block := blocks.NewBlock("some data")
|
||||||
|
|
||||||
datastore := ds.NewMapDatastore()
|
datastore := ds.NewMapDatastore()
|
||||||
datastore.Put(block.Key().DsKey(), "data that isn't a block!")
|
datastore.Put(block.Key().DsKey(), "data that isn't a block!")
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import (
|
|||||||
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
|
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
|
||||||
|
|
||||||
ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/datastore.go"
|
ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/datastore.go"
|
||||||
"github.com/jbenet/go-ipfs/blocks"
|
blocks "github.com/jbenet/go-ipfs/blocks"
|
||||||
bstore "github.com/jbenet/go-ipfs/blockstore"
|
bstore "github.com/jbenet/go-ipfs/blockstore"
|
||||||
exchange "github.com/jbenet/go-ipfs/exchange"
|
exchange "github.com/jbenet/go-ipfs/exchange"
|
||||||
notifications "github.com/jbenet/go-ipfs/exchange/bitswap/notifications"
|
notifications "github.com/jbenet/go-ipfs/exchange/bitswap/notifications"
|
||||||
@ -18,7 +18,6 @@ import (
|
|||||||
peer "github.com/jbenet/go-ipfs/peer"
|
peer "github.com/jbenet/go-ipfs/peer"
|
||||||
mock "github.com/jbenet/go-ipfs/routing/mock"
|
mock "github.com/jbenet/go-ipfs/routing/mock"
|
||||||
util "github.com/jbenet/go-ipfs/util"
|
util "github.com/jbenet/go-ipfs/util"
|
||||||
testutil "github.com/jbenet/go-ipfs/util/testutil"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGetBlockTimeout(t *testing.T) {
|
func TestGetBlockTimeout(t *testing.T) {
|
||||||
@ -30,7 +29,7 @@ func TestGetBlockTimeout(t *testing.T) {
|
|||||||
self := g.Next()
|
self := g.Next()
|
||||||
|
|
||||||
ctx, _ := context.WithTimeout(context.Background(), time.Nanosecond)
|
ctx, _ := context.WithTimeout(context.Background(), time.Nanosecond)
|
||||||
block := testutil.NewBlockOrFail(t, "block")
|
block := blocks.NewBlock([]byte("block"))
|
||||||
_, err := self.exchange.Block(ctx, block.Key())
|
_, err := self.exchange.Block(ctx, block.Key())
|
||||||
|
|
||||||
if err != context.DeadlineExceeded {
|
if err != context.DeadlineExceeded {
|
||||||
@ -44,7 +43,7 @@ func TestProviderForKeyButNetworkCannotFind(t *testing.T) {
|
|||||||
rs := mock.VirtualRoutingServer()
|
rs := mock.VirtualRoutingServer()
|
||||||
g := NewSessionGenerator(net, rs)
|
g := NewSessionGenerator(net, rs)
|
||||||
|
|
||||||
block := testutil.NewBlockOrFail(t, "block")
|
block := blocks.NewBlock([]byte("block"))
|
||||||
rs.Announce(&peer.Peer{}, block.Key()) // but not on network
|
rs.Announce(&peer.Peer{}, block.Key()) // but not on network
|
||||||
|
|
||||||
solo := g.Next()
|
solo := g.Next()
|
||||||
@ -63,15 +62,15 @@ func TestGetBlockFromPeerAfterPeerAnnounces(t *testing.T) {
|
|||||||
|
|
||||||
net := tn.VirtualNetwork()
|
net := tn.VirtualNetwork()
|
||||||
rs := mock.VirtualRoutingServer()
|
rs := mock.VirtualRoutingServer()
|
||||||
block := testutil.NewBlockOrFail(t, "block")
|
block := blocks.NewBlock([]byte("block"))
|
||||||
g := NewSessionGenerator(net, rs)
|
g := NewSessionGenerator(net, rs)
|
||||||
|
|
||||||
hasBlock := g.Next()
|
hasBlock := g.Next()
|
||||||
|
|
||||||
if err := hasBlock.blockstore.Put(block); err != nil {
|
if err := hasBlock.blockstore.Put(*block); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
if err := hasBlock.exchange.HasBlock(context.Background(), block); err != nil {
|
if err := hasBlock.exchange.HasBlock(context.Background(), *block); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,7 +92,7 @@ func TestSwarm(t *testing.T) {
|
|||||||
net := tn.VirtualNetwork()
|
net := tn.VirtualNetwork()
|
||||||
rs := mock.VirtualRoutingServer()
|
rs := mock.VirtualRoutingServer()
|
||||||
sg := NewSessionGenerator(net, rs)
|
sg := NewSessionGenerator(net, rs)
|
||||||
bg := NewBlockGenerator(t)
|
bg := NewBlockGenerator()
|
||||||
|
|
||||||
t.Log("Create a ton of instances, and just a few blocks")
|
t.Log("Create a ton of instances, and just a few blocks")
|
||||||
|
|
||||||
@ -154,7 +153,7 @@ func TestSendToWantingPeer(t *testing.T) {
|
|||||||
net := tn.VirtualNetwork()
|
net := tn.VirtualNetwork()
|
||||||
rs := mock.VirtualRoutingServer()
|
rs := mock.VirtualRoutingServer()
|
||||||
sg := NewSessionGenerator(net, rs)
|
sg := NewSessionGenerator(net, rs)
|
||||||
bg := NewBlockGenerator(t)
|
bg := NewBlockGenerator()
|
||||||
|
|
||||||
me := sg.Next()
|
me := sg.Next()
|
||||||
w := sg.Next()
|
w := sg.Next()
|
||||||
@ -212,20 +211,17 @@ func TestSendToWantingPeer(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewBlockGenerator(t *testing.T) BlockGenerator {
|
func NewBlockGenerator() BlockGenerator {
|
||||||
return BlockGenerator{
|
return BlockGenerator{}
|
||||||
T: t,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type BlockGenerator struct {
|
type BlockGenerator struct {
|
||||||
*testing.T // b/c block generation can fail
|
seq int
|
||||||
seq int
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (bg *BlockGenerator) Next() blocks.Block {
|
func (bg *BlockGenerator) Next() blocks.Block {
|
||||||
bg.seq++
|
bg.seq++
|
||||||
return testutil.NewBlockOrFail(bg.T, string(bg.seq))
|
return *blocks.NewBlock([]byte(string(bg.seq)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (bg *BlockGenerator) Blocks(n int) []*blocks.Block {
|
func (bg *BlockGenerator) Blocks(n int) []*blocks.Block {
|
||||||
|
|||||||
@ -32,19 +32,16 @@ func New() *message {
|
|||||||
return new(message)
|
return new(message)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newMessageFromProto(pbm PBMessage) (BitSwapMessage, error) {
|
func newMessageFromProto(pbm PBMessage) BitSwapMessage {
|
||||||
m := New()
|
m := New()
|
||||||
for _, s := range pbm.GetWantlist() {
|
for _, s := range pbm.GetWantlist() {
|
||||||
m.AppendWanted(u.Key(s))
|
m.AppendWanted(u.Key(s))
|
||||||
}
|
}
|
||||||
for _, d := range pbm.GetBlocks() {
|
for _, d := range pbm.GetBlocks() {
|
||||||
b, err := blocks.NewBlock(d)
|
b := blocks.NewBlock(d)
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
m.AppendBlock(*b)
|
m.AppendBlock(*b)
|
||||||
}
|
}
|
||||||
return m, nil
|
return m
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(brian): convert these into keys
|
// TODO(brian): convert these into keys
|
||||||
@ -70,10 +67,7 @@ func FromNet(nmsg netmsg.NetMessage) (BitSwapMessage, error) {
|
|||||||
if err := proto.Unmarshal(nmsg.Data(), pb); err != nil {
|
if err := proto.Unmarshal(nmsg.Data(), pb); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
m, err := newMessageFromProto(*pb)
|
m := newMessageFromProto(*pb)
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return m, nil
|
return m, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -4,9 +4,9 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/jbenet/go-ipfs/blocks"
|
||||||
peer "github.com/jbenet/go-ipfs/peer"
|
peer "github.com/jbenet/go-ipfs/peer"
|
||||||
u "github.com/jbenet/go-ipfs/util"
|
u "github.com/jbenet/go-ipfs/util"
|
||||||
testutil "github.com/jbenet/go-ipfs/util/testutil"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestAppendWanted(t *testing.T) {
|
func TestAppendWanted(t *testing.T) {
|
||||||
@ -26,10 +26,7 @@ func TestNewMessageFromProto(t *testing.T) {
|
|||||||
if !contains(protoMessage.Wantlist, str) {
|
if !contains(protoMessage.Wantlist, str) {
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
m, err := newMessageFromProto(*protoMessage)
|
m := newMessageFromProto(*protoMessage)
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
if !contains(m.ToProto().GetWantlist(), str) {
|
if !contains(m.ToProto().GetWantlist(), str) {
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
@ -43,8 +40,8 @@ func TestAppendBlock(t *testing.T) {
|
|||||||
|
|
||||||
m := New()
|
m := New()
|
||||||
for _, str := range strs {
|
for _, str := range strs {
|
||||||
block := testutil.NewBlockOrFail(t, str)
|
block := blocks.NewBlock([]byte(str))
|
||||||
m.AppendBlock(block)
|
m.AppendBlock(*block)
|
||||||
}
|
}
|
||||||
|
|
||||||
// assert strings are in proto message
|
// assert strings are in proto message
|
||||||
@ -134,10 +131,10 @@ func TestToNetFromNetPreservesWantList(t *testing.T) {
|
|||||||
func TestToAndFromNetMessage(t *testing.T) {
|
func TestToAndFromNetMessage(t *testing.T) {
|
||||||
|
|
||||||
original := New()
|
original := New()
|
||||||
original.AppendBlock(testutil.NewBlockOrFail(t, "W"))
|
original.AppendBlock(*blocks.NewBlock([]byte("W")))
|
||||||
original.AppendBlock(testutil.NewBlockOrFail(t, "E"))
|
original.AppendBlock(*blocks.NewBlock([]byte("E")))
|
||||||
original.AppendBlock(testutil.NewBlockOrFail(t, "F"))
|
original.AppendBlock(*blocks.NewBlock([]byte("F")))
|
||||||
original.AppendBlock(testutil.NewBlockOrFail(t, "M"))
|
original.AppendBlock(*blocks.NewBlock([]byte("M")))
|
||||||
|
|
||||||
p := &peer.Peer{ID: []byte("X")}
|
p := &peer.Peer{ID: []byte("X")}
|
||||||
netmsg, err := original.ToNet(p)
|
netmsg, err := original.ToNet(p)
|
||||||
|
|||||||
@ -6,25 +6,23 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
|
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
|
||||||
testutil "github.com/jbenet/go-ipfs/util/testutil"
|
|
||||||
|
|
||||||
blocks "github.com/jbenet/go-ipfs/blocks"
|
blocks "github.com/jbenet/go-ipfs/blocks"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPublishSubscribe(t *testing.T) {
|
func TestPublishSubscribe(t *testing.T) {
|
||||||
blockSent := testutil.NewBlockOrFail(t, "Greetings from The Interval")
|
blockSent := blocks.NewBlock([]byte("Greetings from The Interval"))
|
||||||
|
|
||||||
n := New()
|
n := New()
|
||||||
defer n.Shutdown()
|
defer n.Shutdown()
|
||||||
ch := n.Subscribe(context.Background(), blockSent.Key())
|
ch := n.Subscribe(context.Background(), blockSent.Key())
|
||||||
|
|
||||||
n.Publish(blockSent)
|
n.Publish(*blockSent)
|
||||||
blockRecvd, ok := <-ch
|
blockRecvd, ok := <-ch
|
||||||
if !ok {
|
if !ok {
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
|
|
||||||
assertBlocksEqual(t, blockRecvd, blockSent)
|
assertBlocksEqual(t, blockRecvd, *blockSent)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,7 +33,7 @@ func TestCarryOnWhenDeadlineExpires(t *testing.T) {
|
|||||||
|
|
||||||
n := New()
|
n := New()
|
||||||
defer n.Shutdown()
|
defer n.Shutdown()
|
||||||
block := testutil.NewBlockOrFail(t, "A Missed Connection")
|
block := blocks.NewBlock([]byte("A Missed Connection"))
|
||||||
blockChannel := n.Subscribe(fastExpiringCtx, block.Key())
|
blockChannel := n.Subscribe(fastExpiringCtx, block.Key())
|
||||||
|
|
||||||
assertBlockChannelNil(t, blockChannel)
|
assertBlockChannelNil(t, blockChannel)
|
||||||
|
|||||||
@ -4,9 +4,9 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
blocks "github.com/jbenet/go-ipfs/blocks"
|
||||||
message "github.com/jbenet/go-ipfs/exchange/bitswap/message"
|
message "github.com/jbenet/go-ipfs/exchange/bitswap/message"
|
||||||
peer "github.com/jbenet/go-ipfs/peer"
|
peer "github.com/jbenet/go-ipfs/peer"
|
||||||
testutil "github.com/jbenet/go-ipfs/util/testutil"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type peerAndStrategist struct {
|
type peerAndStrategist struct {
|
||||||
@ -30,7 +30,7 @@ func TestConsistentAccounting(t *testing.T) {
|
|||||||
|
|
||||||
m := message.New()
|
m := message.New()
|
||||||
content := []string{"this", "is", "message", "i"}
|
content := []string{"this", "is", "message", "i"}
|
||||||
m.AppendBlock(testutil.NewBlockOrFail(t, strings.Join(content, " ")))
|
m.AppendBlock(*blocks.NewBlock([]byte(strings.Join(content, " "))))
|
||||||
|
|
||||||
sender.MessageSent(receiver.Peer, m)
|
sender.MessageSent(receiver.Peer, m)
|
||||||
receiver.MessageReceived(sender.Peer, m)
|
receiver.MessageReceived(sender.Peer, m)
|
||||||
@ -57,7 +57,7 @@ func TestBlockRecordedAsWantedAfterMessageReceived(t *testing.T) {
|
|||||||
beggar := newPeerAndStrategist("can't be chooser")
|
beggar := newPeerAndStrategist("can't be chooser")
|
||||||
chooser := newPeerAndStrategist("chooses JIF")
|
chooser := newPeerAndStrategist("chooses JIF")
|
||||||
|
|
||||||
block := testutil.NewBlockOrFail(t, "data wanted by beggar")
|
block := blocks.NewBlock([]byte("data wanted by beggar"))
|
||||||
|
|
||||||
messageFromBeggarToChooser := message.New()
|
messageFromBeggarToChooser := message.New()
|
||||||
messageFromBeggarToChooser.AppendWanted(block.Key())
|
messageFromBeggarToChooser.AppendWanted(block.Key())
|
||||||
|
|||||||
@ -5,10 +5,10 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
|
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
|
||||||
|
blocks "github.com/jbenet/go-ipfs/blocks"
|
||||||
bsmsg "github.com/jbenet/go-ipfs/exchange/bitswap/message"
|
bsmsg "github.com/jbenet/go-ipfs/exchange/bitswap/message"
|
||||||
bsnet "github.com/jbenet/go-ipfs/exchange/bitswap/network"
|
bsnet "github.com/jbenet/go-ipfs/exchange/bitswap/network"
|
||||||
peer "github.com/jbenet/go-ipfs/peer"
|
peer "github.com/jbenet/go-ipfs/peer"
|
||||||
testutil "github.com/jbenet/go-ipfs/util/testutil"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSendRequestToCooperativePeer(t *testing.T) {
|
func TestSendRequestToCooperativePeer(t *testing.T) {
|
||||||
@ -33,7 +33,7 @@ func TestSendRequestToCooperativePeer(t *testing.T) {
|
|||||||
// TODO test contents of incoming message
|
// TODO test contents of incoming message
|
||||||
|
|
||||||
m := bsmsg.New()
|
m := bsmsg.New()
|
||||||
m.AppendBlock(testutil.NewBlockOrFail(t, expectedStr))
|
m.AppendBlock(*blocks.NewBlock([]byte(expectedStr)))
|
||||||
|
|
||||||
return from, m
|
return from, m
|
||||||
}))
|
}))
|
||||||
@ -41,7 +41,7 @@ func TestSendRequestToCooperativePeer(t *testing.T) {
|
|||||||
t.Log("Build a message and send a synchronous request to recipient")
|
t.Log("Build a message and send a synchronous request to recipient")
|
||||||
|
|
||||||
message := bsmsg.New()
|
message := bsmsg.New()
|
||||||
message.AppendBlock(testutil.NewBlockOrFail(t, "data"))
|
message.AppendBlock(*blocks.NewBlock([]byte("data")))
|
||||||
response, err := initiator.SendRequest(
|
response, err := initiator.SendRequest(
|
||||||
context.Background(), &peer.Peer{ID: idOfRecipient}, message)
|
context.Background(), &peer.Peer{ID: idOfRecipient}, message)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -77,7 +77,7 @@ func TestSendMessageAsyncButWaitForResponse(t *testing.T) {
|
|||||||
*peer.Peer, bsmsg.BitSwapMessage) {
|
*peer.Peer, bsmsg.BitSwapMessage) {
|
||||||
|
|
||||||
msgToWaiter := bsmsg.New()
|
msgToWaiter := bsmsg.New()
|
||||||
msgToWaiter.AppendBlock(testutil.NewBlockOrFail(t, expectedStr))
|
msgToWaiter.AppendBlock(*blocks.NewBlock([]byte(expectedStr)))
|
||||||
|
|
||||||
return fromWaiter, msgToWaiter
|
return fromWaiter, msgToWaiter
|
||||||
}))
|
}))
|
||||||
@ -105,7 +105,7 @@ func TestSendMessageAsyncButWaitForResponse(t *testing.T) {
|
|||||||
}))
|
}))
|
||||||
|
|
||||||
messageSentAsync := bsmsg.New()
|
messageSentAsync := bsmsg.New()
|
||||||
messageSentAsync.AppendBlock(testutil.NewBlockOrFail(t, "data"))
|
messageSentAsync.AppendBlock(*blocks.NewBlock([]byte("data")))
|
||||||
errSending := waiter.SendMessage(
|
errSending := waiter.SendMessage(
|
||||||
context.Background(), &peer.Peer{ID: idOfResponder}, messageSentAsync)
|
context.Background(), &peer.Peer{ID: idOfResponder}, messageSentAsync)
|
||||||
if errSending != nil {
|
if errSending != nil {
|
||||||
|
|||||||
@ -5,8 +5,8 @@ import (
|
|||||||
|
|
||||||
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
|
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
|
||||||
|
|
||||||
|
blocks "github.com/jbenet/go-ipfs/blocks"
|
||||||
u "github.com/jbenet/go-ipfs/util"
|
u "github.com/jbenet/go-ipfs/util"
|
||||||
testutil "github.com/jbenet/go-ipfs/util/testutil"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBlockReturnsErr(t *testing.T) {
|
func TestBlockReturnsErr(t *testing.T) {
|
||||||
@ -20,8 +20,8 @@ func TestBlockReturnsErr(t *testing.T) {
|
|||||||
|
|
||||||
func TestHasBlockReturnsNil(t *testing.T) {
|
func TestHasBlockReturnsNil(t *testing.T) {
|
||||||
off := NewOfflineExchange()
|
off := NewOfflineExchange()
|
||||||
block := testutil.NewBlockOrFail(t, "data")
|
block := blocks.NewBlock([]byte("data"))
|
||||||
err := off.HasBlock(context.Background(), block)
|
err := off.HasBlock(context.Background(), *block)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("")
|
t.Fatal("")
|
||||||
}
|
}
|
||||||
|
|||||||
@ -46,14 +46,14 @@ func (dm *DagModifier) WriteAt(b []byte, offset uint64) (int, error) {
|
|||||||
return 0, errors.New("Attempted to perform write starting past end of file")
|
return 0, errors.New("Attempted to perform write starting past end of file")
|
||||||
}
|
}
|
||||||
|
|
||||||
// This shouldnt be necessary if we do subblocks sizes properly
|
|
||||||
newsize := dm.pbdata.GetFilesize()
|
|
||||||
if uint64(len(b))+offset > dm.pbdata.GetFilesize() {
|
|
||||||
newsize = uint64(len(b)) + offset
|
|
||||||
}
|
|
||||||
|
|
||||||
// First need to find where we are writing at
|
// First need to find where we are writing at
|
||||||
end := uint64(len(b)) + offset
|
end := uint64(len(b)) + offset
|
||||||
|
|
||||||
|
// This shouldnt be necessary if we do subblocks sizes properly
|
||||||
|
newsize := dm.pbdata.GetFilesize()
|
||||||
|
if end > dm.pbdata.GetFilesize() {
|
||||||
|
newsize = end
|
||||||
|
}
|
||||||
zeroblocklen := uint64(len(dm.pbdata.Data))
|
zeroblocklen := uint64(len(dm.pbdata.Data))
|
||||||
origlen := len(b)
|
origlen := len(b)
|
||||||
|
|
||||||
|
|||||||
@ -110,7 +110,7 @@ func BenchmarkDagWriter(b *testing.B) {
|
|||||||
dag := &mdag.DAGService{bserv}
|
dag := &mdag.DAGService{bserv}
|
||||||
|
|
||||||
b.ResetTimer()
|
b.ResetTimer()
|
||||||
nbytes := int64(b.N)
|
nbytes := int64(100000)
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
b.SetBytes(nbytes)
|
b.SetBytes(nbytes)
|
||||||
dw := NewDagWriter(dag, &imp.SizeSplitter{4096})
|
dw := NewDagWriter(dag, &imp.SizeSplitter{4096})
|
||||||
|
|||||||
@ -3,6 +3,8 @@ package merkledag
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
u "github.com/jbenet/go-ipfs/util"
|
||||||
|
|
||||||
mh "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multihash"
|
mh "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multihash"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -76,6 +78,7 @@ func (n *Node) Encoded(force bool) ([]byte, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return []byte{}, err
|
return []byte{}, err
|
||||||
}
|
}
|
||||||
|
n.cached = u.Hash(n.encoded)
|
||||||
}
|
}
|
||||||
|
|
||||||
return n.encoded, nil
|
return n.encoded, nil
|
||||||
|
|||||||
@ -24,6 +24,8 @@ type Node struct {
|
|||||||
|
|
||||||
// cache encoded/marshaled value
|
// cache encoded/marshaled value
|
||||||
encoded []byte
|
encoded []byte
|
||||||
|
|
||||||
|
cached mh.Multihash
|
||||||
}
|
}
|
||||||
|
|
||||||
// Link represents an IPFS Merkle DAG Link between Nodes.
|
// Link represents an IPFS Merkle DAG Link between Nodes.
|
||||||
@ -122,12 +124,12 @@ func (n *Node) Size() (uint64, error) {
|
|||||||
|
|
||||||
// Multihash hashes the encoded data of this node.
|
// Multihash hashes the encoded data of this node.
|
||||||
func (n *Node) Multihash() (mh.Multihash, error) {
|
func (n *Node) Multihash() (mh.Multihash, error) {
|
||||||
b, err := n.Encoded(false)
|
_, err := n.Encoded(false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return u.Hash(b), nil
|
return n.cached, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Key returns the Multihash as a key, for maps.
|
// Key returns the Multihash as a key, for maps.
|
||||||
@ -183,7 +185,9 @@ func (n *DAGService) Add(nd *Node) (u.Key, error) {
|
|||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
b, err := blocks.NewBlock(d)
|
b := new(blocks.Block)
|
||||||
|
b.Data = d
|
||||||
|
b.Multihash, err = nd.Multihash()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,22 +0,0 @@
|
|||||||
package testutil
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
blocks "github.com/jbenet/go-ipfs/blocks"
|
|
||||||
)
|
|
||||||
|
|
||||||
// NewBlockOrFail returns a block created from msgData. Signals test failure if
|
|
||||||
// creation fails.
|
|
||||||
//
|
|
||||||
// NB: NewBlockOrFail accepts a msgData parameter to avoid non-determinism in
|
|
||||||
// tests. Generating random block data could potentially result in unexpected
|
|
||||||
// behavior in tests. Thus, it is left up to the caller to select the msgData
|
|
||||||
// that will determine the blocks key.
|
|
||||||
func NewBlockOrFail(t *testing.T, msgData string) blocks.Block {
|
|
||||||
block, blockCreationErr := blocks.NewBlock([]byte(msgData))
|
|
||||||
if blockCreationErr != nil {
|
|
||||||
t.Fatal(blockCreationErr)
|
|
||||||
}
|
|
||||||
return *block
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user