Loading src/main/java/org/etsi/osl/metrico/MetricoCommonMethods.java +5 −0 Changes for src/main/java/org/etsi/osl/metrico/MetricoCommonMethods.java: 5 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -192,8 +192,13 @@ public class MetricoCommonMethods extends RouteBuilder { if (givenMCJ.getExecutionState().equals(ExecutionStateType.FAILED)) { rup.setResourceStatus(ResourceStatusType.SUSPENDED); // In service but not working: the supported service goes INACTIVE, not TERMINATED. rup.setOperationalState(ResourceOperationalStateType.DISABLE); rup.setAdministrativeState(ResourceAdministrativeStateType.UNLOCKED); } else { rup.setResourceStatus(ResourceStatusType.AVAILABLE); rup.setOperationalState(ResourceOperationalStateType.ENABLE); rup.setAdministrativeState(ResourceAdministrativeStateType.UNLOCKED); } updateResourceById(resRef.getId(), rup); } else { Loading src/test/java/org/etsi/osl/metrico/MetricoCommonMethodsTest.java +66 −2 Changes for src/test/java/org/etsi/osl/metrico/MetricoCommonMethodsTest.java: 66 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -8,15 +8,22 @@ import org.apache.camel.ProducerTemplate; import org.apache.camel.builder.RouteBuilder; import org.etsi.osl.tmf.common.model.ELifecycle; import org.etsi.osl.tmf.common.model.EValueType; import org.etsi.osl.tmf.common.model.service.ResourceRef; import org.etsi.osl.tmf.pm628.model.*; import org.etsi.osl.tmf.rcm634.model.LogicalResourceSpecification; import org.etsi.osl.tmf.rcm634.model.ResourceSpecificationCharacteristic; import org.etsi.osl.tmf.ri639.model.LogicalResource; import org.etsi.osl.tmf.ri639.model.ResourceAdministrativeStateType; import org.etsi.osl.tmf.ri639.model.ResourceOperationalStateType; import org.etsi.osl.tmf.ri639.model.ResourceStatusType; import org.etsi.osl.tmf.ri639.model.ResourceUpdate; import org.etsi.osl.tmf.sim638.model.Service; import org.etsi.osl.tmf.sim638.model.ServiceUpdate; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.TestConfiguration; Loading Loading @@ -49,6 +56,11 @@ class MetricoCommonMethodsTest { static String OSL_METRICO_RSPEC_VERSION = "1.0.0"; static String OSL_METRICO_RSPEC_DESCRIPTION = "This Specification is used to describe a generic METRICO job resource"; static String OSL_METRICO_RSPEC_TYPE = "LogicalResourceSpecification"; static String MOCK_SUPPORTING_RESOURCE_ID = "mock-supporting-resource-id"; // Captured by mockUpdateResource so tests can inspect what was sent to the catalog static volatile String lastUpdatedResourceId; static volatile ResourceUpdate lastResourceUpdate; @TestConfiguration static class CamelTestRoutesConfig { Loading Loading @@ -147,6 +159,53 @@ class MetricoCommonMethodsTest { assertEquals(Granularity.G_1H, result.getGranularity()); } @BeforeEach void resetCapturedResourceUpdate() { lastUpdatedResourceId = null; lastResourceUpdate = null; } @Test void testUpdateRelatedResourceFailedJobDeclaresResourceDown() { MeasurementCollectionJob mcj = defaultMeasurementCollectionJob(); mcj.setProducingApplicationId("mock-service-id"); mcj.setExecutionState(ExecutionStateType.FAILED); methods.updateRelatedResource(mcj); assertEquals(MOCK_SUPPORTING_RESOURCE_ID, lastUpdatedResourceId); assertNotNull(lastResourceUpdate); // DISABLE + UNLOCKED: in service but not working, so the supported service goes INACTIVE assertEquals(ResourceOperationalStateType.DISABLE, lastResourceUpdate.getOperationalState()); assertEquals(ResourceAdministrativeStateType.UNLOCKED, lastResourceUpdate.getAdministrativeState()); assertEquals(ResourceStatusType.SUSPENDED, lastResourceUpdate.getResourceStatus()); assertMcjRefCharacteristic(mcj, lastResourceUpdate); } @ParameterizedTest @EnumSource(value = ExecutionStateType.class, mode = EnumSource.Mode.EXCLUDE, names = "FAILED") void testUpdateRelatedResourceNonFailedJobDeclaresResourceUp(ExecutionStateType executionState) { MeasurementCollectionJob mcj = defaultMeasurementCollectionJob(); mcj.setProducingApplicationId("mock-service-id"); mcj.setExecutionState(executionState); methods.updateRelatedResource(mcj); assertEquals(MOCK_SUPPORTING_RESOURCE_ID, lastUpdatedResourceId); assertNotNull(lastResourceUpdate); // ENABLE + UNLOCKED: the resource is up, so the supported service goes ACTIVE assertEquals(ResourceOperationalStateType.ENABLE, lastResourceUpdate.getOperationalState()); assertEquals(ResourceAdministrativeStateType.UNLOCKED, lastResourceUpdate.getAdministrativeState()); assertEquals(ResourceStatusType.AVAILABLE, lastResourceUpdate.getResourceStatus()); assertMcjRefCharacteristic(mcj, lastResourceUpdate); } private static void assertMcjRefCharacteristic(MeasurementCollectionJob mcj, ResourceUpdate rup) { assertNotNull(rup.getResourceCharacteristic()); assertTrue(rup.getResourceCharacteristic().stream() .anyMatch(c -> "_MT_MCJ_REF".equals(c.getName()) && mcj.getUuid().equals(c.getValue().getValue()))); } // Bellow here are the mocked methods for the test class public static String mockUpdateMeasurementCollectionJob(String uuid, String mcjMVOString) { MeasurementCollectionJob mcj = defaultMeasurementCollectionJob(); Loading Loading @@ -204,7 +263,9 @@ class MetricoCommonMethodsTest { Service service = new Service(); service.setUuid("mock-service-id"); service.setName("Mock Service"); // Set other fields as needed for your tests ResourceRef supportingResource = new ResourceRef(); supportingResource.setId(MOCK_SUPPORTING_RESOURCE_ID); service.addSupportingResourceItem(supportingResource); ObjectMapper mapper = new ObjectMapper(); return mapper.writeValueAsString(service); Loading Loading @@ -241,8 +302,11 @@ class MetricoCommonMethodsTest { } } public static String mockUpdateResource(String resourceId, ResourceUpdate body, Boolean triggerServiceActionQueue) { public static String mockUpdateResource(String resourceId, String body, Boolean triggerServiceActionQueue) { try { lastUpdatedResourceId = resourceId; lastResourceUpdate = JsonUtil.toJsonObj(body, ResourceUpdate.class); LogicalResource resource = new LogicalResource(); resource.setUuid("mock-service-id"); resource.setName("Updated Mock Resource"); Loading Loading
src/main/java/org/etsi/osl/metrico/MetricoCommonMethods.java +5 −0 Changes for src/main/java/org/etsi/osl/metrico/MetricoCommonMethods.java: 5 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -192,8 +192,13 @@ public class MetricoCommonMethods extends RouteBuilder { if (givenMCJ.getExecutionState().equals(ExecutionStateType.FAILED)) { rup.setResourceStatus(ResourceStatusType.SUSPENDED); // In service but not working: the supported service goes INACTIVE, not TERMINATED. rup.setOperationalState(ResourceOperationalStateType.DISABLE); rup.setAdministrativeState(ResourceAdministrativeStateType.UNLOCKED); } else { rup.setResourceStatus(ResourceStatusType.AVAILABLE); rup.setOperationalState(ResourceOperationalStateType.ENABLE); rup.setAdministrativeState(ResourceAdministrativeStateType.UNLOCKED); } updateResourceById(resRef.getId(), rup); } else { Loading
src/test/java/org/etsi/osl/metrico/MetricoCommonMethodsTest.java +66 −2 Changes for src/test/java/org/etsi/osl/metrico/MetricoCommonMethodsTest.java: 66 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -8,15 +8,22 @@ import org.apache.camel.ProducerTemplate; import org.apache.camel.builder.RouteBuilder; import org.etsi.osl.tmf.common.model.ELifecycle; import org.etsi.osl.tmf.common.model.EValueType; import org.etsi.osl.tmf.common.model.service.ResourceRef; import org.etsi.osl.tmf.pm628.model.*; import org.etsi.osl.tmf.rcm634.model.LogicalResourceSpecification; import org.etsi.osl.tmf.rcm634.model.ResourceSpecificationCharacteristic; import org.etsi.osl.tmf.ri639.model.LogicalResource; import org.etsi.osl.tmf.ri639.model.ResourceAdministrativeStateType; import org.etsi.osl.tmf.ri639.model.ResourceOperationalStateType; import org.etsi.osl.tmf.ri639.model.ResourceStatusType; import org.etsi.osl.tmf.ri639.model.ResourceUpdate; import org.etsi.osl.tmf.sim638.model.Service; import org.etsi.osl.tmf.sim638.model.ServiceUpdate; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.TestConfiguration; Loading Loading @@ -49,6 +56,11 @@ class MetricoCommonMethodsTest { static String OSL_METRICO_RSPEC_VERSION = "1.0.0"; static String OSL_METRICO_RSPEC_DESCRIPTION = "This Specification is used to describe a generic METRICO job resource"; static String OSL_METRICO_RSPEC_TYPE = "LogicalResourceSpecification"; static String MOCK_SUPPORTING_RESOURCE_ID = "mock-supporting-resource-id"; // Captured by mockUpdateResource so tests can inspect what was sent to the catalog static volatile String lastUpdatedResourceId; static volatile ResourceUpdate lastResourceUpdate; @TestConfiguration static class CamelTestRoutesConfig { Loading Loading @@ -147,6 +159,53 @@ class MetricoCommonMethodsTest { assertEquals(Granularity.G_1H, result.getGranularity()); } @BeforeEach void resetCapturedResourceUpdate() { lastUpdatedResourceId = null; lastResourceUpdate = null; } @Test void testUpdateRelatedResourceFailedJobDeclaresResourceDown() { MeasurementCollectionJob mcj = defaultMeasurementCollectionJob(); mcj.setProducingApplicationId("mock-service-id"); mcj.setExecutionState(ExecutionStateType.FAILED); methods.updateRelatedResource(mcj); assertEquals(MOCK_SUPPORTING_RESOURCE_ID, lastUpdatedResourceId); assertNotNull(lastResourceUpdate); // DISABLE + UNLOCKED: in service but not working, so the supported service goes INACTIVE assertEquals(ResourceOperationalStateType.DISABLE, lastResourceUpdate.getOperationalState()); assertEquals(ResourceAdministrativeStateType.UNLOCKED, lastResourceUpdate.getAdministrativeState()); assertEquals(ResourceStatusType.SUSPENDED, lastResourceUpdate.getResourceStatus()); assertMcjRefCharacteristic(mcj, lastResourceUpdate); } @ParameterizedTest @EnumSource(value = ExecutionStateType.class, mode = EnumSource.Mode.EXCLUDE, names = "FAILED") void testUpdateRelatedResourceNonFailedJobDeclaresResourceUp(ExecutionStateType executionState) { MeasurementCollectionJob mcj = defaultMeasurementCollectionJob(); mcj.setProducingApplicationId("mock-service-id"); mcj.setExecutionState(executionState); methods.updateRelatedResource(mcj); assertEquals(MOCK_SUPPORTING_RESOURCE_ID, lastUpdatedResourceId); assertNotNull(lastResourceUpdate); // ENABLE + UNLOCKED: the resource is up, so the supported service goes ACTIVE assertEquals(ResourceOperationalStateType.ENABLE, lastResourceUpdate.getOperationalState()); assertEquals(ResourceAdministrativeStateType.UNLOCKED, lastResourceUpdate.getAdministrativeState()); assertEquals(ResourceStatusType.AVAILABLE, lastResourceUpdate.getResourceStatus()); assertMcjRefCharacteristic(mcj, lastResourceUpdate); } private static void assertMcjRefCharacteristic(MeasurementCollectionJob mcj, ResourceUpdate rup) { assertNotNull(rup.getResourceCharacteristic()); assertTrue(rup.getResourceCharacteristic().stream() .anyMatch(c -> "_MT_MCJ_REF".equals(c.getName()) && mcj.getUuid().equals(c.getValue().getValue()))); } // Bellow here are the mocked methods for the test class public static String mockUpdateMeasurementCollectionJob(String uuid, String mcjMVOString) { MeasurementCollectionJob mcj = defaultMeasurementCollectionJob(); Loading Loading @@ -204,7 +263,9 @@ class MetricoCommonMethodsTest { Service service = new Service(); service.setUuid("mock-service-id"); service.setName("Mock Service"); // Set other fields as needed for your tests ResourceRef supportingResource = new ResourceRef(); supportingResource.setId(MOCK_SUPPORTING_RESOURCE_ID); service.addSupportingResourceItem(supportingResource); ObjectMapper mapper = new ObjectMapper(); return mapper.writeValueAsString(service); Loading Loading @@ -241,8 +302,11 @@ class MetricoCommonMethodsTest { } } public static String mockUpdateResource(String resourceId, ResourceUpdate body, Boolean triggerServiceActionQueue) { public static String mockUpdateResource(String resourceId, String body, Boolean triggerServiceActionQueue) { try { lastUpdatedResourceId = resourceId; lastResourceUpdate = JsonUtil.toJsonObj(body, ResourceUpdate.class); LogicalResource resource = new LogicalResource(); resource.setUuid("mock-service-id"); resource.setName("Updated Mock Resource"); Loading