1114
}
1115
1116
>
func (s *visibilitySuite) TestSelect_MinStartTime_MaxStartTime_StatusClose_Multiple() {
visibility.go
1117
>
numStartTime := 20
1118
>
visibilityPerStartTime := 4
1119
>
pageSize := 5
1120
>
1121
>
var visibilities []sqlplugin.VisibilityRow
1122
>
1123
>
namespaceID := primitives.NewUUID()
1124
>
startTime := s.now()
1125
>
executionTime := startTime.Add(time.Second)
1126
>
1127
>
closeTime := executionTime.Add(time.Second)
1128
>
historyLength := rand.Int63()
1129
>
minStartTime := closeTime
1130
>
maxStartTime := closeTime.Add(time.Duration(numStartTime) * time.Second)
1131
>
for range numStartTime {
1132
>
for range visibilityPerStartTime {
1133
>
workflowID := shuffle.String(testVisibilityWorkflowID)
1134
>
runID := primitives.NewUUID()
1135
>
workflowTypeName := shuffle.String(testVisibilityWorkflowTypeName)
1136
>
status := int32(testVisibilityCloseStatus[rand.Intn(len(testVisibilityCloseStatus))])
1137
>
visibility := s.newRandomVisibilityRow(
1138
>
namespaceID,
1139
>
runID,
1140
>
workflowTypeName,
1141
>
workflowID,
1142
>
startTime,
1143
>
executionTime,
1144
>
status,
1145
>
new(closeTime),
1146
>
new(historyLength),
1147
>
)
1148
>
result, err := s.store.ReplaceIntoVisibility(newVisibilityContext(), &visibility)
1149
>
s.NoError(err)
1150
>
rowsAffected, err := result.RowsAffected()
1151
>
s.NoError(err)
1152
>
s.Equal(1, int(rowsAffected))
1153
>
1154
>
visibilities = append(visibilities, visibility)
1155
>
}
1156
>
closeTime = closeTime.Add(time.Second)
1157
}
1158
1159
>
selectFilter := sqlplugin.VisibilitySelectFilter{
visibility.go
1160
>
NamespaceID: namespaceID.String(),
1161
>
WorkflowID: nil,
1162
>
RunID: new(""),
1163
>
WorkflowTypeName: nil,
1164
>
MinTime: new(minStartTime),
1165
>
MaxTime: new(maxStartTime),
1166
>
Status: int32(enumspb.WORKFLOW_EXECUTION_STATUS_UNSPECIFIED),
1167
>
PageSize: new(pageSize),
1168
>
}
1169
>
var rows []sqlplugin.VisibilityRow
1170
>
for {
1171
>
rowsPerPage, err := s.store.SelectFromVisibility(newVisibilityContext(), selectFilter)
1172
>
s.NoError(err)
1173
>
rows = append(rows, rowsPerPage...)
1174
>
1175
>
if len(rowsPerPage) > 0 {
1176
>
lastVisibility := rowsPerPage[len(rowsPerPage)-1]
1177
>
selectFilter.MaxTime = lastVisibility.CloseTime
1178
>
selectFilter.RunID = new(lastVisibility.RunID)
1179
>
} else {
1180
>
break
1181
}
1182
}
1184
>
s.sortByCloseTimeDescRunIDAsc(visibilities)
1185
>
for index := range rows {
1186
>
rows[index].NamespaceID = namespaceID.String()
1187
>
}
1188
>
s.Equal(visibilities, rows)
1189
}
1190