Metadata for name, version, tags and type
[ccsdk/cds.git] / ms / blueprintsprocessor / functions / python-executor / src / test / kotlin / org / onap / ccsdk / cds / blueprintsprocessor / functions / python / executor / ComponentRemotePythonExecutorTest.kt
index 166d7b1..3d58afa 100644 (file)
@@ -31,6 +31,7 @@ import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.StepData
 import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.RemoteScriptExecutionService
 import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants
 import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive
+import org.onap.ccsdk.cds.controllerblueprints.core.asJsonType
 import org.onap.ccsdk.cds.controllerblueprints.core.putJsonElement
 import org.onap.ccsdk.cds.controllerblueprints.core.service.DefaultBluePrintRuntimeService
 import org.onap.ccsdk.cds.controllerblueprints.core.utils.BluePrintMetadataUtils
@@ -38,7 +39,6 @@ import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils
 import kotlin.test.assertEquals
 import kotlin.test.assertNotNull
 
-
 class ComponentRemotePythonExecutorTest {
 
     @Test
@@ -48,11 +48,22 @@ class ComponentRemotePythonExecutorTest {
 
             val componentRemotePythonExecutor = ComponentRemotePythonExecutor(remoteScriptExecutionService)
 
-            val executionServiceInput = JacksonUtils.readValueFromClassPathFile("payload/requests/sample-activate-request.json",
-                    ExecutionServiceInput::class.java)!!
+            val executionServiceInput =
+                JacksonUtils.readValueFromClassPathFile(
+                    "payload/requests/sample-remote-python-request.json",
+                    ExecutionServiceInput::class.java
+                )!!
+
+            val bluePrintRuntimeService = BluePrintMetadataUtils.getBluePrintRuntime(
+                "123456-1000",
+                "./../../../../components/model-catalog/blueprint-model/test-blueprint/remote_scripts"
+            )
 
-            val bluePrintRuntimeService = BluePrintMetadataUtils.getBluePrintRuntime("123456-1000",
-                    "./../../../../components/model-catalog/blueprint-model/test-blueprint/remote_scripts")
+            /** Load Workflow Inputs */
+            bluePrintRuntimeService.assignWorkflowInputs(
+                "execute-remote-python",
+                executionServiceInput.payload.get("execute-remote-python-request")
+            )
 
             val stepMetaData: MutableMap<String, JsonNode> = hashMapOf()
             stepMetaData.putJsonElement(BluePrintConstants.PROPERTY_CURRENT_NODE_TEMPLATE, "execute-remote-python")
@@ -75,15 +86,14 @@ class ComponentRemotePythonExecutorTest {
     @Test
     fun testComponentRemotePythonExecutorProcessNB() {
         runBlocking {
-            val remoteScriptExecutionService =
-                    MockRemoteScriptExecutionService()
-            val componentRemotePythonExecutor = ComponentRemotePythonExecutor(
-                    remoteScriptExecutionService)
-            val bluePrintRuntime = mockk<DefaultBluePrintRuntimeService>(
-                    "123456-1000")
-            val input  = getMockedOutput(bluePrintRuntime)
-            componentRemotePythonExecutor.bluePrintRuntimeService =
-                    bluePrintRuntime
+            val remoteScriptExecutionService = MockRemoteScriptExecutionService()
+            val componentRemotePythonExecutor = ComponentRemotePythonExecutor(remoteScriptExecutionService)
+            val bluePrintRuntime = mockk<DefaultBluePrintRuntimeService>("123456-1000")
+
+            every { bluePrintRuntime.setNodeTemplateAttributeValue(any(), any(), any()) } answers {}
+
+            val input = getMockedOutput(bluePrintRuntime)
+            componentRemotePythonExecutor.bluePrintRuntimeService = bluePrintRuntime
             componentRemotePythonExecutor.applyNB(input)
         }
     }
@@ -92,17 +102,20 @@ class ComponentRemotePythonExecutorTest {
      * Mocked input information for remote python executor.
      */
     fun getMockedOutput(svc: DefaultBluePrintRuntimeService):
-            ExecutionServiceInput {
+        ExecutionServiceInput {
         val stepMetaData: MutableMap<String, JsonNode> = hashMapOf()
 
         stepMetaData.putJsonElement(
-                BluePrintConstants.PROPERTY_CURRENT_NODE_TEMPLATE,
-                "execute-remote-python")
+            BluePrintConstants.PROPERTY_CURRENT_NODE_TEMPLATE,
+            "execute-remote-python"
+        )
         stepMetaData.putJsonElement(
-                BluePrintConstants.PROPERTY_CURRENT_INTERFACE,
-                "ComponentRemotePythonExecutor")
+            BluePrintConstants.PROPERTY_CURRENT_INTERFACE,
+            "ComponentRemotePythonExecutor"
+        )
         stepMetaData.putJsonElement(
-                BluePrintConstants.PROPERTY_CURRENT_OPERATION, "process")
+            BluePrintConstants.PROPERTY_CURRENT_OPERATION, "process"
+        )
 
         val mapper = ObjectMapper()
         val rootNode = mapper.createObjectNode()
@@ -111,13 +124,16 @@ class ComponentRemotePythonExecutorTest {
 
         val operationalInputs: MutableMap<String, JsonNode> = hashMapOf()
         operationalInputs.putJsonElement(
-                BluePrintConstants.PROPERTY_CURRENT_NODE_TEMPLATE,
-                "execute-remote-python")
+            BluePrintConstants.PROPERTY_CURRENT_NODE_TEMPLATE,
+            "execute-remote-python"
+        )
         operationalInputs.putJsonElement(
-                BluePrintConstants.PROPERTY_CURRENT_INTERFACE,
-                "ComponentRemotePythonExecutor")
+            BluePrintConstants.PROPERTY_CURRENT_INTERFACE,
+            "ComponentRemotePythonExecutor"
+        )
         operationalInputs.putJsonElement(
-                BluePrintConstants.PROPERTY_CURRENT_OPERATION, "process")
+            BluePrintConstants.PROPERTY_CURRENT_OPERATION, "process"
+        )
         operationalInputs.putJsonElement("endpoint-selector", "aai")
         operationalInputs.putJsonElement("dynamic-properties", rootNode)
         operationalInputs.putJsonElement("command", "./run.sh")
@@ -125,8 +141,9 @@ class ComponentRemotePythonExecutorTest {
 
         every {
             svc.resolveNodeTemplateInterfaceOperationInputs(
-                    "execute-remote-python",
-                    "ComponentRemotePythonExecutor", "process")
+                "execute-remote-python",
+                "ComponentRemotePythonExecutor", "process"
+            )
         } returns operationalInputs
 
         val stepInputData = StepData().apply {
@@ -135,44 +152,56 @@ class ComponentRemotePythonExecutorTest {
         }
 
         val executionServiceInput = JacksonUtils
-                .readValueFromClassPathFile(
-                        "payload/requests/sample-remote-python-request.json",
-                        ExecutionServiceInput::class.java)!!
+            .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")
+                "execute-remote-python",
+                "ComponentRemotePythonExecutor", "process"
+            )
         } returns operationOutputs
