Fix TeivIngestionHealthIndicatorTest and post schemas test failures 36/14636/2
authorKrupaNagabhushan <krupa.nagabhushan@est.tech>
Mon, 30 Jun 2025 16:52:46 +0000 (17:52 +0100)
committerKrupa Nagabhushan <krupa.nagabhushan@est.tech>
Fri, 4 Jul 2025 08:36:33 +0000 (08:36 +0000)
Issue-ID: SMO-191
Change-Id: If7ada391b57a2e353a1398712d80f7193218dd92
Signed-off-by: KrupaNagabhushan <krupa.nagabhushan@est.tech>
teiv/src/main/java/org/oran/smo/teiv/utils/yangparser/YangFindingsManager.java
teiv/src/test/java/org/oran/smo/teiv/controller/health/TeivIngestionHealthIndicatorTest.java

index 4dfc9d2..ccc97d5 100644 (file)
@@ -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<Finding> 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());
         }
     }
 
index 6e0ab85..b90504a 100644 (file)
@@ -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);