adm/morph: Fix set-config parameter validation #1167

Merged
fyrchik merged 2 commits from achuprov/frostfs-node:bugfix/set-config-error into master 2024-06-11 15:15:27 +00:00
2 changed files with 55 additions and 6 deletions
Showing only changes of commit 4331bd1143 - Show all commits

View file

@ -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

Why don't we cast it inside case branches? The results are only used there.

Why don't we cast it inside `case` branches? The results are only used there.

fixed

fixed
} 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)
}
} }
} }

View 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))
}