Skip to content

Commit 7662b46

Browse files
prepare before both sends
1 parent c1f26fd commit 7662b46

1 file changed

Lines changed: 85 additions & 84 deletions

File tree

ccip/devenv/tests/e2e/canton2evm_e2e_test.go

Lines changed: 85 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"math/big"
66
"testing"
7+
"time"
78

89
"github.com/Masterminds/semver/v3"
910
gethcommon "github.com/ethereum/go-ethereum/common"
@@ -68,89 +69,89 @@ func TestCanton2EVM_Basic(t *testing.T) {
6869
require.NoError(t, err)
6970
})
7071

71-
// t.Run("EOA receiver and default committee verifier", func(t *testing.T) {
72-
// subtestCtx := ccv.Plog.WithContext(t.Context())
73-
74-
// receiver, err := evmChain.GetEOAReceiverAddress()
75-
// require.NoError(t, err)
76-
// ccvAddr, err := tcapi.GetContractAddress(
77-
// in,
78-
// cantonChain.ChainSelector(),
79-
// datastore.ContractType(canton_committee_verifier.ContractType),
80-
// canton_committee_verifier.Version.String(),
81-
// devenvcommon.DefaultCommitteeVerifierQualifier,
82-
// "canton committee verifier",
83-
// )
84-
// require.NoError(t, err)
85-
// executorAddr, err := tcapi.GetContractAddress(
86-
// in,
87-
// cantonChain.ChainSelector(),
88-
// datastore.ContractType(executor.ContractType),
89-
// executor.Version.String(),
90-
// devenvcommon.DefaultExecutorQualifier,
91-
// "source executor",
92-
// )
93-
// require.NoError(t, err)
94-
// t.Logf(
95-
// "Resolved contracts: receiver=%x cantonCCV=%x cantonExecutor=%x srcSelector=%d dstSelector=%d",
96-
// receiver,
97-
// ccvAddr,
98-
// executorAddr,
99-
// cantonChain.ChainSelector(),
100-
// evmChain.ChainSelector(),
101-
// )
102-
103-
// t.Logf("Sending Canton -> EVM message")
104-
// msgFields := cciptestinterfaces.MessageFields{
105-
// Receiver: receiver,
106-
// Data: []byte("canton2evm tcapi test"),
107-
// }
108-
// msgOpts := cciptestinterfaces.MessageOptions{
109-
// Version: 3,
110-
// ExecutionGasLimit: 200_000,
111-
// FinalityConfig: 1,
112-
// Executor: executorAddr,
113-
// CCVs: []protocol.CCV{
114-
// {
115-
// CCVAddress: ccvAddr,
116-
// Args: []byte{},
117-
// ArgsLen: 0,
118-
// },
119-
// },
120-
// }
121-
// cantonImpl, ok := cantonChain.(*cantondevenv.Chain)
122-
// require.True(t, ok, "Canton chain implementation must be *devenv.Chain")
123-
// require.NoError(t, cantonImpl.PrepareSendPrerequisites(subtestCtx, msgFields))
124-
// sendMessageResult, err := cantonChain.SendMessage(subtestCtx, evmChain.ChainSelector(), msgFields, msgOpts)
125-
// require.NoError(t, err)
126-
// require.NotNil(t, sendMessageResult.Message)
127-
// // require.NotEmpty(t, sendMessageResult.ReceiptIssuers)
128-
// seqNo := uint64(sendMessageResult.Message.SequenceNumber)
129-
// t.Logf(
130-
// "SendMessage accepted: seqNo=%d",
131-
// seqNo,
132-
// // len(sendMessageResult.ReceiptIssuers),
133-
// )
134-
135-
// t.Logf("Waiting for CCIPMessageSent event: from=%d to=%d seq=%d", cantonChain.ChainSelector(), evmChain.ChainSelector(), seqNo)
136-
// sentEvent, err := cantonChain.WaitOneSentEventBySeqNo(subtestCtx, evmChain.ChainSelector(), seqNo, 30*time.Second)
137-
// require.NoError(t, err)
138-
139-
// t.Logf("CCIPMessageSent event: %+v", sentEvent)
140-
141-
// t.Logf("Asserting message propagated through aggregator/indexer: messageID=%x", sentEvent.MessageID)
142-
// result := devenvtests.AssertSingleVerifierResult(t, subtestCtx, &harness, sentEvent.MessageID)
143-
// t.Logf(
144-
// "Message assertion succeeded: aggregated=true indexerResults=%+v",
145-
// result.IndexedVerifications.Results,
146-
// )
147-
148-
// t.Logf("Waiting for execution event on EVM: from=%d seq=%d", cantonChain.ChainSelector(), seqNo)
149-
// ev, err := evmChain.WaitOneExecEventBySeqNo(subtestCtx, cantonChain.ChainSelector(), seqNo, tests.WaitTimeout(t))
150-
// require.NoError(t, err)
151-
// assert.Equal(t, cciptestinterfaces.ExecutionStateSuccess, ev.State)
152-
// t.Logf("Execution event: %+v", ev)
153-
// })
72+
t.Run("EOA receiver and default committee verifier", func(t *testing.T) {
73+
subtestCtx := ccv.Plog.WithContext(t.Context())
74+
75+
receiver, err := evmChain.GetEOAReceiverAddress()
76+
require.NoError(t, err)
77+
ccvAddr, err := tcapi.GetContractAddress(
78+
in,
79+
cantonChain.ChainSelector(),
80+
datastore.ContractType(canton_committee_verifier.ContractType),
81+
canton_committee_verifier.Version.String(),
82+
devenvcommon.DefaultCommitteeVerifierQualifier,
83+
"canton committee verifier",
84+
)
85+
require.NoError(t, err)
86+
executorAddr, err := tcapi.GetContractAddress(
87+
in,
88+
cantonChain.ChainSelector(),
89+
datastore.ContractType(executor.ContractType),
90+
executor.Version.String(),
91+
devenvcommon.DefaultExecutorQualifier,
92+
"source executor",
93+
)
94+
require.NoError(t, err)
95+
t.Logf(
96+
"Resolved contracts: receiver=%x cantonCCV=%x cantonExecutor=%x srcSelector=%d dstSelector=%d",
97+
receiver,
98+
ccvAddr,
99+
executorAddr,
100+
cantonChain.ChainSelector(),
101+
evmChain.ChainSelector(),
102+
)
103+
104+
t.Logf("Sending Canton -> EVM message")
105+
msgFields := cciptestinterfaces.MessageFields{
106+
Receiver: receiver,
107+
Data: []byte("canton2evm tcapi test"),
108+
}
109+
msgOpts := cciptestinterfaces.MessageOptions{
110+
Version: 3,
111+
ExecutionGasLimit: 200_000,
112+
FinalityConfig: 1,
113+
Executor: executorAddr,
114+
CCVs: []protocol.CCV{
115+
{
116+
CCVAddress: ccvAddr,
117+
Args: []byte{},
118+
ArgsLen: 0,
119+
},
120+
},
121+
}
122+
cantonImpl, ok := cantonChain.(*cantondevenv.Chain)
123+
require.True(t, ok, "Canton chain implementation must be *devenv.Chain")
124+
require.NoError(t, cantonImpl.PrepareSendPrerequisites(subtestCtx))
125+
sendMessageResult, err := cantonChain.SendMessage(subtestCtx, evmChain.ChainSelector(), msgFields, msgOpts)
126+
require.NoError(t, err)
127+
require.NotNil(t, sendMessageResult.Message)
128+
// require.NotEmpty(t, sendMessageResult.ReceiptIssuers)
129+
seqNo := uint64(sendMessageResult.Message.SequenceNumber)
130+
t.Logf(
131+
"SendMessage accepted: seqNo=%d",
132+
seqNo,
133+
// len(sendMessageResult.ReceiptIssuers),
134+
)
135+
136+
t.Logf("Waiting for CCIPMessageSent event: from=%d to=%d seq=%d", cantonChain.ChainSelector(), evmChain.ChainSelector(), seqNo)
137+
sentEvent, err := cantonChain.WaitOneSentEventBySeqNo(subtestCtx, evmChain.ChainSelector(), seqNo, 30*time.Second)
138+
require.NoError(t, err)
139+
140+
t.Logf("CCIPMessageSent event: %+v", sentEvent)
141+
142+
t.Logf("Asserting message propagated through aggregator/indexer: messageID=%x", sentEvent.MessageID)
143+
result := devenvtests.AssertSingleVerifierResult(t, subtestCtx, &harness, sentEvent.MessageID)
144+
t.Logf(
145+
"Message assertion succeeded: aggregated=true indexerResults=%+v",
146+
result.IndexedVerifications.Results,
147+
)
148+
149+
t.Logf("Waiting for execution event on EVM: from=%d seq=%d", cantonChain.ChainSelector(), seqNo)
150+
ev, err := evmChain.WaitOneExecEventBySeqNo(subtestCtx, cantonChain.ChainSelector(), seqNo, tests.WaitTimeout(t))
151+
require.NoError(t, err)
152+
assert.Equal(t, cciptestinterfaces.ExecutionStateSuccess, ev.State)
153+
t.Logf("Execution event: %+v", ev)
154+
})
154155

155156
t.Run("EOA receiver and default committee verifier token transfer", func(t *testing.T) {
156157
subtestCtx := ccv.Plog.WithContext(t.Context())
@@ -212,10 +213,10 @@ func TestCanton2EVM_Basic(t *testing.T) {
212213
cantonImpl, ok := cantonChain.(*cantondevenv.Chain)
213214
require.True(t, ok, "Canton chain implementation must be *devenv.Chain")
214215

216+
require.NoError(t, cantonImpl.PrepareSendPrerequisites(subtestCtx))
215217
const numTokenTransfers = 2
216218
for i := range numTokenTransfers {
217219
tokenMsgFields.Data = []byte(fmt.Sprintf("canton2evm token transfer #%d", i+1))
218-
require.NoError(t, cantonImpl.PrepareSendPrerequisites(subtestCtx))
219220
sendMessageResult, err := cantonChain.SendMessage(subtestCtx, evmChain.ChainSelector(), tokenMsgFields, tokenMsgOpts)
220221
require.NoError(t, err)
221222
require.NotNil(t, sendMessageResult.Message)

0 commit comments

Comments
 (0)