integrationTests

package
v1.3.8-indexer1.2.14 Latest Latest
Warning

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

Go to latest
Published: Mar 8, 2022 License: GPL-3.0 Imports: 159 Imported by: 0

Documentation

Index

Constants

View Source
const GlobalTopic = "global"

GlobalTopic is a global testing that all nodes will bind an interceptor

View Source
const MaxGasLimitPerBlock = uint64(3000000)

MaxGasLimitPerBlock defines maximum gas limit allowed per one block

View Source
const OpGasValueForMockVm = uint64(50)

OpGasValueForMockVm represents the gas value that it consumed by each operation called on the mock VM By operation, we mean each go function that is called on the VM implementation

View Source
const ScheduledMiniBlocksEnableEpoch = 1000

ScheduledMiniBlocksEnableEpoch defines the epoch for integration tests when scheduled nini blocks are enabled

View Source
const ShardTopic = "shard"

ShardTopic is the topic string generator for sharded topics Will generate topics in the following pattern: shard_0, shard_0_1, shard_0_META, shard_1 and so on

View Source
const StakingV2Epoch = 1000

StakingV2Epoch defines the epoch for integration tests when stakingV2 is enabled

Variables

View Source
var AdditionalGasLimit = uint64(999000)

AdditionalGasLimit is the value that can be added on a transaction in the GasLimit

View Source
var ChainID = []byte("integration tests chain ID")

ChainID is the chain ID identifier used in integration tests, processing nodes

View Source
var DelegationManagerConfigChangeAddress = "erd1vxy22x0fj4zv6hktmydg8vpfh6euv02cz4yg0aaws6rrad5a5awqgqky80"

DelegationManagerConfigChangeAddress represents the address that can change the config parameters of the delegation manager system smartcontract

View Source
var InitialRating = uint32(50)

InitialRating is used to initiate a node's info

View Source
var MinTransactionVersion = uint32(1)

MinTransactionVersion is the minimum transaction version used in integration tests, processing nodes

View Source
var MinTxGasLimit = uint64(1000)

MinTxGasLimit defines minimum gas limit required by a transaction

View Source
var MinTxGasPrice = uint64(100)

MinTxGasPrice defines minimum gas price required by a transaction

View Source
var P2pBootstrapDelay = 5 * time.Second

P2pBootstrapDelay is used so that nodes have enough time to bootstrap

View Source
var SoftwareVersion = []byte("intT")

SoftwareVersion is the software version identifier used in integration tests, processing nodes

View Source
var StepDelay = time.Millisecond * 180

StepDelay is used so that transactions can disseminate properly

View Source
var SyncDelay = time.Second / 5

SyncDelay is used so that nodes have enough time to sync

View Source
var TestAddressPubkeyConverter, _ = pubkeyConverter.NewBech32PubkeyConverter(32, log)

TestAddressPubkeyConverter represents an address public key converter

View Source
var TestAppStatusHandler = &statusHandlerMock.AppStatusHandlerStub{}

TestAppStatusHandler represents an AppStatusHandler

View Source
var TestBalanceComputationHandler, _ = preprocess.NewBalanceComputation()

TestBalanceComputationHandler represents a balance computation handler

TestBlockSizeComputation represents a block size computation handler

View Source
var TestBlockSizeThrottler = &mock.BlockSizeThrottlerStub{}

TestBlockSizeThrottler represents a block size throttler used in adaptive block size computation

View Source
var TestBuiltinFunctions = make(map[string]vmcommon.BuiltinFunction)

TestBuiltinFunctions is an additional map of builtin functions to be added to the scProcessor

View Source
var TestHasher = sha256.NewSha256()

TestHasher represents a sha256 hasher

View Source
var TestKeyGenForAccounts = signing.NewKeyGenerator(ed25519.NewEd25519())

TestKeyGenForAccounts represents a mock key generator for balances

View Source
var TestMarshalizer = &marshal.GogoProtoMarshalizer{}

TestMarshalizer represents the main marshalizer

View Source
var TestMultiSig = cryptoMocks.NewMultiSigner(1)

TestMultiSig represents a mock multisig

View Source
var TestTxSignHasher = keccak.NewKeccak()

TestTxSignHasher represents a sha3 legacy keccak 256 hasher

View Source
var TestTxSignMarshalizer = &marshal.JsonMarshalizer{}

TestTxSignMarshalizer represents the marshalizer used in vm communication

View Source
var TestUint64Converter = uint64ByteSlice.NewBigEndianConverter()

TestUint64Converter represents an uint64 to byte slice converter

View Source
var TestValidatorPubkeyConverter, _ = pubkeyConverter.NewHexPubkeyConverter(96)

TestValidatorPubkeyConverter represents an address public key converter

View Source
var TestVmMarshalizer = &marshal.JsonMarshalizer{}

TestVmMarshalizer represents the marshalizer used in vm communication

View Source
var TimeSpanForBadHeaders = time.Second * 30

TimeSpanForBadHeaders is the expiry time for an added block header hash

Functions

func AdbEmulateBalanceTxExecution

func AdbEmulateBalanceTxExecution(accounts state.AccountsAdapter, acntSrc, acntDest state.UserAccountHandler, value *big.Int) error

AdbEmulateBalanceTxExecution emulates a tx execution by altering the accounts balance and nonce, and printing any encountered error

func AdbEmulateBalanceTxSafeExecution

func AdbEmulateBalanceTxSafeExecution(acntSrc, acntDest state.UserAccountHandler, accounts state.AccountsAdapter, value *big.Int)

AdbEmulateBalanceTxSafeExecution emulates a tx execution by altering the accounts balance and nonce, and printing any encountered error

func AddSelfNotarizedHeaderByMetachain added in v1.0.117

func AddSelfNotarizedHeaderByMetachain(nodes []*TestProcessorNode)

AddSelfNotarizedHeaderByMetachain -

func AllShardsProposeBlock

func AllShardsProposeBlock(
	round uint64,
	nonce uint64,
	nodesMap map[uint32][]*TestProcessorNode,
) (
	map[uint32]data.BodyHandler,
	map[uint32]data.HeaderHandler,
	map[uint32][]*TestProcessorNode,
)

AllShardsProposeBlock simulates each shard selecting a consensus group and proposing/broadcasting/committing a block

func BootstrapDelay added in v1.1.47

func BootstrapDelay()

BootstrapDelay will delay the execution to allow the p2p bootstrap

func CheckRootHashes

func CheckRootHashes(t *testing.T, nodes []*TestProcessorNode, idxProposers []int)

CheckRootHashes checks the root hash of the proposer in every shard

func CheckTxPresentAndRightNonce

func CheckTxPresentAndRightNonce(
	t *testing.T,
	startingNonce uint64,
	noOfTxs int,
	txHashes [][]byte,
	txs []data.TransactionHandler,
	cache dataRetriever.ShardedDataCacherNotifier,
	shardCoordinator sharding.Coordinator,
)

CheckTxPresentAndRightNonce verifies that the nonce was updated correctly after the exec of bulk txs

func ClosePeers

func ClosePeers(peers []p2p.Messenger)

ClosePeers calls Messenger.Close on the provided peers

func CloseProcessorNodes

func CloseProcessorNodes(nodes []*TestProcessorNode)

CloseProcessorNodes closes the used TestProcessorNodes and advertiser

func ComputeAndRequestMissingTransactions

func ComputeAndRequestMissingTransactions(
	nodes []*TestProcessorNode,
	generatedTxHashes [][]byte,
	shardResolver uint32,
	shardRequesters ...uint32,
)

ComputeAndRequestMissingTransactions computes missing transactions for each node, and requests them

func ConnectNodes added in v1.1.47

func ConnectNodes(nodes []Connectable)

ConnectNodes will try to connect all provided connectable instances in a full mesh fashion

func CreateAccount

func CreateAccount(accnts state.AccountsAdapter, nonce uint64, balance *big.Int) []byte

CreateAccount creates a new account and returns the address

func CreateAccountForNode

func CreateAccountForNode(node *TestProcessorNode)

CreateAccountForNode creates an account for the given node

func CreateAccountForNodes

func CreateAccountForNodes(nodes []*TestProcessorNode)

CreateAccountForNodes creates accounts for each node and commits the accounts state

func CreateAccountsDB

func CreateAccountsDB(
	accountType Type,
	trieStorageManager common.StorageManager,
) (*state.AccountsDB, common.Trie)

CreateAccountsDB creates an account state with a valid trie implementation but with a memory storage

func CreateAndSendTransaction

func CreateAndSendTransaction(
	node *TestProcessorNode,
	nodes []*TestProcessorNode,
	txValue *big.Int,
	rcvAddress []byte,
	txData string,
	additionalGasLimit uint64,
)

CreateAndSendTransaction will generate a transaction with provided parameters, sign it with the provided node's tx sign private key and send it on the transaction topic using the correct node that can send the transaction

func CreateAndSendTransactionWithGasLimit

func CreateAndSendTransactionWithGasLimit(
	node *TestProcessorNode,
	txValue *big.Int,
	gasLimit uint64,
	rcvAddress []byte,
	txData []byte,
	chainID []byte,
	version uint32,
)

CreateAndSendTransactionWithGasLimit generates and send a transaction with provided gas limit/gas price

func CreateAndSendTransactions

func CreateAndSendTransactions(
	nodes map[uint32][]*TestProcessorNode,
	sendersPrivKeysMap map[uint32][]crypto.PrivateKey,
	receiversPubKeysMap map[uint32][]crypto.PublicKey,
	gasPricePerTx uint64,
	gasLimitPerTx uint64,
	valueToTransfer *big.Int,
)

