Skip to content

Commit 9f710c1

Browse files
authored
Merge pull request #196 from flashbots/feat/contender-target-chain-flag
variable contender targets
2 parents b2cf72f + d27ad27 commit 9f710c1

File tree

6 files changed

+43
-19
lines changed

6 files changed

+43
-19
lines changed

main.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ var disableLogs bool
3232
var platform string
3333
var contenderEnabled bool
3434
var contenderArgs []string
35+
var contenderTarget string
3536

3637
var rootCmd = &cobra.Command{
3738
Use: "playground",
@@ -183,6 +184,7 @@ func main() {
183184
recipeCmd.Flags().StringVar(&platform, "platform", "", "docker platform to use")
184185
recipeCmd.Flags().BoolVar(&contenderEnabled, "contender", false, "spam nodes with contender")
185186
recipeCmd.Flags().StringArrayVar(&contenderArgs, "contender.arg", []string{}, "add/override contender CLI flags")
187+
recipeCmd.Flags().StringVar(&contenderTarget, "contender.target", "", "override the node that contender spams -- accepts names like \"el\"")
186188

187189
cookCmd.AddCommand(recipeCmd)
188190
}
@@ -232,8 +234,9 @@ func runIt(recipe playground.Recipe) error {
232234
svcManager := recipe.Apply(&playground.ExContext{
233235
LogLevel: logLevel,
234236
Contender: &playground.ContenderContext{
235-
Enabled: contenderEnabled,
236-
ExtraArgs: contenderArgs,
237+
Enabled: contenderEnabled,
238+
ExtraArgs: contenderArgs,
239+
TargetChain: contenderTarget,
237240
},
238241
}, artifacts)
239242
if err := svcManager.Validate(); err != nil {

playground/components.go

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -813,7 +813,16 @@ func (n *nullService) Name() string {
813813
}
814814

815815
type Contender struct {
816-
ExtraArgs []string
816+
ExtraArgs []string
817+
TargetChain string // defaults to "el", may be any chain name in a recipe's spec
818+
}
819+
820+
// Converts a `ContenderContext` into a `Contender` service. `Enabled` is ignored.
821+
func (cc *ContenderContext) Contender() *Contender {
822+
return &Contender{
823+
ExtraArgs: cc.ExtraArgs,
824+
TargetChain: cc.TargetChain,
825+
}
817826
}
818827

819828
func (c *Contender) Name() string {
@@ -854,10 +863,16 @@ func (c *Contender) Run(service *Service, ctx *ExContext) {
854863
val string
855864
hasVal bool
856865
}
866+
867+
targetChain := "el"
868+
if c.TargetChain != "" {
869+
targetChain = c.TargetChain
870+
}
871+
857872
defaults := []opt{
858873
{name: "-l"},
859874
{name: "--min-balance", val: "10 ether", hasVal: true},
860-
{name: "-r", val: Connect("el", "http"), hasVal: true},
875+
{name: "-r", val: Connect(targetChain, "http"), hasVal: true},
861876
{name: "--tps", val: "20", hasVal: true},
862877
}
863878

@@ -888,6 +903,9 @@ func (c *Contender) Run(service *Service, ctx *ExContext) {
888903
if flag == "-l" && seen["--loops"] {
889904
return true
890905
}
906+
if flag == "-r" && seen["--rpc-url"] {
907+
return true
908+
}
891909
return false
892910
}
893911

@@ -922,4 +940,7 @@ func (c *Contender) Run(service *Service, ctx *ExContext) {
922940
WithArgs(args...).
923941
DependsOnHealthy("beacon")
924942

943+
if c.TargetChain == "op-geth" {
944+
service.DependsOnRunning("op-node")
945+
}
925946
}

playground/manifest.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,11 @@ type ContenderContext struct {
7474
// Run `contender spam` automatically once all playground services are running.
7575
Enabled bool
7676

77-
// Provide additional args to contender's CLI
77+
// Provide additional args to contender's CLI.
7878
ExtraArgs []string
79+
80+
// Override the default target chain for contender to spam.
81+
TargetChain string
7982
}
8083

8184
// Execution context
@@ -603,3 +606,9 @@ func ReadManifest(outputFolder string) (*Manifest, error) {
603606
}
604607
return &manifestData, nil
605608
}
609+
610+
func (svcManager *Manifest) RunContenderIfEnabled() {
611+
if svcManager.ctx.Contender.Enabled {
612+
svcManager.AddService("contender", svcManager.ctx.Contender.Contender())
613+
}
614+
}

playground/recipe_buildernet.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,7 @@ func (b *BuilderNetRecipe) Apply(ctx *ExContext, artifacts *Artifacts) *Manifest
5959
})
6060
}
6161

62-
if ctx.Contender.Enabled {
63-
svcManager.AddService("contender", &Contender{
64-
ExtraArgs: ctx.Contender.ExtraArgs,
65-
})
66-
}
62+
svcManager.RunContenderIfEnabled()
6763

6864
return svcManager
6965
}

playground/recipe_l1.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,7 @@ func (l *L1Recipe) Apply(ctx *ExContext, artifacts *Artifacts) *Manifest {
107107
})
108108
}
109109

110-
if ctx.Contender.Enabled {
111-
svcManager.AddService("contender", &Contender{
112-
ExtraArgs: ctx.Contender.ExtraArgs,
113-
})
114-
}
110+
svcManager.RunContenderIfEnabled()
115111

116112
return svcManager
117113
}

playground/recipe_opstack.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -175,11 +175,10 @@ func (o *OpRecipe) Apply(ctx *ExContext, artifacts *Artifacts) *Manifest {
175175
MaxChannelDuration: o.batcherMaxChannelDuration,
176176
})
177177

178-
if ctx.Contender.Enabled {
179-
svcManager.AddService("contender", &Contender{
180-
ExtraArgs: ctx.Contender.ExtraArgs,
181-
})
178+
if svcManager.ctx.Contender.TargetChain == "" {
179+
svcManager.ctx.Contender.TargetChain = "op-geth"
182180
}
181+
svcManager.RunContenderIfEnabled()
183182

184183
return svcManager
185184
}

0 commit comments

Comments
 (0)