summaryrefslogtreecommitdiffstats
path: root/cps-ncmp-service/src/test/groovy/org
diff options
context:
space:
mode:
authorDylanB95EST <dylan.byrne@est.tech>2022-05-05 11:53:12 +0100
committerDylanB95EST <dylan.byrne@est.tech>2022-05-12 16:14:17 +0100
commitf16b9614298e7f0a820435f2dab2a856b487bf45 (patch)
tree04a11809e4f69c7fab9c065fcc05733cf634f074 /cps-ncmp-service/src/test/groovy/org
parent8c0b1b62c1e88f0c0cc547bbf91d9b236839992b (diff)
Watchdog-process that syncs 'ADVISED' CM Handles
- Sync and Create Schema Set during module sync watchdog process. - Add a cm handle state transition machine to handle state changes for a cm handle during watchdog which syncs module service. Issue-ID: CPS-875 Change-Id: I3b178f5693cb7ac30577dd81cdc82b462555389a Signed-off-by: DylanB95EST <dylan.byrne@est.tech>
Diffstat (limited to 'cps-ncmp-service/src/test/groovy/org')
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/CmHandleStateSpec.groovy46
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/ModuleSyncSpec.groovy24
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/SyncUtilsSpec.groovy5
3 files changed, 66 insertions, 9 deletions
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/CmHandleStateSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/CmHandleStateSpec.groovy
new file mode 100644
index 000000000..923a9037d
--- /dev/null
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/CmHandleStateSpec.groovy
@@ -0,0 +1,46 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2022 Nordix Foundation
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.cps.ncmp.api.inventory.sync
+
+import org.onap.cps.ncmp.api.inventory.CmHandleState
+import spock.lang.Specification
+
+class CmHandleStateSpec extends Specification{
+
+ def 'Transition to READY state from ADVISED state'() {
+ given: 'a cm handle with an ADVISED state'
+ def cmHandleState = CmHandleState.ADVISED
+ when: 'the state transitions to the READY state'
+ cmHandleState = cmHandleState.ready()
+ then: 'the cm handle state changes to READY'
+ assert CmHandleState.READY == cmHandleState
+ }
+
+ def 'Transition to READY state from READY state'() {
+ given: 'a cm handle with a READY state'
+ def cmHandleState = CmHandleState.READY
+ when: 'the state transitions to READY state'
+ cmHandleState = cmHandleState.ready()
+ then: 'the cm handle state remains as READY'
+ assert CmHandleState.READY == cmHandleState
+ }
+
+}
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/ModuleSyncSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/ModuleSyncSpec.groovy
index bcc6bb467..0a06fbaa8 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/ModuleSyncSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/ModuleSyncSpec.groovy
@@ -22,25 +22,35 @@ package org.onap.cps.ncmp.api.inventory.sync
import org.onap.cps.ncmp.api.impl.yangmodels.YangModelCmHandle
+import org.onap.cps.ncmp.api.inventory.CmHandleState
import spock.lang.Specification
class ModuleSyncSpec extends Specification {
def mockSyncUtils = Mock(SyncUtils)
- def objectUnderTest = new ModuleSyncWatchdog(mockSyncUtils)
+ def mockModuleSyncService = Mock(ModuleSyncService)
+
+ def cmHandleState = CmHandleState.ADVISED
+
+ def objectUnderTest = new ModuleSyncWatchdog(mockSyncUtils, mockModuleSyncService)
def 'Schedule a Cm-Handle Sync for ADVISED Cm-Handles'() {
- given: 'a cm handle'
- def yangModelCmHandle1 = new YangModelCmHandle()
- def yangModelCmHandle2 = new YangModelCmHandle()
+ given: 'cm handles in an advised state'
+ def yangModelCmHandle1 = new YangModelCmHandle(cmHandleState: cmHandleState)
+ def yangModelCmHandle2 = new YangModelCmHandle(cmHandleState: cmHandleState)
and: 'sync utilities return a cm handle twice'
mockSyncUtils.getAnAdvisedCmHandle() >>> [yangModelCmHandle1, yangModelCmHandle2, null]
when: 'module sync poll is executed'
objectUnderTest.executeAdvisedCmHandlePoll()
- then: 'each cm handle is updated to state "READY"'
- 1 * mockSyncUtils.updateCmHandleState(yangModelCmHandle1, 'READY')
- 1 * mockSyncUtils.updateCmHandleState(yangModelCmHandle2, 'READY')
+ then: 'module sync service syncs the first cm handle and creates a schema set'
+ 1 * mockModuleSyncService.syncAndCreateSchemaSet(yangModelCmHandle1)
+ and: 'the first cm handle is updated to state "READY" from "ADVISED"'
+ 1 * mockSyncUtils.updateCmHandleState(yangModelCmHandle1, CmHandleState.READY)
+ then: 'module sync service syncs the second cm handle and creates a schema set'
+ 1 * mockModuleSyncService.syncAndCreateSchemaSet(yangModelCmHandle2)
+ then: 'the second cm handle is updated to state "READY" from "ADVISED"'
+ 1 * mockSyncUtils.updateCmHandleState(yangModelCmHandle2, CmHandleState.READY)
}
}
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/SyncUtilsSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/SyncUtilsSpec.groovy
index 04b2d5513..e5d3652d2 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/SyncUtilsSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/SyncUtilsSpec.groovy
@@ -24,6 +24,7 @@ import com.fasterxml.jackson.databind.ObjectMapper
import org.onap.cps.api.CpsDataService
import org.onap.cps.ncmp.api.impl.operations.YangModelCmHandleRetriever
import org.onap.cps.ncmp.api.impl.yangmodels.YangModelCmHandle
+import org.onap.cps.ncmp.api.inventory.CmHandleState
import org.onap.cps.spi.CpsDataPersistenceService
import org.onap.cps.spi.FetchDescendantsOption
import org.onap.cps.spi.model.DataNode
@@ -67,10 +68,10 @@ class SyncUtilsSpec extends Specification{
def 'Update cm handle state from Advised to Ready'() {
given: 'a yang model cm handle and the expected json data'
- def yangModelCmHandle = new YangModelCmHandle('id': 'Some-Cm-Handle', 'cmHandleState': 'ADVISED')
+ def yangModelCmHandle = new YangModelCmHandle(id: 'Some-Cm-Handle', cmHandleState: CmHandleState.ADVISED)
def expectedJsonData = '{"cm-handles":[{"id":"Some-Cm-Handle","state":"READY"}]}'
when: 'update cm handle state is called'
- objectUnderTest.updateCmHandleState(yangModelCmHandle, 'READY')
+ objectUnderTest.updateCmHandleState(yangModelCmHandle, CmHandleState.READY)
then: 'update data note leaves is invoked with the correct params'
1 * mockCpsDataService.updateNodeLeaves('NCMP-Admin', 'ncmp-dmi-registry', '/dmi-registry', expectedJsonData, _ as OffsetDateTime)
}