-        val bluePrintRuntimeService = BluePrintMetadataUtils
-                .getBluePrintRuntime("123456-1000",
-                        "./../../../../components/model-" +
-                                "catalog/blueprint-model/test-blueprint/" +
-                                "remote_scripts")
+        val bluePrintRuntimeService = BluePrintMetadataUtils.bluePrintRuntime(
+            "123456-1000",
+            "./../../../../components/model-" +
+                "catalog/blueprint-model/test-blueprint/" +
+                "remote_scripts"
+        )
         every {
             svc.resolveNodeTemplateArtifactDefinition(
-                    "execute-remote-python", "component-script")
+                "execute-remote-python", "component-script"
+            )
         } returns bluePrintRuntimeService.resolveNodeTemplateArtifactDefinition(
-                "execute-remote-python", "component-script")
+            "execute-remote-python", "component-script"
+        )
         every {
             svc.setNodeTemplateAttributeValue(
-                    "execute-remote-python", "prepare-environment-logs",
-                    "prepared successfully".asJsonPrimitive())
+                "execute-remote-python", "prepare-environment-logs",
+                "prepared successfully".asJsonPrimitive()
+            )
         } returns Unit
         every {
             svc.setNodeTemplateAttributeValue(
-                    "execute-remote-python",
-                    "execute-command-logs", "N/A".asJsonPrimitive())
+                "execute-remote-python",
+                "execute-command-logs", "N/A".asJsonPrimitive()
+            )
         } returns Unit
         every {
             svc.setNodeTemplateAttributeValue(
-                    "execute-remote-python",
-                    "execute-command-logs",
-                    "processed successfully".asJsonPrimitive())
+                "execute-remote-python",
+                "execute-command-logs",
+                "processed successfully".asJsonPrimitive()
+            )
         } returns Unit
 
+        every {
+            svc.resolveDSLExpression("aai")
+        } returns """{"url" : "http://xxx.com"}""".asJsonType()
+
         every {
             svc.bluePrintContext()
         } returns bluePrintRuntimeService.bluePrintContext()
@@ -181,7 +210,7 @@ class ComponentRemotePythonExecutorTest {
 }
 
 class MockRemoteScriptExecutionService : RemoteScriptExecutionService {
-    override suspend fun init(selector: String) {
+    override suspend fun init(selector: Any) {
     }
 
     override suspend fun prepareEnv(prepareEnvInput: PrepareRemoteEnvInput): RemoteScriptExecutionOutput {
@@ -189,6 +218,7 @@ class MockRemoteScriptExecutionService : RemoteScriptExecutionService {
         assertNotNull(prepareEnvInput.packages, "failed to get packages")
 
         val remoteScriptExecutionOutput = mockk<RemoteScriptExecutionOutput>()
+        every { remoteScriptExecutionOutput.payload } returns "payload".asJsonPrimitive()
         every { remoteScriptExecutionOutput.response } returns listOf("prepared successfully")
         every { remoteScriptExecutionOutput.status } returns StatusType.SUCCESS
         return remoteScriptExecutionOutput
@@ -198,12 +228,12 @@ class MockRemoteScriptExecutionService : RemoteScriptExecutionService {
         assertEquals(remoteExecutionInput.requestId, "123456-1000", "failed to match request id")
 
         val remoteScriptExecutionOutput = mockk<RemoteScriptExecutionOutput>()
+        every { remoteScriptExecutionOutput.payload } returns "payload".asJsonPrimitive()
         every { remoteScriptExecutionOutput.response } returns listOf("processed successfully")
         every { remoteScriptExecutionOutput.status } returns StatusType.SUCCESS
         return remoteScriptExecutionOutput
     }
 
     override suspend fun close() {
-
     }
 }