working through cli

This commit is contained in:
rigelrozanski 2018-05-31 12:10:12 -07:00
parent 94e78e0602
commit afc2bbfe09
4 changed files with 65 additions and 63 deletions

View File

@ -76,7 +76,7 @@ func printInfo(info keys.Info) {
fmt.Printf("NAME:\tADDRESS:\t\t\t\t\t\tPUBKEY:\n") fmt.Printf("NAME:\tADDRESS:\t\t\t\t\t\tPUBKEY:\n")
printKeyOutput(ko) printKeyOutput(ko)
case "json": case "json":
out, err := json.MarshalIndent(ko, "", "\t") out, err := MarshalJSON(ko)
if err != nil { if err != nil {
panic(err) panic(err)
} }

View File

@ -36,41 +36,37 @@ func TestGaiaCLISend(t *testing.T) {
// start gaiad server // start gaiad server
proc := tests.GoExecuteT(t, fmt.Sprintf("gaiad start --rpc.laddr=%v", servAddr)) proc := tests.GoExecuteT(t, fmt.Sprintf("gaiad start --rpc.laddr=%v", servAddr))
defer proc.Stop(false) defer proc.Stop(false)
time.Sleep(time.Second * 5) // Wait for RPC server to start.
fooAddr, _ := executeGetAddrPK(t, "gaiacli keys show foo --output=json") fooAddr, _ := executeGetAddrPK(t, "gaiacli keys show foo --output=json")
fooCech, err := sdk.Bech32CosmosifyAcc(fooAddr)
require.NoError(t, err)
barAddr, _ := executeGetAddrPK(t, "gaiacli keys show bar --output=json") barAddr, _ := executeGetAddrPK(t, "gaiacli keys show bar --output=json")
barCech, err := sdk.Bech32CosmosifyAcc(barAddr)
require.NoError(t, err)
fooBech, err := sdk.Bech32CosmosifyAcc(fooAddr) fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", fooCech, flags))
if err != nil {
t.Error(err)
}
barBech, err := sdk.Bech32CosmosifyAcc(barAddr)
if err != nil {
t.Error(err)
}
time.Sleep(time.Second * 5) // Wait for RPC server to start.
fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", fooBech, flags))
assert.Equal(t, int64(50), fooAcc.GetCoins().AmountOf("steak")) assert.Equal(t, int64(50), fooAcc.GetCoins().AmountOf("steak"))
executeWrite(t, fmt.Sprintf("gaiacli send %v --amount=10steak --to=%v --name=foo", flags, barBech), pass) executeWrite(t, fmt.Sprintf("gaiacli send %v --amount=10steak --to=%v --name=foo", flags, barCech), pass)
time.Sleep(time.Second * 3) // waiting for some blocks to pass time.Sleep(time.Second * 2) // waiting for some blocks to pass
barAcc := executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", barBech, flags)) barAcc := executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", barCech, flags))
assert.Equal(t, int64(10), barAcc.GetCoins().AmountOf("steak")) assert.Equal(t, int64(10), barAcc.GetCoins().AmountOf("steak"))
fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", fooBech, flags)) fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", fooCech, flags))
assert.Equal(t, int64(40), fooAcc.GetCoins().AmountOf("steak")) assert.Equal(t, int64(40), fooAcc.GetCoins().AmountOf("steak"))
// test autosequencing // test autosequencing
executeWrite(t, fmt.Sprintf("gaiacli send %v --amount=10steak --to=%v --name=foo", flags, barBech), pass) executeWrite(t, fmt.Sprintf("gaiacli send %v --amount=10steak --to=%v --name=foo", flags, barCech), pass)
time.Sleep(time.Second * 3) // waiting for some blocks to pass time.Sleep(time.Second * 2) // waiting for some blocks to pass
barAcc = executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", barBech, flags)) barAcc = executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", barCech, flags))
assert.Equal(t, int64(20), barAcc.GetCoins().AmountOf("steak")) assert.Equal(t, int64(20), barAcc.GetCoins().AmountOf("steak"))
fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", fooBech, flags)) fooAcc = executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", fooCech, flags))
assert.Equal(t, int64(30), fooAcc.GetCoins().AmountOf("steak")) assert.Equal(t, int64(30), fooAcc.GetCoins().AmountOf("steak"))
} }
func TestGaiaCLIDeclareCandidacy(t *testing.T) { func TestGaiaCLICreateValidator(t *testing.T) {
tests.ExecuteT(t, "gaiad unsafe_reset_all") tests.ExecuteT(t, "gaiad unsafe_reset_all")
pass := "1234567890" pass := "1234567890"
@ -86,62 +82,67 @@ func TestGaiaCLIDeclareCandidacy(t *testing.T) {
// start gaiad server // start gaiad server
proc := tests.GoExecuteT(t, fmt.Sprintf("gaiad start --rpc.laddr=%v", servAddr)) proc := tests.GoExecuteT(t, fmt.Sprintf("gaiad start --rpc.laddr=%v", servAddr))
defer proc.Stop(false) defer proc.Stop(false)
time.Sleep(time.Second * 5) // Wait for RPC server to start.
fooAddr, _ := executeGetAddrPK(t, "gaiacli keys show foo --output=json") fooAddr, _ := executeGetAddrPK(t, "gaiacli keys show foo --output=json")
barAddr, _ := executeGetAddrPK(t, "gaiacli keys show bar --output=json") fooCech, err := sdk.Bech32CosmosifyAcc(fooAddr)
require.NoError(t, err)
barAddr, barPubKey := executeGetAddrPK(t, "gaiacli keys show bar --output=json")
barCech, err := sdk.Bech32CosmosifyAcc(barAddr)
require.NoError(t, err)
barCeshPubKey, err := sdk.Bech32CosmosifyValPub(barPubKey)
require.NoError(t, err)
fooBech, err := sdk.Bech32CosmosifyAcc(fooAddr) executeWrite(t, fmt.Sprintf("gaiacli send %v --amount=10steak --to=%v --name=foo", flags, barCech), pass)
if err != nil { time.Sleep(time.Second * 2) // waiting for some blocks to pass
t.Error(err)
}
barBech, err := sdk.Bech32CosmosifyAcc(barAddr)
if err != nil {
t.Error(err)
}
valPrivkey := crypto.GenPrivKeyEd25519()
valAddr := sdk.Address((valPrivkey.PubKey().Address()))
bechVal, err := sdk.Bech32CosmosifyVal(valAddr)
executeWrite(t, fmt.Sprintf("gaiacli send %v --amount=10steak --to=%v --name=foo", flags, barBech), pass) barAcc := executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", barCech, flags))
time.Sleep(time.Second * 3) // waiting for some blocks to pass
fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", fooBech, flags))
assert.Equal(t, int64(40), fooAcc.GetCoins().AmountOf("steak"))
barAcc := executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", barBech, flags))
assert.Equal(t, int64(10), barAcc.GetCoins().AmountOf("steak")) assert.Equal(t, int64(10), barAcc.GetCoins().AmountOf("steak"))
fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", fooCech, flags))
assert.Equal(t, int64(40), fooAcc.GetCoins().AmountOf("steak"))
//valPrivkey := crypto.GenPrivKeyEd25519()
//valAddr := sdk.Address((valPrivkey.PubKey().Address()))
//bechVal, err := sdk.Bech32CosmosifyVal(valAddr)
// declare candidacy // declare candidacy
declStr := fmt.Sprintf("gaiacli create-validator %v", flags) cvStr := fmt.Sprintf("gaiacli create-validator %v", flags)
declStr += fmt.Sprintf(" --name=%v", "bar") cvStr += fmt.Sprintf(" --name=%v", "bar")
declStr += fmt.Sprintf(" --validator-address=%v", bechVal) cvStr += fmt.Sprintf(" --validator-address=%v", barCech)
declStr += fmt.Sprintf(" --amount=%v", "3steak") cvStr += fmt.Sprintf(" --pubkey=%v", barCeshPubKey)
declStr += fmt.Sprintf(" --moniker=%v", "bar-vally") cvStr += fmt.Sprintf(" --amount=%v", "3steak")
t.Log(fmt.Sprintf("debug declStr: %v\n", declStr)) cvStr += fmt.Sprintf(" --moniker=%v", "bar-vally")
executeWrite(t, declStr, pass)
time.Sleep(time.Second) // waiting for some blocks to pass executeWrite(t, cvStr, pass)
barAcc = executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", barAddr, flags)) time.Sleep(time.Second * 5) // waiting for some blocks to pass
barAcc = executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", barCech, flags))
assert.Equal(t, int64(7), barAcc.GetCoins().AmountOf("steak")) assert.Equal(t, int64(7), barAcc.GetCoins().AmountOf("steak"))
candidate := executeGetCandidate(t, fmt.Sprintf("gaiacli candidate %v --address-candidate=%v", flags, barAddr))
assert.Equal(t, candidate.Owner.String(), barAddr) validator := executeGetValidator(t, fmt.Sprintf("gaiacli validator %v %v", barCech, flags))
assert.Equal(t, int64(3), candidate.PoolShares) assert.Equal(t, validator.Owner.String(), barCech)
assert.Equal(t, int64(3), validator.PoolShares)
// TODO timeout issues if not connected to the internet // TODO timeout issues if not connected to the internet
// unbond a single share // unbond a single share
//unbondStr := fmt.Sprintf("gaiacli unbond %v", flags) //unbondStr := fmt.Sprintf("gaiacli unbond %v", flags)
//unbondStr += fmt.Sprintf(" --name=%v", "bar") //unbondStr += fmt.Sprintf(" --name=%v", "bar")
//unbondStr += fmt.Sprintf(" --address-candidate=%v", barAddr) //unbondStr += fmt.Sprintf(" --address-validator=%v", barCech)
//unbondStr += fmt.Sprintf(" --address-delegator=%v", barAddr) //unbondStr += fmt.Sprintf(" --address-delegator=%v", barCech)
//unbondStr += fmt.Sprintf(" --shares=%v", "1") //unbondStr += fmt.Sprintf(" --shares=%v", "1")
//unbondStr += fmt.Sprintf(" --sequence=%v", "1") //unbondStr += fmt.Sprintf(" --sequence=%v", "1")
//t.Log(fmt.Sprintf("debug unbondStr: %v\n", unbondStr)) //t.Log(fmt.Sprintf("debug unbondStr: %v\n", unbondStr))
//executeWrite(t, unbondStr, pass) //executeWrite(t, unbondStr, pass)
//time.Sleep(time.Second * 3) // waiting for some blocks to pass //time.Sleep(time.Second * 3) // waiting for some blocks to pass
//barAcc = executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", barAddr, flags)) //barAcc = executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", barCech, flags))
//assert.Equal(t, int64(99998), barAcc.GetCoins().AmountOf("steak")) //assert.Equal(t, int64(99998), barAcc.GetCoins().AmountOf("steak"))
//candidate = executeGetCandidate(t, fmt.Sprintf("gaiacli candidate %v --address-candidate=%v", flags, barAddr)) //validator = executeGetValidator(t, fmt.Sprintf("gaiacli validator %v --address-validator=%v", flags, barCech))
//assert.Equal(t, int64(2), candidate.BondedShares.Evaluate()) //assert.Equal(t, int64(2), validator.BondedShares.Evaluate())
} }
//___________________________________________________________________________________
// executors
func executeWrite(t *testing.T, cmdStr string, writes ...string) { func executeWrite(t *testing.T, cmdStr string, writes ...string) {
proc := tests.GoExecuteT(t, cmdStr) proc := tests.GoExecuteT(t, cmdStr)
@ -169,6 +170,7 @@ func executeGetAddrPK(t *testing.T, cmdStr string) (sdk.Address, crypto.PubKey)
out := tests.ExecuteT(t, cmdStr) out := tests.ExecuteT(t, cmdStr)
var ko keys.KeyOutput var ko keys.KeyOutput
keys.UnmarshalJSON([]byte(out), &ko) keys.UnmarshalJSON([]byte(out), &ko)
return ko.Address, ko.PubKey return ko.Address, ko.PubKey
} }
@ -186,11 +188,11 @@ func executeGetAccount(t *testing.T, cmdStr string) auth.BaseAccount {
return acc return acc
} }
func executeGetCandidate(t *testing.T, cmdStr string) stake.Validator { func executeGetValidator(t *testing.T, cmdStr string) stake.Validator {
out := tests.ExecuteT(t, cmdStr) out := tests.ExecuteT(t, cmdStr)
var candidate stake.Validator var validator stake.Validator
cdc := app.MakeCodec() cdc := app.MakeCodec()
err := cdc.UnmarshalJSON([]byte(out), &candidate) err := cdc.UnmarshalJSON([]byte(out), &validator)
require.NoError(t, err, "out %v, err %v", out, err) require.NoError(t, err, "out %v, err %v", out, err)
return candidate return validator
} }

