Skip to content

Commit

Permalink
refactoring of ydb-go-sdk version
Browse files Browse the repository at this point in the history
  • Loading branch information
asmyasnikov committed Jul 31, 2023
1 parent 4043e54 commit 97dd0fd
Show file tree
Hide file tree
Showing 16 changed files with 511 additions and 244 deletions.
3 changes: 2 additions & 1 deletion internal/meta/meta.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"google.golang.org/grpc/metadata"

"github.com/ydb-platform/ydb-go-sdk/v3/internal/credentials"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/version"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
"github.com/ydb-platform/ydb-go-sdk/v3/trace"
)
Expand Down Expand Up @@ -83,7 +84,7 @@ func (m *Meta) meta(ctx context.Context) (_ metadata.MD, err error) {
}

if len(md.Get(HeaderVersion)) == 0 {
md.Set(HeaderVersion, "ydb-go-sdk/"+Version)
md.Set(HeaderVersion, "ydb-go-sdk/"+version.Version)
}

if m.requestsType != "" {
Expand Down
3 changes: 2 additions & 1 deletion internal/meta/test/meta_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (

"github.com/ydb-platform/ydb-go-sdk/v3/internal/credentials"
internal "github.com/ydb-platform/ydb-go-sdk/v3/internal/meta"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/version"
"github.com/ydb-platform/ydb-go-sdk/v3/meta"
"github.com/ydb-platform/ydb-go-sdk/v3/trace"
)
Expand Down Expand Up @@ -45,7 +46,7 @@ func TestMetaRequiredHeaders(t *testing.T) {
require.Equal(t, []string{"userAgent", "user-agent"}, md.Get(internal.HeaderUserAgent))
require.Equal(t, []string{"traceID"}, md.Get(internal.HeaderTraceID))
require.Equal(t, []string{
"ydb-go-sdk/" + internal.VersionMajor + "." + internal.VersionMinor + "." + internal.VersionPatch,
"ydb-go-sdk/" + version.Major + "." + version.Minor + "." + version.Patch,
}, md.Get(internal.HeaderVersion))
require.Equal(t, []string{"some-user-value"}, md.Get("some-user-header"))
}
9 changes: 0 additions & 9 deletions internal/meta/version.go

This file was deleted.

93 changes: 93 additions & 0 deletions internal/version/parse.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package version

import (
"strconv"
"strings"

"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
)

type version struct {
Major uint64
Minor uint64
Patch uint64
Suffix string
}

func (lhs version) Less(rhs version) bool {
if lhs.Major < rhs.Major {
return true
}
if lhs.Major > rhs.Major {
return false
}
if lhs.Minor < rhs.Minor {
return true
}
if lhs.Minor > rhs.Minor {
return false
}
if lhs.Patch < rhs.Patch {
return true
}
if lhs.Patch > rhs.Patch {
return false
}
return lhs.Suffix < rhs.Suffix
}

// Lt compare lhs and rhs as (lhs < rhs)
func Lt(lhs, rhs string) bool {
v1, err := parse(lhs)
if err != nil {
return false
}
v2, err := parse(rhs)
if err != nil {
return false
}
return v1.Less(v2)
}

// Gte compare lhs and rhs as (lhs >= rhs)
func Gte(lhs, rhs string) bool {
v1, err := parse(lhs)
if err != nil {
return false
}
v2, err := parse(rhs)
if err != nil {
return false
}
if v1.Less(v2) {
return false
}
return true
}

func parse(s string) (v version, err error) {
ss := strings.SplitN(s, "-", 2)
if len(ss) == 2 {
v.Suffix = ss[1]
}
sss := strings.SplitN(ss[0], ".", 3)
if len(sss) == 3 {
v.Patch, err = strconv.ParseUint(sss[2], 10, 64)
if err != nil {
return version{}, xerrors.WithStackTrace(err)
}
}
if len(sss) >= 2 {
v.Minor, err = strconv.ParseUint(sss[1], 10, 64)
if err != nil {
return version{}, xerrors.WithStackTrace(err)
}
}
if len(sss) >= 1 {
v.Major, err = strconv.ParseUint(sss[0], 10, 64)
if err != nil {
return version{}, xerrors.WithStackTrace(err)
}
}
return v, nil
}
182 changes: 182 additions & 0 deletions internal/version/parse_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@
package version

import (
"testing"

"github.com/stretchr/testify/require"
)

func TestParse(t *testing.T) {
for _, tt := range []struct {
s string
v version
err bool
}{
{
s: "1",
v: version{Major: 1},
err: false,
},
{
s: "1.2",
v: version{Major: 1, Minor: 2},
err: false,
},
{
s: "1.2.3",
v: version{Major: 1, Minor: 2, Patch: 3},
err: false,
},
{
s: "1.2.3-alpha",
v: version{Major: 1, Minor: 2, Patch: 3, Suffix: "alpha"},
err: false,
},
{
s: "22.5",
v: version{Major: 22, Minor: 5},
err: false,
},
{
s: "23.1",
v: version{Major: 23, Minor: 1},
err: false,
},
{
s: "23.2",
v: version{Major: 23, Minor: 2},
err: false,
},
{
s: "trunk",
v: version{},
err: true,
},
} {
t.Run(tt.s, func(t *testing.T) {
v, err := parse(tt.s)
if tt.err {
require.Error(t, err)
} else {
require.NoError(t, err)
require.Equal(t, tt.v, v)
}
})
}
}

func TestLt(t *testing.T) {
for _, tt := range []struct {
lhs string
rhs string
less bool
}{
{
lhs: "1",
rhs: "2",
less: true,
},
{
lhs: "2",
rhs: "1",
less: false,
},
{
lhs: "1",
rhs: "1",
less: false,
},
{
lhs: "22.5",
rhs: "23.1",
less: true,
},
{
lhs: "23.1",
rhs: "22.5",
less: false,
},
{
lhs: "trunk",
rhs: "22.5",
less: false,
},
{
lhs: "trunk",
rhs: "23.1",
less: false,
},
{
lhs: "22.5",
rhs: "trunk",
less: false,
},
{
lhs: "23.1",
rhs: "trunk",
less: false,
},
} {
t.Run("", func(t *testing.T) {
require.Equal(t, tt.less, Lt(tt.lhs, tt.rhs))
})
}
}

func TestGte(t *testing.T) {
for _, tt := range []struct {
lhs string
rhs string
less bool
}{
{
lhs: "1",
rhs: "2",
less: false,
},
{
lhs: "2",
rhs: "1",
less: true,
},
{
lhs: "1",
rhs: "1",
less: true,
},
{
lhs: "22.5",
rhs: "23.1",
less: false,
},
{
lhs: "23.1",
rhs: "22.5",
less: true,
},
{
lhs: "trunk",
rhs: "22.5",
less: false,
},
{
lhs: "trunk",
rhs: "23.1",
less: false,
},
{
lhs: "22.5",
rhs: "trunk",
less: false,
},
{
lhs: "23.1",
rhs: "trunk",
less: false,
},
} {
t.Run("", func(t *testing.T) {
require.Equal(t, tt.less, Gte(tt.lhs, tt.rhs))
})
}
}
9 changes: 9 additions & 0 deletions internal/version/version.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package version

const (
Major = "3"
Minor = "48"
Patch = "8"
)

const Version = Major + "." + Minor + "." + Patch
12 changes: 6 additions & 6 deletions log/discovery.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,14 @@ func internalDiscovery(l *wrapper, d trace.Detailer) (t trace.Discovery) {
return func(info trace.DiscoveryDiscoverDoneInfo) {
if info.Error == nil {
l.Log(WithLevel(ctx, INFO), "done",
latency(start),
latencyField(start),
Stringer("endpoints", endpoints(info.Endpoints)),
)
} else {
l.Log(WithLevel(ctx, ERROR), "failed",
Error(info.Error),
latency(start),
version(),
latencyField(start),
versionField(),
)
}
}
Expand All @@ -47,15 +47,15 @@ func internalDiscovery(l *wrapper, d trace.Detailer) (t trace.Discovery) {
return func(info trace.DiscoveryWhoAmIDoneInfo) {
if info.Error == nil {
l.Log(ctx, "done",
latency(start),
latencyField(start),
String("user", info.User),
Strings("groups", info.Groups),
)
} else {
l.Log(WithLevel(ctx, WARN), "failed",
Error(info.Error),
latency(start),
version(),
latencyField(start),
versionField(),
)
}
}
Expand Down
Loading

0 comments on commit 97dd0fd

Please sign in to comment.