Skip to content

Commit

Permalink
Merge branch 'ccip-2694-lane-specific-load' of github.com:smartcontra…
Browse files Browse the repository at this point in the history
…ctkit/ccip into ccip-2692-gas-environment
  • Loading branch information
AnieeG committed Jul 8, 2024
2 parents 52e407b + cb4de9f commit 5c899d7
Show file tree
Hide file tree
Showing 7 changed files with 74 additions and 9 deletions.
1 change: 1 addition & 0 deletions integration-tests/ccip-tests/actions/ccip_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -476,6 +476,7 @@ func (ccipModule *CCIPCommon) WaitForPriceUpdates(
Uint64("dest chain", destChainId).
Str("source chain", ccipModule.ChainClient.GetNetworkName()).
Msg("Price already updated")
ccipModule.priceUpdateFound <- struct{}{}
return nil
}
// if not, wait for price update
Expand Down
53 changes: 50 additions & 3 deletions integration-tests/ccip-tests/load/ccip_loadgen.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"time"

"github.com/AlekSi/pointer"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/rs/zerolog"
Expand Down Expand Up @@ -254,10 +255,10 @@ func (c *CCIPE2ELoad) Call(_ *wasp.Generator) *wasp.Response {
}
startTime := time.Now().UTC()
if feeToken != common.HexToAddress("0x0") {
sendTx, err = sourceCCIP.Common.Router.CCIPSendAndProcessTx(destChainSelector, msg, nil)
sendTx, err = sourceCCIP.Common.Router.CCIPSend(destChainSelector, msg, nil)
} else {
// add a bit buffer to fee
sendTx, err = sourceCCIP.Common.Router.CCIPSendAndProcessTx(destChainSelector, msg, new(big.Int).Add(big.NewInt(1e5), fee))
sendTx, err = sourceCCIP.Common.Router.CCIPSend(destChainSelector, msg, new(big.Int).Add(big.NewInt(1e5), fee))
}
if err != nil {
stats.UpdateState(&lggr, 0, testreporters.TX, time.Since(startTime), testreporters.Failure, nil)
Expand All @@ -267,11 +268,57 @@ func (c *CCIPE2ELoad) Call(_ *wasp.Generator) *wasp.Response {
return res
}

err = sourceCCIP.Common.ChainClient.MarkTxAsSentOnL2(sendTx)

if err != nil {
stats.UpdateState(&lggr, 0, testreporters.TX, time.Since(startTime), testreporters.Failure, nil)
res.Error = fmt.Sprintf("reqNo %d failed to mark tx as sent on L2 %s", msgSerialNo, err.Error())
res.Data = stats.StatusByPhase
res.Failed = true
return res
}

txConfirmationTime := time.Now().UTC()
// wait for the tx to be mined, timeout is set to 10 minutes
lggr.Info().Str("tx", sendTx.Hash().Hex()).Msg("waiting for tx to be mined")
ctx, cancel := context.WithTimeout(context.Background(), sourceCCIP.Common.ChainClient.GetNetworkConfig().Timeout.Duration)
defer cancel()
rcpt, err := bind.WaitMined(ctx, sourceCCIP.Common.ChainClient.DeployBackend(), sendTx)
if err != nil {
res.Error = fmt.Sprintf("ccip-send request tx not mined, err=%s", err.Error())
res.Failed = true
res.Data = stats.StatusByPhase
return res
}
if rcpt == nil {
res.Error = "ccip-send request tx not mined, receipt is nil"
res.Failed = true
res.Data = stats.StatusByPhase
return res
}
hdr, err := c.Lane.Source.Common.ChainClient.HeaderByNumber(context.Background(), rcpt.BlockNumber)
if err == nil && hdr != nil {
txConfirmationTime = hdr.Timestamp
}
lggr = lggr.With().Str("Msg Tx", sendTx.Hash().String()).Logger()

if rcpt.Status != types.ReceiptStatusSuccessful {
stats.UpdateState(&lggr, 0, testreporters.TX, txConfirmationTime.Sub(startTime), testreporters.Failure,
&testreporters.TransactionStats{
Fee: fee.String(),
GasUsed: rcpt.GasUsed,
TxHash: sendTx.Hash().Hex(),
NoOfTokensSent: len(msg.TokenAmounts),
MessageBytesLength: int64(len(msg.Data)),
})
errReason, v, err := c.Lane.Source.Common.ChainClient.RevertReasonFromTx(rcpt.TxHash, router.RouterABI)
if err != nil {
errReason = "could not decode"
}
res.Error = fmt.Sprintf("ccip-send request receipt is not successful, errReason=%s, args =%v", errReason, v)
res.Failed = true
res.Data = stats.StatusByPhase
return res
}
stats.UpdateState(&lggr, 0, testreporters.TX, txConfirmationTime.Sub(startTime), testreporters.Success, nil)
err = c.Validate(lggr, sendTx, txConfirmationTime, []*testreporters.RequestStat{stats})
if err != nil {
Expand Down
3 changes: 2 additions & 1 deletion integration-tests/ccip-tests/load/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,13 @@ import (

"github.com/AlekSi/pointer"
"github.com/rs/zerolog"
"github.com/smartcontractkit/chainlink-common/pkg/config"
"github.com/smartcontractkit/wasp"
"github.com/stretchr/testify/require"
"go.uber.org/atomic"
"golang.org/x/sync/errgroup"

"github.com/smartcontractkit/chainlink-common/pkg/config"

"github.com/smartcontractkit/chainlink-testing-framework/k8s/chaos"
"github.com/smartcontractkit/chainlink-testing-framework/utils/testcontext"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ evm_finality_depth = 200

[CCIP.Env.Network.AnvilConfigs.PRIVATE-CHAIN-1]
block_time = 1
block_gaslimit = 100000000

#
[CCIP.Env.Network.AnvilConfigs.PRIVATE-CHAIN-2]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,6 @@ evm_finality_depth = 1

[CCIP.Env.Network.AnvilConfigs.PRIVATE-CHAIN-1]
block_time = 1
block_gaslimit = 100000000

#
[CCIP.Env.Network.AnvilConfigs.SLOW-CHAIN-1]
Expand Down
12 changes: 12 additions & 0 deletions integration-tests/ccip-tests/testsetups/ccip.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,18 @@ var (
"memory": "6Gi",
},
}
AnvilResourceProfile = map[string]interface{}{
"requests": map[string]interface{}{
"cpu": "4",
"memory": "6Gi",
"ephemeral-storage": "25Gi",
},
"limits": map[string]interface{}{
"cpu": "4",
"memory": "6Gi",
"ephemeral-storage": "25Gi",
},
}
// to set default values through test config use sync.once
setContractVersion sync.Once
setOCRParams sync.Once
Expand Down
12 changes: 9 additions & 3 deletions integration-tests/ccip-tests/testsetups/test_env.go
Original file line number Diff line number Diff line change
Expand Up @@ -476,6 +476,12 @@ func DeployEnvironments(
// if anvilconfig is specified for a network addhelm for anvil
if anvilConfig, exists := testInputs.EnvInput.Network.AnvilConfigs[strings.ToUpper(network.Name)]; exists {
charts = append(charts, foundry.ChartName)
if anvilConfig.BaseFee == nil {
anvilConfig.BaseFee = pointer.ToInt64(1000000)
}
if anvilConfig.BlockGaslimit == nil {
anvilConfig.BlockGaslimit = pointer.ToInt64(100000000)
}
testEnvironment.
AddHelm(foundry.New(&foundry.Props{
NetworkName: network.Name,
Expand All @@ -491,10 +497,10 @@ func DeployEnvironments(
"forkComputeUnitsPerSecond": anvilConfig.ComputePerSecond,
"forkNoRateLimit": anvilConfig.RateLimitDisabled,
"blocksToKeepInMemory": anvilConfig.BlocksToKeepInMem,
"blockGasLimit": anvilConfig.BlockGaslimit,
"baseFee": anvilConfig.BaseFee,
"blockGasLimit": fmt.Sprintf("%d", pointer.GetInt64(anvilConfig.BlockGaslimit)),
"baseFee": fmt.Sprintf("%d", pointer.GetInt64(anvilConfig.BaseFee)),
},
"resources": testInputs.GethResourceProfile,
"resources": AnvilResourceProfile,
},
}))
selectedNetworks[i].Simulated = true
Expand Down

0 comments on commit 5c899d7

Please sign in to comment.