testutil

package
v1.3.8-geth Latest Latest
Warning

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

Go to latest
Published: Apr 29, 2021 License: GPL-3.0 Imports: 36 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BazelDirectoryNonEmpty

func BazelDirectoryNonEmpty(filePath string) (bool, error)

BazelDirectoryNonEmpty returns true if directory exists and is not empty.

func BazelFileBytes

func BazelFileBytes(filePaths ...string) ([]byte, error)

BazelFileBytes returns the byte array of the bazel file path given.

func BlockSignature

func BlockSignature(
	bState iface.BeaconState,
	block *ethpb.BeaconBlock,
	privKeys []bls.SecretKey,
) (bls.Signature, error)

BlockSignature calculates the post-state root of the block and returns the signature.

func DepositTrieFromDeposits

func DepositTrieFromDeposits(deposits []*ethpb.Deposit) (*trieutil.SparseMerkleTrie, [][32]byte, error)

DepositTrieFromDeposits takes an array of deposits and returns the deposit trie.

func DepositTrieSubset

func DepositTrieSubset(sparseTrie *trieutil.SparseMerkleTrie, size int) (*trieutil.SparseMerkleTrie, [][32]byte, error)

DepositTrieSubset takes in a full tree and the desired size and returns a subset of the deposit trie.

func DepositsWithBalance

func DepositsWithBalance(balances []uint64) ([]*ethpb.Deposit, *trieutil.SparseMerkleTrie, error)

DepositsWithBalance generates N amount of deposits with the balances taken from the passed in balances array. If an empty array is passed,

func DeterministicDepositTrie

func DeterministicDepositTrie(size int) (*trieutil.SparseMerkleTrie, [][32]byte, error)

DeterministicDepositTrie returns a merkle trie of the requested size from the deterministic deposits.

func DeterministicDepositsAndKeys

func DeterministicDepositsAndKeys(numDeposits uint64) ([]*ethpb.Deposit, []bls.SecretKey, error)

DeterministicDepositsAndKeys returns the entered amount of deposits and secret keys. The deposits are configured such that for deposit n the validator account is key n and the withdrawal account is key n+1. As such, if all secret keys for n validators are required then numDeposits should be n+1.

func DeterministicDepositsAndKeysSameValidator

func DeterministicDepositsAndKeysSameValidator(numDeposits uint64) ([]*ethpb.Deposit, []bls.SecretKey, error)

DeterministicDepositsAndKeysSameValidator returns the entered amount of deposits and secret keys of the same validator. This is for negative test cases such as same deposits from same validators in a block don't result in duplicated validator indices.

func DeterministicEth1Data

func DeterministicEth1Data(size int) (*ethpb.Eth1Data, error)

DeterministicEth1Data takes an array of deposits and returns the eth1Data made from the deposit trie.

func DeterministicGenesisState

func DeterministicGenesisState(t testing.TB, numValidators uint64) (iface.BeaconState, []bls.SecretKey)

DeterministicGenesisState returns a genesis state made using the deterministic deposits.

func FillRootsNaturalOpt

func FillRootsNaturalOpt(state *pb.BeaconState) error

FillRootsNaturalOpt is meant to be used as an option when calling NewBeaconState. It fills state and block roots with hex representations of natural numbers starting with 0. Example: 16 becomes 0x00...0f.

func GenerateAttestations

func GenerateAttestations(
	bState iface.BeaconState, privs []bls.SecretKey, numToGen uint64, slot types.Slot, randomRoot bool,
) ([]*ethpb.Attestation, error)

GenerateAttestations creates attestations that are entirely valid, for all the committees of the current state slot. This function expects attestations requested to be cleanly divisible by committees per slot. If there is 1 committee in the slot, and numToGen is set to 4, then it will return 4 attestations for the same data with their aggregation bits split uniformly.

If you request 4 attestations, but there are 8 committees, you will get 4 fully aggregated attestations.

func GenerateAttesterSlashingForValidator

func GenerateAttesterSlashingForValidator(
	bState iface.BeaconState,
	priv bls.SecretKey,
	idx types.ValidatorIndex,
) (*ethpb.AttesterSlashing, error)

GenerateAttesterSlashingForValidator for a specific validator index.

func GenerateFullBlock

func GenerateFullBlock(
	bState iface.BeaconState,
	privs []bls.SecretKey,
	conf *BlockGenConfig,
	slot types.Slot,
) (*ethpb.SignedBeaconBlock, error)

GenerateFullBlock generates a fully valid block with the requested parameters. Use BlockGenConfig to declare the conditions you would like the block generated under.

func GenerateProposerSlashingForValidator

func GenerateProposerSlashingForValidator(
	bState iface.BeaconState,
	priv bls.SecretKey,
	idx types.ValidatorIndex,
) (*ethpb.ProposerSlashing, error)

GenerateProposerSlashingForValidator for a specific validator index.

func HydrateAttestation

func HydrateAttestation(a *ethpb.Attestation) *ethpb.Attestation

HydrateAttestation hydrates an attestation object with correct field length sizes to comply with fssz marshalling and unmarshalling rules.

func HydrateAttestationData

func HydrateAttestationData(d *ethpb.AttestationData) *ethpb.AttestationData

HydrateAttestationData hydrates an attestation data object with correct field length sizes to comply with fssz marshalling and unmarshalling rules.

