aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/resources/bpmn/SampleTestProcessDelegate.bpmn
blob: 41ffdb6dcd7f8825bedc45526428b3c5578fab1d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?xml version="1.0" encoding="UTF-8"?>
<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd" id="_7-gSIF09EeWE96cFqGLI8w" exporter="camunda modeler" exporterVersion="2.7.0" targetNamespace="http://camunda.org/schema/1.0/bpmn">
  <bpmn2:process id="SampleTestProcessDeleagate-wf" name="SampleTestProcessDeleagate-wf" isExecutable="true">
    <bpmn2:startEvent id="StartEcho" name="StartEvent">
      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
    </bpmn2:startEvent>
    <bpmn2:serviceTask id="ServiceTask_1" camunda:class="com.att.ajsc.clds.designer.workflow.PublishMessageDelegate" name="Perform ">
      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
    </bpmn2:serviceTask>
    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="StartEcho" targetRef="ServiceTask_1"/>
    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="ServiceTask_1" targetRef="UserTask_1"/>
    <bpmn2:userTask id="UserTask_1" camunda:assignee="bharath" name="HumanTask1">
      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
    </bpmn2:userTask>
    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="UserTask_1" targetRef="ServiceTask_3"/>
    <bpmn2:serviceTask id="ServiceTask_3" camunda:class="com.att.ajsc.clds.designer.workflow.ConsumeMessageDelegate" name="AddServiceTask3">
      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
      <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
    </bpmn2:serviceTask>
    <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ServiceTask_3" targetRef="EndEvent_1"/>
    <bpmn2:endEvent id="EndEvent_1" name="Endevent">
      <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
    </bpmn2:endEvent>
  </bpmn2:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="SampleTestProcessDeleagate-wf">
      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_3" bpmnElement="StartEcho">
        <dc:Bounds height="36.0" width="36.0" x="191.0" y="253.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_4" bpmnElement="ServiceTask_1">
        <dc:Bounds height="80.0" width="100.0" x="277.0" y="231.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_StartEvent_3" targetElement="_BPMNShape_ServiceTask_4">
        <di:waypoint xsi:type="dc:Point" x="227.0" y="271.0"/>
        <di:waypoint xsi:type="dc:Point" x="277.0" y="271.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_103" bpmnElement="EndEvent_1">
        <dc:Bounds height="36.0" width="36.0" x="955.0" y="253.0"/>
        <bpmndi:BPMNLabel>
          <dc:Bounds height="25.0" width="73.0" x="938.0" y="294.0"/>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_6" bpmnElement="ServiceTask_3">
        <dc:Bounds height="80.0" width="100.0" x="497.0" y="454.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ServiceTask_6" targetElement="_BPMNShape_EndEvent_103">
        <di:waypoint xsi:type="dc:Point" x="597.0" y="494.0"/>
        <di:waypoint xsi:type="dc:Point" x="918.0" y="494.0"/>
        <di:waypoint xsi:type="dc:Point" x="918.0" y="271.0"/>
        <di:waypoint xsi:type="dc:Point" x="955.0" y="271.0"/>
        <bpmndi:BPMNLabel>
          <dc:Bounds height="6.0" width="6.0" x="915.0" y="271.0"/>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="_BPMNShape_UserTask_2" bpmnElement="UserTask_1">
        <dc:Bounds height="80.0" width="100.0" x="630.0" y="117.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_UserTask_2" targetElement="_BPMNShape_ServiceTask_6">
        <di:waypoint xsi:type="dc:Point" x="730.0" y="187.0"/>
        <di:waypoint xsi:type="dc:Point" x="730.0" y="494.0"/>
        <di:waypoint xsi:type="dc:Point" x="597.0" y="494.0"/>
        <bpmndi:BPMNLabel>
          <dc:Bounds height="6.0" width="6.0" x="701.0" y="271.0"/>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_ServiceTask_4" targetElement="_BPMNShape_UserTask_2">
        <di:waypoint xsi:type="dc:Point" x="377.0" y="271.0"/>
        <di:waypoint xsi:type="dc:Point" x="436.0" y="271.0"/>
        <di:waypoint xsi:type="dc:Point" x="436.0" y="157.0"/>
        <di:waypoint xsi:type="dc:Point" x="630.0" y="157.0"/>
        <bpmndi:BPMNLabel>
          <dc:Bounds height="6.0" width="6.0" x="457.0" y="271.0"/>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn2:definitions>