CreateAndSendTransactions creates and sends transactions between given senders and receivers.

func CreateFixedNetworkOf14Peers

func CreateFixedNetworkOf14Peers() ([]p2p.Messenger, error)

CreateFixedNetworkOf14Peers assembles a network as following:

               0
               |
               1
               |
+--+--+--+--+--2--+--+--+--+--+
|  |  |  |  |  |  |  |  |  |  |
3  4  5  6  7  8  9  10 11 12 13

func CreateFixedNetworkOf8Peers

func CreateFixedNetworkOf8Peers() ([]p2p.Messenger, error)

CreateFixedNetworkOf8Peers assembles a network as following:

                     0------------------- 1
                     |                    |
2 ------------------ 3 ------------------ 4
|                    |                    |
5                    6                    7

func CreateFullGenesisBlocks added in v1.0.133

func CreateFullGenesisBlocks(
	accounts state.AccountsAdapter,
	validatorAccounts state.AccountsAdapter,
	trieStorageManagers map[string]common.StorageManager,
	nodesSetup sharding.GenesisNodesSetupHandler,
	shardCoordinator sharding.Coordinator,
	store dataRetriever.StorageService,
	blkc data.ChainHandler,
	dataPool dataRetriever.PoolsHolder,
	economics process.EconomicsDataHandler,
	accountsParser genesis.AccountsParser,
	smartContractParser genesis.InitialSmartContractParser,
) map[uint32]data.HeaderHandler

CreateFullGenesisBlocks does the full genesis process, deploys smart contract at genesis

func CreateGenesisBlocks

func CreateGenesisBlocks(
	accounts state.AccountsAdapter,
	validatorAccounts state.AccountsAdapter,
	trieStorageManagers map[string]common.StorageManager,
	pubkeyConv core.PubkeyConverter,
	nodesSetup sharding.GenesisNodesSetupHandler,
	shardCoordinator sharding.Coordinator,
	store dataRetriever.StorageService,
	blkc data.ChainHandler,
	marshalizer marshal.Marshalizer,
	hasher hashing.Hasher,
	uint64Converter typeConverters.Uint64ByteSliceConverter,
	dataPool dataRetriever.PoolsHolder,
	economics process.EconomicsDataHandler,
) map[uint32]data.HeaderHandler

CreateGenesisBlocks creates empty genesis blocks for all known shards, including metachain

func CreateGenesisMetaBlock

func CreateGenesisMetaBlock(
	accounts state.AccountsAdapter,
	validatorAccounts state.AccountsAdapter,
	trieStorageManagers map[string]common.StorageManager,
	pubkeyConv core.PubkeyConverter,
	nodesSetup sharding.GenesisNodesSetupHandler,
	shardCoordinator sharding.Coordinator,
	store dataRetriever.StorageService,
	blkc data.ChainHandler,
	marshalizer marshal.Marshalizer,
	hasher hashing.Hasher,
	uint64Converter typeConverters.Uint64ByteSliceConverter,
	dataPool dataRetriever.PoolsHolder,
	economics process.EconomicsDataHandler,
) data.MetaHeaderHandler

CreateGenesisMetaBlock creates a new mock meta genesis block

func CreateHeaderIntegrityVerifier added in v1.1.1

func CreateHeaderIntegrityVerifier() process.HeaderIntegrityVerifier

CreateHeaderIntegrityVerifier outputs a valid header integrity verifier handler

func CreateMemUnit

func CreateMemUnit() storage.Storer

CreateMemUnit returns an in-memory storer implementation (the vast majority of tests do not require effective disk I/O)

func CreateMessengerFromConfig

func CreateMessengerFromConfig(p2pConfig config.P2PConfig) p2p.Messenger

CreateMessengerFromConfig creates a new libp2p messenger with provided configuration

func CreateMessengerWithKadDht

func CreateMessengerWithKadDht(initialAddr string) p2p.Messenger

CreateMessengerWithKadDht creates a new libp2p messenger with kad-dht peer discovery

func CreateMessengerWithKadDhtAndProtocolID added in v1.0.114

func CreateMessengerWithKadDhtAndProtocolID(initialAddr string, protocolID string) p2p.Messenger

CreateMessengerWithKadDhtAndProtocolID creates a new libp2p messenger with kad-dht peer discovery and peer ID

func CreateMessengerWithNoDiscovery

func CreateMessengerWithNoDiscovery() p2p.Messenger

CreateMessengerWithNoDiscovery creates a new libp2p messenger with no peer discovery

func CreateMetaChain

func CreateMetaChain() data.ChainHandler

CreateMetaChain creates a blockchain implementation used by the meta nodes

func CreateMintingForSenders

func CreateMintingForSenders(
	nodes []*TestProcessorNode,
	senderShard uint32,
	sendersPrivateKeys []crypto.PrivateKey,
	value *big.Int,
)

CreateMintingForSenders creates account with balances for every node in a given shard

func CreateMintingFromAddresses

func CreateMintingFromAddresses(
	nodes []*TestProcessorNode,
	addresses [][]byte,
	value *big.Int,
)

CreateMintingFromAddresses creates account with balances for given address

func CreateNewDefaultTrie

func CreateNewDefaultTrie() common.Trie

CreateNewDefaultTrie returns a new trie with test hasher and marsahalizer

func CreateNodesWithFullGenesis added in v1.0.133

func CreateNodesWithFullGenesis(
	numOfShards int,
	nodesPerShard int,
	numMetaChainNodes int,
	genesisFile string,
) ([]*TestProcessorNode, *TestProcessorNode)

CreateNodesWithFullGenesis creates multiple nodes in different shards

func CreateNodesWithNodesCoordinator

func CreateNodesWithNodesCoordinator(
	nodesPerShard int,
	nbMetaNodes int,
	nbShards int,
	shardConsensusGroupSize int,
	metaConsensusGroupSize int,
) map[uint32][]*TestProcessorNode

CreateNodesWithNodesCoordinator returns a map with nodes per shard each using a real nodes coordinator

func CreateNodesWithNodesCoordinatorAndHeaderSigVerifier

func CreateNodesWithNodesCoordinatorAndHeaderSigVerifier(
	nodesPerShard int,
	nbMetaNodes int,
	nbShards int,
	shardConsensusGroupSize int,
	metaConsensusGroupSize int,
	signer crypto.SingleSigner,
	keyGen crypto.KeyGenerator,
) map[uint32][]*TestProcessorNode

CreateNodesWithNodesCoordinatorAndHeaderSigVerifier returns a map with nodes per shard each using a real nodes coordinator and header sig verifier

func CreateNodesWithNodesCoordinatorAndTxKeys added in v1.0.116

func CreateNodesWithNodesCoordinatorAndTxKeys(
	nodesPerShard int,
	nbMetaNodes int,
	nbShards int,
	shardConsensusGroupSize int,
	metaConsensusGroupSize int,
) map[uint32][]*TestProcessorNode

CreateNodesWithNodesCoordinatorAndTxKeys -

func CreateNodesWithNodesCoordinatorFactory

func CreateNodesWithNodesCoordinatorFactory(
	nodesPerShard int,
	nbMetaNodes int,
	nbShards int,
	shardConsensusGroupSize int,
	metaConsensusGroupSize int,
	nodesCoordinatorFactory NodesCoordinatorFactory,
) map[uint32][]*TestProcessorNode

CreateNodesWithNodesCoordinatorFactory returns a map with nodes per shard each using a real nodes coordinator

func CreateNodesWithNodesCoordinatorKeygenAndSingleSigner

func CreateNodesWithNodesCoordinatorKeygenAndSingleSigner(
	nodesPerShard int,
	nbMetaNodes int,
	nbShards int,
	shardConsensusGroupSize int,
	metaConsensusGroupSize int,
	singleSigner crypto.SingleSigner,
	keyGenForBlocks crypto.KeyGenerator,
) map[uint32][]*TestProcessorNode

CreateNodesWithNodesCoordinatorKeygenAndSingleSigner returns a map with nodes per shard each using a real nodes coordinator and a given single signer for blocks and a given key gen for blocks

func CreateNodesWithNodesCoordinatorWithCacher

func CreateNodesWithNodesCoordinatorWithCacher(
	nodesPerShard int,
	nbMetaNodes int,
	nbShards int,
	shardConsensusGroupSize int,
	metaConsensusGroupSize int,
) map[uint32][]*TestProcessorNode

CreateNodesWithNodesCoordinatorWithCacher returns a map with nodes per shard each using a real nodes coordinator with cacher

func CreateNodesWithTestP2PNodes

func CreateNodesWithTestP2PNodes(
	nodesPerShard int,
	numMetaNodes int,
	numShards int,
	shardConsensusGroupSize int,
	metaConsensusGroupSize int,
	numObserversOnShard int,
	p2pConfig config.P2PConfig,
) map[uint32][]*TestP2PNode

CreateNodesWithTestP2PNodes returns a map with nodes per shard each using a real nodes coordinator and TestP2PNodes

func CreatePkBytes added in v1.0.102

func CreatePkBytes(numShards uint32) map[uint32][]byte

CreatePkBytes creates 'numShards' public key-like byte slices

func CreateProcessorNodesWithNodesCoordinator

