Skip to content

Commit

Permalink
make test ~great~ deterministic again
Browse files Browse the repository at this point in the history
  • Loading branch information
Pascal-Delange committed Feb 17, 2025
1 parent cd5ef19 commit 08a758f
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 13 deletions.
30 changes: 17 additions & 13 deletions repositories/ingestion_repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,26 +73,30 @@ func objectIdAndUpdatedAtFromPayload(payload models.ClientObject) (string, time.
return objectId, updatedAt
}

// Keep only the most recent (as per updated_at) payload for each object_id. In case of equal values seen, the first one wins.
func (repo *IngestionRepositoryImpl) mostRecentPayloadsByObjectId(payloads []models.ClientObject) ([]string, []models.ClientObject) {
recentMap := make(map[string]models.ClientObject)
for _, payload := range payloads {
idxToKeep := make(map[string]int, len(payloads))
for i, payload := range payloads {
objectId, updatedAt := objectIdAndUpdatedAtFromPayload(payload)

if seen, ok := recentMap[objectId]; ok {
_, seenUpdatedAt := objectIdAndUpdatedAtFromPayload(seen)
if updatedAt.After(seenUpdatedAt) {
recentMap[objectId] = payload
}
previousIdForThisObject, ok := idxToKeep[objectId]
if !ok {
idxToKeep[objectId] = i
} else {
recentMap[objectId] = payload
previousUpdatedAt := payloads[previousIdForThisObject].Data["updated_at"].(time.Time)
if updatedAt.After(previousUpdatedAt) {
idxToKeep[objectId] = i
}
}

}

mostRecentPayloads := make([]models.ClientObject, 0, len(recentMap))
mostRecentObjectIds := make([]string, 0, len(recentMap))
for key, obj := range recentMap {
mostRecentObjectIds = append(mostRecentObjectIds, key)
mostRecentPayloads = append(mostRecentPayloads, obj)
mostRecentPayloads := make([]models.ClientObject, len(idxToKeep))
mostRecentObjectIds := make([]string, len(idxToKeep))
for _, idx := range idxToKeep {
mostRecentPayloads[idx] = payloads[idx]
objectId, _ := objectIdAndUpdatedAtFromPayload(payloads[idx])
mostRecentObjectIds[idx] = objectId
}

return mostRecentObjectIds, mostRecentPayloads
Expand Down
1 change: 1 addition & 0 deletions usecases/ingestion_usecase_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,7 @@ func (suite *IngestionUsecaseTestSuite) TestIngestionUsecase_IngestObjects_with_
uc := suite.makeUsecase()

suite.enforceSecurity.On("CanIngest", suite.organizationId).Return(nil)

suite.dataModelRepository.On("GetDataModel", mock.MatchedBy(matchContext),
mock.MatchedBy(matchExec), suite.organizationId, false).
Return(suite.dataModel, nil)
Expand Down

0 comments on commit 08a758f

Please sign in to comment.