subspace query tests, changelog
This commit is contained in:
parent
d464779d34
commit
1d82cdbbbc
|
@ -28,6 +28,8 @@ FEATURES:
|
||||||
* New genesis account keys are automatically added to the client keybase (introduce `--client-home` flag)
|
* New genesis account keys are automatically added to the client keybase (introduce `--client-home` flag)
|
||||||
* Initialize with genesis txs using `--gen-txs` flag
|
* Initialize with genesis txs using `--gen-txs` flag
|
||||||
* Context now has access to the application-configured logger
|
* Context now has access to the application-configured logger
|
||||||
|
* Add (non-proof) subspace query helper functions
|
||||||
|
* Add more staking query functions: candidates, delegator-bonds
|
||||||
|
|
||||||
BUG FIXES
|
BUG FIXES
|
||||||
* Gaia now uses stake, ported from github.com/cosmos/gaia
|
* Gaia now uses stake, ported from github.com/cosmos/gaia
|
||||||
|
|
|
@ -263,43 +263,63 @@ func TestIAVLStoreQuery(t *testing.T) {
|
||||||
tree := iavl.NewVersionedTree(db, cacheSize)
|
tree := iavl.NewVersionedTree(db, cacheSize)
|
||||||
iavlStore := newIAVLStore(tree, numHistory)
|
iavlStore := newIAVLStore(tree, numHistory)
|
||||||
|
|
||||||
k, v := []byte("wind"), []byte("blows")
|
k1, v1 := []byte("aaa"), []byte("val1")
|
||||||
k2, v2 := []byte("water"), []byte("flows")
|
k2, v2 := []byte("bbb"), []byte("val2")
|
||||||
v3 := []byte("is cold")
|
v3 := []byte("val3")
|
||||||
// k3, v3 := []byte("earth"), []byte("soes")
|
|
||||||
// k4, v4 := []byte("fire"), []byte("woes")
|
ksub = []byte("w")
|
||||||
|
KVs1, KVs2 := []KV{v1, v2}, []KV{v3, v2}
|
||||||
|
valExpSub1 := cdc.MustMarshalBinary(KVs1)
|
||||||
|
valExpSub2 := cdc.MustMarshalBinary(KVs2)
|
||||||
|
|
||||||
cid := iavlStore.Commit()
|
cid := iavlStore.Commit()
|
||||||
ver := cid.Version
|
ver := cid.Version
|
||||||
query := abci.RequestQuery{Path: "/key", Data: k, Height: ver}
|
query := abci.RequestQuery{Path: "/key", Data: k1, Height: ver}
|
||||||
|
querySub := abci.RequestQuery{Path: "/subspace", Data: ksub, Height: ver}
|
||||||
|
|
||||||
// set data without commit, doesn't show up
|
// set data without commit, doesn't show up
|
||||||
iavlStore.Set(k, v)
|
iavlStore.Set(k1, v1)
|
||||||
qres := iavlStore.Query(query)
|
qres := iavlStore.Query(query)
|
||||||
assert.Equal(t, uint32(sdk.CodeOK), qres.Code)
|
assert.Equal(t, uint32(sdk.CodeOK), qres.Code)
|
||||||
assert.Nil(t, qres.Value)
|
assert.Nil(t, qres.Value)
|
||||||
|
qres = iavlStore.Query(querySub)
|
||||||
|
assert.Equal(t, uint32(sdk.CodeOK), qres.Code)
|
||||||
|
assert.Nil(t, qres.Value)
|
||||||
|
|
||||||
// commit it, but still don't see on old version
|
// commit it, but still don't see on old version
|
||||||
cid = iavlStore.Commit()
|
cid = iavlStore.Commit()
|
||||||
qres = iavlStore.Query(query)
|
qres = iavlStore.Query(query)
|
||||||
assert.Equal(t, uint32(sdk.CodeOK), qres.Code)
|
assert.Equal(t, uint32(sdk.CodeOK), qres.Code)
|
||||||
assert.Nil(t, qres.Value)
|
assert.Nil(t, qres.Value)
|
||||||
|
qres = iavlStore.Query(querySub)
|
||||||
|
assert.Equal(t, uint32(sdk.CodeOK), qres.Code)
|
||||||
|
assert.Nil(t, qres.Value)
|
||||||
|
|
||||||
// but yes on the new version
|
// but yes on the new version
|
||||||
query.Height = cid.Version
|
query.Height = cid.Version
|
||||||
qres = iavlStore.Query(query)
|
qres = iavlStore.Query(query)
|
||||||
assert.Equal(t, uint32(sdk.CodeOK), qres.Code)
|
assert.Equal(t, uint32(sdk.CodeOK), qres.Code)
|
||||||
assert.Equal(t, v, qres.Value)
|
assert.Equal(t, v1, qres.Value)
|
||||||
|
|
||||||
|
// and for the subspace
|
||||||
|
qres = iavlStore.Query(querySub)
|
||||||
|
assert.Equal(t, uint32(sdk.CodeOK), qres.Code)
|
||||||
|
assert.Equal(t, valExpSub1, qres.Value)
|
||||||
|
|
||||||
// modify
|
// modify
|
||||||
iavlStore.Set(k2, v2)
|
iavlStore.Set(k2, v2)
|
||||||
iavlStore.Set(k, v3)
|
iavlStore.Set(k1, v3)
|
||||||
cid = iavlStore.Commit()
|
cid = iavlStore.Commit()
|
||||||
|
|
||||||
// query will return old values, as height is fixed
|
// query will return old values, as height is fixed
|
||||||
qres = iavlStore.Query(query)
|
qres = iavlStore.Query(query)
|
||||||
assert.Equal(t, uint32(sdk.CodeOK), qres.Code)
|
assert.Equal(t, uint32(sdk.CodeOK), qres.Code)
|
||||||
assert.Equal(t, v, qres.Value)
|
assert.Equal(t, v1, qres.Value)
|
||||||
|
|
||||||
|
// and for the subspace
|
||||||
|
qres = iavlStore.Query(querySub)
|
||||||
|
assert.Equal(t, uint32(sdk.CodeOK), qres.Code)
|
||||||
|
assert.Equal(t, valExpSub1, qres.Value)
|
||||||
|
|
||||||
// update to latest in the query and we are happy
|
// update to latest in the query and we are happy
|
||||||
query.Height = cid.Version
|
query.Height = cid.Version
|
||||||
|
@ -310,10 +330,14 @@ func TestIAVLStoreQuery(t *testing.T) {
|
||||||
qres = iavlStore.Query(query2)
|
qres = iavlStore.Query(query2)
|
||||||
assert.Equal(t, uint32(sdk.CodeOK), qres.Code)
|
assert.Equal(t, uint32(sdk.CodeOK), qres.Code)
|
||||||
assert.Equal(t, v2, qres.Value)
|
assert.Equal(t, v2, qres.Value)
|
||||||
|
// and for the subspace
|
||||||
|
qres = iavlStore.Query(querySub)
|
||||||
|
assert.Equal(t, uint32(sdk.CodeOK), qres.Code)
|
||||||
|
assert.Equal(t, valExpSub2, qres.Value)
|
||||||
|
|
||||||
// default (height 0) will show latest -1
|
// default (height 0) will show latest -1
|
||||||
query0 := abci.RequestQuery{Path: "/store", Data: k}
|
query0 := abci.RequestQuery{Path: "/store", Data: k1}
|
||||||
qres = iavlStore.Query(query0)
|
qres = iavlStore.Query(query0)
|
||||||
assert.Equal(t, uint32(sdk.CodeOK), qres.Code)
|
assert.Equal(t, uint32(sdk.CodeOK), qres.Code)
|
||||||
assert.Equal(t, v, qres.Value)
|
assert.Equal(t, v1, qres.Value)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue