609
}
610
611
>
func (s *visibilitySuite) TestSelect_MinStartTime_MaxStartTime_WorkflowID_StatusClose_Multiple() {
visibility.go
612
>
numStartTime := 20
613
>
visibilityPerStartTime := 4
614
>
pageSize := 5
615
>
616
>
var visibilities []sqlplugin.VisibilityRow
617
>
618
>
namespaceID := primitives.NewUUID()
619
>
workflowID := shuffle.String(testVisibilityWorkflowID)
620
>
startTime := s.now()
621
>
executionTime := startTime.Add(time.Second)
622
>
status := int32(enumspb.WORKFLOW_EXECUTION_STATUS_COMPLETED)
623
>
closeTime := executionTime.Add(time.Second)
624
>
historyLength := rand.Int63()
625
>
minStartTime := closeTime
626
>
maxStartTime := closeTime.Add(time.Duration(numStartTime) * time.Second)
627
>
for range numStartTime {
628
>
for range visibilityPerStartTime {
629
>
runID := primitives.NewUUID()
630
>
workflowTypeName := shuffle.String(testVisibilityWorkflowTypeName)
631
>
visibility := s.newRandomVisibilityRow(
632
>
namespaceID,
633
>
runID,
634
>
workflowTypeName,
635
>
workflowID,
636
>
startTime,
637
>
executionTime,
638
>
status,
639
>
new(closeTime),
640
>
new(historyLength),
641
>
)
642
>
result, err := s.store.ReplaceIntoVisibility(newVisibilityContext(), &visibility)
643
>
s.NoError(err)
644
>
rowsAffected, err := result.RowsAffected()
645
>
s.NoError(err)
646
>
s.Equal(1, int(rowsAffected))
647
>
648
>
visibilities = append(visibilities, visibility)
649
>
}
650
>
closeTime = closeTime.Add(time.Second)
651
}
652
653
>
selectFilter := sqlplugin.VisibilitySelectFilter{
visibility.go
654
>
NamespaceID: namespaceID.String(),
655
>
WorkflowID: new(workflowID),
656
>
RunID: new(""),
657
>
WorkflowTypeName: nil,
658
>
MinTime: new(minStartTime),
659
>
MaxTime: new(maxStartTime),
660
>
Status: int32(enumspb.WORKFLOW_EXECUTION_STATUS_UNSPECIFIED),
661
>
PageSize: new(pageSize),
662
>
}
663
>
var rows []sqlplugin.VisibilityRow
664
>
for {
665
>
rowsPerPage, err := s.store.SelectFromVisibility(newVisibilityContext(), selectFilter)
666
>
s.NoError(err)
667
>
rows = append(rows, rowsPerPage...)
668
>
669
>
if len(rowsPerPage) > 0 {
670
>
lastVisibility := rowsPerPage[len(rowsPerPage)-1]
671
>
selectFilter.MaxTime = lastVisibility.CloseTime
672
>
selectFilter.RunID = new(lastVisibility.RunID)
673
>
} else {
674
>
break
675
}
676
}
678
>
s.sortByCloseTimeDescRunIDAsc(visibilities)
679
>
for index := range rows {
680
>
rows[index].NamespaceID = namespaceID.String()
681
>
}
682
>
s.Equal(visibilities, rows)
683
}
684