Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stop load on first failure #447

Merged
merged 4 commits into from
Jan 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 20 additions & 15 deletions integration-tests/ccip-tests/actions/ccip_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -251,22 +251,31 @@ func (ccipModule *CCIPCommon) LoadContractAddresses(conf *laneconfig.LaneConfig)
func (ccipModule *CCIPCommon) ApproveTokens() error {
isApproved := false
for _, token := range ccipModule.BridgeTokens {
err := token.Approve(ccipModule.Router.Address(), ApprovedAmountToRouter)
allowance, err := token.Allowance(ccipModule.ChainClient.GetDefaultWallet().Address(), ccipModule.Router.Address())
if err != nil {
return errors.WithStack(err)
return fmt.Errorf("failed to get allowance for token %s: %w", token.ContractAddress.Hex(), err)
}
if allowance.Cmp(ApprovedAmountToRouter) < 0 {
err := token.Approve(ccipModule.Router.Address(), ApprovedAmountToRouter)
if err != nil {
return errors.WithStack(err)
}
}
if token.ContractAddress == ccipModule.FeeToken.EthAddress {
isApproved = true
}
}
if ccipModule.FeeToken.EthAddress != common.HexToAddress("0x0") {
if !isApproved {
err := ccipModule.FeeToken.Approve(ccipModule.Router.Address(), ApprovedFeeAmountToRouter)
if err != nil {
return errors.WithStack(err)
}
} else {
err := ccipModule.FeeToken.Approve(ccipModule.Router.Address(), new(big.Int).Add(ApprovedAmountToRouter, ApprovedFeeAmountToRouter))
amount := ApprovedFeeAmountToRouter
if isApproved {
amount = new(big.Int).Add(ApprovedAmountToRouter, ApprovedFeeAmountToRouter)
}
allowance, err := ccipModule.FeeToken.Allowance(ccipModule.ChainClient.GetDefaultWallet().Address(), ccipModule.Router.Address())
if err != nil {
return fmt.Errorf("failed to get allowance for token %s: %w", ccipModule.FeeToken.Address(), err)
}
if allowance.Cmp(amount) < 0 {
err := ccipModule.FeeToken.Approve(ccipModule.Router.Address(), amount)
if err != nil {
return errors.WithStack(err)
}
Expand Down Expand Up @@ -575,7 +584,8 @@ func (ccipModule *CCIPCommon) DeployContracts(noOfTokens int,
}
}
log.Info().Msg("finished deploying common contracts")
return nil
// approve router to spend fee token
return ccipModule.ApproveTokens()
}

func DefaultCCIPModule(logger zerolog.Logger, chainClient blockchain.EVMClient, existingDeployment, multiCall bool) (*CCIPCommon, error) {
Expand Down Expand Up @@ -681,11 +691,6 @@ func (sourceCCIP *SourceCCIPModule) DeployContracts(lane *laneconfig.LaneConfig)
contractDeployer := sourceCCIP.Common.Deployer
log.Info().Msg("Deploying source chain specific contracts")

err = sourceCCIP.Common.ApproveTokens()
if err != nil {
return err
}

sourceCCIP.LoadContracts(lane)
sourceChainSelector, err := chainselectors.SelectorFromChainId(sourceCCIP.Common.ChainClient.GetChainID().Uint64())
if err != nil {
Expand Down
16 changes: 16 additions & 0 deletions integration-tests/ccip-tests/contracts/contract_models.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,14 @@ func (token *ERC20Token) BalanceOf(ctx context.Context, addr string) (*big.Int,
return balance, nil
}

func (token *ERC20Token) Allowance(owner, spender string) (*big.Int, error) {
allowance, err := token.instance.Allowance(nil, common.HexToAddress(owner), common.HexToAddress(spender))
if err != nil {
return nil, err
}
return allowance, nil
}

func (token *ERC20Token) Approve(to string, amount *big.Int) error {
opts, err := token.client.TransactionOpts(token.client.GetDefaultWallet())
if err != nil {
Expand Down Expand Up @@ -122,6 +130,14 @@ func (l *LinkToken) BalanceOf(ctx context.Context, addr string) (*big.Int, error
return balance, nil
}

func (l *LinkToken) Allowance(owner, spender string) (*big.Int, error) {
allowance, err := l.instance.Allowance(nil, common.HexToAddress(owner), common.HexToAddress(spender))
if err != nil {
return nil, err
}
return allowance, nil
}

func (l *LinkToken) Approve(to string, amount *big.Int) error {
opts, err := l.client.TransactionOpts(l.client.GetDefaultWallet())
if err != nil {
Expand Down
2 changes: 2 additions & 0 deletions integration-tests/ccip-tests/load/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ func (l *LoadArgs) TriggerLoadByLane() {
"source_chain": lane.SourceNetworkName,
"dest_chain": lane.DestNetworkName,
},
FailOnErr: true,
})
require.NoError(l.TestCfg.Test, err, "initiating loadgen for lane %s --> %s",
lane.SourceNetworkName, lane.DestNetworkName)
Expand Down Expand Up @@ -255,6 +256,7 @@ func (l *LoadArgs) TriggerLoadBySource() {
Logger: multiCallGen.logger,
LokiConfig: wasp.NewEnvLokiConfig(),
Labels: allLabels,
FailOnErr: true,
})
require.NoError(l.TestCfg.Test, err, "initiating loadgen for source %s", source)
loadRunner.Run(false)
Expand Down
64 changes: 50 additions & 14 deletions integration-tests/ccip-tests/testconfig/override/mainnet.toml
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ Data = """
"Ethereum Mainnet": {
"off_ramp": "0xEC0cFe335a4d53dBA70CB650Ab56eEc32788F0BB",
"commit_store": "0x0ae3c2c7FB789bd05A450CD3075D11f6c2Ca4F77",
"receiver_dapp": "0xAFa2c441a83bBCEDc2E8c5c6f66248aFD8b9af3d"
"receiver_dapp": "0xAFa2c441a83bBCEDc2E8c5c6f66248aFD8b9af3d"
},
"Optimism Mainnet": {
"off_ramp": "0xf50c0d2a8B6Db60f1D93E60f03d0413D56153E4F",
Expand Down Expand Up @@ -179,8 +179,8 @@ Data = """
"Ethereum Mainnet": {
"is_native_fee_token": true,
"fee_token": "",
"bridge_tokens": ["0x514910771AF9Ca656af840dff83E8264EcF986CA"],
"bridge_tokens_pools": ["0xC2291992A08eBFDfedfE248F2CCD34Da63570DF4"],
"bridge_tokens": [],
"bridge_tokens_pools": [],
"arm" : "0x8B63b3DE93431C0f756A493644d128134291fA1b",
"router": "0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D",
"price_registry": "0x8c9b2Efb7c64C394119270bfecE7f54763b958Ad",
Expand Down Expand Up @@ -255,10 +255,10 @@ Data = """
},
"Kroma Mainnet": {
"is_native_fee_token": true,
"fee_token": "",
"bridge_tokens": ["0xC1F6f7622ad37C3f46cDF6F8AA0344ADE80BF450"],
"bridge_tokens_pools": ["0xd9547B702673c61c84bb2dF6FDf6D2F5309fE536"],
"arm" : "0x6E4d2dBBF8a1A943412aD451422FE11A25C781DE",
"fee_token": "0xC1F6f7622ad37C3f46cDF6F8AA0344ADE80BF450",
"bridge_tokens": [],
"bridge_tokens_pools": [],
"arm" : "0xB59779d3364BC6d71168245f9ebb96469E5a5a98",
"router": "0xE93E8B0d1b1CEB44350C8758ed1E2799CCee31aB",
"price_registry": "0x8155B4710e7bbC90924E957104F94Afd4f95Eca2",
"wrapped_native": "0x4200000000000000000000000000000000000001",
Expand All @@ -278,7 +278,7 @@ Data = """
},
"Optimism Mainnet": {
"is_native_fee_token": true,
"fee_token": "",
"fee_token": "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6",
"bridge_tokens": [],
"bridge_tokens_pools": [],
"arm": "0x8C7C2C3362a42308BB5c368677Ad321D11693b81",
Expand Down Expand Up @@ -319,7 +319,7 @@ Data = """
},
"Polygon Mainnet": {
"is_native_fee_token": true,
"fee_token": "",
"fee_token": "0xb0897686c545045aFc77CF20eC7A532E3120E0F1",
"bridge_tokens": [],
"bridge_tokens_pools": [],
"arm": "0xD7AcF65dA1E1f34b663aB199a474F209bF2b0523",
Expand Down Expand Up @@ -370,8 +370,8 @@ Data = """
"WeMix Mainnet": {
"is_native_fee_token": true,
"fee_token": "",
"bridge_tokens": ["0x80f1FcdC96B55e459BF52b998aBBE2c364935d69"],
"bridge_tokens_pools": ["0x80282dF25600c08Bde7560f6c1E509366c1BfBFC"],
"bridge_tokens": [],
"bridge_tokens_pools": [],
"arm" : "0x07aaC8B69A62dB5bd3d244091916EbF2fac17b76",
"router": "0x7798b795Fde864f4Cd1b124a38Ba9619B7F8A442",
"price_registry": "0x252863688762aD86868D3d3076233Eacd80c7055",
Expand Down Expand Up @@ -401,11 +401,30 @@ Data = """
}
}
}

"""

[CCIP.Groups.load]
NetworkPairs = ['BASE_MAINNET,ARBITRUM_MAINNET']
NetworkPairs = [
'ETHEREUM_MAINNET,BASE_MAINNET',
'ETHEREUM_MAINNET,ARBITRUM_MAINNET',
'ETHEREUM_MAINNET,WEMIX_MAINNET',
'ETHEREUM_MAINNET,OPTIMISM_MAINNET',
'ETHEREUM_MAINNET,POLYGON_MAINNET',
'ETHEREUM_MAINNET,AVALANCHE_MAINNET',
'ETHEREUM_MAINNET,BSC_MAINNET',
'BASE_MAINNET,ARBITRUM_MAINNET',
'WEMIX_MAINNET,KROMA_MAINNET',
'OPTIMISM_MAINNET,POLYGON_MAINNET',
'AVALANCHE_MAINNET,POLYGON_MAINNET',
'BSC_MAINNET,POLYGON_MAINNET',
'BASE_MAINNET,OPTIMISM_MAINNET',
'AVALANCHE_MAINNET,BSC_MAINNET',
'BASE_MAINNET,BSC_MAINNET',
]
MsgType = 'WithoutToken'
DestGasLimit = 0
BiDirectionalLane = true
PhaseTimeout = '50m'
TestDuration = '168h'
ExistingDeployment = true
Expand All @@ -418,12 +437,29 @@ ExistingEnv = 'mainnet-2.7-ccip1.2'

[CCIP.Groups.smoke]
MsgType = 'WithoutToken'
NetworkPairs = ['AVALANCHE_MAINNET,POLYGON_MAINNET','BASE_MAINNET,OPTIMISM_MAINNET','BSC_MAINNET,POLYGON_MAINNET','OPTIMISM_MAINNET,POLYGON_MAINNET','AVALANCHE_MAINNET,BSC_MAINNET','BASE_MAINNET,BSC_MAINNET']
NetworkPairs = [
'ETHEREUM_MAINNET,BASE_MAINNET',
'ETHEREUM_MAINNET,ARBITRUM_MAINNET',
'ETHEREUM_MAINNET,WEMIX_MAINNET',
'ETHEREUM_MAINNET,OPTIMISM_MAINNET',
'ETHEREUM_MAINNET,POLYGON_MAINNET',
'ETHEREUM_MAINNET,AVALANCHE_MAINNET',
'ETHEREUM_MAINNET,BSC_MAINNET',
'BASE_MAINNET,ARBITRUM_MAINNET',
'WEMIX_MAINNET,KROMA_MAINNET',
'OPTIMISM_MAINNET,POLYGON_MAINNET',
'AVALANCHE_MAINNET,POLYGON_MAINNET',
'BSC_MAINNET,POLYGON_MAINNET',
'BASE_MAINNET,OPTIMISM_MAINNET',
'AVALANCHE_MAINNET,BSC_MAINNET',
'BASE_MAINNET,BSC_MAINNET',
]
BiDirectionalLane = true
DestGasLimit = 0
PhaseTimeout = '50m'
LocalCluster = false
ExistingDeployment = true
ReuseContracts = true
NoOfTokensPerChain = 1
NoOfTokensInMsg = 1
AmountPerToken = 1
AmountPerToken = 1
Loading