Skip to content

Commit 2394f21

Browse files
committed
moved unit-test of execute options into package options
1 parent 9b2748b commit 2394f21

File tree

2 files changed

+153
-194
lines changed

2 files changed

+153
-194
lines changed
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
package options
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/require"
7+
"google.golang.org/grpc"
8+
9+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/allocator"
10+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/params"
11+
internal "github.com/ydb-platform/ydb-go-sdk/v3/internal/query/tx"
12+
)
13+
14+
type txMock func() *internal.Control
15+
16+
func (tx txMock) txControl() *internal.Control {
17+
if tx == nil {
18+
return internal.NewControl(internal.WithTxID(""))
19+
}
20+
21+
return tx()
22+
}
23+
24+
func TestExecuteSettings(t *testing.T) {
25+
for _, tt := range []struct {
26+
name string
27+
tx txMock
28+
txOpts []Execute
29+
settings executeSettings
30+
}{
31+
{
32+
name: "WithTxID",
33+
tx: func() *internal.Control {
34+
return internal.NewControl(internal.WithTxID("test"))
35+
},
36+
settings: executeSettings{
37+
execMode: ExecModeExecute,
38+
statsMode: StatsModeNone,
39+
txControl: internal.NewControl(internal.WithTxID("test")),
40+
syntax: SyntaxYQL,
41+
},
42+
},
43+
{
44+
name: "WithStats",
45+
txOpts: []Execute{
46+
WithStatsMode(StatsModeFull, nil),
47+
},
48+
settings: executeSettings{
49+
execMode: ExecModeExecute,
50+
statsMode: StatsModeFull,
51+
txControl: internal.NewControl(internal.WithTxID("")),
52+
syntax: SyntaxYQL,
53+
},
54+
},
55+
{
56+
name: "WithExecMode",
57+
txOpts: []Execute{
58+
WithExecMode(ExecModeExplain),
59+
},
60+
settings: executeSettings{
61+
execMode: ExecModeExplain,
62+
statsMode: StatsModeNone,
63+
txControl: internal.NewControl(internal.WithTxID("")),
64+
syntax: SyntaxYQL,
65+
},
66+
},
67+
{
68+
name: "WithSyntax",
69+
txOpts: []Execute{
70+
WithSyntax(SyntaxPostgreSQL),
71+
},
72+
settings: executeSettings{
73+
execMode: ExecModeExecute,
74+
statsMode: StatsModeNone,
75+
txControl: internal.NewControl(internal.WithTxID("")),
76+
syntax: SyntaxPostgreSQL,
77+
},
78+
},
79+
{
80+
name: "WithGrpcOptions",
81+
txOpts: []Execute{
82+
WithCallOptions(grpc.CallContentSubtype("test")),
83+
},
84+
settings: executeSettings{
85+
execMode: ExecModeExecute,
86+
statsMode: StatsModeNone,
87+
txControl: internal.NewControl(internal.WithTxID("")),
88+
syntax: SyntaxYQL,
89+
callOptions: []grpc.CallOption{
90+
grpc.CallContentSubtype("test"),
91+
},
92+
},
93+
},
94+
{
95+
name: "WithParams",
96+
txOpts: []Execute{
97+
WithParameters(
98+
params.Builder{}.Param("$a").Text("A").Build(),
99+
),
100+
},
101+
settings: executeSettings{
102+
execMode: ExecModeExecute,
103+
statsMode: StatsModeNone,
104+
txControl: internal.NewControl(internal.WithTxID("")),
105+
syntax: SyntaxYQL,
106+
params: *params.Builder{}.Param("$a").Text("A").Build(),
107+
},
108+
},
109+
{
110+
name: "WithCommitTx",
111+
txOpts: []Execute{
112+
WithCommit(),
113+
},
114+
settings: executeSettings{
115+
execMode: ExecModeExecute,
116+
statsMode: StatsModeNone,
117+
txControl: internal.NewControl(internal.WithTxID(""), internal.CommitTx()),
118+
syntax: SyntaxYQL,
119+
params: nil,
120+
},
121+
},
122+
{
123+
name: "WithPoolID",
124+
txOpts: []Execute{
125+
WithPoolID("test-pool-id"),
126+
},
127+
settings: executeSettings{
128+
execMode: ExecModeExecute,
129+
statsMode: StatsModeNone,
130+
txControl: internal.NewControl(internal.WithTxID("")),
131+
syntax: SyntaxYQL,
132+
poolID: "test-pool-id",
133+
},
134+
},
135+
} {
136+
t.Run(tt.name, func(t *testing.T) {
137+
a := allocator.New()
138+
settings := ExecuteSettings(
139+
append(
140+
[]Execute{WithTxControl(tt.tx.txControl())},
141+
tt.txOpts...,
142+
)...,
143+
)
144+
require.Equal(t, tt.settings.Syntax(), settings.Syntax())
145+
require.Equal(t, tt.settings.ExecMode(), settings.ExecMode())
146+
require.Equal(t, tt.settings.StatsMode(), settings.StatsMode())
147+
require.Equal(t, tt.settings.PoolID(), settings.PoolID())
148+
require.Equal(t, tt.settings.TxControl().ToYDB(a).String(), settings.TxControl().ToYDB(a).String())
149+
require.Equal(t, tt.settings.Params().ToYDB(a), settings.Params().ToYDB(a))
150+
require.Equal(t, tt.settings.CallOptions(), settings.CallOptions())
151+
})
152+
}
153+
}

