import com.google.common.util.concurrent.Futures;
import java.util.Optional;
import org.junit.Before;
+import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
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.impl.schema.Builders;
+import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
@RunWith(MockitoJUnitRunner.StrictStubs.class)
public class PlainPatchDataTransactionUtilTest {
- private static final String PATH_FOR_NEW_SCHEMA_CONTEXT = "/jukebox";
+ private static EffectiveModelContext SCHEMA;
+
@Mock
private DOMDataTreeReadWriteTransaction readWrite;
@Mock
private LeafNode<?> leafGap;
private ContainerNode jukeboxContainerWithPlayer;
private ContainerNode jukeboxContainerWithPlaylist;
- private EffectiveModelContext schema;
private YangInstanceIdentifier iidGap;
private YangInstanceIdentifier iidJukebox;
- @Before
- public void setUp() throws Exception {
- schema = YangParserTestUtils.parseYangFiles(TestRestconfUtils.loadFiles(PATH_FOR_NEW_SCHEMA_CONTEXT));
+ @BeforeClass
+ public static void beforeClass() throws Exception {
+ SCHEMA = YangParserTestUtils.parseYangFiles(TestRestconfUtils.loadFiles("/jukebox"));
+ }
+ @Before
+ public void setUp() {
final QName qnJukebox = QName.create("http://example.com/ns/example-jukebox", "2015-04-04", "jukebox");
final QName qnPlayer = QName.create(qnJukebox, "player");
final QName qnGap = QName.create(qnJukebox, "gap");
final QName qnPlaylist = QName.create(qnJukebox, "playlist");
final QName qnPlaylistKey = QName.create(qnJukebox, "name");
- final NodeIdentifierWithPredicates nidBandA =
- NodeIdentifierWithPredicates.of(qnPlaylist, qnPlaylistKey, "MyFavoriteBand-A");
- final NodeIdentifierWithPredicates nidBandB =
- NodeIdentifierWithPredicates.of(qnPlaylist, qnPlaylistKey, "MyFavoriteBand-B");
-
- iidGap = YangInstanceIdentifier.builder()
- .node(qnJukebox)
- .node(qnPlayer)
- .node(qnGap)
- .build();
-
- iidJukebox = YangInstanceIdentifier.builder()
- .node(qnJukebox)
- .build();
-
- leafGap = Builders.leafBuilder()
- .withNodeIdentifier(new NodeIdentifier(qnGap))
- .withValue(0.2)
- .build();
- final ContainerNode playerContainer = Builders.containerBuilder()
+ iidGap = YangInstanceIdentifier.builder().node(qnJukebox).node(qnPlayer).node(qnGap).build();
+ iidJukebox = YangInstanceIdentifier.builder().node(qnJukebox).build();
+
+ leafGap = ImmutableNodes.leafNode(qnGap, 0.2);
+ jukeboxContainerWithPlayer = Builders.containerBuilder()
+ .withNodeIdentifier(new NodeIdentifier(qnJukebox))
+ .withChild(Builders.containerBuilder()
.withNodeIdentifier(new NodeIdentifier(qnPlayer))
.withChild(leafGap)
- .build();
- jukeboxContainerWithPlayer = Builders.containerBuilder()
- .withNodeIdentifier(new NodeIdentifier(qnJukebox))
- .withChild(playerContainer)
- .build();
+ .build())
+ .build();
// ----------
- final LeafNode<Object> leafBandA = Builders.leafBuilder()
- .withNodeIdentifier(new NodeIdentifier(QName.create(qnJukebox, "name")))
- .withValue("MyFavoriteBand-A")
- .build();
- final LeafNode<Object> leafDescriptionA = Builders.leafBuilder()
- .withNodeIdentifier(new NodeIdentifier(QName.create(qnJukebox, "description")))
- .withValue("band description A")
- .build();
- final MapEntryNode entryBandA = Builders.mapEntryBuilder()
- .withNodeIdentifier(nidBandA)
- .withChild(leafBandA)
- .withChild(leafDescriptionA)
- .build();
-
- final LeafNode<Object> leafBandB = Builders.leafBuilder()
- .withNodeIdentifier(new NodeIdentifier(QName.create(qnJukebox, "name")))
- .withValue("MyFavoriteBand-B")
- .build();
- final LeafNode<Object> leafDescriptionB = Builders.leafBuilder()
- .withNodeIdentifier(new NodeIdentifier(QName.create(qnJukebox, "description")))
- .withValue("band description B")
- .build();
- final MapEntryNode entryBandB = Builders.mapEntryBuilder()
- .withNodeIdentifier(nidBandB)
- .withChild(leafBandB)
- .withChild(leafDescriptionB)
- .build();
-
- final MapNode listBands = Builders.mapBuilder()
- .withNodeIdentifier(new NodeIdentifier(qnPlaylist))
- .withChild(entryBandA)
- .withChild(entryBandB)
- .build();
jukeboxContainerWithPlaylist = Builders.containerBuilder()
- .withNodeIdentifier(new NodeIdentifier(qnJukebox))
- .withChild(listBands)
- .build();
+ .withNodeIdentifier(new NodeIdentifier(qnJukebox))
+ .withChild(Builders.mapBuilder()
+ .withNodeIdentifier(new NodeIdentifier(qnPlaylist))
+ .withChild(Builders.mapEntryBuilder()
+ .withNodeIdentifier(NodeIdentifierWithPredicates.of(qnPlaylist, qnPlaylistKey, "MyFavoriteBand-A"))
+ .withChild(ImmutableNodes.leafNode(QName.create(qnJukebox, "name"), "MyFavoriteBand-A"))
+ .withChild(ImmutableNodes.leafNode(QName.create(qnJukebox, "description"), "band description A"))
+ .build())
+ .withChild(Builders.mapEntryBuilder()
+ .withNodeIdentifier(NodeIdentifierWithPredicates.of(qnPlaylist, qnPlaylistKey, "MyFavoriteBand-B"))
+ .withChild(ImmutableNodes.leafNode(QName.create(qnJukebox, "name"), "MyFavoriteBand-B"))
+ .withChild(ImmutableNodes.leafNode(QName.create(qnJukebox, "description"), "band description B"))
+ .build())
+ .build())
+ .build();
doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(netconfService).lock();
doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(netconfService).unlock();
@Test
public void testPatchContainerData() {
final InstanceIdentifierContext iidContext =
- InstanceIdentifierContext.ofLocalPath(schema, iidJukebox);
+ InstanceIdentifierContext.ofLocalPath(SCHEMA, iidJukebox);
final NormalizedNodePayload payload = NormalizedNodePayload.of(iidContext, jukeboxContainerWithPlayer);
doReturn(readWrite).when(mockDataBroker).newReadWriteTransaction();
doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(netconfService).merge(any(), any(),any(),
any());
- PlainPatchDataTransactionUtil.patchData(payload, new MdsalRestconfStrategy(mockDataBroker), schema);
+ PlainPatchDataTransactionUtil.patchData(payload, new MdsalRestconfStrategy(mockDataBroker), SCHEMA);
verify(readWrite).merge(LogicalDatastoreType.CONFIGURATION,
payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData());
PlainPatchDataTransactionUtil.patchData(payload, new NetconfRestconfStrategy(netconfService),
- schema);
+ SCHEMA);
verify(netconfService).merge(LogicalDatastoreType.CONFIGURATION,
payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData(), Optional.empty());
}
@Test
public void testPatchLeafData() {
- final InstanceIdentifierContext iidContext = InstanceIdentifierContext.ofLocalPath(schema, iidGap);
+ final InstanceIdentifierContext iidContext = InstanceIdentifierContext.ofLocalPath(SCHEMA, iidGap);
final NormalizedNodePayload payload = NormalizedNodePayload.of(iidContext, leafGap);
doReturn(readWrite).when(mockDataBroker).newReadWriteTransaction();
.merge(any(), any(), any(), any());
doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(netconfService).commit();
- PlainPatchDataTransactionUtil.patchData(payload, new MdsalRestconfStrategy(mockDataBroker), schema);
+ PlainPatchDataTransactionUtil.patchData(payload, new MdsalRestconfStrategy(mockDataBroker), SCHEMA);
verify(readWrite).merge(LogicalDatastoreType.CONFIGURATION,
payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData());
- PlainPatchDataTransactionUtil.patchData(payload, new NetconfRestconfStrategy(netconfService),
- schema);
+ PlainPatchDataTransactionUtil.patchData(payload, new NetconfRestconfStrategy(netconfService), SCHEMA);
verify(netconfService).lock();
verify(netconfService).merge(LogicalDatastoreType.CONFIGURATION,
payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData(), Optional.empty());
@Test
public void testPatchListData() {
- final InstanceIdentifierContext iidContext = InstanceIdentifierContext.ofLocalPath(schema, iidJukebox);
+ final InstanceIdentifierContext iidContext = InstanceIdentifierContext.ofLocalPath(SCHEMA, iidJukebox);
final NormalizedNodePayload payload = NormalizedNodePayload.of(iidContext, jukeboxContainerWithPlaylist);
doReturn(readWrite).when(mockDataBroker).newReadWriteTransaction();
doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(netconfService)
.merge(any(), any(),any(),any());
- PlainPatchDataTransactionUtil.patchData(payload, new MdsalRestconfStrategy(mockDataBroker), schema);
+ PlainPatchDataTransactionUtil.patchData(payload, new MdsalRestconfStrategy(mockDataBroker), SCHEMA);
verify(readWrite).merge(LogicalDatastoreType.CONFIGURATION, iidJukebox, payload.getData());
PlainPatchDataTransactionUtil.patchData(payload, new NetconfRestconfStrategy(netconfService),
- schema);
+ SCHEMA);
verify(netconfService).merge(LogicalDatastoreType.CONFIGURATION, iidJukebox, payload.getData(),
Optional.empty());
}