@cryptotaxi247 / kubo / commits / 9854683da

test: check if NewWriteThrough is not calling Has

License: MIT Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>

Jakub Sztandera committed Oct 10, 2016 at 10:58 UTC 9854683daa796e0a78cbe8d3c83de898d20e9f03
3 files changed +48 -4
blocks/blocksutil/block_generator.go
+3 -3
@@ -10,13 +10,13 @@ type BlockGenerator struct {
10 seq int
11 }
12
13 -func (bg *BlockGenerator) Next() blocks.Block {
13 +func (bg *BlockGenerator) Next() *blocks.BasicBlock {
14 bg.seq++
15 return blocks.NewBlock([]byte(string(bg.seq)))
16 }
17
18 -func (bg *BlockGenerator) Blocks(n int) []blocks.Block {
19 - blocks := make([]blocks.Block, 0)
18 +func (bg *BlockGenerator) Blocks(n int) []*blocks.BasicBlock {
19 + blocks := make([]*blocks.BasicBlock, 0)
20 for i := 0; i < n; i++ {
21 b := bg.Next()
22 blocks = append(blocks, b)
blockservice/blockservice.go
+1 -1
@@ -4,6 +4,7 @@
4 package blockservice
5
6 import (
7 + "context"
8 "errors"
9 "fmt"
10
@@ -11,7 +12,6 @@ import (
12 "github.com/ipfs/go-ipfs/blocks/blockstore"
13 exchange "github.com/ipfs/go-ipfs/exchange"
14
14 - context "context"
15 logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log"
16 cid "gx/ipfs/QmakyCk6Vnn16WEKjbkxieZmM2YLTzkFWizbmGowoYPjro/go-cid"
17 )
blockservice/blockservice_test.go new
+44
@@ -0,0 +1,44 @@
1 +package blockservice
2 +
3 +import (
4 + "testing"
5 +
6 + "github.com/ipfs/go-ipfs/blocks/blockstore"
7 + butil "github.com/ipfs/go-ipfs/blocks/blocksutil"
8 + offline "github.com/ipfs/go-ipfs/exchange/offline"
9 +
10 + cid "gx/ipfs/QmakyCk6Vnn16WEKjbkxieZmM2YLTzkFWizbmGowoYPjro/go-cid"
11 + ds "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore"
12 + dssync "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore/sync"
13 +)
14 +
15 +func TestWriteThroughWorks(t *testing.T) {
16 + dstore := dssync.MutexWrap(ds.NewMapDatastore())
17 + bstore := HasFailingBlockstore{
18 + blockstore.NewBlockstore(dstore),
19 + t,
20 + true,
21 + }
22 + exch := offline.Exchange(bstore)
23 + bserv := NewWriteThrough(bstore, exch)
24 + bgen := butil.NewBlockGenerator()
25 +
26 + bserv.AddBlock(bgen.Next())
27 +}
28 +
29 +var _ blockstore.GCBlockstore = (*HasFailingBlockstore)(nil)
30 +
31 +type HasFailingBlockstore struct {
32 + blockstore.GCBlockstore
33 + t *testing.T
34 + Fail bool
35 +}
36 +
37 +func (bs HasFailingBlockstore) Has(k *cid.Cid) (bool, error) {
38 + if bs.Fail {
39 + bs.t.Fatal("Has shouldn't be called")
40 + return false, nil
41 + }
42 + return bs.GCBlockstore.Has(k)
43 +
44 +}