Skip to content

Commit d501b9a

Browse files
authored
[CRE-491] Prepare relay/evm files to be moved to chainlink-evm (#22650)
* Minor. * Minor. * Minor. * Minor.
1 parent 6ce4009 commit d501b9a

5 files changed

Lines changed: 128 additions & 39 deletions

File tree

.mockery.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,11 @@ packages:
232232
dir: "core/services/relay/evm/types/mocks"
233233
interfaces:
234234
LogPollerWrapper:
235+
github.com/smartcontractkit/chainlink-evm/pkg/keys:
236+
config:
237+
dir: "core/services/relay/evm/types/mocks"
238+
interfaces:
239+
AddressLister:
235240
github.com/smartcontractkit/chainlink/v2/core/services/s4:
236241
interfaces:
237242
ORM:

core/services/relay/evm/config_poller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,10 @@ type CPConfig struct {
7070
}
7171

7272
func NewConfigPoller(ctx context.Context, lggr logger.Logger, cfg CPConfig) (config.ConfigPoller, error) {
73-
return newConfigPoller(ctx, lggr, cfg.Client, cfg.DestinationChainPoller, cfg.AggregatorContractAddress, cfg.ConfigStoreAddress, cfg.LogDecoder)
73+
return NewConfigPollerWithParams(ctx, lggr, cfg.Client, cfg.DestinationChainPoller, cfg.AggregatorContractAddress, cfg.ConfigStoreAddress, cfg.LogDecoder)
7474
}
7575

76-
func newConfigPoller(ctx context.Context, lggr logger.Logger, client client.Client, destChainPoller logpoller.LogPoller, aggregatorContractAddr common.Address, configStoreAddr *common.Address, ld LogDecoder) (*configPoller, error) {
76+
func NewConfigPollerWithParams(ctx context.Context, lggr logger.Logger, client client.Client, destChainPoller logpoller.LogPoller, aggregatorContractAddr common.Address, configStoreAddr *common.Address, ld LogDecoder) (config.ConfigPoller, error) {
7777
err := destChainPoller.RegisterFilter(ctx, logpoller.Filter{Name: configPollerFilterName(aggregatorContractAddr), EventSigs: []common.Hash{ld.EventSig()}, Addresses: []common.Address{aggregatorContractAddr}})
7878
if err != nil {
7979
return nil, err

core/services/relay/evm/config_poller_test.go

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package evm
1+
package evm_test
22

33
import (
44
"database/sql"
@@ -41,6 +41,7 @@ import (
4141

4242
"github.com/smartcontractkit/chainlink/v2/common/logpoller/mocks"
4343
"github.com/smartcontractkit/chainlink/v2/core/services/ocr2/testhelpers"
44+
"github.com/smartcontractkit/chainlink/v2/core/services/relay/evm"
4445
"github.com/smartcontractkit/chainlink/v2/core/utils"
4546
)
4647

@@ -60,7 +61,7 @@ func TestConfigPoller(t *testing.T) {
6061
var accessAddress common.Address
6162
ctx := testutils.Context(t)
6263

63-
ld := OCR2AggregatorLogDecoder
64+
ld := evm.OCR2AggregatorLogDecoder
6465

6566
{
6667
key, err := crypto.GenerateKey()
@@ -110,7 +111,7 @@ func TestConfigPoller(t *testing.T) {
110111
}
111112

112113
t.Run("LatestConfig errors if there is no config in logs and config store is unconfigured", func(t *testing.T) {
113-
cp, err := NewConfigPoller(ctx, lggr, CPConfig{ethClient, lp, ocrAddress, nil, ld})
114+
cp, err := evm.NewConfigPoller(ctx, lggr, evm.CPConfig{ethClient, lp, ocrAddress, nil, ld})
114115
require.NoError(t, err)
115116

116117
_, err = cp.LatestConfig(testutils.Context(t), 0)
@@ -119,7 +120,7 @@ func TestConfigPoller(t *testing.T) {
119120
})
120121

121122
t.Run("happy path (with config store)", func(t *testing.T) {
122-
cp, err := NewConfigPoller(ctx, lggr, CPConfig{ethClient, lp, ocrAddress, &configStoreContractAddr, ld})
123+
cp, err := evm.NewConfigPoller(ctx, lggr, evm.CPConfig{ethClient, lp, ocrAddress, &configStoreContractAddr, ld})
123124
require.NoError(t, err)
124125
// Should have no config to begin with.
125126
_, configDigest, err := cp.LatestConfigDetails(testutils.Context(t))
@@ -190,7 +191,7 @@ func TestConfigPoller(t *testing.T) {
190191
mp.On("LatestLogByEventSigWithConfs", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, sql.ErrNoRows)
191192

192193
t.Run("if callLatestConfigDetails succeeds", func(t *testing.T) {
193-
cp, err := newConfigPoller(ctx, lggr, ethClient, mp, ocrAddress, &configStoreContractAddr, ld)
194+
cp, err := evm.NewConfigPollerWithParams(ctx, lggr, ethClient, mp, ocrAddress, &configStoreContractAddr, ld)
194195
require.NoError(t, err)
195196

196197
t.Run("when config has not been set, returns zero values", func(t *testing.T) {
@@ -227,12 +228,9 @@ func TestConfigPoller(t *testing.T) {
227228
failingClient := new(clienttest.Client)
228229
failingClient.On("ConfiguredChainID").Return(big.NewInt(42))
229230
failingClient.On("CallContract", mock.Anything, mock.Anything, mock.Anything).Return(nil, errors.New("something exploded"))
230-
cp, err := newConfigPoller(ctx, lggr, failingClient, mp, ocrAddress, &configStoreContractAddr, ld)
231+
cp, err := evm.NewConfigPollerWithParams(ctx, lggr, failingClient, mp, ocrAddress, &configStoreContractAddr, ld)
231232
require.NoError(t, err)
232233

233-
cp.configStoreContractAddr = &configStoreContractAddr
234-
cp.configStoreContract = configStoreContract
235-
236234
_, _, err = cp.LatestConfigDetails(testutils.Context(t))
237235
assert.EqualError(t, err, "something exploded")
238236

@@ -266,7 +264,7 @@ func TestConfigPoller(t *testing.T) {
266264
mp.On("LatestLogByEventSigWithConfs", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, sql.ErrNoRows)
267265

268266
t.Run("if callReadConfig succeeds", func(t *testing.T) {
269-
cp, err := newConfigPoller(ctx, lggr, ethClient, mp, ocrAddress, &configStoreContractAddr, ld)
267+
cp, err := evm.NewConfigPollerWithParams(ctx, lggr, ethClient, mp, ocrAddress, &configStoreContractAddr, ld)
270268
require.NoError(t, err)
271269

272270
t.Run("when config has not been set, returns error", func(t *testing.T) {
@@ -288,9 +286,9 @@ func TestConfigPoller(t *testing.T) {
288286
DeltaC: 10,
289287
}, ocrContract, user)
290288

291-
signerAddresses, err := OnchainPublicKeyToAddress(contractConfig.Signers)
289+
signerAddresses, err := evm.OnchainPublicKeyToAddress(contractConfig.Signers)
292290
require.NoError(t, err)
293-
transmitterAddresses, err := AccountToAddress(contractConfig.Transmitters)
291+
transmitterAddresses, err := evm.AccountToAddress(contractConfig.Transmitters)
294292
require.NoError(t, err)
295293

296294
configuration := ocrconfigurationstoreevmsimple.OCRConfigurationStoreEVMSimpleConfigurationEVMSimple{
@@ -328,7 +326,7 @@ func TestConfigPoller(t *testing.T) {
328326
// initial call to retrieve config store address from aggregator
329327
return *callArgs.To == ocrAddress
330328
}), mock.Anything).Return(nil, errors.New("something exploded")).Once()
331-
cp, err := newConfigPoller(ctx, lggr, failingClient, mp, ocrAddress, &configStoreContractAddr, ld)
329+
cp, err := evm.NewConfigPollerWithParams(ctx, lggr, failingClient, mp, ocrAddress, &configStoreContractAddr, ld)
332330
require.NoError(t, err)
333331

334332
_, err = cp.LatestConfig(testutils.Context(t), 0)
@@ -377,9 +375,9 @@ func setConfig(t *testing.T, pluginConfig median.OffchainConfig, ocrContract *oc
377375
onchainConfig,
378376
)
379377
require.NoError(t, err)
380-
signerAddresses, err := OnchainPublicKeyToAddress(signers)
378+
signerAddresses, err := evm.OnchainPublicKeyToAddress(signers)
381379
require.NoError(t, err)
382-
transmitterAddresses, err := AccountToAddress(transmitters)
380+
transmitterAddresses, err := evm.AccountToAddress(transmitters)
383381
require.NoError(t, err)
384382
_, err = ocrContract.SetConfig(user, signerAddresses, transmitterAddresses, threshold, onchainConfig, offchainConfigVersion, offchainConfig)
385383
require.NoError(t, err)

core/services/relay/evm/evm_service_test.go

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,13 @@ import (
2424
configmocks "github.com/smartcontractkit/chainlink-evm/pkg/config/mocks"
2525
"github.com/smartcontractkit/chainlink-evm/pkg/heads/headstest"
2626
"github.com/smartcontractkit/chainlink-evm/pkg/logpoller"
27-
evmtestutils "github.com/smartcontractkit/chainlink-evm/pkg/testutils"
2827
"github.com/smartcontractkit/chainlink-evm/pkg/txmgr"
2928
"github.com/smartcontractkit/chainlink-evm/pkg/types"
3029
fwtxmgr "github.com/smartcontractkit/chainlink-framework/chains/txmgr"
3130
evmmocks "github.com/smartcontractkit/chainlink/v2/common/chains/mocks"
3231
lpmocks "github.com/smartcontractkit/chainlink/v2/common/logpoller/mocks"
3332
txmmocks "github.com/smartcontractkit/chainlink/v2/common/txmgr/mocks"
34-
keystoremocks "github.com/smartcontractkit/chainlink/v2/core/services/keystore/mocks"
33+
addressmocks "github.com/smartcontractkit/chainlink/v2/core/services/relay/evm/types/mocks"
3534
)
3635

3736
const ExpectedTxHash = "0xabcd"
@@ -46,7 +45,7 @@ type Mocks struct {
4645
Poller *lpmocks.LogPoller
4746
HeaderTracker *headstest.Tracker[*types.Head, common.Hash]
4847
Relayer *Relayer
49-
KeyStoreMock keyStoreMock
48+
AddressLister *addressmocks.AddressLister
5049
}
5150

5251
type returnedStatusAndReceipts struct {
@@ -64,15 +63,6 @@ func createMockReceipt(t *testing.T) *txmgr.ChainReceipt {
6463
return &receipt
6564
}
6665

67-
type keyStoreMock struct {
68-
chainID *big.Int
69-
*keystoremocks.Eth
70-
}
71-
72-
func (_m keyStoreMock) EnabledAddresses(ctx context.Context) ([]common.Address, error) {
73-
return _m.EnabledAddressesForChain(ctx, _m.chainID)
74-
}
75-
7666
func setupMocksAndRelayer(t *testing.T) (*Mocks, *Relayer) {
7767
chain := evmmocks.NewChain(t)
7868
txManager := txmmocks.NewMockEvmTxManager(t)
@@ -82,8 +72,8 @@ func setupMocksAndRelayer(t *testing.T) (*Mocks, *Relayer) {
8272
evmClient := clienttest.NewClient(t)
8373
poller := lpmocks.NewLogPoller(t)
8474
ht := headstest.NewTracker[*types.Head](t)
85-
ksMock := keyStoreMock{chainID: evmtestutils.FixtureChainID, Eth: keystoremocks.NewEth(t)}
86-
ksMock.Eth.EXPECT().EnabledAddressesForChain(mock.Anything, mock.Anything).Return([]common.Address{createFromAddress().Address()}, nil).Maybe()
75+
addressMock := addressmocks.NewAddressLister(t)
76+
addressMock.EXPECT().EnabledAddresses(mock.Anything).Return([]common.Address{createFromAddress().Address()}, nil).Maybe()
8777
mockEVM.EXPECT().ConfirmationTimeout().Return(2 * time.Second).Maybe()
8878
chain.On("TxManager").Return(txManager).Maybe()
8979
chain.On("LogPoller").Return(poller).Maybe()
@@ -96,7 +86,7 @@ func setupMocksAndRelayer(t *testing.T) (*Mocks, *Relayer) {
9686
require.NoError(t, err)
9787
relayer := &Relayer{
9888
chain: chain,
99-
evmService: evmService{addressLister: ksMock, chain: chain, logger: lggr},
89+
evmService: evmService{addressLister: addressMock, chain: chain, logger: lggr},
10090
}
10191

10292
return &Mocks{
@@ -108,7 +98,7 @@ func setupMocksAndRelayer(t *testing.T) (*Mocks, *Relayer) {
10898
EvmClient: evmClient,
10999
Poller: poller,
110100
HeaderTracker: ht,
111-
KeyStoreMock: ksMock,
101+
AddressLister: addressMock,
112102
}, relayer
113103
}
114104

@@ -390,19 +380,19 @@ func TestEVMService(t *testing.T) {
390380
Name: "Fails with failed to get enabled addresses",
391381
SetupMocks: func(m *Mocks, ctx any) {
392382
// Clear the default expectation first
393-
m.KeyStoreMock.Eth.EXPECT().EnabledAddressesForChain(mock.Anything, mock.Anything).Unset()
383+
m.AddressLister.EXPECT().EnabledAddresses(mock.Anything).Unset()
394384
// Set new expectation
395-
m.KeyStoreMock.EXPECT().EnabledAddressesForChain(mock.Anything, mock.Anything).Return([]common.Address{}, errors.New("some error")).Once()
385+
m.AddressLister.EXPECT().EnabledAddresses(mock.Anything).Return([]common.Address{}, errors.New("some error")).Once()
396386
},
397387
ExpectedError: "failed to get enabled addresses: some error",
398388
},
399389
{
400390
Name: "Fails with no enabled addresses",
401391
SetupMocks: func(m *Mocks, ctx any) {
402392
// Clear the default expectation first
403-
m.KeyStoreMock.Eth.EXPECT().EnabledAddressesForChain(mock.Anything, mock.Anything).Unset()
393+
m.AddressLister.EXPECT().EnabledAddresses(mock.Anything).Unset()
404394
// Set new expectation
405-
m.KeyStoreMock.Eth.EXPECT().EnabledAddressesForChain(mock.Anything, mock.Anything).Return([]common.Address{}, nil).Once()
395+
m.AddressLister.EXPECT().EnabledAddresses(mock.Anything).Return([]common.Address{}, nil).Once()
406396
},
407397
ExpectedError: "no enabled addresses available",
408398
},
@@ -413,8 +403,8 @@ func TestEVMService(t *testing.T) {
413403
lowBalanceAddr := common.HexToAddress("0x333")
414404

415405
// Clear the default expectation and return multiple addresses
416-
m.KeyStoreMock.Eth.EXPECT().EnabledAddressesForChain(mock.Anything, mock.Anything).Unset()
417-
m.KeyStoreMock.Eth.EXPECT().EnabledAddressesForChain(mock.Anything, mock.Anything).Return(
406+
m.AddressLister.EXPECT().EnabledAddresses(mock.Anything).Unset()
407+
m.AddressLister.EXPECT().EnabledAddresses(mock.Anything).Return(
418408
[]common.Address{lowBalanceAddr, highBalanceAddr}, nil,
419409
).Once()
420410

core/services/relay/evm/types/mocks/address_lister.go

Lines changed: 96 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)