Skip to content

Commit

Permalink
DMP-4701: Performance Testing - Add Audio - Test Harness - Post /audi…
Browse files Browse the repository at this point in the history
…os/metadata - could not execute statement [ERROR: duplicate key value violates unique constraint "hearing_media_ae_pk" (#2553)
  • Loading branch information
Ben-Edwards-cgi authored Feb 5, 2025
1 parent ce04598 commit 034bf71
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ void versionUpload(List<MediaEntity> mediaToSupersede,
log.info("Revised version of media added with filename {} and antecedent media id {}", newMediaEntity.getMediaFile(),
newMediaEntity.getId().toString());
}
mediaRepository.save(newMediaEntity);
newMediaEntity = mediaRepository.saveAndFlush(newMediaEntity);
log.info("Saved media id {}", newMediaEntity.getId());

OffsetDateTime startDate = addAudioMetadataRequest.getStartedAt();
Expand Down Expand Up @@ -268,9 +268,9 @@ void deleteMediaLinkingAndSetCurrentFalse(MediaEntity mediaEntity) {
}

void saveExternalObjectDirectory(UUID externalLocation,
String checksum,
UserAccountEntity userAccountEntity,
MediaEntity mediaEntity) {
String checksum,
UserAccountEntity userAccountEntity,
MediaEntity mediaEntity) {
var externalObjectDirectoryEntity = new ExternalObjectDirectoryEntity();
externalObjectDirectoryEntity.setMedia(mediaEntity);
externalObjectDirectoryEntity.setStatus(EodHelper.storedStatus());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,9 +93,11 @@ public class HearingEntity extends CreatedModifiedBaseEntity
private List<AnnotationEntity> annotations = new ArrayList<>();

public void addMedia(MediaEntity mediaEntity) {
if (!mediaList.contains(mediaEntity)) {
if (!containsMedia(mediaEntity)) {
mediaList.add(mediaEntity);
mediaEntity.getHearingList().add(this);
if (this.id == null || mediaEntity.getHearingList().stream().noneMatch(hearing -> this.id.equals(hearing.getId()))) {
mediaEntity.getHearingList().add(this);
}
}
}

Expand Down Expand Up @@ -125,6 +127,6 @@ public void addAnnotation(AnnotationEntity annotationEntity) {
}

public boolean containsMedia(MediaEntity mediaEntity) {
return mediaList.stream().anyMatch(media -> media.getId().equals(mediaEntity.getId()));
return mediaEntity.getId() != null && mediaList.stream().anyMatch(media -> mediaEntity.getId().equals(media.getId()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,8 @@ void setUp() {
audioAsyncService));
ReflectionTestUtils.setField(audioService, "smallFileSizeMaxLength", Duration.ofSeconds(2));
ReflectionTestUtils.setField(audioService, "smallFileSize", 1024);

lenient().doAnswer(invocation -> invocation.getArgument(0)).when(mediaRepository).saveAndFlush(any());
}

@Test
Expand Down Expand Up @@ -154,7 +156,7 @@ void addAudio_shouldUploadToInboundAndSave_whenFileAndMetadataUsed() {

MediaEntity mediaEntity = createMediaEntity(startedAt, endedAt);
mediaEntity.setId(10);
when(mediaRepository.save(any(MediaEntity.class))).thenReturn(mediaEntity);
when(mediaRepository.saveAndFlush(any(MediaEntity.class))).thenReturn(mediaEntity);

MockMultipartFile audioFile = new MockMultipartFile(
"addAudio",
Expand All @@ -171,7 +173,7 @@ void addAudio_shouldUploadToInboundAndSave_whenFileAndMetadataUsed() {

// Then
verify(dataManagementApi).saveBlobDataToInboundContainer(inboundBlobStorageArgumentCaptor.capture());
verify(mediaRepository, times(2)).save(mediaEntityArgumentCaptor.capture());
verify(mediaRepository, times(1)).save(mediaEntityArgumentCaptor.capture());
verify(hearingRepository, times(3)).saveAndFlush(any());
verify(logApi, times(1)).audioUploaded(addAudioMetadataRequest);
verify(externalObjectDirectoryRepository).save(externalObjectDirectoryEntityArgumentCaptor.capture());
Expand Down Expand Up @@ -217,7 +219,7 @@ void addAudio_shouldSaveMediaAndEod_whenMetadataOnly() {

MediaEntity mediaEntity = createMediaEntity(startedAt, endedAt);
mediaEntity.setId(10);
when(mediaRepository.save(any(MediaEntity.class))).thenReturn(mediaEntity);
when(mediaRepository.saveAndFlush(any(MediaEntity.class))).thenReturn(mediaEntity);

AddAudioMetadataRequest addAudioMetadataRequest = createAddAudioRequest(startedAt, endedAt);
when(dataManagementApi.getChecksum(any(), any()))
Expand All @@ -228,7 +230,7 @@ void addAudio_shouldSaveMediaAndEod_whenMetadataOnly() {
audioService.addAudio(externalLocation, addAudioMetadataRequest);

// Then
verify(mediaRepository, times(2)).save(mediaEntityArgumentCaptor.capture());
verify(mediaRepository, times(1)).save(mediaEntityArgumentCaptor.capture());
verify(hearingRepository, times(3)).saveAndFlush(any());
verify(logApi, times(1)).audioUploaded(addAudioMetadataRequest);
verify(externalObjectDirectoryRepository).save(externalObjectDirectoryEntityArgumentCaptor.capture());
Expand Down

0 comments on commit 034bf71

Please sign in to comment.