adm/morph: Fix set-config parameter validation #1167
2 changed files with 55 additions and 6 deletions
|
@ -147,13 +147,28 @@ func validateConfig(args map[string]any, forceFlag bool) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
for k, v := range args {
|
for k, v := range args {
|
||||||
value, ok := v.(int64)
|
switch k {
|
||||||
if !ok || value < 0 {
|
case netmap.ContainerFeeConfig, netmap.ContainerAliasFeeConfig,
|
||||||
return fmt.Errorf("%s must be >= 0, got %v", k, v)
|
netmap.EpochDurationConfig, netmap.IrCandidateFeeConfig,
|
||||||
fyrchik marked this conversation as resolved
Outdated
|
|||||||
}
|
netmap.MaxObjectSizeConfig, netmap.WithdrawFeeConfig,
|
||||||
|
netmap.MaxECDataCountConfig, netmap.MaxECParityCountConfig:
|
||||||
|
value, ok := v.(int64)
|
||||||
|
if !ok {
|
||||||
|
return fmt.Errorf("%s has an invalid type. Expected type: int", k)
|
||||||
|
}
|
||||||
|
|
||||||
if k == netmap.MaxECDataCountConfig || k == netmap.MaxECParityCountConfig {
|
if value < 0 {
|
||||||
sumEC += value
|
return fmt.Errorf("%s must be >= 0, got %v", k, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
if k == netmap.MaxECDataCountConfig || k == netmap.MaxECParityCountConfig {
|
||||||
|
sumEC += value
|
||||||
|
}
|
||||||
|
case netmap.HomomorphicHashingDisabledKey, netmap.MaintenanceModeAllowedConfig:
|
||||||
|
_, ok := v.(bool)
|
||||||
|
if !ok {
|
||||||
|
return fmt.Errorf("%s has an invalid type. Expected type: bool", k)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
34
cmd/frostfs-adm/internal/modules/morph/config/config_test.go
Normal file
34
cmd/frostfs-adm/internal/modules/morph/config/config_test.go
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
package config
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/morph/client/netmap"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Test_ValidateConfig(t *testing.T) {
|
||||||
|
testArgs := make(map[string]any)
|
||||||
|
|
||||||
|
testArgs[netmap.MaxECDataCountConfig] = int64(11)
|
||||||
|
require.Error(t, validateConfig(testArgs, false))
|
||||||
|
|
||||||
|
testArgs[netmap.MaxECParityCountConfig] = int64(256)
|
||||||
|
require.Error(t, validateConfig(testArgs, false))
|
||||||
|
require.NoError(t, validateConfig(testArgs, true))
|
||||||
|
|
||||||
|
testArgs[netmap.MaxECParityCountConfig] = int64(-1)
|
||||||
|
require.Error(t, validateConfig(testArgs, false))
|
||||||
|
|
||||||
|
testArgs[netmap.MaxECParityCountConfig] = int64(55)
|
||||||
|
require.NoError(t, validateConfig(testArgs, false))
|
||||||
|
|
||||||
|
testArgs[netmap.HomomorphicHashingDisabledKey] = "1"
|
||||||
|
require.Error(t, validateConfig(testArgs, false))
|
||||||
|
|
||||||
|
testArgs[netmap.HomomorphicHashingDisabledKey] = true
|
||||||
|
require.NoError(t, validateConfig(testArgs, false))
|
||||||
|
|
||||||
|
testArgs["not-well-known-configuration-key"] = "key"
|
||||||
|
require.NoError(t, validateConfig(testArgs, false))
|
||||||
|
}
|
Loading…
Reference in a new issue
Why don't we cast it inside
case
branches? The results are only used there.fixed