aboutsummaryrefslogtreecommitdiffstats
path: root/ms/blueprintsprocessor/functions/netconf-executor/src/test
diff options
context:
space:
mode:
authorOleg Mitsura <oleg.mitsura@amdocs.com>2019-04-07 22:13:50 -0400
committerOleg Mitsura <oleg.mitsura@amdocs.com>2019-04-08 15:27:22 -0400
commitdbd67ee741f4e3d255dfbe2674ad45ea854598fd (patch)
tree0753dec699c2f6497513c881b02c06340a9ce6c7 /ms/blueprintsprocessor/functions/netconf-executor/src/test
parent782e55f79b7fca957e0ef393c50f72daab3a7b59 (diff)
Adding NetconfRpcServiceImplTest for netconf-executor
Issue-ID: CCSDK-1126 Change-Id: Ib223ed93bbc8a81dea1d1fdf8c2aa12ef91ff9a8 Signed-off-by: Oleg Mitsura <oleg.mitsura@amdocs.com>
Diffstat (limited to 'ms/blueprintsprocessor/functions/netconf-executor/src/test')
-rw-r--r--ms/blueprintsprocessor/functions/netconf-executor/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/core/NetconfRpcServiceImplTest.kt366
1 files changed, 299 insertions, 67 deletions
diff --git a/ms/blueprintsprocessor/functions/netconf-executor/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/core/NetconfRpcServiceImplTest.kt b/ms/blueprintsprocessor/functions/netconf-executor/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/core/NetconfRpcServiceImplTest.kt
index 68d3e246f..eb32c546b 100644
--- a/ms/blueprintsprocessor/functions/netconf-executor/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/core/NetconfRpcServiceImplTest.kt
+++ b/ms/blueprintsprocessor/functions/netconf-executor/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/core/NetconfRpcServiceImplTest.kt
@@ -1,124 +1,356 @@
+/*
+ * Copyright © 2019 Bell Canada
+ *
+ * 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.
+ */
+
package org.onap.ccsdk.cds.blueprintsprocessor.functions.netconf.executor.core
-import org.junit.After
-import org.junit.Assert
+import io.mockk.every
+import io.mockk.mockk
+import io.mockk.spyk
import org.junit.Before
-import org.junit.Test
-import org.junit.Assert.*
+import org.junit.Test
import org.onap.ccsdk.cds.blueprintsprocessor.functions.netconf.executor.api.DeviceInfo
-import org.onap.ccsdk.cds.blueprintsprocessor.functions.netconf.executor.mocks.NetconfDeviceSimulator
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.netconf.executor.api.DeviceResponse
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.netconf.executor.api.NetconfException
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.netconf.executor.utils.RpcStatus
+import java.io.IOException
+import java.util.concurrent.CompletableFuture
+import kotlin.test.assertEquals
+import kotlin.test.assertFailsWith
+import kotlin.test.assertTrue
class NetconfRpcServiceImplTest {
+ private lateinit var mockNetconfSession: NetconfSessionImpl
- private var device: NetconfDeviceSimulator? = null
- private var deviceInfo: DeviceInfo? = null
-
- @Before
- fun before() {
- deviceInfo = DeviceInfo().apply {
+ companion object {
+ private const val someString = "someString"
+ private const val replyStr = "this is a reply"
+ private val failedDeviceResponse = DeviceResponse(status = RpcStatus.FAILURE,
+ requestMessage = "request message", responseMessage = replyStr) //responseMessage will be null in this POJO
+ private val successfulDeviceResponse = DeviceResponse(status = RpcStatus.SUCCESS,
+ requestMessage = "request message", responseMessage = replyStr) //responseMessage will be null in this POJO
+ //but will be set later from mockSession
+ private const val msgId = "100"
+ private const val timeout = 5
+ private val deviceInfo: DeviceInfo = DeviceInfo().apply {
username = "username"
password = "password"
ipAddress = "localhost"
port = 2224
- connectTimeout = 10
+ connectTimeout = 5
}
+ }
- device = NetconfDeviceSimulator(deviceInfo!!.port)
- device!!.start()
+ @Before
+ fun setup() {
+ mockNetconfSession = mockk()
}
- @After
- fun after() {
- device!!.stop()
+ @Test
+ fun `invokeRpc completes normally`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } returns successfulDeviceResponse
+ val invokeRpcrResult = spy.invokeRpc(someString)
+ assertEquals(successfulDeviceResponse, invokeRpcrResult)
}
@Test
- fun setNetconfSession() {
+ fun `invokeRpc on error sets DeviceResponse status to FAILURE`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } throws IOException("Some IO exception...")
+ val invokeRpcrResult = spy.invokeRpc(someString)
+ assertEquals(failedDeviceResponse.status, invokeRpcrResult.status)
+ assertTrue { invokeRpcrResult.errorMessage!!.contains("failed in 'invokeRpc' command") }
+ }
+ @Test
+ fun `getConfig completes normally`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } returns successfulDeviceResponse
+ val invokeRpcrResult = spy.getConfig(someString)
+ assertEquals(successfulDeviceResponse, invokeRpcrResult)
}
@Test
- fun getConfig() {
+ fun `getConfig on error sets DeviceResponse status to FAILURE`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } throws IOException("Some IO exception...")
+ val getConfigRpcResult = spy.getConfig(someString)
+ assertEquals(failedDeviceResponse.status, getConfigRpcResult.status)
+ assertTrue { getConfigRpcResult.errorMessage!!.contains("failed in 'get-config' command") }
+ }
- val netconfRpcServiceImpl = NetconfRpcServiceImpl(deviceInfo!!)
- val netconfSession = NetconfSessionImpl(deviceInfo!!, netconfRpcServiceImpl)
- netconfRpcServiceImpl.setNetconfSession(netconfSession)
- netconfSession.connect()
- Assert.assertTrue(netconfRpcServiceImpl.getConfig("filter","target").status.equals("failure"))
+ @Test
+ fun `deleteConfig completes normally`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } returns successfulDeviceResponse
+ val rpcResult = spy.deleteConfig(someString)
+ assertEquals(successfulDeviceResponse, rpcResult)
}
+ @Test
+ fun `deleteConfig on error sets DeviceResponse status to FAILURE`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } throws IOException("Some IO exception...")
+ val rpcResult = spy.deleteConfig(someString)
+ assertEquals(failedDeviceResponse.status, rpcResult.status)
+ assertTrue { rpcResult.errorMessage!!.contains("failed in 'delete-config' command") }
+ }
@Test
- fun deleteConfig() {
+ fun `lock completes normally`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } returns successfulDeviceResponse
+ val rpcResult = spy.lock(someString)
+ assertEquals(successfulDeviceResponse, rpcResult)
+ }
- val netconfRpcServiceImpl = NetconfRpcServiceImpl(deviceInfo!!)
- val netconfSession = NetconfSessionImpl(deviceInfo!!, netconfRpcServiceImpl)
- netconfRpcServiceImpl.setNetconfSession(netconfSession)
- netconfSession.connect()
- Assert.assertTrue(netconfRpcServiceImpl.deleteConfig("target").status.equals("failure"))
+ @Test
+ fun `lock on error sets DeviceResponse status to FAILURE`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } throws IOException("Some IO exception...")
+ val rpcResult = spy.lock(someString)
+ assertEquals(failedDeviceResponse.status, rpcResult.status)
+ assertTrue { rpcResult.errorMessage!!.contains("failed in 'lock' command") }
}
@Test
- fun lock() {
- val netconfRpcServiceImpl = NetconfRpcServiceImpl(deviceInfo!!)
- val netconfSession = NetconfSessionImpl(deviceInfo!!, netconfRpcServiceImpl)
- netconfRpcServiceImpl.setNetconfSession(netconfSession)
- netconfSession.connect()
- Assert.assertTrue(netconfRpcServiceImpl.lock("target").status.equals("failure"))
+ fun `unLock completes normally`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } returns successfulDeviceResponse
+ val rpcResult = spy.unLock(someString)
+ assertEquals(successfulDeviceResponse, rpcResult)
}
@Test
- fun unLock() {
- val netconfRpcServiceImpl = NetconfRpcServiceImpl(deviceInfo!!)
- val netconfSession = NetconfSessionImpl(deviceInfo!!, netconfRpcServiceImpl)
- netconfRpcServiceImpl.setNetconfSession(netconfSession)
- netconfSession.connect()
- Assert.assertTrue(netconfRpcServiceImpl.unLock("target").status.equals("failure"))
+ fun `unLock on error sets DeviceResponse status to FAILURE`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } throws IOException("Some IO exception...")
+ val rpcResult = spy.unLock(someString)
+ assertEquals(failedDeviceResponse.status, rpcResult.status)
+ assertTrue { rpcResult.errorMessage!!.contains("failed in 'unLock' command") }
}
@Test
- fun commit() {
- val netconfRpcServiceImpl = NetconfRpcServiceImpl(deviceInfo!!)
- val netconfSession = NetconfSessionImpl(deviceInfo!!, netconfRpcServiceImpl)
- netconfRpcServiceImpl.setNetconfSession(netconfSession)
- netconfSession.connect()
- Assert.assertTrue(netconfRpcServiceImpl.commit(true,60,"persist","1").status.equals("failure"))
+ fun `commit completes normally on confirmed flag and only persist but not persistId specified`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } returns successfulDeviceResponse
+ val rpcResult = spy.commit(true, timeout, persist = "blah", persistId = "")
+ assertEquals(successfulDeviceResponse, rpcResult)
+ }
+ @Test
+ fun `commit completes normally on no confirm flag and only persistId but not persist specified`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } returns successfulDeviceResponse
+ val rpcResult = spy.commit(false, timeout, persistId = "blah")
+ assertEquals(successfulDeviceResponse, rpcResult)
}
@Test
- fun cancelCommit() {
- val netconfSession = NetconfSessionImpl(deviceInfo!!, NetconfRpcServiceImpl(DeviceInfo()))
- val netconfRpcServiceImpl = NetconfRpcServiceImpl(DeviceInfo())
- netconfRpcServiceImpl.setNetconfSession(netconfSession)
- netconfSession.connect()
+ fun `commit fails on confirm flag with persistId specified`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } returns failedDeviceResponse
+ val rpcResult = spy.commit(true, timeout, persistId = "blah")
+ assertTrue { rpcResult.errorMessage!!.contains("failed in 'commit' command") }
+ }
- Assert.assertNotNull(netconfRpcServiceImpl.cancelCommit("1"))
+ @Test
+ fun `commit fails on confirm flag with persist and persistId specified`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } returns failedDeviceResponse
+ val rpcResult = spy.commit(true, timeout, persist = "blah", persistId = "blah")
+ assertTrue { rpcResult.errorMessage!!.contains("failed in 'commit' command") }
}
@Test
- fun discardConfig() {
- val netconfRpcServiceImpl = NetconfRpcServiceImpl(deviceInfo!!)
- val netconfSession = NetconfSessionImpl(deviceInfo!!, netconfRpcServiceImpl)
- netconfRpcServiceImpl.setNetconfSession(netconfSession)
- netconfSession.connect()
- Assert.assertTrue(netconfRpcServiceImpl.discardConfig().status.equals("failure"))
+ fun `commit fails on no confirm flag with persist and persistId specified`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } returns failedDeviceResponse
+ val rpcResult = spy.commit(false, timeout, persist = "blah", persistId = "blah")
+ assertTrue { rpcResult.errorMessage!!.contains("failed in 'commit' command") }
+ }
+ @Test
+ fun `cancelCommit completes normally`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } returns successfulDeviceResponse
+ val rpcResult = spy.cancelCommit(someString)
+ assertEquals(successfulDeviceResponse, rpcResult)
}
@Test
- fun editConfig() {
+ fun `cancelCommit on error sets DeviceResponse status to FAILURE`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } throws IOException("Some IO exception...")
+ val rpcResult = spy.cancelCommit(someString)
+ assertEquals(failedDeviceResponse.status, rpcResult.status)
+ assertTrue { rpcResult.errorMessage!!.contains("failed in 'cancelCommit' command") }
}
@Test
- fun validate() {
- val netconfRpcServiceImpl = NetconfRpcServiceImpl(deviceInfo!!)
- val netconfSession = NetconfSessionImpl(deviceInfo!!, netconfRpcServiceImpl)
- netconfRpcServiceImpl.setNetconfSession(netconfSession)
- netconfSession.connect()
- Assert.assertTrue(netconfRpcServiceImpl.validate("target").status.equals("failure"))
+ fun `discardConfig completes normally`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } returns successfulDeviceResponse
+ val rpcResult = spy.discardConfig()
+ assertEquals(successfulDeviceResponse, rpcResult)
+ }
+ @Test
+ fun `discardConfig on error sets DeviceResponse status to FAILURE`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } throws IOException("Some IO exception...")
+ val rpcResult = spy.discardConfig()
+ assertEquals(failedDeviceResponse.status, rpcResult.status)
+ assertTrue { rpcResult.errorMessage!!.contains("failed in 'discard-config' command") }
}
+ @Test
+ fun `editConfig completes normally`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } returns successfulDeviceResponse
+ val rpcResult = spy.editConfig("blah1", "blah2", "blah3")
+ assertEquals(successfulDeviceResponse, rpcResult)
+ }
+
+ @Test
+ fun `editConfig on error sets DeviceResponse status to FAILURE`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } throws IOException("Some IO exception...")
+ val rpcResult = spy.editConfig("blah1", "blah2", "blah3")
+ assertEquals(failedDeviceResponse.status, rpcResult.status)
+ assertTrue { rpcResult.errorMessage!!.contains("failed in 'editConfig' command") }
+ }
+
+ @Test
+ fun `validate completes normally`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } returns successfulDeviceResponse
+ val rpcResult = spy.validate("blah1")
+ assertEquals(successfulDeviceResponse, rpcResult)
+ }
+
+ @Test
+ fun `validate on error sets DeviceResponse status to FAILURE`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } throws IOException("Some IO exception...")
+ val rpcResult = spy.validate("blah1")
+ assertEquals(failedDeviceResponse.status, rpcResult.status)
+ assertTrue { rpcResult.errorMessage!!.contains("failed in 'validate' command") }
+ }
+
+ @Test
+ fun `closeSession completes normally without force`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } returns successfulDeviceResponse
+ val rpcResult = spy.closeSession(false)
+ assertEquals(successfulDeviceResponse, rpcResult)
+ }
+
+ @Test
+ fun `closeSession completes normally with force`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } returns successfulDeviceResponse
+ val rpcResult = spy.closeSession(true)
+ assertEquals(successfulDeviceResponse, rpcResult)
+ }
+
+ @Test
+ fun `closeSession on error sets DeviceResponse status to FAILURE`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } throws IOException("Some IO exception...")
+ val rpcResult = spy.closeSession(true)
+ assertEquals(failedDeviceResponse.status, rpcResult.status)
+ assertTrue { rpcResult.errorMessage!!.contains("failed in 'closeSession' command") }
+ }
+
+ @Test
+ fun `asyncRpc completes normally`() {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ every { spy.asyncRpc(any(), any()) } returns successfulDeviceResponse
+ val rpcResult = spy.asyncRpc("blah1", "blah2")
+ assertEquals(successfulDeviceResponse, rpcResult)
+ }
+
+ @Test
+ fun `asyncRpc on error throws NetconfException`() {
+ assertFailsWith(exceptionClass = NetconfException::class) {
+ val netconfRpcService = NetconfRpcServiceImpl(deviceInfo)
+ netconfRpcService.setNetconfSession(mockNetconfSession)
+ val spy = spyk(netconfRpcService)
+ val erroneousFuture = CompletableFuture<String>()
+ erroneousFuture.complete("something something rpc-error>")
+ every { mockNetconfSession.asyncRpc(any(), any()) } returns erroneousFuture
+ val rpcResult = spy.asyncRpc("blah1", "blah2")
+ assertEquals(failedDeviceResponse.status, rpcResult.status)
+ assertTrue { rpcResult.errorMessage!!.contains("failed in 'closeSession' command") }
+ }
+ }
} \ No newline at end of file