From a167c79b2fc6c4fe27f5285608be135da8ad0374 Mon Sep 17 00:00:00 2001 From: KrupaNagabhushan Date: Mon, 30 Jun 2025 17:52:46 +0100 Subject: [PATCH] Fix TeivIngestionHealthIndicatorTest and post schemas test failures Issue-ID: SMO-191 Change-Id: If7ada391b57a2e353a1398712d80f7193218dd92 Signed-off-by: KrupaNagabhushan --- .../teiv/utils/yangparser/YangFindingsManager.java | 26 +++++++++++++--------- .../health/TeivIngestionHealthIndicatorTest.java | 9 ++++++++ 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/teiv/src/main/java/org/oran/smo/teiv/utils/yangparser/YangFindingsManager.java b/teiv/src/main/java/org/oran/smo/teiv/utils/yangparser/YangFindingsManager.java index 4dfc9d2..ccc97d5 100644 --- a/teiv/src/main/java/org/oran/smo/teiv/utils/yangparser/YangFindingsManager.java +++ b/teiv/src/main/java/org/oran/smo/teiv/utils/yangparser/YangFindingsManager.java @@ -23,6 +23,7 @@ package org.oran.smo.teiv.utils.yangparser; import static org.oran.smo.teiv.utils.TeivConstants.INVALID_SCHEMA; import static org.oran.smo.teiv.utils.TeivConstants.SCHEMA_ALREADY_EXISTS; +import java.util.Comparator; import java.util.HashSet; import java.util.Set; @@ -88,17 +89,22 @@ class YangFindingsManager { } protected static void handleExposureFindings(FindingsManager findingsManager) { + Set findings = findingsManager.getAllFindings(); + if (findings.isEmpty()) { + return; + } FindingSeverityCalculator severityCalculator = findingsManager.getFindingSeverityCalculator(); - for (Finding finding : findingsManager.getAllFindings()) { - if (isErrorFinding(severityCalculator, finding)) { - if (isInvalidSchemaFinding(finding)) { - throw TeivException.invalidFileInput(INVALID_SCHEMA); - } else if (finding.getFindingType().contains("P044_SAME_MODULE_IMPLEMENTS_AND_IMPORTS")) { - throw TeivException.invalidFileInput(SCHEMA_ALREADY_EXISTS); - } else { - throw TeivException.invalidFileInput(finding.getMessage()); - } - } + findings.stream().sorted(Comparator.comparing(Finding::getMessage)).filter(finding -> isErrorFinding( + severityCalculator, finding)).findFirst().ifPresent(YangFindingsManager::handleFindingsAsError); + } + + private static void handleFindingsAsError(Finding finding) { + if (isInvalidSchemaFinding(finding)) { + throw TeivException.invalidFileInput(INVALID_SCHEMA); + } else if (finding.getFindingType().contains("P044_SAME_MODULE_IMPLEMENTS_AND_IMPORTS")) { + throw TeivException.invalidFileInput(SCHEMA_ALREADY_EXISTS); + } else { + throw TeivException.invalidFileInput(finding.getMessage()); } } diff --git a/teiv/src/test/java/org/oran/smo/teiv/controller/health/TeivIngestionHealthIndicatorTest.java b/teiv/src/test/java/org/oran/smo/teiv/controller/health/TeivIngestionHealthIndicatorTest.java index 6e0ab85..b90504a 100644 --- a/teiv/src/test/java/org/oran/smo/teiv/controller/health/TeivIngestionHealthIndicatorTest.java +++ b/teiv/src/test/java/org/oran/smo/teiv/controller/health/TeivIngestionHealthIndicatorTest.java @@ -27,9 +27,12 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import org.oran.smo.teiv.exposure.spi.ModelRepository; +import org.oran.smo.teiv.schema.MockSchemaLoader; +import org.oran.smo.teiv.schema.SchemaLoaderException; import org.oran.smo.teiv.service.SchemaCleanUpService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; @@ -71,6 +74,12 @@ class TeivIngestionHealthIndicatorTest { @MockBean SchemaCleanUpService schemaCleanUpService; + @BeforeAll + public static void beforeALL() throws UnsupportedOperationException, SchemaLoaderException { + MockSchemaLoader mockSchemaLoader = new MockSchemaLoader(); + mockSchemaLoader.loadSchemaRegistry(); + } + @AfterEach protected void tearDown() { healthStatus.setSchemaInitialized(false); -- 2.16.6