Revert "Renaming Files having BluePrint to have Blueprint"
[ccsdk/cds.git] / ms / blueprintsprocessor / functions / python-executor / src / test / kotlin / org / onap / ccsdk / cds / blueprintsprocessor / functions / python / executor / ComponentRemotePythonExecutorTest.kt
index 847b080..b81f05c 100644 (file)
@@ -22,14 +22,19 @@ import io.mockk.every
 import io.mockk.mockk
 import kotlinx.coroutines.runBlocking
 import org.junit.Test
+import org.onap.ccsdk.cds.blueprintsprocessor.core.BluePrintPropertiesService
 import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceInput
 import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.PrepareRemoteEnvInput
 import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.RemoteScriptExecutionInput
 import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.RemoteScriptExecutionOutput
+import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.RemoteScriptUploadBlueprintInput
+import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.RemoteScriptUploadBlueprintOutput
 import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.StatusType
 import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.StepData
+import org.onap.ccsdk.cds.blueprintsprocessor.db.primary.repository.BlueprintModelRepository
 import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.RemoteScriptExecutionService
 import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintError
 import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive
 import org.onap.ccsdk.cds.controllerblueprints.core.asJsonType
 import org.onap.ccsdk.cds.controllerblueprints.core.putJsonElement
@@ -46,7 +51,11 @@ class ComponentRemotePythonExecutorTest {
         runBlocking {
             val remoteScriptExecutionService = MockRemoteScriptExecutionService()
 
-            val componentRemotePythonExecutor = ComponentRemotePythonExecutor(remoteScriptExecutionService)
+            val componentRemotePythonExecutor = ComponentRemotePythonExecutor(
+                remoteScriptExecutionService,
+                mockk<BluePrintPropertiesService>(),
+                mockk<BlueprintModelRepository>()
+            )
 
             val executionServiceInput =
                 JacksonUtils.readValueFromClassPathFile(
@@ -87,9 +96,14 @@ class ComponentRemotePythonExecutorTest {
     fun testComponentRemotePythonExecutorProcessNB() {
         runBlocking {
             val remoteScriptExecutionService = MockRemoteScriptExecutionService()
-            val componentRemotePythonExecutor = ComponentRemotePythonExecutor(remoteScriptExecutionService)
+            val componentRemotePythonExecutor = ComponentRemotePythonExecutor(
+                remoteScriptExecutionService,
+                mockk<BluePrintPropertiesService>(),
+                mockk<BlueprintModelRepository>()
+            )
             val bluePrintRuntime = mockk<DefaultBluePrintRuntimeService>("123456-1000")
 
+            every { bluePrintRuntime.getBluePrintError() } answers { BluePrintError() } // successful case.
             every { bluePrintRuntime.setNodeTemplateAttributeValue(any(), any(), any()) } answers {}
 
             val input = getMockedOutput(bluePrintRuntime)
@@ -102,118 +116,127 @@ class ComponentRemotePythonExecutorTest {
      * Mocked input information for remote python executor.
      */
     fun getMockedOutput(svc: DefaultBluePrintRuntimeService):
-            ExecutionServiceInput {
-        val stepMetaData: MutableMap<String, JsonNode> = hashMapOf()
-
-        stepMetaData.putJsonElement(
-            BluePrintConstants.PROPERTY_CURRENT_NODE_TEMPLATE,
-            "execute-remote-python"
-        )
-        stepMetaData.putJsonElement(
-            BluePrintConstants.PROPERTY_CURRENT_INTERFACE,
-            "ComponentRemotePythonExecutor"
-        )
-        stepMetaData.putJsonElement(
-            BluePrintConstants.PROPERTY_CURRENT_OPERATION, "process"
-        )
-
-        val mapper = ObjectMapper()
-        val rootNode = mapper.createObjectNode()
-        rootNode.put("ip-address", "0.0.0.0")
-        rootNode.put("type", "rest")
-
-        val operationalInputs: MutableMap<String, JsonNode> = hashMapOf()
-        operationalInputs.putJsonElement(
-            BluePrintConstants.PROPERTY_CURRENT_NODE_TEMPLATE,
-            "execute-remote-python"
-        )
-        operationalInputs.putJsonElement(
-            BluePrintConstants.PROPERTY_CURRENT_INTERFACE,
-            "ComponentRemotePythonExecutor"
-        )
-        operationalInputs.putJsonElement(
-            BluePrintConstants.PROPERTY_CURRENT_OPERATION, "process"
-        )
-        operationalInputs.putJsonElement("endpoint-selector", "aai")
-        operationalInputs.putJsonElement("dynamic-properties", rootNode)
-        operationalInputs.putJsonElement("command", "./run.sh")
-        operationalInputs.putJsonElement("packages", "py")
-
-        every {
-            svc.resolveNodeTemplateInterfaceOperationInputs(
-                "execute-remote-python",
-                "ComponentRemotePythonExecutor", "process"
-            )
-        } returns operationalInputs
+        ExecutionServiceInput {
+            val stepMetaData: MutableMap<String, JsonNode> = hashMapOf()
 
-        val stepInputData = StepData().apply {
-            name = "execute-remote-python"
-            properties = stepMetaData
-        }
+            stepMetaData.putJsonElement(
+                BluePrintConstants.PROPERTY_CURRENT_NODE_TEMPLATE,
+                "execute-remote-python"
+            )
+            stepMetaData.putJsonElement(
+                BluePrintConstants.PROPERTY_CURRENT_INTERFACE,
+                "ComponentRemotePythonExecutor"
+            )
+            stepMetaData.putJsonElement(
+                BluePrintConstants.PROPERTY_CURRENT_OPERATION, "process"
+            )
 
-        val executionServiceInput = JacksonUtils
-            .readValueFromClassPathFile(
-                "payload/requests/sample-remote-python-request.json",
-                ExecutionServiceInput::class.java
-            )!!
-        executionServiceInput.stepData = stepInputData
+            val mapper = ObjectMapper()
+            val rootNode = mapper.createObjectNode()
+            rootNode.put("ip-address", "0.0.0.0")
+            rootNode.put("type", "rest")
 
-        val operationOutputs = hashMapOf<String, JsonNode>()
-        every {
-            svc.resolveNodeTemplateInterfaceOperationOutputs(
-                "execute-remote-python",
-                "ComponentRemotePythonExecutor", "process"
+            val operationalInputs: MutableMap<String, JsonNode> = hashMapOf()
+            operationalInputs.putJsonElement(
+                BluePrintConstants.PROPERTY_CURRENT_NODE_TEMPLATE,
+                "execute-remote-python"
+            )
+            operationalInputs.putJsonElement(
+                BluePrintConstants.PROPERTY_CURRENT_INTERFACE,
+                "ComponentRemotePythonExecutor"
             )
-        } returns operationOutputs
-        val bluePrintRuntimeService = BluePrintMetadataUtils
-            .getBluePrintRuntime(
+            operationalInputs.putJsonElement(
+                BluePrintConstants.PROPERTY_CURRENT_OPERATION, "process"
+            )
+            operationalInputs.putJsonElement("endpoint-selector", "aai")
+            operationalInputs.putJsonElement("dynamic-properties", rootNode)
+            operationalInputs.putJsonElement("command", "./run.sh")
+            operationalInputs.putJsonElement("packages", "py")
+
+            every {
+                svc.resolveNodeTemplateInterfaceOperationInputs(
+                    "execute-remote-python",
+                    "ComponentRemotePythonExecutor", "process"
+                )
+            } returns operationalInputs
+
+            val stepInputData = StepData().apply {
+                name = "execute-remote-python"
+                properties = stepMetaData
+            }
+
+            val executionServiceInput = JacksonUtils
+                .readValueFromClassPathFile(
+                    "payload/requests/sample-remote-python-request.json",
+                    ExecutionServiceInput::class.java
+                )!!
+            executionServiceInput.stepData = stepInputData
+
+            val operationOutputs = hashMapOf<String, JsonNode>()
+            every {
+                svc.resolveNodeTemplateInterfaceOperationOutputs(
+                    "execute-remote-python",
+                    "ComponentRemotePythonExecutor", "process"
+                )
+            } returns operationOutputs
+            val bluePrintRuntimeService = BluePrintMetadataUtils.bluePrintRuntime(
                 "123456-1000",
                 "./../../../../components/model-" +
-                        "catalog/blueprint-model/test-blueprint/" +
-                        "remote_scripts"
+                    "catalog/blueprint-model/test-blueprint/" +
+                    "remote_scripts"
             )
-        every {
-            svc.resolveNodeTemplateArtifactDefinition(
+            every {
+                svc.resolveNodeTemplateArtifactDefinition(
+                    "execute-remote-python", "component-script"
+                )
+            } returns bluePrintRuntimeService.resolveNodeTemplateArtifactDefinition(
                 "execute-remote-python", "component-script"
             )
-        } returns bluePrintRuntimeService.resolveNodeTemplateArtifactDefinition(
-            "execute-remote-python", "component-script"
-        )
-        every {
-            svc.setNodeTemplateAttributeValue(
-                "execute-remote-python", "prepare-environment-logs",
-                "prepared successfully".asJsonPrimitive()
-            )
-        } returns Unit
-        every {
-            svc.setNodeTemplateAttributeValue(
-                "execute-remote-python",
-                "execute-command-logs", "N/A".asJsonPrimitive()
-            )
-        } returns Unit
-        every {
-            svc.setNodeTemplateAttributeValue(
-                "execute-remote-python",
-                "execute-command-logs",
-                "processed successfully".asJsonPrimitive()
-            )
-        } returns Unit
+            every {
+                svc.setNodeTemplateAttributeValue(
+                    "execute-remote-python", "prepare-environment-logs",
+                    "prepared successfully".asJsonPrimitive()
+                )
+            } returns Unit
+            every {
+                svc.setNodeTemplateAttributeValue(
+                    "execute-remote-python",
+                    "execute-command-logs", "N/A".asJsonPrimitive()
+                )
+            } returns Unit
+            every {
+                svc.setNodeTemplateAttributeValue(
+                    "execute-remote-python",
+                    "execute-command-logs",
+                    "processed successfully".asJsonPrimitive()
+                )
+            } returns Unit
 
-        every {
-            svc.resolveDSLExpression("aai")
-        } returns """{"url" : "http://xxx.com"}""".asJsonType()
+            every {
+                svc.resolveDSLExpression("aai")
+            } returns """{"url" : "http://xxx.com"}""".asJsonType()
 
-        every {
-            svc.bluePrintContext()
-        } returns bluePrintRuntimeService.bluePrintContext()
-        return executionServiceInput
-    }
+            every {
+                svc.bluePrintContext()
+            } returns bluePrintRuntimeService.bluePrintContext()
+            return executionServiceInput
+        }
 }
 
 class MockRemoteScriptExecutionService : RemoteScriptExecutionService {
+
     override suspend fun init(selector: Any) {
     }
 
+    override suspend fun uploadBlueprint(uploadBpInput: RemoteScriptUploadBlueprintInput): RemoteScriptUploadBlueprintOutput {
+        val uploadBpOutput = mockk<RemoteScriptUploadBlueprintOutput>()
+        every { uploadBpOutput.payload } returns "[]".asJsonPrimitive()
+        every { uploadBpOutput.status } returns StatusType.SUCCESS
+        every { uploadBpOutput.requestId } returns "123456-1000"
+        every { uploadBpOutput.subRequestId } returns "1234"
+        return uploadBpOutput
+    }
+
     override suspend fun prepareEnv(prepareEnvInput: PrepareRemoteEnvInput): RemoteScriptExecutionOutput {
         assertEquals(prepareEnvInput.requestId, "123456-1000", "failed to match request id")
         assertNotNull(prepareEnvInput.packages, "failed to get packages")