Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 131 additions & 3 deletions op-challenger/cmd/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,10 +103,13 @@ func TestOpSupervisor(t *testing.T) {
t.Run("RequiredForSuperPermissioned", func(t *testing.T) {
verifyArgsInvalid(t, "flag supervisor-rpc is required", addRequiredArgsExcept(types.TraceTypeSuperPermissioned, "--supervisor-rpc"))
})
t.Run("RequiredForSuperAsteriscKona", func(t *testing.T) {
verifyArgsInvalid(t, "flag supervisor-rpc is required", addRequiredArgsExcept(types.TraceTypeSuperAsteriscKona, "--supervisor-rpc"))
})

for _, traceType := range types.TraceTypes {
traceType := traceType
if traceType == types.TraceTypeSuperCannon || traceType == types.TraceTypeSuperPermissioned {
if traceType == types.TraceTypeSuperCannon || traceType == types.TraceTypeSuperPermissioned || traceType == types.TraceTypeSuperAsteriscKona {
continue
}

Expand All @@ -126,6 +129,12 @@ func TestOpSupervisor(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(types.TraceTypeSuperPermissioned, "--supervisor-rpc", "--supervisor-rpc", url))
require.Equal(t, url, cfg.SupervisorRPC)
})

t.Run("Valid-SuperAsteriscKona", func(t *testing.T) {
url := "http://localhost/supervisor"
cfg := configForArgs(t, addRequiredArgsExcept(types.TraceTypeSuperAsteriscKona, "--supervisor-rpc", "--supervisor-rpc", url))
require.Equal(t, url, cfg.SupervisorRPC)
})
}

func TestTraceType(t *testing.T) {
Expand Down Expand Up @@ -554,7 +563,7 @@ func TestAsteriscBaseRequiredArgs(t *testing.T) {
t.Run(fmt.Sprintf("TestMustNotSpecifyNetworkAndRollup-%v", traceType), func(t *testing.T) {
verifyArgsInvalid(
t,
"flag network can not be used with rollup-config and l2-genesis",
"flag network can not be used with rollup-config, l2-genesis or asterisc-kona-l2-custom",
addRequiredArgs(traceType, "--rollup-config=rollup.json"))
})

Expand Down Expand Up @@ -810,6 +819,112 @@ func TestSuperCannonCustomConfigArgs(t *testing.T) {
}
}

func TestSuperAsteriscKonaCustomConfigArgs(t *testing.T) {
for _, traceType := range []types.TraceType{types.TraceTypeSuperAsteriscKona} {
traceType := traceType

t.Run(fmt.Sprintf("TestRequireEitherAsteriscKonaNetworkOrRollupAndGenesisAndDepset-%v", traceType), func(t *testing.T) {
expectedErrorMessage := "flag network or rollup-config/asterisc-kona-rollup-config, l2-genesis/asterisc-kona-l2-genesis and depset-config/asterisc-kona-depset-config is required"
// Missing all
verifyArgsInvalid(
t,
expectedErrorMessage,
addRequiredArgsExcept(traceType, "--network"))
// Missing l2-genesis
verifyArgsInvalid(
t,
expectedErrorMessage,
addRequiredArgsExcept(traceType, "--network", "--asterisc-kona-rollup-config=rollup.json", "--asterisc-kona-depset-config=depset.json"))
// Missing rollup-config
verifyArgsInvalid(
t,
expectedErrorMessage,
addRequiredArgsExcept(traceType, "--network", "--asterisc-kona-l2-genesis=gensis.json", "--asterisc-kona-depset-config=depset.json"))
// Missing depset-config
verifyArgsInvalid(
t,
expectedErrorMessage,
addRequiredArgsExcept(traceType, "--network", "--asterisc-kona-rollup-config=rollup.json", "--asterisc-kona-l2-genesis=gensis.json"))
})

t.Run(fmt.Sprintf("TestMustNotSpecifyNetworkAndRollup-%v", traceType), func(t *testing.T) {
verifyArgsInvalid(
t,
"flag network can not be used with asterisc-kona-rollup-config, l2-genesis or asterisc-kona-l2-custom",
addRequiredArgs(traceType, "--asterisc-kona-rollup-config=rollup.json"))
})

t.Run(fmt.Sprintf("TestMustNotSpecifyNetworkAndRollup-%v", traceType), func(t *testing.T) {
args := requiredArgs(traceType)
delete(args, "--network")
delete(args, "--game-factory-address")
args["--network"] = network
args["--asterisc-kona-rollup-config"] = "rollup.json"
args["--asterisc-kona-l2-genesis"] = "gensis.json"
args["--asterisc-kona-l2-custom"] = "true"
verifyArgsInvalid(
t,
"flag network can not be used with asterisc-kona-rollup-config, asterisc-kona-l2-genesis or asterisc-kona-l2-custom",
toArgList(args))
})

t.Run(fmt.Sprintf("TestNetwork-%v", traceType), func(t *testing.T) {
t.Run("NotRequiredWhenRollupGenesisAndDepsetIsSpecified", func(t *testing.T) {
configForArgs(t, addRequiredArgsExcept(traceType, "--network",
"--asterisc-kona-rollup-config=rollup.json", "--asterisc-kona-l2-genesis=genesis.json", "--asterisc-kona-depset-config=depset.json"))
})

t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--network", "--network", testNetwork))
require.Equal(t, []string{testNetwork}, cfg.AsteriscKona.Networks)
})
})

t.Run(fmt.Sprintf("TestSetAsteriscL2ChainId-%v", traceType), func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--network",
"--asterisc-kona-rollup-config=rollup.json",
"--asterisc-kona-l2-genesis=genesis.json",
"--asterisc-kona-depset-config=depset.json",
"--asterisc-kona-l2-custom"))
require.True(t, cfg.AsteriscKona.L2Custom)
})

