forked from TrueCloudLab/frostfs-node
aba09bb853
Rounding is done using the suffix boundary (i.e. floating point value with `gb` suffix will return size which is an integer number of megabytes). Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
139 lines
3.7 KiB
Go
139 lines
3.7 KiB
Go
package config_test
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/nspcc-dev/neofs-node/cmd/neofs-node/config"
|
|
configtest "github.com/nspcc-dev/neofs-node/cmd/neofs-node/config/test"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestStringSlice(t *testing.T) {
|
|
configtest.ForEachFileType("test/config", func(c *config.Config) {
|
|
cStringSlice := c.Sub("string_slice")
|
|
|
|
val := config.StringSlice(cStringSlice, "empty")
|
|
require.Empty(t, val)
|
|
|
|
val = config.StringSlice(cStringSlice, "filled")
|
|
require.Equal(t, []string{
|
|
"string1",
|
|
"string2",
|
|
}, val)
|
|
|
|
require.Panics(t, func() {
|
|
config.StringSlice(cStringSlice, "incorrect")
|
|
})
|
|
|
|
val = config.StringSliceSafe(cStringSlice, "incorrect")
|
|
require.Nil(t, val)
|
|
})
|
|
}
|
|
|
|
func TestString(t *testing.T) {
|
|
configtest.ForEachFileType("test/config", func(c *config.Config) {
|
|
c = c.Sub("string")
|
|
|
|
val := config.String(c, "correct")
|
|
require.Equal(t, "some string", val)
|
|
|
|
require.Panics(t, func() {
|
|
config.String(c, "incorrect")
|
|
})
|
|
|
|
val = config.StringSafe(c, "incorrect")
|
|
require.Empty(t, val)
|
|
})
|
|
}
|
|
|
|
func TestDuration(t *testing.T) {
|
|
configtest.ForEachFileType("test/config", func(c *config.Config) {
|
|
c = c.Sub("duration")
|
|
|
|
val := config.Duration(c, "correct")
|
|
require.Equal(t, 15*time.Minute, val)
|
|
|
|
require.Panics(t, func() {
|
|
config.Duration(c, "incorrect")
|
|
})
|
|
|
|
val = config.DurationSafe(c, "incorrect")
|
|
require.Equal(t, time.Duration(0), val)
|
|
})
|
|
}
|
|
|
|
func TestBool(t *testing.T) {
|
|
configtest.ForEachFileType("test/config", func(c *config.Config) {
|
|
c = c.Sub("bool")
|
|
|
|
val := config.Bool(c, "correct")
|
|
require.Equal(t, true, val)
|
|
|
|
val = config.Bool(c, "correct_string")
|
|
require.Equal(t, true, val)
|
|
|
|
require.Panics(t, func() {
|
|
config.Bool(c, "incorrect")
|
|
})
|
|
|
|
val = config.BoolSafe(c, "incorrect")
|
|
require.Equal(t, false, val)
|
|
})
|
|
}
|
|
|
|
func TestNumbers(t *testing.T) {
|
|
configtest.ForEachFileType("test/config", func(c *config.Config) {
|
|
c = c.Sub("number")
|
|
|
|
const (
|
|
intPos = "int_pos"
|
|
intNeg = "int_neg"
|
|
|
|
fractPos = "fract_pos"
|
|
fractNeg = "fract_neg"
|
|
|
|
incorrect = "incorrect"
|
|
)
|
|
|
|
require.EqualValues(t, 1, config.Int(c, intPos))
|
|
require.EqualValues(t, 1, config.Uint(c, intPos))
|
|
|
|
require.EqualValues(t, -1, config.Int(c, intNeg))
|
|
require.Panics(t, func() { config.Uint(c, intNeg) })
|
|
|
|
require.EqualValues(t, 2, config.Int(c, fractPos))
|
|
require.EqualValues(t, 2, config.Uint(c, fractPos))
|
|
|
|
require.EqualValues(t, -2, config.Int(c, fractNeg))
|
|
require.Panics(t, func() { config.Uint(c, fractNeg) })
|
|
|
|
require.Panics(t, func() { config.Int(c, incorrect) })
|
|
require.Panics(t, func() { config.Uint(c, incorrect) })
|
|
|
|
require.Zero(t, config.IntSafe(c, incorrect))
|
|
require.Zero(t, config.UintSafe(c, incorrect))
|
|
})
|
|
}
|
|
|
|
func TestSizeInBytes(t *testing.T) {
|
|
const (
|
|
kb = 1024
|
|
mb = 1024 * kb
|
|
gb = 1024 * mb
|
|
tb = 1024 * gb
|
|
)
|
|
configtest.ForEachFileType("test/config", func(c *config.Config) {
|
|
c = c.Sub("sizes")
|
|
require.EqualValues(t, kb, config.SizeInBytesSafe(c, "size_kb"))
|
|
require.EqualValues(t, 2*kb, config.SizeInBytesSafe(c, "size_kb_no_space"))
|
|
require.EqualValues(t, 12*mb, config.SizeInBytesSafe(c, "size_mb"))
|
|
require.EqualValues(t, 4*gb, config.SizeInBytesSafe(c, "size_gb"))
|
|
require.EqualValues(t, 5*tb, config.SizeInBytesSafe(c, "size_tb"))
|
|
require.EqualValues(t, 12, config.SizeInBytesSafe(c, "size_i_am_not_very_clever"))
|
|
require.EqualValues(t, tb/2, config.SizeInBytesSafe(c, "size_float"))
|
|
require.EqualValues(t, uint64(14*gb+(gb*123/1000/mb*mb)), config.SizeInBytesSafe(c, "size_float_big"))
|
|
require.EqualValues(t, 2048, config.SizeInBytesSafe(c, "size_bytes"))
|
|
require.EqualValues(t, 123456, config.SizeInBytesSafe(c, "size_bytes_no_suffix"))
|
|
})
|
|
}
|