Skip to content

Commit 97dd0fd

Browse files
committed
refactoring of ydb-go-sdk version
1 parent 4043e54 commit 97dd0fd

16 files changed

+511
-244
lines changed

internal/meta/meta.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"google.golang.org/grpc/metadata"
88

99
"github.com/ydb-platform/ydb-go-sdk/v3/internal/credentials"
10+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/version"
1011
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
1112
"github.com/ydb-platform/ydb-go-sdk/v3/trace"
1213
)
@@ -83,7 +84,7 @@ func (m *Meta) meta(ctx context.Context) (_ metadata.MD, err error) {
8384
}
8485

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

8990
if m.requestsType != "" {

internal/meta/test/meta_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99

1010
"github.com/ydb-platform/ydb-go-sdk/v3/internal/credentials"
1111
internal "github.com/ydb-platform/ydb-go-sdk/v3/internal/meta"
12+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/version"
1213
"github.com/ydb-platform/ydb-go-sdk/v3/meta"
1314
"github.com/ydb-platform/ydb-go-sdk/v3/trace"
1415
)
@@ -45,7 +46,7 @@ func TestMetaRequiredHeaders(t *testing.T) {
4546
require.Equal(t, []string{"userAgent", "user-agent"}, md.Get(internal.HeaderUserAgent))
4647
require.Equal(t, []string{"traceID"}, md.Get(internal.HeaderTraceID))
4748
require.Equal(t, []string{
48-
"ydb-go-sdk/" + internal.VersionMajor + "." + internal.VersionMinor + "." + internal.VersionPatch,
49+
"ydb-go-sdk/" + version.Major + "." + version.Minor + "." + version.Patch,
4950
}, md.Get(internal.HeaderVersion))
5051
require.Equal(t, []string{"some-user-value"}, md.Get("some-user-header"))
5152
}

internal/meta/version.go

Lines changed: 0 additions & 9 deletions
This file was deleted.

internal/version/parse.go

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package version
2+
3+
import (
4+
"strconv"
5+
"strings"
6+
7+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
8+
)
9+
10+
type version struct {
11+
Major uint64
12+
Minor uint64
13+
Patch uint64
14+
Suffix string
15+
}
16+
17+
func (lhs version) Less(rhs version) bool {
18+
if lhs.Major < rhs.Major {
19+
return true
20+
}
21+
if lhs.Major > rhs.Major {
22+
return false
23+
}
24+
if lhs.Minor < rhs.Minor {
25+
return true
26+
}
27+
if lhs.Minor > rhs.Minor {
28+
return false
29+
}
30+
if lhs.Patch < rhs.Patch {
31+
return true
32+
}
33+
if lhs.Patch > rhs.Patch {
34+
return false
35+
}
36+
return lhs.Suffix < rhs.Suffix
37+
}
38+
39+
// Lt compare lhs and rhs as (lhs < rhs)
40+
func Lt(lhs, rhs string) bool {
41+
v1, err := parse(lhs)
42+
if err != nil {
43+
return false
44+
}
45+
v2, err := parse(rhs)
46+
if err != nil {
47+
return false
48+
}
49+
return v1.Less(v2)
50+
}
51+
52+
// Gte compare lhs and rhs as (lhs >= rhs)
53+
func Gte(lhs, rhs string) bool {
54+
v1, err := parse(lhs)
55+
if err != nil {
56+
return false
57+
}
58+
v2, err := parse(rhs)
59+
if err != nil {
60+
return false
61+
}
62+
if v1.Less(v2) {
63+
return false
64+
}
65+
return true
66+
}
67+
68+
func parse(s string) (v version, err error) {
69+
ss := strings.SplitN(s, "-", 2)
70+
if len(ss) == 2 {
71+
v.Suffix = ss[1]
72+
}
73+
sss := strings.SplitN(ss[0], ".", 3)
74+
if len(sss) == 3 {
75+
v.Patch, err = strconv.ParseUint(sss[2], 10, 64)
76+
if err != nil {
77+
return version{}, xerrors.WithStackTrace(err)
78+
}
79+
}
80+
if len(sss) >= 2 {
81+
v.Minor, err = strconv.ParseUint(sss[1], 10, 64)
82+
if err != nil {
83+
return version{}, xerrors.WithStackTrace(err)
84+
}
85+
}
86+
if len(sss) >= 1 {
87+
v.Major, err = strconv.ParseUint(sss[0], 10, 64)
88+
if err != nil {
89+
return version{}, xerrors.WithStackTrace(err)
90+
}
91+
}
92+
return v, nil
93+
}

