Skip to content

Commit

Permalink
Merge pull request #3294 from nspcc-dev/config-validation
Browse files Browse the repository at this point in the history
config: update validation with check committee
  • Loading branch information
AnnaShaleva authored Jan 22, 2024
2 parents ed73628 + 5f745df commit ef99a7a
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 2 deletions.
8 changes: 6 additions & 2 deletions pkg/config/protocol_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,12 @@ func (p *ProtocolConfiguration) Validate() error {
shouldBeDisabled = true
}
}
if p.ValidatorsCount != 0 && len(p.ValidatorsHistory) != 0 {
return errors.New("configuration should either have ValidatorsCount or ValidatorsHistory, not both")
if p.ValidatorsCount != 0 && len(p.ValidatorsHistory) != 0 || p.ValidatorsCount == 0 && len(p.ValidatorsHistory) == 0 {
return errors.New("configuration should either have one of ValidatorsCount or ValidatorsHistory, not both")
}

if len(p.StandbyCommittee) == 0 {
return errors.New("configuration should include StandbyCommittee")
}
if len(p.StandbyCommittee) < int(p.ValidatorsCount) {
return errors.New("validators count can't exceed the size of StandbyCommittee")
Expand Down
33 changes: 33 additions & 0 deletions pkg/config/protocol_config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,20 @@ func TestProtocolConfigurationValidation(t *testing.T) {
ValidatorsHistory: map[uint32]uint32{0: 1, 100: 4},
}
require.NoError(t, p.Validate())
p = &ProtocolConfiguration{
StandbyCommittee: []string{},
CommitteeHistory: map[uint32]uint32{0: 1, 100: 4},
ValidatorsHistory: map[uint32]uint32{0: 1, 100: 4},
}
err := p.Validate()
require.Error(t, err)
require.Contains(t, err.Error(), "configuration should include StandbyCommittee")
p = &ProtocolConfiguration{
StandbyCommittee: []string{"02b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc2"},
}
err = p.Validate()
require.Error(t, err)
require.Contains(t, err.Error(), "configuration should either have one of ValidatorsCount or ValidatorsHistory, not both")
}

func TestProtocolConfigurationValidation_Hardforks(t *testing.T) {
Expand All @@ -149,32 +163,51 @@ func TestProtocolConfigurationValidation_Hardforks(t *testing.T) {
"Aspidochelone": 2,
"Basilisk": 1, // Lower height in higher hard-fork.
},
StandbyCommittee: []string{
"02b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc2",
},
ValidatorsCount: 1,
}
require.Error(t, p.Validate())
p = &ProtocolConfiguration{
Hardforks: map[string]uint32{
"Aspidochelone": 2,
"Basilisk": 2, // Same height is OK.
}, StandbyCommittee: []string{
"02b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc2",
},
ValidatorsCount: 1,
}
require.NoError(t, p.Validate())
p = &ProtocolConfiguration{
Hardforks: map[string]uint32{
"Aspidochelone": 2,
"Basilisk": 3, // Larger height is OK.
},
StandbyCommittee: []string{
"02b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc2",
},
ValidatorsCount: 1,
}
require.NoError(t, p.Validate())
p = &ProtocolConfiguration{
Hardforks: map[string]uint32{
"Aspidochelone": 2,
},
StandbyCommittee: []string{
"02b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc2",
},
ValidatorsCount: 1,
}
require.NoError(t, p.Validate())
p = &ProtocolConfiguration{
Hardforks: map[string]uint32{
"Basilisk": 2,
},
StandbyCommittee: []string{
"02b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc2",
},
ValidatorsCount: 1,
}
require.NoError(t, p.Validate())
}
Expand Down

0 comments on commit ef99a7a

Please sign in to comment.