test: refactor broadcast tx into function (#259)

Force test cases to check tx response for errors.

* refactor: improve broadcast error logging

Signed-off-by: Julian Strobl <jmastr@mailbox.org>
This commit is contained in:
Julian Strobl 2024-01-05 13:43:52 +01:00 committed by GitHub
parent fa05ec7fff
commit 3e23260a9c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 49 additions and 35 deletions

View File

@ -79,7 +79,7 @@ func (s *E2ETestSuite) TestNotarizeAsset() {
}
for _, tc := range testCases {
out, err := lib.BroadcastTxWithFileLock(addr, tc.msg)
out, err := e2etestutil.BuildSignBroadcastTx(s.T(), addr, tc.msg)
s.Require().NoError(err)
txResponse, err := lib.GetTxResponseFromOut(out)

View File

@ -123,13 +123,13 @@ func (s *E2ETestSuite) TestDistributeCollectedFees() {
coin := sdk.NewCoins(sdk.NewInt64Coin("stake", 1000))
msg := banktypes.NewMsgSend(val.Address, aliceAddr, coin)
_, err := lib.BroadcastTxWithFileLock(val.Address, msg)
_, err := e2etestutil.BuildSignBroadcastTx(s.T(), val.Address, msg)
s.Require().NoError(err)
err = s.network.WaitForNextBlock()
s.Require().NoError(err)
_, err = lib.BroadcastTxWithFileLock(val.Address, msg)
_, err = e2etestutil.BuildSignBroadcastTx(s.T(), val.Address, msg)
s.Require().NoError(err)
err = s.network.WaitForNextBlock()
@ -158,13 +158,9 @@ func (s *E2ETestSuite) TestMintToken() {
mintRequest := sample.MintRequest(aliceAddr.String(), 1000, "hash")
msg1 := daotypes.NewMsgMintToken(val.Address.String(), &mintRequest)
out, err := lib.BroadcastTxWithFileLock(val.Address, msg1)
out, err := e2etestutil.BuildSignBroadcastTx(s.T(), val.Address, msg1)
s.Require().NoError(err)
txResponse, err := lib.GetTxResponseFromOut(out)
s.Require().NoError(err)
s.Require().Equal(int(0), int(txResponse.Code))
s.Require().NoError(s.network.WaitForNextBlock())
rawLog, err := clitestutil.GetRawLogFromTxOut(val, out)
s.Require().NoError(err)
@ -195,7 +191,7 @@ func (s *E2ETestSuite) TestMintToken() {
out, err = lib.BroadcastTxWithFileLock(addr, msg1)
s.Require().NoError(err)
txResponse, err = lib.GetTxResponseFromOut(out)
txResponse, err := lib.GetTxResponseFromOut(out)
s.Require().NoError(err)
s.Require().Equal(int(2), int(txResponse.Code))
}
@ -275,7 +271,7 @@ func (s *E2ETestSuite) TestPoPResult() {
challenges[i].Finished = true
msg := daotypes.NewMsgReportPopResult(val.Address.String(), &challenges[i])
out, err := lib.BroadcastTxWithFileLock(val.Address, msg)
out, err := e2etestutil.BuildSignBroadcastTx(s.T(), val.Address, msg)
s.Require().NoError(err)
s.Require().NoError(s.network.WaitForNextBlock())
@ -312,7 +308,7 @@ func (s *E2ETestSuite) TestPoPResult() {
msg1 := daotypes.NewMsgReissueRDDLProposal(val.Address.String(), hex.EncodeToString(val.PubKey.Address()),
"reissueasset 7add40beb27df701e02ee85089c5bc0021bc813823fedb5f1dcb5debda7f3da9 2996.57534244",
challenges[4].Height, challenges[0].Height, challenges[2].Height)
output, err := lib.BroadcastTxWithFileLock(val.Address, msg1)
output, err := e2etestutil.BuildSignBroadcastTx(s.T(), val.Address, msg1)
s.Require().NoError(err)
s.Require().NoError(s.network.WaitForNextBlock())
@ -322,7 +318,7 @@ func (s *E2ETestSuite) TestPoPResult() {
// send ReissuanceResult
msg2 := daotypes.NewMsgReissueRDDLResult(val.Address.String(), aliceAddr.String(), "TxID", challenges[4].Height)
output, err = lib.BroadcastTxWithFileLock(val.Address, msg2)
output, err = e2etestutil.BuildSignBroadcastTx(s.T(), val.Address, msg2)
s.Require().NoError(err)
s.Require().NoError(s.network.WaitForNextBlock())
@ -340,7 +336,7 @@ func (s *E2ETestSuite) TestPoPResult() {
InvestorTxID: "InvestorTxID",
}
msg3 := daotypes.NewMsgDistributionRequest(val.Address.String(), &distributionOrder)
output, err = lib.BroadcastTxWithFileLock(val.Address, msg3)
output, err = e2etestutil.BuildSignBroadcastTx(s.T(), val.Address, msg3)
s.Require().NoError(err)
s.Require().NoError(s.network.WaitForNextBlock())
@ -350,7 +346,7 @@ func (s *E2ETestSuite) TestPoPResult() {
// send DistributionResult
msg4 := daotypes.NewMsgDistributionResult(val.Address.String(), challenges[2].Height, "DaoTxID", "InvestorTxID", "PoPTxID")
output, err = lib.BroadcastTxWithFileLock(val.Address, msg4)
output, err = e2etestutil.BuildSignBroadcastTx(s.T(), val.Address, msg4)
s.Require().NoError(err)
s.Require().NoError(s.network.WaitForNextBlock())

View File

@ -60,7 +60,7 @@ func (s *E2ETestSuite) TestAttestMachine() {
ta := sample.TrustAnchor(pubKey)
msg1 := machinetypes.NewMsgRegisterTrustAnchor(val.Address.String(), &ta)
out, err := lib.BroadcastTxWithFileLock(val.Address, msg1)
out, err := e2etestutil.BuildSignBroadcastTx(s.T(), val.Address, msg1)
s.Require().NoError(err)
s.Require().NoError(s.network.WaitForNextBlock())
@ -82,7 +82,7 @@ func (s *E2ETestSuite) TestAttestMachine() {
machine := sample.Machine(sample.Name, pubKey, prvKey, addr.String())
msg2 := machinetypes.NewMsgAttestMachine(addr.String(), &machine)
out, err = lib.BroadcastTxWithFileLock(addr, msg2)
out, err = e2etestutil.BuildSignBroadcastTx(s.T(), addr, msg2)
s.Require().NoError(err)
s.Require().NoError(s.network.WaitForNextBlock())
@ -156,13 +156,8 @@ func (s *E2ETestSuite) TestMachineAllowanceAttestation() {
ta := sample.TrustAnchor(pubKey)
msg1 := machinetypes.NewMsgRegisterTrustAnchor(val.Address.String(), &ta)
out, err := lib.BroadcastTxWithFileLock(val.Address, msg1)
_, err = e2etestutil.BuildSignBroadcastTx(s.T(), val.Address, msg1)
s.Require().NoError(err)
s.Require().NoError(s.network.WaitForNextBlock())
_, err = clitestutil.GetRawLogFromTxOut(val, out)
s.Require().NoError(err)
s.Require().NoError(s.network.WaitForNextBlock())
// create allowance for machine
@ -178,13 +173,8 @@ func (s *E2ETestSuite) TestMachineAllowanceAttestation() {
msg2, err := feegrant.NewMsgGrantAllowance(grant, val.Address, addr)
s.Require().NoError(err)
_, err = lib.BroadcastTxWithFileLock(val.Address, msg2)
_, err = e2etestutil.BuildSignBroadcastTx(s.T(), val.Address, msg2)
s.Require().NoError(err)
s.Require().NoError(s.network.WaitForNextBlock())
_, err = clitestutil.GetRawLogFromTxOut(val, out)
s.Require().NoError(err)
s.Require().NoError(s.network.WaitForNextBlock())
// attest machine with fee granter without funding the machine account first
@ -199,13 +189,8 @@ func (s *E2ETestSuite) TestMachineAllowanceAttestation() {
libConfig.SetClientCtx(clientCtx)
msg3 := machinetypes.NewMsgAttestMachine(addr.String(), &machine)
_, err = lib.BroadcastTxWithFileLock(addr, msg3)
_, err = e2etestutil.BuildSignBroadcastTx(s.T(), addr, msg3)
s.Require().NoError(err)
s.Require().NoError(s.network.WaitForNextBlock())
_, err = clitestutil.GetRawLogFromTxOut(val, out)
s.Require().NoError(err)
s.Require().NoError(s.network.WaitForNextBlock())
args := []string{

29
testutil/e2e/tx.go Normal file
View File

@ -0,0 +1,29 @@
package e2e
import (
"bytes"
"errors"
"testing"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/planetmint/planetmint-go/lib"
)
// BuildSignBroadcastTx builds, signs and broadcasts transaction to the network.
func BuildSignBroadcastTx(t *testing.T, addr sdk.AccAddress, msg sdk.Msg) (out *bytes.Buffer, err error) {
out, err = lib.BroadcastTxWithFileLock(addr, msg)
if err != nil {
t.Log("broadcast tx failed: " + err.Error())
return
}
txResponse, err := lib.GetTxResponseFromOut(out)
if err != nil {
t.Log("getting tx response from out failed: " + err.Error())
return
}
if txResponse.Code != 0 {
err = errors.New(txResponse.RawLog)
return
}
return
}

View File

@ -33,12 +33,16 @@ func buildSignBroadcastTx(goCtx context.Context, loggingContext string, sendingV
GetAppLogger().Error(ctx, loggingContext+" getting tx response from out failed: "+err.Error())
return
}
if txResponse.Code == 0 {
GetAppLogger().Info(ctx, loggingContext+" broadcast tx succeeded")
return
}
txResponseJSON, err := yaml.YAMLToJSON([]byte(txResponse.String()))
if err != nil {
GetAppLogger().Error(ctx, loggingContext+" converting tx response from yaml to json failed: "+err.Error())
return
}
GetAppLogger().Info(ctx, loggingContext+" broadcast tx succeeded: "+string(txResponseJSON))
GetAppLogger().Error(ctx, loggingContext+" broadcast tx failed: "+string(txResponseJSON))
}()
}