View File

@ -55,8 +55,8 @@ func main() {
bankcmd.SendTxCmd(cdc), bankcmd.SendTxCmd(cdc),
ibccmd.IBCTransferCmd(cdc), ibccmd.IBCTransferCmd(cdc),
ibccmd.IBCRelayCmd(cdc), ibccmd.IBCRelayCmd(cdc),
stakecmd.GetCmdDeclareCandidacy(cdc), stakecmd.GetCmdCreateValidator(cdc),
stakecmd.GetCmdEditCandidacy(cdc), stakecmd.GetCmdEditValidator(cdc),
stakecmd.GetCmdDelegate(cdc), stakecmd.GetCmdDelegate(cdc),
stakecmd.GetCmdUnbond(cdc), stakecmd.GetCmdUnbond(cdc),
)...) )...)

View File

@ -14,7 +14,7 @@ import (
) )
// create declare candidacy command // create declare candidacy command
func GetCmdDeclareCandidacy(cdc *wire.Codec) *cobra.Command { func GetCmdCreateValidator(cdc *wire.Codec) *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "create-validator", Use: "create-validator",
Short: "create new validator initialized with a self-delegation to it", Short: "create new validator initialized with a self-delegation to it",
@ -68,7 +68,7 @@ func GetCmdDeclareCandidacy(cdc *wire.Codec) *cobra.Command {
} }
// create edit candidacy command // create edit candidacy command
func GetCmdEditCandidacy(cdc *wire.Codec) *cobra.Command { func GetCmdEditValidator(cdc *wire.Codec) *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "edit-validator", Use: "edit-validator",
Short: "edit and existing validator account", Short: "edit and existing validator account",