add other tests and update docs

This commit is contained in:
Federico Kunze 2018-11-27 15:16:33 +01:00
parent a2189bc672
commit 666fafb97a
3 changed files with 299 additions and 299 deletions

View File

@ -35,12 +35,12 @@ passed to the --tag option. To match any transaction, use the --any option.
For example: For example:
$ gaiacli query txs --tags <key1>:<value1>&<key2>:<value2> $ gaiacli query txs --tags <tag1>:<value1>&<tag2>:<value2>
will match any transaction tagged with both <key1>=<value1> and <key2>=<value2>. will match any transaction tagged with both <key1>=<value1> and <key2>=<value2>.
To match a transaction tagged with either value1 or value2, use: To match a transaction tagged with either value1 or value2, use:
$ gaiacli query txs --tags <key1>:<value1>&<key2>:<value2> --any $ gaiacli query txs --tags <tag1>:<value1>&<tag2>:<value2> --any
`), `),
RunE: func(cmd *cobra.Command, args []string) error { RunE: func(cmd *cobra.Command, args []string) error {
tagsStr := viper.GetString(flagTags) tagsStr := viper.GetString(flagTags)
@ -97,7 +97,7 @@ $ gaiacli query txs --tags <key1>:<value1>&<key2>:<value2> --any
viper.BindPFlag(client.FlagChainID, cmd.Flags().Lookup(client.FlagChainID)) viper.BindPFlag(client.FlagChainID, cmd.Flags().Lookup(client.FlagChainID))
cmd.Flags().Bool(client.FlagTrustNode, false, "Trust connected full node (don't verify proofs for responses)") cmd.Flags().Bool(client.FlagTrustNode, false, "Trust connected full node (don't verify proofs for responses)")
viper.BindPFlag(client.FlagTrustNode, cmd.Flags().Lookup(client.FlagTrustNode)) viper.BindPFlag(client.FlagTrustNode, cmd.Flags().Lookup(client.FlagTrustNode))
cmd.Flags().String(flagTags, "", "key:value list of tags that must match") cmd.Flags().String(flagTags, "", "tag:value list of tags that must match")
cmd.Flags().Bool(flagAny, false, "Return transactions that match ANY tag, rather than ALL") cmd.Flags().Bool(flagAny, false, "Return transactions that match ANY tag, rather than ALL")
return cmd return cmd
} }

View File

