From fb826b2c6892d448ce874067ae02459ea320a3bd Mon Sep 17 00:00:00 2001 From: Teddy Date: Thu, 28 Nov 2024 08:09:56 +0100 Subject: [PATCH] MINOR -- propagate result to suites (#18823) * fix: update result summary for test suite * fix: stream pattern * fix: inverse null conditional logic --- .../jdbi3/TestCaseResultRepository.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TestCaseResultRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TestCaseResultRepository.java index 401095c6392..4e247fbab2b 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TestCaseResultRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TestCaseResultRepository.java @@ -4,6 +4,7 @@ import static org.openmetadata.schema.type.EventType.ENTITY_DELETED; import static org.openmetadata.service.Entity.TEST_CASE; import static org.openmetadata.service.Entity.TEST_CASE_RESULT; import static org.openmetadata.service.Entity.TEST_DEFINITION; +import static org.openmetadata.service.Entity.TEST_SUITE; import java.io.IOException; import java.util.Arrays; @@ -17,7 +18,9 @@ import javax.ws.rs.core.UriInfo; import lombok.SneakyThrows; import org.openmetadata.common.utils.CommonUtil; import org.openmetadata.schema.api.tests.CreateTestCaseResult; +import org.openmetadata.schema.tests.ResultSummary; import org.openmetadata.schema.tests.TestCase; +import org.openmetadata.schema.tests.TestSuite; import org.openmetadata.schema.tests.type.TestCaseResult; import org.openmetadata.schema.tests.type.TestCaseStatus; import org.openmetadata.schema.type.EntityReference; @@ -222,6 +225,45 @@ public class TestCaseResultRepository extends EntityTimeSeriesRepository fqns = + testCase.getTestSuites() != null + ? testCase.getTestSuites().stream().map(TestSuite::getFullyQualifiedName).toList() + : null; + TestSuiteRepository testSuiteRepository = new TestSuiteRepository(); + if (fqns != null) { + for (String fqn : fqns) { + TestSuite testSuite = Entity.getEntityByName(TEST_SUITE, fqn, "*", Include.ALL); + if (testSuite != null) { + TestSuite original = JsonUtils.deepCopy(testSuite, TestSuite.class); + List resultSummaries = testSuite.getTestCaseResultSummary(); + + if (resultSummaries != null) { + resultSummaries.stream() + .filter(s -> s.getTestCaseName().equals(testCase.getFullyQualifiedName())) + .findFirst() + .ifPresent( + s -> { + s.setStatus(testCase.getTestCaseStatus()); + s.setTimestamp(testCase.getTestCaseResult().getTimestamp()); + }); + } else { + testSuite.setTestCaseResultSummary( + List.of( + new ResultSummary() + .withTestCaseName(testCase.getFullyQualifiedName()) + .withStatus(testCase.getTestCaseStatus()) + .withTimestamp(testCase.getTestCaseResult().getTimestamp()))); + } + EntityRepository.EntityUpdater entityUpdater = + testSuiteRepository.getUpdater(original, testSuite, EntityRepository.Operation.PATCH); + entityUpdater.update(); + } + } + } } @Override