========================================================================= * 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. * ============LICENSE_END========================================================= */ package org.onap.ccsdk.cds.blueprintsprocessor.services.execution.scripts import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.node.ObjectNode import io.mockk.every import io.mockk.mockk import kotlinx.coroutines.runBlocking import org.junit.Test import org.junit.runner.RunWith import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ActionIdentifiers import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.CommonHeader 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.services.execution.AbstractComponentFunction import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.ComponentFunctionScriptingService import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.nodeTypeComponentScriptExecutor import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive import org.onap.ccsdk.cds.controllerblueprints.core.data.Implementation import org.onap.ccsdk.cds.controllerblueprints.core.normalizedPathName import org.onap.ccsdk.cds.controllerblueprints.core.scripts.BluePrintScriptsServiceImpl import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintContext import org.onap.ccsdk.cds.controllerblueprints.core.service.DefaultBluePrintRuntimeService 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.junit4.SpringRunner import kotlin.test.BeforeTest import kotlin.test.assertEquals import kotlin.test.assertNotNull /** * Unit test cases for abstract component function. */ @RunWith(SpringRunner::class) @ContextConfiguration( classes = [ComponentFunctionScriptingService::class, BluePrintScriptsServiceImpl::class, PythonExecutorProperty::class, BlueprintJythonService::class] ) class AbstractComponentFunctionTest { lateinit var blueprintContext: BluePrintContext @Autowired lateinit var compSvc: ComponentFunctionScriptingService @BeforeTest fun init() { blueprintContext = mockk<BluePrintContext>() every { blueprintContext.rootPath } returns normalizedPathName("target") every { blueprintContext.nodeTemplateOperationImplementation( any(), any(), any() ) } returns Implementation() } @Test fun testAbstractComponent() { runBlocking { val bluePrintRuntime = mockk<DefaultBluePrintRuntimeService>("1234") val samp = SampleComponent() val comp = samp as AbstractComponentFunction comp.bluePrintRuntimeService = bluePrintRuntime comp.stepName = "sample-step" assertNotNull(comp, "failed to get kotlin instance") val input = getMockedInput(bluePrintRuntime) val output = comp.applyNB(input) assertEquals(output.actionIdentifiers.actionName, "activate") assertEquals(output.commonHeader.requestId, "1234") assertEquals(output.stepData!!.name, "activate-restconf") assertEquals(output.status.message, "success") } } @Test fun testComponentFunctionPayload() { val sampleComponent = SampleComponent() sampleComponent.workflowName = "sample-action" sampleComponent.executionServiceInput = JacksonUtils.readValueFromClassPathFile( "payload/requests/sample-execution-request.json", ExecutionServiceInput::class.java )!! val payload = sampleComponent.requestPayload() assertNotNull(payload, "failed to get payload") val data = sampleComponent.requestPayloadActionProperty("data")?.first() assertNotNull(data, "failed to get payload request action data") } @Test fun testAbstractScriptComponent() { runBlocking { val bluePrintRuntime = mockk<DefaultBluePrintRuntimeService>("1234") val samp = SampleRestconfComponent(compSvc) val comp = samp as AbstractComponentFunction comp.bluePrintRuntimeService = bluePrintRuntime comp.stepName = "sample-step" assertNotNull(comp, "failed to get kotlin instance") val input = getMockedInput(bluePrintRuntime) val inp = getMockedContext() val output = comp.applyNB(input) assertEquals(output.actionIdentifiers.actionName, "activate") assertEquals(output.commonHeader.requestId, "1234") assertEquals(output.stepData!!.name, "activate-restconf") assertEquals(output.status.message, "success") } } /** * Mocked input for abstract function test. */ private fun getMockedContext() { val operationOutputs = hashMapOf<String, JsonNode>() every { blueprintContext.name() } returns "SampleTest" every { blueprintContext.version() } returns "SampleScriptComponent" } /** * Mocked input for abstract function test. */ private fun getMockedInput(bluePrintRuntime: DefaultBluePrintRuntimeService): ExecutionServiceInput { val mapper = ObjectMapper() val rootNode = mapper.createObjectNode() rootNode.put("ip-address", "0.0.0.0") rootNode.put("type", "rest") val operationInputs = hashMapOf<String, JsonNode>() operationInputs[BluePrintConstants.PROPERTY_CURRENT_NODE_TEMPLATE] = "activate-restconf".asJsonPrimitive() operationInputs[BluePrintConstants.PROPERTY_CURRENT_INTERFACE] = "interfaceName".asJsonPrimitive() operationInputs[BluePrintConstants.PROPERTY_CURRENT_OPERATION] = "operationName".asJsonPrimitive() operationInputs["dynamic-properties"] = rootNode val stepInputData = StepData().apply { name = "activate-restconf" properties = operationInputs } val executionServiceInput = ExecutionServiceInput().apply { commonHeader = CommonHeader().apply { requestId = "1234" } actionIdentifiers = ActionIdentifiers().apply { actionName = "activate" } payload = JacksonUtils.jsonNode("{}") as ObjectNode } executionServiceInput.stepData = stepInputData every { bluePrintRuntime.resolveNodeTemplateInterfaceOperationInputs( "activate-restconf", "interfaceName", "operationName" ) } returns operationInputs val operationOutputs = hashMapOf<String, JsonNode>() every { bluePrintRuntime.resolveNodeTemplateInterfaceOperationOutputs( "activate-restconf", "interfaceName", "operationName" ) } returns operationOutputs every { bluePrintRuntime.bluePrintContext() } returns blueprintContext return executionServiceInput } @Test fun testComponentScriptExecutorNodeType() { val componentScriptExecutor = BluePrintTypes.nodeTypeComponentScriptExecutor() assertNotNull(componentScriptExecutor.interfaces, "failed to get interface operations") } }