From 9010528e535ca9fe26cdd65a94b8e3ecec58574f Mon Sep 17 00:00:00 2001 From: Lydia Ralph Date: Thu, 29 Jan 2026 14:08:14 +0000 Subject: [PATCH] Refactor to single log output to make test less flaky --- .../migration/BatchImportMissingMkAssets.java | 13 +++++++------ .../BatchImportMissingMkAssetsTest.java | 16 ++++++++-------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/preapi/tasks/migration/BatchImportMissingMkAssets.java b/src/main/java/uk/gov/hmcts/reform/preapi/tasks/migration/BatchImportMissingMkAssets.java index c00178bdac..98eb726d0d 100644 --- a/src/main/java/uk/gov/hmcts/reform/preapi/tasks/migration/BatchImportMissingMkAssets.java +++ b/src/main/java/uk/gov/hmcts/reform/preapi/tasks/migration/BatchImportMissingMkAssets.java @@ -37,6 +37,8 @@ import java.util.UUID; import java.util.stream.Collectors; +import static java.lang.String.format; + @Slf4j @Component public class BatchImportMissingMkAssets extends RobotUserTask { @@ -185,7 +187,7 @@ private boolean copyBlobBetweenContainers(RecordingDTO recording) { ); return true; } catch (Exception e) { - String message = String.format( + String message = format( "Failed to copy blob '%s' between containers: %s -> %s", blobName, azureVodafoneStorageService.getStorageAccountName() + "/" + vfSourceContainer, @@ -222,10 +224,9 @@ private List awaitBatchComplete(List jobNames, IMediaService med } while (!jobs.isEmpty() && sleptFor < maxSleepTime); if (!jobs.isEmpty()) { log.error( - "Timeout waiting for transform jobs to complete for batch, {} job(s) still processing", jobs.size()); - jobs.forEach(job -> { - log.error("Unknown job processing state: {}", job); - }); + format("Timeout waiting for transform jobs to complete for batch, %d job(s) still processing. " + + "Job names: %s", + jobs.size(), String.join(", ", jobs))); var unknownJobs = jobs; return jobNames.stream().filter(name -> !unknownJobs.contains(name)).toList(); } else { @@ -330,7 +331,7 @@ protected void writeCsvReport() { writer.println("RecordingId,CaseReference,Filename,Duration,MigrationStatus,ErrorMessage"); for (ReportItem item : reportItems) { - String line = String.format( + String line = format( "%s,%s,%s,%d,%s,%s", item.recordingId, item.caseReference, diff --git a/src/test/java/uk/gov/hmcts/reform/preapi/tasks/migration/BatchImportMissingMkAssetsTest.java b/src/test/java/uk/gov/hmcts/reform/preapi/tasks/migration/BatchImportMissingMkAssetsTest.java index 120de48391..b4a40f7af4 100644 --- a/src/test/java/uk/gov/hmcts/reform/preapi/tasks/migration/BatchImportMissingMkAssetsTest.java +++ b/src/test/java/uk/gov/hmcts/reform/preapi/tasks/migration/BatchImportMissingMkAssetsTest.java @@ -464,7 +464,7 @@ void runFailureBatchTimeout(CapturedOutput output) throws IOException { assertThat(output.getOut()) .contains("Timeout waiting for transform jobs to complete for batch, 1 job(s) still processing"); assertThat(output.getOut()).contains("Waiting for 1/1 transform jobs to complete for batch"); - assertThat(output.getOut()).contains("Unknown job processing state: " + jobName); + assertThat(output.getOut()).contains("Job names: " + jobName); } @Test @@ -474,25 +474,25 @@ void findAllVodafoneRecordings_ShouldReturnVodafoneRecordingsWithNullDuration() recording1.setId(UUID.randomUUID()); recording1.setDuration(null); recording1.setDeletedAt(null); - + CaptureSessionDTO captureSession1 = new CaptureSessionDTO(); captureSession1.setOrigin(RecordingOrigin.VODAFONE); recording1.setCaptureSession(captureSession1); - + RecordingDTO recording2 = new RecordingDTO(); recording2.setId(UUID.randomUUID()); - recording2.setDuration(Duration.ofMinutes(5)); + recording2.setDuration(Duration.ofMinutes(5)); recording2.setDeletedAt(null); - + CaptureSessionDTO captureSession2 = new CaptureSessionDTO(); captureSession2.setOrigin(RecordingOrigin.VODAFONE); recording2.setCaptureSession(captureSession2); - + when(recordingService.findAllVodafoneRecordings()) .thenReturn(List.of(recording1)); - + List result = recordingService.findAllVodafoneRecordings(); - + assertThat(result).hasSize(1); assertThat(result.get(0).getId()).isEqualTo(recording1.getId()); verify(recordingService, times(1)).findAllVodafoneRecordings();