fix: all: fix resource leaks found by staticmajor (#13394)
Fixes resource leaks in which a .Close, .Stop method wasn't invoked in return routes such as with errors. Found by https://github.com/cosmos/cosmos-sdk/pull/13392
This commit is contained in:
parent
fbd81ba0b7
commit
481569ce4f
@ -70,6 +70,7 @@ func compress(fd *dpb.FileDescriptorProto) ([]byte, error) {
|
||||
cw := gzip.NewWriter(buf)
|
||||
_, err = cw.Write(fdBytes)
|
||||
if err != nil {
|
||||
cw.Close()
|
||||
return nil, err
|
||||
}
|
||||
err = cw.Close()
|
||||
|
||||
@ -280,6 +280,16 @@ func startInProcess(ctx *Context, clientCtx client.Context, appCreator types.App
|
||||
return err
|
||||
}
|
||||
|
||||
// Clean up the traceWriter in the cpuProfileCleanup routine that is invoked
|
||||
// when the server is shutting down.
|
||||
fn := cpuProfileCleanup
|
||||
cpuProfileCleanup = func() {
|
||||
if fn != nil {
|
||||
fn()
|
||||
}
|
||||
traceWriter.Close()
|
||||
}
|
||||
|
||||
config, err := serverconfig.GetConfig(ctx.Viper)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@ -398,7 +398,7 @@ func openDB(rootDir string, backendType dbm.BackendType) (dbm.DB, error) {
|
||||
return dbm.NewDB("application", backendType, dataDir)
|
||||
}
|
||||
|
||||
func openTraceWriter(traceWriterFile string) (w io.Writer, err error) {
|
||||
func openTraceWriter(traceWriterFile string) (w io.WriteCloser, err error) {
|
||||
if traceWriterFile == "" {
|
||||
return
|
||||
}
|
||||
|
||||
@ -71,7 +71,7 @@ type GatherResponse struct {
|
||||
}
|
||||
|
||||
// New creates a new instance of Metrics
|
||||
func New(cfg Config) (*Metrics, error) {
|
||||
func New(cfg Config) (_ *Metrics, rerr error) {
|
||||
if !cfg.Enabled {
|
||||
return nil, nil
|
||||
}
|
||||
@ -90,7 +90,12 @@ func New(cfg Config) (*Metrics, error) {
|
||||
metricsConf.EnableHostnameLabel = cfg.EnableHostnameLabel
|
||||
|
||||
memSink := metrics.NewInmemSink(10*time.Second, time.Minute)
|
||||
metrics.DefaultInmemSignal(memSink)
|
||||
inMemSig := metrics.DefaultInmemSignal(memSink)
|
||||
defer func() {
|
||||
if rerr != nil {
|
||||
inMemSig.Stop()
|
||||
}
|
||||
}()
|
||||
|
||||
m := &Metrics{memSink: memSink}
|
||||
fanout := metrics.FanoutSink{memSink}
|
||||
|
||||
@ -41,7 +41,7 @@ func startInProcess(cfg Config, val *Validator) error {
|
||||
app := cfg.AppConstructor(*val)
|
||||
genDocProvider := node.DefaultGenesisDocProviderFunc(tmCfg)
|
||||
|
||||
tmNode, err := node.NewNode(
|
||||
tmNode, err := node.NewNode( //resleak:notresource
|
||||
tmCfg,
|
||||
pvm.LoadOrGenFilePV(tmCfg.PrivValidatorKeyFile(), tmCfg.PrivValidatorStateFile()),
|
||||
nodeKey,
|
||||
|
||||
@ -100,12 +100,14 @@ func (s *IntegrationTestSuite) TestCLIValidateSignatures() {
|
||||
|
||||
// write unsigned tx to file
|
||||
unsignedTx := testutil.WriteToNewTempFile(s.T(), res.String())
|
||||
defer unsignedTx.Close()
|
||||
res, err = TxSignExec(val.ClientCtx, val.Address, unsignedTx.Name())
|
||||
s.Require().NoError(err)
|
||||
signedTx, err := val.ClientCtx.TxConfig.TxJSONDecoder()(res.Bytes())
|
||||
s.Require().NoError(err)
|
||||
|
||||
signedTxFile := testutil.WriteToNewTempFile(s.T(), res.String())
|
||||
defer signedTxFile.Close()
|
||||
txBuilder, err := val.ClientCtx.TxConfig.WrapTxBuilder(signedTx)
|
||||
s.Require().NoError(err)
|
||||
_, err = TxValidateSignaturesExec(val.ClientCtx, signedTxFile.Name())
|
||||
@ -116,6 +118,7 @@ func (s *IntegrationTestSuite) TestCLIValidateSignatures() {
|
||||
s.Require().NoError(err)
|
||||
|
||||
modifiedTxFile := testutil.WriteToNewTempFile(s.T(), string(bz))
|
||||
defer modifiedTxFile.Close()
|
||||
|
||||
_, err = TxValidateSignaturesExec(val.ClientCtx, modifiedTxFile.Name())
|
||||
s.Require().EqualError(err, "signatures validation failed")
|
||||
@ -147,6 +150,7 @@ func (s *IntegrationTestSuite) TestCLISignGenOnly() {
|
||||
generatedStd, err := clitestutil.ExecTestCLICmd(val.ClientCtx, bank.NewSendTxCmd(), args)
|
||||
s.Require().NoError(err)
|
||||
opFile := testutil.WriteToNewTempFile(s.T(), generatedStd.String())
|
||||
defer opFile.Close()
|
||||
|
||||
commonArgs := []string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagKeyringBackend, keyring.BackendTest),
|
||||
@ -227,9 +231,12 @@ func (s *IntegrationTestSuite) TestCLISignGenOnly() {
|
||||
s.Require().Contains(err.Error(), tc.errMsg)
|
||||
} else {
|
||||
s.Require().NoError(err)
|
||||
signedTx := testutil.WriteToNewTempFile(s.T(), out.String())
|
||||
_, err := TxBroadcastExec(val.ClientCtx, signedTx.Name())
|
||||
s.Require().NoError(err)
|
||||
func() {
|
||||
signedTx := testutil.WriteToNewTempFile(s.T(), out.String())
|
||||
defer signedTx.Close()
|
||||
_, err := TxBroadcastExec(val.ClientCtx, signedTx.Name())
|
||||
s.Require().NoError(err)
|
||||
}()
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -246,6 +253,7 @@ func (s *IntegrationTestSuite) TestCLISignBatch() {
|
||||
s.Require().NoError(err)
|
||||
|
||||
outputFile := testutil.WriteToNewTempFile(s.T(), strings.Repeat(generatedStd.String(), 3))
|
||||
defer outputFile.Close()
|
||||
val.ClientCtx.HomeDir = strings.Replace(val.ClientCtx.HomeDir, "simd", "simcli", 1)
|
||||
|
||||
// sign-batch file - offline is set but account-number and sequence are not
|
||||
@ -277,6 +285,7 @@ func (s *IntegrationTestSuite) TestCLISignBatch() {
|
||||
|
||||
// Sign batch malformed tx file.
|
||||
malformedFile := testutil.WriteToNewTempFile(s.T(), fmt.Sprintf("%smalformed", generatedStd))
|
||||
defer malformedFile.Close()
|
||||
_, err = TxSignBatchExec(val.ClientCtx, val.Address, malformedFile.Name(), fmt.Sprintf("--%s=%s", flags.FlagChainID, val.ClientCtx.ChainID))
|
||||
s.Require().Error(err)
|
||||
|
||||
@ -375,6 +384,7 @@ func (s *IntegrationTestSuite) TestCLISignAminoJSON() {
|
||||
sendTokens, fmt.Sprintf("--%s=true", flags.FlagGenerateOnly))
|
||||
require.NoError(err)
|
||||
fileUnsigned := testutil.WriteToNewTempFile(s.T(), txBz.String())
|
||||
defer fileUnsigned.Close()
|
||||
chainFlag := fmt.Sprintf("--%s=%s", flags.FlagChainID, val1.ClientCtx.ChainID)
|
||||
sigOnlyFlag := "--signature-only"
|
||||
signModeAminoFlag := "--sign-mode=amino-json"
|
||||
@ -792,6 +802,7 @@ func (s *IntegrationTestSuite) TestCLISendGenerateSignAndBroadcast() {
|
||||
|
||||
// Write the output to disk
|
||||
unsignedTxFile := testutil.WriteToNewTempFile(s.T(), finalGeneratedTx.String())
|
||||
defer unsignedTxFile.Close()
|
||||
|
||||
// Test validate-signatures
|
||||
res, err := TxValidateSignaturesExec(val1.ClientCtx, unsignedTxFile.Name())
|
||||
@ -824,6 +835,7 @@ func (s *IntegrationTestSuite) TestCLISendGenerateSignAndBroadcast() {
|
||||
|
||||
// Write the output to disk
|
||||
signedTxFile := testutil.WriteToNewTempFile(s.T(), signedTx.String())
|
||||
defer signedTxFile.Close()
|
||||
|
||||
// validate Signature
|
||||
res, err = TxValidateSignaturesExec(val1.ClientCtx, signedTxFile.Name())
|
||||
@ -908,6 +920,7 @@ func (s *IntegrationTestSuite) TestCLIMultisignInsufficientCosigners() {
|
||||
|
||||
// Save tx to file
|
||||
multiGeneratedTxFile := testutil.WriteToNewTempFile(s.T(), multiGeneratedTx.String())
|
||||
defer multiGeneratedTxFile.Close()
|
||||
|
||||
// Multisign, sign with one signature
|
||||
val1.ClientCtx.HomeDir = strings.Replace(val1.ClientCtx.HomeDir, "simd", "simcli", 1)
|
||||
@ -917,12 +930,14 @@ func (s *IntegrationTestSuite) TestCLIMultisignInsufficientCosigners() {
|
||||
s.Require().NoError(err)
|
||||
|
||||
sign1File := testutil.WriteToNewTempFile(s.T(), account1Signature.String())
|
||||
defer sign1File.Close()
|
||||
|
||||
multiSigWith1Signature, err := TxMultiSignExec(val1.ClientCtx, multisigRecord.Name, multiGeneratedTxFile.Name(), sign1File.Name())
|
||||
s.Require().NoError(err)
|
||||
|
||||
// Save tx to file
|
||||
multiSigWith1SignatureFile := testutil.WriteToNewTempFile(s.T(), multiSigWith1Signature.String())
|
||||
defer multiSigWith1SignatureFile.Close()
|
||||
|
||||
_, err = TxValidateSignaturesExec(val1.ClientCtx, multiSigWith1SignatureFile.Name())
|
||||
s.Require().Error(err)
|
||||
@ -941,6 +956,7 @@ func (s *IntegrationTestSuite) TestCLIEncode() {
|
||||
)
|
||||
s.Require().NoError(err)
|
||||
savedTxFile := testutil.WriteToNewTempFile(s.T(), normalGeneratedTx.String())
|
||||
defer savedTxFile.Close()
|
||||
|
||||
// Encode
|
||||
encodeExec, err := TxEncodeExec(val1.ClientCtx, savedTxFile.Name())
|
||||
@ -1022,6 +1038,7 @@ func (s *IntegrationTestSuite) TestCLIMultisignSortSignatures() {
|
||||
|
||||
// Save tx to file
|
||||
multiGeneratedTxFile := testutil.WriteToNewTempFile(s.T(), multiGeneratedTx.String())
|
||||
defer multiGeneratedTxFile.Close()
|
||||
|
||||
// Sign with account1
|
||||
addr1, err := account1.GetAddress()
|
||||
@ -1031,6 +1048,7 @@ func (s *IntegrationTestSuite) TestCLIMultisignSortSignatures() {
|
||||
s.Require().NoError(err)
|
||||
|
||||
sign1File := testutil.WriteToNewTempFile(s.T(), account1Signature.String())
|
||||
defer sign1File.Close()
|
||||
|
||||
// Sign with account2
|
||||
addr2, err := account2.GetAddress()
|
||||
@ -1039,6 +1057,7 @@ func (s *IntegrationTestSuite) TestCLIMultisignSortSignatures() {
|
||||
s.Require().NoError(err)
|
||||
|
||||
sign2File := testutil.WriteToNewTempFile(s.T(), account2Signature.String())
|
||||
defer sign2File.Close()
|
||||
|
||||
// Sign with dummy account
|
||||
dummyAddr, err := dummyAcc.GetAddress()
|
||||
@ -1052,6 +1071,7 @@ func (s *IntegrationTestSuite) TestCLIMultisignSortSignatures() {
|
||||
|
||||
// Write the output to disk
|
||||
signedTxFile := testutil.WriteToNewTempFile(s.T(), multiSigWith2Signatures.String())
|
||||
defer signedTxFile.Close()
|
||||
|
||||
_, err = TxValidateSignaturesExec(val1.ClientCtx, signedTxFile.Name())
|
||||
s.Require().NoError(err)
|
||||
@ -1095,6 +1115,7 @@ func (s *IntegrationTestSuite) TestSignWithMultisig() {
|
||||
|
||||
// Save multi tx to file
|
||||
multiGeneratedTx2File := testutil.WriteToNewTempFile(s.T(), multisigTx.String())
|
||||
defer multiGeneratedTx2File.Close()
|
||||
|
||||
// Sign using multisig. We're signing a tx on behalf of the multisig address,
|
||||
// even though the tx signer is NOT the multisig address. This is fine though,
|
||||
@ -1155,6 +1176,7 @@ func (s *IntegrationTestSuite) TestCLIMultisign() {
|
||||
|
||||
// Save tx to file
|
||||
multiGeneratedTxFile := testutil.WriteToNewTempFile(s.T(), multiGeneratedTx.String())
|
||||
defer multiGeneratedTxFile.Close()
|
||||
|
||||
addr1, err := account1.GetAddress()
|
||||
s.Require().NoError(err)
|
||||
@ -1164,6 +1186,7 @@ func (s *IntegrationTestSuite) TestCLIMultisign() {
|
||||
s.Require().NoError(err)
|
||||
|
||||
sign1File := testutil.WriteToNewTempFile(s.T(), account1Signature.String())
|
||||
defer sign1File.Close()
|
||||
|
||||
addr2, err := account2.GetAddress()
|
||||
s.Require().NoError(err)
|
||||
@ -1172,6 +1195,7 @@ func (s *IntegrationTestSuite) TestCLIMultisign() {
|
||||
s.Require().NoError(err)
|
||||
|
||||
sign2File := testutil.WriteToNewTempFile(s.T(), account2Signature.String())
|
||||
defer sign2File.Close()
|
||||
|
||||
// Does not work in offline mode.
|
||||
_, err = TxMultiSignExec(val1.ClientCtx, multisigRecord.Name, multiGeneratedTxFile.Name(), "--offline", sign1File.Name(), sign2File.Name())
|
||||
@ -1183,6 +1207,7 @@ func (s *IntegrationTestSuite) TestCLIMultisign() {
|
||||
|
||||
// Write the output to disk
|
||||
signedTxFile := testutil.WriteToNewTempFile(s.T(), multiSigWith2Signatures.String())
|
||||
defer signedTxFile.Close()
|
||||
|
||||
_, err = TxValidateSignaturesExec(val1.ClientCtx, signedTxFile.Name())
|
||||
s.Require().NoError(err)
|
||||
@ -1233,6 +1258,7 @@ func (s *IntegrationTestSuite) TestSignBatchMultisig() {
|
||||
|
||||
// Write the output to disk
|
||||
filename := testutil.WriteToNewTempFile(s.T(), strings.Repeat(generatedStd.String(), 1))
|
||||
defer filename.Close()
|
||||
val.ClientCtx.HomeDir = strings.Replace(val.ClientCtx.HomeDir, "simd", "simcli", 1)
|
||||
|
||||
addr1, err := account1.GetAddress()
|
||||
@ -1243,6 +1269,7 @@ func (s *IntegrationTestSuite) TestSignBatchMultisig() {
|
||||
s.Require().Equal(1, len(strings.Split(strings.Trim(res.String(), "\n"), "\n")))
|
||||
// write sigs to file
|
||||
file1 := testutil.WriteToNewTempFile(s.T(), res.String())
|
||||
defer file1.Close()
|
||||
|
||||
addr2, err := account2.GetAddress()
|
||||
s.Require().NoError(err)
|
||||
@ -1252,6 +1279,7 @@ func (s *IntegrationTestSuite) TestSignBatchMultisig() {
|
||||
s.Require().Equal(1, len(strings.Split(strings.Trim(res.String(), "\n"), "\n")))
|
||||
// write sigs to file2
|
||||
file2 := testutil.WriteToNewTempFile(s.T(), res.String())
|
||||
defer file2.Close()
|
||||
_, err = TxMultiSignExec(val.ClientCtx, multisigRecord.Name, filename.Name(), file1.Name(), file2.Name())
|
||||
s.Require().NoError(err)
|
||||
}
|
||||
@ -1295,6 +1323,7 @@ func (s *IntegrationTestSuite) TestMultisignBatch() {
|
||||
|
||||
// Write the output to disk
|
||||
filename := testutil.WriteToNewTempFile(s.T(), strings.Repeat(generatedStd.String(), 3))
|
||||
defer filename.Close()
|
||||
val.ClientCtx.HomeDir = strings.Replace(val.ClientCtx.HomeDir, "simd", "simcli", 1)
|
||||
|
||||
queryResJSON, err := QueryAccountExec(val.ClientCtx, addr)
|
||||
@ -1310,6 +1339,7 @@ func (s *IntegrationTestSuite) TestMultisignBatch() {
|
||||
s.Require().Equal(3, len(strings.Split(strings.Trim(res.String(), "\n"), "\n")))
|
||||
// write sigs to file
|
||||
file1 := testutil.WriteToNewTempFile(s.T(), res.String())
|
||||
defer file1.Close()
|
||||
|
||||
// sign-batch file with account2
|
||||
addr2, err := account2.GetAddress()
|
||||
@ -1320,17 +1350,21 @@ func (s *IntegrationTestSuite) TestMultisignBatch() {
|
||||
|
||||
// multisign the file
|
||||
file2 := testutil.WriteToNewTempFile(s.T(), res.String())
|
||||
defer file2.Close()
|
||||
res, err = TxMultiSignBatchExec(val.ClientCtx, filename.Name(), multisigRecord.Name, file1.Name(), file2.Name())
|
||||
s.Require().NoError(err)
|
||||
signedTxs := strings.Split(strings.Trim(res.String(), "\n"), "\n")
|
||||
|
||||
// Broadcast transactions.
|
||||
for _, signedTx := range signedTxs {
|
||||
signedTxFile := testutil.WriteToNewTempFile(s.T(), signedTx)
|
||||
val.ClientCtx.BroadcastMode = flags.BroadcastSync
|
||||
_, err = TxBroadcastExec(val.ClientCtx, signedTxFile.Name())
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
func() {
|
||||
signedTxFile := testutil.WriteToNewTempFile(s.T(), signedTx)
|
||||
defer signedTxFile.Close()
|
||||
val.ClientCtx.BroadcastMode = flags.BroadcastSync
|
||||
_, err = TxBroadcastExec(val.ClientCtx, signedTxFile.Name())
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
}()
|
||||
}
|
||||
}
|
||||
|
||||
@ -1420,6 +1454,7 @@ func TestGetBroadcastCommandWithoutOfflineFlag(t *testing.T) {
|
||||
txContents, err := txCfg.TxJSONEncoder()(builder.GetTx())
|
||||
require.NoError(t, err)
|
||||
txFile := testutil.WriteToNewTempFile(t, string(txContents))
|
||||
defer txFile.Close()
|
||||
|
||||
cmd.SetArgs([]string{txFile.Name()})
|
||||
err = cmd.ExecuteContext(ctx)
|
||||
@ -1498,6 +1533,7 @@ func (s *IntegrationTestSuite) TestTxWithoutPublicKey() {
|
||||
txJSON, err := txCfg.TxJSONEncoder()(txBuilder.GetTx())
|
||||
s.Require().NoError(err)
|
||||
unsignedTxFile := testutil.WriteToNewTempFile(s.T(), string(txJSON))
|
||||
defer unsignedTxFile.Close()
|
||||
|
||||
// Sign the file with the unsignedTx.
|
||||
signedTx, err := TxSignExec(val1.ClientCtx, val1.Address, unsignedTxFile.Name(), fmt.Sprintf("--%s=true", cli.FlagOverwrite))
|
||||
@ -1514,6 +1550,7 @@ func (s *IntegrationTestSuite) TestTxWithoutPublicKey() {
|
||||
txJSON, err = val1.ClientCtx.Codec.MarshalJSON(&tx)
|
||||
s.Require().NoError(err)
|
||||
signedTxFile := testutil.WriteToNewTempFile(s.T(), string(txJSON))
|
||||
defer signedTxFile.Close()
|
||||
s.Require().True(strings.Contains(string(txJSON), "\"public_key\":null"))
|
||||
|
||||
// Broadcast tx, test that it shouldn't panic.
|
||||
@ -1553,11 +1590,13 @@ func (s *IntegrationTestSuite) TestSignWithMultiSignersAminoJSON() {
|
||||
txJSON, err := val0.ClientCtx.TxConfig.TxJSONEncoder()(txBuilder.GetTx())
|
||||
require.NoError(err)
|
||||
unsignedTxFile := testutil.WriteToNewTempFile(s.T(), string(txJSON))
|
||||
defer unsignedTxFile.Close()
|
||||
|
||||
// Let val0 sign first the file with the unsignedTx.
|
||||
signedByVal0, err := TxSignExec(val0.ClientCtx, val0.Address, unsignedTxFile.Name(), "--overwrite", "--sign-mode=amino-json")
|
||||
require.NoError(err)
|
||||
signedByVal0File := testutil.WriteToNewTempFile(s.T(), signedByVal0.String())
|
||||
defer signedByVal0File.Close()
|
||||
|
||||
// Then let val1 sign the file with signedByVal0.
|
||||
val1AccNum, val1Seq, err := val0.ClientCtx.AccountRetriever.GetAccountNumberSequence(val0.ClientCtx, val1.Address)
|
||||
@ -1574,6 +1613,7 @@ func (s *IntegrationTestSuite) TestSignWithMultiSignersAminoJSON() {
|
||||
)
|
||||
require.NoError(err)
|
||||
signedTxFile := testutil.WriteToNewTempFile(s.T(), signedTx.String())
|
||||
defer signedTxFile.Close()
|
||||
|
||||
res, err := TxBroadcastExec(
|
||||
val0.ClientCtx,
|
||||
@ -1872,6 +1912,7 @@ func (s *IntegrationTestSuite) TestAuxToFeeWithTips() {
|
||||
} else {
|
||||
require.NoError(err)
|
||||
genTxFile := testutil.WriteToNewTempFile(s.T(), string(res.Bytes()))
|
||||
defer genTxFile.Close()
|
||||
|
||||
// broadcast the tx
|
||||
res, err = TxAuxToFeeExec(
|
||||
|
||||
@ -708,6 +708,7 @@ func (s *IntegrationTestSuite) TestExecAuthorizationWithExpiration() {
|
||||
// msg vote
|
||||
voteTx := fmt.Sprintf(`{"body":{"messages":[{"@type":"/cosmos.gov.v1.MsgVote","proposal_id":"1","voter":"%s","option":"VOTE_OPTION_YES"}],"memo":"","timeout_height":"0","extension_options":[],"non_critical_extension_options":[]},"auth_info":{"signer_infos":[],"fee":{"amount":[],"gas_limit":"200000","payer":"","granter":""}},"signatures":[]}`, val.Address.String())
|
||||
execMsg := testutil.WriteToNewTempFile(s.T(), voteTx)
|
||||
defer execMsg.Close()
|
||||
|
||||
// waiting for authorization to expires
|
||||
time.Sleep(12 * time.Second)
|
||||
@ -752,6 +753,7 @@ func (s *IntegrationTestSuite) TestNewExecGenericAuthorized() {
|
||||
// msg vote
|
||||
voteTx := fmt.Sprintf(`{"body":{"messages":[{"@type":"/cosmos.gov.v1.MsgVote","proposal_id":"1","voter":"%s","option":"VOTE_OPTION_YES"}],"memo":"","timeout_height":"0","extension_options":[],"non_critical_extension_options":[]},"auth_info":{"signer_infos":[],"fee":{"amount":[],"gas_limit":"200000","payer":"","granter":""}},"signatures":[]}`, val.Address.String())
|
||||
execMsg := testutil.WriteToNewTempFile(s.T(), voteTx)
|
||||
defer execMsg.Close()
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
@ -867,6 +869,7 @@ func (s *IntegrationTestSuite) TestNewExecGrantAuthorized() {
|
||||
)
|
||||
s.Require().NoError(err)
|
||||
execMsg := testutil.WriteToNewTempFile(s.T(), normalGeneratedTx.String())
|
||||
defer execMsg.Close()
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
@ -980,6 +983,7 @@ func (s *IntegrationTestSuite) TestExecSendAuthzWithAllowList() {
|
||||
)
|
||||
s.Require().NoError(err)
|
||||
execMsg := testutil.WriteToNewTempFile(s.T(), validGeneratedTx.String())
|
||||
defer execMsg.Close()
|
||||
|
||||
invalidGeneratedTx, err := clitestutil.MsgSendExec(
|
||||
val.ClientCtx,
|
||||
@ -993,6 +997,7 @@ func (s *IntegrationTestSuite) TestExecSendAuthzWithAllowList() {
|
||||
)
|
||||
s.Require().NoError(err)
|
||||
execMsg1 := testutil.WriteToNewTempFile(s.T(), invalidGeneratedTx.String())
|
||||
defer execMsg1.Close()
|
||||
|
||||
// test sending to allowed address
|
||||
args := []string{
|
||||
@ -1057,6 +1062,7 @@ func (s *IntegrationTestSuite) TestExecDelegateAuthorization() {
|
||||
delegateTx := fmt.Sprintf(`{"body":{"messages":[{"@type":"/cosmos.staking.v1beta1.MsgDelegate","delegator_address":"%s","validator_address":"%s","amount":{"denom":"%s","amount":"%s"}}],"memo":"","timeout_height":"0","extension_options":[],"non_critical_extension_options":[]},"auth_info":{"signer_infos":[],"fee":{"amount":[],"gas_limit":"200000","payer":"","granter":""}},"signatures":[]}`, val.Address.String(), val.ValAddress.String(),
|
||||
tokens.GetDenomByIndex(0), tokens[0].Amount)
|
||||
execMsg := testutil.WriteToNewTempFile(s.T(), delegateTx)
|
||||
defer execMsg.Close()
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
@ -1149,6 +1155,7 @@ func (s *IntegrationTestSuite) TestExecDelegateAuthorization() {
|
||||
delegateTx = fmt.Sprintf(`{"body":{"messages":[{"@type":"/cosmos.staking.v1beta1.MsgDelegate","delegator_address":"%s","validator_address":"%s","amount":{"denom":"%s","amount":"%s"}}],"memo":"","timeout_height":"0","extension_options":[],"non_critical_extension_options":[]},"auth_info":{"signer_infos":[],"fee":{"amount":[],"gas_limit":"200000","payer":"","granter":""}},"signatures":[]}`, val.Address.String(), val.ValAddress.String(),
|
||||
tokens.GetDenomByIndex(0), tokens[0].Amount)
|
||||
execMsg = testutil.WriteToNewTempFile(s.T(), delegateTx)
|
||||
defer execMsg.Close()
|
||||
|
||||
testCases = []struct {
|
||||
name string
|
||||
@ -1287,6 +1294,7 @@ func (s *IntegrationTestSuite) TestExecUndelegateAuthorization() {
|
||||
undelegateTx := fmt.Sprintf(`{"body":{"messages":[{"@type":"/cosmos.staking.v1beta1.MsgUndelegate","delegator_address":"%s","validator_address":"%s","amount":{"denom":"%s","amount":"%s"}}],"memo":"","timeout_height":"0","extension_options":[],"non_critical_extension_options":[]},"auth_info":{"signer_infos":[],"fee":{"amount":[],"gas_limit":"200000","payer":"","granter":""}},"signatures":[]}`, val.Address.String(), val.ValAddress.String(),
|
||||
tokens.GetDenomByIndex(0), tokens[0].Amount)
|
||||
execMsg := testutil.WriteToNewTempFile(s.T(), undelegateTx)
|
||||
defer execMsg.Close()
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
@ -1382,6 +1390,7 @@ func (s *IntegrationTestSuite) TestExecUndelegateAuthorization() {
|
||||
undelegateTx = fmt.Sprintf(`{"body":{"messages":[{"@type":"/cosmos.staking.v1beta1.MsgUndelegate","delegator_address":"%s","validator_address":"%s","amount":{"denom":"%s","amount":"%s"}}],"memo":"","timeout_height":"0","extension_options":[],"non_critical_extension_options":[]},"auth_info":{"signer_infos":[],"fee":{"amount":[],"gas_limit":"200000","payer":"","granter":""}},"signatures":[]}`, val.Address.String(), val.ValAddress.String(),
|
||||
tokens.GetDenomByIndex(0), tokens[0].Amount)
|
||||
execMsg = testutil.WriteToNewTempFile(s.T(), undelegateTx)
|
||||
defer execMsg.Close()
|
||||
|
||||
testCases = []struct {
|
||||
name string
|
||||
|
||||
@ -89,6 +89,7 @@ func (s *IntegrationTestSuite) TestNewCmdSubmitProposal() {
|
||||
"deposit": "-324foocoin"
|
||||
}`
|
||||
invalidPropFile := testutil.WriteToNewTempFile(s.T(), invalidProp)
|
||||
defer invalidPropFile.Close()
|
||||
|
||||
// Create a valid new proposal JSON.
|
||||
propMetadata := []byte{42}
|
||||
@ -109,6 +110,7 @@ func (s *IntegrationTestSuite) TestNewCmdSubmitProposal() {
|
||||
"deposit": "%s"
|
||||
}`, authtypes.NewModuleAddress(types.ModuleName), base64.StdEncoding.EncodeToString(propMetadata), sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(5431)))
|
||||
validPropFile := testutil.WriteToNewTempFile(s.T(), validProp)
|
||||
defer validPropFile.Close()
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
@ -168,6 +170,7 @@ func (s *IntegrationTestSuite) TestNewCmdSubmitLegacyProposal() {
|
||||
"deposit": "-324foocoin"
|
||||
}`
|
||||
invalidPropFile := testutil.WriteToNewTempFile(s.T(), invalidProp)
|
||||
defer invalidPropFile.Close()
|
||||
validProp := fmt.Sprintf(`{
|
||||
"title": "Text Proposal",
|
||||
"description": "Hello, World!",
|
||||
@ -175,6 +178,8 @@ func (s *IntegrationTestSuite) TestNewCmdSubmitLegacyProposal() {
|
||||
"deposit": "%s"
|
||||
}`, sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(5431)))
|
||||
validPropFile := testutil.WriteToNewTempFile(s.T(), validProp)
|
||||
defer validPropFile.Close()
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
|
||||
Loading…
Reference in New Issue
Block a user