func CreateProcessorNodesWithNodesCoordinator(
	rewardsAddrsAssignments map[uint32][]uint32,
	shardConsensusGroupSize int,
	metaConsensusGroupSize int,
) (map[uint32][]*TestProcessorNode, uint32)

CreateProcessorNodesWithNodesCoordinator creates a map of nodes with a valid nodes coordinator implementation keeping the consistency of generated keys

func CreateRandomAddress

func CreateRandomAddress() []byte

CreateRandomAddress creates a random byte array with fixed size

func CreateRandomBytes added in v1.0.104

func CreateRandomBytes(chars int) []byte

CreateRandomBytes returns a random byte slice with the given size

func CreateRatingsData added in v0.0.5

func CreateRatingsData() *rating.RatingsData

CreateRatingsData creates a mock RatingsData object

func CreateRequesterDataPool

func CreateRequesterDataPool(recvTxs map[int]map[string]struct{}, mutRecvTxs *sync.Mutex, nodeIndex int, _ uint32) dataRetriever.PoolsHolder

CreateRequesterDataPool creates a datapool with a mock txPool

func CreateResolversDataPool

func CreateResolversDataPool(
	t *testing.T,
	maxTxs int,
	senderShardID uint32,
	recvShardId uint32,
	shardCoordinator sharding.Coordinator,
) (dataRetriever.PoolsHolder, [][]byte, [][]byte)

CreateResolversDataPool creates a datapool containing a given number of transactions

func CreateSendersAndReceiversInShard

func CreateSendersAndReceiversInShard(
	nodeInShard *TestProcessorNode,
	nbSenderReceiverPairs uint32,
) ([]crypto.PrivateKey, []crypto.PublicKey)

CreateSendersAndReceiversInShard creates given number of sender private key and receiver public key pairs, with account in same shard as given node

func CreateSendersWithInitialBalances

func CreateSendersWithInitialBalances(
	nodesMap map[uint32][]*TestProcessorNode,
	mintValue *big.Int,
) map[uint32][]crypto.PrivateKey

CreateSendersWithInitialBalances creates a map of 1 sender per shard with an initial balance

func CreateShardChain

func CreateShardChain() data.ChainHandler

CreateShardChain creates a blockchain implementation used by the shard nodes

func CreateSimpleGenesisBlock

func CreateSimpleGenesisBlock(shardId uint32) *dataBlock.Header

CreateSimpleGenesisBlock creates a new mock shard genesis block

func CreateSimpleGenesisBlocks

func CreateSimpleGenesisBlocks(shardCoordinator sharding.Coordinator) map[uint32]data.HeaderHandler

CreateSimpleGenesisBlocks creates empty genesis blocks for all known shards, including metachain

func CreateSimpleGenesisMetaBlock

func CreateSimpleGenesisMetaBlock() *dataBlock.MetaBlock

CreateSimpleGenesisMetaBlock creates a new mock meta genesis block

func CreateSimpleTxProcessor

func CreateSimpleTxProcessor(accnts state.AccountsAdapter) process.TransactionProcessor

CreateSimpleTxProcessor returns a transaction processor

func CreateStore added in v1.0.102

func CreateStore(numOfShards uint32) dataRetriever.StorageService

CreateStore creates a storage service for shard nodes

func CreateTrieStorageManager added in v1.0.115

func CreateTrieStorageManager(store storage.Storer) (common.StorageManager, storage.Storer)

CreateTrieStorageManager creates the trie storage manager for the tests

func CreateTrieStorageManagerWithPruningStorer added in v1.3.0

func CreateTrieStorageManagerWithPruningStorer(store storage.Storer, coordinator sharding.Coordinator, notifier pruning.EpochStartNotifier) common.StorageManager

CreateTrieStorageManagerWithPruningStorer creates the trie storage manager for the tests

func DeployScTx

func DeployScTx(nodes []*TestProcessorNode, senderIdx int, scCode string, vmType []byte, initArguments string)

DeployScTx creates and sends a SC tx

func DisplayAndStartNodes

func DisplayAndStartNodes(nodes []*TestProcessorNode)

DisplayAndStartNodes prints each nodes shard ID, sk and pk, and then starts the node

func DoConsensusSigningOnBlock

func DoConsensusSigningOnBlock(
	blockHeader data.HeaderHandler,
	consensusNodes []*TestProcessorNode,
	pubKeys []string,
) data.HeaderHandler

DoConsensusSigningOnBlock simulates a consensus aggregated signature on the provided block

func EmptyDataPools

func EmptyDataPools(nodes []*TestProcessorNode, shardId uint32)

EmptyDataPools clears all the data pools

func ForkChoiceOneBlock

func ForkChoiceOneBlock(nodes []*TestProcessorNode, shardId uint32)

ForkChoiceOneBlock rollbacks a block from the given shard

func GenValidatorsFromPubKeys

func GenValidatorsFromPubKeys(pubKeysMap map[uint32][]string, _ uint32) map[uint32][]sharding.GenesisNodeInfoHandler

GenValidatorsFromPubKeys generates a map of validators per shard out of public keys map

func GenValidatorsFromPubKeysAndTxPubKeys added in v1.0.116

func GenValidatorsFromPubKeysAndTxPubKeys(
	blsPubKeysMap map[uint32][]string,
	txPubKeysMap map[uint32][]string,
) map[uint32][]sharding.GenesisNodeInfoHandler

GenValidatorsFromPubKeysAndTxPubKeys generates a map of validators per shard out of public keys map

func GenerateAddressJournalAccountAccountsDB

func GenerateAddressJournalAccountAccountsDB() ([]byte, state.UserAccountHandler, *state.AccountsDB)

GenerateAddressJournalAccountAccountsDB returns an account, the accounts address, and the accounts database

func GenerateAndDisseminateTxs

func GenerateAndDisseminateTxs(
	n *TestProcessorNode,
	senders []crypto.PrivateKey,
	receiversPublicKeysMap map[uint32][]crypto.PublicKey,
	valToTransfer *big.Int,
	gasPrice uint64,
	gasLimit uint64,
	chainID []byte,
	version uint32,
)

GenerateAndDisseminateTxs generates and sends multiple txs

func GenerateIntraShardTransactions

func GenerateIntraShardTransactions(
	nodesMap map[uint32][]*TestProcessorNode,
	nbTxsPerShard uint32,
	mintValue *big.Int,
	valToTransfer *big.Int,
	gasPrice uint64,
	gasLimit uint64,
)

GenerateIntraShardTransactions generates intra shard transactions

func GenerateRandomSlice

func GenerateRandomSlice(size int) []byte

GenerateRandomSlice returns a random byte slice with the given size

func GenerateSkAndPkInShard

func GenerateSkAndPkInShard(
	coordinator sharding.Coordinator,
	shardId uint32,
) (crypto.PrivateKey, crypto.PublicKey, crypto.KeyGenerator)

GenerateSkAndPkInShard generates and returns a private and a public key that reside in a given shard. It also returns the key generator

func GenerateTransferTx

func GenerateTransferTx(
	nonce uint64,
	senderPrivateKey crypto.PrivateKey,
	receiverPublicKey crypto.PublicKey,
	valToTransfer *big.Int,
	gasPrice uint64,
	gasLimit uint64,
	chainID []byte,
	version uint32,
) *transaction.Transaction

GenerateTransferTx will generate a move balance transaction

func GetConnectableAddress

func GetConnectableAddress(mes p2p.Messenger) string

GetConnectableAddress returns a non circuit, non windows default connectable address for provided messenger

func GetDefaultCoreComponents added in v1.2.0

func GetDefaultCoreComponents() *mock.CoreComponentsStub

GetDefaultCoreComponents -

func GetDefaultCryptoComponents added in v1.2.0

func GetDefaultCryptoComponents() *mock.CryptoComponentsStub

GetDefaultCryptoComponents -

func GetDefaultDataComponents added in v1.2.0

func GetDefaultDataComponents() *mock.DataComponentsStub

GetDefaultDataComponents -

func GetDefaultNetworkComponents added in v1.2.0

func GetDefaultNetworkComponents() *mock.NetworkComponentsStub

GetDefaultNetworkComponents -

func GetDefaultProcessComponents added in v1.2.0

func GetDefaultProcessComponents() *mock.ProcessComponentsStub

GetDefaultProcessComponents -

func GetDefaultStateComponents added in v1.2.0

func GetDefaultStateComponents() *testscommon.StateComponentsMock

GetDefaultStateComponents -

func GetDefaultStatusComponents added in v1.2.0

func GetDefaultStatusComponents() *mock.StatusComponentsStub

GetDefaultStatusComponents -

func GetMiniBlocksHashesFromShardIds

func GetMiniBlocksHashesFromShardIds(body *dataBlock.Body, shardIds ...uint32) [][]byte

GetMiniBlocksHashesFromShardIds returns miniblock hashes from body

func GetTokenIdentifier added in v1.1.39

func GetTokenIdentifier(nodes []*TestProcessorNode, ticker []byte) []byte

GetTokenIdentifier returns the token identifier from the metachain for the given ticker

func IncrementAndPrintRound

func IncrementAndPrintRound(round uint64) uint64

IncrementAndPrintRound increments the given variable, and prints the message for the beginning of the round

func IncrementNonces

func IncrementNonces(nonces []*uint64)

IncrementNonces increments all the nonces

func IsIntInSlice

func IsIntInSlice(idx int, slice []int) bool

IsIntInSlice returns true if idx is found on any position in the provided slice

func MakeDisplayTable

func MakeDisplayTable(nodes []*TestProcessorNode) string

