feat(core/coretesting): make memDB satisfy db.Db interface (#22570)
This commit is contained in:
parent
c6522a72a4
commit
d810b77c71
@ -291,12 +291,20 @@ func (bt *MemDB) Set(key, value []byte) error {
|
||||
return bt.kv.Set(key, value)
|
||||
}
|
||||
|
||||
func (bt *MemDB) SetSync(key, value []byte) error {
|
||||
return bt.Set(key, value)
|
||||
}
|
||||
|
||||
func (bt *MemDB) Delete(key []byte) error {
|
||||
bt.mtx.Lock()
|
||||
defer bt.mtx.Unlock()
|
||||
return bt.kv.Delete(key)
|
||||
}
|
||||
|
||||
func (bt *MemDB) DeleteSync(key []byte) error {
|
||||
return bt.Delete(key)
|
||||
}
|
||||
|
||||
func (bt *MemDB) Iterator(start, end []byte) (store.Iterator, error) {
|
||||
return bt.kv.Iterator(start, end)
|
||||
}
|
||||
@ -305,6 +313,27 @@ func (bt *MemDB) ReverseIterator(start, end []byte) (store.Iterator, error) {
|
||||
return bt.kv.ReverseIterator(start, end)
|
||||
}
|
||||
|
||||
func (db *MemDB) Print() error {
|
||||
db.mtx.RLock()
|
||||
defer db.mtx.RUnlock()
|
||||
|
||||
db.kv.tree.Ascend(item{}, func(i item) bool {
|
||||
fmt.Printf("[%X]:\t[%X]\n", i.key, i.value)
|
||||
return true
|
||||
})
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *MemDB) Stats() map[string]string {
|
||||
db.mtx.RLock()
|
||||
defer db.mtx.RUnlock()
|
||||
|
||||
stats := make(map[string]string)
|
||||
stats["database.type"] = "memDB"
|
||||
stats["database.size"] = fmt.Sprintf("%d", db.kv.tree.Len())
|
||||
return stats
|
||||
}
|
||||
|
||||
// Close closes the MemDB, releasing any resources held.
|
||||
func (db *MemDB) Close() error {
|
||||
return nil
|
||||
|
||||
@ -50,6 +50,7 @@ require (
|
||||
cosmossdk.io/x/slashing v0.0.0-00010101000000-000000000000
|
||||
cosmossdk.io/x/staking v0.0.0-20240226161501-23359a0b6d91
|
||||
github.com/cometbft/cometbft/api v1.0.0-rc.1
|
||||
github.com/cosmos/cosmos-db v1.0.3-0.20240911104526-ddc3f09bfc22
|
||||
github.com/google/go-cmp v0.6.0
|
||||
github.com/google/gofuzz v1.2.0
|
||||
github.com/jhump/protoreflect v1.17.0
|
||||
@ -103,7 +104,6 @@ require (
|
||||
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect
|
||||
github.com/cometbft/cometbft-db v0.15.0 // indirect
|
||||
github.com/cosmos/btcutil v1.0.5 // indirect
|
||||
github.com/cosmos/cosmos-db v1.0.3-0.20240911104526-ddc3f09bfc22 // indirect
|
||||
github.com/cosmos/crypto v0.1.2 // indirect
|
||||
github.com/cosmos/go-bip39 v1.0.0 // indirect
|
||||
github.com/cosmos/gogogateway v1.2.0 // indirect
|
||||
|
||||
14
tests/integration/type_check.go
Normal file
14
tests/integration/type_check.go
Normal file
@ -0,0 +1,14 @@
|
||||
package integration
|
||||
|
||||
import (
|
||||
coretesting "cosmossdk.io/core/testing"
|
||||
|
||||
db "github.com/cosmos/cosmos-db"
|
||||
)
|
||||
|
||||
// This file contains a list of type checks that are used to ensure that implementations
|
||||
// matches the interface. We do not do those type checks directly in the components to
|
||||
// avoid to bring in more dependencies than needed.
|
||||
var (
|
||||
_ db.DB = (*coretesting.MemDB)(nil)
|
||||
)
|
||||
Loading…
Reference in New Issue
Block a user