Skip to content

Commit c9cc9e0

Browse files
committed
feat: Allow for DeleteRecord tests to work with batch writers
1 parent c82d006 commit c9cc9e0

File tree

2 files changed

+39
-49
lines changed

2 files changed

+39
-49
lines changed

plugin/testing_write.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ type WriterTestSuiteTests struct {
8383
SkipSpecificMigrations Migrations
8484

8585
SkipSpecificWriteTests WriteTests
86+
87+
DeleteRecordBatchSize int
8688
}
8789

8890
type NewPluginFunc func() *Plugin

plugin/testing_write_delete.go

Lines changed: 37 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -177,70 +177,58 @@ func (s *WriterTestSuite) testDeleteRecordBasic(ctx context.Context, t *testing.
177177
r.NoErrorf(err, "failed to read")
178178
r.EqualValuesf(1, TotalRows(records), "unexpected amount of items")
179179

180-
// create value for delete statement but nothing will be deleted because ID value isn't present
181-
bldrDeleteNoMatch := array.NewRecordBuilder(memory.DefaultAllocator, (&schema.Table{
182-
Name: tableName,
183-
Columns: schema.ColumnList{
184-
schema.Column{Name: "id", Type: arrow.PrimitiveTypes.Int64},
185-
},
186-
}).ToArrowSchema())
187-
bldrDeleteNoMatch.Field(0).(*array.Int64Builder).Append(1)
188-
deleteValue := bldrDeleteNoMatch.NewRecord()
189-
190-
r.NoErrorf(s.plugin.writeOne(ctx, &message.WriteDeleteRecord{
191-
DeleteRecord: message.DeleteRecord{
192-
TableName: table.Name,
193-
WhereClause: message.PredicateGroups{
194-
{
195-
GroupingType: "AND",
196-
Predicates: []message.Predicate{
197-
{
198-
Operator: "eq",
199-
Column: "id",
200-
Record: deleteValue,
201-
},
202-
},
203-
},
204-
},
205-
},
206-
}), "failed to delete record no match")
180+
r.NoError(s.plugin.WriteAll(ctx, s.toMessageBatch(table, 1)), "failed to delete record")
207181

208182
records, err = s.plugin.readAll(ctx, table)
209183
r.NoErrorf(err, "failed to read after delete with no match")
210184
r.EqualValuesf(1, TotalRows(records), "unexpected amount of items after delete with no match")
211185
r.Emptyf(RecordsDiff(table.ToArrowSchema(), records, []arrow.Record{record1}), "record differs after delete with no match")
212186

213-
// create value for delete statement will be delete One record
214-
bldrDeleteMatch := array.NewRecordBuilder(memory.DefaultAllocator, (&schema.Table{
215-
Name: tableName,
187+
r.NoError(s.plugin.WriteAll(ctx, s.toMessageBatch(table, 0)), "failed to delete record")
188+
189+
records, err = s.plugin.readAll(ctx, table)
190+
r.NoErrorf(err, "failed to read after delete with match")
191+
r.EqualValuesf(0, TotalRows(records), "unexpected amount of items after delete with match")
192+
}
193+
194+
func (s *WriterTestSuite) toMessageBatch(table *schema.Table, val int64) []message.WriteMessage {
195+
batchSize := 1
196+
if s.tests.DeleteRecordBatchSize > 0 {
197+
batchSize = s.tests.DeleteRecordBatchSize
198+
}
199+
200+
messages := make([]message.WriteMessage, batchSize)
201+
202+
builder := array.NewRecordBuilder(memory.DefaultAllocator, (&schema.Table{
203+
Name: table.Name,
216204
Columns: schema.ColumnList{
217205
schema.Column{Name: "id", Type: arrow.PrimitiveTypes.Int64},
218206
},
219207
}).ToArrowSchema())
220-
bldrDeleteMatch.Field(0).(*array.Int64Builder).Append(0)
221-
deleteValue = bldrDeleteMatch.NewRecord()
222-
223-
r.NoErrorf(s.plugin.writeOne(ctx, &message.WriteDeleteRecord{
224-
DeleteRecord: message.DeleteRecord{
225-
TableName: table.Name,
226-
WhereClause: message.PredicateGroups{
227-
{
228-
GroupingType: "AND",
229-
Predicates: []message.Predicate{
230-
{
231-
Operator: "eq",
232-
Column: "id",
233-
Record: deleteValue,
208+
builder.Field(0).(*array.Int64Builder).Append(val)
209+
deleteValue := builder.NewRecord()
210+
211+
for i, _ := range messages {
212+
messages[i] = &message.WriteDeleteRecord{
213+
DeleteRecord: message.DeleteRecord{
214+
TableName: table.Name,
215+
WhereClause: message.PredicateGroups{
216+
{
217+
GroupingType: "AND",
218+
Predicates: []message.Predicate{
219+
{
220+
Operator: "eq",
221+
Column: "id",
222+
Record: deleteValue,
223+
},
234224
},
235225
},
236226
},
237227
},
238-
},
239-
}), "failed to delete record no match")
228+
}
229+
}
240230

241-
records, err = s.plugin.readAll(ctx, table)
242-
r.NoErrorf(err, "failed to read after delete with match")
243-
r.EqualValuesf(0, TotalRows(records), "unexpected amount of items after delete with match")
231+
return messages
244232
}
245233

246234
func (s *WriterTestSuite) testDeleteAllRecords(ctx context.Context, t *testing.T) {

0 commit comments

Comments
 (0)