blob: c366c4b4e0bb1e9678166743709319d1403c0313 [file] [log] [blame]
/*
* Copyright 2016-present Open Networking Foundation
*
* 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.onosproject.yms.app.yob;
import org.junit.Test;
import org.onosproject.yang.gen.v1.urn.ip.topo.rev20140101.ymsiptopology.node.AugmentedTopoNode;
import org.onosproject.yang.gen.v1.urn.ip.topo.rev20140101.ymsiptopology.node.DefaultAugmentedTopoNode;
import org.onosproject.yang.gen.v1.urn.topo.rev20140101.YmsTopologyOpParam;
import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.DefaultNode;
import org.onosproject.yms.app.ydt.YangRequestWorkBench;
import org.onosproject.yms.app.ydt.YdtExtendedContext;
import org.onosproject.yms.ydt.YdtContext;
import java.io.IOException;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
import static org.onosproject.yms.app.yob.YobTestUtils.NODE;
import static org.onosproject.yms.app.yob.YobTestUtils.ROOT_DATA_RESOURCE;
import static org.onosproject.yms.app.yob.YobTestUtils.ROUTER_ID;
import static org.onosproject.yms.app.yob.YobTestUtils.ROUTER_IP;
import static org.onosproject.yms.app.yob.YobTestUtils.STR_LEAF_VALUE;
import static org.onosproject.yms.app.yob.YobTestUtils.TOPOLOGY;
import static org.onosproject.yms.ydt.YdtContextOperationType.NONE;
/**
* Test the YANG object building for the YANG data tree based on the non
* schema augmented nodes.
*/
public class YobAugmentTest {
private YobTestUtils utils = YobTestUtils.instance();
@Test
public void augmentedLeaf() throws IOException {
YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
ydtBuilder.addChild(TOPOLOGY, null, NONE);
ydtBuilder.addChild(NODE, null);
ydtBuilder.addLeaf(ROUTER_ID, "urn:ip:topo", STR_LEAF_VALUE);
YdtContext logicalRoot = ydtBuilder.getRootNode();
YdtExtendedContext appRoot =
(YdtExtendedContext) logicalRoot.getFirstChild();
DefaultYobBuilder yobBuilder = new DefaultYobBuilder();
Object yangObject = yobBuilder.getYangObject(appRoot,
utils.schemaRegistry());
assertNotNull("Fail to create augmented YANG object", yangObject);
assertEquals("invalid augmented node created", YmsTopologyOpParam.class,
yangObject.getClass());
YmsTopologyOpParam topology = (YmsTopologyOpParam) yangObject;
assertNotNull("failed to build augmented node", topology.node());
assertEquals("Single node entry is expected", 1, topology.node().size());
assertEquals("Node type is not DefaultNode", DefaultNode.class,
topology.node().get(0).getClass());
DefaultNode node = (DefaultNode) topology.node().get(0);
assertNotNull("Augmented info is missing", node.yangAugmentedInfo(
AugmentedTopoNode.class));
assertEquals("Augmented class is incorrect",
DefaultAugmentedTopoNode.class,
node.yangAugmentedInfo(AugmentedTopoNode.class)
.getClass());
DefaultAugmentedTopoNode augmentedNode = (DefaultAugmentedTopoNode)
node.yangAugmentedInfo(AugmentedTopoNode.class);
assertThat("Augmented leaf value is incorrect",
augmentedNode.routerId(), is(STR_LEAF_VALUE));
}
@Test
public void augmentedLeaves() throws IOException {
YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
ydtBuilder.addChild(TOPOLOGY, null, NONE);
ydtBuilder.addChild(NODE, null);
ydtBuilder.addLeaf(ROUTER_ID, "urn:ip:topo", STR_LEAF_VALUE);
ydtBuilder.traverseToParent();
ydtBuilder.addLeaf(ROUTER_IP, "urn:ip:topo", STR_LEAF_VALUE);
YdtContext logicalRoot = ydtBuilder.getRootNode();
YdtExtendedContext appRoot =
(YdtExtendedContext) logicalRoot.getFirstChild();
DefaultYobBuilder yobBuilder = new DefaultYobBuilder();
Object yangObject = yobBuilder.getYangObject(appRoot,
utils.schemaRegistry());
assertNotNull("Fail to create augmented YANG object", yangObject);
assertEquals("invalid augmented node created",
YmsTopologyOpParam.class, yangObject.getClass());
YmsTopologyOpParam topology = (YmsTopologyOpParam) yangObject;
assertNotNull("failed to build augmented node", topology.node());
assertEquals("Single node entry is expected", 1,
topology.node().size());
assertEquals("Node type is not DefaultNode", DefaultNode.class,
topology.node().get(0).getClass());
DefaultNode node = (DefaultNode) topology.node().get(0);
assertNotNull("Augmented info is missing", node.yangAugmentedInfo(
AugmentedTopoNode.class));
assertEquals("Augmented class is incorrect",
DefaultAugmentedTopoNode.class,
node.yangAugmentedInfo(AugmentedTopoNode.class)
.getClass());
DefaultAugmentedTopoNode augmentedNode = (DefaultAugmentedTopoNode)
node.yangAugmentedInfo(AugmentedTopoNode.class);
assertThat("Augmented router id is incorrect",
augmentedNode.routerId(), is(STR_LEAF_VALUE));
assertThat("Augmented router ip is incorrect",
augmentedNode.routerIp(), is(STR_LEAF_VALUE));
}
}