aboutsummaryrefslogtreecommitdiffstats
path: root/cps-ncmp-service/src/test/groovy
diff options
context:
space:
mode:
authoremaclee <lee.anjella.macabuhay@est.tech>2025-01-12 12:39:55 +0000
committeremaclee <lee.anjella.macabuhay@est.tech>2025-01-16 15:28:15 +0000
commite0ea27a6e0902a4bff75ae5cd4b6025ee0d40a1c (patch)
tree80623f25990b8b2043c7e5690c1f96ba954da8a7 /cps-ncmp-service/src/test/groovy
parentecfff5cb108e9679ee155a45becaa36a7e9c9059 (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')
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/cache/AdminCacheConfigSpec.groovy8
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/sync/lcm/CmHandleStateMonitorSpec.groovy36
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/init/InventoryModelLoaderSpec.groovy6
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(_)
}
}