diff options
Diffstat (limited to 'ms/blueprintsprocessor/modules')
31 files changed, 244 insertions, 547 deletions
diff --git a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/BluePrintConstants.kt b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/BluePrintConstants.kt index 30162288c..fcc921cd9 100644 --- a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/BluePrintConstants.kt +++ b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/BluePrintConstants.kt @@ -59,6 +59,10 @@ object BluePrintConstants { const val DATA_TYPE_MAP: String = "map" const val DATA_TYPE_JSON: String = "json" + const val BLUEPRINT_TYPE_DEFAULT = "DEFAULT" + const val BLUEPRINT_TYPE_KOTLIN_DSL = "KOTLIN_DSL" + const val BLUEPRINT_TYPE_GENERIC_SCRIPT = "GENERIC_SCRIPT" + const val SCRIPT_KOTLIN = "kotlin" const val SCRIPT_JYTHON = "jython" const val SCRIPT_INTERNAL = "internal" @@ -183,6 +187,7 @@ object BluePrintConstants { const val METADATA_TEMPLATE_NAME = "template_name" const val METADATA_TEMPLATE_VERSION = "template_version" + const val METADATA_TEMPLATE_TYPE = "template_type" const val METADATA_TEMPLATE_AUTHOR = "template_author" const val METADATA_TEMPLATE_TAGS = "template_tags" const val METADATA_WORKFLOW_NAME = "workflow_name" diff --git a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/data/BluePrintModel.kt b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/data/BluePrintModel.kt index 71a31dcca..67a062347 100644 --- a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/data/BluePrintModel.kt +++ b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/data/BluePrintModel.kt @@ -646,7 +646,8 @@ class ToscaMetaData { lateinit var csarVersion: String lateinit var createdBy: String lateinit var entityDefinitions: String - var templateName: String? = null - var templateVersion: String? = null - var templateTags: String? = null + lateinit var templateName: String + lateinit var templateVersion: String + lateinit var templateTags: String + var templateType: String = BluePrintConstants.BLUEPRINT_TYPE_DEFAULT } diff --git a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/interfaces/BlueprintValidator.kt b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/interfaces/BlueprintValidator.kt index c6339f449..0d9876b81 100644 --- a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/interfaces/BlueprintValidator.kt +++ b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/interfaces/BlueprintValidator.kt @@ -61,10 +61,10 @@ interface BluePrintAttributeDefinitionValidator : BluePrintValidator<AttributeDe interface BluePrintValidatorService { @Throws(BluePrintException::class) - fun validateBluePrints(basePath: String): Boolean + suspend fun validateBluePrints(basePath: String): Boolean @Throws(BluePrintException::class) - fun validateBluePrints(bluePrintRuntimeService: BluePrintRuntimeService<*>): Boolean + suspend fun validateBluePrints(bluePrintRuntimeService: BluePrintRuntimeService<*>): Boolean } interface BluePrintTypeValidatorService { diff --git a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/BluePrintFileUtils.kt b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/BluePrintFileUtils.kt index 9e1047389..60d26a703 100755 --- a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/BluePrintFileUtils.kt +++ b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/BluePrintFileUtils.kt @@ -232,7 +232,8 @@ class BluePrintFileUtils { "\nCreated-By: <AUTHOR NAME>" + "\nEntry-Definitions: Definitions/<BLUEPRINT_NAME>.json" + "\nTemplate-Name: <BLUEPRINT_NAME>" + - "\nTemplate-Tags: <BLUEPRINT_VERSION>" + + "\nTemplate-Version: <BLUEPRINT_VERSION>" + + "\nTemplate-Type: <BLUEPRINT_TYPE>" + "\nTemplate-Tags: <TAGS>" } diff --git a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/BluePrintMetadataUtils.kt b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/BluePrintMetadataUtils.kt index 4d7647f47..64be5897a 100644 --- a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/BluePrintMetadataUtils.kt +++ b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/BluePrintMetadataUtils.kt @@ -20,8 +20,10 @@ package org.onap.ccsdk.cds.controllerblueprints.core.utils import com.fasterxml.jackson.databind.JsonNode import kotlinx.coroutines.runBlocking import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants +import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive import org.onap.ccsdk.cds.controllerblueprints.core.checkNotEmpty +import org.onap.ccsdk.cds.controllerblueprints.core.data.ServiceTemplate import org.onap.ccsdk.cds.controllerblueprints.core.data.ToscaMetaData import org.onap.ccsdk.cds.controllerblueprints.core.interfaces.BluePrintDefinitions import org.onap.ccsdk.cds.controllerblueprints.core.normalizedFile @@ -91,6 +93,7 @@ class BluePrintMetadataUtils { "Template-Name" -> toscaMetaData.templateName = value "Template-Version" -> toscaMetaData.templateVersion = value "Template-Tags" -> toscaMetaData.templateTags = value + "Template-Type" -> toscaMetaData.templateType = value } } } @@ -98,37 +101,58 @@ class BluePrintMetadataUtils { return toscaMetaData } - fun getBluePrintRuntime(id: String, blueprintBasePath: String): - BluePrintRuntimeService<MutableMap<String, JsonNode>> { + /** Get the default blueprint runtime for [id] and [blueprintBasePath] */ + suspend fun getBluePrintRuntime(id: String, blueprintBasePath: String): + BluePrintRuntimeService<MutableMap<String, JsonNode>> { val bluePrintContext: BluePrintContext = getBluePrintContext(blueprintBasePath) return getBluePrintRuntime(id, bluePrintContext) } + /** Get the default blocking blueprint runtime api for [id] and [blueprintBasePath] used in testing */ + fun bluePrintRuntime(id: String, blueprintBasePath: String): + BluePrintRuntimeService<MutableMap<String, JsonNode>> = runBlocking { + val bluePrintContext: BluePrintContext = getBluePrintContext(blueprintBasePath) + getBluePrintRuntime(id, bluePrintContext) + } + + /** Get the default blueprint runtime from [bluePrintContext] */ fun getBluePrintRuntime(id: String, bluePrintContext: BluePrintContext): - BluePrintRuntimeService<MutableMap<String, JsonNode>> { + BluePrintRuntimeService<MutableMap<String, JsonNode>> { checkNotEmpty(bluePrintContext.rootPath) { "blueprint context root path is missing." } checkNotEmpty(bluePrintContext.entryDefinition) { "blueprint context entry definition is missing." } val blueprintBasePath = bluePrintContext.rootPath val bluePrintRuntimeService = DefaultBluePrintRuntimeService(id, bluePrintContext) - bluePrintRuntimeService.put(BluePrintConstants.PROPERTY_BLUEPRINT_BASE_PATH, blueprintBasePath.asJsonPrimitive()) + bluePrintRuntimeService.put( + BluePrintConstants.PROPERTY_BLUEPRINT_BASE_PATH, + blueprintBasePath.asJsonPrimitive() + ) bluePrintRuntimeService.put(BluePrintConstants.PROPERTY_BLUEPRINT_PROCESS_ID, id.asJsonPrimitive()) return bluePrintRuntimeService } + /** Get the blueprint runtime for enhancement start for [id] and [blueprintBasePath] */ suspend fun getBaseEnhancementBluePrintRuntime(id: String, blueprintBasePath: String): - BluePrintRuntimeService<MutableMap<String, JsonNode>> { + BluePrintRuntimeService<MutableMap<String, JsonNode>> { val bluePrintContext: BluePrintContext = getBaseEnhancementBluePrintContext(blueprintBasePath) val bluePrintRuntimeService = DefaultBluePrintRuntimeService(id, bluePrintContext) - bluePrintRuntimeService.put(BluePrintConstants.PROPERTY_BLUEPRINT_BASE_PATH, blueprintBasePath.asJsonPrimitive()) + bluePrintRuntimeService.put( + BluePrintConstants.PROPERTY_BLUEPRINT_BASE_PATH, + blueprintBasePath.asJsonPrimitive() + ) bluePrintRuntimeService.put(BluePrintConstants.PROPERTY_BLUEPRINT_PROCESS_ID, id.asJsonPrimitive()) return bluePrintRuntimeService } - fun getBluePrintRuntime(id: String, blueprintBasePath: String, executionContext: MutableMap<String, JsonNode>): - BluePrintRuntimeService<MutableMap<String, JsonNode>> { + /** Get the default blueprint runtime for enhancement start for [id], [blueprintBasePath] and [executionContext] */ + suspend fun getBluePrintRuntime( + id: String, + blueprintBasePath: String, + executionContext: MutableMap<String, JsonNode> + ): + BluePrintRuntimeService<MutableMap<String, JsonNode>> { val bluePrintContext: BluePrintContext = getBluePrintContext(blueprintBasePath) val bluePrintRuntimeService = DefaultBluePrintRuntimeService(id, bluePrintContext) executionContext.forEach { @@ -139,27 +163,55 @@ class BluePrintMetadataUtils { return bluePrintRuntimeService } - fun getBluePrintContext(blueprintBasePath: String): BluePrintContext = runBlocking { + /** Get the default blueprint context for [blueprintBasePath]*/ + suspend fun getBluePrintContext(blueprintBasePath: String): BluePrintContext { val toscaMetaData: ToscaMetaData = toscaMetaData(blueprintBasePath) - log.info("Reading blueprint path($blueprintBasePath) and entry definition file (${toscaMetaData.entityDefinitions})") + log.info( + "Reading blueprint type(${toscaMetaData.templateType}) path($blueprintBasePath) " + + "and entry definition file (${toscaMetaData.entityDefinitions})" + ) // If the EntryDefinition is Kotlin file, compile and get Service Template - if (toscaMetaData.entityDefinitions.endsWith("kt")) { - readBlueprintKotlinFile(toscaMetaData, blueprintBasePath) - } else { - readBlueprintFile(toscaMetaData.entityDefinitions, blueprintBasePath) + val bluePrintContext = when (toscaMetaData.templateType.toUpperCase()) { + BluePrintConstants.BLUEPRINT_TYPE_KOTLIN_DSL -> readBlueprintKotlinFile( + toscaMetaData, + blueprintBasePath + ) + BluePrintConstants.BLUEPRINT_TYPE_GENERIC_SCRIPT -> readBlueprintGenericScript( + toscaMetaData, + blueprintBasePath + ) + BluePrintConstants.BLUEPRINT_TYPE_DEFAULT -> readBlueprintFile( + toscaMetaData.entityDefinitions, + blueprintBasePath + ) + else -> + throw BluePrintException( + "Unknown blueprint type(${toscaMetaData.templateType}), " + + "It should be any one of these types[${BluePrintConstants.BLUEPRINT_TYPE_KOTLIN_DSL}," + + "${BluePrintConstants.BLUEPRINT_TYPE_GENERIC_SCRIPT}, " + + "${BluePrintConstants.BLUEPRINT_TYPE_DEFAULT}]" + ) } + // Copy the metadata info + copyMetaInfoToServiceTemplate(toscaMetaData, bluePrintContext.serviceTemplate) + + return bluePrintContext } private suspend fun getBaseEnhancementBluePrintContext(blueprintBasePath: String): BluePrintContext { val toscaMetaData: ToscaMetaData = toscaMetaData(blueprintBasePath) + // Clean Type files BluePrintFileUtils.deleteBluePrintTypes(blueprintBasePath) val rootFilePath: String = blueprintBasePath.plus(File.separator).plus(toscaMetaData.entityDefinitions) val rootServiceTemplate = ServiceTemplateUtils.getServiceTemplate(rootFilePath) + // Copy the metadata info + copyMetaInfoToServiceTemplate(toscaMetaData, rootServiceTemplate) + // Clean the Import Definitions BluePrintFileUtils.cleanImportTypes(rootServiceTemplate) @@ -169,10 +221,22 @@ class BluePrintMetadataUtils { return blueprintContext } + /** copy metadata defined in [toscaMetaData] to [serviceTemplate] */ + private fun copyMetaInfoToServiceTemplate(toscaMetaData: ToscaMetaData, serviceTemplate: ServiceTemplate) { + if (serviceTemplate.metadata == null) serviceTemplate.metadata = mutableMapOf() + val metadata = serviceTemplate.metadata!! + metadata[BluePrintConstants.METADATA_TEMPLATE_AUTHOR] = toscaMetaData.createdBy + metadata[BluePrintConstants.METADATA_TEMPLATE_NAME] = toscaMetaData.templateName + metadata[BluePrintConstants.METADATA_TEMPLATE_VERSION] = toscaMetaData.templateVersion + metadata[BluePrintConstants.METADATA_TEMPLATE_TAGS] = toscaMetaData.templateTags + metadata[BluePrintConstants.METADATA_TEMPLATE_TYPE] = toscaMetaData.templateType + } + private suspend fun readBlueprintFile(entityDefinitions: String, basePath: String): BluePrintContext { val normalizedBasePath = normalizedPathName(basePath) val rootFilePath = normalizedPathName(normalizedBasePath, entityDefinitions) val rootServiceTemplate = ServiceTemplateUtils.getServiceTemplate(rootFilePath) + // Recursively Import Template files val schemaImportResolverUtils = BluePrintImportService(rootServiceTemplate, normalizedBasePath) val completeServiceTemplate = schemaImportResolverUtils.getImportResolvedServiceTemplate() @@ -185,17 +249,14 @@ class BluePrintMetadataUtils { /** Reade the Service Template Definitions from the Kotlin file */ private suspend fun readBlueprintKotlinFile(toscaMetaData: ToscaMetaData, basePath: String): BluePrintContext { - checkNotNull(toscaMetaData.templateName) { "couldn't find 'Template-Name' key in TOSCA.meta" } - checkNotNull(toscaMetaData.templateVersion) { "couldn't find 'Template-Version' key in TOSCA.meta" } - val definitionClassName = toscaMetaData.entityDefinitions.removeSuffix(".kt") val normalizedBasePath = normalizedPathName(basePath) val bluePrintScriptsService = BluePrintScriptsServiceImpl() val bluePrintDefinitions = bluePrintScriptsService .scriptInstance<BluePrintDefinitions>( - normalizedBasePath, toscaMetaData.templateName!!, - toscaMetaData.templateVersion!!, definitionClassName, false + normalizedBasePath, toscaMetaData.templateName, + toscaMetaData.templateVersion, definitionClassName, false ) // Get the Service Template val serviceTemplate = bluePrintDefinitions.serviceTemplate() @@ -209,5 +270,10 @@ class BluePrintMetadataUtils { blueprintContext.otherDefinitions = bluePrintDefinitions.otherDefinitions() return blueprintContext } + + /** Reade the Service Template Definitions from the generic script types */ + private fun readBlueprintGenericScript(toscaMetaData: ToscaMetaData, basePath: String): BluePrintContext { + return BluePrintContext(ServiceTemplate()) + } } } diff --git a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintContextTest.kt b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintContextTest.kt index 597194c29..38f6ea2ec 100644 --- a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintContextTest.kt +++ b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintContextTest.kt @@ -18,6 +18,7 @@ package org.onap.ccsdk.cds.controllerblueprints.core.service import com.fasterxml.jackson.databind.ObjectMapper +import kotlinx.coroutines.runBlocking import org.junit.Test import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException @@ -58,16 +59,20 @@ class BluePrintContextTest { @Test fun testBluePrintContextCreation() { - val bluePrintContext = BluePrintMetadataUtils.getBluePrintContext(blueprintBasePath) - assertNotNull(bluePrintContext, "Failed to populate Blueprint context") + runBlocking { + val bluePrintContext = BluePrintMetadataUtils.getBluePrintContext(blueprintBasePath) + assertNotNull(bluePrintContext, "Failed to populate Blueprint context") + } } @Test fun testChainedProperty() { - val bluePrintContext = BluePrintMetadataUtils.getBluePrintContext(blueprintBasePath) - val nodeType = bluePrintContext.nodeTypeChained("component-resource-resolution") - assertNotNull(nodeType, "Failed to get chained node type") - log.trace("Properties {}", JacksonUtils.getJson(nodeType, true)) + runBlocking { + val bluePrintContext = BluePrintMetadataUtils.getBluePrintContext(blueprintBasePath) + val nodeType = bluePrintContext.nodeTypeChained("component-resource-resolution") + assertNotNull(nodeType, "Failed to get chained node type") + log.trace("Properties {}", JacksonUtils.getJson(nodeType, true)) + } } @Test diff --git a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintRuntimeServiceTest.kt b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintRuntimeServiceTest.kt index dea46224d..b079d42aa 100644 --- a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintRuntimeServiceTest.kt +++ b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintRuntimeServiceTest.kt @@ -70,9 +70,9 @@ class BluePrintRuntimeServiceTest { ) val assignmentParams = "{\n" + - " \"ipAddress\": \"127.0.0.1\",\n" + - " \"hostName\": \"vnf-host\"\n" + - " }" + " \"ipAddress\": \"127.0.0.1\",\n" + + " \"hostName\": \"vnf-host\"\n" + + " }" bluePrintRuntimeService.setNodeTemplateAttributeValue( "resource-assignment", "assignment-params", @@ -84,8 +84,16 @@ class BluePrintRuntimeServiceTest { "netconf" ) assertNotNull(capProperties, "Failed to populate capability property values") - assertEquals(capProperties["target-ip-address"], "127.0.0.1".asJsonPrimitive(), "Failed to populate parameter target-ip-address") - assertEquals(capProperties["port-number"], JacksonUtils.jsonNodeFromObject(830), "Failed to populate parameter port-number") + assertEquals( + capProperties["target-ip-address"], + "127.0.0.1".asJsonPrimitive(), + "Failed to populate parameter target-ip-address" + ) + assertEquals( + capProperties["port-number"], + JacksonUtils.jsonNodeFromObject(830), + "Failed to populate parameter port-number" + ) } @Test @@ -108,8 +116,16 @@ class BluePrintRuntimeServiceTest { ) assertNotNull(inContext, "Failed to populate interface input property values") - assertEquals(inContext["action-name"], JacksonUtils.jsonNodeFromObject("sample-action"), "Failed to populate parameter action-name") - assertEquals(inContext["request-id"], JacksonUtils.jsonNodeFromObject("12345"), "Failed to populate parameter action-name") + assertEquals( + inContext["action-name"], + JacksonUtils.jsonNodeFromObject("sample-action"), + "Failed to populate parameter action-name" + ) + assertEquals( + inContext["request-id"], + JacksonUtils.jsonNodeFromObject("12345"), + "Failed to populate parameter action-name" + ) } @Test @@ -118,7 +134,11 @@ class BluePrintRuntimeServiceTest { val bluePrintRuntimeService = getBluePrintRuntimeService() - bluePrintRuntimeService.setNodeTemplateAttributeValue("resource-assignment", "assignment-params", NullNode.getInstance()) + bluePrintRuntimeService.setNodeTemplateAttributeValue( + "resource-assignment", + "assignment-params", + NullNode.getInstance() + ) bluePrintRuntimeService.resolveNodeTemplateInterfaceOperationOutputs( "resource-assignment", @@ -135,7 +155,11 @@ class BluePrintRuntimeServiceTest { "resource-assignment", "ResourceResolutionComponent", "process", "resource-assignment-params" ) - assertEquals(NullNode.getInstance(), outputParams, "Failed to get operation property resource-assignment-params") + assertEquals( + NullNode.getInstance(), + outputParams, + "Failed to get operation property resource-assignment-params" + ) } @Test @@ -154,7 +178,8 @@ class BluePrintRuntimeServiceTest { val keys = listOf("context1", "context2") - val jsonValueNode = bluePrintRuntimeService.getJsonForNodeTemplateAttributeProperties("resource-assignment-ra-component", keys) + val jsonValueNode = + bluePrintRuntimeService.getJsonForNodeTemplateAttributeProperties("resource-assignment-ra-component", keys) assertNotNull(jsonValueNode, "Failed to get Json for Node Template Context Properties") log.info("JSON Prepared Value Context {}", jsonValueNode) } @@ -189,7 +214,7 @@ class BluePrintRuntimeServiceTest { private fun getBluePrintRuntimeService(): BluePrintRuntimeService<MutableMap<String, JsonNode>> { val blueprintBasePath = normalizedPathName(TestConstants.PATH_TEST_BLUEPRINTS_BASECONFIG) - val blueprintRuntime = BluePrintMetadataUtils.getBluePrintRuntime("1234", blueprintBasePath) + val blueprintRuntime = BluePrintMetadataUtils.bluePrintRuntime("1234", blueprintBasePath) val checkProcessId = blueprintRuntime.get(BluePrintConstants.PROPERTY_BLUEPRINT_PROCESS_ID) val checkBasePath = blueprintRuntime.get(BluePrintConstants.PROPERTY_BLUEPRINT_BASE_PATH) diff --git a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintTemplateServiceTest.kt b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintTemplateServiceTest.kt index e525bfc27..0e93ccf6b 100644 --- a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintTemplateServiceTest.kt +++ b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintTemplateServiceTest.kt @@ -34,7 +34,7 @@ class BluePrintTemplateServiceTest { @BeforeTest fun setup() { val blueprintBasePath = TestConstants.PATH_TEST_BLUEPRINTS_BASECONFIG - blueprintRuntime = BluePrintMetadataUtils.getBluePrintRuntime("1234", blueprintBasePath) + blueprintRuntime = BluePrintMetadataUtils.bluePrintRuntime("1234", blueprintBasePath) } @Test diff --git a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/BluePrintMetadataUtilsTest.kt b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/BluePrintMetadataUtilsTest.kt index 302daf67e..6ccfe1e95 100644 --- a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/BluePrintMetadataUtilsTest.kt +++ b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/utils/BluePrintMetadataUtilsTest.kt @@ -48,20 +48,22 @@ class BluePrintMetadataUtilsTest { @Test fun testKotlinBluePrintContext() { - val path = normalizedPathName("src/test/resources/compile") - val blueprintContext = BluePrintMetadataUtils.getBluePrintContext(path) - assertNotNull(blueprintContext, "failed to get blueprint context") - assertNotNull(blueprintContext.serviceTemplate, "failed to get blueprint context service template") - assertNotNull(blueprintContext.serviceTemplate, "failed to get blueprint context service template") - assertNotNull(blueprintContext.otherDefinitions, "failed to get blueprint contextother definitions") + runBlocking { + val path = normalizedPathName("src/test/resources/compile") + val blueprintContext = BluePrintMetadataUtils.getBluePrintContext(path) + assertNotNull(blueprintContext, "failed to get blueprint context") + assertNotNull(blueprintContext.serviceTemplate, "failed to get blueprint context service template") + assertNotNull(blueprintContext.serviceTemplate, "failed to get blueprint context service template") + assertNotNull(blueprintContext.otherDefinitions, "failed to get blueprint contextother definitions") - var cachePresent = BluePrintCompileCache.hasClassLoader(path) - assertTrue(cachePresent, "failed to generate cache key ($path)") + var cachePresent = BluePrintCompileCache.hasClassLoader(path) + assertTrue(cachePresent, "failed to generate cache key ($path)") - /** Cleaning Cache */ - BluePrintCompileCache.cleanClassLoader(path) - cachePresent = BluePrintCompileCache.hasClassLoader(path) - assertTrue(!cachePresent, "failed to remove cache key ($path)") + /** Cleaning Cache */ + BluePrintCompileCache.cleanClassLoader(path) + cachePresent = BluePrintCompileCache.hasClassLoader(path) + assertTrue(!cachePresent, "failed to remove cache key ($path)") + } } @Test diff --git a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/resources/compile/TOSCA-Metadata/TOSCA.meta b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/resources/compile/TOSCA-Metadata/TOSCA.meta index b1ffabd13..d139c2db8 100644 --- a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/resources/compile/TOSCA-Metadata/TOSCA.meta +++ b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/test/resources/compile/TOSCA-Metadata/TOSCA.meta @@ -2,6 +2,7 @@ TOSCA-Meta-File-Version: 1.0.0 CSAR-Version: 1.0 Created-By: Brinda Santh <brindasanth@in.ibm.com> Entry-Definitions: cba.scripts.ActivateBlueprintDefinitions.kt -Template-Tags: Brinda Santh, activation-blueprint Template-Name: activate-blueprint Template-Version: 1.0.0 +Template-Type: KOTLIN_DSL +Template-Tags: Brinda Santh, activation-blueprint diff --git a/ms/blueprintsprocessor/modules/blueprints/blueprint-validation/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/validation/BluePrintDesignTimeValidatorService.kt b/ms/blueprintsprocessor/modules/blueprints/blueprint-validation/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/validation/BluePrintDesignTimeValidatorService.kt index 5df2decdb..67bdd0396 100644 --- a/ms/blueprintsprocessor/modules/blueprints/blueprint-validation/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/validation/BluePrintDesignTimeValidatorService.kt +++ b/ms/blueprintsprocessor/modules/blueprints/blueprint-validation/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/validation/BluePrintDesignTimeValidatorService.kt @@ -41,13 +41,13 @@ open class BluePrintDesignTimeValidatorService( private val log = LoggerFactory.getLogger(BluePrintDesignTimeValidatorService::class.toString()) - override fun validateBluePrints(basePath: String): Boolean { + override suspend fun validateBluePrints(basePath: String): Boolean { val bluePrintRuntimeService = BluePrintMetadataUtils.getBluePrintRuntime(UUID.randomUUID().toString(), basePath) return validateBluePrints(bluePrintRuntimeService) } - override fun validateBluePrints(bluePrintRuntimeService: BluePrintRuntimeService<*>): Boolean { + override suspend fun validateBluePrints(bluePrintRuntimeService: BluePrintRuntimeService<*>): Boolean { bluePrintTypeValidatorService.validateServiceTemplate( bluePrintRuntimeService, "service_template", @@ -76,7 +76,7 @@ open class BluePrintDesignTimeValidatorService( if (resourceDefinitionFile.exists()) { val resourceDefinitionMap = JacksonUtils.getMapFromFile(resourceDefinitionFile, ResourceDefinition::class.java) - resourceDefinitionMap?.forEach { resourceDefinitionName, resourceDefinition -> + resourceDefinitionMap.forEach { resourceDefinitionName, resourceDefinition -> resourceDefinitionValidator.validate(bluePrintRuntimeService, resourceDefinitionName, resourceDefinition) } } diff --git a/ms/blueprintsprocessor/modules/blueprints/blueprint-validation/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/validation/BluePrintDesignTimeValidatorServiceTest.kt b/ms/blueprintsprocessor/modules/blueprints/blueprint-validation/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/validation/BluePrintDesignTimeValidatorServiceTest.kt index 19d1ef0a4..dcf352927 100644 --- a/ms/blueprintsprocessor/modules/blueprints/blueprint-validation/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/validation/BluePrintDesignTimeValidatorServiceTest.kt +++ b/ms/blueprintsprocessor/modules/blueprints/blueprint-validation/src/test/kotlin/org/onap/ccsdk/cds/controllerblueprints/validation/BluePrintDesignTimeValidatorServiceTest.kt @@ -19,6 +19,7 @@ package org.onap.ccsdk.cds.controllerblueprints.validation import io.mockk.every import io.mockk.mockk +import kotlinx.coroutines.runBlocking import org.junit.Test import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintError import org.onap.ccsdk.cds.controllerblueprints.core.data.NodeTemplate @@ -35,18 +36,21 @@ import kotlin.test.assertTrue class BluePrintDesignTimeValidatorServiceTest { private val blueprintBasePath = "./../../../../../components/model-catalog/blueprint-model/test-blueprint/baseconfiguration" - private val bluePrintRuntime = BluePrintMetadataUtils.getBluePrintRuntime("1234", blueprintBasePath) + private val bluePrintRuntime = BluePrintMetadataUtils.bluePrintRuntime("1234", blueprintBasePath) private val mockBluePrintTypeValidatorService = MockBluePrintTypeValidatorService() private val resourceDefinitionValidator = mockk<ResourceDefinitionValidator>() - private val defaultBluePrintValidatorService = BluePrintDesignTimeValidatorService(mockBluePrintTypeValidatorService, resourceDefinitionValidator) + private val defaultBluePrintValidatorService = + BluePrintDesignTimeValidatorService(mockBluePrintTypeValidatorService, resourceDefinitionValidator) private val workflowValidator = BluePrintWorkflowValidatorImpl(mockBluePrintTypeValidatorService) @Test fun testValidateOfType() { - every { resourceDefinitionValidator.validate(bluePrintRuntime, any(), any()) } returns Unit + runBlocking { + every { resourceDefinitionValidator.validate(bluePrintRuntime, any(), any()) } returns Unit - val valid = defaultBluePrintValidatorService.validateBluePrints(bluePrintRuntime) - assertTrue(valid, "failed in blueprint Validation") + val valid = defaultBluePrintValidatorService.validateBluePrints(bluePrintRuntime) + assertTrue(valid, "failed in blueprint Validation") + } } @Test @@ -95,14 +99,19 @@ class BluePrintDesignTimeValidatorServiceTest { assertEquals(1, bluePrintRuntime.getBluePrintError().errors.size) assertEquals( "Failed to validate Workflow(resource-assignment)'s step(test)'s definition : " + - "resource-assignment/steps/test : NodeType(TestNodeType) derived from is 'tosca.nodes.TEST', " + - "Expected 'tosca.nodes.Workflow' or 'tosca.nodes.Component'", bluePrintRuntime.getBluePrintError().errors[0] + "resource-assignment/steps/test : NodeType(TestNodeType) derived from is 'tosca.nodes.TEST', " + + "Expected 'tosca.nodes.Workflow' or 'tosca.nodes.Component'", + bluePrintRuntime.getBluePrintError().errors[0] ) } @Test fun testValidateWorkflowSuccess() { val workflowName = "resource-assignment" - workflowValidator.validate(bluePrintRuntime, workflowName, bluePrintRuntime.bluePrintContext().workflowByName(workflowName)) + workflowValidator.validate( + bluePrintRuntime, + workflowName, + bluePrintRuntime.bluePrintContext().workflowByName(workflowName) + ) } } diff --git a/ms/blueprintsprocessor/modules/commons/db-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/db/BlueprintProcessorCatalogServiceImplTest.kt b/ms/blueprintsprocessor/modules/commons/db-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/db/BlueprintProcessorCatalogServiceImplTest.kt index e86dfab72..5d546c2ef 100644 --- a/ms/blueprintsprocessor/modules/commons/db-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/db/BlueprintProcessorCatalogServiceImplTest.kt +++ b/ms/blueprintsprocessor/modules/commons/db-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/db/BlueprintProcessorCatalogServiceImplTest.kt @@ -25,6 +25,7 @@ import org.onap.ccsdk.cds.blueprintsprocessor.db.mock.MockBlueprintProcessorCata import org.onap.ccsdk.cds.blueprintsprocessor.db.primary.service.BlueprintCatalogServiceImpl import org.onap.ccsdk.cds.blueprintsprocessor.db.primary.service.BlueprintProcessorCatalogServiceImpl import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants +import org.onap.ccsdk.cds.controllerblueprints.core.compress import org.onap.ccsdk.cds.controllerblueprints.core.deleteDir import org.onap.ccsdk.cds.controllerblueprints.core.normalizedFile import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintRuntimeService @@ -62,8 +63,14 @@ class BlueprintProcessorCatalogServiceImplTest { @BeforeTest fun setup() { + deleteDir("target", "blueprints") - bluePrintRuntimeService = BluePrintMetadataUtils.getBluePrintRuntime( + + // Create sample CBA zip + normalizedFile("./../../../../../components/model-catalog/blueprint-model/test-blueprint/baseconfiguration") + .compress(normalizedFile("./target/blueprints/generated-cba.zip")) + + bluePrintRuntimeService = BluePrintMetadataUtils.bluePrintRuntime( blueprintId, "./../../../../../components/model-catalog/blueprint-model/test-blueprint/baseconfiguration" ) @@ -76,11 +83,9 @@ class BlueprintProcessorCatalogServiceImplTest { @Test fun `test catalog service`() { - // TODO: I thing this test function should be remve and replace by the other one. - runBlocking { - // FIXME("Create ZIP from test blueprints") - val file = normalizedFile("./src/test/resources/test-cba.zip") + runBlocking { + val file = normalizedFile("./target/blueprints/generated-cba.zip") assertTrue(file.exists(), "couldn't get file ${file.absolutePath}") blueprintsProcessorCatalogService.saveToDatabase("1234", file) @@ -93,7 +98,7 @@ class BlueprintProcessorCatalogServiceImplTest { @Test fun `test save function`() { runBlocking { - val file = normalizedFile("./src/test/resources/test-cba.zip") + val file = normalizedFile("./target/blueprints/generated-cba.zip") assertTrue(file.exists(), "couldnt get file ${file.absolutePath}") val metadata = bluePrintRuntimeService.bluePrintContext().metadata!! metadata[BluePrintConstants.PROPERTY_BLUEPRINT_PROCESS_ID] = blueprintId @@ -105,7 +110,7 @@ class BlueprintProcessorCatalogServiceImplTest { @Test fun `test get function`() { runBlocking { - val file = normalizedFile("./src/test/resources/test-cba.zip") + val file = normalizedFile("./target/blueprints/generated-cba.zip") assertTrue(file.exists(), "couldnt get file ${file.absolutePath}") val metadata = bluePrintRuntimeService.bluePrintContext().metadata!! metadata[BluePrintConstants.PROPERTY_BLUEPRINT_PROCESS_ID] = blueprintId @@ -117,10 +122,10 @@ class BlueprintProcessorCatalogServiceImplTest { assertTrue( File( blueprintCoreConfiguration.bluePrintLoadConfiguration().blueprintArchivePath + - "/baseconfiguration" + "/baseconfiguration" ).deleteRecursively(), "Couldn't get blueprint archive " + - "${blueprintCoreConfiguration.bluePrintLoadConfiguration().blueprintArchivePath}/baseconfiguration " + - "from data base." + "${blueprintCoreConfiguration.bluePrintLoadConfiguration().blueprintArchivePath}/baseconfiguration " + + "from data base." ) } diff --git a/ms/blueprintsprocessor/modules/commons/db-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/db/mock/MockBlueprintProcessorCatalogServiceImpl.kt b/ms/blueprintsprocessor/modules/commons/db-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/db/mock/MockBlueprintProcessorCatalogServiceImpl.kt index 8dcf42668..248181f16 100644 --- a/ms/blueprintsprocessor/modules/commons/db-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/db/mock/MockBlueprintProcessorCatalogServiceImpl.kt +++ b/ms/blueprintsprocessor/modules/commons/db-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/db/mock/MockBlueprintProcessorCatalogServiceImpl.kt @@ -15,7 +15,7 @@ */ package org.onap.ccsdk.cds.blueprintsprocessor.db.mock -import io.mockk.every +import io.mockk.coEvery import io.mockk.mockk import org.onap.ccsdk.cds.controllerblueprints.core.interfaces.BluePrintValidatorService import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintRuntimeService @@ -28,8 +28,8 @@ open class MockBlueprintProcessorCatalogServiceImpl { @Bean(name = ["bluePrintRuntimeValidatorService"]) open fun bluePrintRuntimeValidatorService(): BluePrintValidatorService { val bluePrintValidatorService = mockk<BluePrintValidatorService>() - every { bluePrintValidatorService.validateBluePrints(any<String>()) } returns true - every { bluePrintValidatorService.validateBluePrints(any<BluePrintRuntimeService<*>>()) } returns true + coEvery { bluePrintValidatorService.validateBluePrints(any<String>()) } returns true + coEvery { bluePrintValidatorService.validateBluePrints(any<BluePrintRuntimeService<*>>()) } returns true return bluePrintValidatorService } } diff --git a/ms/blueprintsprocessor/modules/commons/db-lib/src/test/resources/test-cba.zip b/ms/blueprintsprocessor/modules/commons/db-lib/src/test/resources/test-cba.zip Binary files differdeleted file mode 100644 index 785ec6c00..000000000 --- a/ms/blueprintsprocessor/modules/commons/db-lib/src/test/resources/test-cba.zip +++ /dev/null diff --git a/ms/blueprintsprocessor/modules/inbounds/designer-api/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/BluePrintManagementGRPCHandlerTest.kt b/ms/blueprintsprocessor/modules/inbounds/designer-api/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/BluePrintManagementGRPCHandlerTest.kt index 582fd9a41..35e440554 100644 --- a/ms/blueprintsprocessor/modules/inbounds/designer-api/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/BluePrintManagementGRPCHandlerTest.kt +++ b/ms/blueprintsprocessor/modules/inbounds/designer-api/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/BluePrintManagementGRPCHandlerTest.kt @@ -30,6 +30,7 @@ import org.onap.ccsdk.cds.blueprintsprocessor.grpc.service.TokenAuthGrpcClientSe import org.onap.ccsdk.cds.controllerblueprints.common.api.ActionIdentifiers import org.onap.ccsdk.cds.controllerblueprints.common.api.CommonHeader import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants +import org.onap.ccsdk.cds.controllerblueprints.core.compress import org.onap.ccsdk.cds.controllerblueprints.core.deleteDir import org.onap.ccsdk.cds.controllerblueprints.core.normalizedFile import org.onap.ccsdk.cds.controllerblueprints.management.api.BluePrintBootstrapInput @@ -66,9 +67,15 @@ class BluePrintManagementGRPCHandlerTest { @BeforeTest fun init() { + + deleteDir("target", "blueprints") + + // Create sample CBA zip + normalizedFile("./../../../../../components/model-catalog/blueprint-model/test-blueprint/baseconfiguration") + .compress(normalizedFile("./target/blueprints/generated-cba.zip")) + // Create a server, add service, start, and register for automatic graceful shutdown. grpcServerRule.serviceRegistry.addService(bluePrintManagementGRPCHandler) - deleteDir("target", "blueprints") } @AfterTest @@ -84,7 +91,7 @@ class BluePrintManagementGRPCHandlerTest { val bootstrapOutput = blockingStub.bootstrapBlueprint(req) assertEquals(200, bootstrapOutput.status.code) assertTrue( - bootstrapOutput.status.message.contentEquals(BluePrintConstants.STATUS_SUCCESS), + bootstrapOutput.status.message!!.contentEquals(BluePrintConstants.STATUS_SUCCESS), "failed to get success status" ) assertEquals(id, bootstrapOutput.commonHeader.requestId) @@ -99,7 +106,7 @@ class BluePrintManagementGRPCHandlerTest { assertEquals(200, output.status.code) assertTrue( - output.status.message.contentEquals(BluePrintConstants.STATUS_SUCCESS), + output.status.message!!.contentEquals(BluePrintConstants.STATUS_SUCCESS), "failed to get success status" ) assertEquals(id, output.commonHeader.requestId) @@ -110,7 +117,7 @@ class BluePrintManagementGRPCHandlerTest { val downloadOutput = blockingStub.downloadBlueprint(downloadReq) assertEquals(200, downloadOutput.status.code) assertTrue( - downloadOutput.status.message.contentEquals(BluePrintConstants.STATUS_SUCCESS), + downloadOutput.status.message!!.contentEquals(BluePrintConstants.STATUS_SUCCESS), "failed to get success status" ) assertNotNull(downloadOutput.fileChunk?.chunk, "failed to get cba file chunks") @@ -126,7 +133,7 @@ class BluePrintManagementGRPCHandlerTest { var output = blockingStub.uploadBlueprint(req) assertEquals(200, output.status.code) assertTrue( - output.status.message.contentEquals(BluePrintConstants.STATUS_SUCCESS), + output.status.message!!.contentEquals(BluePrintConstants.STATUS_SUCCESS), "failed to get success status" ) assertEquals(id, output.commonHeader.requestId) @@ -174,7 +181,7 @@ class BluePrintManagementGRPCHandlerTest { } private fun createUploadInputRequest(id: String, action: String): BluePrintUploadInput { - val file = normalizedFile("./src/test/resources/test-cba.zip") + val file = normalizedFile("./target/blueprints/generated-cba.zip") assertTrue(file.exists(), "couldnt get file ${file.absolutePath}") val commonHeader = CommonHeader diff --git a/ms/blueprintsprocessor/modules/inbounds/designer-api/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/enhancer/BluePrintEnhancerServiceImplTest.kt b/ms/blueprintsprocessor/modules/inbounds/designer-api/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/enhancer/BluePrintEnhancerServiceImplTest.kt index 2762725fa..a866dcad3 100644 --- a/ms/blueprintsprocessor/modules/inbounds/designer-api/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/enhancer/BluePrintEnhancerServiceImplTest.kt +++ b/ms/blueprintsprocessor/modules/inbounds/designer-api/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/enhancer/BluePrintEnhancerServiceImplTest.kt @@ -65,34 +65,28 @@ class BluePrintEnhancerServiceImplTest { resourceDictionaryLoadService.loadPathsResourceDictionary(dictPaths) testBaseConfigEnhancementAndValidation() - testVFWEnhancementAndValidation() testGoldenEnhancementAndValidation() testRemoteScriptsEnhancementAndValidation() testCapabilityCliEnhancementAndValidation() } } - fun testBaseConfigEnhancementAndValidation() { + private fun testBaseConfigEnhancementAndValidation() { val basePath = "./../../../../../components/model-catalog/blueprint-model/test-blueprint/baseconfiguration" testComponentInvokeEnhancementAndValidation(basePath, "base-enhance") } - fun testVFWEnhancementAndValidation() { - val basePath = "./../../../../../components/model-catalog/blueprint-model/service-blueprint/vFW" - testComponentInvokeEnhancementAndValidation(basePath, "vFW-enhance") - } - - fun testGoldenEnhancementAndValidation() { + private fun testGoldenEnhancementAndValidation() { val basePath = "./../../../../../components/model-catalog/blueprint-model/test-blueprint/golden" testComponentInvokeEnhancementAndValidation(basePath, "golden-enhance") } - fun testRemoteScriptsEnhancementAndValidation() { + private fun testRemoteScriptsEnhancementAndValidation() { val basePath = "./../../../../../components/model-catalog/blueprint-model/test-blueprint/remote_scripts" testComponentInvokeEnhancementAndValidation(basePath, "remote_scripts-enhance") } - fun testCapabilityCliEnhancementAndValidation() { + private fun testCapabilityCliEnhancementAndValidation() { val basePath = "./../../../../../components/model-catalog/blueprint-model/test-blueprint/capability_cli" testComponentInvokeEnhancementAndValidation(basePath, "capability_cli-enhance") } @@ -111,8 +105,8 @@ class BluePrintEnhancerServiceImplTest { Assert.assertTrue("blueprint($basePath) validation failed ", valid) // Enable this to get the enhanced zip file - // val compressFile = normalizedFile("target/blueprints/enrichment", "$targetDirName.zip") - // normalizedFile(targetPath).compress(compressFile) + // val compressFile = normalizedFile("target/blueprints/enrichment", "$targetDirName.zip") + // normalizedFile(targetPath).compress(compressFile) deleteDir(targetPath) } diff --git a/ms/blueprintsprocessor/modules/inbounds/designer-api/src/test/resources/test-cba.zip b/ms/blueprintsprocessor/modules/inbounds/designer-api/src/test/resources/test-cba.zip Binary files differdeleted file mode 100644 index 785ec6c00..000000000 --- a/ms/blueprintsprocessor/modules/inbounds/designer-api/src/test/resources/test-cba.zip +++ /dev/null diff --git a/ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/selfservice/api/ExecutionServiceControllerTest.kt b/ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/selfservice/api/ExecutionServiceControllerTest.kt index a6ebe9c3e..3119b803e 100644 --- a/ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/selfservice/api/ExecutionServiceControllerTest.kt +++ b/ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/selfservice/api/ExecutionServiceControllerTest.kt @@ -22,6 +22,7 @@ import org.junit.Test import org.junit.runner.RunWith import org.onap.ccsdk.cds.blueprintsprocessor.core.BluePrintCoreConfiguration import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceInput +import org.onap.ccsdk.cds.controllerblueprints.core.compress import org.onap.ccsdk.cds.controllerblueprints.core.deleteDir import org.onap.ccsdk.cds.controllerblueprints.core.interfaces.BluePrintCatalogService import org.onap.ccsdk.cds.controllerblueprints.core.normalizedFile @@ -62,6 +63,10 @@ class ExecutionServiceControllerTest { @BeforeTest fun init() { deleteDir("target", "blueprints") + + // Create sample CBA zip + normalizedFile("./../../../../../components/model-catalog/blueprint-model/test-blueprint/baseconfiguration") + .compress(normalizedFile("./target/blueprints/generated-cba.zip")) } @AfterTest @@ -110,7 +115,7 @@ class ExecutionServiceControllerTest { } private fun loadTestCbaFile(): File { - val testCbaFile = normalizedFile("./src/test/resources/test-cba.zip") + val testCbaFile = normalizedFile("./target/blueprints/generated-cba.zip") assertTrue(testCbaFile.exists(), "couldn't get file ${testCbaFile.absolutePath}") return testCbaFile } diff --git a/ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/selfservice/api/validation/BluePrintRuntimeValidatorServiceTest.kt b/ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/selfservice/api/validation/BluePrintRuntimeValidatorServiceTest.kt index 75d9f487a..a367c8d36 100644 --- a/ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/selfservice/api/validation/BluePrintRuntimeValidatorServiceTest.kt +++ b/ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/selfservice/api/validation/BluePrintRuntimeValidatorServiceTest.kt @@ -16,6 +16,7 @@ package org.onap.ccsdk.cds.blueprintsprocessor.selfservice.api.validation +import kotlinx.coroutines.runBlocking import org.junit.Test import org.junit.runner.RunWith import org.onap.ccsdk.cds.blueprintsprocessor.selfservice.api.mock.MockResourceSource @@ -37,10 +38,12 @@ class BluePrintRuntimeValidatorServiceTest { @Test fun testBlueprintRuntimeValidation() { - val blueprintBasePath = - "./../../../../../components/model-catalog/blueprint-model/test-blueprint/baseconfiguration" - assertNotNull(bluePrintRuntimeValidatorService, " failed to initilize bluePrintRuntimeValidatorService") + runBlocking { + val blueprintBasePath = + "./../../../../../components/model-catalog/blueprint-model/test-blueprint/baseconfiguration" + assertNotNull(bluePrintRuntimeValidatorService, " failed to initilize bluePrintRuntimeValidatorService") - bluePrintRuntimeValidatorService.validateBluePrints(blueprintBasePath) + bluePrintRuntimeValidatorService.validateBluePrints(blueprintBasePath) + } } } diff --git a/ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/test/resources/test-cba.zip b/ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/test/resources/test-cba.zip Binary files differdeleted file mode 100644 index 785ec6c00..000000000 --- a/ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/test/resources/test-cba.zip +++ /dev/null diff --git a/ms/blueprintsprocessor/modules/services/execution-service/pom.xml b/ms/blueprintsprocessor/modules/services/execution-service/pom.xml index 6ca0bbc04..4517a3f05 100644 --- a/ms/blueprintsprocessor/modules/services/execution-service/pom.xml +++ b/ms/blueprintsprocessor/modules/services/execution-service/pom.xml @@ -32,10 +32,6 @@ <dependencies> <dependency> - <groupId>org.python</groupId> - <artifactId>jython-standalone</artifactId> - </dependency> - <dependency> <groupId>org.onap.ccsdk.cds.blueprintsprocessor</groupId> <artifactId>blueprint-core</artifactId> </dependency> diff --git a/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/BlueprintJythonService.kt b/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/BlueprintJythonService.kt index dd4c0ec99..3b8c296e6 100644 --- a/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/BlueprintJythonService.kt +++ b/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/BlueprintJythonService.kt @@ -13,124 +13,28 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.onap.ccsdk.cds.blueprintsprocessor.services.execution.scripts -import com.fasterxml.jackson.databind.JsonNode -import com.fasterxml.jackson.databind.node.ArrayNode -import org.apache.commons.io.FilenameUtils -import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.AbstractComponentFunction import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintProcessorException -import org.onap.ccsdk.cds.controllerblueprints.core.checkNotEmpty -import org.onap.ccsdk.cds.controllerblueprints.core.data.OperationAssignment import org.onap.ccsdk.cds.controllerblueprints.core.interfaces.BlueprintFunctionNode import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintContext -import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils -import org.slf4j.Logger -import org.slf4j.LoggerFactory -import org.springframework.context.ApplicationContext import org.springframework.stereotype.Service -import java.io.File - -@Service -class BlueprintJythonService( - val pythonExecutorProperty: PythonExecutorProperty, - private val applicationContext: ApplicationContext -) { - - val log: Logger = LoggerFactory.getLogger(BlueprintJythonService::class.java) - - inline fun <reified T> jythonInstance( - blueprintContext: BluePrintContext, - pythonClassName: String, - content: String, - dependencyInstanceNames: MutableMap<String, Any>? - ): T { - - val blueprintBasePath: String = blueprintContext.rootPath - val pythonPath: MutableList<String> = arrayListOf() - pythonPath.add(blueprintBasePath) - pythonPath.addAll(pythonExecutorProperty.modulePaths) - - val blueprintPythonConfigurations = BluePrintPython(pythonExecutorProperty.executionPath, pythonPath, arrayListOf()) - - val blueprintPythonHost = BlueprintPythonHost(blueprintPythonConfigurations) - val pyObject = blueprintPythonHost.getPythonComponent(content, pythonClassName, dependencyInstanceNames) - log.info("Component Object {}", pyObject) +// TODO("After Jython depreciation, this interface will be removed") - return pyObject.__tojava__(T::class.java) as T - } +@Deprecated("CDS won's support Jython services") +interface BlueprintJythonService { fun jythonComponentInstance(bluePrintContext: BluePrintContext, scriptClassReference: String): - BlueprintFunctionNode<*, *> { - - val pythonFileName = bluePrintContext.rootPath - .plus(File.separator) - .plus(scriptClassReference) - - val pythonClassName = FilenameUtils.getBaseName(pythonFileName) - log.info("Getting Jython Script Class($pythonClassName)") - - val content: String = JacksonUtils.getContent(pythonFileName) - - val jythonInstances: MutableMap<String, Any> = hashMapOf() - jythonInstances["log"] = LoggerFactory.getLogger(pythonClassName) - - return jythonInstance<BlueprintFunctionNode<*, *>>( - bluePrintContext, pythonClassName, - content, jythonInstances - ) - } - - fun jythonComponentInstance(abstractComponentFunction: AbstractComponentFunction): AbstractComponentFunction { - - val bluePrintRuntimeService = abstractComponentFunction.bluePrintRuntimeService - val bluePrintContext = bluePrintRuntimeService.bluePrintContext() - val nodeTemplateName: String = abstractComponentFunction.nodeTemplateName - val operationInputs: MutableMap<String, JsonNode> = abstractComponentFunction.operationInputs - - val operationAssignment: OperationAssignment = bluePrintContext - .nodeTemplateInterfaceOperation( - abstractComponentFunction.nodeTemplateName, - abstractComponentFunction.interfaceName, abstractComponentFunction.operationName - ) - - val blueprintBasePath: String = bluePrintContext.rootPath - - val artifactName: String = operationAssignment.implementation?.primary - ?: throw BluePrintProcessorException("missing primary field to get artifact name for node template ($nodeTemplateName)") - - val artifactDefinition = bluePrintRuntimeService.resolveNodeTemplateArtifactDefinition(nodeTemplateName, artifactName) - - val pythonFileName = artifactDefinition.file - ?: throw BluePrintProcessorException("missing file name for node template ($nodeTemplateName)'s artifactName($artifactName)") - - val pythonClassName = FilenameUtils.getBaseName(pythonFileName) - log.info("Getting Jython Script Class($pythonClassName)") - - val content: String? = bluePrintRuntimeService.resolveNodeTemplateArtifact(nodeTemplateName, artifactName) - - checkNotEmpty(content) { "artifact ($artifactName) content is empty" } - - val pythonPath: MutableList<String> = operationAssignment.implementation?.dependencies ?: arrayListOf() - pythonPath.add(blueprintBasePath) - pythonPath.addAll(pythonExecutorProperty.modulePaths) - - val jythonInstances: MutableMap<String, Any> = hashMapOf() - jythonInstances["log"] = LoggerFactory.getLogger(nodeTemplateName) - - val instanceDependenciesNode: ArrayNode = operationInputs[PythonExecutorConstants.INPUT_INSTANCE_DEPENDENCIES] as? ArrayNode - ?: throw BluePrintProcessorException("Failed to get property(${PythonExecutorConstants.INPUT_INSTANCE_DEPENDENCIES})") - - instanceDependenciesNode.forEach { instanceName -> - jythonInstances[instanceName.textValue()] = applicationContext.getBean(instanceName.textValue()) - } + BlueprintFunctionNode<*, *> +} - val scriptComponentFunction = jythonInstance<AbstractComponentFunction>( - bluePrintContext, pythonClassName, - content!!, jythonInstances - ) +@Service +open class DeprecatedBlueprintJythonService : BlueprintJythonService { - return scriptComponentFunction + override fun jythonComponentInstance(bluePrintContext: BluePrintContext, scriptClassReference: String): + BlueprintFunctionNode<*, *> { + throw BluePrintProcessorException("Include python-executor module for Jython support") } } diff --git a/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/BlueprintPythonHost.kt b/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/BlueprintPythonHost.kt deleted file mode 100644 index b348a9bef..000000000 --- a/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/BlueprintPythonHost.kt +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright © 2019 IBM, Bell Canada. - * - * 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. - */ -package org.onap.ccsdk.cds.blueprintsprocessor.services.execution.scripts - -import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintProcessorException -import org.python.core.PyObject -import org.python.util.PythonInterpreter - -open class BlueprintPythonHost(private val bluePrintPython: BluePrintPython) { - private val blueprintPythonInterpreterProxy: BlueprintPythonInterpreterProxy - - init { - PythonInterpreter.initialize(System.getProperties(), bluePrintPython.props, bluePrintPython.argv.toTypedArray()) - blueprintPythonInterpreterProxy = BlueprintPythonInterpreterProxy(bluePrintPython) - } - - /** - * getPythonComponent Purpose: execute the python script and return the python interpreter object - * - * @param content String - * @param interfaceName String - * @param properties MutableMap<String, Any> - * @return pyObject PyObject - */ - fun getPythonComponent(content: String?, interfaceName: String, properties: MutableMap<String, Any>?): PyObject { - bluePrintPython.content = content!! - bluePrintPython.pythonClassName = interfaceName - bluePrintPython.moduleName = "Blueprint Python Script [Class Name = $interfaceName]" - try { - return blueprintPythonInterpreterProxy.getPythonInstance(properties) - } catch (e: Exception) { - throw BluePrintProcessorException("Failed to execute Jython component $e", e) - } - } - - // TODO Check potential errors in python scripts -} diff --git a/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/BlueprintPythonInterpreterProxy.kt b/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/BlueprintPythonInterpreterProxy.kt deleted file mode 100644 index 6f311bcd2..000000000 --- a/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/BlueprintPythonInterpreterProxy.kt +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright © 2019 IBM, Bell Canada. - * - * 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. - */ -package org.onap.ccsdk.cds.blueprintsprocessor.services.execution.scripts - -import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintProcessorException -import org.python.core.PyObject -import org.python.core.PySyntaxError -import org.python.util.PythonInterpreter - -open class BlueprintPythonInterpreterProxy(private val bluePrintPython: BluePrintPython) : PythonInterpreter() { - - fun getPythonInstance(properties: MutableMap<String, Any>?): PyObject { - properties?.forEach { (name, value) -> - this.set(name, value) - } - - this.exec("import sys") - - bluePrintPython.content.let { - try { - this.exec(bluePrintPython.content) - } catch (e: PySyntaxError) { - throw BluePrintProcessorException("Error executing Jython code! Python error: '$e'", e) - } - } - - val initCommand = bluePrintPython.pythonClassName.plus(" = ").plus( - bluePrintPython.pythonClassName - ).plus("()") - this.exec(initCommand) - - return this.get(bluePrintPython.pythonClassName) - } -} diff --git a/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/PythonExecutorConfiguration.kt b/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/PythonExecutorConfiguration.kt deleted file mode 100644 index 0a220948d..000000000 --- a/ms/blueprintsprocessor/modules/services/execution-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/PythonExecutorConfiguration.kt +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright © 2017-2018 AT&T Intellectual Property. - * - * Modifications Copyright © 2019 IBM, Bell Canada. - * - * 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. - */ - -package org.onap.ccsdk.cds.blueprintsprocessor.services.execution.scripts - -import org.springframework.beans.factory.annotation.Value -import org.springframework.boot.context.properties.EnableConfigurationProperties -import org.springframework.context.annotation.ComponentScan -import org.springframework.context.annotation.Configuration -import java.io.File -import java.util.Properties - -@Configuration -@ComponentScan -@EnableConfigurationProperties -open class PythonExecutorConfiguration - -@Configuration -open class PythonExecutorProperty { - - @Value("\${blueprints.processor.functions.python.executor.executionPath}") - lateinit var executionPath: String - @Value("#{'\${blueprints.processor.functions.python.executor.modulePaths}'.split(',')}") - lateinit var modulePaths: List<String> -} - -class PythonExecutorConstants { - companion object { - const val INPUT_INSTANCE_DEPENDENCIES = "instance-dependencies" - } -} - -open class BluePrintPython( - executablePath: String, - blueprintPythonPlatform: MutableList<String>, - val argv: MutableList<String> -) { - - lateinit var moduleName: String - lateinit var pythonClassName: String - lateinit var content: String - var props: Properties = Properties() - - init { - // Build up the python.path - val sb = StringBuilder() - sb.append(System.getProperty("java.class.path")) - - for (p in blueprintPythonPlatform) { - sb.append(File.pathSeparator).append(p) - } - - props["python.import.site"] = "true" - props.setProperty("python.path", sb.toString()) - props.setProperty("python.verbose", "error") - props.setProperty("python.executable", executablePath) - } -} diff --git a/ms/blueprintsprocessor/modules/services/execution-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/AbstractComponentFunctionTest.kt b/ms/blueprintsprocessor/modules/services/execution-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/AbstractComponentFunctionTest.kt index e013fa889..3caa061e8 100644 --- a/ms/blueprintsprocessor/modules/services/execution-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/AbstractComponentFunctionTest.kt +++ b/ms/blueprintsprocessor/modules/services/execution-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/AbstractComponentFunctionTest.kt @@ -57,8 +57,7 @@ import kotlin.test.assertNotNull @RunWith(SpringRunner::class) @ContextConfiguration( classes = [ComponentFunctionScriptingService::class, - BluePrintScriptsServiceImpl::class, PythonExecutorProperty::class, - BlueprintJythonService::class] + BluePrintScriptsServiceImpl::class, DeprecatedBlueprintJythonService::class] ) class AbstractComponentFunctionTest { diff --git a/ms/blueprintsprocessor/modules/services/execution-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/BlueprintJythonServiceTest.kt b/ms/blueprintsprocessor/modules/services/execution-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/BlueprintJythonServiceTest.kt deleted file mode 100644 index a34794a85..000000000 --- a/ms/blueprintsprocessor/modules/services/execution-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/BlueprintJythonServiceTest.kt +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright © 2019 IBM, Bell Canada. - * Modifications Copyright © 2019 IBM. - * - * 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. - */ -package org.onap.ccsdk.cds.blueprintsprocessor.services.execution.scripts - -import io.mockk.every -import io.mockk.mockk -import org.junit.Test -import org.junit.runner.RunWith -import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.AbstractComponentFunction -import org.onap.ccsdk.cds.controllerblueprints.core.normalizedPathName -import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintContext -import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils -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.BeforeTest -import kotlin.test.assertNotNull - -@RunWith(SpringRunner::class) -@ContextConfiguration(classes = [BlueprintJythonService::class, PythonExecutorProperty::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 BlueprintJythonServiceTest { - - lateinit var blueprintContext: BluePrintContext - @Autowired - private lateinit var blueprintJythonService: BlueprintJythonService - - @BeforeTest - fun init() { - blueprintContext = mockk<BluePrintContext>() - every { blueprintContext.rootPath } returns normalizedPathName("target") - } - - @Test - fun testGetAbstractPythonPlugin() { - val content = JacksonUtils.getClassPathFileContent("scripts/SamplePythonComponentNode.py") - val dependencies: MutableMap<String, Any> = hashMapOf() - - val abstractPythonPlugin = blueprintJythonService - .jythonInstance<AbstractComponentFunction>( - blueprintContext, "SamplePythonComponentNode", - content, dependencies - ) - - assertNotNull(abstractPythonPlugin, "failed to get python component") - } - - @Test - fun testGetAbstractJythonComponent() { - val scriptInstance = "test-classes/scripts/SamplePythonComponentNode.py" - - val abstractJythonComponent = blueprintJythonService.jythonComponentInstance(blueprintContext, scriptInstance) - - assertNotNull(abstractJythonComponent, "failed to get Jython component") - } -} diff --git a/ms/blueprintsprocessor/modules/services/execution-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/BlueprintPythonHostTest.kt b/ms/blueprintsprocessor/modules/services/execution-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/BlueprintPythonHostTest.kt deleted file mode 100644 index 9a93abe0c..000000000 --- a/ms/blueprintsprocessor/modules/services/execution-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/BlueprintPythonHostTest.kt +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright © 2019 IBM, Bell Canada. - * - * 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. - */ -package org.onap.ccsdk.cds.blueprintsprocessor.services.execution.scripts - -import org.junit.Test -import org.junit.runner.RunWith -import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils -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.BeforeTest -import kotlin.test.assertNotNull - -@RunWith(SpringRunner::class) -@ContextConfiguration(classes = [BluePrintPython::class, PythonExecutorProperty::class, String::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 BlueprintPythonHostTest { - - lateinit var blueprintPythonHost: BlueprintPythonHost - - @Autowired - lateinit var pythonExecutorProperty: PythonExecutorProperty - - @BeforeTest - fun init() { - val blueprintBasePath = "./../../../../../components/model-catalog/blueprint-model/test-blueprint/baseconfiguration" - val pythonPath: MutableList<String> = arrayListOf() - pythonPath.add(blueprintBasePath) - pythonPath.addAll(pythonExecutorProperty.modulePaths) - - blueprintPythonHost = BlueprintPythonHost(BluePrintPython(pythonExecutorProperty.executionPath, pythonPath, arrayListOf())) - } - - @Test - fun testGetPythonComponent() { - val content = JacksonUtils.getContent("./src/test/resources/PythonTestScript.py") - - val pythonClassName = "PythonTestScript" - val dependencies: MutableMap<String, Any> = hashMapOf() - - val pythonObject = blueprintPythonHost.getPythonComponent(content, pythonClassName, dependencies) - - assertNotNull(pythonObject, "failed to get python object") - } -} diff --git a/ms/blueprintsprocessor/modules/services/execution-service/src/test/resources/PythonTestScript.py b/ms/blueprintsprocessor/modules/services/execution-service/src/test/resources/PythonTestScript.py deleted file mode 100644 index 42b611b88..000000000 --- a/ms/blueprintsprocessor/modules/services/execution-service/src/test/resources/PythonTestScript.py +++ /dev/null @@ -1,9 +0,0 @@ -class PythonTestScript(): - - def process(self, execution_request): - print "Processing calling..." + PROPERTY_BLUEPRINT_BASE_PATH - return None - - def recover(self, runtime_exception, execution_request): - print "Recovering calling..." + PROPERTY_BLUEPRINT_BASE_PATH - return None diff --git a/ms/blueprintsprocessor/modules/services/execution-service/src/test/resources/scripts/SamplePythonComponentNode.py b/ms/blueprintsprocessor/modules/services/execution-service/src/test/resources/scripts/SamplePythonComponentNode.py deleted file mode 100644 index f1b614a59..000000000 --- a/ms/blueprintsprocessor/modules/services/execution-service/src/test/resources/scripts/SamplePythonComponentNode.py +++ /dev/null @@ -1,14 +0,0 @@ -from abstract_blueprint_function import AbstractPythonComponentFunction -from blueprint_constants import * - - -class SamplePythonComponentNode(AbstractPythonComponentFunction): - - def process(self, execution_request): - print "Processing calling..." + PROPERTY_BLUEPRINT_BASE_PATH - return None - - def recover(self, runtime_exception, execution_request): - print "Recovering calling..." + PROPERTY_BLUEPRINT_BASE_PATH - return None - |