forked from TrueCloudLab/frostfs-node
[#660] core: Implement function to check protocol version adequacy
Create `version` package and implement `IsValid` function which checks if version is not earlier than the genesis one. Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
c90f054f35
commit
69826ebd90
2 changed files with 47 additions and 0 deletions
17
pkg/core/version/version.go
Normal file
17
pkg/core/version/version.go
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
package version
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/nspcc-dev/neofs-api-go/pkg"
|
||||||
|
)
|
||||||
|
|
||||||
|
// IsValid checks if Version is not earlier than the genesis version of the NeoFS.
|
||||||
|
func IsValid(v pkg.Version) bool {
|
||||||
|
const (
|
||||||
|
startMajor = 2
|
||||||
|
startMinor = 7
|
||||||
|
)
|
||||||
|
|
||||||
|
mjr := v.Major()
|
||||||
|
|
||||||
|
return mjr > startMajor || mjr == startMajor && v.Minor() >= startMinor
|
||||||
|
}
|
30
pkg/core/version/version_test.go
Normal file
30
pkg/core/version/version_test.go
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
package version_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/nspcc-dev/neofs-api-go/pkg"
|
||||||
|
"github.com/nspcc-dev/neofs-node/pkg/core/version"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestIsValid(t *testing.T) {
|
||||||
|
require.True(t, version.IsValid(*pkg.SDKVersion()))
|
||||||
|
|
||||||
|
var v pkg.Version
|
||||||
|
|
||||||
|
for _, item := range []struct {
|
||||||
|
mjr, mnr uint32
|
||||||
|
valid bool
|
||||||
|
}{
|
||||||
|
{mjr: 0, mnr: 0, valid: false},
|
||||||
|
{mjr: 2, mnr: 6, valid: false},
|
||||||
|
{mjr: 2, mnr: 7, valid: true},
|
||||||
|
{mjr: 3, mnr: 0, valid: true},
|
||||||
|
} {
|
||||||
|
v.SetMajor(item.mjr)
|
||||||
|
v.SetMinor(item.mnr)
|
||||||
|
|
||||||
|
require.Equal(t, item.valid, version.IsValid(v), item)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue