X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=restconf%2Frestconf-nb-rfc8040%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Frestconf%2Fnb%2Frfc8040%2Frests%2Futils%2FPutDataTransactionUtilTest.java;h=f5ca8f3a735ea6d7c4130224b85c4165a04b3ca9;hb=14bd5e7ef6421c109248f4e750be330cb0337287;hp=1cc826e9581af805eb217160a582b46d47107105;hpb=f402dcd49a468e018192c96151bef3a0cdf70d62;p=netconf.git diff --git a/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PutDataTransactionUtilTest.java b/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PutDataTransactionUtilTest.java index 1cc826e958..f5ca8f3a73 100644 --- a/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PutDataTransactionUtilTest.java +++ b/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PutDataTransactionUtilTest.java @@ -9,9 +9,12 @@ package org.opendaylight.restconf.nb.rfc8040.rests.utils; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateFalseFluentFuture; +import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateFluentFuture; +import java.util.Optional; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; @@ -24,13 +27,14 @@ import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction; import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction; import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; import org.opendaylight.mdsal.dom.api.DOMTransactionChain; +import org.opendaylight.netconf.dom.api.NetconfDataTreeService; import org.opendaylight.restconf.common.context.InstanceIdentifierContext; import org.opendaylight.restconf.common.context.NormalizedNodeContext; import org.opendaylight.restconf.common.errors.RestconfDocumentedException; import org.opendaylight.restconf.nb.rfc8040.TestRestconfUtils; import org.opendaylight.restconf.nb.rfc8040.handlers.TransactionChainHandler; -import org.opendaylight.restconf.nb.rfc8040.references.SchemaContextRef; -import org.opendaylight.restconf.nb.rfc8040.rests.transactions.TransactionVarsWrapper; +import org.opendaylight.restconf.nb.rfc8040.rests.transactions.MdsalRestconfStrategy; +import org.opendaylight.restconf.nb.rfc8040.rests.transactions.NetconfRestconfStrategy; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; @@ -39,6 +43,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.MapNode; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.impl.schema.Builders; import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -46,9 +51,7 @@ import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class PutDataTransactionUtilTest { - private static final String PATH_FOR_NEW_SCHEMA_CONTEXT = "/jukebox"; - @Mock private DOMTransactionChain transactionChain; @Mock @@ -59,10 +62,11 @@ public class PutDataTransactionUtilTest { private DOMDataTreeWriteTransaction write; @Mock private DOMDataBroker mockDataBroker; + @Mock + private NetconfDataTreeService netconfService; private TransactionChainHandler transactionChainHandler; - private SchemaContextRef refSchemaCtx; - private LeafNode buildLeaf; + private LeafNode buildLeaf; private ContainerNode buildBaseCont; private ContainerNode buildBaseContWithList; private MapEntryNode buildListEntry; @@ -77,9 +81,8 @@ public class PutDataTransactionUtilTest { @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); - this.refSchemaCtx = new SchemaContextRef( - YangParserTestUtils.parseYangFiles(TestRestconfUtils.loadFiles(PATH_FOR_NEW_SCHEMA_CONTEXT))); - this.schema = this.refSchemaCtx.get(); + this.schema = + YangParserTestUtils.parseYangFiles(TestRestconfUtils.loadFiles(PATH_FOR_NEW_SCHEMA_CONTEXT)); final QName baseQName = QName.create("http://example.com/ns/example-jukebox", "2015-04-04", "jukebox"); final QName containerQname = QName.create(baseQName, "player"); @@ -164,7 +167,7 @@ public class PutDataTransactionUtilTest { } @Test - public void testValidInputData() throws Exception { + public void testValidInputData() { final InstanceIdentifierContext iidContext = new InstanceIdentifierContext<>(this.iid, this.schemaNode, null, this.schema); final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildLeaf); @@ -172,7 +175,7 @@ public class PutDataTransactionUtilTest { } @Test - public void testValidTopLevelNodeName() throws Exception { + public void testValidTopLevelNodeName() { InstanceIdentifierContext iidContext = new InstanceIdentifierContext<>(this.iid, this.schemaNode, null, this.schema); NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildLeaf); @@ -184,7 +187,7 @@ public class PutDataTransactionUtilTest { } @Test(expected = RestconfDocumentedException.class) - public void testValidTopLevelNodeNamePathEmpty() throws Exception { + public void testValidTopLevelNodeNamePathEmpty() { final InstanceIdentifierContext iidContext = new InstanceIdentifierContext<>(this.iid, this.schemaNode, null, this.schema); final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildLeaf); @@ -192,7 +195,7 @@ public class PutDataTransactionUtilTest { } @Test(expected = RestconfDocumentedException.class) - public void testValidTopLevelNodeNameWrongTopIdentifier() throws Exception { + public void testValidTopLevelNodeNameWrongTopIdentifier() { final InstanceIdentifierContext iidContext = new InstanceIdentifierContext<>(this.iid, this.schemaNode, null, this.schema); final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildLeaf); @@ -200,7 +203,7 @@ public class PutDataTransactionUtilTest { } @Test - public void testValidateListKeysEqualityInPayloadAndUri() throws Exception { + public void testValidateListKeysEqualityInPayloadAndUri() { final InstanceIdentifierContext iidContext = new InstanceIdentifierContext<>(this.iid3, this.schemaNode3, null, this.schema); final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildListEntry); @@ -208,7 +211,7 @@ public class PutDataTransactionUtilTest { } @Test - public void testPutContainerData() throws Exception { + public void testPutContainerData() { final InstanceIdentifierContext iidContext = new InstanceIdentifierContext<>(this.iid2, this.schemaNode2, null, this.schema); final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildBaseCont); @@ -222,9 +225,8 @@ public class PutDataTransactionUtilTest { payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData()); doReturn(CommitInfo.emptyFluentFuture()).when(this.readWrite).commit(); - PutDataTransactionUtil.putData(payload, this.refSchemaCtx, - new TransactionVarsWrapper(payload.getInstanceIdentifierContext(), null, transactionChainHandler), null, - null); + PutDataTransactionUtil.putData(payload, this.schema, + new MdsalRestconfStrategy(iidContext, transactionChainHandler), null, null); verify(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, payload.getInstanceIdentifierContext().getInstanceIdentifier()); verify(this.readWrite).put(LogicalDatastoreType.CONFIGURATION, @@ -232,7 +234,40 @@ public class PutDataTransactionUtilTest { } @Test - public void testPutleafData() throws Exception { + public void testPutCreateContainerData() { + final InstanceIdentifierContext iidContext = + new InstanceIdentifierContext<>(this.iid2, this.schemaNode2, null, this.schema); + final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildBaseCont); + + doReturn(immediateFluentFuture(Optional.empty())).when(this.netconfService).getConfig(this.iid2); + doReturn(CommitInfo.emptyFluentFuture()).when(this.netconfService).commit(Mockito.any()); + + PutDataTransactionUtil.putData(payload, this.schema, + new NetconfRestconfStrategy(netconfService, iidContext), null, null); + verify(this.netconfService).getConfig(payload.getInstanceIdentifierContext().getInstanceIdentifier()); + verify(this.netconfService).create(LogicalDatastoreType.CONFIGURATION, + payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData(), Optional.empty()); + } + + @Test + public void testPutReplaceContainerData() { + final InstanceIdentifierContext iidContext = + new InstanceIdentifierContext<>(this.iid2, this.schemaNode2, null, this.schema); + final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildBaseCont); + + doReturn(immediateFluentFuture(Optional.of(mock(NormalizedNode.class)))) + .when(this.netconfService).getConfig(this.iid2); + doReturn(CommitInfo.emptyFluentFuture()).when(this.netconfService).commit(Mockito.any()); + + PutDataTransactionUtil.putData(payload, this.schema, + new NetconfRestconfStrategy(netconfService, iidContext), null, null); + verify(this.netconfService).getConfig(payload.getInstanceIdentifierContext().getInstanceIdentifier()); + verify(this.netconfService).replace(LogicalDatastoreType.CONFIGURATION, + payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData(), Optional.empty()); + } + + @Test + public void testPutLeafData() { final InstanceIdentifierContext iidContext = new InstanceIdentifierContext<>(this.iid, this.schemaNode, null, this.schema); final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildLeaf); @@ -246,9 +281,8 @@ public class PutDataTransactionUtilTest { payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData()); doReturn(CommitInfo.emptyFluentFuture()).when(this.readWrite).commit(); - PutDataTransactionUtil.putData(payload, this.refSchemaCtx, - new TransactionVarsWrapper(payload.getInstanceIdentifierContext(), null, transactionChainHandler), null, - null); + PutDataTransactionUtil.putData(payload, this.schema, + new MdsalRestconfStrategy(iidContext, transactionChainHandler), null, null); verify(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, payload.getInstanceIdentifierContext().getInstanceIdentifier()); verify(this.readWrite).put(LogicalDatastoreType.CONFIGURATION, @@ -256,7 +290,40 @@ public class PutDataTransactionUtilTest { } @Test - public void testPutListData() throws Exception { + public void testPutCreateLeafData() { + final InstanceIdentifierContext iidContext = + new InstanceIdentifierContext<>(this.iid, this.schemaNode, null, this.schema); + final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildLeaf); + + doReturn(immediateFluentFuture(Optional.empty())).when(this.netconfService).getConfig(this.iid); + doReturn(CommitInfo.emptyFluentFuture()).when(this.netconfService).commit(Mockito.any()); + + PutDataTransactionUtil.putData(payload, this.schema, + new NetconfRestconfStrategy(netconfService, iidContext), null, null); + verify(this.netconfService).getConfig(payload.getInstanceIdentifierContext().getInstanceIdentifier()); + verify(this.netconfService).create(LogicalDatastoreType.CONFIGURATION, + payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData(), Optional.empty()); + } + + @Test + public void testPutReplaceLeafData() { + final InstanceIdentifierContext iidContext = + new InstanceIdentifierContext<>(this.iid, this.schemaNode, null, this.schema); + final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildLeaf); + + doReturn(immediateFluentFuture(Optional.of(mock(NormalizedNode.class)))) + .when(this.netconfService).getConfig(this.iid); + doReturn(CommitInfo.emptyFluentFuture()).when(this.netconfService).commit(Mockito.any()); + + PutDataTransactionUtil.putData(payload, this.schema, + new NetconfRestconfStrategy(netconfService, iidContext), null, null); + verify(this.netconfService).getConfig(payload.getInstanceIdentifierContext().getInstanceIdentifier()); + verify(this.netconfService).replace(LogicalDatastoreType.CONFIGURATION, + payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData(), Optional.empty()); + } + + @Test + public void testPutListData() { final InstanceIdentifierContext iidContext = new InstanceIdentifierContext<>(this.iid2, this.schemaNode2, null, this.schema); final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildBaseContWithList); @@ -269,10 +336,43 @@ public class PutDataTransactionUtilTest { doNothing().when(this.readWrite).put(LogicalDatastoreType.CONFIGURATION, payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData()); doReturn(CommitInfo.emptyFluentFuture()).when(this.readWrite).commit(); - PutDataTransactionUtil.putData(payload, this.refSchemaCtx, - new TransactionVarsWrapper(payload.getInstanceIdentifierContext(), null, transactionChainHandler), null, - null); + PutDataTransactionUtil.putData(payload, this.schema, + new MdsalRestconfStrategy(iidContext, transactionChainHandler), null, null); verify(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, this.iid2); verify(this.readWrite).put(LogicalDatastoreType.CONFIGURATION, this.iid2, payload.getData()); } + + @Test + public void testPutCreateListData() { + final InstanceIdentifierContext iidContext = + new InstanceIdentifierContext<>(this.iid2, this.schemaNode2, null, this.schema); + final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildBaseContWithList); + + doReturn(immediateFluentFuture(Optional.empty())).when(this.netconfService) + .getConfig(this.iid2); + doReturn(CommitInfo.emptyFluentFuture()).when(this.netconfService).commit(Mockito.any()); + + PutDataTransactionUtil.putData(payload, this.schema, + new NetconfRestconfStrategy(netconfService, iidContext), null, null); + verify(this.netconfService).getConfig(this.iid2); + verify(this.netconfService).create(LogicalDatastoreType.CONFIGURATION, this.iid2, + payload.getData(), Optional.empty()); + } + + @Test + public void testPutReplaceListData() { + final InstanceIdentifierContext iidContext = + new InstanceIdentifierContext<>(this.iid2, this.schemaNode2, null, this.schema); + final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildBaseContWithList); + + doReturn(immediateFluentFuture(Optional.of(mock(NormalizedNode.class)))).when(this.netconfService) + .getConfig(this.iid2); + doReturn(CommitInfo.emptyFluentFuture()).when(this.netconfService).commit(Mockito.any()); + + PutDataTransactionUtil.putData(payload, this.schema, + new NetconfRestconfStrategy(netconfService, iidContext), null, null); + verify(this.netconfService).getConfig(this.iid2); + verify(this.netconfService).replace(LogicalDatastoreType.CONFIGURATION, this.iid2, + payload.getData(), Optional.empty()); + } }