Skip to content

Commit

Permalink
default to 0 chain id and inject only if larger than 0
Browse files Browse the repository at this point in the history
  • Loading branch information
canercidam committed Dec 18, 2023
1 parent 75737a2 commit b79ee72
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 7 deletions.
4 changes: 3 additions & 1 deletion services/components/containers/definitions.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,9 @@ func NewBotContainerConfig(
config.EnvAgentGrpcPort: botConfig.GrpcPort(),
config.EnvFortaBotID: botConfig.ID,
config.EnvFortaBotOwner: botConfig.Owner,
config.EnvFortaChainID: fmt.Sprintf("%d", botConfig.ChainID),
}
if botConfig.ChainID > 0 {
env[config.EnvFortaChainID] = fmt.Sprintf("%d", botConfig.ChainID)
}
if botConfig.IsSharded() {
env[config.EnvFortaShardID] = fmt.Sprintf("%d", botConfig.ShardID())
Expand Down
50 changes: 50 additions & 0 deletions services/components/containers/definitions_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package containers

import (
"testing"

"github.com/forta-network/forta-node/config"
"github.com/stretchr/testify/require"
)

func TestContainerEnvVar_ChainID(t *testing.T) {
r := require.New(t)

botConfig := config.AgentConfig{
ChainID: 0,
}
containerConfig := NewBotContainerConfig("", botConfig, config.LogConfig{}, config.ResourcesConfig{})
env := containerConfig.Env
r.Equal("", env[config.EnvFortaChainID])

botConfig = config.AgentConfig{
ChainID: 137,
}
containerConfig = NewBotContainerConfig("", botConfig, config.LogConfig{}, config.ResourcesConfig{})
env = containerConfig.Env
r.Equal("137", env[config.EnvFortaChainID])
}

func TestContainerEnvVar_Sharding(t *testing.T) {
r := require.New(t)

botConfig := config.AgentConfig{
ShardConfig: nil,
}
containerConfig := NewBotContainerConfig("", botConfig, config.LogConfig{}, config.ResourcesConfig{})
env := containerConfig.Env
r.Equal("", env[config.EnvFortaShardID])
r.Equal("", env[config.EnvFortaShardCount])

botConfig = config.AgentConfig{
ShardConfig: &config.ShardConfig{
ShardID: 0,
Shards: 2,
Target: 3,
},
}
containerConfig = NewBotContainerConfig("", botConfig, config.LogConfig{}, config.ResourcesConfig{})
env = containerConfig.Env
r.Equal("0", env[config.EnvFortaShardID])
r.Equal("2", env[config.EnvFortaShardCount])
}
6 changes: 1 addition & 5 deletions store/registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,15 +210,11 @@ func (rs *registryStore) loadAssignment(assignment *registry.Assignment) (*confi
if !ok {
return nil, fmt.Errorf("%w: invalid sharding config", errInvalidBot)
}
botCfg.ChainID = int(botCfg.ShardConfig.ChainID)
} else {
botCfg.ShardConfig = sharding.CalculateShardConfig(assignment, agentData, rs.cfg.ChainID)
}

// chain id is found from shard calculation in v2
if botCfg.ShardConfig.ChainID > 0 {
botCfg.ChainID = int(botCfg.ShardConfig.ChainID)
}

return botCfg, nil
}

Expand Down
12 changes: 11 additions & 1 deletion store/sharding/calculate_v2.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,18 @@ import (
func CalculateShardConfigV2(
assignment *registry.Assignment, agentManifest *manifest.SignedAgentManifest,
) (*config.ShardConfig, bool) {
// we think of each chain in ascending order
if agentManifest == nil || agentManifest.Manifest == nil {
return nil, false
}
chainIDs := agentManifest.Manifest.ChainIDs

// if no chain ids were specified, then default to zero chain id with
// default target count (no sharding)
if len(chainIDs) == 0 {
return CreateShardConfig(defaultShardID, minShardCount, defaultTargetCount, 0), true
}

// we think of each chain in ascending order
sort.Slice(chainIDs, func(i, j int) bool {
return chainIDs[i] < chainIDs[j]
})
Expand Down
12 changes: 12 additions & 0 deletions store/sharding/calculate_v2_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,18 @@ func TestCalculateShardConfigV2(t *testing.T) {
expectedShardConfig: nil,
invalid: true,
},
{
name: "should return a default config if chain ids are not specified",
args: args{
chainSettings: nil,
},
expectedShardConfig: &config.ShardConfig{
ShardID: 0,
Target: 3,
Shards: 1,
ChainID: 0,
},
},
// Add more test cases as needed
}

Expand Down

0 comments on commit b79ee72

Please sign in to comment.