From 3e23260a9cd71442901b2043cb8e9534c26d47ab Mon Sep 17 00:00:00 2001 From: Julian Strobl Date: Fri, 5 Jan 2024 13:43:52 +0100 Subject: [PATCH] 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 --- tests/e2e/asset/suite.go | 2 +- tests/e2e/dao/suite.go | 22 +++++++++------------- tests/e2e/machine/suite.go | 25 +++++-------------------- testutil/e2e/tx.go | 29 +++++++++++++++++++++++++++++ util/issue_commands.go | 6 +++++- 5 files changed, 49 insertions(+), 35 deletions(-) create mode 100644 testutil/e2e/tx.go diff --git a/tests/e2e/asset/suite.go b/tests/e2e/asset/suite.go index 0252d52..2235923 100644 --- a/tests/e2e/asset/suite.go +++ b/tests/e2e/asset/suite.go @@ -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) diff --git a/tests/e2e/dao/suite.go b/tests/e2e/dao/suite.go index be35066..a0a592c 100644 --- a/tests/e2e/dao/suite.go +++ b/tests/e2e/dao/suite.go @@ -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()) diff --git a/tests/e2e/machine/suite.go b/tests/e2e/machine/suite.go index 491e3b3..ea710d8 100644 --- a/tests/e2e/machine/suite.go +++ b/tests/e2e/machine/suite.go @@ -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{ diff --git a/testutil/e2e/tx.go b/testutil/e2e/tx.go new file mode 100644 index 0000000..5e65ff2 --- /dev/null +++ b/testutil/e2e/tx.go @@ -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 +} diff --git a/util/issue_commands.go b/util/issue_commands.go index e227a8e..cfc782c 100644 --- a/util/issue_commands.go +++ b/util/issue_commands.go @@ -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)) }() }