MakeDisplayTable will output a string containing counters for received transactions, headers, miniblocks and meta headers for all provided test nodes

func MakeDisplayTableForP2PNodes

func MakeDisplayTableForP2PNodes(nodes map[uint32][]*TestP2PNode) string

MakeDisplayTableForP2PNodes will output a string containing counters for received messages for all provided test nodes

func MintAddress

func MintAddress(accnts state.AccountsAdapter, addressBytes []byte, value *big.Int)

MintAddress will create an account (if it does not exists), update the balance with required value, save the account and commit the trie.

func MintAllNodes

func MintAllNodes(nodes []*TestProcessorNode, value *big.Int)

MintAllNodes will take each shard node (n) and will mint all nodes that have their pk managed by the iterating node n

func MintAllPlayers

func MintAllPlayers(nodes []*TestProcessorNode, players []*TestWalletAccount, value *big.Int)

MintAllPlayers mints addresses for all players

func NewOneNodeNetwork added in v1.0.147

func NewOneNodeNetwork() *oneNodeNetwork

NewOneNodeNetwork creates a one-node network, useful for some integration tests

func PlayerSendsTransaction added in v1.0.133

func PlayerSendsTransaction(
	nodes []*TestProcessorNode,
	player *TestWalletAccount,
	scAddress []byte,
	value *big.Int,
	txData string,
	gasLimit uint64,
)

PlayerSendsTransaction creates and sends a transaction to the SC

func PrintShardAccount

func PrintShardAccount(accnt state.UserAccountHandler, tag string)

PrintShardAccount outputs on console a shard account data contained

func ProposeAndSyncOneBlock

func ProposeAndSyncOneBlock(
	t *testing.T,
	nodes []*TestProcessorNode,
	idxProposers []int,
	round uint64,
	nonce uint64,
) (uint64, uint64)

ProposeAndSyncOneBlock proposes a block, syncs the block and then increments the round

func ProposeBlock

func ProposeBlock(nodes []*TestProcessorNode, idxProposers []int, round uint64, nonce uint64)

ProposeBlock proposes a block for every shard

func ProposeBlockSignalsEmptyBlock

func ProposeBlockSignalsEmptyBlock(
	node *TestProcessorNode,
	round uint64,
	nonce uint64,
) (data.HeaderHandler, data.BodyHandler, bool)

ProposeBlockSignalsEmptyBlock proposes and broadcasts a block

func ProposeBlocks

func ProposeBlocks(
	nodes []*TestProcessorNode,
	round *uint64,
	idxProposers []int,
	nonces []*uint64,
	numOfRounds int,
)

ProposeBlocks proposes blocks for a given number of rounds

func PubKeysMapFromKeysMap

func PubKeysMapFromKeysMap(keyPairMap map[uint32][]*TestKeyPair) map[uint32][]string

PubKeysMapFromKeysMap returns a map of public keys per shard from the key pairs per shard map.

func ResetHighestProbableNonce

func ResetHighestProbableNonce(nodes []*TestProcessorNode, shardId uint32, targetNonce uint64)

ResetHighestProbableNonce resets the highest probable nonce

func SaveDelegationContractsList added in v1.1.56

func SaveDelegationContractsList(nodes []*TestProcessorNode)

SaveDelegationContractsList will save a mock configuration for the delegation contracts list

func SaveDelegationManagerConfig added in v1.1.56

func SaveDelegationManagerConfig(nodes []*TestProcessorNode)

SaveDelegationManagerConfig will save a mock configuration for the delegation manager SC

func ScCallTxWithParams

func ScCallTxWithParams(
	senderNode *TestProcessorNode,
	sk crypto.PrivateKey,
	nonce uint64,
	data string,
	value *big.Int,
	gasLimit uint64,
	gasPrice uint64,
)

ScCallTxWithParams creates and sends a SC tx call or deploy with all major parameters provided

func SetEconomicsParameters

func SetEconomicsParameters(nodes []*TestProcessorNode, maxGasLimitPerBlock uint64, minGasPrice uint64, minGasLimit uint64)

SetEconomicsParameters will set maxGasLimitPerBlock, minGasPrice and minGasLimits to provided nodes

func StartSyncingBlocks

func StartSyncingBlocks(nodes []*TestProcessorNode)

StartSyncingBlocks starts the syncing process of all the nodes

func SyncAllShardsWithRoundBlock

func SyncAllShardsWithRoundBlock(
	t *testing.T,
	nodesMap map[uint32][]*TestProcessorNode,
	indexProposers map[uint32]int,
	round uint64,
)

SyncAllShardsWithRoundBlock enforces all nodes in each shard synchronizing the block for the given round

func SyncBlock

func SyncBlock(
	t *testing.T,
	nodes []*TestProcessorNode,
	idxProposers []int,
	round uint64,
)

SyncBlock synchronizes the proposed block in all the other shard nodes

func TestPrivateKeyHasBalance

func TestPrivateKeyHasBalance(t *testing.T, n *TestProcessorNode, sk crypto.PrivateKey, expectedBalance *big.Int)

TestPrivateKeyHasBalance checks if the private key has the expected balance

func TestPublicKeyHasBalance

func TestPublicKeyHasBalance(t *testing.T, n *TestProcessorNode, pk crypto.PublicKey, expectedBalance *big.Int)

TestPublicKeyHasBalance checks if the account corresponding to the given public key has the expected balance

func Uint32InSlice

func Uint32InSlice(searched uint32, list []uint32) bool

Uint32InSlice checks if a uint32 value is in a slice

func UpdateRound

func UpdateRound(nodes []*TestProcessorNode, round uint64)

UpdateRound updates the round for every node

func WaitForBootstrapAndShowConnected

func WaitForBootstrapAndShowConnected(peers []p2p.Messenger, durationBootstrapingTime time.Duration)

WaitForBootstrapAndShowConnected will delay a given duration in order to wait for bootstraping and print the number of peers that each node is connected to

func WaitOperationToBeDone

func WaitOperationToBeDone(t *testing.T, nodes []*TestProcessorNode, nrOfRounds int, nonce uint64, round uint64, idxProposers []int) (uint64, uint64)

WaitOperationToBeDone -

func WhiteListTxs added in v1.0.133

func WhiteListTxs(nodes []*TestProcessorNode, txs []*transaction.Transaction)

WhiteListTxs -

Types

type Address added in v1.2.0

type Address = []byte

Address is a slice of bytes used to identify an account

type ArgIndexHashedNodesCoordinatorFactory

type ArgIndexHashedNodesCoordinatorFactory struct {
	// contains filtered or unexported fields
}

ArgIndexHashedNodesCoordinatorFactory -

type Connectable added in v1.1.47

type Connectable interface {
	ConnectTo(connectable Connectable) error
	GetConnectableAddress() string
	IsInterfaceNil() bool
}

Connectable defines the operations for a struct to become connectable by other struct In other words, all instances that implement this interface are able to connect with each other

type CountInterceptor

type CountInterceptor struct {
	// contains filtered or unexported fields
}

CountInterceptor represents an interceptors that counts received messages on topics

func NewCountInterceptor

func NewCountInterceptor() *CountInterceptor

NewCountInterceptor creates a new CountInterceptor instance

func (*CountInterceptor) IsInterfaceNil

func (ci *CountInterceptor) IsInterfaceNil() bool

IsInterfaceNil returns true if there is no value under the interface

func (*CountInterceptor) MessageCount

func (ci *CountInterceptor) MessageCount(topic string) int

MessageCount returns the number of messages received on the provided topic

func (*CountInterceptor) ProcessReceivedMessage

func (ci *CountInterceptor) ProcessReceivedMessage(message p2p.MessageP2P, _ core.PeerID) error

ProcessReceivedMessage is called each time a new message is received

func (*CountInterceptor) Reset

func (ci *CountInterceptor) Reset()

Reset resets the counters values

type CryptoParams

type CryptoParams struct {
	KeyGen       crypto.KeyGenerator
	Keys         map[uint32][]*TestKeyPair
	SingleSigner crypto.SingleSigner
	TxKeyGen     crypto.KeyGenerator
	TxKeys       map[uint32][]*TestKeyPair
}

CryptoParams holds crypto parametres

func CreateCryptoParams

func CreateCryptoParams(nodesPerShard int, nbMetaNodes int, nbShards uint32) *CryptoParams

CreateCryptoParams generates the crypto parameters (key pairs, key generator and suite) for multiple nodes

type Facade added in v1.1.27

