mirror of
https://github.com/0glabs/0g-chain.git
synced 2024-11-10 10:05:18 +00:00
test: util
This commit is contained in:
parent
dfa3dc0931
commit
88359d2e3c
88
precompiles/testutil/suite.go
Normal file
88
precompiles/testutil/suite.go
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
package testutil
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/0glabs/0g-chain/app"
|
||||||
|
"github.com/0glabs/0g-chain/chaincfg"
|
||||||
|
dasignersprecompile "github.com/0glabs/0g-chain/precompiles/dasigners"
|
||||||
|
"github.com/0glabs/0g-chain/x/bep3/types"
|
||||||
|
"github.com/cosmos/cosmos-sdk/crypto/keyring"
|
||||||
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
"github.com/ethereum/go-ethereum/crypto"
|
||||||
|
emtests "github.com/evmos/ethermint/tests"
|
||||||
|
evmkeeper "github.com/evmos/ethermint/x/evm/keeper"
|
||||||
|
"github.com/evmos/ethermint/x/evm/statedb"
|
||||||
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
|
cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types"
|
||||||
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||||
|
stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
|
||||||
|
ethtypes "github.com/ethereum/go-ethereum/core/types"
|
||||||
|
"github.com/evmos/ethermint/crypto/ethsecp256k1"
|
||||||
|
|
||||||
|
tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
|
||||||
|
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
type PrecompileTestSuite struct {
|
||||||
|
suite.Suite
|
||||||
|
|
||||||
|
StakingKeeper *stakingkeeper.Keeper
|
||||||
|
App app.TestApp
|
||||||
|
Ctx sdk.Context
|
||||||
|
QueryClient types.QueryClient
|
||||||
|
Addresses []sdk.AccAddress
|
||||||
|
|
||||||
|
EvmKeeper *evmkeeper.Keeper
|
||||||
|
EthSigner ethtypes.Signer
|
||||||
|
Statedb *statedb.StateDB
|
||||||
|
}
|
||||||
|
|
||||||
|
type TestSigner struct {
|
||||||
|
Addr common.Address
|
||||||
|
HexAddr string
|
||||||
|
PrivKey cryptotypes.PrivKey
|
||||||
|
Signer keyring.Signer
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenSigner() *TestSigner {
|
||||||
|
var s TestSigner
|
||||||
|
addr, priv := emtests.NewAddrKey()
|
||||||
|
s.PrivKey = priv
|
||||||
|
s.Addr = addr
|
||||||
|
s.HexAddr = dasignersprecompile.ToLowerHexWithoutPrefix(s.Addr)
|
||||||
|
s.Signer = emtests.NewSigner(priv)
|
||||||
|
return &s
|
||||||
|
}
|
||||||
|
|
||||||
|
func (suite *PrecompileTestSuite) SetupTest() {
|
||||||
|
chaincfg.SetSDKConfig()
|
||||||
|
suite.App = app.NewTestApp()
|
||||||
|
suite.App.InitializeFromGenesisStates()
|
||||||
|
suite.StakingKeeper = suite.App.GetStakingKeeper()
|
||||||
|
|
||||||
|
// make block header
|
||||||
|
privkey, _ := ethsecp256k1.GenerateKey()
|
||||||
|
consAddress := sdk.ConsAddress(privkey.PubKey().Address())
|
||||||
|
key, err := privkey.ToECDSA()
|
||||||
|
suite.Assert().NoError(err)
|
||||||
|
hexAddr := strings.ToLower(crypto.PubkeyToAddress(key.PublicKey).Hex()[2:])
|
||||||
|
valAddr, err := sdk.ValAddressFromHex(hexAddr)
|
||||||
|
suite.Assert().NoError(err)
|
||||||
|
suite.Ctx = suite.App.NewContext(true, tmproto.Header{Height: 1, ChainID: app.TestChainId, ProposerAddress: consAddress})
|
||||||
|
newValidator, err := stakingtypes.NewValidator(valAddr, privkey.PubKey(), stakingtypes.Description{})
|
||||||
|
suite.Assert().NoError(err)
|
||||||
|
err = suite.StakingKeeper.SetValidatorByConsAddr(suite.Ctx, newValidator)
|
||||||
|
suite.Assert().NoError(err)
|
||||||
|
suite.StakingKeeper.SetValidator(suite.Ctx, newValidator)
|
||||||
|
|
||||||
|
_, accAddresses := app.GeneratePrivKeyAddressPairs(10)
|
||||||
|
suite.Addresses = accAddresses
|
||||||
|
|
||||||
|
suite.EvmKeeper = suite.App.GetEvmKeeper()
|
||||||
|
|
||||||
|
suite.EthSigner = ethtypes.LatestSignerForChainID(suite.EvmKeeper.ChainID())
|
||||||
|
|
||||||
|
suite.Statedb = statedb.New(suite.Ctx, suite.EvmKeeper, statedb.NewEmptyTxConfig(common.BytesToHash(suite.Ctx.HeaderHash().Bytes())))
|
||||||
|
}
|
@ -113,7 +113,7 @@ func (suite *KeeperTestSuite) testUpdateSocket(signer *types.Signer) {
|
|||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *KeeperTestSuite) testRegisterEpochInvalidSignature(signer *types.Signer) {
|
func (suite *KeeperTestSuite) testRegisterEpochInvalidSignature() {
|
||||||
sk := big.NewInt(2)
|
sk := big.NewInt(2)
|
||||||
hash := types.EpochRegistrationHash(common.HexToAddress(signer1), 1, big.NewInt(8888))
|
hash := types.EpochRegistrationHash(common.HexToAddress(signer1), 1, big.NewInt(8888))
|
||||||
signature := new(bn254.G1Affine).ScalarMultiplication(hash, sk)
|
signature := new(bn254.G1Affine).ScalarMultiplication(hash, sk)
|
||||||
@ -322,7 +322,7 @@ func (suite *KeeperTestSuite) Test_Keeper() {
|
|||||||
signerOne := suite.testRegisterSignerSuccess()
|
signerOne := suite.testRegisterSignerSuccess()
|
||||||
suite.testQuerySigner(signerOne)
|
suite.testQuerySigner(signerOne)
|
||||||
suite.testUpdateSocket(signerOne)
|
suite.testUpdateSocket(signerOne)
|
||||||
suite.testRegisterEpochInvalidSignature(signerOne)
|
suite.testRegisterEpochInvalidSignature()
|
||||||
suite.testRegisterEpochSuccess()
|
suite.testRegisterEpochSuccess()
|
||||||
suite.secondSigner()
|
suite.secondSigner()
|
||||||
suite.newEpoch(params)
|
suite.newEpoch(params)
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
package testutil
|
package testutil
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"strings"
|
||||||
|
|
||||||
"cosmossdk.io/math"
|
"cosmossdk.io/math"
|
||||||
tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
|
tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
|
||||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||||
stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
|
stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
|
||||||
|
"github.com/ethereum/go-ethereum/crypto"
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/0glabs/0g-chain/app"
|
"github.com/0glabs/0g-chain/app"
|
||||||
@ -34,7 +37,22 @@ func (suite *Suite) SetupTest() {
|
|||||||
suite.App.InitializeFromGenesisStates()
|
suite.App.InitializeFromGenesisStates()
|
||||||
suite.Keeper = suite.App.GetDASignersKeeper()
|
suite.Keeper = suite.App.GetDASignersKeeper()
|
||||||
suite.StakingKeeper = suite.App.GetStakingKeeper()
|
suite.StakingKeeper = suite.App.GetStakingKeeper()
|
||||||
suite.Ctx = suite.App.NewContext(true, tmproto.Header{Height: 1, ChainID: app.TestChainId})
|
|
||||||
|
// make block header
|
||||||
|
privkey, _ := ethsecp256k1.GenerateKey()
|
||||||
|
consAddress := sdk.ConsAddress(privkey.PubKey().Address())
|
||||||
|
key, err := privkey.ToECDSA()
|
||||||
|
suite.Assert().NoError(err)
|
||||||
|
hexAddr := strings.ToLower(crypto.PubkeyToAddress(key.PublicKey).Hex()[2:])
|
||||||
|
valAddr, err := sdk.ValAddressFromHex(hexAddr)
|
||||||
|
suite.Assert().NoError(err)
|
||||||
|
suite.Ctx = suite.App.NewContext(true, tmproto.Header{Height: 1, ChainID: app.TestChainId, ProposerAddress: consAddress})
|
||||||
|
newValidator, err := stakingtypes.NewValidator(valAddr, privkey.PubKey(), stakingtypes.Description{})
|
||||||
|
suite.Assert().NoError(err)
|
||||||
|
err = suite.StakingKeeper.SetValidatorByConsAddr(suite.Ctx, newValidator)
|
||||||
|
suite.Assert().NoError(err)
|
||||||
|
suite.StakingKeeper.SetValidator(suite.Ctx, newValidator)
|
||||||
|
|
||||||
_, accAddresses := app.GeneratePrivKeyAddressPairs(10)
|
_, accAddresses := app.GeneratePrivKeyAddressPairs(10)
|
||||||
suite.Addresses = accAddresses
|
suite.Addresses = accAddresses
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user