Skip to content

Commit ebc358e

Browse files
committed
fork override and more tests
1 parent ee10653 commit ebc358e

File tree

6 files changed

+379
-82
lines changed

6 files changed

+379
-82
lines changed

internal/config/config.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ type RewardsConfig struct {
119119
CalculateRewardsDaily bool
120120
WithdrawalQueueWindow float64 // Duration in days for withdrawal queue period (14.0 for mainnet, 0.0069 for testnet/preprod ~10 min)
121121
RewardsV2_2Enabled bool
122+
ForkOverrides map[ForkName]Fork // Test-only: override fork dates/blocks
122123
}
123124

124125
type StatsdConfig struct {
@@ -555,6 +556,22 @@ type Fork struct {
555556
type ForkMap map[ForkName]Fork
556557

557558
func (c *Config) GetRewardsSqlForkDates() (ForkMap, error) {
559+
forkMap, err := c.getBaseForkMap()
560+
if err != nil {
561+
return nil, err
562+
}
563+
564+
// Apply fork overrides (for testing)
565+
if c.Rewards.ForkOverrides != nil {
566+
for forkName, override := range c.Rewards.ForkOverrides {
567+
forkMap[forkName] = override
568+
}
569+
}
570+
571+
return forkMap, nil
572+
}
573+
574+
func (c *Config) getBaseForkMap() (ForkMap, error) {
558575
switch c.Chain {
559576
case Chain_Preprod:
560577
return ForkMap{
@@ -786,6 +803,18 @@ func (c *Config) GetRewardsSqlForkDates() (ForkMap, error) {
786803
return nil, errors.New("unsupported chain")
787804
}
788805

806+
// SetForkOverride sets a fork override for testing purposes.
807+
// This allows tests to override fork block numbers to enable/disable fork-specific logic.
808+
func (c *Config) SetForkOverride(forkName ForkName, blockNumber uint64, date string) {
809+
if c.Rewards.ForkOverrides == nil {
810+
c.Rewards.ForkOverrides = make(map[ForkName]Fork)
811+
}
812+
c.Rewards.ForkOverrides[forkName] = Fork{
813+
Date: date,
814+
BlockNumber: blockNumber,
815+
}
816+
}
817+
789818
type ModelForkMap map[ForkName]uint64
790819

791820
// Model forks, named after US capitols

internal/tests/utils.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,17 @@ func LargeTestsEnabled() bool {
273273
return os.Getenv("TEST_REWARDS") == "true" || os.Getenv("TEST_LARGE") == "true"
274274
}
275275

276+
// GetConfigWithSabineForkEnabled returns a config with Sabine fork enabled at block 0.
277+
// This is useful for testing withdrawal queue add-back logic.
278+
func GetConfigWithSabineForkEnabled(chain config.Chain) *config.Config {
279+
cfg := GetConfig()
280+
cfg.Chain = chain
281+
cfg.Rewards.WithdrawalQueueWindow = 14.0 // 14 days for mainnet
282+
// Enable Sabine fork at block 0 so it's always active
283+
cfg.SetForkOverride(config.RewardsFork_Sabine, 0, "1970-01-01")
284+
return cfg
285+
}
286+
276287
// ----------------------------------------------------------------------------
277288
// Rewards V2
278289
// ----------------------------------------------------------------------------

pkg/rewards/e2e_anvil_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ func setupE2ETestContext(t *testing.T) *E2ETestContext {
8585
cfg.Rewards.RewardsV2_2Enabled = true
8686
cfg.Rewards.WithdrawalQueueWindow = 14.0 // 14 days for mainnet
8787
cfg.DatabaseConfig = *tests.GetDbConfigFromEnv()
88+
// Enable Sabine fork at block 0 so withdrawal queue add-back logic is always active
89+
cfg.SetForkOverride(config.RewardsFork_Sabine, 0, "1970-01-01")
8890

8991
sink, err := metrics.NewMetricsSink(&metrics.MetricsSinkConfig{}, nil)
9092
require.NoError(t, err, "Failed to create metrics sink")

pkg/rewards/rewardsV2_2_anvil_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ func setupV22TestContext(t *testing.T) *V22TestContext {
6464
cfg.Rewards.RewardsV2_2Enabled = true
6565
cfg.Rewards.WithdrawalQueueWindow = 14.0 // 14 days for mainnet
6666
cfg.DatabaseConfig = *tests.GetDbConfigFromEnv()
67+
// Enable Sabine fork at block 0 so withdrawal queue add-back logic is always active
68+
cfg.SetForkOverride(config.RewardsFork_Sabine, 0, "1970-01-01")
6769

6870
sink, err := metrics.NewMetricsSink(&metrics.MetricsSinkConfig{}, nil)
6971
require.NoError(t, err, "Failed to create metrics sink")

pkg/rewards/stakerShareSnapshots_anvil_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,8 @@ func setupSSS_SidecarForAnvil(t *testing.T, anvilURL string) (string, *config.Co
464464
cfg.DatabaseConfig.User = os.Getenv("POSTGRES_USER")
465465
cfg.DatabaseConfig.Password = os.Getenv("POSTGRES_PASSWORD")
466466
cfg.Rewards.WithdrawalQueueWindow = 14 // 14 days
467+
// Enable Sabine fork at block 0 so withdrawal queue add-back logic is always active
468+
cfg.SetForkOverride(config.RewardsFork_Sabine, 0, "1970-01-01")
467469

468470
l, _ := logger.NewLogger(&logger.LoggerConfig{Debug: cfg.Debug})
469471

0 commit comments

Comments
 (0)