type Facade interface {
	GetBalance(address string) (*big.Int, error)
	GetUsername(address string) (string, error)
	GetValueForKey(address string, key string) (string, error)
	GetAccount(address string) (dataApi.AccountResponse, error)
	GetESDTData(address string, key string, nonce uint64) (*esdt.ESDigitalToken, error)
	GetNFTTokenIDsRegisteredByAddress(address string) ([]string, error)
	GetESDTsWithRole(address string, role string) ([]string, error)
	GetAllESDTTokens(address string) (map[string]*esdt.ESDigitalToken, error)
	GetESDTsRoles(address string) (map[string][]string, error)
	GetKeyValuePairs(address string) (map[string]string, error)
	GetBlockByHash(hash string, withTxs bool) (*dataApi.Block, error)
	GetBlockByNonce(nonce uint64, withTxs bool) (*dataApi.Block, error)
	GetBlockByRound(round uint64, withTxs bool) (*dataApi.Block, error)
	Trigger(epoch uint32, withEarlyEndOfEpoch bool) error
	IsSelfTrigger() bool
	GetTotalStakedValue() (*dataApi.StakeValues, error)
	GetDirectStakedList() ([]*dataApi.DirectStakedValue, error)
	GetDelegatorsList() ([]*dataApi.Delegator, error)
	GetAllIssuedESDTs(tokenType string) ([]string, error)
	GetTokenSupply(token string) (*dataApi.ESDTSupply, error)
	GetHeartbeats() ([]data.PubKeyHeartbeat, error)
	StatusMetrics() external.StatusMetricsHandler
	GetQueryHandler(name string) (debug.QueryHandler, error)
	GetPeerInfo(pid string) ([]core.QueryP2PPeerInfo, error)
	GetNumCheckpointsFromAccountState() uint32
	GetNumCheckpointsFromPeerState() uint32
	CreateTransaction(nonce uint64, value string, receiver string, receiverUsername []byte, sender string, senderUsername []byte, gasPrice uint64,
		gasLimit uint64, data []byte, signatureHex string, chainID string, version uint32, options uint32) (*transaction.Transaction, []byte, error)
	ValidateTransaction(tx *transaction.Transaction) error
	ValidateTransactionForSimulation(tx *transaction.Transaction, bypassSignature bool) error
	SendBulkTransactions([]*transaction.Transaction) (uint64, error)
	SimulateTransactionExecution(tx *transaction.Transaction) (*txSimData.SimulationResults, error)
	GetTransaction(hash string, withResults bool) (*transaction.ApiTransactionResult, error)
	ComputeTransactionGasLimit(tx *transaction.Transaction) (*transaction.CostResponse, error)
	EncodeAddressPubkey(pk []byte) (string, error)
	GetThrottlerForEndpoint(endpoint string) (core.Throttler, bool)
	ValidatorStatisticsApi() (map[string]*state.ValidatorApiResponse, error)
	ExecuteSCQuery(*process.SCQuery) (*vm.VMOutputApi, error)
	DecodeAddressPubkey(pk string) ([]byte, error)
	GetProof(rootHash string, address string) (*common.GetProofResponse, error)
	GetProofDataTrie(rootHash string, address string, key string) (*common.GetProofResponse, *common.GetProofResponse, error)
	GetProofCurrentRootHash(address string) (*common.GetProofResponse, error)
	VerifyProof(rootHash string, address string, proof [][]byte) (bool, error)
	IsInterfaceNil() bool
}

Facade is the node facade used to decouple the node implementation with the web server. Used in integration tests

type GasScheduleMap added in v1.2.0

type GasScheduleMap = map[string]map[string]uint64

GasScheduleMap is a map containing the predefined gas costs

type IndexHashedNodesCoordinatorFactory

type IndexHashedNodesCoordinatorFactory struct {
}

IndexHashedNodesCoordinatorFactory -

func (*IndexHashedNodesCoordinatorFactory) CreateNodesCoordinator

CreateNodesCoordinator -

type IndexHashedNodesCoordinatorWithRaterFactory

type IndexHashedNodesCoordinatorWithRaterFactory struct {
	sharding.PeerAccountListAndRatingHandler
}

IndexHashedNodesCoordinatorWithRaterFactory -

func (*IndexHashedNodesCoordinatorWithRaterFactory) CreateNodesCoordinator

CreateNodesCoordinator is used for creating a nodes coordinator in the integration tests based on the provided parameters

type NetworkShardingUpdater

type NetworkShardingUpdater interface {
	GetPeerInfo(pid core.PeerID) core.P2PPeerInfo
	UpdatePeerIDInfo(pid core.PeerID, pk []byte, shardID uint32)
	UpdatePeerIdSubType(pid core.PeerID, peerSubType core.P2PPeerSubType)
	IsInterfaceNil() bool
}

NetworkShardingUpdater defines the updating methods used by the network sharding component

type NodeSlice added in v1.2.0

type NodeSlice = []*TestProcessorNode

NodeSlice is a slice of TestProcessorNode instances

type NodesByShardMap added in v1.2.0

type NodesByShardMap = map[ShardIdentifier]NodeSlice

NodesByShardMap is a map that groups TestProcessorNodes by their shard ID

type NodesCoordinatorFactory

type NodesCoordinatorFactory interface {
	CreateNodesCoordinator(arg ArgIndexHashedNodesCoordinatorFactory) sharding.NodesCoordinator
}

NodesCoordinatorFactory is used for creating a nodesCoordinator in the integration tests

type NodesWithRater

type NodesWithRater struct {
	sharding.NodesCoordinator
	// contains filtered or unexported fields
}

NodesWithRater -

func (*NodesWithRater) IsInterfaceNil

func (nwr *NodesWithRater) IsInterfaceNil() bool

IsInterfaceNil -

type ShardIdentifier added in v1.2.0

type ShardIdentifier = uint32

ShardIdentifier is the numeric index of a shard

type TestBootstrapper

type TestBootstrapper interface {
	process.Bootstrapper
	RollBack(revertUsingForkNonce bool) error
	SetProbableHighestNonce(nonce uint64)
}

TestBootstrapper extends the Bootstrapper interface with some functions intended to be used only in tests as it simplifies the reproduction of edge cases

type TestBuiltinFunction added in v1.1.1

type TestBuiltinFunction struct {
	Function func(acntSnd, acntDst vmcommon.UserAccountHandler, vmInput *vmcommon.ContractCallInput) (*vmcommon.VMOutput, error)
}

TestBuiltinFunction wraps a builtin function defined ad-hoc, for testing

func (*TestBuiltinFunction) IsActive added in v1.2.10

func (bf *TestBuiltinFunction) IsActive() bool

IsActive -

func (*TestBuiltinFunction) IsInterfaceNil added in v1.1.1

func (bf *TestBuiltinFunction) IsInterfaceNil() bool

IsInterfaceNil --

func (*TestBuiltinFunction) ProcessBuiltinFunction added in v1.1.1

func (bf *TestBuiltinFunction) ProcessBuiltinFunction(acntSnd, acntDst vmcommon.UserAccountHandler, vmInput *vmcommon.ContractCallInput) (*vmcommon.VMOutput, error)

ProcessBuiltinFunction is a method implementation required by the BuiltinFunction interface

func (*TestBuiltinFunction) SetNewGasConfig added in v1.1.12

func (bf *TestBuiltinFunction) SetNewGasConfig(_ *vmcommon.GasCost)

SetNewGasConfig -

type TestEpochStartTrigger

type TestEpochStartTrigger interface {
	epochStart.TriggerHandler
	GetRoundsPerEpoch() uint64
	SetTrigger(triggerHandler epochStart.TriggerHandler)
	SetRoundsPerEpoch(roundsPerEpoch uint64)
	SetMinRoundsBetweenEpochs(minRoundsPerEpoch uint64)
	SetEpoch(epoch uint32)
}

TestEpochStartTrigger extends the epochStart trigger interface with some functions intended to by used only in tests as it simplifies the reproduction of test scenarios

type TestKeyPair

type TestKeyPair struct {
	Sk crypto.PrivateKey
	Pk crypto.PublicKey
}

TestKeyPair holds a pair of private/public Keys

type TestNetwork added in v1.2.0

type TestNetwork struct {
	NumShards          int
	NodesPerShard      int
	NodesInMetashard   int
	Nodes              NodeSlice
	NodesSharded       NodesByShardMap
	Wallets            []*TestWalletAccount
	DeploymentAddress  Address
	Proposers          []int
	Round              uint64
	Nonce              uint64
	T                  *testing.T
	DefaultNode        *TestProcessorNode
	DefaultGasPrice    uint64
	MinGasLimit        uint64
	MaxGasLimit        uint64
	DefaultVM          []byte
	DefaultGasSchedule GasScheduleMap
	BypassErrorsOnce   bool
}

TestNetwork wraps a set of TestProcessorNodes along with a set of test Wallets, instantiates them, controls them and provides operations with them; designed to be used in integration tests. TODO combine TestNetwork with the preexisting TestContext and OneNodeNetwork into a single struct containing the functionality of all three

func NewTestNetwork added in v1.2.0

func NewTestNetwork(t *testing.T) *TestNetwork

NewTestNetwork creates an unsized TestNetwork; topology must be configured afterwards, before starting.

func NewTestNetworkSized added in v1.2.0

func NewTestNetworkSized(
	t *testing.T,
	numShards int,
	nodesPerShard int,
	nodesInMetashard int,
) *TestNetwork

NewTestNetworkSized creates a new TestNetwork containing topology information; can be started immediately.

func (*TestNetwork) Close added in v1.2.0

func (net *TestNetwork) Close()

Close shuts down the test network.

func (*TestNetwork) ComputeGasLimit added in v1.2.0

func (net *TestNetwork) ComputeGasLimit(tx *transaction.Transaction) uint64

ComputeGasLimit calculates the base gas limit of the provided transaction, smart contract execution or built-in function calls notwithstanding.

func (*TestNetwork) ComputeTxFee added in v1.2.0

func (net *TestNetwork) ComputeTxFee(tx *transaction.Transaction) *big.Int

ComputeTxFee calculates the cost of the provided transaction, smart contract execution or built-in function calls notwithstanding.

func (*TestNetwork) ComputeTxFeeUint64 added in v1.2.0

func (net *TestNetwork) ComputeTxFeeUint64(tx *transaction.Transaction) uint64

