From a7e33fd45c7853e8501cdc732f40f186e46fab4a Mon Sep 17 00:00:00 2001 From: Thiago Hora Date: Thu, 28 Nov 2024 12:58:19 +0100 Subject: [PATCH] [OPIK-487] Fix null pointer --- .../src/main/java/com/comet/opik/domain/SpanService.java | 3 ++- .../main/java/com/comet/opik/domain/TraceService.java | 3 ++- .../opik/api/resources/v1/priv/SpansResourceTest.java | 9 +++++++++ .../opik/api/resources/v1/priv/TracesResourceTest.java | 9 +++++++++ 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/apps/opik-backend/src/main/java/com/comet/opik/domain/SpanService.java b/apps/opik-backend/src/main/java/com/comet/opik/domain/SpanService.java index e7a8e9f296..b9608d50e4 100644 --- a/apps/opik-backend/src/main/java/com/comet/opik/domain/SpanService.java +++ b/apps/opik-backend/src/main/java/com/comet/opik/domain/SpanService.java @@ -300,7 +300,8 @@ private List bindSpanToProjectAndId(SpanBatch batch, List project public Mono getStats(@NonNull SpanSearchCriteria criteria) { if (criteria.projectId() != null) { - return spanDAO.getStats(criteria); + return spanDAO.getStats(criteria) + .switchIfEmpty(Mono.just(ProjectStats.empty())); } return makeMonoContextAware( diff --git a/apps/opik-backend/src/main/java/com/comet/opik/domain/TraceService.java b/apps/opik-backend/src/main/java/com/comet/opik/domain/TraceService.java index 7f10bd8a35..5597b59aad 100644 --- a/apps/opik-backend/src/main/java/com/comet/opik/domain/TraceService.java +++ b/apps/opik-backend/src/main/java/com/comet/opik/domain/TraceService.java @@ -356,7 +356,8 @@ public Mono getTraceBIInformation() { public Mono getStats(@NonNull TraceSearchCriteria criteria) { if (criteria.projectId() != null) { - return dao.getStats(criteria); + return dao.getStats(criteria) + .switchIfEmpty(Mono.just(ProjectStats.empty())); } return getProjectByName(criteria.projectName()) diff --git a/apps/opik-backend/src/test/java/com/comet/opik/api/resources/v1/priv/SpansResourceTest.java b/apps/opik-backend/src/test/java/com/comet/opik/api/resources/v1/priv/SpansResourceTest.java index fceb2feb3e..b52d34ed41 100644 --- a/apps/opik-backend/src/test/java/com/comet/opik/api/resources/v1/priv/SpansResourceTest.java +++ b/apps/opik-backend/src/test/java/com/comet/opik/api/resources/v1/priv/SpansResourceTest.java @@ -4847,6 +4847,15 @@ void feedback__whenFeedbackSpanBatchHasMaxSize__thenReturnNoContentAndCreateScor @TestInstance(TestInstance.Lifecycle.PER_CLASS) class GetSpanStats { + @Test + @DisplayName("when project id does not exist, then return empty list") + void getSpanStats__whenProjectIdDoesNotExist__thenReturnEmptyList() { + + UUID projectId = generator.generate(); + + getStatsAndAssert(null, projectId, null, null, null, API_KEY, TEST_WORKSPACE, List.of()); + } + @Test void findWithUsage() { var projectName = RandomStringUtils.randomAlphanumeric(10); diff --git a/apps/opik-backend/src/test/java/com/comet/opik/api/resources/v1/priv/TracesResourceTest.java b/apps/opik-backend/src/test/java/com/comet/opik/api/resources/v1/priv/TracesResourceTest.java index 09fa3b16b2..03b410d95d 100644 --- a/apps/opik-backend/src/test/java/com/comet/opik/api/resources/v1/priv/TracesResourceTest.java +++ b/apps/opik-backend/src/test/java/com/comet/opik/api/resources/v1/priv/TracesResourceTest.java @@ -4947,6 +4947,15 @@ void feedback__whenFeedbackTraceIdIsNotValid__thenReturn400() { @TestInstance(TestInstance.Lifecycle.PER_CLASS) class GetTraceStats { + @Test + @DisplayName("when project id does not exist, then return empty list") + void getTraceStats__whenProjectIdDoesNotExist__thenReturnEmptyList() { + + UUID projectId = generator.generate(); + + getStatsAndAssert(null, projectId, null, API_KEY, TEST_WORKSPACE, List.of()); + } + @Test @DisplayName("when project name and project id are null, then return bad request") void getTraceStats__whenProjectNameAndIdAreNull__thenReturnBadRequest() {