Skip to content

Commit 272c255

Browse files
committed
chore: remove memory environment usage from ccip deployment tests
1 parent 617060f commit 272c255

File tree

13 files changed

+498
-286
lines changed

13 files changed

+498
-286
lines changed

deployment/ccip/changeset/aptos/cs_add_token_pool_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"github.com/ethereum/go-ethereum/common"
1111
chain_selectors "github.com/smartcontractkit/chain-selectors"
1212
mcmstypes "github.com/smartcontractkit/mcms/types"
13-
"github.com/smartcontractkit/quarantine"
1413
"github.com/stretchr/testify/assert"
1514
"github.com/stretchr/testify/require"
1615

@@ -38,7 +37,7 @@ var testTokenTransferFeeConfig = fee_quoter.TokenTransferFeeConfig{
3837
}
3938

4039
func TestAddTokenPool_Apply(t *testing.T) {
41-
quarantine.Flaky(t, "DX-2088")
40+
// quarantine.Flaky(t, "DX-2088")
4241
t.Parallel()
4342
// Setup environment and config with 1 Aptos chain
4443
deployedEnvironment, _ := testhelpers.NewMemoryEnvironment(

deployment/ccip/changeset/solana_v0_1_1/cs_deploy_chain_test.go

Lines changed: 90 additions & 75 deletions
Large diffs are not rendered by default.

deployment/ccip/changeset/solana_v0_1_1/transfer_ccip_to_mcms_with_timelock_test.go

Lines changed: 59 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"github.com/gagliardetto/solana-go"
1111
chainselectors "github.com/smartcontractkit/chain-selectors"
1212
"github.com/stretchr/testify/require"
13-
"go.uber.org/zap/zapcore"
1413

1514
"github.com/smartcontractkit/chainlink-ccip/chains/solana/contracts/tests/testutils"
1615
burnmint "github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings/v0_1_1/burnmint_token_pool"
@@ -38,7 +37,7 @@ import (
3837
commonchangeset "github.com/smartcontractkit/chainlink/deployment/common/changeset"
3938
"github.com/smartcontractkit/chainlink/deployment/common/proposalutils"
4039
commontypes "github.com/smartcontractkit/chainlink/deployment/common/types"
41-
"github.com/smartcontractkit/chainlink/deployment/environment/memory"
40+
"github.com/smartcontractkit/chainlink/deployment/internal/soltestutils"
4241
)
4342

4443
func TestValidateContracts(t *testing.T) {
@@ -193,26 +192,33 @@ func TestValidate(t *testing.T) {
193192
// the transfer ownership changeset.
194193
func prepareEnvironmentForOwnershipTransfer(t *testing.T) (cldf.Environment, stateview.CCIPOnChainState) {
195194
t.Helper()
196-
lggr := logger.Test(t)
197-
e := memory.NewMemoryEnvironment(t, lggr, zapcore.InfoLevel, memory.MemoryEnvironmentConfig{
198-
Bootstraps: 1,
199-
Chains: 2,
200-
SolChains: 1,
201-
Nodes: 4,
202-
CCIPSolanaContractVersion: memory.SolanaContractV0_1_1,
203-
})
204-
evmSelectors := e.BlockChains.ListChainSelectors(cldf_chain.WithFamily(chainselectors.FamilyEVM))
205-
homeChainSel := evmSelectors[0]
206-
solChainSelectors := e.BlockChains.ListChainSelectors(cldf_chain.WithFamily(chainselectors.FamilySolana))
207-
solChain1 := solChainSelectors[0]
208-
solChain := e.BlockChains.SolanaChains()[solChain1]
209-
nodes, err := deployment.NodeInfo(e.NodeIDs, e.Offchain)
195+
196+
homeChainSel := chainselectors.TEST_90000001.Selector
197+
solChainSel := chainselectors.TEST_22222222222222222222222222222222222222222222.Selector
198+
199+
programsPath := t.TempDir()
200+
progIDs := soltestutils.LoadCCIPPrograms(t, programsPath)
201+
env, err := environment.New(t.Context(),
202+
environment.WithEVMSimulated(t, []uint64{homeChainSel}),
203+
environment.WithSolanaContainer(t, []uint64{solChainSel}, programsPath, progIDs),
204+
environment.WithLogger(logger.Test(t)),
205+
)
206+
require.NoError(t, err)
207+
208+
testhelpers.RegisterNodes(t, env, 4, homeChainSel)
209+
210+
solChain := env.BlockChains.SolanaChains()[solChainSel]
211+
nodes, err := deployment.NodeInfo(env.NodeIDs, env.Offchain)
210212
require.NoError(t, err)
213+
211214
// Fund account for fees
212-
testutils.FundAccounts(e.GetContext(), []solana.PrivateKey{*solChain.DeployerKey}, solChain.Client, t)
213-
err = testhelpers.SavePreloadedSolAddresses(e, solChainSelectors[0])
215+
testutils.FundAccounts(env.GetContext(), []solana.PrivateKey{*solChain.DeployerKey}, solChain.Client, t)
216+
err = testhelpers.SavePreloadedSolAddresses(*env, solChainSel)
214217
require.NoError(t, err)
215218
solLinkTokenPrivKey, _ := solana.NewRandomPrivateKey()
219+
220+
e := *env
221+
216222
e, _, err = commonchangeset.ApplyChangesets(t, e, []commonchangeset.ConfiguredChangeSet{
217223
commonchangeset.Configure(
218224
cldf.CreateLegacyChangeSet(v1_6.DeployHomeChainChangeset),
@@ -229,7 +235,7 @@ func prepareEnvironmentForOwnershipTransfer(t *testing.T) (cldf.Environment, sta
229235
commonchangeset.Configure(
230236
cldf.CreateLegacyChangeSet(commonchangeset.DeploySolanaLinkToken),
231237
commonchangeset.DeploySolanaLinkTokenConfig{
232-
ChainSelector: solChain1,
238+
ChainSelector: solChainSel,
233239
TokenPrivKey: solLinkTokenPrivKey,
234240
TokenDecimals: 9,
235241
},
@@ -238,7 +244,7 @@ func prepareEnvironmentForOwnershipTransfer(t *testing.T) (cldf.Environment, sta
238244
cldf.CreateLegacyChangeSet(ccipChangesetSolana.DeployChainContractsChangeset),
239245
ccipChangesetSolana.DeployChainContractsConfig{
240246
HomeChainSelector: homeChainSel,
241-
ChainSelector: solChain1,
247+
ChainSelector: solChainSel,
242248
ContractParamsPerChain: ccipChangesetSolana.ChainContractParams{
243249
FeeQuoterParams: ccipChangesetSolana.FeeQuoterParams{
244250
DefaultMaxFeeJuelsPerMsg: solBinary.Uint128{Lo: 300000000, Hi: 0, Endianness: nil},
@@ -252,23 +258,23 @@ func prepareEnvironmentForOwnershipTransfer(t *testing.T) (cldf.Environment, sta
252258
commonchangeset.Configure(
253259
cldf.CreateLegacyChangeSet(ccipChangesetSolana.DeploySolanaToken),
254260
ccipChangesetSolana.DeploySolanaTokenConfig{
255-
ChainSelector: solChain1,
261+
ChainSelector: solChainSel,
256262
TokenProgramName: shared.SPL2022Tokens,
257263
TokenDecimals: 9,
258264
},
259265
),
260266
commonchangeset.Configure(
261267
cldf.CreateLegacyChangeSet(ccipChangesetSolana.DeploySolanaToken),
262268
ccipChangesetSolana.DeploySolanaTokenConfig{
263-
ChainSelector: solChain1,
269+
ChainSelector: solChainSel,
264270
TokenProgramName: shared.SPLTokens,
265271
TokenDecimals: 9,
266272
},
267273
),
268274
commonchangeset.Configure(
269275
cldf.CreateLegacyChangeSet(commonchangeset.DeployMCMSWithTimelockV2),
270276
map[uint64]commontypes.MCMSWithTimelockConfigV2{
271-
solChain1: {
277+
solChainSel: {
272278
Canceller: proposalutils.SingleGroupMCMSV2(t),
273279
Proposer: proposalutils.SingleGroupMCMSV2(t),
274280
Bypasser: proposalutils.SingleGroupMCMSV2(t),
@@ -280,18 +286,18 @@ func prepareEnvironmentForOwnershipTransfer(t *testing.T) (cldf.Environment, sta
280286
require.NoError(t, err)
281287

282288
// solana verification
283-
err = testhelpers.ValidateSolanaState(e, solChainSelectors)
289+
err = testhelpers.ValidateSolanaState(e, []uint64{solChainSel})
284290
require.NoError(t, err)
285291
state, err := stateview.LoadOnchainStateSolana(e)
286292
require.NoError(t, err)
287-
tokenAddressLockRelease := state.SolChains[solChain1].SPL2022Tokens[0]
288-
tokenAddressBurnMint := state.SolChains[solChain1].SPLTokens[0]
293+
tokenAddressLockRelease := state.SolChains[solChainSel].SPL2022Tokens[0]
294+
tokenAddressBurnMint := state.SolChains[solChainSel].SPLTokens[0]
289295

290296
e, _, err = commonchangeset.ApplyChangesets(t, e, []commonchangeset.ConfiguredChangeSet{
291297
commonchangeset.Configure(
292298
cldf.CreateLegacyChangeSet(ccipChangesetSolana.InitGlobalConfigTokenPoolProgram),
293299
ccipChangesetSolana.TokenPoolConfigWithMCM{
294-
ChainSelector: solChain1,
300+
ChainSelector: solChainSel,
295301
TokenPoolConfigs: []ccipChangesetSolana.TokenPoolConfig{
296302
{
297303
TokenPubKey: tokenAddressLockRelease,
@@ -309,7 +315,7 @@ func prepareEnvironmentForOwnershipTransfer(t *testing.T) (cldf.Environment, sta
309315
commonchangeset.Configure(
310316
cldf.CreateLegacyChangeSet(ccipChangesetSolana.AddTokenPoolAndLookupTable),
311317
ccipChangesetSolana.AddTokenPoolAndLookupTableConfig{
312-
ChainSelector: solChain1,
318+
ChainSelector: solChainSel,
313319
TokenPoolConfigs: []ccipChangesetSolana.TokenPoolConfig{
314320
{
315321
TokenPubKey: tokenAddressLockRelease,
@@ -322,7 +328,7 @@ func prepareEnvironmentForOwnershipTransfer(t *testing.T) (cldf.Environment, sta
322328
commonchangeset.Configure(
323329
cldf.CreateLegacyChangeSet(ccipChangesetSolana.AddTokenPoolAndLookupTable),
324330
ccipChangesetSolana.AddTokenPoolAndLookupTableConfig{
325-
ChainSelector: solChain1,
331+
ChainSelector: solChainSel,
326332
TokenPoolConfigs: []ccipChangesetSolana.TokenPoolConfig{
327333
{
328334
TokenPubKey: tokenAddressBurnMint,
@@ -340,19 +346,21 @@ func prepareEnvironmentForOwnershipTransfer(t *testing.T) (cldf.Environment, sta
340346
func TestTransferCCIPToMCMSWithTimelockSolana(t *testing.T) {
341347
t.Parallel()
342348
skipInCI(t)
349+
343350
e, state := prepareEnvironmentForOwnershipTransfer(t)
344-
solChain1 := e.BlockChains.ListChainSelectors(cldf_chain.WithFamily(chainselectors.FamilySolana))[0]
345-
solChain := e.BlockChains.SolanaChains()[solChain1]
351+
solSelector := e.BlockChains.ListChainSelectors(cldf_chain.WithFamily(chainselectors.FamilySolana))[0]
352+
solChain := e.BlockChains.SolanaChains()[solSelector]
353+
solState := state.SolChains[solSelector]
346354

347-
tokenAddressLockRelease := state.SolChains[solChain1].SPL2022Tokens[0]
348-
tokenAddressBurnMint := state.SolChains[solChain1].SPLTokens[0]
355+
tokenAddressLockRelease := solState.SPL2022Tokens[0]
356+
tokenAddressBurnMint := solState.SPLTokens[0]
349357

350-
burnMintPoolConfigPDA, _ := solTokenUtil.TokenPoolConfigAddress(tokenAddressBurnMint, state.SolChains[solChain1].BurnMintTokenPools[shared.CLLMetadata])
351-
lockReleasePoolConfigPDA, _ := solTokenUtil.TokenPoolConfigAddress(tokenAddressLockRelease, state.SolChains[solChain1].LockReleaseTokenPools[shared.CLLMetadata])
358+
burnMintPoolConfigPDA, _ := solTokenUtil.TokenPoolConfigAddress(tokenAddressBurnMint, solState.BurnMintTokenPools[shared.CLLMetadata])
359+
lockReleasePoolConfigPDA, _ := solTokenUtil.TokenPoolConfigAddress(tokenAddressLockRelease, solState.LockReleaseTokenPools[shared.CLLMetadata])
352360
timelockSignerPDA, _ := testhelpers.TransferOwnershipSolanaV0_1_1(
353361
t,
354362
&e,
355-
solChain1,
363+
solSelector,
356364
false,
357365
ccipChangesetSolana.CCIPContractsToTransfer{
358366
Router: true,
@@ -370,7 +378,7 @@ func TestTransferCCIPToMCMSWithTimelockSolana(t *testing.T) {
370378

371379
// (A) Check Router ownership - we need to add retries as the ownership transfer commitment is confirmed and not finalized.
372380
require.Eventually(t, func() bool {
373-
routerConfigPDA := state.SolChains[solChain1].RouterConfigPDA
381+
routerConfigPDA := solState.RouterConfigPDA
374382
t.Logf("Checking Router Config PDA ownership data configPDA: %s", routerConfigPDA.String())
375383
programData := ccip_router.Config{}
376384
err := solChain.GetAccountDataBorshInto(ctx, routerConfigPDA, &programData)
@@ -380,7 +388,7 @@ func TestTransferCCIPToMCMSWithTimelockSolana(t *testing.T) {
380388

381389
// (B) Check FeeQuoter ownership
382390
require.Eventually(t, func() bool {
383-
feeQuoterConfigPDA := state.SolChains[solChain1].FeeQuoterConfigPDA
391+
feeQuoterConfigPDA := solState.FeeQuoterConfigPDA
384392
t.Logf("Checking Fee Quoter PDA ownership data configPDA: %s", feeQuoterConfigPDA.String())
385393
programData := fee_quoter.Config{}
386394
err := solChain.GetAccountDataBorshInto(ctx, feeQuoterConfigPDA, &programData)
@@ -390,7 +398,7 @@ func TestTransferCCIPToMCMSWithTimelockSolana(t *testing.T) {
390398

391399
// (C) Check OffRamp:
392400
require.Eventually(t, func() bool {
393-
offRampConfigPDA := state.SolChains[solChain1].OffRampConfigPDA
401+
offRampConfigPDA := solState.OffRampConfigPDA
394402
programData := ccip_offramp.Config{}
395403
t.Logf("Checking Off Ramp PDA ownership data configPDA: %s", offRampConfigPDA.String())
396404
err := solChain.GetAccountDataBorshInto(ctx, offRampConfigPDA, &programData)
@@ -418,7 +426,7 @@ func TestTransferCCIPToMCMSWithTimelockSolana(t *testing.T) {
418426

419427
// (F) Check RMNRemote ownership
420428
require.Eventually(t, func() bool {
421-
rmnRemoteConfigPDA := state.SolChains[solChain1].RMNRemoteConfigPDA
429+
rmnRemoteConfigPDA := solState.RMNRemoteConfigPDA
422430
t.Logf("Checking RMNRemote PDA ownership data configPDA: %s", rmnRemoteConfigPDA.String())
423431
programData := rmn_remote.Config{}
424432
err := solChain.GetAccountDataBorshInto(ctx, rmnRemoteConfigPDA, &programData)
@@ -430,19 +438,21 @@ func TestTransferCCIPToMCMSWithTimelockSolana(t *testing.T) {
430438
func TestTransferCCIPFromMCMSWithTimelockSolana(t *testing.T) {
431439
t.Parallel()
432440
skipInCI(t)
441+
433442
e, state := prepareEnvironmentForOwnershipTransfer(t)
434-
solChain1 := e.BlockChains.ListChainSelectors(cldf_chain.WithFamily(chainselectors.FamilySolana))[0]
435-
solChain := e.BlockChains.SolanaChains()[solChain1]
443+
solSelector := e.BlockChains.ListChainSelectors(cldf_chain.WithFamily(chainselectors.FamilySolana))[0]
444+
solChain := e.BlockChains.SolanaChains()[solSelector]
445+
solState := state.SolChains[solSelector]
436446

437-
tokenAddressLockRelease := state.SolChains[solChain1].SPL2022Tokens[0]
438-
tokenAddressBurnMint := state.SolChains[solChain1].SPLTokens[0]
447+
tokenAddressLockRelease := solState.SPL2022Tokens[0]
448+
tokenAddressBurnMint := solState.SPLTokens[0]
439449

440-
burnMintPoolConfigPDA, _ := solTokenUtil.TokenPoolConfigAddress(tokenAddressBurnMint, state.SolChains[solChain1].BurnMintTokenPools[shared.CLLMetadata])
441-
lockReleasePoolConfigPDA, _ := solTokenUtil.TokenPoolConfigAddress(tokenAddressLockRelease, state.SolChains[solChain1].LockReleaseTokenPools[shared.CLLMetadata])
450+
burnMintPoolConfigPDA, _ := solTokenUtil.TokenPoolConfigAddress(tokenAddressBurnMint, solState.BurnMintTokenPools[shared.CLLMetadata])
451+
lockReleasePoolConfigPDA, _ := solTokenUtil.TokenPoolConfigAddress(tokenAddressLockRelease, solState.LockReleaseTokenPools[shared.CLLMetadata])
442452
timelockSignerPDA, _ := testhelpers.TransferOwnershipSolanaV0_1_1(
443453
t,
444454
&e,
445-
solChain1,
455+
solSelector,
446456
false,
447457
ccipChangesetSolana.CCIPContractsToTransfer{
448458
Router: true,
@@ -461,7 +471,7 @@ func TestTransferCCIPFromMCMSWithTimelockSolana(t *testing.T) {
461471
CurrentOwner: timelockSignerPDA,
462472
ProposedOwner: solChain.DeployerKey.PublicKey(),
463473
ContractsByChain: map[uint64]ccipChangesetSolana.CCIPContractsToTransfer{
464-
solChain1: {
474+
solSelector: {
465475
Router: true,
466476
FeeQuoter: true,
467477
OffRamp: true,
@@ -476,7 +486,7 @@ func TestTransferCCIPFromMCMSWithTimelockSolana(t *testing.T) {
476486
require.NoError(t, err)
477487
// we have to accept separate from the changeset because the proposal needs to execute
478488
// just spot check that the ownership transfer happened
479-
config := state.SolChains[solChain1].RouterConfigPDA
489+
config := state.SolChains[solSelector].RouterConfigPDA
480490
ix, err := ccip_router.NewAcceptOwnershipInstruction(
481491
config, solChain.DeployerKey.PublicKey(),
482492
).ValidateAndBuild()

0 commit comments

Comments
 (0)