ComputeTxFeeUint64 calculates the cost of the provided transaction, smart contract execution or built-in function calls notwithstanding.

func (*TestNetwork) CreateSignedTx added in v1.2.0

func (net *TestNetwork) CreateSignedTx(
	sender *TestWalletAccount,
	recvAddress Address,
	value *big.Int,
	txData []byte,
) *transaction.Transaction

CreateSignedTx creates a new transaction from provided information and signs it with the `sender` wallet; if modified, a transaction must be sent to the network using SignAndSendTx instead of SendTx.

func (*TestNetwork) CreateSignedTxUint64 added in v1.2.0

func (net *TestNetwork) CreateSignedTxUint64(
	sender *TestWalletAccount,
	recvAddress Address,
	value uint64,
	txData []byte,
) *transaction.Transaction

CreateSignedTxUint64 creates a new transaction from provided information and signs it with the `sender` wallet; if modified, a transaction must be sent to the network using SignAndSendTx instead of SendTx.

func (*TestNetwork) CreateTx added in v1.2.0

func (net *TestNetwork) CreateTx(
	sender *TestWalletAccount,
	recvAddress Address,
	value *big.Int,
	txData []byte,
) *transaction.Transaction

CreateTx creates a new transaction from the provided information; must be signed before sending; the nonce of the `sender` wallet is incremented.

func (*TestNetwork) CreateTxUint64 added in v1.2.0

func (net *TestNetwork) CreateTxUint64(
	sender *TestWalletAccount,
	recvAddress Address,
	value uint64,
	txData []byte,
) *transaction.Transaction

CreateTxUint64 creates a new transaction from the provided information; must be signed before sending; the nonce of the `sender` wallet is incremented.

func (*TestNetwork) CreateWallets added in v1.2.0

func (net *TestNetwork) CreateWallets(count int)

CreateWallets initializes the internal test wallets

func (*TestNetwork) DeployNonpayableSC added in v1.2.14

func (net *TestNetwork) DeployNonpayableSC(owner *TestWalletAccount, fileName string) []byte

DeployNonpayableSC deploys a non-payable contract with the bytecode specified by fileName.

func (*TestNetwork) DeployPayableSC added in v1.2.14

func (net *TestNetwork) DeployPayableSC(owner *TestWalletAccount, fileName string) []byte

DeployPayableSC deploys a payable contract with the bytecode specified by fileName.

func (*TestNetwork) DeploySC added in v1.2.14

func (net *TestNetwork) DeploySC(owner *TestWalletAccount, fileName string, payable bool) []byte

DeploySC deploys a contract with the bytecode specified by fileName.

func (*TestNetwork) DeploySCWithInitArgs added in v1.3.8

func (net *TestNetwork) DeploySCWithInitArgs(
	owner *TestWalletAccount,
	fileName string,
	payable bool,
	args ...[]byte,
) []byte

DeploySCWithInitArgs deploy a contract with initial arguments.

func (*TestNetwork) GetAccountHandler added in v1.2.0

func (net *TestNetwork) GetAccountHandler(address Address) state.UserAccountHandler

GetAccountHandler retrieves the `state.UserAccountHandler` instance for the specified address by querying a node belonging to the shard of the address.

func (*TestNetwork) Increment added in v1.2.0

func (net *TestNetwork) Increment()

Increment only increments the Round and the Nonce, without triggering the processing of a block; use Step to process a block as well.

func (*TestNetwork) MintNodeAccounts added in v1.2.0

func (net *TestNetwork) MintNodeAccounts(value *big.Int)

MintNodeAccounts adds the specified value to the accounts owned by the nodes of the TestNetwork.

func (*TestNetwork) MintNodeAccountsUint64 added in v1.2.0

func (net *TestNetwork) MintNodeAccountsUint64(value uint64)

MintNodeAccountsUint64 adds the specified value to the accounts owned by the nodes of the TestNetwork.

func (*TestNetwork) MintWallets added in v1.2.0

func (net *TestNetwork) MintWallets(value *big.Int)

MintWallets adds the specified value to the test wallets.

func (*TestNetwork) MintWalletsUint64 added in v1.2.0

func (net *TestNetwork) MintWalletsUint64(value uint64)

MintWalletsUint64 adds the specified value to the test wallets.

func (*TestNetwork) NewAddress added in v1.2.0

func (net *TestNetwork) NewAddress(creator *TestWalletAccount) Address

NewAddress creates a new child address of the provided wallet; used to compute the address of newly deployed smart contracts.

func (*TestNetwork) RequireWalletNoncesInSyncWithState added in v1.2.0

func (net *TestNetwork) RequireWalletNoncesInSyncWithState()

RequireWalletNoncesInSyncWithState asserts that the nonces of all wallets managed by the test network are in sync with the actual nonces in the blockchain state.

func (*TestNetwork) SendTx added in v1.2.0

func (net *TestNetwork) SendTx(tx *transaction.Transaction) string

SendTx submits the provided transaction to the test network; transaction must be already signed. Returns the transaction hash.

func (*TestNetwork) SendTxFromNode added in v1.2.0

func (net *TestNetwork) SendTxFromNode(tx *transaction.Transaction, node *TestProcessorNode) string

SendTxFromNode submits the provided transaction via the specified node; transaction must be already signed. Returns the transaction hash.

func (*TestNetwork) ShardOfAddress added in v1.2.0

func (net *TestNetwork) ShardOfAddress(address Address) ShardIdentifier

ShardOfAddress returns the shard ID of the specified address.

func (*TestNetwork) SignAndSendTx added in v1.2.0

func (net *TestNetwork) SignAndSendTx(signer *TestWalletAccount, tx *transaction.Transaction) string

SignAndSendTx signs then submits the provided transaction to the test network, using the provided signer account; use it to send transactions that have been modified after being created. Returns the transaction hash.

func (*TestNetwork) SignTx added in v1.2.0

func (net *TestNetwork) SignTx(signer *TestWalletAccount, tx *transaction.Transaction)

SignTx signs a transaction with the provided `signer` wallet.

func (*TestNetwork) Start added in v1.2.0

func (net *TestNetwork) Start()

Start initializes the test network and starts its nodes

func (*TestNetwork) Step added in v1.2.0

func (net *TestNetwork) Step()

Step increments the Round and Nonce and triggers the production and synchronization of a single block.

func (*TestNetwork) Steps added in v1.2.0

func (net *TestNetwork) Steps(steps int)

Steps repeatedly increments the Round and Nonce and processes blocks.

type TestP2PNode

type TestP2PNode struct {
	Messenger              p2p.Messenger
	NodesCoordinator       sharding.NodesCoordinator
	ShardCoordinator       sharding.Coordinator
	NetworkShardingUpdater NetworkShardingUpdater
	Node                   *node.Node
	NodeKeys               TestKeyPair
	SingleSigner           crypto.SingleSigner
	KeyGen                 crypto.KeyGenerator
	Storage                dataRetriever.StorageService
	Interceptor            *CountInterceptor
}

TestP2PNode represents a container type of class used in integration tests with all its fields exported, used mainly on P2P tests

func NewTestP2PNode

func NewTestP2PNode(
	maxShards uint32,
	nodeShardId uint32,
	p2pConfig config.P2PConfig,
	coordinator sharding.NodesCoordinator,
	keys TestKeyPair,
) *TestP2PNode

NewTestP2PNode returns a new NewTestP2PNode instance

func (*TestP2PNode) CountCrossShardMessages

func (tP2pNode *TestP2PNode) CountCrossShardMessages() int

CountCrossShardMessages returns the messages count on the cross-shard topics

func (*TestP2PNode) CountGlobalMessages

func (tP2pNode *TestP2PNode) CountGlobalMessages() int

CountGlobalMessages returns the messages count on the global topic

func (*TestP2PNode) CountIntraShardMessages

func (tP2pNode *TestP2PNode) CountIntraShardMessages() int

CountIntraShardMessages returns the messages count on the intra-shard topic

func (*TestP2PNode) CreateTestInterceptors

func (tP2pNode *TestP2PNode) CreateTestInterceptors()

CreateTestInterceptors creates test interceptors that count the number of received messages

func (*TestP2PNode) RegisterTopicValidator

func (tP2pNode *TestP2PNode) RegisterTopicValidator(topic string, processor p2p.MessageProcessor)

RegisterTopicValidator registers a message processor instance on the provided topic

type TestProcessorNode

