From 8c1afc6bab688cd225c9377c90721f6b47958ce3 Mon Sep 17 00:00:00 2001 From: Leonard Lyubich Date: Thu, 5 Nov 2020 12:24:19 +0300 Subject: [PATCH] [#189] sdk/netmap: Refactor Clause enum Replace alias to v2 type Clause with v2-compatible implementation. Signed-off-by: Leonard Lyubich --- pkg/netmap/clause.go | 54 +++++++++++++++++++++++++++++++++++++++ pkg/netmap/clause_test.go | 31 ++++++++++++++++++++++ pkg/netmap/policy.go | 1 - 3 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 pkg/netmap/clause.go create mode 100644 pkg/netmap/clause_test.go diff --git a/pkg/netmap/clause.go b/pkg/netmap/clause.go new file mode 100644 index 0000000..87b4e47 --- /dev/null +++ b/pkg/netmap/clause.go @@ -0,0 +1,54 @@ +package netmap + +import ( + "github.com/nspcc-dev/neofs-api-go/v2/netmap" +) + +// Clause is an enumeration of selector modifiers +// that shows how the node set will be formed. +type Clause uint32 + +const ( + _ Clause = iota + + // ClauseSame is a selector modifier to select only nodes having the same value of bucket attribute. + ClauseSame + + // ClauseDistinct is a selector modifier to select nodes having different values of bucket attribute. + ClauseDistinct +) + +// ClauseFromV2 converts v2 Clause to Clause. +func ClauseFromV2(c netmap.Clause) Clause { + switch c { + default: + return 0 + case netmap.Same: + return ClauseSame + case netmap.Distinct: + return ClauseDistinct + } +} + +// ToV2 converts Clause to v2 Clause. +func (c Clause) ToV2() netmap.Clause { + switch c { + default: + return netmap.UnspecifiedClause + case ClauseDistinct: + return netmap.Distinct + case ClauseSame: + return netmap.Same + } +} + +func (c Clause) String() string { + switch c { + default: + return "UNSPECIFIED" + case ClauseDistinct: + return "DISTINCT" + case ClauseSame: + return "SAME" + } +} diff --git a/pkg/netmap/clause_test.go b/pkg/netmap/clause_test.go new file mode 100644 index 0000000..fd3a464 --- /dev/null +++ b/pkg/netmap/clause_test.go @@ -0,0 +1,31 @@ +package netmap + +import ( + "testing" + + "github.com/nspcc-dev/neofs-api-go/v2/netmap" + "github.com/stretchr/testify/require" +) + +func TestClauseFromV2(t *testing.T) { + for _, item := range []struct { + c Clause + cV2 netmap.Clause + }{ + { + c: 0, + cV2: netmap.UnspecifiedClause, + }, + { + c: ClauseSame, + cV2: netmap.Same, + }, + { + c: ClauseDistinct, + cV2: netmap.Distinct, + }, + } { + require.Equal(t, item.c, ClauseFromV2(item.cV2)) + require.Equal(t, item.cV2, item.c.ToV2()) + } +} diff --git a/pkg/netmap/policy.go b/pkg/netmap/policy.go index be5c6e8..736cdff 100644 --- a/pkg/netmap/policy.go +++ b/pkg/netmap/policy.go @@ -9,7 +9,6 @@ type PlacementPolicy = netmap.PlacementPolicy type Selector = netmap.Selector type Filter = netmap.Filter type Replica = netmap.Replica -type Clause = netmap.Clause func PlacementPolicyToJSON(p *PlacementPolicy) ([]byte, error) { return netmap.PlacementPolicyToJSON(p)