From c8c8cf9e6ea8009111ab6ec61eda7738f3a72ad7 Mon Sep 17 00:00:00 2001 From: Jacob Turner Date: Fri, 28 Nov 2025 16:33:11 +0100 Subject: [PATCH] Refactor e2e tooling to prepare for ethereum networks --- tests/flows/governance/validator_set_sig.go | 2 +- tests/flows/ictt/erc20_home_erc20_remote.go | 2 +- .../ictt/erc20_home_erc20_remote_multihop.go | 5 +- .../erc20_home_erc20_remote_send_and_call.go | 2 +- tests/flows/ictt/erc20_home_native_remote.go | 2 +- .../ictt/erc20_home_native_remote_multihop.go | 5 +- tests/flows/ictt/native_home_erc20_remote.go | 2 +- .../ictt/native_home_erc20_remote_multihop.go | 5 +- tests/flows/ictt/native_home_native_remote.go | 5 +- .../native_home_native_remote_multihop.go | 5 +- .../ictt/registration_and_collateral_check.go | 2 +- .../ictt/transparent_proxy_upgradeability.go | 2 +- tests/flows/teleporter/add_fee_amount.go | 2 +- tests/flows/teleporter/basic_send_receive.go | 2 +- .../deliver_to_nonexistent_contract.go | 2 +- .../teleporter/deliver_to_wrong_chain.go | 2 +- tests/flows/teleporter/insufficient_gas.go | 2 +- .../registry/check_upgrade_access.go | 2 +- .../teleporter/registry/pause_teleporter.go | 2 +- .../registry/teleporter_registry.go | 2 +- tests/flows/teleporter/relay_message_twice.go | 2 +- .../teleporter/relayer_modifies_message.go | 4 +- .../teleporter/resubmit_altered_message.go | 2 +- .../teleporter/retry_successful_execution.go | 2 +- .../teleporter/send_specific_receipts.go | 2 +- .../teleporter/teleporter_message_ids.go | 2 +- tests/flows/teleporter/unallowed_relayer.go | 2 +- tests/flows/teleporter/validator_churn.go | 2 +- .../delegator_inactive_validator.go | 2 +- .../validator-manager/erc20_token_staking.go | 2 +- .../validator-manager/native_token_staking.go | 2 +- tests/flows/validator-manager/poa_to_pos.go | 2 +- ...{network.go => local_avalanche_network.go} | 50 ++++++++++--------- tests/network/local_network.go | 12 +++++ .../governance/governance_suite_test.go | 4 +- tests/suites/ictt/ictt_suite_test.go | 5 +- .../teleporter/teleporter_suite_test.go | 4 +- .../validator_manager_suite_test.go | 4 +- tests/utils/chain.go | 28 +++++++---- 39 files changed, 112 insertions(+), 76 deletions(-) rename tests/network/{network.go => local_avalanche_network.go} (93%) create mode 100644 tests/network/local_network.go diff --git a/tests/flows/governance/validator_set_sig.go b/tests/flows/governance/validator_set_sig.go index ab506f855..ff5bc6ca0 100644 --- a/tests/flows/governance/validator_set_sig.go +++ b/tests/flows/governance/validator_set_sig.go @@ -12,7 +12,7 @@ import ( . "github.com/onsi/gomega" ) -func ValidatorSetSig(network *localnetwork.LocalNetwork) { +func ValidatorSetSig(network *localnetwork.LocalAvalancheNetwork) { // ************************************************************************************************ // Setup // ************************************************************************************************ diff --git a/tests/flows/ictt/erc20_home_erc20_remote.go b/tests/flows/ictt/erc20_home_erc20_remote.go index fd67fe363..f857229eb 100644 --- a/tests/flows/ictt/erc20_home_erc20_remote.go +++ b/tests/flows/ictt/erc20_home_erc20_remote.go @@ -19,7 +19,7 @@ import ( * Transfers C-Chain example ERC20 tokens to L1 A * Transfer tokens from L1 A to C-Chain */ -func ERC20TokenHomeERC20TokenRemote(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func ERC20TokenHomeERC20TokenRemote(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { cChainInfo := network.GetPrimaryNetworkInfo() l1AInfo, _ := network.GetTwoL1s() fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/ictt/erc20_home_erc20_remote_multihop.go b/tests/flows/ictt/erc20_home_erc20_remote_multihop.go index 4408d334b..f6150996e 100644 --- a/tests/flows/ictt/erc20_home_erc20_remote_multihop.go +++ b/tests/flows/ictt/erc20_home_erc20_remote_multihop.go @@ -19,7 +19,10 @@ import ( * Transfer tokens from L1 A to L1 B through multi-hop * Transfer back tokens from L1 B to L1 A through multi-hop */ -func ERC20TokenHomeERC20TokenRemoteMultiHop(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func ERC20TokenHomeERC20TokenRemoteMultiHop( + network *localnetwork.LocalAvalancheNetwork, + teleporter utils.TeleporterTestInfo, +) { cChainInfo := network.GetPrimaryNetworkInfo() l1AInfo, l1BInfo := network.GetTwoL1s() fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/ictt/erc20_home_erc20_remote_send_and_call.go b/tests/flows/ictt/erc20_home_erc20_remote_send_and_call.go index 7d87fbc15..5b90e42b0 100644 --- a/tests/flows/ictt/erc20_home_erc20_remote_send_and_call.go +++ b/tests/flows/ictt/erc20_home_erc20_remote_send_and_call.go @@ -21,7 +21,7 @@ import ( * C-Chain and calls contract on the C-Chain using sendAndCall */ func ERC20TokenHomeERC20TokenRemoteSendAndCall( - network *localnetwork.LocalNetwork, + network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo, ) { cChainInfo := network.GetPrimaryNetworkInfo() diff --git a/tests/flows/ictt/erc20_home_native_remote.go b/tests/flows/ictt/erc20_home_native_remote.go index 1ca7b34e9..1b5f4e405 100644 --- a/tests/flows/ictt/erc20_home_native_remote.go +++ b/tests/flows/ictt/erc20_home_native_remote.go @@ -31,7 +31,7 @@ var ( * Transfers C-Chain example ERC20 tokens to L1 A as L1 A's native token * Transfer back tokens from L1 A to C-Chain */ -func ERC20TokenHomeNativeTokenRemote(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func ERC20TokenHomeNativeTokenRemote(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { cChainInfo := network.GetPrimaryNetworkInfo() l1AInfo, _ := network.GetTwoL1s() fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/ictt/erc20_home_native_remote_multihop.go b/tests/flows/ictt/erc20_home_native_remote_multihop.go index c1ba08a70..d2ae03f4e 100644 --- a/tests/flows/ictt/erc20_home_native_remote_multihop.go +++ b/tests/flows/ictt/erc20_home_native_remote_multihop.go @@ -22,7 +22,10 @@ import ( - Transfer tokens from L1 A to L1 B through multi-hop - Transfer back tokens from L1 B to L1 A through multi-hop */ -func ERC20TokenHomeNativeTokenRemoteMultiHop(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func ERC20TokenHomeNativeTokenRemoteMultiHop( + network *localnetwork.LocalAvalancheNetwork, + teleporter utils.TeleporterTestInfo, +) { cChainInfo := network.GetPrimaryNetworkInfo() l1AInfo, l1BInfo := network.GetTwoL1s() fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/ictt/native_home_erc20_remote.go b/tests/flows/ictt/native_home_erc20_remote.go index c7b71c48b..225c810d5 100644 --- a/tests/flows/ictt/native_home_erc20_remote.go +++ b/tests/flows/ictt/native_home_erc20_remote.go @@ -19,7 +19,7 @@ import ( * Transfers C-Chain native tokens to L1 A * Transfer back tokens from L1 A to C-Chain */ -func NativeTokenHomeERC20TokenRemote(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func NativeTokenHomeERC20TokenRemote(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { cChainInfo := network.GetPrimaryNetworkInfo() l1AInfo, _ := network.GetTwoL1s() fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/ictt/native_home_erc20_remote_multihop.go b/tests/flows/ictt/native_home_erc20_remote_multihop.go index 72a034f09..481cf2ca3 100644 --- a/tests/flows/ictt/native_home_erc20_remote_multihop.go +++ b/tests/flows/ictt/native_home_erc20_remote_multihop.go @@ -20,7 +20,10 @@ import ( * Transfer tokens from L1 A to L1 B through multi-hop * Brige back tokens from L1 B to L1 A through multi-hop */ -func NativeTokenHomeERC20TokenRemoteMultiHop(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func NativeTokenHomeERC20TokenRemoteMultiHop( + network *localnetwork.LocalAvalancheNetwork, + teleporter utils.TeleporterTestInfo, +) { cChainInfo := network.GetPrimaryNetworkInfo() l1AInfo, l1BInfo := network.GetTwoL1s() fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/ictt/native_home_native_remote.go b/tests/flows/ictt/native_home_native_remote.go index 32f0070a0..ad4e45fa0 100644 --- a/tests/flows/ictt/native_home_native_remote.go +++ b/tests/flows/ictt/native_home_native_remote.go @@ -18,7 +18,10 @@ import ( * Transfers C-Chain native tokens to L1 A * Transfer back tokens from L1 A to C-Chain */ -func NativeTokenHomeNativeDestination(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func NativeTokenHomeNativeDestination( + network *localnetwork.LocalAvalancheNetwork, + teleporter utils.TeleporterTestInfo, +) { cChainInfo := network.GetPrimaryNetworkInfo() l1AInfo, _ := network.GetTwoL1s() fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/ictt/native_home_native_remote_multihop.go b/tests/flows/ictt/native_home_native_remote_multihop.go index 44bced622..0069cf8f8 100644 --- a/tests/flows/ictt/native_home_native_remote_multihop.go +++ b/tests/flows/ictt/native_home_native_remote_multihop.go @@ -21,7 +21,10 @@ import ( - Transfer tokens from L1 A to L1 B through multi-hop - Transfer back tokens from L1 B to L1 A through multi-hop */ -func NativeTokenHomeNativeTokenRemoteMultiHop(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func NativeTokenHomeNativeTokenRemoteMultiHop( + network *localnetwork.LocalAvalancheNetwork, + teleporter utils.TeleporterTestInfo, +) { cChainInfo := network.GetPrimaryNetworkInfo() l1AInfo, l1BInfo := network.GetTwoL1s() fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/ictt/registration_and_collateral_check.go b/tests/flows/ictt/registration_and_collateral_check.go index 97d87e5d6..67abf152f 100644 --- a/tests/flows/ictt/registration_and_collateral_check.go +++ b/tests/flows/ictt/registration_and_collateral_check.go @@ -21,7 +21,7 @@ import ( * Collateralize the remote * Check sending to collateralized remote succeeds and withdraws with correct scale. */ -func RegistrationAndCollateralCheck(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func RegistrationAndCollateralCheck(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { cChainInfo := network.GetPrimaryNetworkInfo() l1AInfo, _ := network.GetTwoL1s() fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/ictt/transparent_proxy_upgradeability.go b/tests/flows/ictt/transparent_proxy_upgradeability.go index 531af1b66..899b8f356 100644 --- a/tests/flows/ictt/transparent_proxy_upgradeability.go +++ b/tests/flows/ictt/transparent_proxy_upgradeability.go @@ -26,7 +26,7 @@ import ( * Check that the transfer was successful, and expected balances are correct */ -func TransparentUpgradeableProxy(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func TransparentUpgradeableProxy(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { cChainInfo := network.GetPrimaryNetworkInfo() l1AInfo, _ := network.GetTwoL1s() fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/teleporter/add_fee_amount.go b/tests/flows/teleporter/add_fee_amount.go index d7cb2736c..cdecfde0b 100644 --- a/tests/flows/teleporter/add_fee_amount.go +++ b/tests/flows/teleporter/add_fee_amount.go @@ -12,7 +12,7 @@ import ( . "github.com/onsi/gomega" ) -func AddFeeAmount(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func AddFeeAmount(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { l1AInfo := network.GetPrimaryNetworkInfo() l1BInfo, _ := network.GetTwoL1s() teleporterContractAddress := teleporter.TeleporterMessengerAddress(l1AInfo) diff --git a/tests/flows/teleporter/basic_send_receive.go b/tests/flows/teleporter/basic_send_receive.go index e801ef24d..f1a4d9679 100644 --- a/tests/flows/teleporter/basic_send_receive.go +++ b/tests/flows/teleporter/basic_send_receive.go @@ -13,7 +13,7 @@ import ( ) // Tests basic one-way send from L1 A to L1 B and vice versa -func BasicSendReceive(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func BasicSendReceive(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { l1AInfo := network.GetPrimaryNetworkInfo() l1BInfo, _ := network.GetTwoL1s() teleporterContractAddress := teleporter.TeleporterMessengerAddress(l1AInfo) diff --git a/tests/flows/teleporter/deliver_to_nonexistent_contract.go b/tests/flows/teleporter/deliver_to_nonexistent_contract.go index 15cfc94a7..e277a56fe 100644 --- a/tests/flows/teleporter/deliver_to_nonexistent_contract.go +++ b/tests/flows/teleporter/deliver_to_nonexistent_contract.go @@ -14,7 +14,7 @@ import ( . "github.com/onsi/gomega" ) -func DeliverToNonExistentContract(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func DeliverToNonExistentContract(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { l1AInfo := network.GetPrimaryNetworkInfo() l1BInfo, _ := network.GetTwoL1s() fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/teleporter/deliver_to_wrong_chain.go b/tests/flows/teleporter/deliver_to_wrong_chain.go index d4d0c7349..d693f2447 100644 --- a/tests/flows/teleporter/deliver_to_wrong_chain.go +++ b/tests/flows/teleporter/deliver_to_wrong_chain.go @@ -13,7 +13,7 @@ import ( . "github.com/onsi/gomega" ) -func DeliverToWrongChain(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func DeliverToWrongChain(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { l1AInfo := network.GetPrimaryNetworkInfo() l1BInfo, L1CInfo := network.GetTwoL1s() fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/teleporter/insufficient_gas.go b/tests/flows/teleporter/insufficient_gas.go index a229bc141..f04f993ef 100644 --- a/tests/flows/teleporter/insufficient_gas.go +++ b/tests/flows/teleporter/insufficient_gas.go @@ -10,7 +10,7 @@ import ( . "github.com/onsi/gomega" ) -func InsufficientGas(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func InsufficientGas(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { l1AInfo := network.GetPrimaryNetworkInfo() l1BInfo, _ := network.GetTwoL1s() fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/teleporter/registry/check_upgrade_access.go b/tests/flows/teleporter/registry/check_upgrade_access.go index 8a3d013d1..d726a02d8 100644 --- a/tests/flows/teleporter/registry/check_upgrade_access.go +++ b/tests/flows/teleporter/registry/check_upgrade_access.go @@ -13,7 +13,7 @@ import ( . "github.com/onsi/gomega" ) -func CheckUpgradeAccess(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func CheckUpgradeAccess(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { l1Info := network.GetPrimaryNetworkInfo() fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/teleporter/registry/pause_teleporter.go b/tests/flows/teleporter/registry/pause_teleporter.go index b1bef12ac..22a2778d5 100644 --- a/tests/flows/teleporter/registry/pause_teleporter.go +++ b/tests/flows/teleporter/registry/pause_teleporter.go @@ -9,7 +9,7 @@ import ( . "github.com/onsi/gomega" ) -func PauseTeleporter(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func PauseTeleporter(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { l1AInfo := network.GetPrimaryNetworkInfo() l1BInfo, _ := network.GetTwoL1s() fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/teleporter/registry/teleporter_registry.go b/tests/flows/teleporter/registry/teleporter_registry.go index 3d37c7e89..bf73b864b 100644 --- a/tests/flows/teleporter/registry/teleporter_registry.go +++ b/tests/flows/teleporter/registry/teleporter_registry.go @@ -14,7 +14,7 @@ const ( teleporterByteCodeFile = "./avalanche/out/TeleporterMessenger.sol/TeleporterMessenger.json" ) -func TeleporterRegistry(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func TeleporterRegistry(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { // Deploy dApp on both chains that use Teleporter Registry // Deploy version 2 of Teleporter to both chains // Construct AddProtocolVersion txs for both chains diff --git a/tests/flows/teleporter/relay_message_twice.go b/tests/flows/teleporter/relay_message_twice.go index bbc6c4b01..6ee54af34 100644 --- a/tests/flows/teleporter/relay_message_twice.go +++ b/tests/flows/teleporter/relay_message_twice.go @@ -14,7 +14,7 @@ import ( . "github.com/onsi/gomega" ) -func RelayMessageTwice(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func RelayMessageTwice(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { l1AInfo := network.GetPrimaryNetworkInfo() l1BInfo, _ := network.GetTwoL1s() fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/teleporter/relayer_modifies_message.go b/tests/flows/teleporter/relayer_modifies_message.go index ca53da973..ed827371b 100644 --- a/tests/flows/teleporter/relayer_modifies_message.go +++ b/tests/flows/teleporter/relayer_modifies_message.go @@ -23,7 +23,7 @@ import ( ) // Disallow this test from being run on anything but a local network, since it requires special behavior by the relayer -func RelayerModifiesMessage(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func RelayerModifiesMessage(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { l1AInfo := network.GetPrimaryNetworkInfo() l1BInfo, _ := network.GetTwoL1s() fundedAddress, fundedKey := network.GetFundedAccountInfo() @@ -69,7 +69,7 @@ func relayAlteredMessage( sourceReceipt *types.Receipt, source interfaces.L1TestInfo, destination interfaces.L1TestInfo, - network *localnetwork.LocalNetwork, + network *localnetwork.LocalAvalancheNetwork, ) { // Fetch the Teleporter message from the logs sendEvent, err := utils.GetEventFromLogs( diff --git a/tests/flows/teleporter/resubmit_altered_message.go b/tests/flows/teleporter/resubmit_altered_message.go index 80db93e23..4cd2222c2 100644 --- a/tests/flows/teleporter/resubmit_altered_message.go +++ b/tests/flows/teleporter/resubmit_altered_message.go @@ -13,7 +13,7 @@ import ( . "github.com/onsi/gomega" ) -func ResubmitAlteredMessage(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func ResubmitAlteredMessage(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { l1AInfo := network.GetPrimaryNetworkInfo() l1BInfo, _ := network.GetTwoL1s() fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/teleporter/retry_successful_execution.go b/tests/flows/teleporter/retry_successful_execution.go index 7584b8dfa..5aa9d4105 100644 --- a/tests/flows/teleporter/retry_successful_execution.go +++ b/tests/flows/teleporter/retry_successful_execution.go @@ -11,7 +11,7 @@ import ( . "github.com/onsi/gomega" ) -func RetrySuccessfulExecution(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func RetrySuccessfulExecution(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { l1AInfo := network.GetPrimaryNetworkInfo() l1BInfo, _ := network.GetTwoL1s() fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/teleporter/send_specific_receipts.go b/tests/flows/teleporter/send_specific_receipts.go index cf7804dcd..f1b681b7f 100644 --- a/tests/flows/teleporter/send_specific_receipts.go +++ b/tests/flows/teleporter/send_specific_receipts.go @@ -18,7 +18,7 @@ import ( . "github.com/onsi/gomega" ) -func SendSpecificReceipts(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func SendSpecificReceipts(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { l1AInfo := network.GetPrimaryNetworkInfo() l1BInfo, _ := network.GetTwoL1s() l1ATeleporterMessenger := teleporter.TeleporterMessenger(l1AInfo) diff --git a/tests/flows/teleporter/teleporter_message_ids.go b/tests/flows/teleporter/teleporter_message_ids.go index 8328b904e..57ebb82d5 100644 --- a/tests/flows/teleporter/teleporter_message_ids.go +++ b/tests/flows/teleporter/teleporter_message_ids.go @@ -16,7 +16,7 @@ import ( ) // Tests Teleporter message ID calculation -func CalculateMessageID(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func CalculateMessageID(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { l1Info := network.GetPrimaryNetworkInfo() sourceBlockchainID := common.HexToHash("0xabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd") diff --git a/tests/flows/teleporter/unallowed_relayer.go b/tests/flows/teleporter/unallowed_relayer.go index 38eedafbb..8e2158b35 100644 --- a/tests/flows/teleporter/unallowed_relayer.go +++ b/tests/flows/teleporter/unallowed_relayer.go @@ -13,7 +13,7 @@ import ( . "github.com/onsi/gomega" ) -func UnallowedRelayer(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func UnallowedRelayer(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { l1AInfo := network.GetPrimaryNetworkInfo() l1BInfo, _ := network.GetTwoL1s() fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/teleporter/validator_churn.go b/tests/flows/teleporter/validator_churn.go index 590c70540..8ad2cdd5a 100644 --- a/tests/flows/teleporter/validator_churn.go +++ b/tests/flows/teleporter/validator_churn.go @@ -21,7 +21,7 @@ const ( sleepPeriodSeconds = 5 ) -func ValidatorChurn(network *localnetwork.LocalNetwork, teleporter utils.TeleporterTestInfo) { +func ValidatorChurn(network *localnetwork.LocalAvalancheNetwork, teleporter utils.TeleporterTestInfo) { l1AInfo, l1BInfo := network.GetTwoL1s() teleporterContractAddress := teleporter.TeleporterMessengerAddress(l1AInfo) fundedAddress, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/flows/validator-manager/delegator_inactive_validator.go b/tests/flows/validator-manager/delegator_inactive_validator.go index ad3ad13c1..302c38a9b 100644 --- a/tests/flows/validator-manager/delegator_inactive_validator.go +++ b/tests/flows/validator-manager/delegator_inactive_validator.go @@ -25,7 +25,7 @@ import ( * - Disable the validator by issuing a DisableL1ValidatorTx on the P-Chain * - Initiate and complete validator removal */ -func RemoveDelegatorInactiveValidator(network *localnetwork.LocalNetwork) { +func RemoveDelegatorInactiveValidator(network *localnetwork.LocalAvalancheNetwork) { // Get the L1s info cChainInfo := network.GetPrimaryNetworkInfo() l1AInfo, _ := network.GetTwoL1s() diff --git a/tests/flows/validator-manager/erc20_token_staking.go b/tests/flows/validator-manager/erc20_token_staking.go index 146ed6133..aa4cd1667 100644 --- a/tests/flows/validator-manager/erc20_token_staking.go +++ b/tests/flows/validator-manager/erc20_token_staking.go @@ -33,7 +33,7 @@ import ( * - Deliver the Warp message to the L1 * - Verify that the validator is delisted from the staking contract */ -func ERC20TokenStakingManager(network *localnetwork.LocalNetwork) { +func ERC20TokenStakingManager(network *localnetwork.LocalAvalancheNetwork) { // Get the L1s info cChainInfo := network.GetPrimaryNetworkInfo() l1AInfo, _ := network.GetTwoL1s() diff --git a/tests/flows/validator-manager/native_token_staking.go b/tests/flows/validator-manager/native_token_staking.go index 71016288e..931b40ec8 100644 --- a/tests/flows/validator-manager/native_token_staking.go +++ b/tests/flows/validator-manager/native_token_staking.go @@ -32,7 +32,7 @@ import ( * - Deliver the Warp message to the L1 * - Verify that the validator is delisted from the staking contract */ -func NativeTokenStakingManager(network *localnetwork.LocalNetwork) { +func NativeTokenStakingManager(network *localnetwork.LocalAvalancheNetwork) { // Get the L1s info cChainInfo := network.GetPrimaryNetworkInfo() l1AInfo, _ := network.GetTwoL1s() diff --git a/tests/flows/validator-manager/poa_to_pos.go b/tests/flows/validator-manager/poa_to_pos.go index 0f984513b..a173bd659 100644 --- a/tests/flows/validator-manager/poa_to_pos.go +++ b/tests/flows/validator-manager/poa_to_pos.go @@ -38,7 +38,7 @@ import ( * - Delist the previous PoA validator properly * - Delist the PoS validator */ -func PoAMigrationToPoS(network *localnetwork.LocalNetwork) { +func PoAMigrationToPoS(network *localnetwork.LocalAvalancheNetwork) { cChainInfo := network.GetPrimaryNetworkInfo() l1AInfo, _ := network.GetTwoL1s() _, fundedKey := network.GetFundedAccountInfo() diff --git a/tests/network/network.go b/tests/network/local_avalanche_network.go similarity index 93% rename from tests/network/network.go rename to tests/network/local_avalanche_network.go index 7ad74e09e..da4bed2ac 100644 --- a/tests/network/network.go +++ b/tests/network/local_avalanche_network.go @@ -43,13 +43,15 @@ import ( . "github.com/onsi/gomega" ) +var _ LocalNetwork = &LocalAvalancheNetwork{} + type ProxyAddress struct { common.Address *proxyadmin.ProxyAdmin } // Implements Network, pointing to the network setup in local_network_setup.go -type LocalNetwork struct { +type LocalAvalancheNetwork struct { *tmpnet.Network extraNodes []*tmpnet.Node // to add as more L1 validators in the tests @@ -143,7 +145,7 @@ func newTmpnetNetwork( return network } -func NewLocalNetwork( +func NewLocalAvalancheNetwork( ctx context.Context, name string, warpGenesisTemplateFile string, @@ -151,7 +153,7 @@ func NewLocalNetwork( numPrimaryNetworkValidators int, extraNodeCount int, // for use by tests, e.g. to add new L1 validators flagVars *e2e.FlagVars, -) *LocalNetwork { +) *LocalAvalancheNetwork { // There must be at least one primary network validator per L1 Expect(numPrimaryNetworkValidators).Should(BeNumerically(">=", len(l1Specs))) @@ -254,7 +256,7 @@ func NewLocalNetwork( } } - localNetwork := &LocalNetwork{ + localNetwork := &LocalAvalancheNetwork{ Network: network, extraNodes: extraNodes, globalFundedKey: globalFundedKey, @@ -269,7 +271,7 @@ func NewLocalNetwork( return localNetwork } -func (n *LocalNetwork) ConvertSubnet( +func (n *LocalAvalancheNetwork) ConvertSubnet( ctx context.Context, l1 interfaces.L1TestInfo, managerType utils.ValidatorManagerConcreteType, @@ -418,7 +420,7 @@ func (n *LocalNetwork) ConvertSubnet( return nodes, validationIDs } -func (n *LocalNetwork) AddSubnetValidators( +func (n *LocalAvalancheNetwork) AddSubnetValidators( nodes []*tmpnet.Node, l1 interfaces.L1TestInfo, partialSync bool, @@ -456,11 +458,11 @@ func (n *LocalNetwork) AddSubnetValidators( return n.GetL1Info(l1.SubnetID) } -func (n *LocalNetwork) GetValidatorManager(subnetID ids.ID) (ProxyAddress, ProxyAddress) { +func (n *LocalAvalancheNetwork) GetValidatorManager(subnetID ids.ID) (ProxyAddress, ProxyAddress) { return n.validatorManagers[subnetID], n.validatorManagerSpecializations[subnetID] } -func (n *LocalNetwork) GetSignatureAggregator() *utils.SignatureAggregator { +func (n *LocalAvalancheNetwork) GetSignatureAggregator() *utils.SignatureAggregator { var subnetIDs []ids.ID for _, l1 := range n.GetL1Infos() { subnetIDs = append(subnetIDs, l1.SubnetID) @@ -471,7 +473,7 @@ func (n *LocalNetwork) GetSignatureAggregator() *utils.SignatureAggregator { ) } -func (n *LocalNetwork) GetExtraNodes(count int) []*tmpnet.Node { +func (n *LocalAvalancheNetwork) GetExtraNodes(count int) []*tmpnet.Node { Expect(len(n.extraNodes) >= count).Should( BeTrue(), "not enough extra nodes to use", @@ -481,11 +483,11 @@ func (n *LocalNetwork) GetExtraNodes(count int) []*tmpnet.Node { return nodes } -func (n *LocalNetwork) GetPrimaryNetworkValidators() []*tmpnet.Node { +func (n *LocalAvalancheNetwork) GetPrimaryNetworkValidators() []*tmpnet.Node { return n.primaryNetworkValidators } -func (n *LocalNetwork) GetPrimaryNetworkInfo() interfaces.L1TestInfo { +func (n *LocalAvalancheNetwork) GetPrimaryNetworkInfo() interfaces.L1TestInfo { var nodeURIs []string for _, node := range n.primaryNetworkValidators { nodeURIs = append(nodeURIs, node.URI) @@ -513,7 +515,7 @@ func (n *LocalNetwork) GetPrimaryNetworkInfo() interfaces.L1TestInfo { } } -func (n *LocalNetwork) GetL1Info(subnetID ids.ID) interfaces.L1TestInfo { +func (n *LocalAvalancheNetwork) GetL1Info(subnetID ids.ID) interfaces.L1TestInfo { for _, l1 := range n.Network.Subnets { if l1.SubnetID == subnetID { var nodeURIs []string @@ -548,7 +550,7 @@ func (n *LocalNetwork) GetL1Info(subnetID ids.ID) interfaces.L1TestInfo { } // Returns all l1 info sorted in lexicographic order of L1Name. -func (n *LocalNetwork) GetL1Infos() []interfaces.L1TestInfo { +func (n *LocalAvalancheNetwork) GetL1Infos() []interfaces.L1TestInfo { l1s := make([]interfaces.L1TestInfo, len(n.Network.Subnets)) for i, l1 := range n.Network.Subnets { var nodeURIs []string @@ -582,25 +584,25 @@ func (n *LocalNetwork) GetL1Infos() []interfaces.L1TestInfo { } // Returns L1 info for all L1s, including the primary network -func (n *LocalNetwork) GetAllL1Infos() []interfaces.L1TestInfo { +func (n *LocalAvalancheNetwork) GetAllL1Infos() []interfaces.L1TestInfo { l1s := n.GetL1Infos() return append(l1s, n.GetPrimaryNetworkInfo()) } -func (n *LocalNetwork) GetFundedAccountInfo() (common.Address, *ecdsa.PrivateKey) { +func (n *LocalAvalancheNetwork) GetFundedAccountInfo() (common.Address, *ecdsa.PrivateKey) { ecdsaKey := n.globalFundedKey.ToECDSA() fundedAddress := crypto.PubkeyToAddress(ecdsaKey.PublicKey) return fundedAddress, ecdsaKey } -func (n *LocalNetwork) TearDownNetwork() { - log.Info("Tearing down network") +func (n *LocalAvalancheNetwork) TearDownNetwork() { + log.Info("Tearing down local Avalanche network") Expect(n).ShouldNot(BeNil()) Expect(n.Network).ShouldNot(BeNil()) Expect(n.Network.Stop(context.Background())).Should(BeNil()) } -func (n *LocalNetwork) SetChainConfigs(chainConfigs map[string]string) { +func (n *LocalAvalancheNetwork) SetChainConfigs(chainConfigs map[string]string) { for chainIDStr, chainConfig := range chainConfigs { var cfg tmpnet.ConfigMap err := json.Unmarshal([]byte(chainConfig), &cfg) @@ -644,15 +646,15 @@ func (n *LocalNetwork) SetChainConfigs(chainConfigs map[string]string) { Expect(err).Should(BeNil()) } -func (n *LocalNetwork) GetNetworkID() uint32 { +func (n *LocalAvalancheNetwork) GetNetworkID() uint32 { return n.Network.Genesis.NetworkID } -func (n *LocalNetwork) Dir() string { +func (n *LocalAvalancheNetwork) Dir() string { return n.Network.Dir } -func (n *LocalNetwork) GetPChainWallet(validationIDs ...ids.ID) pwallet.Wallet { +func (n *LocalAvalancheNetwork) GetPChainWallet(validationIDs ...ids.ID) pwallet.Wallet { // Create the P-Chain wallet to issue transactions kc := secp256k1fx.NewKeychain(n.globalFundedKey) var subnetIDs []ids.ID @@ -672,7 +674,7 @@ func (n *LocalNetwork) GetPChainWallet(validationIDs ...ids.ID) pwallet.Wallet { return wallet.P() } -func (n *LocalNetwork) GetTwoL1s() ( +func (n *LocalAvalancheNetwork) GetTwoL1s() ( interfaces.L1TestInfo, interfaces.L1TestInfo, ) { @@ -681,7 +683,7 @@ func (n *LocalNetwork) GetTwoL1s() ( return l1s[0], l1s[1] } -func (n *LocalNetwork) SaveValidatorAddress( +func (n *LocalAvalancheNetwork) SaveValidatorAddress( fileName string, ) { validatorAddresses := make(map[string]map[string]string) @@ -698,7 +700,7 @@ func (n *LocalNetwork) SaveValidatorAddress( Expect(err).Should(BeNil()) } -func (n *LocalNetwork) SetValidatorAddressFromFile(fileName string) { +func (n *LocalAvalancheNetwork) SetValidatorAddressFromFile(fileName string) { validatorAddresses := make(map[string]map[string]string) data, err := os.ReadFile(fileName) Expect(err).Should(BeNil()) diff --git a/tests/network/local_network.go b/tests/network/local_network.go new file mode 100644 index 000000000..842925cd5 --- /dev/null +++ b/tests/network/local_network.go @@ -0,0 +1,12 @@ +package network + +import ( + "crypto/ecdsa" + + "github.com/ava-labs/libevm/common" +) + +type LocalNetwork interface { + GetFundedAccountInfo() (common.Address, *ecdsa.PrivateKey) + TearDownNetwork() +} diff --git a/tests/suites/governance/governance_suite_test.go b/tests/suites/governance/governance_suite_test.go index 81266044d..9b5607818 100644 --- a/tests/suites/governance/governance_suite_test.go +++ b/tests/suites/governance/governance_suite_test.go @@ -21,7 +21,7 @@ const ( ) var ( - LocalNetworkInstance *localnetwork.LocalNetwork + LocalNetworkInstance *localnetwork.LocalAvalancheNetwork e2eFlags *e2e.FlagVars ) @@ -47,7 +47,7 @@ var _ = ginkgo.BeforeSuite(func() { // Create the local network instance ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second) defer cancel() - LocalNetworkInstance = localnetwork.NewLocalNetwork( + LocalNetworkInstance = localnetwork.NewLocalAvalancheNetwork( ctx, "governance-test-local-network", warpGenesisTemplateFile, diff --git a/tests/suites/ictt/ictt_suite_test.go b/tests/suites/ictt/ictt_suite_test.go index a99ac0574..61cf33e19 100644 --- a/tests/suites/ictt/ictt_suite_test.go +++ b/tests/suites/ictt/ictt_suite_test.go @@ -40,7 +40,7 @@ const ( ) var ( - LocalNetworkInstance *localnetwork.LocalNetwork + LocalNetworkInstance *localnetwork.LocalAvalancheNetwork TeleporterInfo utils.TeleporterTestInfo e2eFlags *e2e.FlagVars ) @@ -79,7 +79,7 @@ var _ = ginkgo.BeforeSuite(func() { // Create the local network instance ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second) defer cancel() - LocalNetworkInstance = localnetwork.NewLocalNetwork( + LocalNetworkInstance = localnetwork.NewLocalAvalancheNetwork( ctx, "teleporter-test-local-network", warpGenesisTemplateFile, @@ -162,7 +162,6 @@ var _ = ginkgo.BeforeSuite(func() { ) } } - }) var _ = ginkgo.AfterSuite(func() { diff --git a/tests/suites/teleporter/teleporter_suite_test.go b/tests/suites/teleporter/teleporter_suite_test.go index 3d0f91888..ea02acd4f 100644 --- a/tests/suites/teleporter/teleporter_suite_test.go +++ b/tests/suites/teleporter/teleporter_suite_test.go @@ -36,7 +36,7 @@ const ( ) var ( - LocalNetworkInstance *network.LocalNetwork + LocalNetworkInstance *network.LocalAvalancheNetwork TeleporterInfo utils.TeleporterTestInfo e2eFlags *e2e.FlagVars ) @@ -76,7 +76,7 @@ var _ = ginkgo.BeforeSuite(func() { ctx, cancel := context.WithTimeout(context.Background(), 240*2*time.Second) defer cancel() - LocalNetworkInstance = network.NewLocalNetwork( + LocalNetworkInstance = network.NewLocalAvalancheNetwork( ctx, "teleporter-test-local-network", warpGenesisTemplateFile, diff --git a/tests/suites/validator-manager/validator_manager_suite_test.go b/tests/suites/validator-manager/validator_manager_suite_test.go index 8fdd5e5e0..4666ac6b3 100644 --- a/tests/suites/validator-manager/validator_manager_suite_test.go +++ b/tests/suites/validator-manager/validator_manager_suite_test.go @@ -21,7 +21,7 @@ const ( ) var ( - LocalNetworkInstance *localnetwork.LocalNetwork + LocalNetworkInstance *localnetwork.LocalAvalancheNetwork e2eFlags *e2e.FlagVars ) @@ -45,7 +45,7 @@ var _ = ginkgo.BeforeEach(func() { // Create the local network instance ctx, cancel := context.WithTimeout(context.Background(), 240*time.Second) defer cancel() - LocalNetworkInstance = localnetwork.NewLocalNetwork( + LocalNetworkInstance = localnetwork.NewLocalAvalancheNetwork( ctx, "validator-manager-test-local-network", warpGenesisTemplateFile, diff --git a/tests/utils/chain.go b/tests/utils/chain.go index 5716b132f..f449ba520 100644 --- a/tests/utils/chain.go +++ b/tests/utils/chain.go @@ -152,14 +152,14 @@ func SendNativeTransfer( // Asserts Receipt.status equals success. func sendAndWaitForTransaction( ctx context.Context, - l1Info interfaces.L1TestInfo, + client ethclient.Client, tx *types.Transaction, success bool, ) *types.Receipt { - err := l1Info.RPCClient.SendTransaction(ctx, tx) + err := client.SendTransaction(ctx, tx) Expect(err).Should(BeNil()) - return waitForTransaction(ctx, l1Info, tx.Hash(), success) + return waitForTransaction(ctx, client, tx.Hash(), success) } // Sends a tx, and waits for it to be mined. @@ -169,7 +169,7 @@ func SendTransactionAndWaitForFailure( l1Info interfaces.L1TestInfo, tx *types.Transaction, ) *types.Receipt { - return sendAndWaitForTransaction(ctx, l1Info, tx, false) + return sendAndWaitForTransaction(ctx, l1Info.RPCClient, tx, false) } // Sends a tx, and waits for it to be mined. @@ -179,7 +179,7 @@ func SendTransactionAndWaitForSuccess( l1Info interfaces.L1TestInfo, tx *types.Transaction, ) *types.Receipt { - return sendAndWaitForTransaction(ctx, l1Info, tx, true) + return sendAndWaitForTransaction(ctx, l1Info.RPCClient, tx, true) } // Waits for a transaction to be mined. @@ -189,7 +189,15 @@ func WaitForTransactionSuccess( l1Info interfaces.L1TestInfo, txHash common.Hash, ) *types.Receipt { - return waitForTransaction(ctx, l1Info, txHash, true) + return waitForTransaction(ctx, l1Info.RPCClient, txHash, true) +} + +func WaitForTransactionSuccessWithClient( + ctx context.Context, + client ethclient.Client, + txHash common.Hash, +) *types.Receipt { + return waitForTransaction(ctx, client, txHash, true) } // Waits for a transaction to be mined. @@ -199,26 +207,26 @@ func WaitForTransactionFailure( l1Info interfaces.L1TestInfo, txHash common.Hash, ) *types.Receipt { - return waitForTransaction(ctx, l1Info, txHash, false) + return waitForTransaction(ctx, l1Info.RPCClient, txHash, false) } // Waits for a transaction to be mined. // Asserts Receipt.status equals success. func waitForTransaction( ctx context.Context, - l1Info interfaces.L1TestInfo, + client ethclient.Client, txHash common.Hash, success bool, ) *types.Receipt { cctx, cancel := context.WithTimeout(ctx, 20*time.Second) defer cancel() - receipt, err := WaitMined(cctx, l1Info.RPCClient, txHash) + receipt, err := WaitMined(cctx, client, txHash) Expect(err).Should(BeNil()) if success { if receipt.Status == types.ReceiptStatusFailed { - TraceTransactionAndExit(ctx, l1Info.RPCClient, receipt.TxHash) + TraceTransactionAndExit(ctx, client, receipt.TxHash) } } else { Expect(receipt.Status).Should(Equal(types.ReceiptStatusFailed))