From 9854683daa796e0a78cbe8d3c83de898d20e9f03 Mon Sep 17 00:00:00 2001 From: Jakub Sztandera <kubuxu@protonmail.ch> Date: Mon, 10 Oct 2016 10:58:48 -0400 Subject: [PATCH] test: check if NewWriteThrough is not calling Has License: MIT Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch> --- blocks/blocksutil/block_generator.go | 6 ++-- blockservice/blockservice.go | 2 +- blockservice/blockservice_test.go | 44 ++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 blockservice/blockservice_test.go diff --git a/blocks/blocksutil/block_generator.go b/blocks/blocksutil/block_generator.go index d70f79470..438eac1a5 100644 --- a/blocks/blocksutil/block_generator.go +++ b/blocks/blocksutil/block_generator.go @@ -10,13 +10,13 @@ type BlockGenerator struct { seq int } -func (bg *BlockGenerator) Next() blocks.Block { +func (bg *BlockGenerator) Next() *blocks.BasicBlock { bg.seq++ return blocks.NewBlock([]byte(string(bg.seq))) } -func (bg *BlockGenerator) Blocks(n int) []blocks.Block { - blocks := make([]blocks.Block, 0) +func (bg *BlockGenerator) Blocks(n int) []*blocks.BasicBlock { + blocks := make([]*blocks.BasicBlock, 0) for i := 0; i < n; i++ { b := bg.Next() blocks = append(blocks, b) diff --git a/blockservice/blockservice.go b/blockservice/blockservice.go index 8ecec71f9..d4461b66d 100644 --- a/blockservice/blockservice.go +++ b/blockservice/blockservice.go @@ -4,6 +4,7 @@ package blockservice import ( + "context" "errors" "fmt" @@ -11,7 +12,6 @@ import ( "github.com/ipfs/go-ipfs/blocks/blockstore" exchange "github.com/ipfs/go-ipfs/exchange" - context "context" logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log" cid "gx/ipfs/QmakyCk6Vnn16WEKjbkxieZmM2YLTzkFWizbmGowoYPjro/go-cid" ) diff --git a/blockservice/blockservice_test.go b/blockservice/blockservice_test.go new file mode 100644 index 000000000..82244c1cd --- /dev/null +++ b/blockservice/blockservice_test.go @@ -0,0 +1,44 @@ +package blockservice + +import ( + "testing" + + "github.com/ipfs/go-ipfs/blocks/blockstore" + butil "github.com/ipfs/go-ipfs/blocks/blocksutil" + offline "github.com/ipfs/go-ipfs/exchange/offline" + + cid "gx/ipfs/QmakyCk6Vnn16WEKjbkxieZmM2YLTzkFWizbmGowoYPjro/go-cid" + ds "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore" + dssync "gx/ipfs/QmbzuUusHqaLLoNTDEVLcSF6vZDHZDLPC7p4bztRvvkXxU/go-datastore/sync" +) + +func TestWriteThroughWorks(t *testing.T) { + dstore := dssync.MutexWrap(ds.NewMapDatastore()) + bstore := HasFailingBlockstore{ + blockstore.NewBlockstore(dstore), + t, + true, + } + exch := offline.Exchange(bstore) + bserv := NewWriteThrough(bstore, exch) + bgen := butil.NewBlockGenerator() + + bserv.AddBlock(bgen.Next()) +} + +var _ blockstore.GCBlockstore = (*HasFailingBlockstore)(nil) + +type HasFailingBlockstore struct { + blockstore.GCBlockstore + t *testing.T + Fail bool +} + +func (bs HasFailingBlockstore) Has(k *cid.Cid) (bool, error) { + if bs.Fail { + bs.t.Fatal("Has shouldn't be called") + return false, nil + } + return bs.GCBlockstore.Has(k) + +} -- GitLab