X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-rest-connector%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frestconf%2Fimpl%2Ftest%2FBrokerFacadeTest.java;h=6542396612f6a2c4d57bc0226567e4ac507681c3;hb=c8023e980b7f421d0af06b99fd66380b72d3a8e0;hp=bca3d0b4579d291d18aa9527ad4baff5dcd3f4bc;hpb=4e4e9f0dc21b2dc9823960d2e984bb122b291c66;p=controller.git diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/BrokerFacadeTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/BrokerFacadeTest.java index bca3d0b457..6542396612 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/BrokerFacadeTest.java +++ b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/BrokerFacadeTest.java @@ -23,8 +23,8 @@ import com.google.common.base.Optional; import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.Futures; import java.util.concurrent.Future; -import org.apache.commons.lang.StringEscapeUtils; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.mockito.InOrder; import org.mockito.Mock; @@ -39,20 +39,24 @@ 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.DOMDataWriteTransaction; import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint; +import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; +import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; +import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; import org.opendaylight.controller.sal.core.api.Broker.ConsumerSession; import org.opendaylight.controller.sal.restconf.impl.BrokerFacade; +import org.opendaylight.controller.sal.restconf.impl.ControllerContext; import org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException; import org.opendaylight.controller.sal.restconf.impl.RestconfError; import org.opendaylight.controller.sal.streams.listeners.ListenerAdapter; import org.opendaylight.controller.sal.streams.listeners.Notificator; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.common.RpcResult; -import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.impl.schema.Builders; +import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; /** * Unit tests for BrokerFacade. @@ -65,21 +69,24 @@ public class BrokerFacadeTest { DOMDataBroker domDataBroker; @Mock - ConsumerSession mockConsumerSession; + ConsumerSession context; + + @Mock + DOMRpcService mockRpcService; @Mock DOMMountPoint mockMountInstance; BrokerFacade brokerFacade = BrokerFacade.getInstance(); - CompositeNode dataNode; - - NormalizedNode dummyNode = createDummyNode("dummy:namespace", "2014-07-01", "dummy local name"); + NormalizedNode dummyNode = createDummyNode("test:module", "2014-01-09", "interfaces"); CheckedFuture>,ReadFailedException> dummyNodeInFuture = wrapDummyNode(dummyNode); - QName qname = QName.create("node"); + QName qname = TestUtils.buildQName("interfaces","test:module", "2014-01-09"); + + SchemaPath type = SchemaPath.create(true, qname); - YangInstanceIdentifier instanceID = YangInstanceIdentifier.builder().node(qname).toInstance(); + YangInstanceIdentifier instanceID = YangInstanceIdentifier.builder().node(qname).build(); @Mock DOMDataReadOnlyTransaction rTransaction; @@ -95,12 +102,13 @@ public class BrokerFacadeTest { MockitoAnnotations.initMocks(this); // TODO it is started before every test method brokerFacade.setDomDataBroker(domDataBroker); - brokerFacade.setContext(mockConsumerSession); + brokerFacade.setRpcService(mockRpcService); + brokerFacade.setContext(context); when(domDataBroker.newReadOnlyTransaction()).thenReturn(rTransaction); when(domDataBroker.newWriteOnlyTransaction()).thenReturn(wTransaction); when(domDataBroker.newReadWriteTransaction()).thenReturn(rwTransaction); - dataNode = TestUtils.prepareCompositeNodeWithIetfInterfacesInterfacesData(); + ControllerContext.getInstance().setSchemas(TestUtils.loadSchemaContext("/full-versions/test-module")); } @@ -108,6 +116,11 @@ public class BrokerFacadeTest { return Futures.immediateCheckedFuture(Optional.> of(dummyNode)); } + private CheckedFuture wrapExistence(final Boolean exists) { + return Futures.immediateCheckedFuture(exists); + } + + /** * Value of this node shouldn't be important for testing purposes */ @@ -121,7 +134,7 @@ public class BrokerFacadeTest { when(rTransaction.read(any(LogicalDatastoreType.class), any(YangInstanceIdentifier.class))).thenReturn( dummyNodeInFuture); - NormalizedNode actualNode = brokerFacade.readConfigurationData(instanceID); + final NormalizedNode actualNode = brokerFacade.readConfigurationData(instanceID); assertSame("readConfigurationData", dummyNode, actualNode); } @@ -131,7 +144,7 @@ public class BrokerFacadeTest { when(rTransaction.read(any(LogicalDatastoreType.class), any(YangInstanceIdentifier.class))).thenReturn( dummyNodeInFuture); - NormalizedNode actualNode = brokerFacade.readOperationalData(instanceID); + final NormalizedNode actualNode = brokerFacade.readOperationalData(instanceID); assertSame("readOperationalData", dummyNode, actualNode); } @@ -143,38 +156,37 @@ public class BrokerFacadeTest { brokerFacade.readOperationalData(instanceID); } - @SuppressWarnings("unchecked") @Test public void testInvokeRpc() throws Exception { - RpcResult expResult = mock(RpcResult.class); - Future> future = Futures.immediateFuture(expResult); - when(mockConsumerSession.rpc(qname, dataNode)).thenReturn(future); + final DOMRpcResult expResult = mock(DOMRpcResult.class); + final CheckedFuture future = Futures.immediateCheckedFuture(expResult); + when(mockRpcService.invokeRpc(type, dummyNode)).thenReturn(future); - Future> actualFuture = brokerFacade.invokeRpc(qname, dataNode); + final CheckedFuture actualFuture = brokerFacade.invokeRpc(type, dummyNode); assertNotNull("Future is null", actualFuture); - RpcResult actualResult = actualFuture.get(); - + final DOMRpcResult actualResult = actualFuture.get(); assertSame("invokeRpc", expResult, actualResult); } @Test(expected = RestconfDocumentedException.class) public void testInvokeRpcWithNoConsumerSession() { brokerFacade.setContext(null); - - brokerFacade.invokeRpc(qname, dataNode); + brokerFacade.invokeRpc(type, dummyNode); } + @Ignore @Test public void testCommitConfigurationDataPut() { - CheckedFuture expFuture = mock(CheckedFuture.class); + @SuppressWarnings("unchecked") + final CheckedFuture expFuture = mock(CheckedFuture.class); when(wTransaction.submit()).thenReturn(expFuture); - Future actualFuture = brokerFacade.commitConfigurationDataPut(instanceID, dummyNode); + final Future actualFuture = brokerFacade.commitConfigurationDataPut((SchemaContext)null, instanceID, dummyNode); assertSame("commitConfigurationDataPut", expFuture, actualFuture); - InOrder inOrder = inOrder(domDataBroker, wTransaction); + final InOrder inOrder = inOrder(domDataBroker, wTransaction); inOrder.verify(domDataBroker).newWriteOnlyTransaction(); inOrder.verify(wTransaction).put(LogicalDatastoreType.CONFIGURATION, instanceID, dummyNode); inOrder.verify(wTransaction).submit(); @@ -182,19 +194,26 @@ public class BrokerFacadeTest { @Test public void testCommitConfigurationDataPost() { - CheckedFuture expFuture = mock(CheckedFuture.class); + @SuppressWarnings("unchecked") + final CheckedFuture expFuture = mock(CheckedFuture.class); + + final NormalizedNode dummyNode2 = createDummyNode("dummy:namespace2", "2014-07-01", "dummy local name2"); - NormalizedNode dummyNode2 = createDummyNode("dummy:namespace2", "2014-07-01", "dummy local name2"); when(rwTransaction.read(eq(LogicalDatastoreType.CONFIGURATION), any(YangInstanceIdentifier.class))).thenReturn( wrapDummyNode(dummyNode2)); + + when(rwTransaction.exists(eq(LogicalDatastoreType.CONFIGURATION), any(YangInstanceIdentifier.class))).thenReturn( + wrapExistence(true)); + + when(rwTransaction.submit()).thenReturn(expFuture); - CheckedFuture actualFuture = brokerFacade.commitConfigurationDataPost( - instanceID, dummyNode); + final CheckedFuture actualFuture = brokerFacade.commitConfigurationDataPost( + (SchemaContext)null, YangInstanceIdentifier.builder().build(), dummyNode); assertSame("commitConfigurationDataPost", expFuture, actualFuture); - InOrder inOrder = inOrder(domDataBroker, rwTransaction); + final InOrder inOrder = inOrder(domDataBroker, rwTransaction); inOrder.verify(domDataBroker).newReadWriteTransaction(); inOrder.verify(rwTransaction).merge(LogicalDatastoreType.CONFIGURATION, instanceID, dummyNode); inOrder.verify(rwTransaction).submit(); @@ -205,8 +224,9 @@ public class BrokerFacadeTest { when(rwTransaction.read(eq(LogicalDatastoreType.CONFIGURATION), any(YangInstanceIdentifier.class))).thenReturn( dummyNodeInFuture); try { - brokerFacade.commitConfigurationDataPost(instanceID, dummyNode); - } catch (RestconfDocumentedException e) { + // Schema context is only necessary for ensuring parent structure + brokerFacade.commitConfigurationDataPost((SchemaContext)null, instanceID, dummyNode); + } catch (final RestconfDocumentedException e) { assertEquals("getErrorTag", RestconfError.ErrorTag.DATA_EXISTS, e.getErrors().get(0).getErrorTag()); throw e; } @@ -214,16 +234,17 @@ public class BrokerFacadeTest { @Test public void testCommitConfigurationDataDelete() { - CheckedFuture expFuture = mock(CheckedFuture.class); + @SuppressWarnings("unchecked") + final CheckedFuture expFuture = mock(CheckedFuture.class); when(wTransaction.submit()).thenReturn(expFuture); - CheckedFuture actualFuture = brokerFacade + final CheckedFuture actualFuture = brokerFacade .commitConfigurationDataDelete(instanceID); assertSame("commitConfigurationDataDelete", expFuture, actualFuture); - InOrder inOrder = inOrder(domDataBroker, wTransaction); + final InOrder inOrder = inOrder(domDataBroker, wTransaction); inOrder.verify(domDataBroker).newWriteOnlyTransaction(); inOrder.verify(wTransaction).delete(eq(LogicalDatastoreType.CONFIGURATION), any(YangInstanceIdentifier.class)); inOrder.verify(wTransaction).submit(); @@ -232,9 +253,9 @@ public class BrokerFacadeTest { @SuppressWarnings("unchecked") @Test public void testRegisterToListenDataChanges() { - ListenerAdapter listener = Notificator.createListener(instanceID, "stream"); + final ListenerAdapter listener = Notificator.createListener(instanceID, "stream"); - ListenerRegistration mockRegistration = mock(ListenerRegistration.class); + final ListenerRegistration mockRegistration = mock(ListenerRegistration.class); when( domDataBroker.registerDataChangeListener(any(LogicalDatastoreType.class), eq(instanceID), eq(listener), @@ -250,7 +271,5 @@ public class BrokerFacadeTest { brokerFacade.registerToListenDataChanges(LogicalDatastoreType.CONFIGURATION, DataChangeScope.BASE, listener); verifyNoMoreInteractions(domDataBroker); - String escapeXml = StringEscapeUtils.escapeXml("data might contain & or ! or % or ' "); - System.out.println(escapeXml); } }