diff options
Diffstat (limited to 'cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/ModuleSyncSpec.groovy')
-rw-r--r-- | cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/ModuleSyncSpec.groovy | 58 |
1 files changed, 45 insertions, 13 deletions
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 35de99fef..bcfe47fd5 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 @@ -1,5 +1,5 @@ /* - * ============LICENSE_START======================================================= + * ============LICENSE_START======================================================= * Copyright (C) 2022 Nordix Foundation * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -20,40 +20,72 @@ 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 org.onap.cps.ncmp.api.inventory.CompositeState +import org.onap.cps.ncmp.api.inventory.InventoryPersistence +import org.onap.cps.ncmp.api.inventory.LockReasonCategory import spock.lang.Specification class ModuleSyncSpec extends Specification { + def mockInventoryPersistence = Mock(InventoryPersistence) + def mockSyncUtils = Mock(SyncUtils) def mockModuleSyncService = Mock(ModuleSyncService) def cmHandleState = CmHandleState.ADVISED - def objectUnderTest = new ModuleSyncWatchdog(mockSyncUtils, mockModuleSyncService) + def objectUnderTest = new ModuleSyncWatchdog(mockInventoryPersistence, mockSyncUtils, mockModuleSyncService) def 'Schedule a Cm-Handle Sync for ADVISED Cm-Handles'() { given: 'cm handles in an advised state' - def compositeState = new CompositeState() - compositeState.cmhandleState = cmHandleState - def yangModelCmHandle1 = new YangModelCmHandle(compositeState: compositeState) - def yangModelCmHandle2 = new YangModelCmHandle(compositeState: compositeState) + def compositeState1 = new CompositeState(cmHandleState: cmHandleState) + def compositeState2 = new CompositeState(cmHandleState: cmHandleState) + def yangModelCmHandle1 = new YangModelCmHandle(id: 'some-cm-handle', compositeState: compositeState1) + def yangModelCmHandle2 = new YangModelCmHandle(id: 'some-cm-handle-2', compositeState: compositeState2) and: 'sync utilities return a cm handle twice' mockSyncUtils.getAnAdvisedCmHandle() >>> [yangModelCmHandle1, yangModelCmHandle2, null] when: 'module sync poll is executed' objectUnderTest.executeAdvisedCmHandlePoll() - then: 'module sync service syncs the first cm handle and creates a schema set' + then: 'the inventory persistence cm handle returns a composite state for the first cm handle' + 1 * mockInventoryPersistence.getCmHandleState('some-cm-handle') >> compositeState1 + and: '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' + and: 'the composite state cm handle state is now READY' + assert compositeState1.getCmHandleState() == CmHandleState.READY + and: 'the first cm handle state is updated' + 1 * mockInventoryPersistence.saveCmHandleState('some-cm-handle', compositeState1) + then: 'the inventory persistence cm handle returns a composite state for the second cm handle' + mockInventoryPersistence.getCmHandleState('some-cm-handle-2') >> compositeState2 + and: '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) + and: 'the composite state cm handle state is now READY' + assert compositeState2.getCmHandleState() == CmHandleState.READY + and: 'the second cm handle state is updated' + 1 * mockInventoryPersistence.saveCmHandleState('some-cm-handle-2', compositeState2) + } + + def 'Schedule a Cm-Handle Sync for ADVISED Cm-Handle with failure'() { + given: 'cm handles in an advised state' + def compositeState = new CompositeState(cmHandleState: cmHandleState) + def yangModelCmHandle = new YangModelCmHandle(id: 'some-cm-handle', compositeState: compositeState) + and: 'sync utilities return a cm handle' + mockSyncUtils.getAnAdvisedCmHandle() >>> [yangModelCmHandle, null] + when: 'module sync poll is executed' + objectUnderTest.executeAdvisedCmHandlePoll() + then: 'the inventory persistence cm handle returns a composite state for the cm handle' + 1 * mockInventoryPersistence.getCmHandleState('some-cm-handle') >> compositeState + and: 'module sync service attempts to sync the cm handle and throws an exception' + 1 * mockModuleSyncService.syncAndCreateSchemaSet(*_) >> { throw new Exception('some exception') } + and: 'the composite state cm handle state is now LOCKED' + assert compositeState.getCmHandleState() == CmHandleState.LOCKED + and: 'update lock reason, details and attempts is invoked' + 1 * mockSyncUtils.updateLockReasonDetailsAndAttempts(compositeState, LockReasonCategory.LOCKED_MISBEHAVING ,'some exception') + and: 'the cm handle state is updated' + 1 * mockInventoryPersistence.saveCmHandleState('some-cm-handle', compositeState) + } } |