X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ms%2Fblueprintsprocessor%2Ffunctions%2Fresource-resolution%2Fsrc%2Ftest%2Fkotlin%2Forg%2Fonap%2Fccsdk%2Fcds%2Fblueprintsprocessor%2Ffunctions%2Fresource%2Fresolution%2Fprocessor%2FCapabilityResourceResolutionProcessorTest.kt;h=f618b41db36ab18b61e01843cb1737bfb919b3d9;hb=1072867dfac0df993cbd3e44bcc11a5cac7465fd;hp=66fdd8ff833647482ccf969f35304ca1a1bf2caa;hpb=fbab2613397dc8e3ac66d1b94cd5a2299c2dd861;p=ccsdk%2Fcds.git diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/processor/CapabilityResourceResolutionProcessorTest.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/processor/CapabilityResourceResolutionProcessorTest.kt index 66fdd8ff8..f618b41db 100644 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/processor/CapabilityResourceResolutionProcessorTest.kt +++ b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/processor/CapabilityResourceResolutionProcessorTest.kt @@ -18,76 +18,71 @@ package org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.processor +import com.fasterxml.jackson.databind.node.NullNode +import io.mockk.coEvery +import io.mockk.every +import io.mockk.mockk import kotlinx.coroutines.runBlocking -import org.junit.Ignore import org.junit.Test -import org.junit.runner.RunWith import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.ResourceAssignmentRuntimeService +import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.resourceAssignment import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.ComponentFunctionScriptingService -import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.scripts.BlueprintJythonService -import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.scripts.PythonExecutorProperty +import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants +import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes +import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive import org.onap.ccsdk.cds.controllerblueprints.core.data.PropertyDefinition +import org.onap.ccsdk.cds.controllerblueprints.core.logger +import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintContext import org.onap.ccsdk.cds.controllerblueprints.core.utils.BluePrintMetadataUtils import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils import org.onap.ccsdk.cds.controllerblueprints.resource.dict.ResourceAssignment import org.onap.ccsdk.cds.controllerblueprints.resource.dict.ResourceDefinition -import org.onap.ccsdk.cds.controllerblueprints.scripts.BluePrintScriptsServiceImpl -import org.springframework.beans.factory.annotation.Autowired -import org.springframework.test.context.ContextConfiguration -import org.springframework.test.context.TestPropertySource -import org.springframework.test.context.junit4.SpringRunner +import kotlin.test.assertEquals import kotlin.test.assertNotNull +import kotlin.test.assertTrue -@RunWith(SpringRunner::class) -@ContextConfiguration(classes = [CapabilityResourceResolutionProcessor::class, ComponentFunctionScriptingService::class, - BluePrintScriptsServiceImpl::class, - BlueprintJythonService::class, PythonExecutorProperty::class, MockCapabilityService::class]) -@TestPropertySource(properties = -["blueprints.processor.functions.python.executor.modulePaths=./../../../../components/scripts/python/ccsdk_blueprints", - "blueprints.processor.functions.python.executor.executionPath=./../../../../components/scripts/python/ccsdk_blueprints"]) class CapabilityResourceResolutionProcessorTest { - @Autowired - lateinit var capabilityResourceResolutionProcessor: CapabilityResourceResolutionProcessor - - @Ignore @Test fun `test kotlin capability`() { runBlocking { - - val bluePrintContext = BluePrintMetadataUtils.getBluePrintContext( - "./../../../../components/model-catalog/blueprint-model/test-blueprint/baseconfiguration") - - val resourceAssignmentRuntimeService = ResourceAssignmentRuntimeService("1234", bluePrintContext) - - capabilityResourceResolutionProcessor.raRuntimeService = resourceAssignmentRuntimeService - capabilityResourceResolutionProcessor.resourceDictionaries = hashMapOf() - - - val scriptPropertyInstances: MutableMap = mutableMapOf() - scriptPropertyInstances["mock-service1"] = MockCapabilityService() - scriptPropertyInstances["mock-service2"] = MockCapabilityService() - - val instanceDependencies: List = listOf() - - val resourceAssignmentProcessor = capabilityResourceResolutionProcessor - .scriptInstance("kotlin", - "ResourceAssignmentProcessor_cba\$ScriptResourceAssignmentProcessor", instanceDependencies) - - assertNotNull(resourceAssignmentProcessor, "couldn't get kotlin script resource assignment processor") - - val resourceAssignment = ResourceAssignment().apply { - name = "ra-name" - dictionaryName = "ra-dict-name" + val componentFunctionScriptingService = mockk() + coEvery { + componentFunctionScriptingService + .scriptInstance(any(), any(), any()) + } returns MockCapabilityScriptRA() + + coEvery { + componentFunctionScriptingService.cleanupInstance(any(), any()) + } returns mockk() + + val raRuntimeService = mockk() + every { raRuntimeService.bluePrintContext() } returns mockk() + every { raRuntimeService.getInputValue("test-property") } returns NullNode.getInstance() + + val capabilityResourceResolutionProcessor = + CapabilityResourceResolutionProcessor(componentFunctionScriptingService) + capabilityResourceResolutionProcessor.raRuntimeService = raRuntimeService + + val resourceAssignment = BluePrintTypes.resourceAssignment( + name = "test-property", dictionaryName = "ra-dict-name", dictionarySource = "capability" - property = PropertyDefinition().apply { - type = "string" + ) { + property("string", true, "") + sourceCapability { + definedProperties { + type("internal") + scriptClassReference(MockCapabilityScriptRA::class.qualifiedName!!) + keyDependencies(arrayListOf("dep-property")) + } } } - - val processorName = resourceAssignmentProcessor.applyNB(resourceAssignment) - assertNotNull(processorName, "couldn't get kotlin script resource assignment processor name") - println(processorName) + val status = capabilityResourceResolutionProcessor.applyNB(resourceAssignment) + assertTrue(status, "failed to execute capability source") + assertEquals( + "assigned-data".asJsonPrimitive(), resourceAssignment.property!!.value, + "assigned value miss match" + ) } } @@ -96,15 +91,31 @@ class CapabilityResourceResolutionProcessorTest { runBlocking { val bluePrintContext = BluePrintMetadataUtils.getBluePrintContext( - "./../../../../components/model-catalog/blueprint-model/test-blueprint/capability_python") + "./../../../../components/model-catalog/blueprint-model/test-blueprint/capability_python" + ) + + val componentFunctionScriptingService = mockk() + coEvery { + componentFunctionScriptingService + .scriptInstance(any(), BluePrintConstants.SCRIPT_JYTHON, any()) + } returns MockCapabilityScriptRA() + + coEvery { + componentFunctionScriptingService.cleanupInstance(any(), any()) + } returns mockk() val resourceAssignmentRuntimeService = ResourceAssignmentRuntimeService("1234", bluePrintContext) + val capabilityResourceResolutionProcessor = + CapabilityResourceResolutionProcessor(componentFunctionScriptingService) + capabilityResourceResolutionProcessor.raRuntimeService = resourceAssignmentRuntimeService val resourceDefinition = JacksonUtils - .readValueFromClassPathFile("mapping/capability/jython-resource-definitions.json", - ResourceDefinition::class.java)!! + .readValueFromClassPathFile( + "mapping/capability/jython-resource-definitions.json", + ResourceDefinition::class.java + )!! val resourceDefinitions: MutableMap = mutableMapOf() resourceDefinitions[resourceDefinition.name] = resourceDefinition capabilityResourceResolutionProcessor.resourceDictionaries = resourceDefinitions @@ -125,6 +136,27 @@ class CapabilityResourceResolutionProcessorTest { } } -open class MockCapabilityService { +open class MockCapabilityService + +open class MockCapabilityScriptRA : ResourceAssignmentProcessor() { -} \ No newline at end of file + val log = logger(MockCapabilityScriptRA::class) + + override fun getName(): String { + return "MockCapabilityScriptRA" + } + + override suspend fun processNB(executionRequest: ResourceAssignment) { + log.info("executing RA mock capability : ${executionRequest.name}") + executionRequest.property!!.value = "assigned-data".asJsonPrimitive() + } + + override fun process(executionRequest: ResourceAssignment) { + log.info("executing RA mock capability : ${executionRequest.name}") + executionRequest.property!!.value = "assigned-data".asJsonPrimitive() + } + + override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ResourceAssignment) { + TODO("not implemented") // To change body of created functions use File | Settings | File Templates. + } +}