Refactoring to enable on_failure for imperative workflow
[ccsdk/cds.git] / ms / blueprintsprocessor / functions / ansible-awx-executor / src / test / kotlin / org / onap / ccsdk / cds / blueprintsprocessor / functions / ansible / executor / ComponentRemoteAnsibleExecutorTest.kt
index b602902..88cf099 100644 (file)
@@ -27,13 +27,13 @@ import org.junit.Test
 import org.junit.runner.RunWith
 import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceInput
 import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.StepData
-import org.onap.ccsdk.cds.blueprintsprocessor.rest.service.BluePrintRestLibPropertyService
+import org.onap.ccsdk.cds.blueprintsprocessor.rest.service.BlueprintRestLibPropertyService
 import org.onap.ccsdk.cds.blueprintsprocessor.rest.service.BlueprintWebClientService
 import org.onap.ccsdk.cds.blueprintsprocessor.rest.service.BlueprintWebClientService.WebClientResponse
-import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants
+import org.onap.ccsdk.cds.controllerblueprints.core.BlueprintConstants
 import org.onap.ccsdk.cds.controllerblueprints.core.putJsonElement
-import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintRuntimeService
-import org.onap.ccsdk.cds.controllerblueprints.core.utils.BluePrintMetadataUtils
+import org.onap.ccsdk.cds.controllerblueprints.core.service.BlueprintRuntimeService
+import org.onap.ccsdk.cds.controllerblueprints.core.utils.BlueprintMetadataUtils
 import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils
 import org.springframework.test.context.TestPropertySource
 import org.springframework.test.context.junit4.SpringRunner
@@ -46,6 +46,7 @@ class ComponentRemoteAnsibleExecutorTest {
     private val webClientService = mockk<BlueprintWebClientService>()
 
     companion object {
+
         private const val jtId = 9
         private const val jobId = 223
 
@@ -73,30 +74,35 @@ class ComponentRemoteAnsibleExecutorTest {
             webClientService.exchangeResource("GET", "/api/v2/inventories/?name=Demo+Inventory", "")
         } returns WebClientResponse(200, getInventory())
         every {
-            webClientService.exchangeResource("POST", "/api/v2/job_templates/$jtId/launch/",
-                    """{"inventory":1,"extra_vars":{"site_id":"3 - Belmont","tor_group":"vEPC"}}""")
+            webClientService.exchangeResource(
+                "POST", "/api/v2/job_templates/$jtId/launch/",
+                """{"inventory":1,"extra_vars":{"site_id":"3 - Belmont","tor_group":"vEPC"}}"""
+            )
         } returns WebClientResponse(201, newJobTemplateLaunch(jtId, jobId))
         every {
             webClientService.exchangeResource("GET", "/api/v2/jobs/$jobId/", "")
         } returnsMany listOf(
-                WebClientResponse(200, getJobStatus1(jtId, jobId)),
-                WebClientResponse(200, getJobStatus2(jtId, jobId)),
-                WebClientResponse(200, getJobStatus3(jtId, jobId)),
-                WebClientResponse(200, getJobStatus4(jtId, jobId))
+            WebClientResponse(200, getJobStatus1(jtId, jobId)),
+            WebClientResponse(200, getJobStatus2(jtId, jobId)),
+            WebClientResponse(200, getJobStatus3(jtId, jobId)),
+            WebClientResponse(200, getJobStatus4(jtId, jobId))
         )
         every {
-            webClientService.exchangeResource("GET", "/api/v2/jobs/$jobId/stdout/?format=txt", "",
-                    mapOf("Content-Type" to "text/plain ;utf-8"))
+            webClientService.exchangeResource(
+                "GET", "/api/v2/jobs/$jobId/stdout/?format=txt", "",
+                mapOf("Accept" to "text/plain")
+            )
         } returns WebClientResponse(200, getReport())
         val selector = mapper.readTree(endpointSelector)
-        val bluePrintRestLibPropertyService = mockk<BluePrintRestLibPropertyService>()
+        val bluePrintRestLibPropertyService = mockk<BlueprintRestLibPropertyService>()
         every { bluePrintRestLibPropertyService.blueprintWebClientService(selector) } returns webClientService
         val awxRemoteExecutor = ComponentRemoteAnsibleExecutor(bluePrintRestLibPropertyService, mapper)
         awxRemoteExecutor.checkDelay = 1
 
         val executionServiceInput = JacksonUtils.readValueFromClassPathFile(
-                "payload/requests/sample-remote-ansible-request.json",
-                ExecutionServiceInput::class.java)!!
+            "payload/requests/sample-remote-ansible-request.json",
+            ExecutionServiceInput::class.java
+        )!!
 
         val bluePrintRuntimeService = createBlueprintRuntimeService(awxRemoteExecutor, executionServiceInput)
 
@@ -106,7 +112,7 @@ class ComponentRemoteAnsibleExecutorTest {
         }
 
         // then
-        assertTrue(bluePrintRuntimeService.getBluePrintError().errors.isEmpty())
+        assertTrue(bluePrintRuntimeService.getBlueprintError().allErrors().isEmpty())
     }
 
     @Test
@@ -122,14 +128,15 @@ class ComponentRemoteAnsibleExecutorTest {
             webClientService.exchangeResource("GET", "/api/v2/inventories/?name=Demo+Inventory", "")
         } returns WebClientResponse(404, "")
         val selector = mapper.readTree(endpointSelector)