internal/query/transaction_test.go

Lines changed: 0 additions & 194 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,11 @@ import (
1919
grpcCodes "google.golang.org/grpc/codes"
2020
grpcStatus "google.golang.org/grpc/status"
2121

22-
"github.com/ydb-platform/ydb-go-sdk/v3/internal/allocator"
23-
"github.com/ydb-platform/ydb-go-sdk/v3/internal/params"
2422
"github.com/ydb-platform/ydb-go-sdk/v3/internal/query/options"
25-
internal "github.com/ydb-platform/ydb-go-sdk/v3/internal/query/tx"
2623
baseTx "github.com/ydb-platform/ydb-go-sdk/v3/internal/tx"
2724
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
2825
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xtest"
2926
"github.com/ydb-platform/ydb-go-sdk/v3/query"
30-
"github.com/ydb-platform/ydb-go-sdk/v3/retry"
31-
"github.com/ydb-platform/ydb-go-sdk/v3/table/stats"
3227
)
3328

3429
var _ baseTx.Transaction = &Transaction{}
@@ -495,192 +490,3 @@ func TestRollback(t *testing.T) {
495490
require.True(t, xerrors.IsOperationError(err, Ydb.StatusIds_UNAVAILABLE))
496491
})
497492
}
498-
499-
type testExecuteSettings struct {
500-
execMode options.ExecMode
501-
statsMode options.StatsMode
502-
txControl *query.TransactionControl
503-
syntax options.Syntax
504-
params *params.Parameters
505-
poolID string
506-
callOptions []grpc.CallOption
507-
}
508-
509-
func (s testExecuteSettings) PoolID() string {
510-
return s.poolID
511-
}
512-
513-
func (s testExecuteSettings) RetryOpts() []retry.Option {
514-
return nil
515-
}
516-
517-
func (s testExecuteSettings) StatsCallback() func(stats stats.QueryStats) {
518-
return nil
519-
}
520-
521-
func (s testExecuteSettings) ExecMode() options.ExecMode {
522-
return s.execMode
523-
}
524-
525-
func (s testExecuteSettings) StatsMode() options.StatsMode {
526-
return s.statsMode
527-
}
528-
529-
func (s testExecuteSettings) TxControl() *query.TransactionControl {
530-
return s.txControl
531-
}
532-
533-
func (s testExecuteSettings) Syntax() options.Syntax {
534-
return s.syntax
535-
}
536-
537-
func (s testExecuteSettings) Params() *params.Parameters {
538-
return s.params
539-
}
540-
541-
func (s testExecuteSettings) CallOptions() []grpc.CallOption {
542-
return s.callOptions
543-
}
544-
545-
var _ executeSettings = testExecuteSettings{}
546-
547-
type txMock func() *internal.Control
548-
549-
func (tx txMock) txControl() *internal.Control {
550-
if tx == nil {
551-
return internal.NewControl(internal.WithTxID(""))
552-
}
553-
554-
return tx()
555-
}
556-
557-
func TestExecuteSettings(t *testing.T) {
558-
for _, tt := range []struct {
559-
name string
560-
tx txMock
561-
txOpts []options.Execute
562-
settings executeSettings
563-
}{
564-
{
565-
name: "WithTxID",
566-
tx: func() *internal.Control {
567-
return internal.NewControl(internal.WithTxID("test"))
568-
},
569-
settings: testExecuteSettings{
570-
execMode: options.ExecModeExecute,
571-
statsMode: options.StatsModeNone,
572-
txControl: query.TxControl(query.WithTxID("test")),
573-
syntax: options.SyntaxYQL,
574-
},
575-
},
576-
{
577-
name: "WithStats",
578-
txOpts: []options.Execute{
579-
options.WithStatsMode(options.StatsModeFull, nil),
580-
},
581-
settings: testExecuteSettings{
582-
execMode: options.ExecModeExecute,
583-
statsMode: options.StatsModeFull,
584-
txControl: query.TxControl(query.WithTxID("")),
585-
syntax: options.SyntaxYQL,
586-
},
587-
},
588-
{
589-
name: "WithExecMode",
590-
txOpts: []options.Execute{
591-
options.WithExecMode(options.ExecModeExplain),
592-
},
593-
settings: testExecuteSettings{
594-
execMode: options.ExecModeExplain,
595-
statsMode: options.StatsModeNone,
596-
txControl: query.TxControl(query.WithTxID("")),
597-
syntax: options.SyntaxYQL,
598-
},
599-
},
600-
{
601-
name: "WithSyntax",
602-
txOpts: []options.Execute{
603-
options.WithSyntax(options.SyntaxPostgreSQL),
604-
},
605-
settings: testExecuteSettings{
606-
execMode: options.ExecModeExecute,
607-
statsMode: options.StatsModeNone,
608-
txControl: query.TxControl(query.WithTxID("")),
609-
syntax: options.SyntaxPostgreSQL,
610-
},
611-
},
612-
{
613-
name: "WithGrpcOptions",
614-
txOpts: []options.Execute{
615-
options.WithCallOptions(grpc.CallContentSubtype("test")),
616-
},
617-
settings: testExecuteSettings{
618-
execMode: options.ExecModeExecute,
619-
statsMode: options.StatsModeNone,
620-
txControl: query.TxControl(query.WithTxID("")),
621-
syntax: options.SyntaxYQL,
622-
callOptions: []grpc.CallOption{
623-
grpc.CallContentSubtype("test"),
624-
},
625-
},
626-
},
627-
{
628-
name: "WithParams",
629-
txOpts: []options.Execute{
630-
options.WithParameters(
631-
params.Builder{}.Param("$a").Text("A").Build(),
632-
),
633-
},
634-
settings: testExecuteSettings{
635-
execMode: options.ExecModeExecute,
636-
statsMode: options.StatsModeNone,
637-
txControl: query.TxControl(query.WithTxID("")),
638-
syntax: options.SyntaxYQL,
639-
params: params.Builder{}.Param("$a").Text("A").Build(),
640-
},
641-
},
642-
{
643-
name: "WithCommitTx",
644-
txOpts: []options.Execute{
645-
options.WithCommit(),
646-
},
647-
settings: testExecuteSettings{
648-
execMode: options.ExecModeExecute,
649-
statsMode: options.StatsModeNone,
650-
txControl: query.TxControl(query.WithTxID(""), query.CommitTx()),
651-
syntax: options.SyntaxYQL,
652-
params: nil,
653-
},
654-
},
655-
{
656-
name: "WithPoolID",
657-
txOpts: []options.Execute{
658-
options.WithPoolID("test-pool-id"),
659-
},
660-
settings: testExecuteSettings{
661-
execMode: options.ExecModeExecute,
662-
statsMode: options.StatsModeNone,
663-
txControl: query.TxControl(query.WithTxID("")),
664-
syntax: options.SyntaxYQL,
665-
poolID: "test-pool-id",
666-
},
667-
},
668-
} {
669-
t.Run(tt.name, func(t *testing.T) {
670-
a := allocator.New()
671-
settings := options.ExecuteSettings(
672-
append(
673-
[]options.Execute{options.WithTxControl(tt.tx.txControl())},
674-
tt.txOpts...,
675-
)...,
676-
)
677-
require.Equal(t, tt.settings.Syntax(), settings.Syntax())
678-
require.Equal(t, tt.settings.ExecMode(), settings.ExecMode())
679-
require.Equal(t, tt.settings.StatsMode(), settings.StatsMode())
680-
require.Equal(t, tt.settings.PoolID(), settings.PoolID())
681-
require.Equal(t, tt.settings.TxControl().ToYDB(a).String(), settings.TxControl().ToYDB(a).String())
682-
require.Equal(t, tt.settings.Params().ToYDB(a), settings.Params().ToYDB(a))
683-
require.Equal(t, tt.settings.CallOptions(), settings.CallOptions())
684-
})
685-
}
686-
}

0 commit comments

Comments
 (0)