1246
}
1247
1248
>
func (s *visibilitySuite) TestSelect_MinStartTime_MaxStartTime_StatusCloseByType_Multiple() {
visibility.go
1249
>
for _, status := range testVisibilityCloseStatus {
1250
>
s.testSelectMinStartTimeMaxStartTimeStatusCloseByTypeMultiple(status)
1251
>
}
1252
}
1253
1254
func (s *visibilitySuite) testSelectMinStartTimeMaxStartTimeStatusCloseByTypeMultiple(
1255
status enumspb.WorkflowExecutionStatus,
1257
>
numStartTime := 20
1258
>
visibilityPerStartTime := 4
1259
>
pageSize := 5
1260
>
1261
>
var visibilities []sqlplugin.VisibilityRow
1262
>
1263
>
namespaceID := primitives.NewUUID()
1264
>
startTime := s.now()
1265
>
executionTime := startTime.Add(time.Second)
1266
>
closeTime := executionTime.Add(time.Second)
1267
>
historyLength := rand.Int63()
1268
>
minStartTime := closeTime
1269
>
maxStartTime := closeTime.Add(time.Duration(numStartTime) * time.Second)
1270
>
for range numStartTime {
1271
>
for range visibilityPerStartTime {
1272
>
workflowID := shuffle.String(testVisibilityWorkflowID)
1273
>
runID := primitives.NewUUID()
1274
>
workflowTypeName := shuffle.String(testVisibilityWorkflowTypeName)
1275
>
visibility := s.newRandomVisibilityRow(
1276
>
namespaceID,
1277
>
runID,
1278
>
workflowTypeName,
1279
>
workflowID,
1280
>
startTime,
1281
>
executionTime,
1282
>
int32(status),
1283
>
new(closeTime),
1284
>
new(historyLength),
1285
>
)
1286
>
result, err := s.store.ReplaceIntoVisibility(newVisibilityContext(), &visibility)
1287
>
s.NoError(err)
1288
>
rowsAffected, err := result.RowsAffected()
1289
>
s.NoError(err)
1290
>
s.Equal(1, int(rowsAffected))
1291
>
1292
>
visibilities = append(visibilities, visibility)
1293
>
}
1294
>
closeTime = closeTime.Add(time.Second)
1295
}
1296
1297
>
selectFilter := sqlplugin.VisibilitySelectFilter{
visibility.go
1298
>
NamespaceID: namespaceID.String(),
1299
>
WorkflowID: nil,
1300
>
RunID: new(""),
1301
>
WorkflowTypeName: nil,
1302
>
MinTime: new(minStartTime),
1303
>
MaxTime: new(maxStartTime),
1304
>
Status: int32(status),
1305
>
PageSize: new(pageSize),
1306
>
}
1307
>
var rows []sqlplugin.VisibilityRow
1308
>
for {
1309
>
rowsPerPage, err := s.store.SelectFromVisibility(newVisibilityContext(), selectFilter)
1310
>
s.NoError(err)
1311
>
rows = append(rows, rowsPerPage...)
1312
>
1313
>
if len(rowsPerPage) > 0 {
1314
>
lastVisibility := rowsPerPage[len(rowsPerPage)-1]
1315
>
selectFilter.MaxTime = lastVisibility.CloseTime
1316
>
selectFilter.RunID = new(lastVisibility.RunID)
1317
>
} else {
1318
>
break
1319
}
1320
}
1321
1323
>
s.sortByCloseTimeDescRunIDAsc(visibilities)
1324
>
for index := range rows {
1325
>
rows[index].NamespaceID = namespaceID.String()
1326
>
}
1327
>
s.Equal(visibilities, rows)
1328
}
1329