mirror of
https://github.com/fluencelabs/tendermint
synced 2025-04-25 06:42:16 +00:00
Update state to keep track of this info. Change function args as needed. Make NumTx also an int64 for consistency.
75 lines
1.8 KiB
Go
75 lines
1.8 KiB
Go
package state
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/tendermint/abci/example/dummy"
|
|
crypto "github.com/tendermint/go-crypto"
|
|
"github.com/tendermint/tendermint/proxy"
|
|
"github.com/tendermint/tendermint/types"
|
|
dbm "github.com/tendermint/tmlibs/db"
|
|
"github.com/tendermint/tmlibs/log"
|
|
)
|
|
|
|
var (
|
|
privKey = crypto.GenPrivKeyEd25519FromSecret([]byte("execution_test"))
|
|
chainID = "execution_chain"
|
|
testPartSize = 65536
|
|
nTxsPerBlock = 10
|
|
)
|
|
|
|
func TestApplyBlock(t *testing.T) {
|
|
cc := proxy.NewLocalClientCreator(dummy.NewDummyApplication())
|
|
proxyApp := proxy.NewAppConns(cc, nil)
|
|
err := proxyApp.Start()
|
|
require.Nil(t, err)
|
|
defer proxyApp.Stop()
|
|
|
|
state := state()
|
|
state.SetLogger(log.TestingLogger())
|
|
|
|
// make block
|
|
block := makeBlock(1, state)
|
|
|
|
err = state.ApplyBlock(types.NopEventBus{}, proxyApp.Consensus(), block, block.MakePartSet(testPartSize).Header(), types.MockMempool{})
|
|
|
|
require.Nil(t, err)
|
|
|
|
// TODO check state and mempool
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
// make some bogus txs
|
|
func makeTxs(height int64) (txs []types.Tx) {
|
|
for i := 0; i < nTxsPerBlock; i++ {
|
|
txs = append(txs, types.Tx([]byte{byte(height), byte(i)}))
|
|
}
|
|
return txs
|
|
}
|
|
|
|
func state() *State {
|
|
s, _ := MakeGenesisState(dbm.NewMemDB(), &types.GenesisDoc{
|
|
ChainID: chainID,
|
|
Validators: []types.GenesisValidator{
|
|
{privKey.PubKey(), 10000, "test"},
|
|
},
|
|
AppHash: nil,
|
|
})
|
|
return s
|
|
}
|
|
|
|
func makeBlock(height int64, state *State) *types.Block {
|
|
prevHash := state.LastBlockID.Hash
|
|
prevParts := types.PartSetHeader{}
|
|
valHash := state.Validators.Hash()
|
|
prevBlockID := types.BlockID{prevHash, prevParts}
|
|
block, _ := types.MakeBlock(height, chainID,
|
|
makeTxs(height), state.LastBlockTotalTx,
|
|
new(types.Commit), prevBlockID, valHash,
|
|
state.AppHash, testPartSize)
|
|
return block
|
|
}
|