func HydrateBeaconBlock

func HydrateBeaconBlock(b *ethpb.BeaconBlock) *ethpb.BeaconBlock

HydrateBeaconBlock hydrates a beacon block with correct field length sizes to comply with fssz marshalling and unmarshalling rules.

func HydrateBeaconBlockBody

func HydrateBeaconBlockBody(b *ethpb.BeaconBlockBody) *ethpb.BeaconBlockBody

HydrateBeaconBlockBody hydrates a beacon block body with correct field length sizes to comply with fssz marshalling and unmarshalling rules.

func HydrateBeaconHeader

func HydrateBeaconHeader(h *ethpb.BeaconBlockHeader) *ethpb.BeaconBlockHeader

HydrateBeaconHeader hydrates a beacon block header with correct field length sizes to comply with fssz marshalling and unmarshalling rules.

func HydrateIndexedAttestation

func HydrateIndexedAttestation(a *ethpb.IndexedAttestation) *ethpb.IndexedAttestation

HydrateIndexedAttestation hydrates an indexed attestation with correct field length sizes to comply with fssz marshalling and unmarshalling rules.

func HydrateSignedBeaconBlock

func HydrateSignedBeaconBlock(b *ethpb.SignedBeaconBlock) *ethpb.SignedBeaconBlock

HydrateSignedBeaconBlock hydrates a signed beacon block with correct field length sizes to comply with fssz marshalling and unmarshalling rules.

func HydrateSignedBeaconHeader

func HydrateSignedBeaconHeader(h *ethpb.SignedBeaconBlockHeader) *ethpb.SignedBeaconBlockHeader

HydrateSignedBeaconHeader hydrates a signed beacon block header with correct field length sizes to comply with fssz marshalling and unmarshalling rules.

func HydrateV1BeaconBlock

func HydrateV1BeaconBlock(b *v1.BeaconBlock) *v1.BeaconBlock

HydrateV1BeaconBlock hydrates a beacon block with correct field length sizes to comply with fssz marshalling and unmarshalling rules.

func HydrateV1BeaconBlockBody

func HydrateV1BeaconBlockBody(b *v1.BeaconBlockBody) *v1.BeaconBlockBody

HydrateV1BeaconBlockBody hydrates a beacon block body with correct field length sizes to comply with fssz marshalling and unmarshalling rules.

func HydrateV1SignedBeaconBlock

func HydrateV1SignedBeaconBlock(b *v1.SignedBeaconBlock) *v1.SignedBeaconBlock

HydrateV1SignedBeaconBlock hydrates a signed beacon block with correct field length sizes to comply with fssz marshalling and unmarshalling rules.

func NewAttestation

func NewAttestation() *ethpb.Attestation

NewAttestation creates an attestation block with minimum marshalable fields.

func NewBeaconBlock

func NewBeaconBlock() *ethpb.SignedBeaconBlock

NewBeaconBlock creates a beacon block with minimum marshalable fields.

func NewBeaconState

func NewBeaconState(options ...func(state *pb.BeaconState) error) (*stateV0.BeaconState, error)

NewBeaconState creates a beacon state with minimum marshalable fields.

func RandaoReveal

func RandaoReveal(beaconState iface.ReadOnlyBeaconState, epoch types.Epoch, privKeys []bls.SecretKey) ([]byte, error)

RandaoReveal returns a signature of the requested epoch using the beacon proposer private key.

func Random32Bytes

func Random32Bytes(t *testing.T) []byte

Random32Bytes generates a random 32 byte slice.

func ResetCache

func ResetCache()

ResetCache clears out the old trie, private keys and deposits.

func RunBlockOperationTest

func RunBlockOperationTest(
	t *testing.T,
	folderPath string,
	body *ethpb.BeaconBlockBody,
	operationFn blockOperation,
)

RunBlockOperationTest takes in the prestate and the beacon block body, processes it through the passed in block operation function and checks the post state with the expected post state.

func RunEpochOperationTest

func RunEpochOperationTest(
	t *testing.T,
	testFolderPath string,
	operationFn epochOperation,
)

RunEpochOperationTest takes in the prestate and processes it through the passed in epoch operation function and checks the post state with the expected post state.

func TestFolders

func TestFolders(t testing.TB, config, folderPath string) ([]os.FileInfo, string)

TestFolders sets the proper config and returns the result of ReadDir on the passed in eth2-spec-tests directory along with its path.

func UnmarshalYaml

func UnmarshalYaml(y []byte, dest interface{}) error

UnmarshalYaml using a customized json encoder that supports "spec-name" override tag.

func WaitTimeout

func WaitTimeout(wg *sync.WaitGroup, timeout time.Duration) bool

WaitTimeout will wait for a WaitGroup to resolve within a timeout interval. Returns true if the waitgroup exceeded the timeout.

Types

type BlockGenConfig

type BlockGenConfig struct {
	NumProposerSlashings uint64
	NumAttesterSlashings uint64
	NumAttestations      uint64
	NumDeposits          uint64
	NumVoluntaryExits    uint64
}

BlockGenConfig is used to define the requested conditions for block generation.

func DefaultBlockGenConfig added in v0.2.3

func DefaultBlockGenConfig() *BlockGenConfig

DefaultBlockGenConfig returns the block config that utilizes the current params in the beacon config.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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