type TestProcessorNode struct {
	ShardCoordinator sharding.Coordinator
	NodesCoordinator sharding.NodesCoordinator
	NodesSetup       sharding.GenesisNodesSetupHandler
	Messenger        p2p.Messenger

	OwnAccount *TestWalletAccount
	NodeKeys   *TestKeyPair

	ExportFolder        string
	DataPool            dataRetriever.PoolsHolder
	Storage             dataRetriever.StorageService
	PeerState           state.AccountsAdapter
	AccntState          state.AccountsAdapter
	TrieStorageManagers map[string]common.StorageManager
	TrieContainer       common.TriesHolder
	BlockChain          data.ChainHandler
	GenesisBlocks       map[uint32]data.HeaderHandler

	EconomicsData *economics.TestEconomicsData
	RatingsData   *rating.RatingsData

	BlockBlackListHandler process.TimeCacher
	HeaderValidator       process.HeaderConstructionValidator
	BlockTracker          process.BlockTracker
	InterceptorsContainer process.InterceptorsContainer
	ResolversContainer    dataRetriever.ResolversContainer
	ResolverFinder        dataRetriever.ResolversFinder
	RequestHandler        process.RequestHandler
	ArwenChangeLocker     common.Locker

	InterimProcContainer   process.IntermediateProcessorContainer
	TxProcessor            process.TransactionProcessor
	TxCoordinator          process.TransactionCoordinator
	ScrForwarder           process.IntermediateTransactionHandler
	BlockchainHook         *hooks.BlockChainHookImpl
	VMContainer            process.VirtualMachinesContainer
	ArgsParser             process.ArgumentsParser
	ScProcessor            *smartContract.TestScProcessor
	RewardsProcessor       process.RewardTransactionProcessor
	PreProcessorsContainer process.PreProcessorsContainer
	GasHandler             process.GasHandler
	FeeAccumulator         process.TransactionFeeHandler
	SmartContractParser    genesis.InitialSmartContractParser
	SystemSCFactory        vm.SystemSCContainerFactory

	ForkDetector             process.ForkDetector
	BlockProcessor           process.BlockProcessor
	BroadcastMessenger       consensus.BroadcastMessenger
	MiniblocksProvider       process.MiniBlockProvider
	Bootstrapper             TestBootstrapper
	RoundHandler             *mock.RoundHandlerMock
	BootstrapStorer          *mock.BoostrapStorerMock
	StorageBootstrapper      *mock.StorageBootstrapperMock
	RequestedItemsHandler    dataRetriever.RequestedItemsHandler
	WhiteListHandler         process.WhiteListHandler
	WhiteListerVerifiedTxs   process.WhiteListHandler
	NetworkShardingCollector consensus.NetworkShardingCollector

	EpochStartTrigger  TestEpochStartTrigger
	EpochStartNotifier notifier.EpochStartNotifier

	MultiSigner             crypto.MultiSigner
	HeaderSigVerifier       process.InterceptedHeaderSigVerifier
	HeaderIntegrityVerifier process.HeaderIntegrityVerifier

	ValidatorStatisticsProcessor process.ValidatorStatisticsProcessor
	Rater                        sharding.PeerAccountListAndRatingHandler

	EpochStartSystemSCProcessor process.EpochStartSystemSCProcessor

	// Node is used to call the functionality already implemented in it
	Node           *node.Node
	SCQueryService external.SCQueryService

	CounterHdrRecv       int32
	CounterMbRecv        int32
	CounterTxRecv        int32
	CounterMetaRcv       int32
	ReceivedTransactions sync.Map

	InitialNodes []*sharding.InitialNode

	ChainID               []byte
	MinTransactionVersion uint32

	ExportHandler            update.ExportHandler
	WaitTime                 time.Duration
	HistoryRepository        dblookupext.HistoryRepository
	EpochNotifier            process.EpochNotifier
	EnableEpochs             config.EnableEpochs
	UseValidVmBlsSigVerifier bool

	TransactionLogProcessor        process.TransactionLogProcessor
	ScheduledMiniBlocksEnableEpoch uint32
}

TestProcessorNode represents a container type of class used in integration tests with all its fields exported

func CreateNode added in v1.0.104

func CreateNode(
	nodesPerShard int,
	nbMetaNodes int,
	shardConsensusGroupSize int,
	metaConsensusGroupSize int,
	shardId uint32,
	nbShards int,
	validatorsMap map[uint32][]sharding.Validator,
	waitingMap map[uint32][]sharding.Validator,
	keyIndex int,
	cp *CryptoParams,
	cache sharding.Cacher,
	coordinatorFactory NodesCoordinatorFactory,
	nodesSetup sharding.GenesisNodesSetupHandler,
	ratingsData *rating.RatingsData,
) *TestProcessorNode

CreateNode -

func CreateNodeWithBLSAndTxKeys added in v1.0.116

func CreateNodeWithBLSAndTxKeys(
	nodesPerShard int,
	nbMetaNodes int,
	shardConsensusGroupSize int,
	metaConsensusGroupSize int,
	shardId uint32,
	nbShards int,
	validatorsMap map[uint32][]sharding.Validator,
	waitingMap map[uint32][]sharding.Validator,
	keyIndex int,
	cp *CryptoParams,
	cache sharding.Cacher,
	coordinatorFactory NodesCoordinatorFactory,
	nodesSetup sharding.GenesisNodesSetupHandler,
	ratingsData *rating.RatingsData,
) *TestProcessorNode

CreateNodeWithBLSAndTxKeys -

func CreateNodes

func CreateNodes(
	numOfShards int,
	nodesPerShard int,
	numMetaChainNodes int,
) []*TestProcessorNode

CreateNodes creates multiple nodes in different shards

func CreateNodesWithBLSSigVerifier added in v1.1.3

func CreateNodesWithBLSSigVerifier(
	numOfShards int,
	nodesPerShard int,
	numMetaChainNodes int,
) []*TestProcessorNode

CreateNodesWithBLSSigVerifier creates multiple nodes in different shards

func CreateNodesWithCustomStateCheckpointModulus

func CreateNodesWithCustomStateCheckpointModulus(
	numOfShards int,
	nodesPerShard int,
	numMetaChainNodes int,
	stateCheckpointModulus uint,
) []*TestProcessorNode

CreateNodesWithCustomStateCheckpointModulus creates multiple nodes in different shards with custom stateCheckpointModulus

func CreateNodesWithEnableEpochs added in v1.2.10

func CreateNodesWithEnableEpochs(
	numOfShards int,
	nodesPerShard int,
	numMetaChainNodes int,
	epochConfig config.EnableEpochs,
) []*TestProcessorNode

CreateNodesWithEnableEpochs creates multiple nodes with custom epoch config

func NewTestProcessorNode

func NewTestProcessorNode(
	maxShards uint32,
	nodeShardId uint32,
	txSignPrivKeyShardId uint32,
) *TestProcessorNode

NewTestProcessorNode returns a new TestProcessorNode instance with a libp2p messenger

func NewTestProcessorNodeWithBLSSigVerifier added in v1.1.3

func NewTestProcessorNodeWithBLSSigVerifier(
	maxShards uint32,
	nodeShardId uint32,
	txSignPrivKeyShardId uint32,
) *TestProcessorNode

NewTestProcessorNodeWithBLSSigVerifier returns a new TestProcessorNode instance with a libp2p messenger with a real BLS sig verifier used in system smart contracts

func NewTestProcessorNodeWithCustomDataPool

func NewTestProcessorNodeWithCustomDataPool(maxShards uint32, nodeShardId uint32, txSignPrivKeyShardId uint32, dPool dataRetriever.PoolsHolder) *TestProcessorNode

NewTestProcessorNodeWithCustomDataPool returns a new TestProcessorNode instance with the given data pool

func NewTestProcessorNodeWithCustomNodesCoordinator

func NewTestProcessorNodeWithCustomNodesCoordinator(
	maxShards uint32,
	nodeShardId uint32,
	epochStartNotifier notifier.EpochStartNotifier,
	nodesCoordinator sharding.NodesCoordinator,
	ratingsData *rating.RatingsData,
	cp *CryptoParams,
	keyIndex int,
	ownAccount *TestWalletAccount,
	headerSigVerifier process.InterceptedHeaderSigVerifier,
	headerIntegrityVerifier process.HeaderIntegrityVerifier,
	nodeSetup sharding.GenesisNodesSetupHandler,
) *TestProcessorNode

NewTestProcessorNodeWithCustomNodesCoordinator returns a new TestProcessorNode instance with custom NodesCoordinator

func NewTestProcessorNodeWithEnableEpochs added in v1.2.10

func NewTestProcessorNodeWithEnableEpochs(
	maxShards uint32,
	nodeShardId uint32,
	txSignPrivKeyShardId uint32,
	enableEpochs config.EnableEpochs,
) *TestProcessorNode

NewTestProcessorNodeWithEnableEpochs returns a TestProcessorNode instance custom enable epochs

func NewTestProcessorNodeWithFullGenesis added in v1.0.133

func NewTestProcessorNodeWithFullGenesis(
	maxShards uint32,
	nodeShardId uint32,
	txSignPrivKeyShardId uint32,
	accountParser genesis.AccountsParser,
	smartContractParser genesis.InitialSmartContractParser,
	heartbeatPk string,
) *TestProcessorNode

NewTestProcessorNodeWithFullGenesis returns a new TestProcessorNode instance with a libp2p messenger and a full genesis deploy

func NewTestProcessorNodeWithStateCheckpointModulus

func NewTestProcessorNodeWithStateCheckpointModulus(
	maxShards uint32,
	nodeShardId uint32,
	txSignPrivKeyShardId uint32,
	stateCheckpointModulus uint,
) *TestProcessorNode

NewTestProcessorNodeWithStateCheckpointModulus creates a new testNodeProcessor with custom state checkpoint modulus

func NewTestProcessorNodeWithStorageTrieAndGasModel added in v1.1.18

func NewTestProcessorNodeWithStorageTrieAndGasModel(
	maxShards uint32,
	nodeShardId uint32,
	txSignPrivKeyShardId uint32,
	trieStore storage.Storer,
	gasMap map[string]map[string]uint64,
) *TestProcessorNode

NewTestProcessorNodeWithStorageTrieAndGasModel returns a new TestProcessorNode instance with a storage-based trie and gas model

func NewTestSyncNode

func NewTestSyncNode(
	maxShards uint32,
	nodeShardId uint32,
	txSignPrivKeyShardId uint32,
) *TestProcessorNode

NewTestSyncNode returns a new TestProcessorNode instance with sync capabilities

