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
+}