2020-04-01 18:49:21 +00:00
|
|
|
package types_test
|
2019-12-19 06:18:50 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
"math/big"
|
|
|
|
|
2020-04-01 18:49:21 +00:00
|
|
|
"github.com/stretchr/testify/suite"
|
|
|
|
|
2019-12-19 06:18:50 +00:00
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
|
|
|
|
|
|
ethcmn "github.com/ethereum/go-ethereum/common"
|
|
|
|
ethtypes "github.com/ethereum/go-ethereum/core/types"
|
|
|
|
|
2020-04-01 18:49:21 +00:00
|
|
|
"github.com/cosmos/ethermint/app"
|
|
|
|
"github.com/cosmos/ethermint/x/evm/keeper"
|
2019-12-19 06:18:50 +00:00
|
|
|
|
|
|
|
abci "github.com/tendermint/tendermint/abci/types"
|
|
|
|
)
|
|
|
|
|
2020-04-01 18:49:21 +00:00
|
|
|
// nolint: unused
|
|
|
|
type StateDBTestSuite struct {
|
|
|
|
suite.Suite
|
2019-12-19 06:18:50 +00:00
|
|
|
|
2020-04-01 18:49:21 +00:00
|
|
|
ctx sdk.Context
|
|
|
|
querier sdk.Querier
|
|
|
|
app *app.EthermintApp
|
2019-12-19 06:18:50 +00:00
|
|
|
}
|
|
|
|
|
2020-04-01 18:49:21 +00:00
|
|
|
func (suite *StateDBTestSuite) SetupTest() {
|
|
|
|
checkTx := false
|
|
|
|
|
|
|
|
suite.app = app.Setup(checkTx)
|
|
|
|
suite.ctx = suite.app.BaseApp.NewContext(checkTx, abci.Header{Height: 1})
|
|
|
|
suite.querier = keeper.NewQuerier(suite.app.EvmKeeper)
|
2019-12-19 06:18:50 +00:00
|
|
|
}
|
|
|
|
|
2020-04-01 18:49:21 +00:00
|
|
|
func (suite *StateDBTestSuite) TestBloomFilter() {
|
|
|
|
stateDB := suite.app.EvmKeeper.CommitStateDB
|
2019-12-19 06:18:50 +00:00
|
|
|
|
|
|
|
// Prepare db for logs
|
|
|
|
tHash := ethcmn.BytesToHash([]byte{0x1})
|
2020-03-16 22:53:24 +00:00
|
|
|
stateDB.Prepare(tHash, ethcmn.Hash{}, 0)
|
2019-12-19 06:18:50 +00:00
|
|
|
|
|
|
|
contractAddress := ethcmn.BigToAddress(big.NewInt(1))
|
|
|
|
|
|
|
|
// Generate and add a log to test
|
|
|
|
log := ethtypes.Log{Address: contractAddress}
|
|
|
|
stateDB.AddLog(&log)
|
|
|
|
|
|
|
|
// Get log from db
|
2020-04-01 18:49:21 +00:00
|
|
|
logs, err := stateDB.GetLogs(tHash)
|
|
|
|
suite.Require().NoError(err)
|
2020-04-30 03:36:30 +00:00
|
|
|
suite.Require().Len(logs, 1)
|
|
|
|
suite.Require().Equal(log, logs[0])
|
2019-12-19 06:18:50 +00:00
|
|
|
|
|
|
|
// get logs bloom from the log
|
|
|
|
bloomInt := ethtypes.LogsBloom(logs)
|
|
|
|
bloomFilter := ethtypes.BytesToBloom(bloomInt.Bytes())
|
|
|
|
|
|
|
|
// Check to make sure bloom filter will succeed on
|
2020-04-01 18:49:21 +00:00
|
|
|
suite.Require().True(ethtypes.BloomLookup(bloomFilter, contractAddress))
|
|
|
|
suite.Require().False(ethtypes.BloomLookup(bloomFilter, ethcmn.BigToAddress(big.NewInt(2))))
|
2019-12-19 06:18:50 +00:00
|
|
|
}
|