Skip to content

Commit 04cfc10

Browse files
authored
feat(dst-test): Migrate to SDK v4 (#11925)
Closes #11924
1 parent 2424da5 commit 04cfc10

File tree

4 files changed

+42
-51
lines changed

4 files changed

+42
-51
lines changed

plugins/destination/test/client/client.go

Lines changed: 18 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,73 +2,55 @@ package client
22

33
import (
44
"context"
5+
"encoding/json"
56
"errors"
67
"fmt"
7-
"time"
88

99
"github.com/apache/arrow/go/v13/arrow"
10-
"github.com/cloudquery/plugin-pb-go/specs"
11-
"github.com/cloudquery/plugin-sdk/v3/plugins/destination"
12-
"github.com/cloudquery/plugin-sdk/v3/schema"
10+
"github.com/cloudquery/plugin-sdk/v4/message"
11+
"github.com/cloudquery/plugin-sdk/v4/plugin"
12+
"github.com/cloudquery/plugin-sdk/v4/schema"
1313
"github.com/rs/zerolog"
1414
)
1515

1616
type Client struct {
1717
logger zerolog.Logger
1818
spec Spec
19+
20+
plugin.UnimplementedSource
1921
}
2022

21-
func New(_ context.Context, logger zerolog.Logger, spec specs.Destination) (destination.Client, error) {
22-
var testConfig Spec
23-
err := spec.UnmarshalSpec(&testConfig)
24-
if err != nil {
23+
var _ plugin.Client = (*Client)(nil)
24+
25+
func New(_ context.Context, logger zerolog.Logger, specBytes []byte, _ plugin.NewClientOptions) (plugin.Client, error) {
26+
var spec Spec
27+
if err := json.Unmarshal(specBytes, &spec); err != nil {
2528
return nil, fmt.Errorf("failed to unmarshal spec: %w", err)
2629
}
30+
2731
return &Client{
2832
logger: logger.With().Str("module", "test").Logger(),
29-
spec: testConfig,
33+
spec: spec,
3034
}, nil
3135
}
3236

33-
func (*Client) Metrics() destination.Metrics {
34-
return destination.Metrics{}
35-
}
36-
37-
func (*Client) Read(context.Context, *schema.Table, string, chan<- arrow.Record) error {
38-
return nil
39-
}
40-
41-
func (*Client) Migrate(context.Context, schema.Tables) error {
37+
func (*Client) Read(context.Context, *schema.Table, chan<- arrow.Record) error {
4238
return nil
4339
}
4440

4541
//revive:disable We need to range over the channel to clear it, but revive thinks it can be removed
46-
func (c *Client) Write(_ context.Context, _ schema.Tables, records <-chan arrow.Record) error {
42+
func (c *Client) Write(_ context.Context, messages <-chan message.WriteMessage) error {
4743
if c.spec.ErrorOnWrite {
4844
return errors.New("error_on_write is true")
4945
}
50-
for record := range records {
51-
record.Release()
52-
}
53-
return nil
54-
}
55-
56-
func (c *Client) WriteTableBatch(_ context.Context, _ *schema.Table, records []arrow.Record) error {
57-
defer func() {
58-
for _, record := range records {
59-
record.Release()
46+
for m := range messages {
47+
if m, ok := m.(*message.WriteInsert); ok {
48+
m.Record.Release()
6049
}
61-
}()
62-
if c.spec.ErrorOnWrite {
63-
return errors.New("error_on_write is true")
6450
}
6551
return nil
6652
}
6753

6854
func (*Client) Close(context.Context) error {
6955
return nil
7056
}
71-
72-
func (*Client) DeleteStale(context.Context, schema.Tables, string, time.Time) error {
73-
return nil
74-
}

plugins/destination/test/go.mod

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ go 1.19
44

55
require (
66
github.com/apache/arrow/go/v13 v13.0.0-20230630125530-5a06b2ec2a8e
7-
github.com/cloudquery/plugin-pb-go v1.6.0
8-
github.com/cloudquery/plugin-sdk/v3 v3.10.6
7+
github.com/cloudquery/plugin-sdk/v4 v4.6.1-rc1
98
github.com/rs/zerolog v1.29.1
109
)
1110

1211
// TODO: remove once all updates are merged
1312
replace github.com/apache/arrow/go/v13 => github.com/cloudquery/arrow/go/v13 v13.0.0-20230703001435-df3b664a289d
1413

1514
require (
15+
github.com/cloudquery/plugin-pb-go v1.6.0 // indirect
1616
github.com/cloudquery/plugin-sdk/v2 v2.7.0 // indirect
1717
github.com/davecgh/go-spew v1.1.1 // indirect
1818
github.com/getsentry/sentry-go v0.20.0 // indirect
@@ -24,13 +24,13 @@ require (
2424
github.com/grpc-ecosystem/go-grpc-middleware/providers/zerolog/v2 v2.0.0-rc.3 // indirect
2525
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-rc.3 // indirect
2626
github.com/inconshreveable/mousetrap v1.1.0 // indirect
27-
github.com/klauspost/compress v1.16.0 // indirect
27+
github.com/klauspost/compress v1.16.6 // indirect
2828
github.com/klauspost/cpuid/v2 v2.2.5 // indirect
29+
github.com/kr/pretty v0.3.0 // indirect
2930
github.com/mattn/go-colorable v0.1.13 // indirect
3031
github.com/mattn/go-isatty v0.0.19 // indirect
3132
github.com/pierrec/lz4/v4 v4.1.17 // indirect
3233
github.com/pmezard/go-difflib v1.0.0 // indirect
33-
github.com/spf13/cast v1.5.0 // indirect
3434
github.com/spf13/cobra v1.6.1 // indirect
3535
github.com/spf13/pflag v1.0.5 // indirect
3636
github.com/stretchr/testify v1.8.4 // indirect

plugins/destination/test/go.sum

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,14 @@ github.com/cloudquery/plugin-pb-go v1.6.0 h1:4g+tPhRAQUWpGyQBMcj6D3yVwKqwEN3nynv
4545
github.com/cloudquery/plugin-pb-go v1.6.0/go.mod h1:R0Wse6NbJDZIHcRQjJ1sZGYDo3mrIDm4k3El1YUrvGA=
4646
github.com/cloudquery/plugin-sdk/v2 v2.7.0 h1:hRXsdEiaOxJtsn/wZMFQC9/jPfU1MeMK3KF+gPGqm7U=
4747
github.com/cloudquery/plugin-sdk/v2 v2.7.0/go.mod h1:pAX6ojIW99b/Vg4CkhnsGkRIzNaVEceYMR+Bdit73ug=
48-
github.com/cloudquery/plugin-sdk/v3 v3.10.6 h1:KqTsLZ6OA1h8BUMeMcU6BAD6TBW6ojgQaC4zDZMgvu0=
49-
github.com/cloudquery/plugin-sdk/v3 v3.10.6/go.mod h1:QhBaVgiNyQ3P6uAzJWOYpYykHXL+WDZffwg1riTwv60=
48+
github.com/cloudquery/plugin-sdk/v4 v4.6.1-rc1 h1:oO1locVCUfi8tud9cwRPTO+hLyih2jgZ24nlvvuimh4=
49+
github.com/cloudquery/plugin-sdk/v4 v4.6.1-rc1/go.mod h1:Y5HzxesZrpmSTUrbvR8EmGCK5wXDAhqSqzNEXC2ouvI=
5050
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
5151
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
5252
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
5353
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
5454
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
55+
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
5556
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
5657
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
5758
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -60,7 +61,6 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m
6061
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
6162
github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
6263
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
63-
github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE=
6464
github.com/getsentry/sentry-go v0.20.0 h1:bwXW98iMRIWxn+4FgPW7vMrjmbym6HblXALmhjHmQaQ=
6565
github.com/getsentry/sentry-go v0.20.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY=
6666
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
@@ -144,15 +144,17 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1
144144
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
145145
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
146146
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
147-
github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4=
148-
github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
147+
github.com/klauspost/compress v1.16.6 h1:91SKEy4K37vkp255cJ8QesJhjyRO0hn9i9G0GoUwLsk=
148+
github.com/klauspost/compress v1.16.6/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
149149
github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg=
150150
github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
151151
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
152152
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
153+
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
153154
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
154155
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
155156
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
157+
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
156158
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
157159
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
158160
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
@@ -171,15 +173,14 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
171173
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
172174
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
173175
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
176+
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
174177
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
175178
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
176179
github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
177180
github.com/rs/zerolog v1.19.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo=
178181
github.com/rs/zerolog v1.29.1 h1:cO+d60CHkknCbvzEWxP0S9K6KqyTjrCNUy1LdQLCGPc=
179182
github.com/rs/zerolog v1.29.1/go.mod h1:Le6ESbR7hc+DP6Lt1THiV8CQSdkkNrd3R0XbEgp3ZBU=
180183
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
181-
github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
182-
github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
183184
github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA=
184185
github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY=
185186
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=

plugins/destination/test/main.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
11
package main
22

33
import (
4+
"context"
5+
"log"
6+
47
"github.com/cloudquery/cloudquery/plugins/destination/test/client"
5-
"github.com/cloudquery/cloudquery/plugins/destination/test/resources/plugin"
6-
"github.com/cloudquery/plugin-sdk/v3/plugins/destination"
7-
"github.com/cloudquery/plugin-sdk/v3/serve"
8+
internalPlugin "github.com/cloudquery/cloudquery/plugins/destination/test/resources/plugin"
9+
"github.com/cloudquery/plugin-sdk/v4/plugin"
10+
"github.com/cloudquery/plugin-sdk/v4/serve"
811
)
912

1013
func main() {
11-
serve.Destination(destination.NewPlugin("test", plugin.Version, client.New))
14+
p := plugin.NewPlugin("test", internalPlugin.Version, client.New)
15+
if err := serve.Plugin(p,
16+
serve.WithDestinationV0V1Server(),
17+
).Serve(context.Background()); err != nil {
18+
log.Fatalf("failed to serve plugin: %v", err)
19+
}
1220
}

0 commit comments

Comments
 (0)