internal/version/parse_test.go

Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
package version
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/require"
7+
)
8+
9+
func TestParse(t *testing.T) {
10+
for _, tt := range []struct {
11+
s string
12+
v version
13+
err bool
14+
}{
15+
{
16+
s: "1",
17+
v: version{Major: 1},
18+
err: false,
19+
},
20+
{
21+
s: "1.2",
22+
v: version{Major: 1, Minor: 2},
23+
err: false,
24+
},
25+
{
26+
s: "1.2.3",
27+
v: version{Major: 1, Minor: 2, Patch: 3},
28+
err: false,
29+
},
30+
{
31+
s: "1.2.3-alpha",
32+
v: version{Major: 1, Minor: 2, Patch: 3, Suffix: "alpha"},
33+
err: false,
34+
},
35+
{
36+
s: "22.5",
37+
v: version{Major: 22, Minor: 5},
38+
err: false,
39+
},
40+
{
41+
s: "23.1",
42+
v: version{Major: 23, Minor: 1},
43+
err: false,
44+
},
45+
{
46+
s: "23.2",
47+
v: version{Major: 23, Minor: 2},
48+
err: false,
49+
},
50+
{
51+
s: "trunk",
52+
v: version{},
53+
err: true,
54+
},
55+
} {
56+
t.Run(tt.s, func(t *testing.T) {
57+
v, err := parse(tt.s)
58+
if tt.err {
59+
require.Error(t, err)
60+
} else {
61+
require.NoError(t, err)
62+
require.Equal(t, tt.v, v)
63+
}
64+
})
65+
}
66+
}
67+
68+
func TestLt(t *testing.T) {
69+
for _, tt := range []struct {
70+
lhs string
71+
rhs string
72+
less bool
73+
}{
74+
{
75+
lhs: "1",
76+
rhs: "2",
77+
less: true,
78+
},
79+
{
80+
lhs: "2",
81+
rhs: "1",
82+
less: false,
83+
},
84+
{
85+
lhs: "1",
86+
rhs: "1",
87+
less: false,
88+
},
89+
{
90+
lhs: "22.5",
91+
rhs: "23.1",
92+
less: true,
93+
},
94+
{
95+
lhs: "23.1",
96+
rhs: "22.5",
97+
less: false,
98+
},
99+
{
100+
lhs: "trunk",
101+
rhs: "22.5",
102+
less: false,
103+
},
104+
{
105+
lhs: "trunk",
106+
rhs: "23.1",
107+
less: false,
108+
},
109+
{
110+
lhs: "22.5",
111+
rhs: "trunk",
112+
less: false,
113+
},
114+
{
115+
lhs: "23.1",
116+
rhs: "trunk",
117+
less: false,
118+
},
119+
} {
120+
t.Run("", func(t *testing.T) {
121+
require.Equal(t, tt.less, Lt(tt.lhs, tt.rhs))
122+
})
123+
}
124+
}
125+
126+
func TestGte(t *testing.T) {
127+
for _, tt := range []struct {
128+
lhs string
129+
rhs string
130+
less bool
131+
}{
132+
{
133+
lhs: "1",
134+
rhs: "2",
135+
less: false,
136+
},
137+
{
138+
lhs: "2",
139+
rhs: "1",
140+
less: true,
141+
},
142+
{
143+
lhs: "1",
144+
rhs: "1",
145+
less: true,
146+
},
147+
{
148+
lhs: "22.5",
149+
rhs: "23.1",
150+
less: false,
151+
},
152+
{
153+
lhs: "23.1",
154+
rhs: "22.5",
155+
less: true,
156+
},
157+
{
158+
lhs: "trunk",
159+
rhs: "22.5",
160+
less: false,
161+
},
162+
{
163+
lhs: "trunk",
164+
rhs: "23.1",
165+
less: false,
166+
},
167+
{
168+
lhs: "22.5",
169+
rhs: "trunk",
170+
less: false,
171+
},
172+
{
173+
lhs: "23.1",
174+
rhs: "trunk",
175+
less: false,
176+
},
177+
} {
178+
t.Run("", func(t *testing.T) {
179+
require.Equal(t, tt.less, Gte(tt.lhs, tt.rhs))
180+
})
181+
}
182+
}

internal/version/version.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package version
2+
3+
const (
4+
Major = "3"
5+
Minor = "48"
6+
Patch = "8"
7+
)
8+
9+
const Version = Major + "." + Minor + "." + Patch

log/discovery.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ func internalDiscovery(l *wrapper, d trace.Detailer) (t trace.Discovery) {
2525
return func(info trace.DiscoveryDiscoverDoneInfo) {
2626
if info.Error == nil {
2727
l.Log(WithLevel(ctx, INFO), "done",
28-
latency(start),
28+
latencyField(start),
2929
Stringer("endpoints", endpoints(info.Endpoints)),
3030
)
3131
} else {
3232
l.Log(WithLevel(ctx, ERROR), "failed",
3333
Error(info.Error),
34-
latency(start),
35-
version(),
34+
latencyField(start),
35+
versionField(),
3636
)
3737
}
3838
}
@@ -47,15 +47,15 @@ func internalDiscovery(l *wrapper, d trace.Detailer) (t trace.Discovery) {
4747
return func(info trace.DiscoveryWhoAmIDoneInfo) {
4848
if info.Error == nil {
4949
l.Log(ctx, "done",
50-
latency(start),
50+
latencyField(start),
5151
String("user", info.User),
5252
Strings("groups", info.Groups),
5353
)
5454
} else {
5555
l.Log(WithLevel(ctx, WARN), "failed",
5656
Error(info.Error),
57-
latency(start),
58-
version(),
57+
latencyField(start),
58+
versionField(),
5959
)
6060
}
6161
}

0 commit comments

Comments
 (0)