From 9e6c13edd6adf0d18484abd4418137b1fb66e749 Mon Sep 17 00:00:00 2001 From: janani b Date: Wed, 24 Apr 2019 18:30:33 +0530 Subject: UT for execution service AbstractComponentFunction test case Issue-ID: CCSDK-1242 Change-Id: Ib7ab97bf8c061b0d23bc22ce352c97953172b526 Signed-off-by: janani b --- .../scripts/AbstractComponentFunctionTest.kt | 128 +++++++++++++++++++++ .../services/execution/scripts/SampleComponent.kt | 50 ++++++++ 2 files changed, 178 insertions(+) create mode 100644 ms/blueprintsprocessor/modules/services/execution-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/AbstractComponentFunctionTest.kt create mode 100644 ms/blueprintsprocessor/modules/services/execution-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/SampleComponent.kt 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 new file mode 100644 index 000000000..c5fbea80f --- /dev/null +++ b/ms/blueprintsprocessor/modules/services/execution-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/AbstractComponentFunctionTest.kt @@ -0,0 +1,128 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - CDS + * ================================================================================ + * Copyright (C) 2019 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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.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.controllerblueprints.core.BluePrintConstants +import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive +import org.onap.ccsdk.cds.controllerblueprints.core.normalizedPathName +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.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) +class AbstractComponentFunctionTest { + + lateinit var blueprintContext: BluePrintContext + + @BeforeTest + fun init() { + blueprintContext = mockk() + every { blueprintContext.rootPath } returns normalizedPathName("target") + } + + /** + * Tests the abstract component functionality. + */ + @Test + fun testAbstractComponent() { + runBlocking { + val bluePrintRuntime = mockk("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") + } + } + + + /** + * Mocked input for abstract function test. + */ + private fun getMockedInput(bluePrintRuntime: DefaultBluePrintRuntimeService): + ExecutionServiceInput { + val operationInputs = hashMapOf() + operationInputs[BluePrintConstants.PROPERTY_CURRENT_NODE_TEMPLATE] = + "activate-restconf".asJsonPrimitive() + operationInputs[BluePrintConstants.PROPERTY_CURRENT_INTERFACE] = + "interfaceName".asJsonPrimitive() + operationInputs[BluePrintConstants.PROPERTY_CURRENT_OPERATION] = + "operationName".asJsonPrimitive() + + 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() + every { + bluePrintRuntime.resolveNodeTemplateInterfaceOperationOutputs( + "activate-restconf", "interfaceName", "operationName") + } returns operationOutputs + every { bluePrintRuntime.bluePrintContext() } returns blueprintContext + + return executionServiceInput + } +} diff --git a/ms/blueprintsprocessor/modules/services/execution-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/SampleComponent.kt b/ms/blueprintsprocessor/modules/services/execution-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/SampleComponent.kt new file mode 100644 index 000000000..e09cbfb66 --- /dev/null +++ b/ms/blueprintsprocessor/modules/services/execution-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/execution/scripts/SampleComponent.kt @@ -0,0 +1,50 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - CDS + * ================================================================================ + * Copyright (C) 2019 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceInput +import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.AbstractComponentFunction +import org.slf4j.LoggerFactory + +open class SampleComponent : AbstractComponentFunction() { + + val log = LoggerFactory.getLogger(SampleComponent::class.java)!! + + + override suspend fun processNB(executionRequest: ExecutionServiceInput) { + } + + override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ExecutionServiceInput) { + } +} + +open class SampleScriptComponent : AbstractComponentFunction() { + + val log = LoggerFactory.getLogger(SampleScriptComponent::class.java)!! + + + override suspend fun processNB(executionRequest: ExecutionServiceInput) { + } + + override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ExecutionServiceInput) { + } +} \ No newline at end of file -- cgit 1.2.3-korg