5
5
6
6
"github.com/ethereum-optimism/optimism/devnet-sdk/descriptors"
7
7
"github.com/ethereum-optimism/optimism/kurtosis-devnet/pkg/kurtosis/sources/inspect"
8
+ "github.com/ethereum-optimism/optimism/kurtosis-devnet/pkg/kurtosis/sources/spec"
8
9
"github.com/stretchr/testify/assert"
9
10
)
10
11
@@ -30,7 +31,7 @@ func TestFindRPCEndpoints(t *testing.T) {
30
31
"tcp-discovery" : {Port : 53504 },
31
32
}
32
33
33
- testServices ["op-el-1-op-geth-op-node-op-kurtosis " ] = inspect.PortMap {
34
+ testServices ["op-el-1-op-geth-op-node-1234 " ] = inspect.PortMap {
34
35
"udp-discovery" : {Port : 53233 },
35
36
"engine-rpc" : {Port : 53399 },
36
37
"metrics" : {Port : 53400 },
@@ -95,7 +96,13 @@ func TestFindRPCEndpoints(t *testing.T) {
95
96
name : "find op-kurtosis L2 endpoints" ,
96
97
services : testServices ,
97
98
findFn : func (f * ServiceFinder ) ([]descriptors.Node , descriptors.ServiceMap ) {
98
- return f .FindL2Services ("op-kurtosis" )
99
+ return f .FindL2Services (ChainSpec {
100
+ ChainSpec : spec.ChainSpec {
101
+ Name : "op-kurtosis" ,
102
+ NetworkID : "1234" ,
103
+ },
104
+ DepSets : map [string ]descriptors.DepSet {},
105
+ })
99
106
},
100
107
wantNodes : []descriptors.Node {
101
108
{
@@ -109,7 +116,7 @@ func TestFindRPCEndpoints(t *testing.T) {
109
116
},
110
117
},
111
118
"el" : & descriptors.Service {
112
- Name : "op-el-1-op-geth-op-node-op-kurtosis " ,
119
+ Name : "op-el-1-op-geth-op-node-1234 " ,
113
120
Endpoints : descriptors.EndpointMap {
114
121
"udp-discovery" : {Port : 53233 },
115
122
"engine-rpc" : {Port : 53399 },
@@ -139,7 +146,13 @@ func TestFindRPCEndpoints(t *testing.T) {
139
146
},
140
147
},
141
148
findFn : func (f * ServiceFinder ) ([]descriptors.Node , descriptors.ServiceMap ) {
142
- return f .FindL2Services ("custom-host" )
149
+ return f .FindL2Services (ChainSpec {
150
+ ChainSpec : spec.ChainSpec {
151
+ Name : "custom-host" ,
152
+ NetworkID : "0000" ,
153
+ },
154
+ DepSets : map [string ]descriptors.DepSet {},
155
+ })
143
156
},
144
157
wantNodes : nil ,
145
158
wantServices : descriptors.ServiceMap {
@@ -155,7 +168,12 @@ func TestFindRPCEndpoints(t *testing.T) {
155
168
156
169
for _ , tt := range tests {
157
170
t .Run (tt .name , func (t * testing.T ) {
158
- finder := NewServiceFinder (tt .services , WithL2Networks ([]string {"op-kurtosis" , "network1" , "network2" , "custom-host" }))
171
+ finder := NewServiceFinder (tt .services , WithL2Networks ([]ChainSpec {
172
+ {ChainSpec : spec.ChainSpec {Name : "op-kurtosis" , NetworkID : "1234" }},
173
+ {ChainSpec : spec.ChainSpec {Name : "network1" , NetworkID : "1111" }},
174
+ {ChainSpec : spec.ChainSpec {Name : "network2" , NetworkID : "2222" }},
175
+ {ChainSpec : spec.ChainSpec {Name : "custom-host" , NetworkID : "0000" }},
176
+ }))
159
177
gotNodes , gotServices := tt .findFn (finder )
160
178
assert .Equal (t , tt .wantNodes , gotNodes )
161
179
assert .Equal (t , tt .wantServices , gotServices )
@@ -164,6 +182,28 @@ func TestFindRPCEndpoints(t *testing.T) {
164
182
}
165
183
166
184
func TestFindL2ServicesSkipsOtherNetworks (t * testing.T ) {
185
+ n1 := ChainSpec {
186
+ ChainSpec : spec.ChainSpec {
187
+ Name : "network1" ,
188
+ NetworkID : "1111" ,
189
+ },
190
+ DepSets : map [string ]descriptors.DepSet {},
191
+ }
192
+ n2 := ChainSpec {
193
+ ChainSpec : spec.ChainSpec {
194
+ Name : "network2" ,
195
+ NetworkID : "2222" ,
196
+ },
197
+ DepSets : map [string ]descriptors.DepSet {},
198
+ }
199
+ n3 := ChainSpec {
200
+ ChainSpec : spec.ChainSpec {
201
+ Name : "network3" ,
202
+ NetworkID : "3333" ,
203
+ },
204
+ DepSets : map [string ]descriptors.DepSet {},
205
+ }
206
+
167
207
// Create a service map with services from multiple L2 networks
168
208
services := inspect.ServiceMap {
169
209
// network1 services
@@ -181,7 +221,7 @@ func TestFindL2ServicesSkipsOtherNetworks(t *testing.T) {
181
221
"op-batcher-network2" : inspect.PortMap {
182
222
"http" : {Port : 8081 },
183
223
},
184
- "op-proposer-network2 " : inspect.PortMap {
224
+ "op-proposer-2222 " : inspect.PortMap {
185
225
"http" : {Port : 8083 },
186
226
},
187
227
"op-cl-1-op-node-op-geth-network2" : inspect.PortMap {
@@ -205,15 +245,14 @@ func TestFindL2ServicesSkipsOtherNetworks(t *testing.T) {
205
245
},
206
246
}
207
247
208
- // Create a service finder with all networks configured
209
248
finder := NewServiceFinder (
210
249
services ,
211
- WithL2Networks ([]string { "network1" , "network2" , "network3" }),
250
+ WithL2Networks ([]ChainSpec { n1 , n2 , n3 }),
212
251
)
213
252
214
253
// Test finding services for network2
215
254
t .Run ("find network2 services" , func (t * testing.T ) {
216
- nodes , serviceMap := finder .FindL2Services ("network2" )
255
+ nodes , serviceMap := finder .FindL2Services (n2 )
217
256
218
257
// Verify nodes
219
258
assert .Len (t , nodes , 1 )
@@ -228,7 +267,7 @@ func TestFindL2ServicesSkipsOtherNetworks(t *testing.T) {
228
267
assert .Contains (t , serviceMap , "proposer" )
229
268
assert .Contains (t , serviceMap , "common-service" )
230
269
assert .Equal (t , "op-batcher-network2" , serviceMap ["batcher" ].Name )
231
- assert .Equal (t , "op-proposer-network2 " , serviceMap ["proposer" ].Name )
270
+ assert .Equal (t , "op-proposer-2222 " , serviceMap ["proposer" ].Name )
232
271
assert .Equal (t , "op-common-service" , serviceMap ["common-service" ].Name )
233
272
234
273
// Verify network1 and network3 services are not included
@@ -240,7 +279,13 @@ func TestFindL2ServicesSkipsOtherNetworks(t *testing.T) {
240
279
241
280
// Test with a network that doesn't exist
242
281
t .Run ("find non-existent network services" , func (t * testing.T ) {
243
- nodes , serviceMap := finder .FindL2Services ("non-existent" )
282
+ nodes , serviceMap := finder .FindL2Services (ChainSpec {
283
+ ChainSpec : spec.ChainSpec {
284
+ Name : "non-existent" ,
285
+ NetworkID : "plop" ,
286
+ },
287
+ DepSets : map [string ]descriptors.DepSet {},
288
+ })
244
289
245
290
// Should only find common services
246
291
assert .Len (t , nodes , 0 )
@@ -311,3 +356,88 @@ func TestServiceTag(t *testing.T) {
311
356
})
312
357
}
313
358
}
359
+
360
+ func TestFindL2ServicesWithSupervisors (t * testing.T ) {
361
+ // Create dependency sets as raw JSON
362
+ depSet1 := []byte (`{"dependencies":{"1111":{"activationTime":0,"chainIndex":"1111","historyMinTime":0}}}` )
363
+ depSet2 := []byte (`{"dependencies":{"2222":{"activationTime":0,"chainIndex":"2222","historyMinTime":0}}}` )
364
+
365
+ // Create test services with supervisors for different networks
366
+ services := inspect.ServiceMap {
367
+ // Network1 supervisor with depSet1
368
+ "op-supervisor-depset1" : inspect.PortMap {
369
+ "rpc" : {Port : 8080 },
370
+ },
371
+ // Network2 supervisor with depSet2
372
+ "op-supervisor-depset2" : inspect.PortMap {
373
+ "rpc" : {Port : 8081 },
374
+ },
375
+ // extra supervisor
376
+ "op-supervisor-depset3" : inspect.PortMap {
377
+ "rpc" : {Port : 8083 },
378
+ },
379
+ }
380
+
381
+ // Create chain specs for the networks
382
+ n1 := ChainSpec {
383
+ ChainSpec : spec.ChainSpec {
384
+ Name : "network1" ,
385
+ NetworkID : "1111" ,
386
+ },
387
+ DepSets : map [string ]descriptors.DepSet {
388
+ "depset1" : depSet1 ,
389
+ },
390
+ }
391
+ n2 := ChainSpec {
392
+ ChainSpec : spec.ChainSpec {
393
+ Name : "network2" ,
394
+ NetworkID : "2222" ,
395
+ },
396
+ DepSets : map [string ]descriptors.DepSet {
397
+ "depset2" : depSet2 ,
398
+ },
399
+ }
400
+
401
+ finder := NewServiceFinder (
402
+ services ,
403
+ WithL2Networks ([]ChainSpec {n1 , n2 }),
404
+ )
405
+
406
+ tests := []struct {
407
+ name string
408
+ chainSpec ChainSpec
409
+ wantName string
410
+ wantPort int
411
+ }{
412
+ {
413
+ name : "network1 supervisor" ,
414
+ chainSpec : n1 ,
415
+ wantName : "op-supervisor-depset1" ,
416
+ wantPort : 8080 ,
417
+ },
418
+ {
419
+ name : "network2 supervisor" ,
420
+ chainSpec : n2 ,
421
+ wantName : "op-supervisor-depset2" ,
422
+ wantPort : 8081 ,
423
+ },
424
+ }
425
+
426
+ for _ , tt := range tests {
427
+ t .Run (tt .name , func (t * testing.T ) {
428
+ _ , serviceMap := finder .FindL2Services (tt .chainSpec )
429
+
430
+ // Debug output
431
+ t .Logf ("Service map: %+v" , serviceMap )
432
+ for k , v := range serviceMap {
433
+ t .Logf ("Service %s: %+v" , k , v )
434
+ }
435
+
436
+ // Verify supervisor services
437
+ assert .Len (t , serviceMap , 1 ) // just the supervisor service
438
+ assert .Contains (t , serviceMap , "supervisor" )
439
+ assert .Equal (t , tt .wantName , serviceMap ["supervisor" ].Name )
440
+ assert .Equal (t , tt .wantPort , serviceMap ["supervisor" ].Endpoints ["rpc" ].Port )
441
+ })
442
+ }
443
+ }
0 commit comments