func ProposeBlockWithConsensusSignature

func ProposeBlockWithConsensusSignature(
	shardId uint32,
	nodesMap map[uint32][]*TestProcessorNode,
	round uint64,
	nonce uint64,
	randomness []byte,
	epoch uint32,
) (data.BodyHandler, data.HeaderHandler, [][]byte, []*TestProcessorNode)

ProposeBlockWithConsensusSignature proposes

func SetupSyncNodesOneShardAndMeta

func SetupSyncNodesOneShardAndMeta(
	numNodesPerShard int,
	numNodesMeta int,
) ([]*TestProcessorNode, []int)

SetupSyncNodesOneShardAndMeta creates nodes with sync capabilities divided into one shard and a metachain

func (*TestProcessorNode) BroadcastBlock

func (tpn *TestProcessorNode) BroadcastBlock(body data.BodyHandler, header data.HeaderHandler)

BroadcastBlock broadcasts the block and body to the connected peers

func (*TestProcessorNode) CommitBlock

func (tpn *TestProcessorNode) CommitBlock(body data.BodyHandler, header data.HeaderHandler)

CommitBlock commits the block and body

func (*TestProcessorNode) ConnectTo added in v1.1.47

func (tpn *TestProcessorNode) ConnectTo(connectable Connectable) error

ConnectTo will try to initiate a connection to the provided parameter

func (*TestProcessorNode) GetBlockBody

func (tpn *TestProcessorNode) GetBlockBody(header data.HeaderHandler) (*dataBlock.Body, error)

GetBlockBody returns the body for provided header parameter

func (*TestProcessorNode) GetConnectableAddress added in v1.1.47

func (tpn *TestProcessorNode) GetConnectableAddress() string

GetConnectableAddress returns a non circuit, non windows default connectable p2p address

func (*TestProcessorNode) GetMetaBlockBody

func (tpn *TestProcessorNode) GetMetaBlockBody(header *dataBlock.MetaBlock) (*dataBlock.Body, error)

GetMetaBlockBody returns the body for provided header parameter

func (*TestProcessorNode) GetMetaHeader

func (tpn *TestProcessorNode) GetMetaHeader(nonce uint64) (*dataBlock.MetaBlock, error)

GetMetaHeader returns the first *dataBlock.MetaBlock stored in datapools having the nonce provided as parameter

func (*TestProcessorNode) GetShardHeader

func (tpn *TestProcessorNode) GetShardHeader(nonce uint64) (data.HeaderHandler, error)

GetShardHeader returns the first *dataBlock.Header stored in datapools having the nonce provided as parameter

func (*TestProcessorNode) InitDelegationManager added in v1.1.15

func (tpn *TestProcessorNode) InitDelegationManager()

InitDelegationManager will initialize the delegation manager whenever required

func (*TestProcessorNode) InitializeProcessors added in v1.0.138

func (tpn *TestProcessorNode) InitializeProcessors(gasMap map[string]map[string]uint64)

InitializeProcessors will reinitialize processors

func (*TestProcessorNode) IsInterfaceNil added in v1.1.47

func (tpn *TestProcessorNode) IsInterfaceNil() bool

IsInterfaceNil returns true if there is no value under the interface

func (*TestProcessorNode) LoadTxSignSkBytes

func (tpn *TestProcessorNode) LoadTxSignSkBytes(skBytes []byte)

LoadTxSignSkBytes alters the already generated sk/pk pair

func (*TestProcessorNode) MiniBlocksPresent

func (tpn *TestProcessorNode) MiniBlocksPresent(hashes [][]byte) bool

MiniBlocksPresent checks if the all the miniblocks are present in the pool

func (*TestProcessorNode) ProposeBlock

func (tpn *TestProcessorNode) ProposeBlock(round uint64, nonce uint64) (data.BodyHandler, data.HeaderHandler, [][]byte)

ProposeBlock proposes a new block

func (*TestProcessorNode) SendTransaction

func (tpn *TestProcessorNode) SendTransaction(tx *dataTransaction.Transaction) (string, error)

SendTransaction can send a transaction (it does the dispatching)

func (*TestProcessorNode) SetAccountNonce

func (tpn *TestProcessorNode) SetAccountNonce(nonce uint64) error

SetAccountNonce sets the account nonce with journal

func (*TestProcessorNode) StartSync

func (tpn *TestProcessorNode) StartSync() error

StartSync calls Bootstrapper.StartSync. Errors if bootstrapper is not set

func (*TestProcessorNode) SyncNode

func (tpn *TestProcessorNode) SyncNode(nonce uint64) error

SyncNode tries to process and commit a block already stored in data pool with provided nonce

func (*TestProcessorNode) WhiteListBody added in v1.0.133

func (tpn *TestProcessorNode) WhiteListBody(nodes []*TestProcessorNode, bodyHandler data.BodyHandler)

WhiteListBody will whitelist all miniblocks from the given body for all the given nodes

type TestProcessorNodeWithTestWebServer added in v1.1.27

type TestProcessorNodeWithTestWebServer struct {
	*TestProcessorNode
	// contains filtered or unexported fields
}

TestProcessorNodeWithTestWebServer represents a TestProcessorNode with a test web server

func NewTestProcessorNodeWithTestWebServer added in v1.1.27

func NewTestProcessorNodeWithTestWebServer(
	maxShards uint32,
	nodeShardId uint32,
	txSignPrivKeyShardId uint32,
) *TestProcessorNodeWithTestWebServer

NewTestProcessorNodeWithTestWebServer returns a new TestProcessorNodeWithTestWebServer instance with a libp2p messenger

func (*TestProcessorNodeWithTestWebServer) DoRequest added in v1.1.27

DoRequest preforms a test request on the web server, returning the response ready to be parsed

type TestStorage

type TestStorage struct {
	// contains filtered or unexported fields
}

TestStorage represents a container type of class used in integration tests for storage

func NewTestStorage

func NewTestStorage() *TestStorage

NewTestStorage return an object of type TestStorage

func (*TestStorage) CreateStorageLevelDB

func (ts *TestStorage) CreateStorageLevelDB() storage.Storer

CreateStorageLevelDB creates a storage levelDB

func (*TestStorage) CreateStorageLevelDBSerial

func (ts *TestStorage) CreateStorageLevelDBSerial() storage.Storer

CreateStorageLevelDBSerial creates a storage levelDB serial

func (*TestStorage) CreateStoredData

func (ts *TestStorage) CreateStoredData(nonce uint64) ([]byte, []byte)

CreateStoredData creates stored data

func (*TestStorage) InitAdditionalFieldsForStorageOperations

func (ts *TestStorage) InitAdditionalFieldsForStorageOperations(nbTxsWrite int, mapRemovedKeys *sync.Map, maxWritten *uint64)

InitAdditionalFieldsForStorageOperations init additional structure fields to can do storage operations

func (*TestStorage) ReadMultiple

func (ts *TestStorage) ReadMultiple(
	store storage.Storer,
	wg *sync.WaitGroup,
	chStartTrigger chan struct{},
	errors *int32,
)

ReadMultiple read multiple data from storage

func (*TestStorage) RemoveMultiple

func (ts *TestStorage) RemoveMultiple(
	store storage.Storer,
	wg *sync.WaitGroup,
	chEndRemove chan struct{},
	errors *int32,
)

RemoveMultiple remove multiple data from storage

func (*TestStorage) WriteMultipleWithNotif

func (ts *TestStorage) WriteMultipleWithNotif(
	store storage.Storer,
	wg *sync.WaitGroup,
	chWriteDone chan struct{},
	nbNotifDone int,
	errors *int32,
)

WriteMultipleWithNotif write multiple data in storage without notification

type TestWalletAccount

type TestWalletAccount struct {
	SingleSigner      crypto.SingleSigner
	BlockSingleSigner crypto.SingleSigner
	SkTxSign          crypto.PrivateKey
	PkTxSign          crypto.PublicKey
	PkTxSignBytes     []byte
	KeygenTxSign      crypto.KeyGenerator
	KeygenBlockSign   crypto.KeyGenerator
	PeerSigHandler    crypto.PeerSignatureHandler

	Address []byte
	Nonce   uint64
	Balance *big.Int
}

TestWalletAccount creates and account with balance and crypto necessary to sign transactions

func CreateTestWalletAccount

func CreateTestWalletAccount(coordinator sharding.Coordinator, shardId uint32) *TestWalletAccount

CreateTestWalletAccount creates an wallet account in a selected shard

func CreateTestWalletAccountWithKeygenAndSingleSigner

func CreateTestWalletAccountWithKeygenAndSingleSigner(
	coordinator sharding.Coordinator,
	shardId uint32,
	blockSingleSigner crypto.SingleSigner,
	keyGenBlockSign crypto.KeyGenerator,
) *TestWalletAccount

CreateTestWalletAccountWithKeygenAndSingleSigner creates a wallet account in a selected shard

func (*TestWalletAccount) LoadTxSignSkBytes

func (twa *TestWalletAccount) LoadTxSignSkBytes(skBytes []byte)

LoadTxSignSkBytes alters the already generated sk/pk pair

type Type

type Type uint8

Type defines account types to save in accounts trie

const (
	// UserAccount identifies an account holding balance, storage updates, code
	UserAccount Type = 0
	// ValidatorAccount identifies an account holding stake, crypto public keys, assigned shard, rating
	ValidatorAccount Type = 1
)

Jump to

Keyboard shortcuts

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