feat(core): add coretest package (#20487)
Co-authored-by: unknown unknown <unknown@unknown>
This commit is contained in:
parent
80ba18e39e
commit
fe22e9a5da
9
.github/dependabot.yml
vendored
9
.github/dependabot.yml
vendored
@ -61,6 +61,15 @@ updates:
|
||||
labels:
|
||||
- "A:automerge"
|
||||
- dependencies
|
||||
- package-ecosystem: gomod
|
||||
directory: "/core/testing"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: thursday
|
||||
time: "01:30"
|
||||
labels:
|
||||
- "A:automerge"
|
||||
- dependencies
|
||||
- package-ecosystem: gomod
|
||||
directory: "/depinject"
|
||||
schedule:
|
||||
|
||||
2
.github/pr_labeler.yml
vendored
2
.github/pr_labeler.yml
vendored
@ -16,6 +16,8 @@
|
||||
- store/**/*
|
||||
"C:collections":
|
||||
- collections/**/*
|
||||
"C:core/testing":
|
||||
- core/testing/**/*
|
||||
"C:log":
|
||||
- log/*
|
||||
"C:orm":
|
||||
|
||||
30
.github/workflows/test.yml
vendored
30
.github/workflows/test.yml
vendored
@ -335,6 +335,36 @@ jobs:
|
||||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
||||
with:
|
||||
projectBaseDir: core/
|
||||
test-coretesting:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: "1.20"
|
||||
check-latest: true
|
||||
cache: true
|
||||
cache-dependency-path: core/testing/go.sum
|
||||
- uses: technote-space/get-diff-action@v6.1.2
|
||||
id: git_diff
|
||||
with:
|
||||
PATTERNS: |
|
||||
core/testing/**/*.go
|
||||
core/testing/go.mod
|
||||
core/testing/go.sum
|
||||
- name: tests
|
||||
if: env.GIT_DIFF
|
||||
run: |
|
||||
cd core/testing
|
||||
go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace ledger test_ledger_mock' ./...
|
||||
- name: sonarcloud
|
||||
if: ${{ env.GIT_DIFF && !github.event.pull_request.draft && env.SONAR_TOKEN != null }}
|
||||
uses: SonarSource/sonarcloud-github-action@master
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
||||
with:
|
||||
projectBaseDir: core/testing/
|
||||
|
||||
test-depinject:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
@ -177,6 +177,7 @@ replace github.com/cosmos/cosmos-sdk => ./../../
|
||||
replace (
|
||||
cosmossdk.io/api => ./../../api
|
||||
cosmossdk.io/core => ./../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ./../../depinject
|
||||
cosmossdk.io/log => ./../../log
|
||||
cosmossdk.io/store => ./../../store
|
||||
|
||||
@ -5,49 +5,16 @@ import (
|
||||
"math"
|
||||
"testing"
|
||||
|
||||
db "github.com/cosmos/cosmos-db"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"cosmossdk.io/core/store"
|
||||
"cosmossdk.io/core/testing"
|
||||
)
|
||||
|
||||
type testStore struct {
|
||||
db db.DB
|
||||
}
|
||||
|
||||
func (t testStore) OpenKVStore(ctx context.Context) store.KVStore {
|
||||
return t
|
||||
}
|
||||
|
||||
func (t testStore) Get(key []byte) ([]byte, error) {
|
||||
return t.db.Get(key)
|
||||
}
|
||||
|
||||
func (t testStore) Has(key []byte) (bool, error) {
|
||||
return t.db.Has(key)
|
||||
}
|
||||
|
||||
func (t testStore) Set(key, value []byte) error {
|
||||
return t.db.Set(key, value)
|
||||
}
|
||||
|
||||
func (t testStore) Delete(key []byte) error {
|
||||
return t.db.Delete(key)
|
||||
}
|
||||
|
||||
func (t testStore) Iterator(start, end []byte) (store.Iterator, error) {
|
||||
return t.db.Iterator(start, end)
|
||||
}
|
||||
|
||||
func (t testStore) ReverseIterator(start, end []byte) (store.Iterator, error) {
|
||||
return t.db.ReverseIterator(start, end)
|
||||
}
|
||||
|
||||
var _ store.KVStore = testStore{}
|
||||
|
||||
func deps() (store.KVStoreService, context.Context) {
|
||||
kv := db.NewMemDB()
|
||||
return &testStore{kv}, context.Background()
|
||||
ctx := coretesting.Context()
|
||||
kv := coretesting.KVStoreService(ctx, "test")
|
||||
return kv, ctx
|
||||
}
|
||||
|
||||
func TestPrefix(t *testing.T) {
|
||||
|
||||
@ -1,61 +0,0 @@
|
||||
package colltest
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
db "github.com/cosmos/cosmos-db"
|
||||
|
||||
"cosmossdk.io/core/store"
|
||||
)
|
||||
|
||||
type contextStoreKey struct{}
|
||||
|
||||
// MockStore returns a mock store.KVStoreService and a mock context.Context.
|
||||
// They can be used to test collections. The StoreService.NewStoreContext
|
||||
// can be used to instantiate a new empty KVStore.
|
||||
func MockStore() (*StoreService, context.Context) {
|
||||
kv := db.NewMemDB()
|
||||
ctx := context.WithValue(context.Background(), contextStoreKey{}, &testStore{kv})
|
||||
return &StoreService{}, ctx
|
||||
}
|
||||
|
||||
type StoreService struct{}
|
||||
|
||||
func (s StoreService) OpenKVStore(ctx context.Context) store.KVStore {
|
||||
return ctx.Value(contextStoreKey{}).(store.KVStore)
|
||||
}
|
||||
|
||||
func (s StoreService) NewStoreContext() context.Context {
|
||||
kv := db.NewMemDB()
|
||||
return context.WithValue(context.Background(), contextStoreKey{}, &testStore{kv})
|
||||
}
|
||||
|
||||
type testStore struct {
|
||||
db db.DB
|
||||
}
|
||||
|
||||
func (t testStore) Get(key []byte) ([]byte, error) {
|
||||
return t.db.Get(key)
|
||||
}
|
||||
|
||||
func (t testStore) Has(key []byte) (bool, error) {
|
||||
return t.db.Has(key)
|
||||
}
|
||||
|
||||
func (t testStore) Set(key, value []byte) error {
|
||||
return t.db.Set(key, value)
|
||||
}
|
||||
|
||||
func (t testStore) Delete(key []byte) error {
|
||||
return t.db.Delete(key)
|
||||
}
|
||||
|
||||
func (t testStore) Iterator(start, end []byte) (store.Iterator, error) {
|
||||
return t.db.Iterator(start, end)
|
||||
}
|
||||
|
||||
func (t testStore) ReverseIterator(start, end []byte) (store.Iterator, error) {
|
||||
return t.db.ReverseIterator(start, end)
|
||||
}
|
||||
|
||||
var _ store.KVStore = testStore{}
|
||||
@ -3,44 +3,19 @@ module cosmossdk.io/collections
|
||||
go 1.21
|
||||
|
||||
require (
|
||||
cosmossdk.io/core v0.11.0
|
||||
github.com/cosmos/cosmos-db v1.0.2
|
||||
cosmossdk.io/core v0.12.0
|
||||
cosmossdk.io/core/testing v0.0.0-00010101000000-000000000000
|
||||
github.com/stretchr/testify v1.9.0
|
||||
pgregory.net/rapid v1.1.0
|
||||
)
|
||||
|
||||
require (
|
||||
cosmossdk.io/api v0.7.5 // indirect
|
||||
cosmossdk.io/depinject v1.0.0-alpha.4 // indirect
|
||||
github.com/DataDog/zstd v1.5.5 // indirect
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.2.0 // indirect
|
||||
github.com/cockroachdb/errors v1.11.1 // indirect
|
||||
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect
|
||||
github.com/cockroachdb/pebble v1.1.0 // indirect
|
||||
github.com/cockroachdb/redact v1.1.5 // indirect
|
||||
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/fsnotify/fsnotify v1.6.0 // indirect
|
||||
github.com/getsentry/sentry-go v0.27.0 // indirect
|
||||
github.com/gogo/protobuf v1.3.2 // indirect
|
||||
github.com/golang/snappy v0.0.4 // indirect
|
||||
github.com/google/btree v1.1.2 // indirect
|
||||
github.com/klauspost/compress v1.17.7 // indirect
|
||||
github.com/kr/pretty v0.3.1 // indirect
|
||||
github.com/kr/text v0.2.0 // indirect
|
||||
github.com/linxGnu/grocksdb v1.8.14 // indirect
|
||||
github.com/onsi/gomega v1.20.0 // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/cosmos/gogoproto v1.4.12 // indirect
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
||||
github.com/google/go-cmp v0.6.0 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
github.com/prometheus/client_golang v1.19.1 // indirect
|
||||
github.com/prometheus/client_model v0.6.1 // indirect
|
||||
github.com/prometheus/common v0.54.0 // indirect
|
||||
github.com/prometheus/procfs v0.12.0 // indirect
|
||||
github.com/rogpeppe/go-internal v1.12.0 // indirect
|
||||
github.com/spf13/cast v1.6.0 // indirect
|
||||
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect
|
||||
github.com/tidwall/btree v1.7.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect
|
||||
golang.org/x/net v0.25.0 // indirect
|
||||
golang.org/x/sys v0.20.0 // indirect
|
||||
@ -50,3 +25,8 @@ require (
|
||||
google.golang.org/protobuf v1.34.1 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
)
|
||||
|
||||
replace (
|
||||
cosmossdk.io/core => ../core
|
||||
cosmossdk.io/core/testing => ../core/testing
|
||||
)
|
||||
|
||||
@ -1,216 +1,39 @@
|
||||
cosmossdk.io/api v0.7.5 h1:eMPTReoNmGUm8DeiQL9DyM8sYDjEhWzL1+nLbI9DqtQ=
|
||||
cosmossdk.io/api v0.7.5/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38=
|
||||
cosmossdk.io/core v0.11.0 h1:vtIafqUi+1ZNAE/oxLOQQ7Oek2n4S48SWLG8h/+wdbo=
|
||||
cosmossdk.io/core v0.11.0/go.mod h1:LaTtayWBSoacF5xNzoF8tmLhehqlA9z1SWiPuNC6X1w=
|
||||
cosmossdk.io/depinject v1.0.0-alpha.4 h1:PLNp8ZYAMPTUKyG9IK2hsbciDWqna2z1Wsl98okJopc=
|
||||
cosmossdk.io/depinject v1.0.0-alpha.4/go.mod h1:HeDk7IkR5ckZ3lMGs/o91AVUc7E596vMaOmslGFM3yU=
|
||||
github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ=
|
||||
github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
|
||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
||||
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
|
||||
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
||||
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
||||
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||
github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4=
|
||||
github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU=
|
||||
github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8=
|
||||
github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw=
|
||||
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE=
|
||||
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs=
|
||||
github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4=
|
||||
github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E=
|
||||
github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30=
|
||||
github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg=
|
||||
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo=
|
||||
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ=
|
||||
github.com/cosmos/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAKs=
|
||||
github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA=
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA=
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec=
|
||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
|
||||
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||
github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
|
||||
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
|
||||
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
|
||||
github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps=
|
||||
github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY=
|
||||
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
|
||||
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
|
||||
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
|
||||
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
|
||||
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU=
|
||||
github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
|
||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE=
|
||||
github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY=
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg=
|
||||
github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
|
||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
||||
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/linxGnu/grocksdb v1.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ=
|
||||
github.com/linxGnu/grocksdb v1.8.14/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA=
|
||||
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
||||
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
|
||||
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
|
||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
|
||||
github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
|
||||
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
|
||||
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
|
||||
github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
|
||||
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
|
||||
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
|
||||
github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
|
||||
github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
|
||||
github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q=
|
||||
github.com/onsi/gomega v1.20.0/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
|
||||
github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
|
||||
github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
|
||||
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE=
|
||||
github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho=
|
||||
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
|
||||
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
|
||||
github.com/prometheus/common v0.54.0 h1:ZlZy0BgJhTwVZUn7dLOkwCZHUkrAqd3WYtcFCWnM1D8=
|
||||
github.com/prometheus/common v0.54.0/go.mod h1:/TQgMJP5CuVYveyT7n/0Ix8yLNNXy9yRSkhnLTHPDIQ=
|
||||
github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
|
||||
github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
|
||||
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
|
||||
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
|
||||
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
|
||||
github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0=
|
||||
github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
|
||||
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
||||
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs=
|
||||
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48=
|
||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
github.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI=
|
||||
github.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY=
|
||||
golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ=
|
||||
golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc=
|
||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
|
||||
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
|
||||
golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
|
||||
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
|
||||
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
|
||||
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
|
||||
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 h1:mxSlqyb8ZAHsYDCfiXN1EDdNTdvjUJSLY+OnAUtYNYA=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8/go.mod h1:I7Y+G38R2bu5j1aLzfFmQfTcU/WnFuqDwLZAbvKTKpM=
|
||||
google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY=
|
||||
google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
|
||||
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
|
||||
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
|
||||
google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU=
|
||||
gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=
|
||||
pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw=
|
||||
pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=
|
||||
|
||||
@ -8,6 +8,7 @@ import (
|
||||
"cosmossdk.io/collections"
|
||||
"cosmossdk.io/collections/colltest"
|
||||
"cosmossdk.io/collections/indexes"
|
||||
"cosmossdk.io/core/testing"
|
||||
)
|
||||
|
||||
type company struct {
|
||||
@ -44,7 +45,9 @@ func newTestIndexedMap(schema *collections.SchemaBuilder) *collections.IndexedMa
|
||||
}
|
||||
|
||||
func TestIndexedMap(t *testing.T) {
|
||||
sk, ctx := colltest.MockStore()
|
||||
ctx := coretesting.Context()
|
||||
sk := coretesting.KVStoreService(ctx, "test")
|
||||
|
||||
schema := collections.NewSchemaBuilder(sk)
|
||||
|
||||
im := newTestIndexedMap(schema)
|
||||
@ -122,7 +125,7 @@ func newInferIndex(schema *collections.SchemaBuilder) *inferIndex {
|
||||
}
|
||||
|
||||
func TestIndexedMapInfer(t *testing.T) {
|
||||
sk, _ := colltest.MockStore()
|
||||
sk := coretesting.KVStoreService(coretesting.Context(), "test")
|
||||
schema := collections.NewSchemaBuilder(sk)
|
||||
|
||||
_, err := collections.NewIndexedMapSafe(schema, collections.NewPrefix(0), "im", collections.StringKey, colltest.MockValueCodec[company](), newInferIndex(schema))
|
||||
|
||||
@ -3,50 +3,14 @@ package indexes
|
||||
import (
|
||||
"context"
|
||||
|
||||
db "github.com/cosmos/cosmos-db"
|
||||
|
||||
"cosmossdk.io/core/store"
|
||||
"cosmossdk.io/core/testing"
|
||||
)
|
||||
|
||||
// TODO remove this when we add testStore to core/store.
|
||||
|
||||
type testStore struct {
|
||||
db db.DB
|
||||
}
|
||||
|
||||
func (t testStore) OpenKVStore(ctx context.Context) store.KVStore {
|
||||
return t
|
||||
}
|
||||
|
||||
func (t testStore) Get(key []byte) ([]byte, error) {
|
||||
return t.db.Get(key)
|
||||
}
|
||||
|
||||
func (t testStore) Has(key []byte) (bool, error) {
|
||||
return t.db.Has(key)
|
||||
}
|
||||
|
||||
func (t testStore) Set(key, value []byte) error {
|
||||
return t.db.Set(key, value)
|
||||
}
|
||||
|
||||
func (t testStore) Delete(key []byte) error {
|
||||
return t.db.Delete(key)
|
||||
}
|
||||
|
||||
func (t testStore) Iterator(start, end []byte) (store.Iterator, error) {
|
||||
return t.db.Iterator(start, end)
|
||||
}
|
||||
|
||||
func (t testStore) ReverseIterator(start, end []byte) (store.Iterator, error) {
|
||||
return t.db.ReverseIterator(start, end)
|
||||
}
|
||||
|
||||
var _ store.KVStore = testStore{}
|
||||
|
||||
func deps() (store.KVStoreService, context.Context) {
|
||||
kv := db.NewMemDB()
|
||||
return &testStore{kv}, context.Background()
|
||||
ctx := coretesting.Context()
|
||||
kv := coretesting.KVStoreService(ctx, "test")
|
||||
return kv, ctx
|
||||
}
|
||||
|
||||
type company struct {
|
||||
|
||||
@ -6,11 +6,12 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"cosmossdk.io/collections"
|
||||
"cosmossdk.io/collections/colltest"
|
||||
"cosmossdk.io/core/testing"
|
||||
)
|
||||
|
||||
func TestLookupMap(t *testing.T) {
|
||||
sk, ctx := colltest.MockStore()
|
||||
ctx := coretesting.Context()
|
||||
sk := coretesting.KVStoreService(ctx, "test")
|
||||
schema := collections.NewSchemaBuilder(sk)
|
||||
|
||||
lm := collections.NewLookupMap(schema, collections.NewPrefix("hi"), "lm", collections.Uint64Key, collections.Uint64Value)
|
||||
|
||||
@ -7,6 +7,7 @@ import (
|
||||
|
||||
"cosmossdk.io/collections"
|
||||
"cosmossdk.io/collections/colltest"
|
||||
"cosmossdk.io/core/testing"
|
||||
)
|
||||
|
||||
func TestTriple(t *testing.T) {
|
||||
@ -18,7 +19,8 @@ func TestTriple(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestTripleRange(t *testing.T) {
|
||||
sk, ctx := colltest.MockStore()
|
||||
ctx := coretesting.Context()
|
||||
sk := coretesting.KVStoreService(ctx, "test")
|
||||
schema := collections.NewSchemaBuilder(sk)
|
||||
// this is a key composed of 3 parts: uint64, string, []byte
|
||||
kc := collections.TripleKeyCodec(collections.Uint64Key, collections.StringKey, collections.BytesKey)
|
||||
|
||||
38
core/testing/CHANGELOG.md
Normal file
38
core/testing/CHANGELOG.md
Normal file
@ -0,0 +1,38 @@
|
||||
<!--
|
||||
Guiding Principles:
|
||||
|
||||
Changelogs are for humans, not machines.
|
||||
There should be an entry for every single version.
|
||||
The same types of changes should be grouped.
|
||||
Versions and sections should be linkable.
|
||||
The latest version comes first.
|
||||
The release date of each version is displayed.
|
||||
Mention whether you follow Semantic Versioning.
|
||||
|
||||
Usage:
|
||||
|
||||
Change log entries are to be added to the Unreleased section under the
|
||||
appropriate stanza (see below). Each entry should ideally include a tag and
|
||||
the Github issue reference in the following format:
|
||||
|
||||
* (<tag>) \#<issue-number> message
|
||||
|
||||
The issue numbers will later be link-ified during the release process so you do
|
||||
not have to worry about including a link manually, but you can if you wish.
|
||||
|
||||
Types of changes (Stanzas):
|
||||
|
||||
"Features" for new features.
|
||||
"Improvements" for changes in existing functionality.
|
||||
"Deprecated" for soon-to-be removed features.
|
||||
"Bug Fixes" for any bug fixes.
|
||||
"Client Breaking" for breaking Protobuf, gRPC and REST routes used by end-users.
|
||||
"CLI Breaking" for breaking CLI commands.
|
||||
"API Breaking" for breaking exported APIs used by developers building on SDK.
|
||||
Ref: https://keepachangelog.com/en/1.0.0/
|
||||
-->
|
||||
|
||||
# Changelog
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
31
core/testing/context.go
Normal file
31
core/testing/context.go
Normal file
@ -0,0 +1,31 @@
|
||||
package coretesting
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"cosmossdk.io/core/store"
|
||||
)
|
||||
|
||||
type dummyKey struct{}
|
||||
|
||||
func Context() context.Context {
|
||||
dummy := &dummyCtx{
|
||||
stores: map[string]store.KVStore{},
|
||||
}
|
||||
|
||||
ctx := context.WithValue(context.Background(), dummyKey{}, dummy)
|
||||
return ctx
|
||||
}
|
||||
|
||||
type dummyCtx struct {
|
||||
stores map[string]store.KVStore
|
||||
}
|
||||
|
||||
func unwrap(ctx context.Context) *dummyCtx {
|
||||
dummy := ctx.Value(dummyKey{})
|
||||
if dummy == nil {
|
||||
panic("invalid ctx without dummy")
|
||||
}
|
||||
|
||||
return dummy.(*dummyCtx)
|
||||
}
|
||||
18
core/testing/go.mod
Normal file
18
core/testing/go.mod
Normal file
@ -0,0 +1,18 @@
|
||||
module cosmossdk.io/core/testing
|
||||
|
||||
go 1.20
|
||||
|
||||
replace cosmossdk.io/core => ../
|
||||
|
||||
require (
|
||||
cosmossdk.io/core v0.12.0
|
||||
github.com/stretchr/testify v1.9.0
|
||||
github.com/tidwall/btree v1.7.0
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
||||
github.com/kr/text v0.2.0 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
)
|
||||
17
core/testing/go.sum
Normal file
17
core/testing/go.sum
Normal file
@ -0,0 +1,17 @@
|
||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
|
||||
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
||||
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||
github.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI=
|
||||
github.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
254
core/testing/memdb.go
Normal file
254
core/testing/memdb.go
Normal file
@ -0,0 +1,254 @@
|
||||
package coretesting
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
|
||||
"github.com/tidwall/btree"
|
||||
|
||||
"cosmossdk.io/core/store"
|
||||
)
|
||||
|
||||
const (
|
||||
// The approximate number of items and children per B-tree node. Tuned with benchmarks.
|
||||
// copied from memdb.
|
||||
bTreeDegree = 32
|
||||
)
|
||||
|
||||
var errKeyEmpty = errors.New("key cannot be empty")
|
||||
|
||||
var _ store.KVStore = (*memDB)(nil)
|
||||
|
||||
// memDB a lightweight memory db
|
||||
type memDB struct {
|
||||
tree *btree.BTreeG[item]
|
||||
}
|
||||
|
||||
// newMemDB creates a wrapper around `btree.BTreeG`.
|
||||
func newMemDB() memDB {
|
||||
return memDB{
|
||||
tree: btree.NewBTreeGOptions(byKeys, btree.Options{
|
||||
Degree: bTreeDegree,
|
||||
NoLocks: true,
|
||||
}),
|
||||
}
|
||||
}
|
||||
|
||||
// set adds a new key-value pair to the change set's tree.
|
||||
func (bt memDB) set(key, value []byte) {
|
||||
bt.tree.Set(newItem(key, value))
|
||||
}
|
||||
|
||||
// get retrieves the value associated with the given key from the memDB's tree.
|
||||
func (bt memDB) get(key []byte) (value []byte, found bool) {
|
||||
it, found := bt.tree.Get(item{key: key})
|
||||
return it.value, found
|
||||
}
|
||||
|
||||
// delete removes the value associated with the given key from the change set.
|
||||
// If the key does not exist in the change set, this method does nothing.
|
||||
func (bt memDB) delete(key []byte) {
|
||||
bt.tree.Delete(item{key: key})
|
||||
}
|
||||
|
||||
// iterator returns a new iterator over the key-value pairs in the memDB
|
||||
// that have keys greater than or equal to the start key and less than the end key.
|
||||
func (bt memDB) iterator(start, end []byte) (store.Iterator, error) {
|
||||
if (start != nil && len(start) == 0) || (end != nil && len(end) == 0) {
|
||||
return nil, errKeyEmpty
|
||||
}
|
||||
return newMemIterator(start, end, bt.tree, true), nil
|
||||
}
|
||||
|
||||
// reverseIterator returns a new iterator that iterates over the key-value pairs in reverse order
|
||||
// within the specified range [start, end) in the memDB's tree.
|
||||
// If start or end is an empty byte slice, it returns an error indicating that the key is empty.
|
||||
func (bt memDB) reverseIterator(start, end []byte) (store.Iterator, error) {
|
||||
if (start != nil && len(start) == 0) || (end != nil && len(end) == 0) {
|
||||
return nil, errKeyEmpty
|
||||
}
|
||||
return newMemIterator(start, end, bt.tree, false), nil
|
||||
}
|
||||
|
||||
// KV impl
|
||||
|
||||
func (bt memDB) Get(key []byte) ([]byte, error) {
|
||||
value, _ := bt.get(key)
|
||||
return value, nil
|
||||
}
|
||||
|
||||
func (bt memDB) Has(key []byte) (bool, error) {
|
||||
_, found := bt.get(key)
|
||||
return found, nil
|
||||
}
|
||||
|
||||
func (bt memDB) Set(key, value []byte) error {
|
||||
bt.set(key, value)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (bt memDB) Delete(key []byte) error {
|
||||
bt.delete(key)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (bt memDB) Iterator(start, end []byte) (store.Iterator, error) {
|
||||
return bt.iterator(start, end)
|
||||
}
|
||||
|
||||
func (bt memDB) ReverseIterator(start, end []byte) (store.Iterator, error) {
|
||||
return bt.reverseIterator(start, end)
|
||||
}
|
||||
|
||||
// item is a btree item with byte slices as keys and values
|
||||
type item struct {
|
||||
key []byte
|
||||
value []byte
|
||||
}
|
||||
|
||||
// byKeys compares the items by key
|
||||
func byKeys(a, b item) bool {
|
||||
return bytes.Compare(a.key, b.key) == -1
|
||||
}
|
||||
|
||||
// newItem creates a new pair item.
|
||||
func newItem(key, value []byte) item {
|
||||
return item{key: key, value: value}
|
||||
}
|
||||
|
||||
// memIterator iterates over iterKVCache items.
|
||||
// if value is nil, means it was deleted.
|
||||
// Implements Iterator.
|
||||
type memIterator struct {
|
||||
iter btree.IterG[item]
|
||||
|
||||
start []byte
|
||||
end []byte
|
||||
ascending bool
|
||||
valid bool
|
||||
}
|
||||
|
||||
// newMemIterator creates a new memory iterator for a given range of keys in a B-tree.
|
||||
// The iterator starts at the specified start key and ends at the specified end key.
|
||||
// The `tree` parameter is the B-tree to iterate over.
|
||||
// The `ascending` parameter determines the direction of iteration.
|
||||
// If `ascending` is true, the iterator will iterate in ascending order.
|
||||
// If `ascending` is false, the iterator will iterate in descending order.
|
||||
// The returned iterator is positioned at the first key that is greater than or equal to the start key.
|
||||
// If the start key is nil, the iterator is positioned at the first key in the B-tree.
|
||||
// If the end key is nil, the iterator is positioned at the last key in the B-tree.
|
||||
// The iterator is inclusive of the start key and exclusive of the end key.
|
||||
// The `valid` field of the iterator indicates whether the iterator is positioned at a valid key.
|
||||
// The `start` and `end` fields of the iterator store the start and end keys respectively.
|
||||
func newMemIterator(start, end []byte, tree *btree.BTreeG[item], ascending bool) *memIterator {
|
||||
iter := tree.Iter()
|
||||
var valid bool
|
||||
if ascending {
|
||||
if start != nil {
|
||||
valid = iter.Seek(newItem(start, nil))
|
||||
} else {
|
||||
valid = iter.First()
|
||||
}
|
||||
} else {
|
||||
if end != nil {
|
||||
valid = iter.Seek(newItem(end, nil))
|
||||
if !valid {
|
||||
valid = iter.Last()
|
||||
} else {
|
||||
// end is exclusive
|
||||
valid = iter.Prev()
|
||||
}
|
||||
} else {
|
||||
valid = iter.Last()
|
||||
}
|
||||
}
|
||||
|
||||
mi := &memIterator{
|
||||
iter: iter,
|
||||
start: start,
|
||||
end: end,
|
||||
ascending: ascending,
|
||||
valid: valid,
|
||||
}
|
||||
|
||||
if mi.valid {
|
||||
mi.valid = mi.keyInRange(mi.Key())
|
||||
}
|
||||
|
||||
return mi
|
||||
}
|
||||
|
||||
// Domain returns the start and end keys of the iterator's domain.
|
||||
func (mi *memIterator) Domain() (start, end []byte) {
|
||||
return mi.start, mi.end
|
||||
}
|
||||
|
||||
// Close releases any resources held by the iterator.
|
||||
func (mi *memIterator) Close() error {
|
||||
mi.iter.Release()
|
||||
return nil
|
||||
}
|
||||
|
||||
var errInvalidIterator = errors.New("invalid iterator")
|
||||
|
||||
// Error returns the error state of the iterator.
|
||||
// If the iterator is not valid, it returns the errInvalidIterator error.
|
||||
// Otherwise, it returns nil.
|
||||
func (mi *memIterator) Error() error {
|
||||
if !mi.Valid() {
|
||||
return errInvalidIterator
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Valid returns whether the iterator is currently pointing to a valid entry.
|
||||
// It returns true if the iterator is valid, and false otherwise.
|
||||
func (mi *memIterator) Valid() bool {
|
||||
return mi.valid
|
||||
}
|
||||
|
||||
// Next advances the iterator to the next key-value pair.
|
||||
// If the iterator is in ascending order, it moves to the next key-value pair.
|
||||
// If the iterator is in descending order, it moves to the previous key-value pair.
|
||||
// It also checks if the new key-value pair is within the specified range.
|
||||
func (mi *memIterator) Next() {
|
||||
mi.assertValid()
|
||||
|
||||
if mi.ascending {
|
||||
mi.valid = mi.iter.Next()
|
||||
} else {
|
||||
mi.valid = mi.iter.Prev()
|
||||
}
|
||||
|
||||
if mi.valid {
|
||||
mi.valid = mi.keyInRange(mi.Key())
|
||||
}
|
||||
}
|
||||
|
||||
func (mi *memIterator) keyInRange(key []byte) bool {
|
||||
if mi.ascending && mi.end != nil && bytes.Compare(key, mi.end) >= 0 {
|
||||
return false
|
||||
}
|
||||
if !mi.ascending && mi.start != nil && bytes.Compare(key, mi.start) < 0 {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// Key returns the key of the current item in the iterator.
|
||||
func (mi *memIterator) Key() []byte {
|
||||
return mi.iter.Item().key
|
||||
}
|
||||
|
||||
// Value returns the value of the current item in the iterator.
|
||||
func (mi *memIterator) Value() []byte {
|
||||
return mi.iter.Item().value
|
||||
}
|
||||
|
||||
// assertValid checks if the memIterator is in a valid state.
|
||||
// If there is an error, it panics with the error message.
|
||||
func (mi *memIterator) assertValid() {
|
||||
if err := mi.Error(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
59
core/testing/memdb_test.go
Normal file
59
core/testing/memdb_test.go
Normal file
@ -0,0 +1,59 @@
|
||||
package coretesting
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"cosmossdk.io/core/store"
|
||||
)
|
||||
|
||||
func TestMemDB(t *testing.T) {
|
||||
var db store.KVStore = newMemDB()
|
||||
|
||||
key, value := []byte("key"), []byte("value")
|
||||
require.NoError(t, db.Set(key, value))
|
||||
val, err := db.Get(key)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, value, val)
|
||||
require.NoError(t, db.Delete(key))
|
||||
has, err := db.Has(key)
|
||||
require.NoError(t, err)
|
||||
require.False(t, has)
|
||||
|
||||
// test iter
|
||||
makeKey := func(i int) []byte {
|
||||
return []byte(fmt.Sprintf("key_%d", i))
|
||||
}
|
||||
for i := 0; i < 10; i++ {
|
||||
require.NoError(t, db.Set(makeKey(i), makeKey(i)))
|
||||
}
|
||||
|
||||
iter, err := db.Iterator(nil, nil)
|
||||
require.NoError(t, err)
|
||||
key = iter.Key()
|
||||
value = iter.Value()
|
||||
require.Equal(t, makeKey(0), key)
|
||||
require.Equal(t, makeKey(0), value)
|
||||
require.NoError(t, iter.Error())
|
||||
iter.Next()
|
||||
key, value = iter.Key(), iter.Value()
|
||||
require.Equal(t, makeKey(1), key)
|
||||
require.Equal(t, makeKey(1), value)
|
||||
require.NoError(t, iter.Close())
|
||||
|
||||
// test reverse iter
|
||||
iter, err = db.ReverseIterator(nil, nil)
|
||||
require.NoError(t, err)
|
||||
key = iter.Key()
|
||||
value = iter.Value()
|
||||
require.Equal(t, makeKey(9), key)
|
||||
require.Equal(t, makeKey(9), value)
|
||||
require.NoError(t, iter.Error())
|
||||
iter.Next()
|
||||
key, value = iter.Key(), iter.Value()
|
||||
require.Equal(t, makeKey(8), key)
|
||||
require.Equal(t, makeKey(8), value)
|
||||
require.NoError(t, iter.Close())
|
||||
}
|
||||
35
core/testing/services_test.go
Normal file
35
core/testing/services_test.go
Normal file
@ -0,0 +1,35 @@
|
||||
package coretesting
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestKVStoreService(t *testing.T) {
|
||||
ctx := Context()
|
||||
svc1 := KVStoreService(ctx, "bank")
|
||||
|
||||
// must panic
|
||||
t.Run("must panic on invalid ctx", func(t *testing.T) {
|
||||
require.Panics(t, func() {
|
||||
svc1.OpenKVStore(context.Background())
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("success", func(t *testing.T) {
|
||||
kv := svc1.OpenKVStore(ctx)
|
||||
require.NoError(t, kv.Set([]byte("key"), []byte("value")))
|
||||
|
||||
value, err := kv.Get([]byte("key"))
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, []byte("value"), value)
|
||||
})
|
||||
|
||||
t.Run("contains module name", func(t *testing.T) {
|
||||
KVStoreService(ctx, "auth")
|
||||
_, ok := unwrap(ctx).stores["auth"]
|
||||
require.True(t, ok)
|
||||
})
|
||||
}
|
||||
16
core/testing/sonar-project.properties
Normal file
16
core/testing/sonar-project.properties
Normal file
@ -0,0 +1,16 @@
|
||||
sonar.projectKey=cosmos-sdk-core-testing
|
||||
sonar.organization=cosmos
|
||||
|
||||
sonar.projectName=Cosmos SDK - Core Testing
|
||||
sonar.project.monorepo.enabled=true
|
||||
|
||||
sonar.sources=.
|
||||
sonar.exclusions=**/*_test.go,**/*.pb.go,**/*.pulsar.go,**/*.pb.gw.go
|
||||
sonar.coverage.exclusions=**/*_test.go,**/testutil/**,**/*.pb.go,**/*.pb.gw.go,**/*.pulsar.go,test_helpers.go,docs/**
|
||||
sonar.tests=.
|
||||
sonar.test.inclusions=**/*_test.go
|
||||
sonar.go.coverage.reportPaths=coverage.out
|
||||
|
||||
sonar.sourceEncoding=UTF-8
|
||||
sonar.scm.provider=git
|
||||
sonar.scm.forceReloadAll=true
|
||||
27
core/testing/store.go
Normal file
27
core/testing/store.go
Normal file
@ -0,0 +1,27 @@
|
||||
package coretesting
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"cosmossdk.io/core/store"
|
||||
)
|
||||
|
||||
func KVStoreService(ctx context.Context, moduleName string) store.KVStoreService {
|
||||
unwrap(ctx).stores[moduleName] = newMemDB()
|
||||
return kvStoreService{
|
||||
moduleName: moduleName,
|
||||
}
|
||||
}
|
||||
|
||||
type kvStoreService struct {
|
||||
moduleName string
|
||||
}
|
||||
|
||||
func (k kvStoreService) OpenKVStore(ctx context.Context) store.KVStore {
|
||||
kv, ok := unwrap(ctx).stores[k.moduleName]
|
||||
if !ok {
|
||||
panic(fmt.Sprintf("KVStoreService %s not found", k.moduleName))
|
||||
}
|
||||
return kv
|
||||
}
|
||||
2
go.mod
2
go.mod
@ -6,6 +6,7 @@ require (
|
||||
cosmossdk.io/api v0.7.5
|
||||
cosmossdk.io/collections v0.4.0
|
||||
cosmossdk.io/core v0.12.1-0.20231114100755-569e3ff6a0d7
|
||||
cosmossdk.io/core/testing v0.0.0-00010101000000-000000000000
|
||||
cosmossdk.io/depinject v1.0.0-alpha.4
|
||||
cosmossdk.io/errors v1.0.1
|
||||
cosmossdk.io/log v1.3.1
|
||||
@ -186,6 +187,7 @@ replace (
|
||||
cosmossdk.io/api => ./api
|
||||
cosmossdk.io/collections => ./collections
|
||||
cosmossdk.io/core => ./core
|
||||
cosmossdk.io/core/testing => ./core/testing
|
||||
cosmossdk.io/depinject => ./depinject
|
||||
cosmossdk.io/log => ./log
|
||||
cosmossdk.io/store => ./store
|
||||
|
||||
@ -6,6 +6,7 @@ use (
|
||||
./client/v2
|
||||
./collections
|
||||
./core
|
||||
./core/testing
|
||||
./depinject
|
||||
./errors
|
||||
./log
|
||||
|
||||
@ -5,6 +5,7 @@ go 1.22.2
|
||||
replace (
|
||||
cosmossdk.io/api => ../../../api
|
||||
cosmossdk.io/core => ../../../core
|
||||
cosmossdk.io/core/testing => ../../../core/testing
|
||||
cosmossdk.io/depinject => ../../../depinject
|
||||
cosmossdk.io/server/v2 => ../
|
||||
cosmossdk.io/server/v2/appmanager => ../appmanager
|
||||
|
||||
@ -58,6 +58,7 @@ require (
|
||||
cloud.google.com/go/compute/metadata v0.3.0 // indirect
|
||||
cloud.google.com/go/iam v1.1.7 // indirect
|
||||
cloud.google.com/go/storage v1.40.0 // indirect
|
||||
cosmossdk.io/core/testing v0.0.0-00010101000000-000000000000 // indirect
|
||||
cosmossdk.io/errors v1.0.1 // indirect
|
||||
filippo.io/edwards25519 v1.1.0 // indirect
|
||||
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
|
||||
@ -241,6 +242,7 @@ replace (
|
||||
cosmossdk.io/client/v2 => ../client/v2
|
||||
cosmossdk.io/collections => ../collections
|
||||
cosmossdk.io/core => ../core
|
||||
cosmossdk.io/core/testing => ../core/testing
|
||||
cosmossdk.io/depinject => ../depinject
|
||||
cosmossdk.io/log => ../log
|
||||
cosmossdk.io/store => ../store
|
||||
|
||||
@ -63,6 +63,7 @@ require (
|
||||
cloud.google.com/go/iam v1.1.7 // indirect
|
||||
cloud.google.com/go/storage v1.40.0 // indirect
|
||||
cosmossdk.io/client/v2 v2.0.0-20230630094428-02b760776860 // indirect
|
||||
cosmossdk.io/core/testing v0.0.0-00010101000000-000000000000 // indirect
|
||||
cosmossdk.io/x/circuit v0.0.0-20230613133644-0a778132a60f // indirect
|
||||
cosmossdk.io/x/epochs v0.0.0-00010101000000-000000000000 // indirect
|
||||
filippo.io/edwards25519 v1.1.0 // indirect
|
||||
@ -236,6 +237,7 @@ replace (
|
||||
cosmossdk.io/client/v2 => ../client/v2
|
||||
cosmossdk.io/collections => ../collections
|
||||
cosmossdk.io/core => ../core
|
||||
cosmossdk.io/core/testing => ../core/testing
|
||||
cosmossdk.io/depinject => ../depinject
|
||||
cosmossdk.io/log => ../log
|
||||
cosmossdk.io/x/accounts => ../x/accounts
|
||||
|
||||
@ -6,13 +6,14 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"cosmossdk.io/collections"
|
||||
"cosmossdk.io/collections/colltest"
|
||||
"cosmossdk.io/core/testing"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/types/kv"
|
||||
)
|
||||
|
||||
func TestNewStoreDecoderFuncFromCollectionsSchema(t *testing.T) {
|
||||
store, _ := colltest.MockStore()
|
||||
ctx := coretesting.Context()
|
||||
store := coretesting.KVStoreService(ctx, "test")
|
||||
sb := collections.NewSchemaBuilder(store)
|
||||
|
||||
prefixM1 := collections.NewPrefix("map_1")
|
||||
|
||||
@ -3,8 +3,8 @@ package accountstd
|
||||
import (
|
||||
"context"
|
||||
|
||||
"cosmossdk.io/collections/colltest"
|
||||
"cosmossdk.io/core/store"
|
||||
"cosmossdk.io/core/testing"
|
||||
"cosmossdk.io/x/accounts/internal/implementation"
|
||||
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
@ -19,7 +19,8 @@ func NewMockContext(
|
||||
moduleExecUntyped implementation.ModuleExecUntypedFunc,
|
||||
moduleQuery implementation.ModuleQueryFunc,
|
||||
) (context.Context, store.KVStoreService) {
|
||||
ss, ctx := colltest.MockStore()
|
||||
ctx := coretesting.Context()
|
||||
ss := coretesting.KVStoreService(ctx, "test")
|
||||
|
||||
return implementation.MakeAccountContext(
|
||||
ctx, ss, accNumber, accountAddr, sender, funds, moduleExec, moduleExecUntyped, moduleQuery,
|
||||
|
||||
@ -17,6 +17,7 @@ require cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000 // indirect
|
||||
|
||||
require (
|
||||
buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.34.1-20240312114316-c0d3497e35d6.1 // indirect
|
||||
cosmossdk.io/core/testing v0.0.0-00010101000000-000000000000 // indirect
|
||||
cosmossdk.io/depinject v1.0.0-alpha.4 // indirect
|
||||
github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect
|
||||
github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e // indirect
|
||||
@ -172,6 +173,7 @@ replace (
|
||||
cosmossdk.io/api => ../../../../api
|
||||
cosmossdk.io/collections => ../../../../collections // TODO tag new collections ASAP
|
||||
cosmossdk.io/core => ../../../../core
|
||||
cosmossdk.io/core/testing => ../../../../core/testing
|
||||
cosmossdk.io/depinject => ../../../../depinject
|
||||
cosmossdk.io/log => ../../../../log
|
||||
cosmossdk.io/x/accounts => ../../.
|
||||
|
||||
@ -6,26 +6,26 @@ import (
|
||||
"github.com/cosmos/gogoproto/types"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"cosmossdk.io/collections/colltest"
|
||||
"cosmossdk.io/x/accounts/internal/implementation"
|
||||
v1 "cosmossdk.io/x/accounts/v1"
|
||||
)
|
||||
|
||||
func TestGenesis(t *testing.T) {
|
||||
const testAccountType = "test"
|
||||
k, ctx := newKeeper(t, func(deps implementation.Dependencies) (string, implementation.Account, error) {
|
||||
acc, err := NewTestAccount(deps)
|
||||
return "test", acc, err
|
||||
return testAccountType, acc, err
|
||||
})
|
||||
// we init two accounts of the same type
|
||||
|
||||
// we set counter to 10
|
||||
_, addr1, err := k.Init(ctx, "test", []byte("sender"), &types.Empty{}, nil)
|
||||
_, addr1, err := k.Init(ctx, testAccountType, []byte("sender"), &types.Empty{}, nil)
|
||||
require.NoError(t, err)
|
||||
_, err = k.Execute(ctx, addr1, []byte("sender"), &types.UInt64Value{Value: 10}, nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
// we set counter to 20
|
||||
_, addr2, err := k.Init(ctx, "test", []byte("sender"), &types.Empty{}, nil)
|
||||
_, addr2, err := k.Init(ctx, testAccountType, []byte("sender"), &types.Empty{}, nil)
|
||||
require.NoError(t, err)
|
||||
_, err = k.Execute(ctx, addr2, []byte("sender"), &types.UInt64Value{Value: 20}, nil)
|
||||
require.NoError(t, err)
|
||||
@ -35,7 +35,10 @@ func TestGenesis(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
// reset state
|
||||
_, ctx = colltest.MockStore()
|
||||
k, ctx = newKeeper(t, func(deps implementation.Dependencies) (string, implementation.Account, error) {
|
||||
acc, err := NewTestAccount(deps)
|
||||
return testAccountType, acc, err
|
||||
})
|
||||
err = k.ImportState(ctx, state)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
||||
@ -6,6 +6,7 @@ require (
|
||||
cosmossdk.io/api v0.7.5
|
||||
cosmossdk.io/collections v0.4.0
|
||||
cosmossdk.io/core v0.12.1-0.20231114100755-569e3ff6a0d7
|
||||
cosmossdk.io/core/testing v0.0.0-00010101000000-000000000000
|
||||
cosmossdk.io/depinject v1.0.0-alpha.4
|
||||
cosmossdk.io/x/tx v0.13.3
|
||||
github.com/cosmos/cosmos-sdk v0.51.0
|
||||
@ -174,6 +175,7 @@ replace (
|
||||
cosmossdk.io/api => ../../api
|
||||
cosmossdk.io/collections => ../../collections
|
||||
cosmossdk.io/core => ../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ../../depinject
|
||||
cosmossdk.io/log => ../../log
|
||||
cosmossdk.io/x/auth => ../auth
|
||||
|
||||
@ -9,11 +9,12 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"cosmossdk.io/collections"
|
||||
"cosmossdk.io/collections/colltest"
|
||||
"cosmossdk.io/core/testing"
|
||||
)
|
||||
|
||||
func TestMakeAccountContext(t *testing.T) {
|
||||
storeService, originalContext := colltest.MockStore()
|
||||
originalContext := coretesting.Context()
|
||||
storeService := coretesting.KVStoreService(originalContext, "test")
|
||||
accountAddr := []byte("accountAddr")
|
||||
sender := []byte("sender")
|
||||
sb := collections.NewSchemaBuilderFromAccessor(openKVStore)
|
||||
|
||||
@ -11,10 +11,10 @@ import (
|
||||
|
||||
bankv1beta1 "cosmossdk.io/api/cosmos/bank/v1beta1"
|
||||
basev1beta1 "cosmossdk.io/api/cosmos/base/v1beta1"
|
||||
"cosmossdk.io/collections/colltest"
|
||||
"cosmossdk.io/core/address"
|
||||
"cosmossdk.io/core/event"
|
||||
"cosmossdk.io/core/log"
|
||||
"cosmossdk.io/core/testing"
|
||||
coretransaction "cosmossdk.io/core/transaction"
|
||||
"cosmossdk.io/x/accounts/internal/implementation"
|
||||
"cosmossdk.io/x/tx/signing"
|
||||
@ -73,7 +73,8 @@ func newKeeper(t *testing.T, accounts ...implementation.AccountCreatorFunc) (Kee
|
||||
queryRouter.RegisterService(&bankv1beta1.Query_ServiceDesc, &bankQueryServer{})
|
||||
msgRouter.RegisterService(&bankv1beta1.Msg_ServiceDesc, &bankMsgServer{})
|
||||
|
||||
ss, ctx := colltest.MockStore()
|
||||
ctx := coretesting.Context()
|
||||
ss := coretesting.KVStoreService(ctx, "test")
|
||||
env := runtime.NewEnvironment(ss, log.NewNopLogger(), runtime.EnvWithQueryRouterService(queryRouter), runtime.EnvWithMsgRouterService(msgRouter))
|
||||
env.EventService = eventService{}
|
||||
m, err := NewKeeper(codec.NewProtoCodec(ir), env, addressCodec, ir, accounts...)
|
||||
|
||||
@ -6,6 +6,7 @@ require (
|
||||
cosmossdk.io/api v0.7.5
|
||||
cosmossdk.io/collections v0.4.0
|
||||
cosmossdk.io/core v0.12.1-0.20231114100755-569e3ff6a0d7
|
||||
cosmossdk.io/core/testing v0.0.0-00010101000000-000000000000
|
||||
cosmossdk.io/depinject v1.0.0-alpha.4
|
||||
cosmossdk.io/errors v1.0.1
|
||||
cosmossdk.io/math v1.3.0
|
||||
@ -175,6 +176,7 @@ replace (
|
||||
cosmossdk.io/api => ../../api
|
||||
cosmossdk.io/collections => ../../collections
|
||||
cosmossdk.io/core => ../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ../../depinject
|
||||
cosmossdk.io/log => ../../log
|
||||
cosmossdk.io/x/accounts => ../accounts
|
||||
|
||||
@ -7,11 +7,12 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"cosmossdk.io/collections"
|
||||
"cosmossdk.io/collections/colltest"
|
||||
"cosmossdk.io/core/testing"
|
||||
)
|
||||
|
||||
func TestMigrate(t *testing.T) {
|
||||
kv, ctx := colltest.MockStore()
|
||||
ctx := coretesting.Context()
|
||||
kv := coretesting.KVStoreService(ctx, "test")
|
||||
sb := collections.NewSchemaBuilder(kv)
|
||||
seq := collections.NewSequence(sb, collections.NewPrefix(0), "seq")
|
||||
|
||||
@ -33,7 +34,8 @@ func TestMigrate(t *testing.T) {
|
||||
require.Equal(t, wantValue, gotValue)
|
||||
|
||||
// case the global account number was not set
|
||||
ctx = kv.NewStoreContext() // this resets the store to zero
|
||||
ctx = coretesting.Context()
|
||||
kv = coretesting.KVStoreService(ctx, "test")
|
||||
wantValue = collections.DefaultSequenceStart
|
||||
|
||||
err = Migrate(ctx, kv, seq)
|
||||
|
||||
@ -169,6 +169,8 @@ require (
|
||||
sigs.k8s.io/yaml v1.4.0 // indirect
|
||||
)
|
||||
|
||||
require cosmossdk.io/core/testing v0.0.0-00010101000000-000000000000 // indirect
|
||||
|
||||
replace github.com/cosmos/cosmos-sdk => ../../.
|
||||
|
||||
// TODO remove post spinning out all modules
|
||||
@ -176,6 +178,7 @@ replace (
|
||||
cosmossdk.io/api => ../../api
|
||||
cosmossdk.io/collections => ../../collections
|
||||
cosmossdk.io/core => ../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ../../depinject
|
||||
cosmossdk.io/log => ../../log
|
||||
cosmossdk.io/x/accounts => ../accounts
|
||||
|
||||
@ -168,6 +168,8 @@ require (
|
||||
sigs.k8s.io/yaml v1.4.0 // indirect
|
||||
)
|
||||
|
||||
require cosmossdk.io/core/testing v0.0.0-00010101000000-000000000000 // indirect
|
||||
|
||||
replace github.com/cosmos/cosmos-sdk => ../../.
|
||||
|
||||
// TODO remove post spinning out all modules
|
||||
@ -175,6 +177,7 @@ replace (
|
||||
cosmossdk.io/api => ../../api
|
||||
cosmossdk.io/collections => ../../collections
|
||||
cosmossdk.io/core => ../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ../../depinject
|
||||
cosmossdk.io/log => ../../log
|
||||
cosmossdk.io/x/accounts => ../accounts
|
||||
|
||||
@ -174,6 +174,7 @@ replace github.com/cosmos/cosmos-sdk => ../../.
|
||||
replace (
|
||||
cosmossdk.io/api => ../../api
|
||||
cosmossdk.io/core => ../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ../../depinject
|
||||
cosmossdk.io/log => ../../log
|
||||
cosmossdk.io/x/accounts => ../accounts
|
||||
|
||||
@ -172,10 +172,12 @@ replace github.com/cosmos/cosmos-sdk => ../../.
|
||||
replace (
|
||||
cosmossdk.io/api => ../../api
|
||||
cosmossdk.io/core => ../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ../../depinject
|
||||
cosmossdk.io/log => ../../log
|
||||
cosmossdk.io/x/accounts => ../accounts
|
||||
cosmossdk.io/x/auth => ../auth
|
||||
cosmossdk.io/x/bank => ../bank
|
||||
cosmossdk.io/x/staking => ../staking
|
||||
cosmossdk.io/x/tx => ../tx
|
||||
)
|
||||
|
||||
@ -14,8 +14,6 @@ cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc h1:R9O9d75e0qZYUsVV0zzi+
|
||||
cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc/go.mod h1:amTTatOUV3u1PsKmNb87z6/galCxrRbz9kRdJkL0DyU=
|
||||
cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20240417181816-5e7aae0db1f5 h1:eb0kcGyaYHSS0do7+MIWg7UKlskSH01biRNENbm/zDA=
|
||||
cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20240417181816-5e7aae0db1f5/go.mod h1:drzY4oVisyWvSgpsM7ccQ7IX3efMuVIvd9Eij1Gm/6o=
|
||||
cosmossdk.io/x/tx v0.13.3 h1:Ha4mNaHmxBc6RMun9aKuqul8yHiL78EKJQ8g23Zf73g=
|
||||
cosmossdk.io/x/tx v0.13.3/go.mod h1:I8xaHv0rhUdIvIdptKIqzYy27+n2+zBVaxO6fscFhys=
|
||||
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
|
||||
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
|
||||
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs=
|
||||
|
||||
@ -179,6 +179,7 @@ replace (
|
||||
cosmossdk.io/api => ../../api
|
||||
cosmossdk.io/collections => ../../collections
|
||||
cosmossdk.io/core => ../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ../../depinject
|
||||
cosmossdk.io/log => ../../log
|
||||
cosmossdk.io/x/accounts => ../accounts
|
||||
|
||||
@ -176,6 +176,7 @@ replace github.com/cosmos/cosmos-sdk => ../../.
|
||||
replace (
|
||||
cosmossdk.io/api => ../../api
|
||||
cosmossdk.io/core => ../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ../../depinject
|
||||
cosmossdk.io/log => ../../log
|
||||
cosmossdk.io/x/accounts => ../accounts
|
||||
|
||||
@ -174,6 +174,7 @@ replace github.com/cosmos/cosmos-sdk => ../../.
|
||||
replace (
|
||||
cosmossdk.io/api => ../../api
|
||||
cosmossdk.io/core => ../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ../../depinject
|
||||
cosmossdk.io/log => ../../log
|
||||
cosmossdk.io/x/accounts => ../accounts
|
||||
|
||||
@ -173,6 +173,8 @@ require (
|
||||
sigs.k8s.io/yaml v1.4.0 // indirect
|
||||
)
|
||||
|
||||
require cosmossdk.io/core/testing v0.0.0-00010101000000-000000000000 // indirect
|
||||
|
||||
replace github.com/cosmos/cosmos-sdk => ../../.
|
||||
|
||||
// TODO remove post spinning out all modules
|
||||
@ -180,6 +182,7 @@ replace (
|
||||
cosmossdk.io/api => ../../api
|
||||
cosmossdk.io/collections => ../../collections
|
||||
cosmossdk.io/core => ../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ../../depinject
|
||||
cosmossdk.io/log => ../../log
|
||||
cosmossdk.io/x/accounts => ../accounts
|
||||
|
||||
@ -172,6 +172,8 @@ require (
|
||||
sigs.k8s.io/yaml v1.4.0 // indirect
|
||||
)
|
||||
|
||||
require cosmossdk.io/core/testing v0.0.0-00010101000000-000000000000 // indirect
|
||||
|
||||
replace github.com/cosmos/cosmos-sdk => ../../.
|
||||
|
||||
// TODO remove post spinning out all modules
|
||||
@ -179,6 +181,7 @@ replace (
|
||||
cosmossdk.io/api => ../../api
|
||||
cosmossdk.io/collections => ../../collections
|
||||
cosmossdk.io/core => ../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ../../depinject
|
||||
cosmossdk.io/log => ../../log
|
||||
cosmossdk.io/x/accounts => ../accounts
|
||||
|
||||
@ -41,6 +41,7 @@ require (
|
||||
buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.34.1-20240312114316-c0d3497e35d6.1 // indirect
|
||||
buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.34.1-20240130113600-88ef6483f90f.1 // indirect
|
||||
cosmossdk.io/collections v0.4.0 // indirect
|
||||
cosmossdk.io/core/testing v0.0.0-00010101000000-000000000000 // indirect
|
||||
cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20240417181816-5e7aae0db1f5 // indirect
|
||||
cosmossdk.io/x/tx v0.13.3 // indirect
|
||||
filippo.io/edwards25519 v1.1.0 // indirect
|
||||
@ -182,6 +183,7 @@ replace (
|
||||
cosmossdk.io/api => ../../api
|
||||
cosmossdk.io/collections => ../../collections
|
||||
cosmossdk.io/core => ../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ../../depinject
|
||||
cosmossdk.io/log => ../../log
|
||||
cosmossdk.io/x/accounts => ../accounts
|
||||
|
||||
@ -177,6 +177,7 @@ replace github.com/cosmos/cosmos-sdk => ../../.
|
||||
replace (
|
||||
cosmossdk.io/api => ../../api
|
||||
cosmossdk.io/core => ../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ../../depinject
|
||||
cosmossdk.io/log => ../../log
|
||||
cosmossdk.io/x/accounts => ../accounts
|
||||
|
||||
@ -174,6 +174,7 @@ replace github.com/cosmos/cosmos-sdk => ../../.
|
||||
replace (
|
||||
cosmossdk.io/api => ../../api
|
||||
cosmossdk.io/core => ../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ../../depinject
|
||||
cosmossdk.io/log => ../../log
|
||||
cosmossdk.io/x/accounts => ../accounts
|
||||
|
||||
@ -175,6 +175,7 @@ replace github.com/cosmos/cosmos-sdk => ../..
|
||||
replace (
|
||||
cosmossdk.io/api => ../../api
|
||||
cosmossdk.io/core => ../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ../../depinject
|
||||
cosmossdk.io/log => ../../log
|
||||
cosmossdk.io/x/accounts => ../accounts
|
||||
|
||||
@ -174,6 +174,7 @@ replace github.com/cosmos/cosmos-sdk => ../../.
|
||||
replace (
|
||||
cosmossdk.io/api => ../../api
|
||||
cosmossdk.io/core => ../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ../../depinject
|
||||
cosmossdk.io/log => ../../log
|
||||
cosmossdk.io/x/accounts => ../accounts
|
||||
|
||||
@ -175,6 +175,7 @@ replace github.com/cosmos/cosmos-sdk => ../../.
|
||||
replace (
|
||||
cosmossdk.io/api => ../../api
|
||||
cosmossdk.io/core => ../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ../../depinject
|
||||
cosmossdk.io/log => ../../log
|
||||
cosmossdk.io/x/accounts => ../accounts
|
||||
|
||||
@ -171,6 +171,8 @@ require (
|
||||
go.opencensus.io v0.24.0 // indirect
|
||||
)
|
||||
|
||||
require cosmossdk.io/core/testing v0.0.0-00010101000000-000000000000 // indirect
|
||||
|
||||
replace github.com/cosmos/cosmos-sdk => ../../.
|
||||
|
||||
// TODO remove post spinning out all modules
|
||||
@ -178,6 +180,7 @@ replace (
|
||||
cosmossdk.io/api => ../../api
|
||||
cosmossdk.io/collections => ../../collections
|
||||
cosmossdk.io/core => ../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ../../depinject
|
||||
cosmossdk.io/log => ../../log
|
||||
cosmossdk.io/x/accounts => ../accounts
|
||||
|
||||
@ -205,6 +205,7 @@ replace github.com/cosmos/cosmos-sdk => ../../.
|
||||
replace (
|
||||
cosmossdk.io/api => ../../api
|
||||
cosmossdk.io/core => ../../core
|
||||
cosmossdk.io/core/testing => ../../core/testing
|
||||
cosmossdk.io/depinject => ../../depinject
|
||||
cosmossdk.io/log => ../../log
|
||||
cosmossdk.io/x/accounts => ../accounts
|
||||
|
||||
Loading…
Reference in New Issue
Block a user