X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=netconf%2Fsal-netconf-connector%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Fsal%2Fconnect%2Fnetconf%2Fsal%2FNetconfDeviceDataBrokerTest.java;h=c7ebc5f53b0b8cae849d0ff2a04a8da2cfca9201;hb=refs%2Fchanges%2F57%2F101857%2F4;hp=c32f4fea3339fa1a676fa7d49d1fd23d5a3200be;hpb=08e975527c02f1e93ba791cf171247c2d3f7a6fd;p=netconf.git diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBrokerTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBrokerTest.java index c32f4fea33..c7ebc5f53b 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBrokerTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBrokerTest.java @@ -7,28 +7,37 @@ */ package org.opendaylight.netconf.sal.connect.netconf.sal; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; +import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.NETCONF_GET_CONFIG_QNAME; import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.NETCONF_GET_QNAME; -import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.toPath; -import com.google.common.collect.Lists; -import com.google.common.util.concurrent.Futures; +import com.google.common.collect.ClassToInstanceMap; import java.net.InetSocketAddress; import java.util.Arrays; -import org.junit.Assert; +import java.util.Collections; +import org.junit.AfterClass; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; -import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; +import org.opendaylight.mdsal.binding.runtime.spi.BindingRuntimeHelpers; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMDataBrokerExtension; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult; +import org.opendaylight.netconf.dom.api.tx.NetconfDOMDataBrokerFieldsExtension; +import org.opendaylight.netconf.dom.api.tx.NetconfDOMFieldsReadTransaction; +import org.opendaylight.netconf.dom.api.tx.NetconfDOMFieldsReadWriteTransaction; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences; import org.opendaylight.netconf.sal.connect.netconf.sal.tx.AbstractWriteTx; import org.opendaylight.netconf.sal.connect.netconf.sal.tx.WriteCandidateRunningTx; @@ -36,74 +45,102 @@ import org.opendaylight.netconf.sal.connect.netconf.sal.tx.WriteCandidateTx; import org.opendaylight.netconf.sal.connect.netconf.sal.tx.WriteRunningTx; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.extension.rev131210.$YangModuleInfoImpl; -import org.opendaylight.yangtools.sal.binding.generator.impl.ModuleInfoBackedContext; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.base._1._0.rev110601.IetfNetconfService; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netconf.monitoring.rev220718.NetconfTcp; +import org.opendaylight.yangtools.rfc8528.data.util.EmptyMountPointContext; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; -import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; +@RunWith(MockitoJUnitRunner.class) public class NetconfDeviceDataBrokerTest { + private static EffectiveModelContext SCHEMA_CONTEXT; @Mock private DOMRpcService rpcService; - private SchemaContext schemaContext; private NetconfDeviceDataBroker dataBroker; + @BeforeClass + public static void beforeClass() { + SCHEMA_CONTEXT = BindingRuntimeHelpers.createEffectiveModel(IetfNetconfService.class, NetconfTcp.class); + } + + @AfterClass + public static void afterClass() { + SCHEMA_CONTEXT = null; + } + @Before public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); - final ModuleInfoBackedContext moduleInfoBackedContext = ModuleInfoBackedContext.create(); - moduleInfoBackedContext.addModuleInfos( - Lists.newArrayList( - $YangModuleInfoImpl.getInstance(), - org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.base._1._0.rev110601.$YangModuleInfoImpl.getInstance())); - schemaContext = moduleInfoBackedContext.tryToCreateSchemaContext().get(); - DOMRpcResult result = new DefaultDOMRpcResult(); - when(rpcService.invokeRpc(any(SchemaPath.class), any(NormalizedNode.class))).thenReturn(Futures.immediateCheckedFuture(result)); - + doReturn(FluentFutures.immediateFluentFuture(new DefaultDOMRpcResult())).when(rpcService) + .invokeRpc(any(QName.class), any(ContainerNode.class)); dataBroker = getDataBroker(NetconfMessageTransformUtil.NETCONF_CANDIDATE_URI.toString()); } @Test - public void testNewReadOnlyTransaction() throws Exception { - final DOMDataReadOnlyTransaction tx = dataBroker.newReadOnlyTransaction(); + public void testNewReadOnlyTransaction() { + final DOMDataTreeReadTransaction tx = dataBroker.newReadOnlyTransaction(); tx.read(LogicalDatastoreType.OPERATIONAL, null); - verify(rpcService).invokeRpc(eq(toPath(NETCONF_GET_QNAME)), any(ContainerNode.class)); + verify(rpcService).invokeRpc(eq(NETCONF_GET_QNAME), any(ContainerNode.class)); } @Test - public void testNewReadWriteTransaction() throws Exception { - final DOMDataReadWriteTransaction tx = dataBroker.newReadWriteTransaction(); + public void testNewReadWriteTransaction() { + final DOMDataTreeReadWriteTransaction tx = dataBroker.newReadWriteTransaction(); tx.read(LogicalDatastoreType.OPERATIONAL, null); - verify(rpcService).invokeRpc(eq(toPath(NETCONF_GET_QNAME)), any(ContainerNode.class)); + verify(rpcService).invokeRpc(eq(NETCONF_GET_QNAME), any(ContainerNode.class)); } @Test - public void testWritableRunningCandidateWriteTransaction() throws Exception { - testWriteTransaction(WriteCandidateRunningTx.class, NetconfMessageTransformUtil.NETCONF_RUNNING_WRITABLE_URI.toString(), + public void testWritableRunningCandidateWriteTransaction() { + testWriteTransaction( + WriteCandidateRunningTx.class, NetconfMessageTransformUtil.NETCONF_RUNNING_WRITABLE_URI.toString(), NetconfMessageTransformUtil.NETCONF_CANDIDATE_URI.toString()); } @Test - public void testCandidateWriteTransaction() throws Exception { + public void testCandidateWriteTransaction() { testWriteTransaction(WriteCandidateTx.class, NetconfMessageTransformUtil.NETCONF_CANDIDATE_URI.toString()); } @Test - public void testRunningWriteTransaction() throws Exception { + public void testRunningWriteTransaction() { testWriteTransaction(WriteRunningTx.class, NetconfMessageTransformUtil.NETCONF_RUNNING_WRITABLE_URI.toString()); } - private void testWriteTransaction(Class transaction, String... capabilities) { + @Test + public void testDOMFieldsExtensions() { + final ClassToInstanceMap extensions = dataBroker.getExtensions(); + final NetconfDOMDataBrokerFieldsExtension fieldsExtension = extensions.getInstance( + NetconfDOMDataBrokerFieldsExtension.class); + assertNotNull(fieldsExtension); + + // read-only transaction + final NetconfDOMFieldsReadTransaction roTx = fieldsExtension.newReadOnlyTransaction(); + roTx.read(LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.empty(), + Collections.singletonList(YangInstanceIdentifier.empty())); + verify(rpcService).invokeRpc(Mockito.eq(NETCONF_GET_CONFIG_QNAME), any(ContainerNode.class)); + + // read-write transaction + final NetconfDOMFieldsReadWriteTransaction rwTx = fieldsExtension.newReadWriteTransaction(); + rwTx.read(LogicalDatastoreType.OPERATIONAL, YangInstanceIdentifier.empty(), + Collections.singletonList(YangInstanceIdentifier.empty())); + verify(rpcService).invokeRpc(Mockito.eq(NETCONF_GET_QNAME), any(ContainerNode.class)); + } + + private void testWriteTransaction(final Class transaction, + final String... capabilities) { NetconfDeviceDataBroker db = getDataBroker(capabilities); - Assert.assertEquals(transaction, db.newWriteOnlyTransaction().getClass()); + assertEquals(transaction, db.newWriteOnlyTransaction().getClass()); } - private NetconfDeviceDataBroker getDataBroker(String... caps) { + private NetconfDeviceDataBroker getDataBroker(final String... caps) { NetconfSessionPreferences prefs = NetconfSessionPreferences.fromStrings(Arrays.asList(caps)); - final RemoteDeviceId id = new RemoteDeviceId("device-1", InetSocketAddress.createUnresolved("localhost", 17830)); - return new NetconfDeviceDataBroker(id, schemaContext, rpcService, prefs); + final RemoteDeviceId id = + new RemoteDeviceId("device-1", InetSocketAddress.createUnresolved("localhost", 17830)); + return new NetconfDeviceDataBroker(id, new EmptyMountPointContext(SCHEMA_CONTEXT), rpcService, prefs); } -} \ No newline at end of file +}