-        val bluePrintRestLibPropertyService = mockk<BluePrintRestLibPropertyService>()
+        val bluePrintRestLibPropertyService = mockk<BlueprintRestLibPropertyService>()
         every { bluePrintRestLibPropertyService.blueprintWebClientService(selector) } returns webClientService
         val awxRemoteExecutor = ComponentRemoteAnsibleExecutor(bluePrintRestLibPropertyService, mapper)
         awxRemoteExecutor.checkDelay = 1
 
         val executionServiceInput = JacksonUtils.readValueFromClassPathFile(
-                "payload/requests/remote-ansible-request-full.json",
-                ExecutionServiceInput::class.java)!!
+            "payload/requests/remote-ansible-request-full.json",
+            ExecutionServiceInput::class.java
+        )!!
 
         val bluePrintRuntimeService = createBlueprintRuntimeService(awxRemoteExecutor, executionServiceInput)
 
@@ -139,7 +146,7 @@ class ComponentRemoteAnsibleExecutorTest {
         }
 
         // then
-        val errors = bluePrintRuntimeService.getBluePrintError().errors
+        val errors = bluePrintRuntimeService.getBlueprintError().allErrors()
         assertEquals(1, errors.size)
     }
 
@@ -156,18 +163,21 @@ class ComponentRemoteAnsibleExecutorTest {
             webClientService.exchangeResource("GET", "/api/v2/inventories/?name=Demo+Inventory", "")
         } returns WebClientResponse(200, getInventory())
         every {
-            webClientService.exchangeResource("POST", "/api/v2/job_templates/$jtId/launch/",
-                    """{"limit":"123","tags":"some-tag","skip_tags":"some-skip-tag","inventory":1,"extra_vars":{"site_id":"3 - Belmont","tor_group":"vEPC"}}""")
+            webClientService.exchangeResource(
+                "POST", "/api/v2/job_templates/$jtId/launch/",
+                """{"limit":"123","tags":"some-tag","skip_tags":"some-skip-tag","inventory":1,"extra_vars":{"site_id":"3 - Belmont","tor_group":"vEPC"}}"""
+            )
         } returns WebClientResponse(500, "")
         val selector = mapper.readTree(endpointSelector)
-        val bluePrintRestLibPropertyService = mockk<BluePrintRestLibPropertyService>()
+        val bluePrintRestLibPropertyService = mockk<BlueprintRestLibPropertyService>()
         every { bluePrintRestLibPropertyService.blueprintWebClientService(selector) } returns webClientService
         val awxRemoteExecutor = ComponentRemoteAnsibleExecutor(bluePrintRestLibPropertyService, mapper)
         awxRemoteExecutor.checkDelay = 1
 
         val executionServiceInput = JacksonUtils.readValueFromClassPathFile(
-                "payload/requests/remote-ansible-request-full.json",
-                ExecutionServiceInput::class.java)!!
+            "payload/requests/remote-ansible-request-full.json",
+            ExecutionServiceInput::class.java
+        )!!
 
         val bluePrintRuntimeService = createBlueprintRuntimeService(awxRemoteExecutor, executionServiceInput)
 
@@ -177,13 +187,18 @@ class ComponentRemoteAnsibleExecutorTest {
         }
 
         // then
-        val errors = bluePrintRuntimeService.getBluePrintError().errors
+        val errors = bluePrintRuntimeService.getBlueprintError().allErrors()
         assertEquals(1, errors.size)
     }
 
-    private fun createBlueprintRuntimeService(awxRemoteExecutor: ComponentRemoteAnsibleExecutor, executionServiceInput: ExecutionServiceInput): BluePrintRuntimeService<MutableMap<String, JsonNode>> {
-        val bluePrintRuntimeService = BluePrintMetadataUtils.getBluePrintRuntime("123456-1000",
-                "./../../../../components/model-catalog/blueprint-model/test-blueprint/remote_ansible")
+    private fun createBlueprintRuntimeService(
+        awxRemoteExecutor: ComponentRemoteAnsibleExecutor,
+        executionServiceInput: ExecutionServiceInput
+    ): BlueprintRuntimeService<MutableMap<String, JsonNode>> {
+        val bluePrintRuntimeService = BlueprintMetadataUtils.bluePrintRuntime(
+            "123456-1000",
+            "./../../../../components/model-catalog/blueprint-model/test-blueprint/remote_ansible"
+        )
         awxRemoteExecutor.bluePrintRuntimeService = bluePrintRuntimeService
 
         val workflowName = executionServiceInput.actionIdentifiers.actionName
@@ -193,9 +208,9 @@ class ComponentRemoteAnsibleExecutorTest {
         bluePrintRuntimeService.assignWorkflowInputs(workflowName, input)
 
         val stepMetaData: MutableMap<String, JsonNode> = hashMapOf()
-        stepMetaData.putJsonElement(BluePrintConstants.PROPERTY_CURRENT_NODE_TEMPLATE, "execute-remote-ansible")
-        stepMetaData.putJsonElement(BluePrintConstants.PROPERTY_CURRENT_INTERFACE, "ComponentRemoteAnsibleExecutor")
-        stepMetaData.putJsonElement(BluePrintConstants.PROPERTY_CURRENT_OPERATION, "process")
+        stepMetaData.putJsonElement(BlueprintConstants.PROPERTY_CURRENT_NODE_TEMPLATE, "execute-remote-ansible")
+        stepMetaData.putJsonElement(BlueprintConstants.PROPERTY_CURRENT_INTERFACE, "ComponentRemoteAnsibleExecutor")
+        stepMetaData.putJsonElement(BlueprintConstants.PROPERTY_CURRENT_OPERATION, "process")
 
         val stepInputData = StepData().apply {
             name = "execute-remote-ansible"