@ -14,6 +14,7 @@ import (
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
abci "github.com/tendermint/tendermint/abci/types"
"github.com/tendermint/tendermint/crypto" "github.com/tendermint/tendermint/crypto"
cmn "github.com/tendermint/tendermint/libs/common" cmn "github.com/tendermint/tendermint/libs/common"
@ -30,37 +31,6 @@ import (
stakeTypes "github.com/cosmos/cosmos-sdk/x/stake/types" stakeTypes "github.com/cosmos/cosmos-sdk/x/stake/types"
) )
// import (
// "encoding/json"
// "fmt"
// "io/ioutil"
// "os"
// "path"
// "path/filepath"
// "testing"
//
// "github.com/tendermint/tendermint/types"
//
// "github.com/stretchr/testify/require"
//
// abci "github.com/tendermint/tendermint/abci/types"
// "github.com/tendermint/tendermint/crypto"
// cmn "github.com/tendermint/tendermint/libs/common"
//
// "github.com/cosmos/cosmos-sdk/client"
// "github.com/cosmos/cosmos-sdk/client/keys"
// "github.com/cosmos/cosmos-sdk/client/tx"
// "github.com/cosmos/cosmos-sdk/cmd/gaia/app"
// "github.com/cosmos/cosmos-sdk/codec"
// "github.com/cosmos/cosmos-sdk/server"
// "github.com/cosmos/cosmos-sdk/tests"
// sdk "github.com/cosmos/cosmos-sdk/types"
// "github.com/cosmos/cosmos-sdk/x/auth"
// "github.com/cosmos/cosmos-sdk/x/gov"
// "github.com/cosmos/cosmos-sdk/x/stake"
// stakeTypes "github.com/cosmos/cosmos-sdk/x/stake/types"
// )
var ( var (
gaiadHome = "" gaiadHome = ""
gaiacliHome = "" gaiacliHome = ""
@ -70,270 +40,270 @@ func init() {
gaiadHome, gaiacliHome = getTestingHomeDirs() gaiadHome, gaiacliHome = getTestingHomeDirs()
} }
// func TestGaiaCLIMinimumFees(t *testing.T) { func TestGaiaCLIMinimumFees(t *testing.T) {
// chainID, servAddr, port := initializeFixtures(t) chainID, servAddr, port := initializeFixtures(t)
// flags := fmt.Sprintf("--home=%s --node=%v --chain-id=%v", gaiacliHome, servAddr, chainID) flags := fmt.Sprintf("--home=%s --node=%v --chain-id=%v", gaiacliHome, servAddr, chainID)
//
// // start gaiad server with minimum fees // start gaiad server with minimum fees
// proc := tests.GoExecuteTWithStdout(t, fmt.Sprintf("gaiad start --home=%s --rpc.laddr=%v --minimum_fees=2feeToken", gaiadHome, servAddr)) proc := tests.GoExecuteTWithStdout(t, fmt.Sprintf("gaiad start --home=%s --rpc.laddr=%v --minimum_fees=2feeToken", gaiadHome, servAddr))
//
// defer proc.Stop(false) defer proc.Stop(false)
// tests.WaitForTMStart(port) tests.WaitForTMStart(port)
// tests.WaitForNextNBlocksTM(2, port) tests.WaitForNextNBlocksTM(2, port)
//
// fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome)) fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome))
// barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome)) barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome))
//
// fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
// require.Equal(t, int64(50), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) require.Equal(t, int64(50), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
//
// success := executeWrite(t, fmt.Sprintf( success := executeWrite(t, fmt.Sprintf(
// "gaiacli tx send %v --amount=10%s --to=%s --from=foo", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass) "gaiacli tx send %v --amount=10%s --to=%s --from=foo", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass)
// require.False(t, success) require.False(t, success)
// tests.WaitForNextNBlocksTM(2, port) tests.WaitForNextNBlocksTM(2, port)
//
// } }
//
// func TestGaiaCLIFeesDeduction(t *testing.T) { func TestGaiaCLIFeesDeduction(t *testing.T) {
// chainID, servAddr, port := initializeFixtures(t) chainID, servAddr, port := initializeFixtures(t)
// flags := fmt.Sprintf("--home=%s --node=%v --chain-id=%v", gaiacliHome, servAddr, chainID) flags := fmt.Sprintf("--home=%s --node=%v --chain-id=%v", gaiacliHome, servAddr, chainID)
//
// // start gaiad server with minimum fees // start gaiad server with minimum fees
// proc := tests.GoExecuteTWithStdout(t, fmt.Sprintf("gaiad start --home=%s --rpc.laddr=%v --minimum_fees=1fooToken", gaiadHome, servAddr)) proc := tests.GoExecuteTWithStdout(t, fmt.Sprintf("gaiad start --home=%s --rpc.laddr=%v --minimum_fees=1fooToken", gaiadHome, servAddr))
//
// defer proc.Stop(false) defer proc.Stop(false)
// tests.WaitForTMStart(port) tests.WaitForTMStart(port)
// tests.WaitForNextNBlocksTM(2, port) tests.WaitForNextNBlocksTM(2, port)
//
// fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome)) fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome))
// barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome)) barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome))
//
// fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
// require.Equal(t, int64(1000), fooAcc.GetCoins().AmountOf("fooToken").Int64()) require.Equal(t, int64(1000), fooAcc.GetCoins().AmountOf("fooToken").Int64())
//
// // test simulation // test simulation
// success := executeWrite(t, fmt.Sprintf( success := executeWrite(t, fmt.Sprintf(
// "gaiacli tx send %v --amount=1000fooToken --to=%s --from=foo --fee=1fooToken --dry-run", flags, barAddr), app.DefaultKeyPass) "gaiacli tx send %v --amount=1000fooToken --to=%s --from=foo --fee=1fooToken --dry-run", flags, barAddr), app.DefaultKeyPass)
// require.True(t, success) require.True(t, success)
// tests.WaitForNextNBlocksTM(2, port) tests.WaitForNextNBlocksTM(2, port)
// // ensure state didn't change // ensure state didn't change
// fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
// require.Equal(t, int64(1000), fooAcc.GetCoins().AmountOf("fooToken").Int64()) require.Equal(t, int64(1000), fooAcc.GetCoins().AmountOf("fooToken").Int64())
//
// // insufficient funds (coins + fees) // insufficient funds (coins + fees)
// success = executeWrite(t, fmt.Sprintf( success = executeWrite(t, fmt.Sprintf(
// "gaiacli tx send %v --amount=1000fooToken --to=%s --from=foo --fee=1fooToken", flags, barAddr), app.DefaultKeyPass) "gaiacli tx send %v --amount=1000fooToken --to=%s --from=foo --fee=1fooToken", flags, barAddr), app.DefaultKeyPass)
// require.False(t, success) require.False(t, success)
// tests.WaitForNextNBlocksTM(2, port) tests.WaitForNextNBlocksTM(2, port)
// // ensure state didn't change // ensure state didn't change
// fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
// require.Equal(t, int64(1000), fooAcc.GetCoins().AmountOf("fooToken").Int64()) require.Equal(t, int64(1000), fooAcc.GetCoins().AmountOf("fooToken").Int64())
//
// // test success (transfer = coins + fees) // test success (transfer = coins + fees)
// success = executeWrite(t, fmt.Sprintf( success = executeWrite(t, fmt.Sprintf(
// "gaiacli tx send %v --fee=300fooToken --amount=500fooToken --to=%s --from=foo", flags, barAddr), app.DefaultKeyPass) "gaiacli tx send %v --fee=300fooToken --amount=500fooToken --to=%s --from=foo", flags, barAddr), app.DefaultKeyPass)
// require.True(t, success) require.True(t, success)
// tests.WaitForNextNBlocksTM(2, port) tests.WaitForNextNBlocksTM(2, port)
// } }
//
// func TestGaiaCLISend(t *testing.T) { func TestGaiaCLISend(t *testing.T) {
// chainID, servAddr, port := initializeFixtures(t) chainID, servAddr, port := initializeFixtures(t)
// flags := fmt.Sprintf("--home=%s --node=%v --chain-id=%v", gaiacliHome, servAddr, chainID) flags := fmt.Sprintf("--home=%s --node=%v --chain-id=%v", gaiacliHome, servAddr, chainID)
//
// // start gaiad server // start gaiad server
// proc := tests.GoExecuteTWithStdout(t, fmt.Sprintf("gaiad start --home=%s --rpc.laddr=%v", gaiadHome, servAddr)) proc := tests.GoExecuteTWithStdout(t, fmt.Sprintf("gaiad start --home=%s --rpc.laddr=%v", gaiadHome, servAddr))
//
// defer proc.Stop(false) defer proc.Stop(false)
// tests.WaitForTMStart(port) tests.WaitForTMStart(port)
// tests.WaitForNextNBlocksTM(2, port) tests.WaitForNextNBlocksTM(2, port)
//
// fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome)) fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome))
// barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome)) barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome))
//
// fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
// require.Equal(t, int64(50), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) require.Equal(t, int64(50), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
//
// executeWrite(t, fmt.Sprintf("gaiacli tx send %v --amount=10%s --to=%s --from=foo", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass) executeWrite(t, fmt.Sprintf("gaiacli tx send %v --amount=10%s --to=%s --from=foo", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass)
// tests.WaitForNextNBlocksTM(2, port) tests.WaitForNextNBlocksTM(2, port)
//
// barAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", barAddr, flags)) barAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", barAddr, flags))
// require.Equal(t, int64(10), barAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) require.Equal(t, int64(10), barAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
// fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
// require.Equal(t, int64(40), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) require.Equal(t, int64(40), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
//
// // Test --dry-run // Test --dry-run
// success := executeWrite(t, fmt.Sprintf("gaiacli tx send %v --amount=10%s --to=%s --from=foo --dry-run", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass) success := executeWrite(t, fmt.Sprintf("gaiacli tx send %v --amount=10%s --to=%s --from=foo --dry-run", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass)
// require.True(t, success) require.True(t, success)
// // Check state didn't change // Check state didn't change
// fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
// require.Equal(t, int64(40), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) require.Equal(t, int64(40), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
//
// // test autosequencing // test autosequencing
// executeWrite(t, fmt.Sprintf("gaiacli tx send %v --amount=10%s --to=%s --from=foo", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass) executeWrite(t, fmt.Sprintf("gaiacli tx send %v --amount=10%s --to=%s --from=foo", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass)
// tests.WaitForNextNBlocksTM(2, port) tests.WaitForNextNBlocksTM(2, port)
//
// barAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", barAddr, flags)) barAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", barAddr, flags))
// require.Equal(t, int64(20), barAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) require.Equal(t, int64(20), barAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
// fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
// require.Equal(t, int64(30), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) require.Equal(t, int64(30), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
//
// // test memo // test memo
// executeWrite(t, fmt.Sprintf("gaiacli tx send %v --amount=10%s --to=%s --from=foo --memo 'testmemo'", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass) executeWrite(t, fmt.Sprintf("gaiacli tx send %v --amount=10%s --to=%s --from=foo --memo 'testmemo'", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass)
// tests.WaitForNextNBlocksTM(2, port) tests.WaitForNextNBlocksTM(2, port)
//
// barAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", barAddr, flags)) barAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", barAddr, flags))
// require.Equal(t, int64(30), barAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) require.Equal(t, int64(30), barAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
// fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
// require.Equal(t, int64(20), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) require.Equal(t, int64(20), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
// } }
//
// func TestGaiaCLIGasAuto(t *testing.T) { func TestGaiaCLIGasAuto(t *testing.T) {
// chainID, servAddr, port := initializeFixtures(t) chainID, servAddr, port := initializeFixtures(t)
// flags := fmt.Sprintf("--home=%s --node=%v --chain-id=%v", gaiacliHome, servAddr, chainID) flags := fmt.Sprintf("--home=%s --node=%v --chain-id=%v", gaiacliHome, servAddr, chainID)
//
// // start gaiad server // start gaiad server
// proc := tests.GoExecuteTWithStdout(t, fmt.Sprintf("gaiad start --home=%s --rpc.laddr=%v", gaiadHome, servAddr)) proc := tests.GoExecuteTWithStdout(t, fmt.Sprintf("gaiad start --home=%s --rpc.laddr=%v", gaiadHome, servAddr))
//
// defer proc.Stop(false) defer proc.Stop(false)
// tests.WaitForTMStart(port) tests.WaitForTMStart(port)
// tests.WaitForNextNBlocksTM(2, port) tests.WaitForNextNBlocksTM(2, port)
//
// fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome)) fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome))
// barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome)) barAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome))
//
// fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
// require.Equal(t, int64(50), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) require.Equal(t, int64(50), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
//
// // Test failure with auto gas disabled and very little gas set by hand // Test failure with auto gas disabled and very little gas set by hand
// success := executeWrite(t, fmt.Sprintf("gaiacli tx send %v --gas=10 --amount=10%s --to=%s --from=foo", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass) success := executeWrite(t, fmt.Sprintf("gaiacli tx send %v --gas=10 --amount=10%s --to=%s --from=foo", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass)
// require.False(t, success) require.False(t, success)
// tests.WaitForNextNBlocksTM(2, port) tests.WaitForNextNBlocksTM(2, port)
// // Check state didn't change // Check state didn't change
// fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
// require.Equal(t, int64(50), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) require.Equal(t, int64(50), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
//
// // Test failure with negative gas // Test failure with negative gas
// success = executeWrite(t, fmt.Sprintf("gaiacli tx send %v --gas=-100 --amount=10%s --to=%s --from=foo", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass) success = executeWrite(t, fmt.Sprintf("gaiacli tx send %v --gas=-100 --amount=10%s --to=%s --from=foo", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass)
// require.False(t, success) require.False(t, success)
//
// // Test failure with 0 gas // Test failure with 0 gas
// success = executeWrite(t, fmt.Sprintf("gaiacli tx send %v --gas=0 --amount=10%s --to=%s --from=foo", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass) success = executeWrite(t, fmt.Sprintf("gaiacli tx send %v --gas=0 --amount=10%s --to=%s --from=foo", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass)
// require.False(t, success) require.False(t, success)
//
// // Enable auto gas // Enable auto gas
// success, stdout, _ := executeWriteRetStdStreams(t, fmt.Sprintf("gaiacli tx send %v --json --gas=simulate --amount=10%s --to=%s --from=foo", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass) success, stdout, _ := executeWriteRetStdStreams(t, fmt.Sprintf("gaiacli tx send %v --json --gas=simulate --amount=10%s --to=%s --from=foo", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass)
// require.True(t, success) require.True(t, success)
// // check that gas wanted == gas used // check that gas wanted == gas used
// cdc := app.MakeCodec() cdc := app.MakeCodec()
// jsonOutput := struct { jsonOutput := struct {
// Height int64 Height int64
// TxHash string TxHash string
// Response abci.ResponseDeliverTx Response abci.ResponseDeliverTx
// }{} }{}
// require.Nil(t, cdc.UnmarshalJSON([]byte(stdout), &jsonOutput)) require.Nil(t, cdc.UnmarshalJSON([]byte(stdout), &jsonOutput))
// require.Equal(t, jsonOutput.Response.GasWanted, jsonOutput.Response.GasUsed) require.Equal(t, jsonOutput.Response.GasWanted, jsonOutput.Response.GasUsed)
// tests.WaitForNextNBlocksTM(2, port) tests.WaitForNextNBlocksTM(2, port)
// // Check state has changed accordingly // Check state has changed accordingly
// fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
// require.Equal(t, int64(40), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) require.Equal(t, int64(40), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
// } }
//
// func TestGaiaCLICreateValidator(t *testing.T) { func TestGaiaCLICreateValidator(t *testing.T) {
// chainID, servAddr, port := initializeFixtures(t) chainID, servAddr, port := initializeFixtures(t)
// flags := fmt.Sprintf("--home=%s --chain-id=%v --node=%s", gaiacliHome, chainID, servAddr) flags := fmt.Sprintf("--home=%s --chain-id=%v --node=%s", gaiacliHome, chainID, servAddr)
//
// // start gaiad server // start gaiad server
// proc := tests.GoExecuteTWithStdout(t, fmt.Sprintf("gaiad start --home=%s --rpc.laddr=%v", gaiadHome, servAddr)) proc := tests.GoExecuteTWithStdout(t, fmt.Sprintf("gaiad start --home=%s --rpc.laddr=%v", gaiadHome, servAddr))
//
// defer proc.Stop(false) defer proc.Stop(false)
// tests.WaitForTMStart(port) tests.WaitForTMStart(port)
// tests.WaitForNextNBlocksTM(2, port) tests.WaitForNextNBlocksTM(2, port)
//
// fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome)) fooAddr, _ := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show foo --output=json --home=%s", gaiacliHome))
// barAddr, barPubKey := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome)) barAddr, barPubKey := executeGetAddrPK(t, fmt.Sprintf("gaiacli keys show bar --output=json --home=%s", gaiacliHome))
// barCeshPubKey := sdk.MustBech32ifyConsPub(barPubKey) barCeshPubKey := sdk.MustBech32ifyConsPub(barPubKey)
//
// executeWrite(t, fmt.Sprintf("gaiacli tx send %v --amount=10%s --to=%s --from=foo", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass) executeWrite(t, fmt.Sprintf("gaiacli tx send %v --amount=10%s --to=%s --from=foo", flags, stakeTypes.DefaultBondDenom, barAddr), app.DefaultKeyPass)
// tests.WaitForNextNBlocksTM(2, port) tests.WaitForNextNBlocksTM(2, port)
//
// barAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", barAddr, flags)) barAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", barAddr, flags))
// require.Equal(t, int64(10), barAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) require.Equal(t, int64(10), barAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
// fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags)) fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", fooAddr, flags))
// require.Equal(t, int64(40), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64()) require.Equal(t, int64(40), fooAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64())
//
// defaultParams := stake.DefaultParams() defaultParams := stake.DefaultParams()
// initialPool := stake.InitialPool() initialPool := stake.InitialPool()
// initialPool.BondedTokens = initialPool.BondedTokens.Add(sdk.NewDec(100)) // Delegate tx on GaiaAppGenState initialPool.BondedTokens = initialPool.BondedTokens.Add(sdk.NewDec(100)) // Delegate tx on GaiaAppGenState
//
// // create validator // create validator
// cvStr := fmt.Sprintf("gaiacli tx stake create-validator %v", flags) cvStr := fmt.Sprintf("gaiacli tx stake create-validator %v", flags)
// cvStr += fmt.Sprintf(" --from=%s", "bar") cvStr += fmt.Sprintf(" --from=%s", "bar")
// cvStr += fmt.Sprintf(" --pubkey=%s", barCeshPubKey) cvStr += fmt.Sprintf(" --pubkey=%s", barCeshPubKey)
// cvStr += fmt.Sprintf(" --amount=%v", fmt.Sprintf("2%s", stakeTypes.DefaultBondDenom)) cvStr += fmt.Sprintf(" --amount=%v", fmt.Sprintf("2%s", stakeTypes.DefaultBondDenom))
// cvStr += fmt.Sprintf(" --moniker=%v", "bar-vally") cvStr += fmt.Sprintf(" --moniker=%v", "bar-vally")
// cvStr += fmt.Sprintf(" --commission-rate=%v", "0.05") cvStr += fmt.Sprintf(" --commission-rate=%v", "0.05")
// cvStr += fmt.Sprintf(" --commission-max-rate=%v", "0.20") cvStr += fmt.Sprintf(" --commission-max-rate=%v", "0.20")
// cvStr += fmt.Sprintf(" --commission-max-change-rate=%v", "0.10") cvStr += fmt.Sprintf(" --commission-max-change-rate=%v", "0.10")
//
// initialPool.BondedTokens = initialPool.BondedTokens.Add(sdk.NewDec(1)) initialPool.BondedTokens = initialPool.BondedTokens.Add(sdk.NewDec(1))
//
// // Test --generate-only // Test --generate-only
// success, stdout, stderr := executeWriteRetStdStreams(t, cvStr+" --generate-only", app.DefaultKeyPass) success, stdout, stderr := executeWriteRetStdStreams(t, cvStr+" --generate-only", app.DefaultKeyPass)
// require.True(t, success) require.True(t, success)
// require.True(t, success) require.True(t, success)
// require.Empty(t, stderr) require.Empty(t, stderr)
// msg := unmarshalStdTx(t, stdout) msg := unmarshalStdTx(t, stdout)
// require.NotZero(t, msg.Fee.Gas) require.NotZero(t, msg.Fee.Gas)
// require.Equal(t, len(msg.Msgs), 1) require.Equal(t, len(msg.Msgs), 1)
// require.Equal(t, 0, len(msg.GetSignatures())) require.Equal(t, 0, len(msg.GetSignatures()))
//
// // Test --dry-run // Test --dry-run
// success = executeWrite(t, cvStr+" --dry-run", app.DefaultKeyPass) success = executeWrite(t, cvStr+" --dry-run", app.DefaultKeyPass)
// require.True(t, success) require.True(t, success)
//
// executeWrite(t, cvStr, app.DefaultKeyPass) executeWrite(t, cvStr, app.DefaultKeyPass)
// tests.WaitForNextNBlocksTM(2, port) tests.WaitForNextNBlocksTM(2, port)
//
// barAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", barAddr, flags)) barAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %s %v", barAddr, flags))
// require.Equal(t, int64(8), barAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64(), "%v", barAcc) require.Equal(t, int64(8), barAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64(), "%v", barAcc)
//
// validator := executeGetValidator(t, fmt.Sprintf("gaiacli query stake validator %s --output=json %v", sdk.ValAddress(barAddr), flags)) validator := executeGetValidator(t, fmt.Sprintf("gaiacli query stake validator %s --output=json %v", sdk.ValAddress(barAddr), flags))
// require.Equal(t, validator.OperatorAddr, sdk.ValAddress(barAddr)) require.Equal(t, validator.OperatorAddr, sdk.ValAddress(barAddr))
// require.True(sdk.DecEq(t, sdk.NewDec(2), validator.Tokens)) require.True(sdk.DecEq(t, sdk.NewDec(2), validator.Tokens))
//
// validatorDelegations := executeGetValidatorDelegations(t, fmt.Sprintf("gaiacli query stake delegations-to %s --output=json %v", sdk.ValAddress(barAddr), flags)) validatorDelegations := executeGetValidatorDelegations(t, fmt.Sprintf("gaiacli query stake delegations-to %s --output=json %v", sdk.ValAddress(barAddr), flags))
// require.Len(t, validatorDelegations, 1) require.Len(t, validatorDelegations, 1)
// require.NotZero(t, validatorDelegations[0].Shares) require.NotZero(t, validatorDelegations[0].Shares)
//
// // unbond a single share // unbond a single share
// unbondStr := fmt.Sprintf("gaiacli tx stake unbond begin %v", flags) unbondStr := fmt.Sprintf("gaiacli tx stake unbond begin %v", flags)
// unbondStr += fmt.Sprintf(" --from=%s", "bar") unbondStr += fmt.Sprintf(" --from=%s", "bar")
// unbondStr += fmt.Sprintf(" --validator=%s", sdk.ValAddress(barAddr)) unbondStr += fmt.Sprintf(" --validator=%s", sdk.ValAddress(barAddr))
// unbondStr += fmt.Sprintf(" --shares-amount=%v", "1") unbondStr += fmt.Sprintf(" --shares-amount=%v", "1")
//
// success = executeWrite(t, unbondStr, app.DefaultKeyPass) success = executeWrite(t, unbondStr, app.DefaultKeyPass)
// require.True(t, success) require.True(t, success)
// tests.WaitForNextNBlocksTM(2, port) tests.WaitForNextNBlocksTM(2, port)
//
// /* // this won't be what we expect because we've only started unbonding, haven't completed /* // this won't be what we expect because we've only started unbonding, haven't completed
// barAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %v %v", barCech, flags)) barAcc = executeGetAccount(t, fmt.Sprintf("gaiacli query account %v %v", barCech, flags))
// require.Equal(t, int64(9), barAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64(), "%v", barAcc) require.Equal(t, int64(9), barAcc.GetCoins().AmountOf(stakeTypes.DefaultBondDenom).Int64(), "%v", barAcc)
// */ */
// validator = executeGetValidator(t, fmt.Sprintf("gaiacli query stake validator %s --output=json %v", sdk.ValAddress(barAddr), flags)) validator = executeGetValidator(t, fmt.Sprintf("gaiacli query stake validator %s --output=json %v", sdk.ValAddress(barAddr), flags))
// require.Equal(t, "1.0000000000", validator.Tokens.String()) require.Equal(t, "1.0000000000", validator.Tokens.String())
//
// validatorUbds := executeGetValidatorUnbondingDelegations(t, validatorUbds := executeGetValidatorUnbondingDelegations(t,
// fmt.Sprintf("gaiacli query stake unbonding-delegations-from %s --output=json %v", fmt.Sprintf("gaiacli query stake unbonding-delegations-from %s --output=json %v",
// sdk.ValAddress(barAddr), flags)) sdk.ValAddress(barAddr), flags))
// require.Len(t, validatorUbds, 1) require.Len(t, validatorUbds, 1)
// require.Equal(t, "1", validatorUbds[0].Balance.Amount.String()) require.Equal(t, "1", validatorUbds[0].Balance.Amount.String())
//
// params := executeGetParams(t, fmt.Sprintf("gaiacli query stake parameters --output=json %v", flags)) params := executeGetParams(t, fmt.Sprintf("gaiacli query stake parameters --output=json %v", flags))
// require.True(t, defaultParams.Equal(params)) require.True(t, defaultParams.Equal(params))
//
// pool := executeGetPool(t, fmt.Sprintf("gaiacli query stake pool --output=json %v", flags)) pool := executeGetPool(t, fmt.Sprintf("gaiacli query stake pool --output=json %v", flags))
// require.Equal(t, initialPool.BondedTokens, pool.BondedTokens) require.Equal(t, initialPool.BondedTokens, pool.BondedTokens)
// } }
func TestGaiaCLISubmitProposal(t *testing.T) { func TestGaiaCLISubmitProposal(t *testing.T) {
chainID, servAddr, port := initializeFixtures(t) chainID, servAddr, port := initializeFixtures(t)

View File

@ -183,10 +183,40 @@ gaiacli tx sign --validate-signatures signedSendTx.json
You can broadcast the signed transaction to a node by providing the JSON file to the following command: You can broadcast the signed transaction to a node by providing the JSON file to the following command:
``` ```bash
gaiacli tx broadcast --node=<node> signedSendTx.json gaiacli tx broadcast --node=<node> signedSendTx.json
``` ```
### Query Transactions
#### Matching a set of tags
You can use the transaction search command to query for transactions that match a specific set of `tags`, which are added on every transaction.
```bash
gaiacli query txs --tags=<tag1>:<value1>&<tag2>:<value2>
```
::: tip Note
You can find a list of available `tags` on each of the SDK modules:
- [Common tags](https://github.com/cosmos/cosmos-sdk/blob/d1e76221d8e28824bb4791cb4ad8662d2ae9051e/types/tags.go#L57-L63)
- [Staking tags](https://github.com/cosmos/cosmos-sdk/blob/d1e76221d8e28824bb4791cb4ad8662d2ae9051e/x/stake/tags/tags.go#L8-L24)
- [Governance tags](https://github.com/cosmos/cosmos-sdk/blob/d1e76221d8e28824bb4791cb4ad8662d2ae9051e/x/gov/tags/tags.go#L8-L22)
- [Slashing tags](https://github.com/cosmos/cosmos-sdk/blob/d1e76221d8e28824bb4791cb4ad8662d2ae9051e/x/slashing/handler.go#L52)
- [Distribution tags](https://github.com/cosmos/cosmos-sdk/blob/develop/x/distribution/tags/tags.go#L8-L17)
- [Bank tags](https://github.com/cosmos/cosmos-sdk/blob/d1e76221d8e28824bb4791cb4ad8662d2ae9051e/x/bank/keeper.go#L193-L206)
:::
#### Matching a transaction's hash
You can also query a single transaction by its hash using the following command:
```bash
gaiacli query tx [hash]
```
### Staking ### Staking
#### Set up a Validator #### Set up a Validator