Commit cee0ed2c authored by wjx@disanbo.com's avatar wjx@disanbo.com

Merge branch 'master' into fix_lot_lint

parents 9ea7ec98 ebfb1739
...@@ -7,5 +7,6 @@ package kvmvccdb ...@@ -7,5 +7,6 @@ package kvmvccdb
import "errors" import "errors"
var ( var (
//ErrStateHashLost means err happened when query with StateHash
ErrStateHashLost = errors.New("ErrStateHashLost") ErrStateHashLost = errors.New("ErrStateHashLost")
) )
...@@ -18,10 +18,12 @@ import ( ...@@ -18,10 +18,12 @@ import (
var klog = log.New("module", "kvmvccdb") var klog = log.New("module", "kvmvccdb")
var maxRollbackNum = 200 var maxRollbackNum = 200
// SetLogLevel set log level
func SetLogLevel(level string) { func SetLogLevel(level string) {
clog.SetLogLevel(level) clog.SetLogLevel(level)
} }
// DisableLog disable log output
func DisableLog() { func DisableLog() {
klog.SetHandler(log.DiscardHandler()) klog.SetHandler(log.DiscardHandler())
} }
...@@ -30,6 +32,7 @@ func init() { ...@@ -30,6 +32,7 @@ func init() {
drivers.Reg("kvmvcc", New) drivers.Reg("kvmvcc", New)
} }
// KVMVCCStore provide kvmvcc store interface implementation
type KVMVCCStore struct { type KVMVCCStore struct {
*drivers.BaseStore *drivers.BaseStore
mvcc dbm.MVCC mvcc dbm.MVCC
...@@ -41,6 +44,7 @@ type subConfig struct { ...@@ -41,6 +44,7 @@ type subConfig struct {
EnableMVCCIter bool `json:"enableMVCCIter"` EnableMVCCIter bool `json:"enableMVCCIter"`
} }
// New construct KVMVCCStore module
func New(cfg *types.Store, sub []byte) queue.Module { func New(cfg *types.Store, sub []byte) queue.Module {
bs := drivers.NewBaseStore(cfg) bs := drivers.NewBaseStore(cfg)
var kvs *KVMVCCStore var kvs *KVMVCCStore
...@@ -59,11 +63,13 @@ func New(cfg *types.Store, sub []byte) queue.Module { ...@@ -59,11 +63,13 @@ func New(cfg *types.Store, sub []byte) queue.Module {
return kvs return kvs
} }
// Close the KVMVCCStore module
func (mvccs *KVMVCCStore) Close() { func (mvccs *KVMVCCStore) Close() {
mvccs.BaseStore.Close() mvccs.BaseStore.Close()
klog.Info("store kvdb closed") klog.Info("store kvdb closed")
} }
// Set kvs with statehash to KVMVCCStore
func (mvccs *KVMVCCStore) Set(datas *types.StoreSet, sync bool) ([]byte, error) { func (mvccs *KVMVCCStore) Set(datas *types.StoreSet, sync bool) ([]byte, error) {
hash := calcHash(datas) hash := calcHash(datas)
kvlist, err := mvccs.mvcc.AddMVCC(datas.KV, hash, datas.StateHash, datas.Height) kvlist, err := mvccs.mvcc.AddMVCC(datas.KV, hash, datas.StateHash, datas.Height)
...@@ -74,6 +80,7 @@ func (mvccs *KVMVCCStore) Set(datas *types.StoreSet, sync bool) ([]byte, error) ...@@ -74,6 +80,7 @@ func (mvccs *KVMVCCStore) Set(datas *types.StoreSet, sync bool) ([]byte, error)
return hash, nil return hash, nil
} }
// Get kvs with statehash from KVMVCCStore
func (mvccs *KVMVCCStore) Get(datas *types.StoreGet) [][]byte { func (mvccs *KVMVCCStore) Get(datas *types.StoreGet) [][]byte {
values := make([][]byte, len(datas.Keys)) values := make([][]byte, len(datas.Keys))
version, err := mvccs.mvcc.GetVersion(datas.StateHash) version, err := mvccs.mvcc.GetVersion(datas.StateHash)
...@@ -92,6 +99,7 @@ func (mvccs *KVMVCCStore) Get(datas *types.StoreGet) [][]byte { ...@@ -92,6 +99,7 @@ func (mvccs *KVMVCCStore) Get(datas *types.StoreGet) [][]byte {
return values return values
} }
// MemSet set kvs to the mem of KVMVCCStore module and return the StateHash
func (mvccs *KVMVCCStore) MemSet(datas *types.StoreSet, sync bool) ([]byte, error) { func (mvccs *KVMVCCStore) MemSet(datas *types.StoreSet, sync bool) ([]byte, error) {
kvset, err := mvccs.checkVersion(datas.Height) kvset, err := mvccs.checkVersion(datas.Height)
if err != nil { if err != nil {
...@@ -110,6 +118,7 @@ func (mvccs *KVMVCCStore) MemSet(datas *types.StoreSet, sync bool) ([]byte, erro ...@@ -110,6 +118,7 @@ func (mvccs *KVMVCCStore) MemSet(datas *types.StoreSet, sync bool) ([]byte, erro
return hash, nil return hash, nil
} }
// Commit kvs in the mem of KVMVCCStore module to state db and return the StateHash
func (mvccs *KVMVCCStore) Commit(req *types.ReqHash) ([]byte, error) { func (mvccs *KVMVCCStore) Commit(req *types.ReqHash) ([]byte, error) {
_, ok := mvccs.kvsetmap[string(req.Hash)] _, ok := mvccs.kvsetmap[string(req.Hash)]
if !ok { if !ok {
...@@ -122,6 +131,7 @@ func (mvccs *KVMVCCStore) Commit(req *types.ReqHash) ([]byte, error) { ...@@ -122,6 +131,7 @@ func (mvccs *KVMVCCStore) Commit(req *types.ReqHash) ([]byte, error) {
return req.Hash, nil return req.Hash, nil
} }
// Rollback kvs in the mem of KVMVCCStore module and return the StateHash
func (mvccs *KVMVCCStore) Rollback(req *types.ReqHash) ([]byte, error) { func (mvccs *KVMVCCStore) Rollback(req *types.ReqHash) ([]byte, error) {
_, ok := mvccs.kvsetmap[string(req.Hash)] _, ok := mvccs.kvsetmap[string(req.Hash)]
if !ok { if !ok {
...@@ -135,6 +145,7 @@ func (mvccs *KVMVCCStore) Rollback(req *types.ReqHash) ([]byte, error) { ...@@ -135,6 +145,7 @@ func (mvccs *KVMVCCStore) Rollback(req *types.ReqHash) ([]byte, error) {
return req.Hash, nil return req.Hash, nil
} }
// IterateRangeByStateHash travel with Prefix by StateHash to get the latest version kvs.
func (mvccs *KVMVCCStore) IterateRangeByStateHash(statehash []byte, start []byte, end []byte, ascending bool, fn func(key, value []byte) bool) { func (mvccs *KVMVCCStore) IterateRangeByStateHash(statehash []byte, start []byte, end []byte, ascending bool, fn func(key, value []byte) bool) {
if !mvccs.enableMVCCIter { if !mvccs.enableMVCCIter {
panic("call IterateRangeByStateHash when disable mvcc iter") panic("call IterateRangeByStateHash when disable mvcc iter")
...@@ -162,10 +173,12 @@ func (mvccs *KVMVCCStore) IterateRangeByStateHash(statehash []byte, start []byte ...@@ -162,10 +173,12 @@ func (mvccs *KVMVCCStore) IterateRangeByStateHash(statehash []byte, start []byte
listhelper.IteratorCallback(start, end, 0, 1, fn) listhelper.IteratorCallback(start, end, 0, 1, fn)
} }
// ProcEvent handles supported events
func (mvccs *KVMVCCStore) ProcEvent(msg queue.Message) { func (mvccs *KVMVCCStore) ProcEvent(msg queue.Message) {
msg.ReplyErr("KVStore", types.ErrActionNotSupport) msg.ReplyErr("KVStore", types.ErrActionNotSupport)
} }
// Del set kvs to nil with StateHash
func (mvccs *KVMVCCStore) Del(req *types.StoreDel) ([]byte, error) { func (mvccs *KVMVCCStore) Del(req *types.StoreDel) ([]byte, error) {
kvset, err := mvccs.mvcc.DelMVCC(req.StateHash, req.Height, true) kvset, err := mvccs.mvcc.DelMVCC(req.StateHash, req.Height, true)
if err != nil { if err != nil {
......
...@@ -35,8 +35,8 @@ func TestKvmvccdbNewClose(t *testing.T) { ...@@ -35,8 +35,8 @@ func TestKvmvccdbNewClose(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(t, store) assert.NotNil(t, store)
store.Close() store.Close()
...@@ -47,8 +47,8 @@ func TestKvmvccdbSetGet(t *testing.T) { ...@@ -47,8 +47,8 @@ func TestKvmvccdbSetGet(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(t, store) assert.NotNil(t, store)
keys0 := [][]byte{[]byte("mk1"), []byte("mk2")} keys0 := [][]byte{[]byte("mk1"), []byte("mk2")}
...@@ -93,8 +93,8 @@ func TestKvmvccdbMemSet(t *testing.T) { ...@@ -93,8 +93,8 @@ func TestKvmvccdbMemSet(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(t, store) assert.NotNil(t, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -131,8 +131,8 @@ func TestKvmvccdbRollback(t *testing.T) { ...@@ -131,8 +131,8 @@ func TestKvmvccdbRollback(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(t, store) assert.NotNil(t, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -164,8 +164,8 @@ func TestKvmvccdbRollbackBatch(t *testing.T) { ...@@ -164,8 +164,8 @@ func TestKvmvccdbRollbackBatch(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(t, store) assert.NotNil(t, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -260,8 +260,8 @@ func TestIterateRangeByStateHash(t *testing.T) { ...@@ -260,8 +260,8 @@ func TestIterateRangeByStateHash(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
store_cfg, sub := newStoreCfgIter(dir) storeCfg, sub := newStoreCfgIter(dir)
store := New(store_cfg, sub).(*KVMVCCStore) store := New(storeCfg, sub).(*KVMVCCStore)
assert.NotNil(t, store) assert.NotNil(t, store)
execaddr := "0111vcBNSEA7fZhAdLJphDwQRQJa111" execaddr := "0111vcBNSEA7fZhAdLJphDwQRQJa111"
...@@ -406,8 +406,8 @@ func BenchmarkGet(b *testing.B) { ...@@ -406,8 +406,8 @@ func BenchmarkGet(b *testing.B) {
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -429,7 +429,7 @@ func BenchmarkGet(b *testing.B) { ...@@ -429,7 +429,7 @@ func BenchmarkGet(b *testing.B) {
datas := &types.StoreSet{hash, kv, 0} datas := &types.StoreSet{hash, kv, 0}
hash, err = store.Set(datas, true) hash, err = store.Set(datas, true)
assert.Nil(b, err) assert.Nil(b, err)
kv = nil //kv = nil
} }
assert.Nil(b, err) assert.Nil(b, err)
start := time.Now() start := time.Now()
...@@ -450,8 +450,8 @@ func BenchmarkStoreGetKvs4N(b *testing.B) { ...@@ -450,8 +450,8 @@ func BenchmarkStoreGetKvs4N(b *testing.B) {
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -495,8 +495,8 @@ func BenchmarkStoreGetKvsForNN(b *testing.B) { ...@@ -495,8 +495,8 @@ func BenchmarkStoreGetKvsForNN(b *testing.B) {
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -555,8 +555,8 @@ func BenchmarkStoreGetKvsFor10000(b *testing.B) { ...@@ -555,8 +555,8 @@ func BenchmarkStoreGetKvsFor10000(b *testing.B) {
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -620,8 +620,8 @@ func BenchmarkGetIter(b *testing.B) { ...@@ -620,8 +620,8 @@ func BenchmarkGetIter(b *testing.B) {
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
store_cfg, sub := newStoreCfgIter(dir) storeCfg, sub := newStoreCfgIter(dir)
store := New(store_cfg, sub).(*KVMVCCStore) store := New(storeCfg, sub).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -643,7 +643,7 @@ func BenchmarkGetIter(b *testing.B) { ...@@ -643,7 +643,7 @@ func BenchmarkGetIter(b *testing.B) {
datas := &types.StoreSet{hash, kv, 0} datas := &types.StoreSet{hash, kv, 0}
hash, err = store.Set(datas, true) hash, err = store.Set(datas, true)
assert.Nil(b, err) assert.Nil(b, err)
kv = nil //kv = nil
} }
assert.Nil(b, err) assert.Nil(b, err)
start := time.Now() start := time.Now()
...@@ -663,8 +663,8 @@ func BenchmarkSet(b *testing.B) { ...@@ -663,8 +663,8 @@ func BenchmarkSet(b *testing.B) {
assert.Nil(b, err) assert.Nil(b, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
b.Log(dir) b.Log(dir)
...@@ -686,9 +686,9 @@ func BenchmarkSet(b *testing.B) { ...@@ -686,9 +686,9 @@ func BenchmarkSet(b *testing.B) {
} }
if kv != nil { if kv != nil {
datas := &types.StoreSet{hash, kv, 0} datas := &types.StoreSet{hash, kv, 0}
hash, err = store.Set(datas, true) _, err = store.Set(datas, true)
assert.Nil(b, err) assert.Nil(b, err)
kv = nil //kv = nil
} }
end := time.Now() end := time.Now()
fmt.Println("mpt BenchmarkSet cost time is", end.Sub(start), "num is", b.N) fmt.Println("mpt BenchmarkSet cost time is", end.Sub(start), "num is", b.N)
...@@ -700,8 +700,8 @@ func BenchmarkStoreSet(b *testing.B) { ...@@ -700,8 +700,8 @@ func BenchmarkStoreSet(b *testing.B) {
assert.Nil(b, err) assert.Nil(b, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -735,8 +735,8 @@ func BenchmarkSetIter(b *testing.B) { ...@@ -735,8 +735,8 @@ func BenchmarkSetIter(b *testing.B) {
assert.Nil(b, err) assert.Nil(b, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
store_cfg, sub := newStoreCfgIter(dir) storeCfg, sub := newStoreCfgIter(dir)
store := New(store_cfg, sub).(*KVMVCCStore) store := New(storeCfg, sub).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
b.Log(dir) b.Log(dir)
...@@ -758,9 +758,9 @@ func BenchmarkSetIter(b *testing.B) { ...@@ -758,9 +758,9 @@ func BenchmarkSetIter(b *testing.B) {
} }
if kv != nil { if kv != nil {
datas := &types.StoreSet{hash, kv, 0} datas := &types.StoreSet{hash, kv, 0}
hash, err = store.Set(datas, true) _, err = store.Set(datas, true)
assert.Nil(b, err) assert.Nil(b, err)
kv = nil //kv = nil
} }
end := time.Now() end := time.Now()
fmt.Println("kvmvcc BenchmarkSet cost time is", end.Sub(start), "num is", b.N) fmt.Println("kvmvcc BenchmarkSet cost time is", end.Sub(start), "num is", b.N)
...@@ -771,11 +771,9 @@ func isDirExists(path string) bool { ...@@ -771,11 +771,9 @@ func isDirExists(path string) bool {
if err != nil { if err != nil {
return os.IsExist(err) return os.IsExist(err)
} else {
return fi.IsDir()
} }
panic("not reached") return fi.IsDir()
} }
//一次设定多对kv,测试一次的时间/多少对kv,来算平均一对kv的耗时。 //一次设定多对kv,测试一次的时间/多少对kv,来算平均一对kv的耗时。
...@@ -784,8 +782,8 @@ func BenchmarkMemSet(b *testing.B) { ...@@ -784,8 +782,8 @@ func BenchmarkMemSet(b *testing.B) {
assert.Nil(b, err) assert.Nil(b, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -818,8 +816,8 @@ func BenchmarkStoreMemSet(b *testing.B) { ...@@ -818,8 +816,8 @@ func BenchmarkStoreMemSet(b *testing.B) {
assert.Nil(b, err) assert.Nil(b, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -856,8 +854,8 @@ func BenchmarkCommit(b *testing.B) { ...@@ -856,8 +854,8 @@ func BenchmarkCommit(b *testing.B) {
assert.Nil(b, err) assert.Nil(b, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -897,8 +895,8 @@ func BenchmarkStoreCommit(b *testing.B) { ...@@ -897,8 +895,8 @@ func BenchmarkStoreCommit(b *testing.B) {
assert.Nil(b, err) assert.Nil(b, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
var store_cfg = newStoreCfg(dir) var storeCfg = newStoreCfg(dir)
store := New(store_cfg, nil).(*KVMVCCStore) store := New(storeCfg, nil).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -941,8 +939,8 @@ func BenchmarkIterMemSet(b *testing.B) { ...@@ -941,8 +939,8 @@ func BenchmarkIterMemSet(b *testing.B) {
assert.Nil(b, err) assert.Nil(b, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
store_cfg, sub := newStoreCfgIter(dir) storeCfg, sub := newStoreCfgIter(dir)
store := New(store_cfg, sub).(*KVMVCCStore) store := New(storeCfg, sub).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -974,8 +972,8 @@ func BenchmarkIterCommit(b *testing.B) { ...@@ -974,8 +972,8 @@ func BenchmarkIterCommit(b *testing.B) {
assert.Nil(b, err) assert.Nil(b, err)
defer os.RemoveAll(dir) // clean up defer os.RemoveAll(dir) // clean up
os.RemoveAll(dir) //删除已存在目录 os.RemoveAll(dir) //删除已存在目录
store_cfg, sub := newStoreCfgIter(dir) storeCfg, sub := newStoreCfgIter(dir)
store := New(store_cfg, sub).(*KVMVCCStore) store := New(storeCfg, sub).(*KVMVCCStore)
assert.NotNil(b, store) assert.NotNil(b, store)
var kv []*types.KeyValue var kv []*types.KeyValue
......
...@@ -186,7 +186,7 @@ func BenchmarkGet(b *testing.B) { ...@@ -186,7 +186,7 @@ func BenchmarkGet(b *testing.B) {
datas := &types.StoreSet{hash, kv, 0} datas := &types.StoreSet{hash, kv, 0}
hash, err = store.Set(datas, true) hash, err = store.Set(datas, true)
assert.Nil(b, err) assert.Nil(b, err)
kv = nil //kv = nil
} }
start := time.Now() start := time.Now()
b.ResetTimer() b.ResetTimer()
...@@ -227,9 +227,9 @@ func BenchmarkSet(b *testing.B) { ...@@ -227,9 +227,9 @@ func BenchmarkSet(b *testing.B) {
} }
if kv != nil { if kv != nil {
datas := &types.StoreSet{hash, kv, 0} datas := &types.StoreSet{hash, kv, 0}
hash, err = store.Set(datas, true) _, err = store.Set(datas, true)
assert.Nil(b, err) assert.Nil(b, err)
kv = nil //kv = nil
} }
end := time.Now() end := time.Now()
fmt.Println("mpt BenchmarkSet cost time is", end.Sub(start), "num is", b.N) fmt.Println("mpt BenchmarkSet cost time is", end.Sub(start), "num is", b.N)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment