Skip to content

Commit 1a0b9f2

Browse files
Fix Keystone View test flake (#17671)
* Fixes test flake * Fixes lint
1 parent bfe558a commit 1a0b9f2

File tree

1 file changed

+57
-17
lines changed

1 file changed

+57
-17
lines changed

deployment/keystone/changeset/view_test.go

Lines changed: 57 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import (
1212

1313
chain_selectors "github.com/smartcontractkit/chain-selectors"
1414
"github.com/smartcontractkit/chainlink-deployments-framework/datastore"
15+
"github.com/smartcontractkit/chainlink-deployments-framework/deployment"
16+
capabilities_registry "github.com/smartcontractkit/chainlink-evm/gethwrappers/keystone/generated/capabilities_registry_1_1_0"
1517

1618
"github.com/smartcontractkit/chainlink/deployment/keystone/changeset"
1719
"github.com/smartcontractkit/chainlink/deployment/keystone/changeset/internal"
@@ -53,16 +55,16 @@ func TestKeystoneView(t *testing.T) {
5355
WriterDonConfig: test.DonConfig{N: 4, Name: "writerDon"},
5456
NumChains: 1,
5557
})
56-
registryChain := env.Env.AllChainSelectors()[0]
58+
originalAddressBook := env.Env.ExistingAddresses
5759
oracleConfig.TransmissionSchedule = []int{len(env.Env.NodeIDs)}
5860

5961
addrs := env.Env.DataStore.Addresses().Filter(
60-
datastore.AddressRefByChainSelector(registryChain),
62+
datastore.AddressRefByChainSelector(env.RegistrySelector),
6163
)
6264

6365
var newOCR3Addr, newForwarderAddr, newWorkflowRegistryAddr, newCapabilityRegistryAddr string
6466
for _, addr := range addrs {
65-
if newForwarderAddr != "" && newOCR3Addr != "" {
67+
if newForwarderAddr != "" && newOCR3Addr != "" && newWorkflowRegistryAddr != "" && newCapabilityRegistryAddr != "" {
6668
break
6769
}
6870
switch addr.Type {
@@ -108,7 +110,7 @@ func TestKeystoneView(t *testing.T) {
108110
var outView changeset.KeystoneView
109111
require.NoError(t, json.Unmarshal(b, &outView))
110112

111-
chainID, err := chain_selectors.ChainIdFromSelector(registryChain)
113+
chainID, err := chain_selectors.ChainIdFromSelector(env.RegistrySelector)
112114
require.NoError(t, err)
113115
chainName, err := chain_selectors.NameFromChainId(chainID)
114116
require.NoError(t, err)
@@ -131,48 +133,54 @@ func TestKeystoneView(t *testing.T) {
131133
t.Run("successfully generates a view of the keystone state with multiple contracts of the same type per chain",
132134
func(t *testing.T) {
133135
oracleConfigCopy := oracleConfig
136+
var localAddrsBook deployment.AddressBook
134137

135138
// Deploy a new forwarder contract
136-
resp, err := changeset.DeployForwarderV2(env.Env, &changeset.DeployRequestV2{ChainSel: registryChain})
139+
resp, err := changeset.DeployForwarderV2(env.Env, &changeset.DeployRequestV2{ChainSel: env.RegistrySelector})
137140
require.NoError(t, err)
138141
require.NotNil(t, resp)
139142
require.NoError(t, resp.DataStore.Merge(env.Env.DataStore))
140143
//nolint:staticcheck // Temporarily using deprecated AddressBook until migration is complete
141-
require.NoError(t, env.Env.ExistingAddresses.Merge(resp.AddressBook))
144+
localAddrsBook = resp.AddressBook
142145
env.Env.DataStore = resp.DataStore.Seal()
143146

144147
// Deploy a new workflow registry contract
145-
resp, err = workflowregistry.DeployV2(env.Env, &changeset.DeployRequestV2{ChainSel: registryChain})
148+
resp, err = workflowregistry.DeployV2(env.Env, &changeset.DeployRequestV2{ChainSel: env.RegistrySelector})
146149
require.NoError(t, err)
147150
require.NotNil(t, resp)
148151
require.NoError(t, resp.DataStore.Merge(env.Env.DataStore))
149152
//nolint:staticcheck // Temporarily using deprecated AddressBook until migration is complete
150-
require.NoError(t, env.Env.ExistingAddresses.Merge(resp.AddressBook))
153+
require.NoError(t, localAddrsBook.Merge(resp.AddressBook))
151154
env.Env.DataStore = resp.DataStore.Seal()
152155

153156
// Deploy a new OCR3 contract
154-
resp, err = changeset.DeployOCR3V2(env.Env, &changeset.DeployRequestV2{ChainSel: registryChain})
157+
resp, err = changeset.DeployOCR3V2(env.Env, &changeset.DeployRequestV2{ChainSel: env.RegistrySelector})
155158
require.NoError(t, err)
156159
require.NotNil(t, resp)
157160
require.NoError(t, resp.DataStore.Merge(env.Env.DataStore))
158161
//nolint:staticcheck // Temporarily using deprecated AddressBook until migration is complete
159-
require.NoError(t, env.Env.ExistingAddresses.Merge(resp.AddressBook))
162+
require.NoError(t, localAddrsBook.Merge(resp.AddressBook))
160163
env.Env.DataStore = resp.DataStore.Seal()
161164

162165
// Deploy a new capability registry contract
163-
resp, err = changeset.DeployCapabilityRegistryV2(env.Env, &changeset.DeployRequestV2{ChainSel: registryChain})
166+
resp, err = changeset.DeployCapabilityRegistryV2(env.Env, &changeset.DeployRequestV2{ChainSel: env.RegistrySelector})
164167
require.NoError(t, err)
165168
require.NotNil(t, resp)
166169
require.NoError(t, resp.DataStore.Merge(env.Env.DataStore))
167170
//nolint:staticcheck // Temporarily using deprecated AddressBook until migration is complete
168-
require.NoError(t, env.Env.ExistingAddresses.Merge(resp.AddressBook))
171+
require.NoError(t, localAddrsBook.Merge(resp.AddressBook))
172+
169173
env.Env.DataStore = resp.DataStore.Seal()
174+
env.Env.ExistingAddresses = localAddrsBook
170175

171176
var ocr3Addr, forwarderAddr, workflowRegistryAddr, capabilityRegistryAddr string
172177
existingAddrs := env.Env.DataStore.Addresses().Filter(
173-
datastore.AddressRefByChainSelector(registryChain),
178+
datastore.AddressRefByChainSelector(env.RegistrySelector),
174179
)
175180
for _, addr := range existingAddrs {
181+
if ocr3Addr != "" && forwarderAddr != "" && workflowRegistryAddr != "" && capabilityRegistryAddr != "" {
182+
break
183+
}
176184
switch addr.Type {
177185
case datastore.ContractType(internal.OCR3Capability):
178186
if addr.Address != newOCR3Addr {
@@ -211,12 +219,43 @@ func TestKeystoneView(t *testing.T) {
211219
_, err = changeset.ConfigureOCR3Contract(env.Env, cfg)
212220
require.NoError(t, err)
213221

222+
ocr3CapCfg := test.GetDefaultCapConfig(t, internal.OCR3Cap)
223+
214224
var wfNodes []string
215225
for _, id := range env.GetP2PIDs("wfDon") {
216226
wfNodes = append(wfNodes, id.String())
217227
}
228+
229+
wfDonCapabilities := internal.DonCapabilities{
230+
Name: "wfDon",
231+
Nops: []internal.NOP{
232+
{
233+
Name: "nop 1",
234+
Nodes: wfNodes,
235+
},
236+
},
237+
Capabilities: []internal.DONCapabilityWithConfig{
238+
{Capability: internal.OCR3Cap, Config: ocr3CapCfg},
239+
},
240+
}
241+
var allDons = []internal.DonCapabilities{wfDonCapabilities}
242+
cr, err := changeset.GetOwnedContractV2[*capabilities_registry.CapabilitiesRegistry](
243+
env.Env.DataStore.Addresses(), env.Env.Chains[env.RegistrySelector], capabilityRegistryAddr,
244+
)
245+
require.NoError(t, err)
246+
247+
_, err = internal.ConfigureRegistry(t.Context(), env.Env.Logger, &internal.ConfigureRegistryRequest{
248+
ConfigureContractsRequest: internal.ConfigureContractsRequest{
249+
RegistryChainSel: env.RegistrySelector,
250+
Env: &env.Env,
251+
Dons: allDons,
252+
},
253+
CapabilitiesRegistry: cr.Contract,
254+
}, nil)
255+
require.NoError(t, err)
256+
218257
_, err = changeset.ConfigureForwardContracts(env.Env, changeset.ConfigureForwardContractsRequest{
219-
WFDonName: "test-wf-don",
258+
WFDonName: "wfDon",
220259
WFNodeIDs: wfNodes,
221260
RegistryChainSel: env.RegistrySelector,
222261
})
@@ -232,7 +271,7 @@ func TestKeystoneView(t *testing.T) {
232271
var outView changeset.KeystoneView
233272
require.NoError(t, json.Unmarshal(b, &outView))
234273

235-
chainID, err := chain_selectors.ChainIdFromSelector(registryChain)
274+
chainID, err := chain_selectors.ChainIdFromSelector(env.RegistrySelector)
236275
require.NoError(t, err)
237276
chainName, err := chain_selectors.NameFromChainId(chainID)
238277
require.NoError(t, err)
@@ -261,7 +300,7 @@ func TestKeystoneView(t *testing.T) {
261300

262301
t.Run("generates a partial view of the keystone state with OCR3 not configured", func(t *testing.T) {
263302
// Deploy a new OCR3 contract
264-
resp, err := changeset.DeployOCR3(env.Env, registryChain)
303+
resp, err := changeset.DeployOCR3(env.Env, env.RegistrySelector)
265304
require.NoError(t, err)
266305
require.NotNil(t, resp)
267306
require.NoError(t, env.Env.ExistingAddresses.Merge(resp.AddressBook))
@@ -275,7 +314,7 @@ func TestKeystoneView(t *testing.T) {
275314

276315
var outView changeset.KeystoneView
277316
require.NoError(t, json.Unmarshal(b, &outView))
278-
chainID, err := chain_selectors.ChainIdFromSelector(registryChain)
317+
chainID, err := chain_selectors.ChainIdFromSelector(env.RegistrySelector)
279318
require.NoError(t, err)
280319
chainName, err := chain_selectors.NameFromChainId(chainID)
281320
require.NoError(t, err)
@@ -290,6 +329,7 @@ func TestKeystoneView(t *testing.T) {
290329
})
291330

292331
t.Run("fails to generate a view of the keystone state with a bad OracleConfig", func(t *testing.T) {
332+
env.Env.ExistingAddresses = originalAddressBook
293333
oracleConfigCopy := oracleConfig
294334
oracleConfigCopy.DeltaRoundMillis = 0
295335
oracleConfigCopy.DeltaProgressMillis = 0

0 commit comments

Comments
 (0)