mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-28 13:57:52 +08:00
Updates: * go-kad-dht: Query performance improvements, DHT client fixes, validates records on *local* put. * go-libp2p-swarm/go-libp2p-transport: Timeout improvements. * go-multiaddr-net: Exposes useful Conn methods (CloseWrite, CloseRead, etc.) * go-log: fixes possible panic when enabling/disabling events. * go-multiaddr: fixes possible panic when stringifying malformed multiaddrs, adds support for consuming /p2p/ multiaddrs. fixes #5113 unblocks #4895 License: MIT Signed-off-by: Steven Allen <steven@stebalien.com>
49 lines
1.4 KiB
Go
49 lines
1.4 KiB
Go
package blockservice
|
|
|
|
import (
|
|
"testing"
|
|
|
|
offline "gx/ipfs/QmRCgkkCmf1nMrW2BLZZtjP3Xyw3GfZVYRLix9wrnW4NoR/go-ipfs-exchange-offline"
|
|
blocks "gx/ipfs/QmTRCUvZLiir12Qr6MV3HKfKMHX8Nf1Vddn6t2g5nsQSb9/go-block-format"
|
|
butil "gx/ipfs/QmYmE4kxv6uFGaWkeBAFYDuNcxzCn87pzwm6CkBkM9C8BM/go-ipfs-blocksutil"
|
|
blockstore "gx/ipfs/QmdpuJBPBZ6sLPj9BQpn3Rpi38BT2cF1QMiUfyzNWeySW4/go-ipfs-blockstore"
|
|
ds "gx/ipfs/QmeiCcJfDW1GJnWUArudsv5rQsihpi4oyddPhdqo3CfX6i/go-datastore"
|
|
dssync "gx/ipfs/QmeiCcJfDW1GJnWUArudsv5rQsihpi4oyddPhdqo3CfX6i/go-datastore/sync"
|
|
)
|
|
|
|
func TestWriteThroughWorks(t *testing.T) {
|
|
bstore := &PutCountingBlockstore{
|
|
blockstore.NewBlockstore(dssync.MutexWrap(ds.NewMapDatastore())),
|
|
0,
|
|
}
|
|
bstore2 := blockstore.NewBlockstore(dssync.MutexWrap(ds.NewMapDatastore()))
|
|
exch := offline.Exchange(bstore2)
|
|
bserv := NewWriteThrough(bstore, exch)
|
|
bgen := butil.NewBlockGenerator()
|
|
|
|
block := bgen.Next()
|
|
|
|
t.Logf("PutCounter: %d", bstore.PutCounter)
|
|
bserv.AddBlock(block)
|
|
if bstore.PutCounter != 1 {
|
|
t.Fatalf("expected just one Put call, have: %d", bstore.PutCounter)
|
|
}
|
|
|
|
bserv.AddBlock(block)
|
|
if bstore.PutCounter != 2 {
|
|
t.Fatalf("Put should have called again, should be 2 is: %d", bstore.PutCounter)
|
|
}
|
|
}
|
|
|
|
var _ blockstore.Blockstore = (*PutCountingBlockstore)(nil)
|
|
|
|
type PutCountingBlockstore struct {
|
|
blockstore.Blockstore
|
|
PutCounter int
|
|
}
|
|
|
|
func (bs *PutCountingBlockstore) Put(block blocks.Block) error {
|
|
bs.PutCounter++
|
|
return bs.Blockstore.Put(block)
|
|
}
|