testcommon

package
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 15, 2020 License: GPL-3.0 Imports: 51 Imported by: 0

Documentation

Overview

Copyright 2018 Celer Network

Index

Constants

View Source
const (
	// outPathPrefix is the path prefix for all output from e2e (incl. chain data, binaries etc)
	// the code will append epoch second to this and create the folder
	// the folder will be deleted after test ends successfully
	OutRootDirPrefix = "/tmp/celer_e2e_"
	EnvDir           = "../../env"
	LocalGeth        = "http://127.0.0.1:8545"

	SgnChainID    = "sgnchain"
	SgnPassphrase = "12341234"
	SgnGasPrice   = ""
	SgnCLIAddr    = "cosmos1sev3nak38elq95lumnh6t2drjtfx73274vnnjh"
	SgnNodeURI    = "tcp://localhost:26657"

	SgnBlockInterval = 1
	DefaultTimeout   = 60 * time.Second

	BlockDelay      = 0
	PollingInterval = time.Second
	DisputeTimeout  = 100

	RetryPeriod = 200 * time.Millisecond
	RetryLimit  = 200
)

Variables

View Source
var (
	SgnCLIHomes    = [...]string{"../../../docker-volumes/node0/sgncli", "../../../docker-volumes/node1/sgncli", "../../../docker-volumes/node2/sgncli"}
	SgnOperators   = [...]string{"cosmos1ddvpnk98da5hgzz8lf5y82gnsrhvu3jd3cukpp", "cosmos1lh8cr9p2a9dxtunte0sn3qmjkyksdh5yc5yxph", "cosmos122w97t8vsa3538fr3ylvz3hvuqxrgpnax8es8f"}
	ValEthKs       = [...]string{"../../keys/ethks0.json", "../../keys/ethks1.json", "../../keys/ethks2.json"}
	ValEthAddrs    = [...]string{"6a6d2a97da1c453a4e099e8054865a0a59728863", "ba756d65a1a03f07d205749f35e2406e4a8522ad", "f25d8b54fad6e976eb9175659ae01481665a2254"}
	ClientEthKs    = [...]string{"../../keys/ethks3.json", "../../keys/ethks4.json"}
	ClientEthAddrs = [...]string{"cb409caa43e385288d6bff2c3a0635688c7b3294", "75e912af38888643829380fa9f2c4019f5710ff5"}
)
View Source
var (
	EthClient      *ethclient.Client
	EtherBaseAuth  *bind.TransactOpts
	DposContract   *mainchain.DPoS
	SgnContract    *mainchain.SGN
	LedgerContract *mainchain.CelerLedger

	Client0 *TestEthClient
	Client1 *TestEthClient
)

Functions

func AccountsCommand

func AccountsCommand() *cobra.Command

func AddCandidateWithStake

func AddCandidateWithStake(t *testing.T, transactor *transactor.Transactor,
	ethAddr mainchain.Addr, auth *bind.TransactOpts,
	sgnop string, amt *big.Int, minAmt *big.Int, commissionRate *big.Int,
	rateLockEndTime *big.Int, isValidator bool)

func AddValidators

func AddValidators(t *testing.T, transactor *transactor.Transactor, ethkss, sgnops []string, amts []*big.Int)

func CheckCandidate

func CheckCandidate(t *testing.T, transactor *transactor.Transactor, ethAddr mainchain.Addr, sgnop string, expAmt *big.Int)

func CheckDelegator

func CheckDelegator(t *testing.T, transactor *transactor.Transactor, validatorAddr, delegatorAddr mainchain.Addr, expAmt *big.Int)

func CheckValidator

func CheckValidator(t *testing.T, transactor *transactor.Transactor, sgnop string, expAmt *big.Int, expStatus sdk.BondStatus)

func CheckValidatorNum

func CheckValidatorNum(t *testing.T, transactor *transactor.Transactor, expNum int)

func CheckValidatorStatus

func CheckValidatorStatus(t *testing.T, transactor *transactor.Transactor, sgnop string, expStatus sdk.BondStatus)

func ChkErr

func ChkErr(err error, msg string)

func ChkTestErr

func ChkTestErr(t *testing.T, err error, msg string)

func DelegateStake

func DelegateStake(fromAuth *bind.TransactOpts, toEthAddress mainchain.Addr, amt *big.Int) error

func DeployCommand

func DeployCommand() *cobra.Command

func DeployDPoSSGNContracts added in v0.2.0

func DeployDPoSSGNContracts(sgnParams *SGNParams) (*types.Transaction, mainchain.Addr, mainchain.Addr)

func DeployERC20Contract

func DeployERC20Contract() (*types.Transaction, mainchain.Addr, *mainchain.ERC20)

