Documentation ¶
Overview ¶
Package tests implements execution of Ethereum JSON tests.
Index ¶
- Variables
- func BenchStateTest(chainConfig *params.ChainConfig, p string, conf bconf, b *testing.B) error
- func BenchVmTest(p string, conf bconf, b *testing.B) error
- func LoadBlockTests(file string) (map[string]*BlockTest, error)
- func RunBlockTest(homesteadBlock, daoForkBlock, gasPriceFork *big.Int, file string, ...) error
- func RunBlockTestWithReader(homesteadBlock, daoForkBlock, gasPriceFork *big.Int, r io.Reader, ...) error
- func RunRLPTest(file string, skip []string) error
- func RunRLPTestWithReader(r io.Reader, skip []string) error
- func RunState(chainConfig *params.ChainConfig, statedb *state.StateDB, ...) ([]byte, vm.Logs, *big.Int, error)
- func RunStateTest(chainConfig *params.ChainConfig, p string, skipTests []string) error
- func RunStateTestWithReader(chainConfig *params.ChainConfig, r io.Reader, skipTests []string) error
- func RunTransactionTests(config *params.ChainConfig, file string, skipTests []string) error
- func RunTransactionTestsWithReader(config *params.ChainConfig, r io.Reader, skipTests []string) error
- func RunVm(state *state.StateDB, env, exec map[string]string) ([]byte, vm.Logs, *big.Int, error)
- func RunVmTest(p string, skipTests []string) error
- func RunVmTestWithReader(r io.Reader, skipTests []string) error
- type Account
- type BlockTest
- func (t *BlockTest) InsertPreState(db ethdb.Database) (*state.StateDB, error)
- func (t *BlockTest) TryBlocksInsert(blockchain *core.BlockChain) ([]btBlock, error)
- func (test *BlockTest) ValidateImportedHeaders(cm *core.BlockChain, validBlocks []btBlock) error
- func (t *BlockTest) ValidatePostState(statedb *state.StateDB) error
- type Env
- func (self *Env) AddLog(log *vm.Log)
- func (self *Env) BlockNumber() *big.Int
- func (self *Env) Call(caller vm.ContractRef, addr common.Address, data []byte, ...) ([]byte, error)
- func (self *Env) CallCode(caller vm.ContractRef, addr common.Address, data []byte, ...) ([]byte, error)
- func (self *Env) CanTransfer(from common.Address, balance *big.Int) bool
- func (self *Env) ChainConfig() *params.ChainConfig
- func (self *Env) Coinbase() common.Address
- func (self *Env) Create(caller vm.ContractRef, data []byte, gas, price, value *big.Int) ([]byte, common.Address, error)
- func (self *Env) Db() vm.Database
- func (self *Env) DelegateCall(caller vm.ContractRef, addr common.Address, data []byte, gas, price *big.Int) ([]byte, error)
- func (self *Env) Depth() int
- func (self *Env) Difficulty() *big.Int
- func (self *Env) GasLimit() *big.Int
- func (self *Env) GetHash(n uint64) common.Hash
- func (self *Env) Origin() common.Address
- func (self *Env) RevertToSnapshot(snapshot int)
- func (self *Env) SetDepth(i int)
- func (self *Env) SnapshotDatabase() int
- func (self *Env) Time() *big.Int
- func (self *Env) Transfer(from, to vm.Account, amount *big.Int)
- func (self *Env) Vm() vm.Vm
- func (self *Env) VmType() vm.Type
- type Log
- type RLPTest
- type TransactionTest
- type TtTransaction
- type VmEnv
- type VmTest
Constants ¶
This section is empty.
Variables ¶
View Source
var ( BlockSkipTests = []string{ "BLOCK__RandomByteAtTheEnd", "TRANSCT__RandomByteAtTheEnd", "BLOCK__ZeroByteAtTheEnd", "TRANSCT__ZeroByteAtTheEnd", "ChainAtoChainB_blockorder2", "ChainAtoChainB_blockorder1", "GasLimitHigherThan2p63m1", "SuicideIssue", } /* Go client does not support transaction (account) nonces above 2^64. This technically breaks consensus but is regarded as "reasonable engineering constraint" as accounts cannot easily reach such high nonce values in practice */ TransSkipTests = []string{ "TransactionWithHihghNonce256", "Vitalik_15", "Vitalik_16", "Vitalik_17", } StateSkipTests = []string{} VmSkipTests = []string{} )
View Source
var ( ForceJit bool EnableJit bool )
Functions ¶
func BenchStateTest ¶ added in v1.1.0
func RunBlockTest ¶
func RunBlockTestWithReader ¶
func RunRLPTest ¶
RunRLPTest runs the tests in the given file, skipping tests by name.
func RunRLPTestWithReader ¶
RunRLPTest runs the tests encoded in r, skipping tests by name.
func RunStateTest ¶
func RunStateTest(chainConfig *params.ChainConfig, p string, skipTests []string) error
func RunStateTestWithReader ¶
func RunTransactionTests ¶
func RunTransactionTests(config *params.ChainConfig, file string, skipTests []string) error
Types ¶
type BlockTest ¶
type BlockTest struct { Genesis *types.Block Json *btJSON // contains filtered or unexported fields }
Block Test JSON Format
func (*BlockTest) InsertPreState ¶
InsertPreState populates the given database with the genesis accounts defined by the test.
func (*BlockTest) TryBlocksInsert ¶
func (t *BlockTest) TryBlocksInsert(blockchain *core.BlockChain) ([]btBlock, error)
See https://github.com/ethereum/tests/wiki/Blockchain-Tests-II
Whether a block is valid or not is a bit subtle, it's defined by presence of blockHeader, transactions and uncleHeaders fields. If they are missing, the block is invalid and we must verify that we do not accept it. Since some tests mix valid and invalid blocks we need to check this for every block. If a block is invalid it does not necessarily fail the test, if it's invalidness is expected we are expected to ignore it and continue processing and then validate the post state.
func (*BlockTest) ValidateImportedHeaders ¶ added in v1.2.2
func (test *BlockTest) ValidateImportedHeaders(cm *core.BlockChain, validBlocks []btBlock) error
type Env ¶
func NewEnvFromMap ¶
func (*Env) BlockNumber ¶
func (*Env) CanTransfer ¶ added in v1.1.0
func (*Env) ChainConfig ¶ added in v1.4.19
func (self *Env) ChainConfig() *params.ChainConfig
func (*Env) DelegateCall ¶ added in v1.3.4
func (*Env) Difficulty ¶
func (*Env) RevertToSnapshot ¶ added in v1.4.16
func (*Env) SnapshotDatabase ¶ added in v1.4.16
type Log ¶
type RLPTest ¶
type RLPTest struct { // If the value of In is "INVALID" or "VALID", the test // checks whether Out can be decoded into a value of // type interface{}. // // For other JSON values, In is treated as a driver for // calls to rlp.Stream. The test also verifies that encoding // In produces the bytes in Out. In interface{} // Out is a hex-encoded RLP value. Out string }
RLPTest is the JSON structure of a single RLP test.
type TransactionTest ¶
type TransactionTest struct { Blocknumber string Rlp string Sender string Transaction TtTransaction }
type TtTransaction ¶
type TtTransaction struct { Data string GasLimit string GasPrice string Nonce string R string S string To string V string Value string }
Transaction Test JSON Format
Click to show internal directories.
Click to hide internal directories.