[#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:
Leonard Lyubich 2021-07-02 08:41:45 +03:00 committed by Alex Vanin
parent c90f054f35
commit 69826ebd90
2 changed files with 47 additions and 0 deletions

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

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