t.Run(fmt.Sprintf("TestAsteriscRollupConfig-%v", traceType), func(t *testing.T) {
t.Run("NotRequiredForAlphabetTrace", func(t *testing.T) {
configForArgs(t, addRequiredArgsExcept(types.TraceTypeAlphabet, "--asterisc-kona-rollup-config"))
})

t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--network",
"--asterisc-kona-rollup-config=rollup.json", "--asterisc-kona-l2-genesis=genesis.json", "--asterisc-kona-depset-config=depset.json"))
require.Equal(t, []string{"rollup.json"}, cfg.AsteriscKona.RollupConfigPaths)
})
})

t.Run(fmt.Sprintf("TestAsteriscL2Genesis-%v", traceType), func(t *testing.T) {
t.Run("NotRequiredForAlphabetTrace", func(t *testing.T) {
configForArgs(t, addRequiredArgsExcept(types.TraceTypeAlphabet, "--asterisc-kona-l2-genesis"))
})

t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--network", "--asterisc-kona-rollup-config=rollup.json", "--asterisc-kona-l2-genesis=genesis.json", "--asterisc-kona-depset-config=depset.json"))
require.Equal(t, []string{"genesis.json"}, cfg.AsteriscKona.L2GenesisPaths)
})
})

t.Run(fmt.Sprintf("TestAsteriscDepsetConfig-%v", traceType), func(t *testing.T) {
t.Run("NotRequiredForAlphabetTrace", func(t *testing.T) {
configForArgs(t, addRequiredArgsExcept(types.TraceTypeAlphabet, "--asterisc-kona-depset-config"))
})

t.Run("Valid", func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--network", "--asterisc-kona-rollup-config=rollup.json", "--asterisc-kona-l2-genesis=genesis.json", "--asterisc-kona-depset-config=depset.json"))
require.Equal(t, "depset.json", cfg.AsteriscKona.DepsetConfigPath)
})
})
}
}

func TestCannonRequiredArgs(t *testing.T) {
for _, traceType := range []types.TraceType{types.TraceTypeCannon, types.TraceTypePermissioned, types.TraceTypeSuperCannon, types.TraceTypeSuperPermissioned} {
traceType := traceType
Expand Down Expand Up @@ -957,6 +1072,12 @@ func TestDepsetConfig(t *testing.T) {
"flag network or rollup-config/cannon-rollup-config, l2-genesis/cannon-l2-genesis and depset-config/cannon-depset-config is required",
addRequiredArgsExcept(traceType, "--network", "--rollup-config=rollup.json", "--l2-genesis=genesis.json"))
})
} else if traceType == types.TraceTypeSuperAsteriscKona {
t.Run("Required-"+traceType.String(), func(t *testing.T) {
verifyArgsInvalid(t,
"flag network or rollup-config/asterisc-kona-rollup-config, l2-genesis/asterisc-kona-l2-genesis and depset-config/asterisc-kona-depset-config is required",
addRequiredArgsExcept(traceType, "--network", "--rollup-config=rollup.json", "--l2-genesis=genesis.json"))
})
} else {
t.Run("NotRequired-"+traceType.String(), func(t *testing.T) {
cfg := configForArgs(t, addRequiredArgsExcept(traceType, "--network", "--rollup-config=rollup.json", "--l2-genesis=genesis.json"))
Expand Down Expand Up @@ -985,7 +1106,7 @@ func TestRollupRpc(t *testing.T) {
for _, traceType := range types.TraceTypes {
traceType := traceType

if traceType == types.TraceTypeSuperCannon || traceType == types.TraceTypeSuperPermissioned {
if traceType == types.TraceTypeSuperCannon || traceType == types.TraceTypeSuperPermissioned || traceType == types.TraceTypeSuperAsteriscKona {
t.Run(fmt.Sprintf("NotRequiredFor-%v", traceType), func(t *testing.T) {
configForArgs(t, addRequiredArgsExcept(traceType, "--rollup-rpc"))
})
Expand Down Expand Up @@ -1172,6 +1293,8 @@ func requiredArgs(traceType types.TraceType) map[string]string {
addRequiredAsteriscKonaArgs(args)
case types.TraceTypeSuperCannon, types.TraceTypeSuperPermissioned:
addRequiredSuperCannonArgs(args)
case types.TraceTypeSuperAsteriscKona:
addRequiredSuperAsteriscKonaArgs(args)
case types.TraceTypeAlphabet, types.TraceTypeFast:
addRequiredOutputRootArgs(args)
}
Expand Down Expand Up @@ -1215,6 +1338,11 @@ func addRequiredAsteriscKonaArgs(args map[string]string) {
args["--asterisc-kona-prestate"] = asteriscPreState
}

func addRequiredSuperAsteriscKonaArgs(args map[string]string) {
addRequiredAsteriscKonaArgs(args)
args["--supervisor-rpc"] = supervisorRpc
}

func toArgList(req map[string]string) []string {
var combined []string
for name, value := range req {
Expand Down
35 changes: 27 additions & 8 deletions op-challenger/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -287,17 +287,20 @@ func (c Config) Check() error {
if c.RollupRpc == "" {
return ErrMissingRollupRpc
}
if err := c.AsteriscKona.Check(); err != nil {
return fmt.Errorf("asterisc kona: %w", err)
if err := c.validateBaseAsteriscKonaOptions(); err != nil {
return err
}
if c.AsteriscKonaAbsolutePreState == "" && c.AsteriscKonaAbsolutePreStateBaseURL == nil {
return ErrMissingAsteriscKonaAbsolutePreState
}
if c.TraceTypeEnabled(types.TraceTypeSuperAsteriscKona) {
if c.SupervisorRPC == "" {
return ErrMissingSupervisorRpc
}
if c.AsteriscKona.SnapshotFreq == 0 {
return ErrMissingAsteriscKonaSnapshotFreq

if len(c.AsteriscKona.Networks) == 0 && c.AsteriscKona.DepsetConfigPath == "" {
return ErrMissingDepsetConfig
}
if c.AsteriscKona.InfoFreq == 0 {
return ErrMissingAsteriscKonaInfoFreq
if err := c.validateBaseAsteriscKonaOptions(); err != nil {
return err
}
}
if c.TraceTypeEnabled(types.TraceTypeAlphabet) || c.TraceTypeEnabled(types.TraceTypeFast) {
Expand Down Expand Up @@ -332,3 +335,19 @@ func (c Config) validateBaseCannonOptions() error {
}
return nil
}

func (c Config) validateBaseAsteriscKonaOptions() error {
if err := c.AsteriscKona.Check(); err != nil {
return fmt.Errorf("asterisc kona: %w", err)
}
if c.AsteriscKonaAbsolutePreState == "" && c.AsteriscKonaAbsolutePreStateBaseURL == nil {
return ErrMissingAsteriscKonaAbsolutePreState
}
if c.AsteriscKona.SnapshotFreq == 0 {
return ErrMissingAsteriscKonaSnapshotFreq
}
if c.AsteriscKona.InfoFreq == 0 {
return ErrMissingAsteriscKonaInfoFreq
}
return nil
}
43 changes: 41 additions & 2 deletions op-challenger/config/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ var superCannonTraceTypes = []types.TraceType{types.TraceTypeSuperCannon, types.
var allCannonTraceTypes []types.TraceType
var asteriscTraceTypes = []types.TraceType{types.TraceTypeAsterisc}
var asteriscKonaTraceTypes = []types.TraceType{types.TraceTypeAsteriscKona}
var superAsteriscKonaTraceTypes = []types.TraceType{types.TraceTypeSuperAsteriscKona}

func init() {
allCannonTraceTypes = append(allCannonTraceTypes, singleCannonTraceTypes...)
Expand Down Expand Up @@ -118,6 +119,11 @@ func applyValidConfigForAsteriscKona(t *testing.T, cfg *Config) {
cfg.AsteriscKona.Networks = []string{validAsteriscKonaNetwork}
}

func applyValidConfigForSuperAsteriscKona(t *testing.T, cfg *Config) {
cfg.SupervisorRPC = validSupervisorRpc
applyValidConfigForAsteriscKona(t, cfg)
}

func validConfig(t *testing.T, traceType types.TraceType) Config {
cfg := NewConfig(validGameFactoryAddress, validL1EthRpc, validL1BeaconUrl, validRollupRpc, validL2Rpc, validDatadir, traceType)
if traceType == types.TraceTypeSuperCannon || traceType == types.TraceTypeSuperPermissioned {
Expand All @@ -132,6 +138,9 @@ func validConfig(t *testing.T, traceType types.TraceType) Config {
if traceType == types.TraceTypeAsteriscKona {
applyValidConfigForAsteriscKona(t, &cfg)
}
if traceType == types.TraceTypeSuperAsteriscKona {
applyValidConfigForSuperAsteriscKona(t, &cfg)
}
return cfg
}

Expand Down Expand Up @@ -327,6 +336,18 @@ func TestDepsetConfig(t *testing.T) {
})
}

for _, traceType := range superAsteriscKonaTraceTypes {
traceType := traceType
t.Run(fmt.Sprintf("TestAsteriscNetworkOrDepsetConfigRequired-%v", traceType), func(t *testing.T) {
cfg := validConfig(t, traceType)
cfg.AsteriscKona.Networks = nil
cfg.AsteriscKona.RollupConfigPaths = []string{"foo.json"}
cfg.AsteriscKona.L2GenesisPaths = []string{"genesis.json"}
cfg.AsteriscKona.DepsetConfigPath = ""
require.ErrorIs(t, cfg.Check(), ErrMissingDepsetConfig)
})
}

for _, traceType := range singleCannonTraceTypes {
traceType := traceType
t.Run(fmt.Sprintf("TestDepsetConfigNotRequired-%v", traceType), func(t *testing.T) {
Expand All @@ -338,6 +359,18 @@ func TestDepsetConfig(t *testing.T) {
require.NoError(t, cfg.Check())
})
}

for _, traceType := range asteriscKonaTraceTypes {
traceType := traceType
t.Run(fmt.Sprintf("TestDepsetConfigNotRequired-%v", traceType), func(t *testing.T) {
cfg := validConfig(t, traceType)
cfg.AsteriscKona.Networks = nil
cfg.AsteriscKona.RollupConfigPaths = []string{"foo.json"}
cfg.AsteriscKona.L2GenesisPaths = []string{"genesis.json"}
cfg.AsteriscKona.DepsetConfigPath = ""
require.NoError(t, cfg.Check())
})
}
}

func TestAsteriscRequiredArgs(t *testing.T) {
Expand Down Expand Up @@ -601,7 +634,7 @@ func TestHttpPollInterval(t *testing.T) {
func TestRollupRpcRequired(t *testing.T) {
for _, traceType := range types.TraceTypes {
traceType := traceType
if traceType == types.TraceTypeSuperCannon || traceType == types.TraceTypeSuperPermissioned {
if traceType == types.TraceTypeSuperCannon || traceType == types.TraceTypeSuperPermissioned || traceType == types.TraceTypeSuperAsteriscKona {
continue
}
t.Run(traceType.String(), func(t *testing.T) {
Expand All @@ -624,12 +657,18 @@ func TestRollupRpcNotRequiredForInterop(t *testing.T) {
config.RollupRpc = ""
require.NoError(t, config.Check())
})

t.Run("SuperAsteriscKona", func(t *testing.T) {
config := validConfig(t, types.TraceTypeSuperAsteriscKona)
config.RollupRpc = ""
require.NoError(t, config.Check())
})
}

func TestSupervisorRpc(t *testing.T) {
for _, traceType := range types.TraceTypes {
traceType := traceType
if traceType == types.TraceTypeSuperCannon || traceType == types.TraceTypeSuperPermissioned {
if traceType == types.TraceTypeSuperCannon || traceType == types.TraceTypeSuperPermissioned || traceType == types.TraceTypeSuperAsteriscKona {
t.Run("RequiredFor"+traceType.String(), func(t *testing.T) {
config := validConfig(t, traceType)
config.SupervisorRPC = ""
Expand Down
Loading