From b881118e8c65343431277c1db1fa735ad488abfb Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Fri, 17 Jan 2025 16:51:01 -0600 Subject: [PATCH 01/20] support for decoding destexecdata --- mocks/pkg/types/ccipocr3/extra_data_codec.go | 91 ++++++++++++++++---- pkg/reader/ccip.go | 11 ++- pkg/types/ccipocr3/interfaces.go | 3 +- 3 files changed, 87 insertions(+), 18 deletions(-) diff --git a/mocks/pkg/types/ccipocr3/extra_data_codec.go b/mocks/pkg/types/ccipocr3/extra_data_codec.go index 0f2a2ed5c..c8d65c175 100644 --- a/mocks/pkg/types/ccipocr3/extra_data_codec.go +++ b/mocks/pkg/types/ccipocr3/extra_data_codec.go @@ -20,21 +20,80 @@ func (_m *MockExtraDataCodec) EXPECT() *MockExtraDataCodec_Expecter { return &MockExtraDataCodec_Expecter{mock: &_m.Mock} } -// DecodeExtraData provides a mock function with given fields: ExtraArgs, sourceChainSelector -func (_m *MockExtraDataCodec) DecodeExtraData(ExtraArgs ccipocr3.Bytes, sourceChainSelector ccipocr3.ChainSelector) (map[string]interface{}, error) { - ret := _m.Called(ExtraArgs, sourceChainSelector) +// DecodeDestExecData provides a mock function with given fields: destExecData, sourceChainSelector +func (_m *MockExtraDataCodec) DecodeDestExecData(destExecData ccipocr3.Bytes, sourceChainSelector ccipocr3.ChainSelector) (ccipocr3.Bytes, error) { + ret := _m.Called(destExecData, sourceChainSelector) if len(ret) == 0 { - panic("no return value specified for DecodeExtraData") + panic("no return value specified for DecodeDestExecData") + } + + var r0 ccipocr3.Bytes + var r1 error + if rf, ok := ret.Get(0).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) (ccipocr3.Bytes, error)); ok { + return rf(destExecData, sourceChainSelector) + } + if rf, ok := ret.Get(0).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) ccipocr3.Bytes); ok { + r0 = rf(destExecData, sourceChainSelector) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(ccipocr3.Bytes) + } + } + + if rf, ok := ret.Get(1).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) error); ok { + r1 = rf(destExecData, sourceChainSelector) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockExtraDataCodec_DecodeDestExecData_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DecodeDestExecData' +type MockExtraDataCodec_DecodeDestExecData_Call struct { + *mock.Call +} + +// DecodeDestExecData is a helper method to define mock.On call +// - destExecData ccipocr3.Bytes +// - sourceChainSelector ccipocr3.ChainSelector +func (_e *MockExtraDataCodec_Expecter) DecodeDestExecData(destExecData interface{}, sourceChainSelector interface{}) *MockExtraDataCodec_DecodeDestExecData_Call { + return &MockExtraDataCodec_DecodeDestExecData_Call{Call: _e.mock.On("DecodeDestExecData", destExecData, sourceChainSelector)} +} + +func (_c *MockExtraDataCodec_DecodeDestExecData_Call) Run(run func(destExecData ccipocr3.Bytes, sourceChainSelector ccipocr3.ChainSelector)) *MockExtraDataCodec_DecodeDestExecData_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(ccipocr3.Bytes), args[1].(ccipocr3.ChainSelector)) + }) + return _c +} + +func (_c *MockExtraDataCodec_DecodeDestExecData_Call) Return(_a0 ccipocr3.Bytes, _a1 error) *MockExtraDataCodec_DecodeDestExecData_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockExtraDataCodec_DecodeDestExecData_Call) RunAndReturn(run func(ccipocr3.Bytes, ccipocr3.ChainSelector) (ccipocr3.Bytes, error)) *MockExtraDataCodec_DecodeDestExecData_Call { + _c.Call.Return(run) + return _c +} + +// DecodeExtraArgs provides a mock function with given fields: extraArgs, sourceChainSelector +func (_m *MockExtraDataCodec) DecodeExtraArgs(extraArgs ccipocr3.Bytes, sourceChainSelector ccipocr3.ChainSelector) (map[string]interface{}, error) { + ret := _m.Called(extraArgs, sourceChainSelector) + + if len(ret) == 0 { + panic("no return value specified for DecodeExtraArgs") } var r0 map[string]interface{} var r1 error if rf, ok := ret.Get(0).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) (map[string]interface{}, error)); ok { - return rf(ExtraArgs, sourceChainSelector) + return rf(extraArgs, sourceChainSelector) } if rf, ok := ret.Get(0).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) map[string]interface{}); ok { - r0 = rf(ExtraArgs, sourceChainSelector) + r0 = rf(extraArgs, sourceChainSelector) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(map[string]interface{}) @@ -42,7 +101,7 @@ func (_m *MockExtraDataCodec) DecodeExtraData(ExtraArgs ccipocr3.Bytes, sourceCh } if rf, ok := ret.Get(1).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) error); ok { - r1 = rf(ExtraArgs, sourceChainSelector) + r1 = rf(extraArgs, sourceChainSelector) } else { r1 = ret.Error(1) } @@ -50,31 +109,31 @@ func (_m *MockExtraDataCodec) DecodeExtraData(ExtraArgs ccipocr3.Bytes, sourceCh return r0, r1 } -// MockExtraDataCodec_DecodeExtraData_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DecodeExtraData' -type MockExtraDataCodec_DecodeExtraData_Call struct { +// MockExtraDataCodec_DecodeExtraArgs_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DecodeExtraArgs' +type MockExtraDataCodec_DecodeExtraArgs_Call struct { *mock.Call } -// DecodeExtraData is a helper method to define mock.On call -// - ExtraArgs ccipocr3.Bytes +// DecodeExtraArgs is a helper method to define mock.On call +// - extraArgs ccipocr3.Bytes // - sourceChainSelector ccipocr3.ChainSelector -func (_e *MockExtraDataCodec_Expecter) DecodeExtraData(ExtraArgs interface{}, sourceChainSelector interface{}) *MockExtraDataCodec_DecodeExtraData_Call { - return &MockExtraDataCodec_DecodeExtraData_Call{Call: _e.mock.On("DecodeExtraData", ExtraArgs, sourceChainSelector)} +func (_e *MockExtraDataCodec_Expecter) DecodeExtraArgs(extraArgs interface{}, sourceChainSelector interface{}) *MockExtraDataCodec_DecodeExtraArgs_Call { + return &MockExtraDataCodec_DecodeExtraArgs_Call{Call: _e.mock.On("DecodeExtraArgs", extraArgs, sourceChainSelector)} } -func (_c *MockExtraDataCodec_DecodeExtraData_Call) Run(run func(ExtraArgs ccipocr3.Bytes, sourceChainSelector ccipocr3.ChainSelector)) *MockExtraDataCodec_DecodeExtraData_Call { +func (_c *MockExtraDataCodec_DecodeExtraArgs_Call) Run(run func(extraArgs ccipocr3.Bytes, sourceChainSelector ccipocr3.ChainSelector)) *MockExtraDataCodec_DecodeExtraArgs_Call { _c.Call.Run(func(args mock.Arguments) { run(args[0].(ccipocr3.Bytes), args[1].(ccipocr3.ChainSelector)) }) return _c } -func (_c *MockExtraDataCodec_DecodeExtraData_Call) Return(_a0 map[string]interface{}, _a1 error) *MockExtraDataCodec_DecodeExtraData_Call { +func (_c *MockExtraDataCodec_DecodeExtraArgs_Call) Return(_a0 map[string]interface{}, _a1 error) *MockExtraDataCodec_DecodeExtraArgs_Call { _c.Call.Return(_a0, _a1) return _c } -func (_c *MockExtraDataCodec_DecodeExtraData_Call) RunAndReturn(run func(ccipocr3.Bytes, ccipocr3.ChainSelector) (map[string]interface{}, error)) *MockExtraDataCodec_DecodeExtraData_Call { +func (_c *MockExtraDataCodec_DecodeExtraArgs_Call) RunAndReturn(run func(ccipocr3.Bytes, ccipocr3.ChainSelector) (map[string]interface{}, error)) *MockExtraDataCodec_DecodeExtraArgs_Call { _c.Call.Return(run) return _c } diff --git a/pkg/reader/ccip.go b/pkg/reader/ccip.go index a4970be97..24ece67d0 100644 --- a/pkg/reader/ccip.go +++ b/pkg/reader/ccip.go @@ -367,11 +367,20 @@ func (r *ccipChainReader) MsgsBetweenSeqNums( return nil, fmt.Errorf("failed to cast %v to Message", item.Data) } - msg.Message.ExtraArgsDecoded, err = r.extraDataCodec.DecodeExtraData(msg.Message.ExtraArgs, sourceChainSelector) + msg.Message.ExtraArgsDecoded, err = r.extraDataCodec.DecodeExtraArgs(msg.Message.ExtraArgs, sourceChainSelector) if err != nil { return nil, fmt.Errorf("failed to decode ExtraArgs: %w", err) } msg.Message.Header.OnRamp = onRampAddress + + for i, token := range msg.Message.TokenAmounts { + token.DestExecData, err = r.extraDataCodec.DecodeDestExecData(token.DestExecData, sourceChainSelector) + if err != nil { + return nil, fmt.Errorf("failed to decode DestExecData: %w", err) + } + + msg.Message.TokenAmounts[i] = token + } msgs = append(msgs, msg.Message) } diff --git a/pkg/types/ccipocr3/interfaces.go b/pkg/types/ccipocr3/interfaces.go index 8955823df..8a0787b70 100644 --- a/pkg/types/ccipocr3/interfaces.go +++ b/pkg/types/ccipocr3/interfaces.go @@ -21,7 +21,8 @@ type MessageHasher interface { } type ExtraDataCodec interface { - DecodeExtraData(ExtraArgs Bytes, sourceChainSelector ChainSelector) (map[string]any, error) + DecodeExtraArgs(extraArgs Bytes, sourceChainSelector ChainSelector) (map[string]any, error) + DecodeDestExecData(destExecData Bytes, sourceChainSelector ChainSelector) (Bytes, error) } // RMNCrypto provides a chain-agnostic interface for verifying RMN signatures. From 29f0e9cbeb9e63a6b4b044228e11b9e6eb175b41 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Fri, 17 Jan 2025 20:35:44 -0600 Subject: [PATCH 02/20] update --- mocks/pkg/types/ccipocr3/extra_data_codec.go | 80 ++++++++++---------- pkg/reader/ccip.go | 2 +- pkg/types/ccipocr3/interfaces.go | 2 +- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/mocks/pkg/types/ccipocr3/extra_data_codec.go b/mocks/pkg/types/ccipocr3/extra_data_codec.go index c8d65c175..c769705a0 100644 --- a/mocks/pkg/types/ccipocr3/extra_data_codec.go +++ b/mocks/pkg/types/ccipocr3/extra_data_codec.go @@ -20,29 +20,29 @@ func (_m *MockExtraDataCodec) EXPECT() *MockExtraDataCodec_Expecter { return &MockExtraDataCodec_Expecter{mock: &_m.Mock} } -// DecodeDestExecData provides a mock function with given fields: destExecData, sourceChainSelector -func (_m *MockExtraDataCodec) DecodeDestExecData(destExecData ccipocr3.Bytes, sourceChainSelector ccipocr3.ChainSelector) (ccipocr3.Bytes, error) { - ret := _m.Called(destExecData, sourceChainSelector) +// DecodeExtraArgs provides a mock function with given fields: extraArgs, sourceChainSelector +func (_m *MockExtraDataCodec) DecodeExtraArgs(extraArgs ccipocr3.Bytes, sourceChainSelector ccipocr3.ChainSelector) (map[string]interface{}, error) { + ret := _m.Called(extraArgs, sourceChainSelector) if len(ret) == 0 { - panic("no return value specified for DecodeDestExecData") + panic("no return value specified for DecodeExtraArgs") } - var r0 ccipocr3.Bytes + var r0 map[string]interface{} var r1 error - if rf, ok := ret.Get(0).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) (ccipocr3.Bytes, error)); ok { - return rf(destExecData, sourceChainSelector) + if rf, ok := ret.Get(0).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) (map[string]interface{}, error)); ok { + return rf(extraArgs, sourceChainSelector) } - if rf, ok := ret.Get(0).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) ccipocr3.Bytes); ok { - r0 = rf(destExecData, sourceChainSelector) + if rf, ok := ret.Get(0).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) map[string]interface{}); ok { + r0 = rf(extraArgs, sourceChainSelector) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(ccipocr3.Bytes) + r0 = ret.Get(0).(map[string]interface{}) } } if rf, ok := ret.Get(1).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) error); ok { - r1 = rf(destExecData, sourceChainSelector) + r1 = rf(extraArgs, sourceChainSelector) } else { r1 = ret.Error(1) } @@ -50,58 +50,58 @@ func (_m *MockExtraDataCodec) DecodeDestExecData(destExecData ccipocr3.Bytes, so return r0, r1 } -// MockExtraDataCodec_DecodeDestExecData_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DecodeDestExecData' -type MockExtraDataCodec_DecodeDestExecData_Call struct { +// MockExtraDataCodec_DecodeExtraArgs_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DecodeExtraArgs' +type MockExtraDataCodec_DecodeExtraArgs_Call struct { *mock.Call } -// DecodeDestExecData is a helper method to define mock.On call -// - destExecData ccipocr3.Bytes +// DecodeExtraArgs is a helper method to define mock.On call +// - extraArgs ccipocr3.Bytes // - sourceChainSelector ccipocr3.ChainSelector -func (_e *MockExtraDataCodec_Expecter) DecodeDestExecData(destExecData interface{}, sourceChainSelector interface{}) *MockExtraDataCodec_DecodeDestExecData_Call { - return &MockExtraDataCodec_DecodeDestExecData_Call{Call: _e.mock.On("DecodeDestExecData", destExecData, sourceChainSelector)} +func (_e *MockExtraDataCodec_Expecter) DecodeExtraArgs(extraArgs interface{}, sourceChainSelector interface{}) *MockExtraDataCodec_DecodeExtraArgs_Call { + return &MockExtraDataCodec_DecodeExtraArgs_Call{Call: _e.mock.On("DecodeExtraArgs", extraArgs, sourceChainSelector)} } -func (_c *MockExtraDataCodec_DecodeDestExecData_Call) Run(run func(destExecData ccipocr3.Bytes, sourceChainSelector ccipocr3.ChainSelector)) *MockExtraDataCodec_DecodeDestExecData_Call { +func (_c *MockExtraDataCodec_DecodeExtraArgs_Call) Run(run func(extraArgs ccipocr3.Bytes, sourceChainSelector ccipocr3.ChainSelector)) *MockExtraDataCodec_DecodeExtraArgs_Call { _c.Call.Run(func(args mock.Arguments) { run(args[0].(ccipocr3.Bytes), args[1].(ccipocr3.ChainSelector)) }) return _c } -func (_c *MockExtraDataCodec_DecodeDestExecData_Call) Return(_a0 ccipocr3.Bytes, _a1 error) *MockExtraDataCodec_DecodeDestExecData_Call { +func (_c *MockExtraDataCodec_DecodeExtraArgs_Call) Return(_a0 map[string]interface{}, _a1 error) *MockExtraDataCodec_DecodeExtraArgs_Call { _c.Call.Return(_a0, _a1) return _c } -func (_c *MockExtraDataCodec_DecodeDestExecData_Call) RunAndReturn(run func(ccipocr3.Bytes, ccipocr3.ChainSelector) (ccipocr3.Bytes, error)) *MockExtraDataCodec_DecodeDestExecData_Call { +func (_c *MockExtraDataCodec_DecodeExtraArgs_Call) RunAndReturn(run func(ccipocr3.Bytes, ccipocr3.ChainSelector) (map[string]interface{}, error)) *MockExtraDataCodec_DecodeExtraArgs_Call { _c.Call.Return(run) return _c } -// DecodeExtraArgs provides a mock function with given fields: extraArgs, sourceChainSelector -func (_m *MockExtraDataCodec) DecodeExtraArgs(extraArgs ccipocr3.Bytes, sourceChainSelector ccipocr3.ChainSelector) (map[string]interface{}, error) { - ret := _m.Called(extraArgs, sourceChainSelector) +// DecodeTokenAmountDestExecData provides a mock function with given fields: destExecData, sourceChainSelector +func (_m *MockExtraDataCodec) DecodeTokenAmountDestExecData(destExecData ccipocr3.Bytes, sourceChainSelector ccipocr3.ChainSelector) (ccipocr3.Bytes, error) { + ret := _m.Called(destExecData, sourceChainSelector) if len(ret) == 0 { - panic("no return value specified for DecodeExtraArgs") + panic("no return value specified for DecodeTokenAmountDestExecData") } - var r0 map[string]interface{} + var r0 ccipocr3.Bytes var r1 error - if rf, ok := ret.Get(0).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) (map[string]interface{}, error)); ok { - return rf(extraArgs, sourceChainSelector) + if rf, ok := ret.Get(0).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) (ccipocr3.Bytes, error)); ok { + return rf(destExecData, sourceChainSelector) } - if rf, ok := ret.Get(0).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) map[string]interface{}); ok { - r0 = rf(extraArgs, sourceChainSelector) + if rf, ok := ret.Get(0).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) ccipocr3.Bytes); ok { + r0 = rf(destExecData, sourceChainSelector) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(map[string]interface{}) + r0 = ret.Get(0).(ccipocr3.Bytes) } } if rf, ok := ret.Get(1).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) error); ok { - r1 = rf(extraArgs, sourceChainSelector) + r1 = rf(destExecData, sourceChainSelector) } else { r1 = ret.Error(1) } @@ -109,31 +109,31 @@ func (_m *MockExtraDataCodec) DecodeExtraArgs(extraArgs ccipocr3.Bytes, sourceCh return r0, r1 } -// MockExtraDataCodec_DecodeExtraArgs_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DecodeExtraArgs' -type MockExtraDataCodec_DecodeExtraArgs_Call struct { +// MockExtraDataCodec_DecodeTokenAmountDestExecData_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DecodeTokenAmountDestExecData' +type MockExtraDataCodec_DecodeTokenAmountDestExecData_Call struct { *mock.Call } -// DecodeExtraArgs is a helper method to define mock.On call -// - extraArgs ccipocr3.Bytes +// DecodeTokenAmountDestExecData is a helper method to define mock.On call +// - destExecData ccipocr3.Bytes // - sourceChainSelector ccipocr3.ChainSelector -func (_e *MockExtraDataCodec_Expecter) DecodeExtraArgs(extraArgs interface{}, sourceChainSelector interface{}) *MockExtraDataCodec_DecodeExtraArgs_Call { - return &MockExtraDataCodec_DecodeExtraArgs_Call{Call: _e.mock.On("DecodeExtraArgs", extraArgs, sourceChainSelector)} +func (_e *MockExtraDataCodec_Expecter) DecodeTokenAmountDestExecData(destExecData interface{}, sourceChainSelector interface{}) *MockExtraDataCodec_DecodeTokenAmountDestExecData_Call { + return &MockExtraDataCodec_DecodeTokenAmountDestExecData_Call{Call: _e.mock.On("DecodeTokenAmountDestExecData", destExecData, sourceChainSelector)} } -func (_c *MockExtraDataCodec_DecodeExtraArgs_Call) Run(run func(extraArgs ccipocr3.Bytes, sourceChainSelector ccipocr3.ChainSelector)) *MockExtraDataCodec_DecodeExtraArgs_Call { +func (_c *MockExtraDataCodec_DecodeTokenAmountDestExecData_Call) Run(run func(destExecData ccipocr3.Bytes, sourceChainSelector ccipocr3.ChainSelector)) *MockExtraDataCodec_DecodeTokenAmountDestExecData_Call { _c.Call.Run(func(args mock.Arguments) { run(args[0].(ccipocr3.Bytes), args[1].(ccipocr3.ChainSelector)) }) return _c } -func (_c *MockExtraDataCodec_DecodeExtraArgs_Call) Return(_a0 map[string]interface{}, _a1 error) *MockExtraDataCodec_DecodeExtraArgs_Call { +func (_c *MockExtraDataCodec_DecodeTokenAmountDestExecData_Call) Return(_a0 ccipocr3.Bytes, _a1 error) *MockExtraDataCodec_DecodeTokenAmountDestExecData_Call { _c.Call.Return(_a0, _a1) return _c } -func (_c *MockExtraDataCodec_DecodeExtraArgs_Call) RunAndReturn(run func(ccipocr3.Bytes, ccipocr3.ChainSelector) (map[string]interface{}, error)) *MockExtraDataCodec_DecodeExtraArgs_Call { +func (_c *MockExtraDataCodec_DecodeTokenAmountDestExecData_Call) RunAndReturn(run func(ccipocr3.Bytes, ccipocr3.ChainSelector) (ccipocr3.Bytes, error)) *MockExtraDataCodec_DecodeTokenAmountDestExecData_Call { _c.Call.Return(run) return _c } diff --git a/pkg/reader/ccip.go b/pkg/reader/ccip.go index 24ece67d0..e22a7ec7a 100644 --- a/pkg/reader/ccip.go +++ b/pkg/reader/ccip.go @@ -374,7 +374,7 @@ func (r *ccipChainReader) MsgsBetweenSeqNums( msg.Message.Header.OnRamp = onRampAddress for i, token := range msg.Message.TokenAmounts { - token.DestExecData, err = r.extraDataCodec.DecodeDestExecData(token.DestExecData, sourceChainSelector) + token.DestExecData, err = r.extraDataCodec.DecodeTokenAmountDestExecData(token.DestExecData, sourceChainSelector) if err != nil { return nil, fmt.Errorf("failed to decode DestExecData: %w", err) } diff --git a/pkg/types/ccipocr3/interfaces.go b/pkg/types/ccipocr3/interfaces.go index 8a0787b70..de3e6296f 100644 --- a/pkg/types/ccipocr3/interfaces.go +++ b/pkg/types/ccipocr3/interfaces.go @@ -22,7 +22,7 @@ type MessageHasher interface { type ExtraDataCodec interface { DecodeExtraArgs(extraArgs Bytes, sourceChainSelector ChainSelector) (map[string]any, error) - DecodeDestExecData(destExecData Bytes, sourceChainSelector ChainSelector) (Bytes, error) + DecodeTokenAmountDestExecData(destExecData Bytes, sourceChainSelector ChainSelector) (Bytes, error) } // RMNCrypto provides a chain-agnostic interface for verifying RMN signatures. From fe93c83a4bf4117470d4ac1a1ba57ad79a5204e8 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Mon, 20 Jan 2025 22:05:48 -0600 Subject: [PATCH 03/20] test --- pkg/reader/ccip.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/reader/ccip.go b/pkg/reader/ccip.go index e22a7ec7a..b5d148fc4 100644 --- a/pkg/reader/ccip.go +++ b/pkg/reader/ccip.go @@ -378,7 +378,6 @@ func (r *ccipChainReader) MsgsBetweenSeqNums( if err != nil { return nil, fmt.Errorf("failed to decode DestExecData: %w", err) } - msg.Message.TokenAmounts[i] = token } msgs = append(msgs, msg.Message) From c3c0e89c72ca1548467b5cfc4d8570aa9e8cf181 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Mon, 20 Jan 2025 22:12:20 -0600 Subject: [PATCH 04/20] test --- pkg/reader/ccip.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/reader/ccip.go b/pkg/reader/ccip.go index b5d148fc4..e22a7ec7a 100644 --- a/pkg/reader/ccip.go +++ b/pkg/reader/ccip.go @@ -378,6 +378,7 @@ func (r *ccipChainReader) MsgsBetweenSeqNums( if err != nil { return nil, fmt.Errorf("failed to decode DestExecData: %w", err) } + msg.Message.TokenAmounts[i] = token } msgs = append(msgs, msg.Message) From 2a3f472f37041a1e6017ba2ebede35304f5cfee7 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Mon, 20 Jan 2025 22:16:51 -0600 Subject: [PATCH 05/20] test --- pkg/reader/ccip.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/reader/ccip.go b/pkg/reader/ccip.go index e22a7ec7a..b5d148fc4 100644 --- a/pkg/reader/ccip.go +++ b/pkg/reader/ccip.go @@ -378,7 +378,6 @@ func (r *ccipChainReader) MsgsBetweenSeqNums( if err != nil { return nil, fmt.Errorf("failed to decode DestExecData: %w", err) } - msg.Message.TokenAmounts[i] = token } msgs = append(msgs, msg.Message) From e2aca5770ba31face2bcce9b071a39800033e150 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Tue, 21 Jan 2025 10:06:58 -0600 Subject: [PATCH 06/20] test --- pkg/reader/ccip.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/reader/ccip.go b/pkg/reader/ccip.go index b5d148fc4..e22a7ec7a 100644 --- a/pkg/reader/ccip.go +++ b/pkg/reader/ccip.go @@ -378,6 +378,7 @@ func (r *ccipChainReader) MsgsBetweenSeqNums( if err != nil { return nil, fmt.Errorf("failed to decode DestExecData: %w", err) } + msg.Message.TokenAmounts[i] = token } msgs = append(msgs, msg.Message) From 918008ab1837c6c72fa0897d958ce1bc89c0a51d Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Tue, 21 Jan 2025 10:48:05 -0600 Subject: [PATCH 07/20] test --- pkg/reader/ccip.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/reader/ccip.go b/pkg/reader/ccip.go index e22a7ec7a..b5d148fc4 100644 --- a/pkg/reader/ccip.go +++ b/pkg/reader/ccip.go @@ -378,7 +378,6 @@ func (r *ccipChainReader) MsgsBetweenSeqNums( if err != nil { return nil, fmt.Errorf("failed to decode DestExecData: %w", err) } - msg.Message.TokenAmounts[i] = token } msgs = append(msgs, msg.Message) From 7bccab703ff9fa387f63011ce11d18d82aa69ee7 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Tue, 21 Jan 2025 17:18:57 -0600 Subject: [PATCH 08/20] comment --- pkg/reader/ccip.go | 8 ++++---- pkg/types/ccipocr3/interfaces.go | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/pkg/reader/ccip.go b/pkg/reader/ccip.go index b5d148fc4..e3720c1ba 100644 --- a/pkg/reader/ccip.go +++ b/pkg/reader/ccip.go @@ -373,12 +373,12 @@ func (r *ccipChainReader) MsgsBetweenSeqNums( } msg.Message.Header.OnRamp = onRampAddress - for i, token := range msg.Message.TokenAmounts { - token.DestExecData, err = r.extraDataCodec.DecodeTokenAmountDestExecData(token.DestExecData, sourceChainSelector) + for i, tokenAmount := range msg.Message.TokenAmounts { + tokenAmount.DestExecData, err = r.extraDataCodec.DecodeTokenAmountDestExecData(tokenAmount.DestExecData, sourceChainSelector) if err != nil { - return nil, fmt.Errorf("failed to decode DestExecData: %w", err) + return nil, fmt.Errorf("failed to decode token amount destExecData (%v): %w", tokenAmount.DestExecData, err) } - msg.Message.TokenAmounts[i] = token + msg.Message.TokenAmounts[i] = tokenAmount } msgs = append(msgs, msg.Message) } diff --git a/pkg/types/ccipocr3/interfaces.go b/pkg/types/ccipocr3/interfaces.go index de3e6296f..a72443cc2 100644 --- a/pkg/types/ccipocr3/interfaces.go +++ b/pkg/types/ccipocr3/interfaces.go @@ -21,7 +21,9 @@ type MessageHasher interface { } type ExtraDataCodec interface { + // DecodeExtraArgs reformat bytes into a chain agnostic map[string]any representation for extra args DecodeExtraArgs(extraArgs Bytes, sourceChainSelector ChainSelector) (map[string]any, error) + // DecodeTokenAmountDestExecData provide special treatment for DestExecData in token message depends on source chain DecodeTokenAmountDestExecData(destExecData Bytes, sourceChainSelector ChainSelector) (Bytes, error) } From 2ff6c11c2e6abfc378d6b2ee44f7622709fd93a2 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Tue, 21 Jan 2025 17:20:45 -0600 Subject: [PATCH 09/20] lint --- pkg/reader/ccip.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/reader/ccip.go b/pkg/reader/ccip.go index e3720c1ba..4c8fc653a 100644 --- a/pkg/reader/ccip.go +++ b/pkg/reader/ccip.go @@ -374,7 +374,10 @@ func (r *ccipChainReader) MsgsBetweenSeqNums( msg.Message.Header.OnRamp = onRampAddress for i, tokenAmount := range msg.Message.TokenAmounts { - tokenAmount.DestExecData, err = r.extraDataCodec.DecodeTokenAmountDestExecData(tokenAmount.DestExecData, sourceChainSelector) + tokenAmount.DestExecData, err = r.extraDataCodec.DecodeTokenAmountDestExecData( + tokenAmount.DestExecData, + sourceChainSelector, + ) if err != nil { return nil, fmt.Errorf("failed to decode token amount destExecData (%v): %w", tokenAmount.DestExecData, err) } From 8ccc619eeeff4fb8a336793d5929d9f0bced9b0c Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Thu, 23 Jan 2025 15:12:24 -0600 Subject: [PATCH 10/20] refactor data type --- mocks/chainlink_common/contract_writer.go | 10 +++++----- mocks/commit/merkleroot/observer.go | 2 +- mocks/commit/merkleroot/rmn/controller.go | 4 ++-- mocks/commit/merkleroot/rmn/stream.go | 8 ++++---- mocks/internal_/plugincommon/chain_support.go | 6 +++--- mocks/internal_/plugincommon/plugin_processor.go | 16 +++++++++++----- mocks/internal_/reader/home_chain.go | 16 ++++++++-------- mocks/libocr_networking/peer_group.go | 4 ++-- mocks/libocr_networking/peer_group_factory.go | 2 +- .../pkg/contractreader/contract_reader_facade.go | 4 ++-- mocks/pkg/contractreader/extended.go | 4 ++-- mocks/pkg/reader/ccip_reader.go | 2 +- mocks/pkg/reader/price_reader.go | 2 +- mocks/pkg/reader/rmn_home.go | 12 ++++++------ mocks/pkg/types/ccipocr3/estimate_provider.go | 2 +- mocks/pkg/types/ccipocr3/execute_plugin_codec.go | 2 +- mocks/pkg/types/ccipocr3/extra_data_codec.go | 16 ++++++++-------- pkg/reader/ccip.go | 2 +- pkg/types/ccipocr3/generic_types.go | 4 ++++ pkg/types/ccipocr3/interfaces.go | 2 +- 20 files changed, 65 insertions(+), 55 deletions(-) diff --git a/mocks/chainlink_common/contract_writer.go b/mocks/chainlink_common/contract_writer.go index 64cecc205..00708f61d 100644 --- a/mocks/chainlink_common/contract_writer.go +++ b/mocks/chainlink_common/contract_writer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package types @@ -24,7 +24,7 @@ func (_m *MockContractWriter) EXPECT() *MockContractWriter_Expecter { return &MockContractWriter_Expecter{mock: &_m.Mock} } -// Close provides a mock function with given fields: +// Close provides a mock function with no fields func (_m *MockContractWriter) Close() error { ret := _m.Called() @@ -184,7 +184,7 @@ func (_c *MockContractWriter_GetTransactionStatus_Call) RunAndReturn(run func(co return _c } -// HealthReport provides a mock function with given fields: +// HealthReport provides a mock function with no fields func (_m *MockContractWriter) HealthReport() map[string]error { ret := _m.Called() @@ -231,7 +231,7 @@ func (_c *MockContractWriter_HealthReport_Call) RunAndReturn(run func() map[stri return _c } -// Name provides a mock function with given fields: +// Name provides a mock function with no fields func (_m *MockContractWriter) Name() string { ret := _m.Called() @@ -276,7 +276,7 @@ func (_c *MockContractWriter_Name_Call) RunAndReturn(run func() string) *MockCon return _c } -// Ready provides a mock function with given fields: +// Ready provides a mock function with no fields func (_m *MockContractWriter) Ready() error { ret := _m.Called() diff --git a/mocks/commit/merkleroot/observer.go b/mocks/commit/merkleroot/observer.go index 0186f25e1..dd1fa853d 100644 --- a/mocks/commit/merkleroot/observer.go +++ b/mocks/commit/merkleroot/observer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package merkleroot diff --git a/mocks/commit/merkleroot/rmn/controller.go b/mocks/commit/merkleroot/rmn/controller.go index 5ee5de4c3..d7eb4840e 100644 --- a/mocks/commit/merkleroot/rmn/controller.go +++ b/mocks/commit/merkleroot/rmn/controller.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package rmn @@ -31,7 +31,7 @@ func (_m *MockController) EXPECT() *MockController_Expecter { return &MockController_Expecter{mock: &_m.Mock} } -// Close provides a mock function with given fields: +// Close provides a mock function with no fields func (_m *MockController) Close() error { ret := _m.Called() diff --git a/mocks/commit/merkleroot/rmn/stream.go b/mocks/commit/merkleroot/rmn/stream.go index a65cc532a..927684b41 100644 --- a/mocks/commit/merkleroot/rmn/stream.go +++ b/mocks/commit/merkleroot/rmn/stream.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package rmn @@ -17,7 +17,7 @@ func (_m *MockStream) EXPECT() *MockStream_Expecter { return &MockStream_Expecter{mock: &_m.Mock} } -// Close provides a mock function with given fields: +// Close provides a mock function with no fields func (_m *MockStream) Close() error { ret := _m.Called() @@ -62,7 +62,7 @@ func (_c *MockStream_Close_Call) RunAndReturn(run func() error) *MockStream_Clos return _c } -// ReceiveMessages provides a mock function with given fields: +// ReceiveMessages provides a mock function with no fields func (_m *MockStream) ReceiveMessages() <-chan []byte { ret := _m.Called() @@ -138,7 +138,7 @@ func (_c *MockStream_SendMessage_Call) Return() *MockStream_SendMessage_Call { } func (_c *MockStream_SendMessage_Call) RunAndReturn(run func([]byte)) *MockStream_SendMessage_Call { - _c.Call.Return(run) + _c.Run(run) return _c } diff --git a/mocks/internal_/plugincommon/chain_support.go b/mocks/internal_/plugincommon/chain_support.go index f1bf5264d..aca066cbd 100644 --- a/mocks/internal_/plugincommon/chain_support.go +++ b/mocks/internal_/plugincommon/chain_support.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package plugincommon @@ -24,7 +24,7 @@ func (_m *MockChainSupport) EXPECT() *MockChainSupport_Expecter { return &MockChainSupport_Expecter{mock: &_m.Mock} } -// DestChain provides a mock function with given fields: +// DestChain provides a mock function with no fields func (_m *MockChainSupport) DestChain() ccipocr3.ChainSelector { ret := _m.Called() @@ -69,7 +69,7 @@ func (_c *MockChainSupport_DestChain_Call) RunAndReturn(run func() ccipocr3.Chai return _c } -// KnownSourceChainsSlice provides a mock function with given fields: +// KnownSourceChainsSlice provides a mock function with no fields func (_m *MockChainSupport) KnownSourceChainsSlice() ([]ccipocr3.ChainSelector, error) { ret := _m.Called() diff --git a/mocks/internal_/plugincommon/plugin_processor.go b/mocks/internal_/plugincommon/plugin_processor.go index 0d92d6550..8d4ac9d81 100644 --- a/mocks/internal_/plugincommon/plugin_processor.go +++ b/mocks/internal_/plugincommon/plugin_processor.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package plugincommon @@ -22,7 +22,7 @@ func (_m *MockPluginProcessor[Query, Observation, Outcome]) EXPECT() *MockPlugin return &MockPluginProcessor_Expecter[Query, Observation, Outcome]{mock: &_m.Mock} } -// Close provides a mock function with given fields: +// Close provides a mock function with no fields func (_m *MockPluginProcessor[Query, Observation, Outcome]) Close() error { ret := _m.Called() @@ -83,7 +83,9 @@ func (_m *MockPluginProcessor[Query, Observation, Outcome]) Observation(ctx cont if rf, ok := ret.Get(0).(func(context.Context, Outcome, Query) Observation); ok { r0 = rf(ctx, prev, query) } else { - r0 = ret.Get(0).(Observation) + if ret.Get(0) != nil { + r0 = ret.Get(0).(Observation) + } } if rf, ok := ret.Get(1).(func(context.Context, Outcome, Query) error); ok { @@ -141,7 +143,9 @@ func (_m *MockPluginProcessor[Query, Observation, Outcome]) Outcome(ctx context. if rf, ok := ret.Get(0).(func(context.Context, Outcome, Query, []plugincommon.AttributedObservation[Observation]) Outcome); ok { r0 = rf(ctx, prev, query, aos) } else { - r0 = ret.Get(0).(Outcome) + if ret.Get(0) != nil { + r0 = ret.Get(0).(Outcome) + } } if rf, ok := ret.Get(1).(func(context.Context, Outcome, Query, []plugincommon.AttributedObservation[Observation]) error); ok { @@ -200,7 +204,9 @@ func (_m *MockPluginProcessor[Query, Observation, Outcome]) Query(ctx context.Co if rf, ok := ret.Get(0).(func(context.Context, Outcome) Query); ok { r0 = rf(ctx, prev) } else { - r0 = ret.Get(0).(Query) + if ret.Get(0) != nil { + r0 = ret.Get(0).(Query) + } } if rf, ok := ret.Get(1).(func(context.Context, Outcome) error); ok { diff --git a/mocks/internal_/reader/home_chain.go b/mocks/internal_/reader/home_chain.go index 9b88f966c..709cc1159 100644 --- a/mocks/internal_/reader/home_chain.go +++ b/mocks/internal_/reader/home_chain.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package reader @@ -29,7 +29,7 @@ func (_m *MockHomeChain) EXPECT() *MockHomeChain_Expecter { return &MockHomeChain_Expecter{mock: &_m.Mock} } -// Close provides a mock function with given fields: +// Close provides a mock function with no fields func (_m *MockHomeChain) Close() error { ret := _m.Called() @@ -74,7 +74,7 @@ func (_c *MockHomeChain_Close_Call) RunAndReturn(run func() error) *MockHomeChai return _c } -// GetAllChainConfigs provides a mock function with given fields: +// GetAllChainConfigs provides a mock function with no fields func (_m *MockHomeChain) GetAllChainConfigs() (map[ccipocr3.ChainSelector]reader.ChainConfig, error) { ret := _m.Called() @@ -187,7 +187,7 @@ func (_c *MockHomeChain_GetChainConfig_Call) RunAndReturn(run func(ccipocr3.Chai return _c } -// GetFChain provides a mock function with given fields: +// GetFChain provides a mock function with no fields func (_m *MockHomeChain) GetFChain() (map[ccipocr3.ChainSelector]int, error) { ret := _m.Called() @@ -244,7 +244,7 @@ func (_c *MockHomeChain_GetFChain_Call) RunAndReturn(run func() (map[ccipocr3.Ch return _c } -// GetKnownCCIPChains provides a mock function with given fields: +// GetKnownCCIPChains provides a mock function with no fields func (_m *MockHomeChain) GetKnownCCIPChains() (mapset.Set[ccipocr3.ChainSelector], error) { ret := _m.Called() @@ -417,7 +417,7 @@ func (_c *MockHomeChain_GetSupportedChainsForPeer_Call) RunAndReturn(run func(ty return _c } -// HealthReport provides a mock function with given fields: +// HealthReport provides a mock function with no fields func (_m *MockHomeChain) HealthReport() map[string]error { ret := _m.Called() @@ -464,7 +464,7 @@ func (_c *MockHomeChain_HealthReport_Call) RunAndReturn(run func() map[string]er return _c } -// Name provides a mock function with given fields: +// Name provides a mock function with no fields func (_m *MockHomeChain) Name() string { ret := _m.Called() @@ -509,7 +509,7 @@ func (_c *MockHomeChain_Name_Call) RunAndReturn(run func() string) *MockHomeChai return _c } -// Ready provides a mock function with given fields: +// Ready provides a mock function with no fields func (_m *MockHomeChain) Ready() error { ret := _m.Called() diff --git a/mocks/libocr_networking/peer_group.go b/mocks/libocr_networking/peer_group.go index 0d34c86f6..8810ed820 100644 --- a/mocks/libocr_networking/peer_group.go +++ b/mocks/libocr_networking/peer_group.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package networking @@ -20,7 +20,7 @@ func (_m *MockPeerGroup) EXPECT() *MockPeerGroup_Expecter { return &MockPeerGroup_Expecter{mock: &_m.Mock} } -// Close provides a mock function with given fields: +// Close provides a mock function with no fields func (_m *MockPeerGroup) Close() error { ret := _m.Called() diff --git a/mocks/libocr_networking/peer_group_factory.go b/mocks/libocr_networking/peer_group_factory.go index 23a357980..cc25fa411 100644 --- a/mocks/libocr_networking/peer_group_factory.go +++ b/mocks/libocr_networking/peer_group_factory.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package networking diff --git a/mocks/pkg/contractreader/contract_reader_facade.go b/mocks/pkg/contractreader/contract_reader_facade.go index fa561b7ed..7e01365a0 100644 --- a/mocks/pkg/contractreader/contract_reader_facade.go +++ b/mocks/pkg/contractreader/contract_reader_facade.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package contractreader @@ -183,7 +183,7 @@ func (_c *MockContractReaderFacade_GetLatestValue_Call) RunAndReturn(run func(co return _c } -// HealthReport provides a mock function with given fields: +// HealthReport provides a mock function with no fields func (_m *MockContractReaderFacade) HealthReport() map[string]error { ret := _m.Called() diff --git a/mocks/pkg/contractreader/extended.go b/mocks/pkg/contractreader/extended.go index 2b748854c..ad4802f46 100644 --- a/mocks/pkg/contractreader/extended.go +++ b/mocks/pkg/contractreader/extended.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package contractreader @@ -404,7 +404,7 @@ func (_c *MockExtended_GetLatestValue_Call) RunAndReturn(run func(context.Contex return _c } -// HealthReport provides a mock function with given fields: +// HealthReport provides a mock function with no fields func (_m *MockExtended) HealthReport() map[string]error { ret := _m.Called() diff --git a/mocks/pkg/reader/ccip_reader.go b/mocks/pkg/reader/ccip_reader.go index 460c18a1d..254e42e71 100644 --- a/mocks/pkg/reader/ccip_reader.go +++ b/mocks/pkg/reader/ccip_reader.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package reader diff --git a/mocks/pkg/reader/price_reader.go b/mocks/pkg/reader/price_reader.go index cd7a0af0d..21fa1faae 100644 --- a/mocks/pkg/reader/price_reader.go +++ b/mocks/pkg/reader/price_reader.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package reader diff --git a/mocks/pkg/reader/rmn_home.go b/mocks/pkg/reader/rmn_home.go index 1f4d8084b..b1c11f43a 100644 --- a/mocks/pkg/reader/rmn_home.go +++ b/mocks/pkg/reader/rmn_home.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package reader @@ -25,7 +25,7 @@ func (_m *MockRMNHome) EXPECT() *MockRMNHome_Expecter { return &MockRMNHome_Expecter{mock: &_m.Mock} } -// Close provides a mock function with given fields: +// Close provides a mock function with no fields func (_m *MockRMNHome) Close() error { ret := _m.Called() @@ -70,7 +70,7 @@ func (_c *MockRMNHome_Close_Call) RunAndReturn(run func() error) *MockRMNHome_Cl return _c } -// GetAllConfigDigests provides a mock function with given fields: +// GetAllConfigDigests provides a mock function with no fields func (_m *MockRMNHome) GetAllConfigDigests() (ccipocr3.Bytes32, ccipocr3.Bytes32) { ret := _m.Called() @@ -303,7 +303,7 @@ func (_c *MockRMNHome_GetRMNNodesInfo_Call) RunAndReturn(run func(ccipocr3.Bytes return _c } -// HealthReport provides a mock function with given fields: +// HealthReport provides a mock function with no fields func (_m *MockRMNHome) HealthReport() map[string]error { ret := _m.Called() @@ -396,7 +396,7 @@ func (_c *MockRMNHome_IsRMNHomeConfigDigestSet_Call) RunAndReturn(run func(ccipo return _c } -// Name provides a mock function with given fields: +// Name provides a mock function with no fields func (_m *MockRMNHome) Name() string { ret := _m.Called() @@ -441,7 +441,7 @@ func (_c *MockRMNHome_Name_Call) RunAndReturn(run func() string) *MockRMNHome_Na return _c } -// Ready provides a mock function with given fields: +// Ready provides a mock function with no fields func (_m *MockRMNHome) Ready() error { ret := _m.Called() diff --git a/mocks/pkg/types/ccipocr3/estimate_provider.go b/mocks/pkg/types/ccipocr3/estimate_provider.go index f36992b03..0c388d71d 100644 --- a/mocks/pkg/types/ccipocr3/estimate_provider.go +++ b/mocks/pkg/types/ccipocr3/estimate_provider.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package ccipocr3 diff --git a/mocks/pkg/types/ccipocr3/execute_plugin_codec.go b/mocks/pkg/types/ccipocr3/execute_plugin_codec.go index 9c0358d58..103b18f4c 100644 --- a/mocks/pkg/types/ccipocr3/execute_plugin_codec.go +++ b/mocks/pkg/types/ccipocr3/execute_plugin_codec.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package ccipocr3 diff --git a/mocks/pkg/types/ccipocr3/extra_data_codec.go b/mocks/pkg/types/ccipocr3/extra_data_codec.go index c769705a0..78b9ad05e 100644 --- a/mocks/pkg/types/ccipocr3/extra_data_codec.go +++ b/mocks/pkg/types/ccipocr3/extra_data_codec.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package ccipocr3 @@ -80,23 +80,23 @@ func (_c *MockExtraDataCodec_DecodeExtraArgs_Call) RunAndReturn(run func(ccipocr } // DecodeTokenAmountDestExecData provides a mock function with given fields: destExecData, sourceChainSelector -func (_m *MockExtraDataCodec) DecodeTokenAmountDestExecData(destExecData ccipocr3.Bytes, sourceChainSelector ccipocr3.ChainSelector) (ccipocr3.Bytes, error) { +func (_m *MockExtraDataCodec) DecodeTokenAmountDestExecData(destExecData ccipocr3.Bytes, sourceChainSelector ccipocr3.ChainSelector) (map[string]interface{}, error) { ret := _m.Called(destExecData, sourceChainSelector) if len(ret) == 0 { panic("no return value specified for DecodeTokenAmountDestExecData") } - var r0 ccipocr3.Bytes + var r0 map[string]interface{} var r1 error - if rf, ok := ret.Get(0).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) (ccipocr3.Bytes, error)); ok { + if rf, ok := ret.Get(0).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) (map[string]interface{}, error)); ok { return rf(destExecData, sourceChainSelector) } - if rf, ok := ret.Get(0).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) ccipocr3.Bytes); ok { + if rf, ok := ret.Get(0).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) map[string]interface{}); ok { r0 = rf(destExecData, sourceChainSelector) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(ccipocr3.Bytes) + r0 = ret.Get(0).(map[string]interface{}) } } @@ -128,12 +128,12 @@ func (_c *MockExtraDataCodec_DecodeTokenAmountDestExecData_Call) Run(run func(de return _c } -func (_c *MockExtraDataCodec_DecodeTokenAmountDestExecData_Call) Return(_a0 ccipocr3.Bytes, _a1 error) *MockExtraDataCodec_DecodeTokenAmountDestExecData_Call { +func (_c *MockExtraDataCodec_DecodeTokenAmountDestExecData_Call) Return(_a0 map[string]interface{}, _a1 error) *MockExtraDataCodec_DecodeTokenAmountDestExecData_Call { _c.Call.Return(_a0, _a1) return _c } -func (_c *MockExtraDataCodec_DecodeTokenAmountDestExecData_Call) RunAndReturn(run func(ccipocr3.Bytes, ccipocr3.ChainSelector) (ccipocr3.Bytes, error)) *MockExtraDataCodec_DecodeTokenAmountDestExecData_Call { +func (_c *MockExtraDataCodec_DecodeTokenAmountDestExecData_Call) RunAndReturn(run func(ccipocr3.Bytes, ccipocr3.ChainSelector) (map[string]interface{}, error)) *MockExtraDataCodec_DecodeTokenAmountDestExecData_Call { _c.Call.Return(run) return _c } diff --git a/pkg/reader/ccip.go b/pkg/reader/ccip.go index 4c8fc653a..3f9338d21 100644 --- a/pkg/reader/ccip.go +++ b/pkg/reader/ccip.go @@ -374,7 +374,7 @@ func (r *ccipChainReader) MsgsBetweenSeqNums( msg.Message.Header.OnRamp = onRampAddress for i, tokenAmount := range msg.Message.TokenAmounts { - tokenAmount.DestExecData, err = r.extraDataCodec.DecodeTokenAmountDestExecData( + tokenAmount.DestExecDataDecoded, err = r.extraDataCodec.DecodeTokenAmountDestExecData( tokenAmount.DestExecData, sourceChainSelector, ) diff --git a/pkg/types/ccipocr3/generic_types.go b/pkg/types/ccipocr3/generic_types.go index c75ef503c..4fcbd6ea1 100644 --- a/pkg/types/ccipocr3/generic_types.go +++ b/pkg/types/ccipocr3/generic_types.go @@ -203,4 +203,8 @@ type RampTokenAmount struct { // NOTE: this must be decoded before providing it as an execution input to the destination chain // or hashing it. See Internal._hash(Any2EVMRampMessage) for more details as an example. DestExecData Bytes `json:"destExecData"` + // DestExecDataDecoded is the same as DestExecData + // just decoded into a named collection of arguments in a generic format, + // which can be read by any destination chain family. + DestExecDataDecoded map[string]any `json:"destExecDataDecoded,omitempty"` } diff --git a/pkg/types/ccipocr3/interfaces.go b/pkg/types/ccipocr3/interfaces.go index a72443cc2..5321b7927 100644 --- a/pkg/types/ccipocr3/interfaces.go +++ b/pkg/types/ccipocr3/interfaces.go @@ -24,7 +24,7 @@ type ExtraDataCodec interface { // DecodeExtraArgs reformat bytes into a chain agnostic map[string]any representation for extra args DecodeExtraArgs(extraArgs Bytes, sourceChainSelector ChainSelector) (map[string]any, error) // DecodeTokenAmountDestExecData provide special treatment for DestExecData in token message depends on source chain - DecodeTokenAmountDestExecData(destExecData Bytes, sourceChainSelector ChainSelector) (Bytes, error) + DecodeTokenAmountDestExecData(destExecData Bytes, sourceChainSelector ChainSelector) (map[string]any, error) } // RMNCrypto provides a chain-agnostic interface for verifying RMN signatures. From 588905c8e6680ecbff6f7e70caf69642bbcd947f Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Thu, 23 Jan 2025 15:39:07 -0600 Subject: [PATCH 11/20] revert --- mocks/chainlink_common/contract_writer.go | 10 +++++----- mocks/commit/merkleroot/observer.go | 2 +- mocks/commit/merkleroot/rmn/controller.go | 4 ++-- mocks/commit/merkleroot/rmn/stream.go | 8 ++++---- mocks/internal_/plugincommon/chain_support.go | 6 +++--- mocks/internal_/plugincommon/plugin_processor.go | 16 +++++----------- mocks/internal_/reader/home_chain.go | 16 ++++++++-------- mocks/libocr_networking/peer_group.go | 4 ++-- mocks/libocr_networking/peer_group_factory.go | 2 +- .../pkg/contractreader/contract_reader_facade.go | 4 ++-- mocks/pkg/contractreader/extended.go | 4 ++-- mocks/pkg/reader/ccip_reader.go | 2 +- mocks/pkg/reader/price_reader.go | 2 +- mocks/pkg/reader/rmn_home.go | 12 ++++++------ mocks/pkg/types/ccipocr3/estimate_provider.go | 2 +- mocks/pkg/types/ccipocr3/execute_plugin_codec.go | 2 +- mocks/pkg/types/ccipocr3/extra_data_codec.go | 2 +- pkg/types/ccipocr3/interfaces.go | 2 +- 18 files changed, 47 insertions(+), 53 deletions(-) diff --git a/mocks/chainlink_common/contract_writer.go b/mocks/chainlink_common/contract_writer.go index 00708f61d..64cecc205 100644 --- a/mocks/chainlink_common/contract_writer.go +++ b/mocks/chainlink_common/contract_writer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.50.0. DO NOT EDIT. +// Code generated by mockery v2.43.2. DO NOT EDIT. package types @@ -24,7 +24,7 @@ func (_m *MockContractWriter) EXPECT() *MockContractWriter_Expecter { return &MockContractWriter_Expecter{mock: &_m.Mock} } -// Close provides a mock function with no fields +// Close provides a mock function with given fields: func (_m *MockContractWriter) Close() error { ret := _m.Called() @@ -184,7 +184,7 @@ func (_c *MockContractWriter_GetTransactionStatus_Call) RunAndReturn(run func(co return _c } -// HealthReport provides a mock function with no fields +// HealthReport provides a mock function with given fields: func (_m *MockContractWriter) HealthReport() map[string]error { ret := _m.Called() @@ -231,7 +231,7 @@ func (_c *MockContractWriter_HealthReport_Call) RunAndReturn(run func() map[stri return _c } -// Name provides a mock function with no fields +// Name provides a mock function with given fields: func (_m *MockContractWriter) Name() string { ret := _m.Called() @@ -276,7 +276,7 @@ func (_c *MockContractWriter_Name_Call) RunAndReturn(run func() string) *MockCon return _c } -// Ready provides a mock function with no fields +// Ready provides a mock function with given fields: func (_m *MockContractWriter) Ready() error { ret := _m.Called() diff --git a/mocks/commit/merkleroot/observer.go b/mocks/commit/merkleroot/observer.go index dd1fa853d..0186f25e1 100644 --- a/mocks/commit/merkleroot/observer.go +++ b/mocks/commit/merkleroot/observer.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.50.0. DO NOT EDIT. +// Code generated by mockery v2.43.2. DO NOT EDIT. package merkleroot diff --git a/mocks/commit/merkleroot/rmn/controller.go b/mocks/commit/merkleroot/rmn/controller.go index d7eb4840e..5ee5de4c3 100644 --- a/mocks/commit/merkleroot/rmn/controller.go +++ b/mocks/commit/merkleroot/rmn/controller.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.50.0. DO NOT EDIT. +// Code generated by mockery v2.43.2. DO NOT EDIT. package rmn @@ -31,7 +31,7 @@ func (_m *MockController) EXPECT() *MockController_Expecter { return &MockController_Expecter{mock: &_m.Mock} } -// Close provides a mock function with no fields +// Close provides a mock function with given fields: func (_m *MockController) Close() error { ret := _m.Called() diff --git a/mocks/commit/merkleroot/rmn/stream.go b/mocks/commit/merkleroot/rmn/stream.go index 927684b41..a65cc532a 100644 --- a/mocks/commit/merkleroot/rmn/stream.go +++ b/mocks/commit/merkleroot/rmn/stream.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.50.0. DO NOT EDIT. +// Code generated by mockery v2.43.2. DO NOT EDIT. package rmn @@ -17,7 +17,7 @@ func (_m *MockStream) EXPECT() *MockStream_Expecter { return &MockStream_Expecter{mock: &_m.Mock} } -// Close provides a mock function with no fields +// Close provides a mock function with given fields: func (_m *MockStream) Close() error { ret := _m.Called() @@ -62,7 +62,7 @@ func (_c *MockStream_Close_Call) RunAndReturn(run func() error) *MockStream_Clos return _c } -// ReceiveMessages provides a mock function with no fields +// ReceiveMessages provides a mock function with given fields: func (_m *MockStream) ReceiveMessages() <-chan []byte { ret := _m.Called() @@ -138,7 +138,7 @@ func (_c *MockStream_SendMessage_Call) Return() *MockStream_SendMessage_Call { } func (_c *MockStream_SendMessage_Call) RunAndReturn(run func([]byte)) *MockStream_SendMessage_Call { - _c.Run(run) + _c.Call.Return(run) return _c } diff --git a/mocks/internal_/plugincommon/chain_support.go b/mocks/internal_/plugincommon/chain_support.go index aca066cbd..f1bf5264d 100644 --- a/mocks/internal_/plugincommon/chain_support.go +++ b/mocks/internal_/plugincommon/chain_support.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.50.0. DO NOT EDIT. +// Code generated by mockery v2.43.2. DO NOT EDIT. package plugincommon @@ -24,7 +24,7 @@ func (_m *MockChainSupport) EXPECT() *MockChainSupport_Expecter { return &MockChainSupport_Expecter{mock: &_m.Mock} } -// DestChain provides a mock function with no fields +// DestChain provides a mock function with given fields: func (_m *MockChainSupport) DestChain() ccipocr3.ChainSelector { ret := _m.Called() @@ -69,7 +69,7 @@ func (_c *MockChainSupport_DestChain_Call) RunAndReturn(run func() ccipocr3.Chai return _c } -// KnownSourceChainsSlice provides a mock function with no fields +// KnownSourceChainsSlice provides a mock function with given fields: func (_m *MockChainSupport) KnownSourceChainsSlice() ([]ccipocr3.ChainSelector, error) { ret := _m.Called() diff --git a/mocks/internal_/plugincommon/plugin_processor.go b/mocks/internal_/plugincommon/plugin_processor.go index 8d4ac9d81..0d92d6550 100644 --- a/mocks/internal_/plugincommon/plugin_processor.go +++ b/mocks/internal_/plugincommon/plugin_processor.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.50.0. DO NOT EDIT. +// Code generated by mockery v2.43.2. DO NOT EDIT. package plugincommon @@ -22,7 +22,7 @@ func (_m *MockPluginProcessor[Query, Observation, Outcome]) EXPECT() *MockPlugin return &MockPluginProcessor_Expecter[Query, Observation, Outcome]{mock: &_m.Mock} } -// Close provides a mock function with no fields +// Close provides a mock function with given fields: func (_m *MockPluginProcessor[Query, Observation, Outcome]) Close() error { ret := _m.Called() @@ -83,9 +83,7 @@ func (_m *MockPluginProcessor[Query, Observation, Outcome]) Observation(ctx cont if rf, ok := ret.Get(0).(func(context.Context, Outcome, Query) Observation); ok { r0 = rf(ctx, prev, query) } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(Observation) - } + r0 = ret.Get(0).(Observation) } if rf, ok := ret.Get(1).(func(context.Context, Outcome, Query) error); ok { @@ -143,9 +141,7 @@ func (_m *MockPluginProcessor[Query, Observation, Outcome]) Outcome(ctx context. if rf, ok := ret.Get(0).(func(context.Context, Outcome, Query, []plugincommon.AttributedObservation[Observation]) Outcome); ok { r0 = rf(ctx, prev, query, aos) } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(Outcome) - } + r0 = ret.Get(0).(Outcome) } if rf, ok := ret.Get(1).(func(context.Context, Outcome, Query, []plugincommon.AttributedObservation[Observation]) error); ok { @@ -204,9 +200,7 @@ func (_m *MockPluginProcessor[Query, Observation, Outcome]) Query(ctx context.Co if rf, ok := ret.Get(0).(func(context.Context, Outcome) Query); ok { r0 = rf(ctx, prev) } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(Query) - } + r0 = ret.Get(0).(Query) } if rf, ok := ret.Get(1).(func(context.Context, Outcome) error); ok { diff --git a/mocks/internal_/reader/home_chain.go b/mocks/internal_/reader/home_chain.go index 709cc1159..9b88f966c 100644 --- a/mocks/internal_/reader/home_chain.go +++ b/mocks/internal_/reader/home_chain.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.50.0. DO NOT EDIT. +// Code generated by mockery v2.43.2. DO NOT EDIT. package reader @@ -29,7 +29,7 @@ func (_m *MockHomeChain) EXPECT() *MockHomeChain_Expecter { return &MockHomeChain_Expecter{mock: &_m.Mock} } -// Close provides a mock function with no fields +// Close provides a mock function with given fields: func (_m *MockHomeChain) Close() error { ret := _m.Called() @@ -74,7 +74,7 @@ func (_c *MockHomeChain_Close_Call) RunAndReturn(run func() error) *MockHomeChai return _c } -// GetAllChainConfigs provides a mock function with no fields +// GetAllChainConfigs provides a mock function with given fields: func (_m *MockHomeChain) GetAllChainConfigs() (map[ccipocr3.ChainSelector]reader.ChainConfig, error) { ret := _m.Called() @@ -187,7 +187,7 @@ func (_c *MockHomeChain_GetChainConfig_Call) RunAndReturn(run func(ccipocr3.Chai return _c } -// GetFChain provides a mock function with no fields +// GetFChain provides a mock function with given fields: func (_m *MockHomeChain) GetFChain() (map[ccipocr3.ChainSelector]int, error) { ret := _m.Called() @@ -244,7 +244,7 @@ func (_c *MockHomeChain_GetFChain_Call) RunAndReturn(run func() (map[ccipocr3.Ch return _c } -// GetKnownCCIPChains provides a mock function with no fields +// GetKnownCCIPChains provides a mock function with given fields: func (_m *MockHomeChain) GetKnownCCIPChains() (mapset.Set[ccipocr3.ChainSelector], error) { ret := _m.Called() @@ -417,7 +417,7 @@ func (_c *MockHomeChain_GetSupportedChainsForPeer_Call) RunAndReturn(run func(ty return _c } -// HealthReport provides a mock function with no fields +// HealthReport provides a mock function with given fields: func (_m *MockHomeChain) HealthReport() map[string]error { ret := _m.Called() @@ -464,7 +464,7 @@ func (_c *MockHomeChain_HealthReport_Call) RunAndReturn(run func() map[string]er return _c } -// Name provides a mock function with no fields +// Name provides a mock function with given fields: func (_m *MockHomeChain) Name() string { ret := _m.Called() @@ -509,7 +509,7 @@ func (_c *MockHomeChain_Name_Call) RunAndReturn(run func() string) *MockHomeChai return _c } -// Ready provides a mock function with no fields +// Ready provides a mock function with given fields: func (_m *MockHomeChain) Ready() error { ret := _m.Called() diff --git a/mocks/libocr_networking/peer_group.go b/mocks/libocr_networking/peer_group.go index 8810ed820..0d34c86f6 100644 --- a/mocks/libocr_networking/peer_group.go +++ b/mocks/libocr_networking/peer_group.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.50.0. DO NOT EDIT. +// Code generated by mockery v2.43.2. DO NOT EDIT. package networking @@ -20,7 +20,7 @@ func (_m *MockPeerGroup) EXPECT() *MockPeerGroup_Expecter { return &MockPeerGroup_Expecter{mock: &_m.Mock} } -// Close provides a mock function with no fields +// Close provides a mock function with given fields: func (_m *MockPeerGroup) Close() error { ret := _m.Called() diff --git a/mocks/libocr_networking/peer_group_factory.go b/mocks/libocr_networking/peer_group_factory.go index cc25fa411..23a357980 100644 --- a/mocks/libocr_networking/peer_group_factory.go +++ b/mocks/libocr_networking/peer_group_factory.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.50.0. DO NOT EDIT. +// Code generated by mockery v2.43.2. DO NOT EDIT. package networking diff --git a/mocks/pkg/contractreader/contract_reader_facade.go b/mocks/pkg/contractreader/contract_reader_facade.go index 7e01365a0..fa561b7ed 100644 --- a/mocks/pkg/contractreader/contract_reader_facade.go +++ b/mocks/pkg/contractreader/contract_reader_facade.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.50.0. DO NOT EDIT. +// Code generated by mockery v2.43.2. DO NOT EDIT. package contractreader @@ -183,7 +183,7 @@ func (_c *MockContractReaderFacade_GetLatestValue_Call) RunAndReturn(run func(co return _c } -// HealthReport provides a mock function with no fields +// HealthReport provides a mock function with given fields: func (_m *MockContractReaderFacade) HealthReport() map[string]error { ret := _m.Called() diff --git a/mocks/pkg/contractreader/extended.go b/mocks/pkg/contractreader/extended.go index ad4802f46..2b748854c 100644 --- a/mocks/pkg/contractreader/extended.go +++ b/mocks/pkg/contractreader/extended.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.50.0. DO NOT EDIT. +// Code generated by mockery v2.43.2. DO NOT EDIT. package contractreader @@ -404,7 +404,7 @@ func (_c *MockExtended_GetLatestValue_Call) RunAndReturn(run func(context.Contex return _c } -// HealthReport provides a mock function with no fields +// HealthReport provides a mock function with given fields: func (_m *MockExtended) HealthReport() map[string]error { ret := _m.Called() diff --git a/mocks/pkg/reader/ccip_reader.go b/mocks/pkg/reader/ccip_reader.go index 254e42e71..460c18a1d 100644 --- a/mocks/pkg/reader/ccip_reader.go +++ b/mocks/pkg/reader/ccip_reader.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.50.0. DO NOT EDIT. +// Code generated by mockery v2.43.2. DO NOT EDIT. package reader diff --git a/mocks/pkg/reader/price_reader.go b/mocks/pkg/reader/price_reader.go index 21fa1faae..cd7a0af0d 100644 --- a/mocks/pkg/reader/price_reader.go +++ b/mocks/pkg/reader/price_reader.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.50.0. DO NOT EDIT. +// Code generated by mockery v2.43.2. DO NOT EDIT. package reader diff --git a/mocks/pkg/reader/rmn_home.go b/mocks/pkg/reader/rmn_home.go index b1c11f43a..1f4d8084b 100644 --- a/mocks/pkg/reader/rmn_home.go +++ b/mocks/pkg/reader/rmn_home.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.50.0. DO NOT EDIT. +// Code generated by mockery v2.43.2. DO NOT EDIT. package reader @@ -25,7 +25,7 @@ func (_m *MockRMNHome) EXPECT() *MockRMNHome_Expecter { return &MockRMNHome_Expecter{mock: &_m.Mock} } -// Close provides a mock function with no fields +// Close provides a mock function with given fields: func (_m *MockRMNHome) Close() error { ret := _m.Called() @@ -70,7 +70,7 @@ func (_c *MockRMNHome_Close_Call) RunAndReturn(run func() error) *MockRMNHome_Cl return _c } -// GetAllConfigDigests provides a mock function with no fields +// GetAllConfigDigests provides a mock function with given fields: func (_m *MockRMNHome) GetAllConfigDigests() (ccipocr3.Bytes32, ccipocr3.Bytes32) { ret := _m.Called() @@ -303,7 +303,7 @@ func (_c *MockRMNHome_GetRMNNodesInfo_Call) RunAndReturn(run func(ccipocr3.Bytes return _c } -// HealthReport provides a mock function with no fields +// HealthReport provides a mock function with given fields: func (_m *MockRMNHome) HealthReport() map[string]error { ret := _m.Called() @@ -396,7 +396,7 @@ func (_c *MockRMNHome_IsRMNHomeConfigDigestSet_Call) RunAndReturn(run func(ccipo return _c } -// Name provides a mock function with no fields +// Name provides a mock function with given fields: func (_m *MockRMNHome) Name() string { ret := _m.Called() @@ -441,7 +441,7 @@ func (_c *MockRMNHome_Name_Call) RunAndReturn(run func() string) *MockRMNHome_Na return _c } -// Ready provides a mock function with no fields +// Ready provides a mock function with given fields: func (_m *MockRMNHome) Ready() error { ret := _m.Called() diff --git a/mocks/pkg/types/ccipocr3/estimate_provider.go b/mocks/pkg/types/ccipocr3/estimate_provider.go index 0c388d71d..f36992b03 100644 --- a/mocks/pkg/types/ccipocr3/estimate_provider.go +++ b/mocks/pkg/types/ccipocr3/estimate_provider.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.50.0. DO NOT EDIT. +// Code generated by mockery v2.43.2. DO NOT EDIT. package ccipocr3 diff --git a/mocks/pkg/types/ccipocr3/execute_plugin_codec.go b/mocks/pkg/types/ccipocr3/execute_plugin_codec.go index 103b18f4c..9c0358d58 100644 --- a/mocks/pkg/types/ccipocr3/execute_plugin_codec.go +++ b/mocks/pkg/types/ccipocr3/execute_plugin_codec.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.50.0. DO NOT EDIT. +// Code generated by mockery v2.43.2. DO NOT EDIT. package ccipocr3 diff --git a/mocks/pkg/types/ccipocr3/extra_data_codec.go b/mocks/pkg/types/ccipocr3/extra_data_codec.go index 78b9ad05e..c775f4803 100644 --- a/mocks/pkg/types/ccipocr3/extra_data_codec.go +++ b/mocks/pkg/types/ccipocr3/extra_data_codec.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.50.0. DO NOT EDIT. +// Code generated by mockery v2.43.2. DO NOT EDIT. package ccipocr3 diff --git a/pkg/types/ccipocr3/interfaces.go b/pkg/types/ccipocr3/interfaces.go index 5321b7927..f5fabb108 100644 --- a/pkg/types/ccipocr3/interfaces.go +++ b/pkg/types/ccipocr3/interfaces.go @@ -23,7 +23,7 @@ type MessageHasher interface { type ExtraDataCodec interface { // DecodeExtraArgs reformat bytes into a chain agnostic map[string]any representation for extra args DecodeExtraArgs(extraArgs Bytes, sourceChainSelector ChainSelector) (map[string]any, error) - // DecodeTokenAmountDestExecData provide special treatment for DestExecData in token message depends on source chain + // DecodeTokenAmountDestExecData reformat bytes into a chain agnostic map[string]any representation for tokenAmount DestExecData field DecodeTokenAmountDestExecData(destExecData Bytes, sourceChainSelector ChainSelector) (map[string]any, error) } From 1651910cdbbde721281f61b23f7df6497c728ed5 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Thu, 23 Jan 2025 15:42:02 -0600 Subject: [PATCH 12/20] update comments --- pkg/types/ccipocr3/interfaces.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/types/ccipocr3/interfaces.go b/pkg/types/ccipocr3/interfaces.go index f5fabb108..6a991bacb 100644 --- a/pkg/types/ccipocr3/interfaces.go +++ b/pkg/types/ccipocr3/interfaces.go @@ -23,7 +23,7 @@ type MessageHasher interface { type ExtraDataCodec interface { // DecodeExtraArgs reformat bytes into a chain agnostic map[string]any representation for extra args DecodeExtraArgs(extraArgs Bytes, sourceChainSelector ChainSelector) (map[string]any, error) - // DecodeTokenAmountDestExecData reformat bytes into a chain agnostic map[string]any representation for tokenAmount DestExecData field + // DecodeTokenAmountDestExecData reformat bytes to chain-agnostic map[string]any for tokenAmount DestExecData field DecodeTokenAmountDestExecData(destExecData Bytes, sourceChainSelector ChainSelector) (map[string]any, error) } From d8d484b845cd33676a29b12f3528e2143d6ea94c Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Fri, 24 Jan 2025 12:30:45 -0600 Subject: [PATCH 13/20] test --- pkg/reader/ccip.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/reader/ccip.go b/pkg/reader/ccip.go index 3f9338d21..424315611 100644 --- a/pkg/reader/ccip.go +++ b/pkg/reader/ccip.go @@ -371,6 +371,7 @@ func (r *ccipChainReader) MsgsBetweenSeqNums( if err != nil { return nil, fmt.Errorf("failed to decode ExtraArgs: %w", err) } + msg.Message.Header.OnRamp = onRampAddress for i, tokenAmount := range msg.Message.TokenAmounts { From ec30b09ebddaab5701bdf29c024af4fb5a454b25 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Fri, 24 Jan 2025 12:34:38 -0600 Subject: [PATCH 14/20] update --- pkg/reader/ccip.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/reader/ccip.go b/pkg/reader/ccip.go index 424315611..3f9338d21 100644 --- a/pkg/reader/ccip.go +++ b/pkg/reader/ccip.go @@ -371,7 +371,6 @@ func (r *ccipChainReader) MsgsBetweenSeqNums( if err != nil { return nil, fmt.Errorf("failed to decode ExtraArgs: %w", err) } - msg.Message.Header.OnRamp = onRampAddress for i, tokenAmount := range msg.Message.TokenAmounts { From 491f9ecbc8f0f08ed7413f2629b30bdf046e48da Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Fri, 24 Jan 2025 12:36:20 -0600 Subject: [PATCH 15/20] t --- pkg/reader/ccip.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/reader/ccip.go b/pkg/reader/ccip.go index 3f9338d21..424315611 100644 --- a/pkg/reader/ccip.go +++ b/pkg/reader/ccip.go @@ -371,6 +371,7 @@ func (r *ccipChainReader) MsgsBetweenSeqNums( if err != nil { return nil, fmt.Errorf("failed to decode ExtraArgs: %w", err) } + msg.Message.Header.OnRamp = onRampAddress for i, tokenAmount := range msg.Message.TokenAmounts { From fff689a7994b3bd1495f815c3cec6a5539eece49 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Fri, 24 Jan 2025 16:51:44 -0600 Subject: [PATCH 16/20] reformat --- pkg/reader/ccip.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkg/reader/ccip.go b/pkg/reader/ccip.go index 424315611..6d1f9623c 100644 --- a/pkg/reader/ccip.go +++ b/pkg/reader/ccip.go @@ -375,14 +375,13 @@ func (r *ccipChainReader) MsgsBetweenSeqNums( msg.Message.Header.OnRamp = onRampAddress for i, tokenAmount := range msg.Message.TokenAmounts { - tokenAmount.DestExecDataDecoded, err = r.extraDataCodec.DecodeTokenAmountDestExecData( + msg.Message.TokenAmounts[i].DestExecDataDecoded, err = r.extraDataCodec.DecodeTokenAmountDestExecData( tokenAmount.DestExecData, sourceChainSelector, ) if err != nil { return nil, fmt.Errorf("failed to decode token amount destExecData (%v): %w", tokenAmount.DestExecData, err) } - msg.Message.TokenAmounts[i] = tokenAmount } msgs = append(msgs, msg.Message) } From 388ce074decbe9c5b2a10421a89e2eed3e5afdbf Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Mon, 27 Jan 2025 23:55:17 -0600 Subject: [PATCH 17/20] leave original func to prevent breaking change --- mocks/pkg/types/ccipocr3/extra_data_codec.go | 59 ++++++++++++++++++++ pkg/reader/ccip.go | 2 +- pkg/types/ccipocr3/interfaces.go | 2 + 3 files changed, 62 insertions(+), 1 deletion(-) diff --git a/mocks/pkg/types/ccipocr3/extra_data_codec.go b/mocks/pkg/types/ccipocr3/extra_data_codec.go index c775f4803..3968fee68 100644 --- a/mocks/pkg/types/ccipocr3/extra_data_codec.go +++ b/mocks/pkg/types/ccipocr3/extra_data_codec.go @@ -79,6 +79,65 @@ func (_c *MockExtraDataCodec_DecodeExtraArgs_Call) RunAndReturn(run func(ccipocr return _c } +// DecodeExtraData provides a mock function with given fields: extraArgs, sourceChainSelector +func (_m *MockExtraDataCodec) DecodeExtraData(extraArgs ccipocr3.Bytes, sourceChainSelector ccipocr3.ChainSelector) (map[string]interface{}, error) { + ret := _m.Called(extraArgs, sourceChainSelector) + + if len(ret) == 0 { + panic("no return value specified for DecodeExtraData") + } + + var r0 map[string]interface{} + var r1 error + if rf, ok := ret.Get(0).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) (map[string]interface{}, error)); ok { + return rf(extraArgs, sourceChainSelector) + } + if rf, ok := ret.Get(0).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) map[string]interface{}); ok { + r0 = rf(extraArgs, sourceChainSelector) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(map[string]interface{}) + } + } + + if rf, ok := ret.Get(1).(func(ccipocr3.Bytes, ccipocr3.ChainSelector) error); ok { + r1 = rf(extraArgs, sourceChainSelector) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockExtraDataCodec_DecodeExtraData_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DecodeExtraData' +type MockExtraDataCodec_DecodeExtraData_Call struct { + *mock.Call +} + +// DecodeExtraData is a helper method to define mock.On call +// - extraArgs ccipocr3.Bytes +// - sourceChainSelector ccipocr3.ChainSelector +func (_e *MockExtraDataCodec_Expecter) DecodeExtraData(extraArgs interface{}, sourceChainSelector interface{}) *MockExtraDataCodec_DecodeExtraData_Call { + return &MockExtraDataCodec_DecodeExtraData_Call{Call: _e.mock.On("DecodeExtraData", extraArgs, sourceChainSelector)} +} + +func (_c *MockExtraDataCodec_DecodeExtraData_Call) Run(run func(extraArgs ccipocr3.Bytes, sourceChainSelector ccipocr3.ChainSelector)) *MockExtraDataCodec_DecodeExtraData_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(ccipocr3.Bytes), args[1].(ccipocr3.ChainSelector)) + }) + return _c +} + +func (_c *MockExtraDataCodec_DecodeExtraData_Call) Return(_a0 map[string]interface{}, _a1 error) *MockExtraDataCodec_DecodeExtraData_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockExtraDataCodec_DecodeExtraData_Call) RunAndReturn(run func(ccipocr3.Bytes, ccipocr3.ChainSelector) (map[string]interface{}, error)) *MockExtraDataCodec_DecodeExtraData_Call { + _c.Call.Return(run) + return _c +} + // DecodeTokenAmountDestExecData provides a mock function with given fields: destExecData, sourceChainSelector func (_m *MockExtraDataCodec) DecodeTokenAmountDestExecData(destExecData ccipocr3.Bytes, sourceChainSelector ccipocr3.ChainSelector) (map[string]interface{}, error) { ret := _m.Called(destExecData, sourceChainSelector) diff --git a/pkg/reader/ccip.go b/pkg/reader/ccip.go index 6d1f9623c..392b1a75d 100644 --- a/pkg/reader/ccip.go +++ b/pkg/reader/ccip.go @@ -367,7 +367,7 @@ func (r *ccipChainReader) MsgsBetweenSeqNums( return nil, fmt.Errorf("failed to cast %v to Message", item.Data) } - msg.Message.ExtraArgsDecoded, err = r.extraDataCodec.DecodeExtraArgs(msg.Message.ExtraArgs, sourceChainSelector) + msg.Message.ExtraArgsDecoded, err = r.extraDataCodec.DecodeExtraData(msg.Message.ExtraArgs, sourceChainSelector) if err != nil { return nil, fmt.Errorf("failed to decode ExtraArgs: %w", err) } diff --git a/pkg/types/ccipocr3/interfaces.go b/pkg/types/ccipocr3/interfaces.go index 6a991bacb..23aaf9d9f 100644 --- a/pkg/types/ccipocr3/interfaces.go +++ b/pkg/types/ccipocr3/interfaces.go @@ -21,6 +21,8 @@ type MessageHasher interface { } type ExtraDataCodec interface { + // Deprecated: DecodeExtraData reformat bytes into a chain agnostic map[string]any representation for extra args + DecodeExtraData(extraArgs Bytes, sourceChainSelector ChainSelector) (map[string]any, error) // DecodeExtraArgs reformat bytes into a chain agnostic map[string]any representation for extra args DecodeExtraArgs(extraArgs Bytes, sourceChainSelector ChainSelector) (map[string]any, error) // DecodeTokenAmountDestExecData reformat bytes to chain-agnostic map[string]any for tokenAmount DestExecData field From 1ce522c187392d0e75719bb924f6bd3bc324b60e Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Tue, 28 Jan 2025 09:36:54 -0600 Subject: [PATCH 18/20] update comment --- pkg/types/ccipocr3/interfaces.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/types/ccipocr3/interfaces.go b/pkg/types/ccipocr3/interfaces.go index 23aaf9d9f..28ba57fcd 100644 --- a/pkg/types/ccipocr3/interfaces.go +++ b/pkg/types/ccipocr3/interfaces.go @@ -21,7 +21,7 @@ type MessageHasher interface { } type ExtraDataCodec interface { - // Deprecated: DecodeExtraData reformat bytes into a chain agnostic map[string]any representation for extra args + // DecodeExtraData reformat bytes into a chain agnostic map[string]any representation for extra args. This function will be deprecated and replaced with DecodeExtraArgs DecodeExtraData(extraArgs Bytes, sourceChainSelector ChainSelector) (map[string]any, error) // DecodeExtraArgs reformat bytes into a chain agnostic map[string]any representation for extra args DecodeExtraArgs(extraArgs Bytes, sourceChainSelector ChainSelector) (map[string]any, error) From 3a25b443e21d0ece067bfd50a674eb97fccff21c Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Tue, 28 Jan 2025 09:39:41 -0600 Subject: [PATCH 19/20] update comment --- pkg/types/ccipocr3/interfaces.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/types/ccipocr3/interfaces.go b/pkg/types/ccipocr3/interfaces.go index 28ba57fcd..0b90969d4 100644 --- a/pkg/types/ccipocr3/interfaces.go +++ b/pkg/types/ccipocr3/interfaces.go @@ -21,7 +21,8 @@ type MessageHasher interface { } type ExtraDataCodec interface { - // DecodeExtraData reformat bytes into a chain agnostic map[string]any representation for extra args. This function will be deprecated and replaced with DecodeExtraArgs + // DecodeExtraData reformat bytes into a chain agnostic map[string]any representation for extra args. + // This function will be deprecated and replaced with DecodeExtraArgs DecodeExtraData(extraArgs Bytes, sourceChainSelector ChainSelector) (map[string]any, error) // DecodeExtraArgs reformat bytes into a chain agnostic map[string]any representation for extra args DecodeExtraArgs(extraArgs Bytes, sourceChainSelector ChainSelector) (map[string]any, error) From 53e1029e2a3e85a97f34a0415d1ad2f3d79095a3 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Tue, 28 Jan 2025 11:28:13 -0600 Subject: [PATCH 20/20] test ci --- pkg/reader/ccip.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/reader/ccip.go b/pkg/reader/ccip.go index 392b1a75d..a70d1e46b 100644 --- a/pkg/reader/ccip.go +++ b/pkg/reader/ccip.go @@ -369,7 +369,7 @@ func (r *ccipChainReader) MsgsBetweenSeqNums( msg.Message.ExtraArgsDecoded, err = r.extraDataCodec.DecodeExtraData(msg.Message.ExtraArgs, sourceChainSelector) if err != nil { - return nil, fmt.Errorf("failed to decode ExtraArgs: %w", err) + return nil, fmt.Errorf("failed to decode the ExtraArgs: %w", err) } msg.Message.Header.OnRamp = onRampAddress