@@ -28,12 +28,13 @@ import (
2828 "vitess.io/vitess/go/sqlescape"
2929 "vitess.io/vitess/go/sqltypes"
3030 "vitess.io/vitess/go/vt/mysqlctl/tmutils"
31- tabletmanagerdatapb "vitess.io/vitess/go/vt/proto/tabletmanagerdata"
3231 "vitess.io/vitess/go/vt/proto/vschema"
33- vtctldatapb "vitess.io/vitess/go/vt/proto/vtctldata"
3432 "vitess.io/vitess/go/vt/sqlparser"
3533 "vitess.io/vitess/go/vt/topo"
3634 "vitess.io/vitess/go/vt/vttablet/tabletmanager/vreplication"
35+
36+ tabletmanagerdatapb "vitess.io/vitess/go/vt/proto/tabletmanagerdata"
37+ vtctldatapb "vitess.io/vitess/go/vt/proto/vtctldata"
3738)
3839
3940func TestInitializeTargetSequences (t * testing.T ) {
@@ -89,121 +90,48 @@ func TestInitializeTargetSequences(t *testing.T) {
8990 },
9091 }
9192
92- << << << < HEAD
93- env .tmc .expectVRQuery (200 , "/select max.*" , sqltypes .MakeTestResult (sqltypes .MakeTestFields ("maxval" , "int64" ), "34" ))
94- // Expect the insert query to be executed with 35 as a params, since we provide a maxID of 34 in the last query
95- env .tmc .expectVRQuery (100 , "/insert into.*35.*" , & sqltypes.Result {RowsAffected : 1 })
96- == == == =
9793 type testCase struct {
98- name string
99- maxValueRequest * getMaxValueForSequencesRequestResponse
100- updateSeqTableRequest * tabletmanagerdatapb.UpdateSequenceTablesRequest
94+ name string
95+ selectMaxQuery string
96+ selectMaxResult * sqltypes.Result
97+ insertQuery string
10198 }
10299
103100 testCases := []testCase {
104101 {
105- name : "initialize sequences" ,
106- maxValueRequest : & getMaxValueForSequencesRequestResponse {
107- req : & tabletmanagerdatapb.GetMaxValueForSequencesRequest {
108- Sequences : []* tabletmanagerdatapb.GetMaxValueForSequencesRequest_SequenceMetadata {
109- {
110- BackingTableName : "my-seq1" ,
111- UsingColEscaped : "`my-col`" ,
112- UsingTableNameEscaped : fmt .Sprintf ("`%s`" , tableName ),
113- UsingTableDbNameEscaped : "`vt_targetks`" ,
114- },
115- {
116- BackingTableName : "my-seq2" ,
117- UsingColEscaped : "`my-col-2`" ,
118- UsingTableNameEscaped : fmt .Sprintf ("`%s`" , tableName2 ),
119- UsingTableDbNameEscaped : "`vt_targetks`" ,
120- },
121- },
122- },
123- res : & tabletmanagerdatapb.GetMaxValueForSequencesResponse {
124- MaxValuesBySequenceTable : map [string ]int64 {
125- "my-seq1" : 34 ,
126- "my-seq2" : 10 ,
127- },
128- },
129- },
130- updateSeqTableRequest : & tabletmanagerdatapb.UpdateSequenceTablesRequest {
131- Sequences : []* tabletmanagerdatapb.UpdateSequenceTablesRequest_SequenceMetadata {
132- {
133- BackingTableName : "my-seq1" ,
134- BackingTableDbName : "vt_" + sourceKeyspaceName ,
135- MaxValue : 34 ,
136- },
137- {
138- BackingTableName : "my-seq2" ,
139- BackingTableDbName : "vt_" + sourceKeyspaceName ,
140- MaxValue : 10 ,
141- },
142- },
143- },
102+ name : "initialize sequences" ,
103+ selectMaxQuery : "/select max.*" ,
104+ selectMaxResult : sqltypes .MakeTestResult (
105+ sqltypes .MakeTestFields ("maxval" , "int64" ),
106+ "34" ,
107+ ),
108+ insertQuery : "/insert into.*35.*" ,
144109 },
145110 {
146- name : "initialize sequences for empty tables" ,
147- maxValueRequest : & getMaxValueForSequencesRequestResponse {
148- req : & tabletmanagerdatapb.GetMaxValueForSequencesRequest {
149- Sequences : []* tabletmanagerdatapb.GetMaxValueForSequencesRequest_SequenceMetadata {
150- {
151- BackingTableName : "my-seq1" ,
152- UsingColEscaped : "`my-col`" ,
153- UsingTableNameEscaped : fmt .Sprintf ("`%s`" , tableName ),
154- UsingTableDbNameEscaped : "`vt_targetks`" ,
155- },
156- {
157- BackingTableName : "my-seq2" ,
158- UsingColEscaped : "`my-col-2`" ,
159- UsingTableNameEscaped : fmt .Sprintf ("`%s`" , tableName2 ),
160- UsingTableDbNameEscaped : "`vt_targetks`" ,
161- },
162- },
163- },
164- res : & tabletmanagerdatapb.GetMaxValueForSequencesResponse {
165- MaxValuesBySequenceTable : map [string ]int64 {},
166- },
167- },
168- updateSeqTableRequest : & tabletmanagerdatapb.UpdateSequenceTablesRequest {
169- Sequences : []* tabletmanagerdatapb.UpdateSequenceTablesRequest_SequenceMetadata {
170- {
171- BackingTableName : "my-seq1" ,
172- BackingTableDbName : "vt_" + sourceKeyspaceName ,
173- MaxValue : 0 ,
174- },
175- {
176- BackingTableName : "my-seq2" ,
177- BackingTableDbName : "vt_" + sourceKeyspaceName ,
178- MaxValue : 0 ,
179- },
180- },
181- },
111+ name : "initialize sequences for empty tables" ,
112+ selectMaxQuery : "/select max.*" ,
113+ selectMaxResult : sqltypes .MakeTestResult (
114+ sqltypes .MakeTestFields ("maxval" , "int64" ),
115+ ),
116+ insertQuery : "/insert into.*1.*" ,
182117 },
183118 }
184- >> >> >> > 81356 abde1 (VReplication : Properly Handle Sequence Table Initialization For Empty Tables (#19226 ))
185119
186120 for _ , tc := range testCases {
187121 t .Run (tc .name , func (t * testing.T ) {
188- require .NotNil (t , tc .maxValueRequest )
189- require .NotNil (t , tc .updateSeqTableRequest )
190- env .tmc .expectGetMaxValueForSequencesRequest (200 , tc .maxValueRequest )
191- env .tmc .expectUpdateSequenceTablesRequest (100 , tc .updateSeqTableRequest )
192-
193- << << << < HEAD
194- // Expect the queries to be cleared
195- assert .Emptyf (t , env .tmc .vrQueries [100 ], "expected no queries to be executed, found: %q" , env .tmc .vrQueries [100 ])
196- assert .Empty (t , env .tmc .vrQueries [200 ], "expected no queries to be executed, found: %q" , env .tmc .vrQueries [200 ])
197- == == == =
122+ // Expect the select max query to be executed
123+ env .tmc .expectVRQuery (200 , tc .selectMaxQuery , tc .selectMaxResult )
124+ // Expect the insert query to be executed
125+ env .tmc .expectVRQuery (100 , tc .insertQuery , & sqltypes.Result {RowsAffected : 1 })
126+
198127 err = sw .initializeTargetSequences (ctx , sequencesByBackingTable )
199128 assert .NoError (t , err )
200129
201- // Expect the requests to be cleared.
202- assert .Emptyf (t , env .tmc .updateSequenceTablesRequests , "expected no remaining UpdateSequenceTables requests" )
203- assert .Emptyf (t , env .tmc .getMaxValueForSequencesRequests , "expected no remaining GetMaxValueForSequences requests" )
130+ // Expect the queries to be cleared
131+ assert .Emptyf (t , env .tmc .vrQueries [ 100 ] , "expected no queries to be executed, found: %q" , env . tmc . vrQueries [ 100 ] )
132+ assert .Empty (t , env .tmc .vrQueries [ 200 ] , "expected no queries to be executed, found: %q" , env . tmc . vrQueries [ 200 ] )
204133 })
205134 }
206- >> >> >> > 81356 abde1 (VReplication : Properly Handle Sequence Table Initialization For Empty Tables (#19226 ))
207135}
208136
209137func TestGetTargetSequenceMetadata (t * testing.T ) {
0 commit comments