Add TestSequence in tests/tmsp
This commit is contained in:
parent
f498e53095
commit
cd3da2bf29
|
@ -15,7 +15,10 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
ws := rpcclient.NewWSClient("127.0.0.1:46657", "/websocket")
|
// ws := rpcclient.NewWSClient("127.0.0.1:46657", "/websocket")
|
||||||
|
ws := rpcclient.NewWSClient("192.168.99.100:46657", "/websocket")
|
||||||
|
chainID := "test_chain_id"
|
||||||
|
|
||||||
_, err := ws.Start()
|
_, err := ws.Start()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
Exit(err.Error())
|
Exit(err.Error())
|
||||||
|
@ -34,7 +37,7 @@ func main() {
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// Get the root account
|
// Get the root account
|
||||||
root := tests.PrivAccountFromSecret("root")
|
root := tests.PrivAccountFromSecret("test")
|
||||||
sequence := int(0)
|
sequence := int(0)
|
||||||
// Make a bunch of PrivAccounts
|
// Make a bunch of PrivAccounts
|
||||||
privAccounts := tests.RandAccounts(1000, 1000000, 0)
|
privAccounts := tests.RandAccounts(1000, 1000000, 0)
|
||||||
|
@ -62,7 +65,7 @@ func main() {
|
||||||
sequence += 1
|
sequence += 1
|
||||||
|
|
||||||
// Sign request
|
// Sign request
|
||||||
signBytes := wire.BinaryBytes(tx)
|
signBytes := tx.SignBytes(chainID)
|
||||||
sig := root.PrivKey.Sign(signBytes)
|
sig := root.PrivKey.Sign(signBytes)
|
||||||
tx.Inputs[0].Signature = sig
|
tx.Inputs[0].Signature = sig
|
||||||
//fmt.Println("tx:", tx)
|
//fmt.Println("tx:", tx)
|
||||||
|
@ -100,7 +103,7 @@ func main() {
|
||||||
Address: privAccountA.Account.PubKey.Address(),
|
Address: privAccountA.Account.PubKey.Address(),
|
||||||
PubKey: privAccountA.Account.PubKey,
|
PubKey: privAccountA.Account.PubKey,
|
||||||
Amount: 3,
|
Amount: 3,
|
||||||
Sequence: privAccountASequence,
|
Sequence: privAccountASequence + 1,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Outputs: []types.TxOutput{
|
Outputs: []types.TxOutput{
|
||||||
|
@ -112,7 +115,7 @@ func main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sign request
|
// Sign request
|
||||||
signBytes := wire.BinaryBytes(tx)
|
signBytes := tx.SignBytes(chainID)
|
||||||
sig := privAccountA.PrivKey.Sign(signBytes)
|
sig := privAccountA.PrivKey.Sign(signBytes)
|
||||||
tx.Inputs[0].Signature = sig
|
tx.Inputs[0].Signature = sig
|
||||||
//fmt.Println("tx:", tx)
|
//fmt.Println("tx:", tx)
|
||||||
|
|
|
@ -13,8 +13,9 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
testSendTx()
|
//testSendTx()
|
||||||
testGov()
|
//testGov()
|
||||||
|
testSequence()
|
||||||
}
|
}
|
||||||
|
|
||||||
func testSendTx() {
|
func testSendTx() {
|
||||||
|
@ -85,3 +86,100 @@ func testGov() {
|
||||||
}
|
}
|
||||||
// TODO test proposals or something.
|
// TODO test proposals or something.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testSequence() {
|
||||||
|
eyesCli := eyescli.NewLocalClient()
|
||||||
|
bcApp := app.NewBasecoin(eyesCli)
|
||||||
|
chainID := "test_chain_id"
|
||||||
|
|
||||||
|
// Get the root account
|
||||||
|
root := tests.PrivAccountFromSecret("test")
|
||||||
|
rootAcc := root.Account
|
||||||
|
rootAcc.Balance = 1 << 53
|
||||||
|
fmt.Println(bcApp.SetOption("base/chainID", "test_chain_id"))
|
||||||
|
fmt.Println(bcApp.SetOption("base/account", string(wire.JSONBytes(rootAcc))))
|
||||||
|
|
||||||
|
sequence := int(1)
|
||||||
|
// Make a bunch of PrivAccounts
|
||||||
|
privAccounts := tests.RandAccounts(1000, 1000000, 0)
|
||||||
|
privAccountSequences := make(map[string]int)
|
||||||
|
|
||||||
|
// Send coins to each account
|
||||||
|
for i := 0; i < len(privAccounts); i++ {
|
||||||
|
privAccount := privAccounts[i]
|
||||||
|
tx := &types.SendTx{
|
||||||
|
Inputs: []types.TxInput{
|
||||||
|
types.TxInput{
|
||||||
|
Address: root.Account.PubKey.Address(),
|
||||||
|
PubKey: root.Account.PubKey, // TODO is this needed?
|
||||||
|
Amount: 1000002,
|
||||||
|
Sequence: sequence,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Outputs: []types.TxOutput{
|
||||||
|
types.TxOutput{
|
||||||
|
Address: privAccount.Account.PubKey.Address(),
|
||||||
|
Amount: 1000000,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
sequence += 1
|
||||||
|
|
||||||
|
// Sign request
|
||||||
|
signBytes := tx.SignBytes(chainID)
|
||||||
|
sig := root.PrivKey.Sign(signBytes)
|
||||||
|
tx.Inputs[0].Signature = sig
|
||||||
|
//fmt.Println("tx:", tx)
|
||||||
|
|
||||||
|
// Write request
|
||||||
|
txBytes := wire.BinaryBytes(tx)
|
||||||
|
res := bcApp.CheckTx(txBytes)
|
||||||
|
if res.IsErr() {
|
||||||
|
Exit("AppendTx error: " + res.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now send coins between these accounts
|
||||||
|
for {
|
||||||
|
randA := RandInt() % len(privAccounts)
|
||||||
|
randB := RandInt() % len(privAccounts)
|
||||||
|
if randA == randB {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
privAccountA := privAccounts[randA]
|
||||||
|
privAccountASequence := privAccountSequences[privAccountA.Account.PubKey.KeyString()]
|
||||||
|
privAccountSequences[privAccountA.Account.PubKey.KeyString()] = privAccountASequence + 1
|
||||||
|
privAccountB := privAccounts[randB]
|
||||||
|
|
||||||
|
tx := &types.SendTx{
|
||||||
|
Inputs: []types.TxInput{
|
||||||
|
types.TxInput{
|
||||||
|
Address: privAccountA.Account.PubKey.Address(),
|
||||||
|
PubKey: privAccountA.Account.PubKey,
|
||||||
|
Amount: 3,
|
||||||
|
Sequence: privAccountASequence + 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Outputs: []types.TxOutput{
|
||||||
|
types.TxOutput{
|
||||||
|
Address: privAccountB.Account.PubKey.Address(),
|
||||||
|
Amount: 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sign request
|
||||||
|
signBytes := tx.SignBytes(chainID)
|
||||||
|
sig := privAccountA.PrivKey.Sign(signBytes)
|
||||||
|
tx.Inputs[0].Signature = sig
|
||||||
|
//fmt.Println("tx:", tx)
|
||||||
|
|
||||||
|
// Write request
|
||||||
|
txBytes := wire.BinaryBytes(tx)
|
||||||
|
res := bcApp.AppendTx(txBytes)
|
||||||
|
if res.IsErr() {
|
||||||
|
Exit("AppendTx error: " + res.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue