diff options
author | emaclee <lee.anjella.macabuhay@est.tech> | 2025-01-12 12:39:55 +0000 |
---|---|---|
committer | emaclee <lee.anjella.macabuhay@est.tech> | 2025-01-16 15:28:15 +0000 |
commit | e0ea27a6e0902a4bff75ae5cd4b6025ee0d40a1c (patch) | |
tree | 80623f25990b8b2043c7e5690c1f96ba954da8a7 /cps-ncmp-service/src/test/groovy | |
parent | ecfff5cb108e9679ee155a45becaa36a7e9c9059 (diff) |
Handle restart case for cps-ncmp gauge metrics
Issue-ID: CPS-2456
Change-Id: I9ac5d6774fcd745d8141551eeff8a1deb1938f57
Signed-off-by: emaclee <lee.anjella.macabuhay@est.tech>
Diffstat (limited to 'cps-ncmp-service/src/test/groovy')
3 files changed, 34 insertions, 16 deletions
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/cache/AdminCacheConfigSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/cache/AdminCacheConfigSpec.groovy index 9b9603369d..a576865262 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/cache/AdminCacheConfigSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/cache/AdminCacheConfigSpec.groovy @@ -45,13 +45,5 @@ class AdminCacheConfigSpec extends Specification { assert Hazelcast.allHazelcastInstances.size() > 0 and: 'Hazelcast cache instance for cm handle by state is present' assert Hazelcast.getHazelcastInstanceByName('cps-and-ncmp-hazelcast-instance-test-config').getMap('cmHandlesByState') != null - and: 'the cache already contains 5 entries, an entry for each state' - def cmHandleByState = Hazelcast.getHazelcastInstanceByName('cps-and-ncmp-hazelcast-instance-test-config').getMap('cmHandlesByState') - assert cmHandleByState.size() == 5 - assert cmHandleByState.containsKey('advisedCmHandlesCount') - assert cmHandleByState.containsKey('lockedCmHandlesCount') - assert cmHandleByState.containsKey('readyCmHandlesCount') - assert cmHandleByState.containsKey('deletingCmHandlesCount') - assert cmHandleByState.containsKey('deletedCmHandlesCount') } } diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/sync/lcm/CmHandleStateMonitorSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/sync/lcm/CmHandleStateMonitorSpec.groovy index 9fd40b9605..4d7c22a200 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/sync/lcm/CmHandleStateMonitorSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/sync/lcm/CmHandleStateMonitorSpec.groovy @@ -26,16 +26,19 @@ import static org.onap.cps.ncmp.api.inventory.models.CmHandleState.READY import com.hazelcast.core.Hazelcast import com.hazelcast.map.IMap import org.onap.cps.ncmp.api.inventory.models.CompositeState +import org.onap.cps.ncmp.impl.inventory.CmHandleQueryService import org.onap.cps.ncmp.impl.inventory.models.YangModelCmHandle import org.onap.cps.ncmp.impl.inventory.sync.lcm.CmHandleStateMonitor.DecreasingEntryProcessor import org.onap.cps.ncmp.impl.inventory.sync.lcm.CmHandleStateMonitor.IncreasingEntryProcessor +import org.onap.cps.ncmp.utils.events.NcmpInventoryModelOnboardingFinishedEvent import spock.lang.Shared import spock.lang.Specification; class CmHandleStateMonitorSpec extends Specification { - def cmHandlesByState = Mock(IMap) - def objectUnderTest = new CmHandleStateMonitor(cmHandlesByState) + def mockCmHandlesByState = Mock(IMap) + def mockCmHandleQueryService = Mock(CmHandleQueryService) + def objectUnderTest = new CmHandleStateMonitor(mockCmHandleQueryService, mockCmHandlesByState) @Shared def entryProcessingMap = Hazelcast.newHazelcastInstance().getMap('entryProcessingMap') @@ -49,6 +52,25 @@ class CmHandleStateMonitorSpec extends Specification { Hazelcast.shutdownAll() } + def 'Initialise cm handle state monitor: #scenario'() { + given: 'the query service returns a list of cm-handle ids for the given state' + mockCmHandleQueryService.queryCmHandleIdsByState(_) >> queryResult + and: 'a mocked NcmpModelOnboardingFinishedEvent is triggered' + def mockNcmpModelOnboardingFinishedEvent = Mock(NcmpInventoryModelOnboardingFinishedEvent) + when: 'the method to initialise cm handle state monitor is triggered by onboarding event' + objectUnderTest.initialiseCmHandleStateMonitor(mockNcmpModelOnboardingFinishedEvent) + then: 'metrics map is called correct number of times for each state except DELETED, with expected value' + 1 * mockCmHandlesByState.putIfAbsent("advisedCmHandlesCount", expectedValue) + 1 * mockCmHandlesByState.putIfAbsent("readyCmHandlesCount", expectedValue) + 1 * mockCmHandlesByState.putIfAbsent("lockedCmHandlesCount", expectedValue) + 1 * mockCmHandlesByState.putIfAbsent("deletingCmHandlesCount", expectedValue) + where: + scenario | queryResult || expectedValue + 'query service returns zero cm handle id'| [] || 0 + 'query service returns 1 cm handle id' | ['someId'] || 1 + } + + def 'Update cm handle state metric'() { given: 'a collection of cm handle state pair' def cmHandleTransitionPair = new LcmEventsCmHandleStateHandlerImpl.CmHandleTransitionPair() @@ -57,19 +79,19 @@ class CmHandleStateMonitorSpec extends Specification { when: 'method to update cm handle state metrics is called' objectUnderTest.updateCmHandleStateMetrics([cmHandleTransitionPair]) then: 'cm handle by state cache map is called once for current and target state for entry processing' - 1 * cmHandlesByState.executeOnKey('advisedCmHandlesCount', _) - 1 * cmHandlesByState.executeOnKey('readyCmHandlesCount', _) + 1 * mockCmHandlesByState.executeOnKey('advisedCmHandlesCount', _) + 1 * mockCmHandlesByState.executeOnKey('readyCmHandlesCount', _) } - def 'Updating cm handle state metric with no previous state'() { + def 'Update cm handle state metric with no previous state'() { given: 'a collection of cm handle state pair wherein current state is null' def cmHandleTransitionPair = new LcmEventsCmHandleStateHandlerImpl.CmHandleTransitionPair() cmHandleTransitionPair.currentYangModelCmHandle = new YangModelCmHandle(compositeState: null) cmHandleTransitionPair.targetYangModelCmHandle = new YangModelCmHandle(compositeState: new CompositeState(cmHandleState: ADVISED)) - when: 'method to update cm handle state metrics is called' + when: 'updating cm handle state metrics' objectUnderTest.updateCmHandleStateMetrics([cmHandleTransitionPair]) then: 'cm handle by state cache map is called only once' - 1 * cmHandlesByState.executeOnKey(_, _) + 1 * mockCmHandlesByState.executeOnKey(_, _) } def 'Applying decreasing entry processor to a key on map where #scenario'() { diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/init/InventoryModelLoaderSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/init/InventoryModelLoaderSpec.groovy index ffd1d89fe1..dc6ec4120b 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/init/InventoryModelLoaderSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/init/InventoryModelLoaderSpec.groovy @@ -30,6 +30,7 @@ import org.onap.cps.api.CpsModuleService import org.onap.cps.api.model.Dataspace import org.slf4j.LoggerFactory import org.springframework.boot.context.event.ApplicationStartedEvent +import org.springframework.context.ApplicationEventPublisher import org.springframework.context.annotation.AnnotationConfigApplicationContext import spock.lang.Specification @@ -42,7 +43,8 @@ class InventoryModelLoaderSpec extends Specification { def mockCpsModuleService = Mock(CpsModuleService) def mockCpsDataService = Mock(CpsDataService) def mockCpsAnchorService = Mock(CpsAnchorService) - def objectUnderTest = new InventoryModelLoader(mockCpsAdminService, mockCpsModuleService, mockCpsAnchorService, mockCpsDataService) + def mockApplicationEventPublisher = Mock(ApplicationEventPublisher) + def objectUnderTest = new InventoryModelLoader(mockCpsAdminService, mockCpsModuleService, mockCpsAnchorService, mockCpsDataService, mockApplicationEventPublisher) def applicationContext = new AnnotationConfigApplicationContext() @@ -75,6 +77,8 @@ class InventoryModelLoaderSpec extends Specification { 1 * mockCpsAnchorService.updateAnchorSchemaSet(NCMP_DATASPACE_NAME, NCMP_DMI_REGISTRY_ANCHOR, 'dmi-registry-2024-02-23') and: 'No schema sets are being removed by the module service (yet)' 0 * mockCpsModuleService.deleteSchemaSet(NCMP_DATASPACE_NAME, _, _) + and: 'application event publisher is called once' + 1 * mockApplicationEventPublisher.publishEvent(_) } } |