kubo/exchange/offline/offline_test.go
Hector Sanjuan 758e00bc4c Extract blocks/blockstore package to go-ipfs-blockstore
This extracts the blocks/blockstore package and renames the
blocks/blockstore/util package to /blocks/blockstoreutil
(because util depends on Pin and I don't plan to extract
Pin and its depedencies).

The history of blocks/blockstore has been preserved. It has
been gx'ed and imported. Imports have been rewritten accordingly
and re-ordered.

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2018-02-15 18:03:41 +01:00

81 lines
1.7 KiB
Go

package offline
import (
"context"
"testing"
"github.com/ipfs/go-ipfs/blocks/blocksutil"
u "gx/ipfs/QmNiJuT8Ja3hMVpBHXv3Q6dwmperaQ6JjLtpMQgMCD7xvx/go-ipfs-util"
ds "gx/ipfs/QmPpegoMqhAEqjncrzArm7KVWAkCm78rqL2DPuNjhPrshg/go-datastore"
ds_sync "gx/ipfs/QmPpegoMqhAEqjncrzArm7KVWAkCm78rqL2DPuNjhPrshg/go-datastore/sync"
blockstore "gx/ipfs/QmTVDM4LCSUMFNQzbDLL9zQwp8usE6QHymFdh3h8vL9v6b/go-ipfs-blockstore"
cid "gx/ipfs/QmcZfnkapfECQGcLZaf9B79NRg7cRa9EnZh4LSbkCzwNvY/go-cid"
blocks "gx/ipfs/Qmej7nf81hi2x2tvjRBF3mcp74sQyuDH4VMYDGd1YtXjb2/go-block-format"
)
func TestBlockReturnsErr(t *testing.T) {
off := Exchange(bstore())
c := cid.NewCidV0(u.Hash([]byte("foo")))
_, err := off.GetBlock(context.Background(), c)
if err != nil {
return // as desired
}
t.Fail()
}
func TestHasBlockReturnsNil(t *testing.T) {
store := bstore()
ex := Exchange(store)
block := blocks.NewBlock([]byte("data"))
err := ex.HasBlock(block)
if err != nil {
t.Fail()
}
if _, err := store.Get(block.Cid()); err != nil {
t.Fatal(err)
}
}
func TestGetBlocks(t *testing.T) {
store := bstore()
ex := Exchange(store)
g := blocksutil.NewBlockGenerator()
expected := g.Blocks(2)
for _, b := range expected {
if err := ex.HasBlock(b); err != nil {
t.Fail()
}
}
request := func() []*cid.Cid {
var ks []*cid.Cid
for _, b := range expected {
ks = append(ks, b.Cid())
}
return ks
}()
received, err := ex.GetBlocks(context.Background(), request)
if err != nil {
t.Fatal(err)
}
var count int
for range received {
count++
}
if len(expected) != count {
t.Fail()
}
}
func bstore() blockstore.Blockstore {
return blockstore.NewBlockstore(ds_sync.MutexWrap(ds.NewMapDatastore()))
}