858
}
859
860
>
func (s *visibilitySuite) TestSelect_MinStartTime_MaxStartTime_WorkflowTypeName_StatusClose_Multiple() {
visibility.go
861
>
numStartTime := 20
862
>
visibilityPerStartTime := 4
863
>
pageSize := 5
864
>
865
>
var visibilities []sqlplugin.VisibilityRow
866
>
867
>
namespaceID := primitives.NewUUID()
868
>
workflowTypeName := shuffle.String(testVisibilityWorkflowTypeName)
869
>
startTime := s.now()
870
>
executionTime := startTime.Add(time.Second)
871
>
status := int32(enumspb.WORKFLOW_EXECUTION_STATUS_COMPLETED)
872
>
closeTime := executionTime.Add(time.Second)
873
>
historyLength := rand.Int63()
874
>
minStartTime := closeTime
875
>
maxStartTime := closeTime.Add(time.Duration(numStartTime) * time.Second)
876
>
for range numStartTime {
877
>
for range visibilityPerStartTime {
878
>
workflowID := shuffle.String(testVisibilityWorkflowID)
879
>
runID := primitives.NewUUID()
880
>
visibility := s.newRandomVisibilityRow(
881
>
namespaceID,
882
>
runID,
883
>
workflowTypeName,
884
>
workflowID,
885
>
startTime,
886
>
executionTime,
887
>
status,
888
>
new(closeTime),
889
>
new(historyLength),
890
>
)
891
>
result, err := s.store.ReplaceIntoVisibility(newVisibilityContext(), &visibility)
892
>
s.NoError(err)
893
>
rowsAffected, err := result.RowsAffected()
894
>
s.NoError(err)
895
>
s.Equal(1, int(rowsAffected))
896
>
897
>
visibilities = append(visibilities, visibility)
898
>
}
899
>
closeTime = closeTime.Add(time.Second)
900
}
901
902
>
selectFilter := sqlplugin.VisibilitySelectFilter{
visibility.go
903
>
NamespaceID: namespaceID.String(),
904
>
WorkflowID: nil,
905
>
RunID: new(""),
906
>
WorkflowTypeName: new(workflowTypeName),
907
>
MinTime: new(minStartTime),
908
>
MaxTime: new(maxStartTime),
909
>
Status: int32(enumspb.WORKFLOW_EXECUTION_STATUS_UNSPECIFIED),
910
>
PageSize: new(pageSize),
911
>
}
912
>
var rows []sqlplugin.VisibilityRow
913
>
for {
914
>
rowsPerPage, err := s.store.SelectFromVisibility(newVisibilityContext(), selectFilter)
915
>
s.NoError(err)
916
>
rows = append(rows, rowsPerPage...)
917
>
918
>
if len(rowsPerPage) > 0 {
919
>
lastVisibility := rowsPerPage[len(rowsPerPage)-1]
920
>
selectFilter.MaxTime = lastVisibility.CloseTime
921
>
selectFilter.RunID = new(lastVisibility.RunID)
922
>
} else {
923
>
break
924
}
925
}
927
>
s.sortByCloseTimeDescRunIDAsc(visibilities)
928
>
for index := range rows {
929
>
rows[index].NamespaceID = namespaceID.String()
930
>
}
931
>
s.Equal(visibilities, rows)
932
}
933