func DeployLedgerContract

func DeployLedgerContract() mainchain.Addr

func FundAddrsETH

func FundAddrsETH(amt string, recipients []mainchain.Addr) error

func FundAddrsErc20

func FundAddrsErc20(erc20Addr mainchain.Addr, addrs []mainchain.Addr, amount string) error

func GetAddressFromKeystore

func GetAddressFromKeystore(ksBytes []byte) (string, error)

func GetAuth

func GetAuth(ksfile string) (addr mainchain.Addr, auth *bind.TransactOpts, err error)

func GetEthPrivateKey

func GetEthPrivateKey(ksfile string) (*ecdsa.PrivateKey, error)

func InitializeCandidate

func InitializeCandidate(auth *bind.TransactOpts, sgnAddr sdk.AccAddress, minSelfStake *big.Int, commissionRate *big.Int, rateLockEndTime *big.Int) error

func IntendWithdraw

func IntendWithdraw(auth *bind.TransactOpts, candidateAddr mainchain.Addr, amt *big.Int) error

func KillProcess

func KillProcess(p *os.Process)

func LogBlkNum

func LogBlkNum(conn *ethclient.Client)

func NewTransactor

func NewTransactor(t *testing.T, sgnCLIHome, sgnChainID, sgnNodeURI, sgnTransactor, sgnPassphrase string) *transactor.Transactor

func OpenChannel

func OpenChannel(peer0, peer1 *TestEthClient) (channelId [32]byte, err error)

func ParseGatewayQueryResponse

func ParseGatewayQueryResponse(resp *http.Response, cdc *codec.Codec) (json.RawMessage, error)

func PrepareSignedSimplexState

func PrepareSignedSimplexState(seqNum uint64, channelId, peerFrom []byte, peer0, peer1 *TestEthClient) (*chain.SignedSimplexState, error)

func QueryPenalty added in v0.2.0

func QueryPenalty(cliCtx context.CLIContext, nonce uint64, sigCount int) (penalty slash.Penalty, err error)

func QueryProposal added in v0.2.0

func QueryProposal(cliCtx context.CLIContext, proposalID uint64, status govtypes.ProposalStatus) (proposal govtypes.Proposal, err error)

func SetContracts

func SetContracts(dposAddr, sgnAddr, ledgerAddr mainchain.Addr) error

func SetEthBaseKs

func SetEthBaseKs(prefix string)

func SetupE2eProfile

func SetupE2eProfile()

func SetupEthClients

func SetupEthClients()

SetupEthClients sets Client part (Client) and Auth part (PrivateKey, Address, Auth) Contracts part (DPoSAddress, DPoS, SGNAddress, SGN, LedgerAddress, Ledger) is set after deploying DPoS and SGN contracts in setupNewSGNEnv()

func SleepBlocksWithLog

func SleepBlocksWithLog(count time.Duration, waitFor string)

func SleepWithLog

func SleepWithLog(second time.Duration, waitFor string)

func StartProcess

func StartProcess(name string, args ...string) *os.Process

func TearDown

func TearDown(tokill []Killable)

func WaitMinedWithChk

func WaitMinedWithChk(
	ctx context.Context,
	conn *ethclient.Client,
	tx *ethtypes.Transaction,
	blockDelay uint64,
	pollingInterval time.Duration,
	txname string,
)

Types

type Killable

type Killable interface {
	Kill() error
}

Killable is object that has Kill() func

type SGNParams

type SGNParams struct {
	CelrAddr              mainchain.Addr
	GovernProposalDeposit *big.Int
	GovernVoteTimeout     *big.Int
	BlameTimeout          *big.Int
	MinValidatorNum       *big.Int
	MaxValidatorNum       *big.Int
	MinStakingPool        *big.Int
	IncreaseRateWaitTime  *big.Int
	// TODO: rename to DposGoLiveTimeout
	SidechainGoLiveTimeout *big.Int
	StartGateway           bool
}

type TestEthClient added in v0.2.0

type TestEthClient struct {
	Address mainchain.Addr
	Auth    *bind.TransactOpts
	Signer  eth.Signer
}

func SetupTestEthClient added in v0.2.0

func SetupTestEthClient(ksfile string) (*TestEthClient, error)

type TestProfile

type TestProfile struct {
	DisputeTimeout uint64
	LedgerAddr     mainchain.Addr
	DPoSAddr       mainchain.Addr
	SGNAddr        mainchain.Addr
	CelrAddr       mainchain.Addr
	CelrContract   *mainchain.ERC20
}
var (
	// E2eProfile will be updated and used for each test
	// not support parallel tests
	E2eProfile *TestProfile
)

runtime variables, will be initialized before each test

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL