blob: 08b2484a2cec0fc23362a0cbcfc1842f91781763 [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.ietf.params.xml.ns.yang.ietf.network.rev20151208.YmsIetfNetworkOpParam;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.networksstate.Network;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.YmsNetworkTopology;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ymsnetworktopology.networks.network.AugmentedNdNetwork;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ymsnetworktopology.networks.network.DefaultAugmentedNdNetwork;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ymsnetworktopology.networks.network.augmentedndnetwork.Link;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.YmsIetfTeTopology;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.YmsIetfTeTopologyOpParam;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.ymsietftetopology.TeAdminStatus;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.ymsietftetopology.networks.network.link.AugmentedNtLink;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.ymsietftetopology.networks.network.link.DefaultAugmentedNtLink;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.ymsietftetopology.teadminstatus.TeAdminStatusEnum;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.ymsietftetopology.telinkconfig.bundlestacklevel.DefaultBundle;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.ymsietftetopology.telinkconfig.bundlestacklevel.bundle.bundledlinks.BundledLink;
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.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.IsNull.notNullValue;
import static org.onosproject.yms.app.yob.YobTestUtils.ADMIN_STATUS;
import static org.onosproject.yms.app.yob.YobTestUtils.BUNDLED_LINK;
import static org.onosproject.yms.app.yob.YobTestUtils.BUNDLED_LINKS;
import static org.onosproject.yms.app.yob.YobTestUtils.CONFIG;
import static org.onosproject.yms.app.yob.YobTestUtils.IETF_TE_TOPOLOGY;
import static org.onosproject.yms.app.yob.YobTestUtils.LINK;
import static org.onosproject.yms.app.yob.YobTestUtils.NETWORK;
import static org.onosproject.yms.app.yob.YobTestUtils.NETWORKS;
import static org.onosproject.yms.app.yob.YobTestUtils.NETWORKS_STATE;
import static org.onosproject.yms.app.yob.YobTestUtils.NETWORK_REF;
import static org.onosproject.yms.app.yob.YobTestUtils.ROOT_DATA_RESOURCE;
import static org.onosproject.yms.app.yob.YobTestUtils.SEQUENCE;
import static org.onosproject.yms.app.yob.YobTestUtils.STR_LEAF_VALUE;
import static org.onosproject.yms.app.yob.YobTestUtils.TE;
import static org.onosproject.yms.app.yob.YobTestUtils.TE_LINK_TEMPLATE;
import static org.onosproject.yms.app.yob.YobTestUtils.TE_NODE_ATTRIBUTES;
import static org.onosproject.yms.app.yob.YobTestUtils.TE_NODE_EVENT;
import static org.onosproject.yms.app.yob.YobTestUtils.UP;
import static org.onosproject.yms.app.yob.YobTestUtils.YMS_IETF_NETWORK;
import static org.onosproject.yms.app.yob.YobTestUtils.YMS_NETWORK_TOPOLOGY;
import static org.onosproject.yms.ydt.YdtContextOperationType.CREATE;
/**
* Test the YANG object building for the YANG data tree based on the grouping
* and uses nodes.
*/
public class YobGroupingUsesTest {
private YobTestUtils utils = YobTestUtils.instance();
@Test
public void testGroupingUsesLeaf() throws IOException {
YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
ydtBuilder.addChild(YMS_IETF_NETWORK, null, CREATE);
ydtBuilder.addChild(NETWORKS_STATE, null);
ydtBuilder.addChild(NETWORK, null);
ydtBuilder.addLeaf(NETWORK_REF, null, STR_LEAF_VALUE);
YdtContext logicalRoot = ydtBuilder.getRootNode();
YdtExtendedContext appRoot =
(YdtExtendedContext) logicalRoot.getFirstChild();
DefaultYobBuilder yobBuilder = new DefaultYobBuilder();
Object yangObject = yobBuilder.getYangObject(appRoot,
utils.schemaRegistry());
assertThat(yangObject, is(notNullValue()));
YmsIetfNetworkOpParam ietfNetwork = (YmsIetfNetworkOpParam) yangObject;
Network network = ietfNetwork.networksState().network().iterator().next();
assertThat(network.networkRef(), is(STR_LEAF_VALUE));
}
@Test
public void testGroupingUsesContainer() throws IOException {
YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
ydtBuilder.addChild(IETF_TE_TOPOLOGY, null, CREATE);
ydtBuilder.addChild(TE_NODE_EVENT, null);
ydtBuilder.addChild(TE_NODE_ATTRIBUTES, null);
ydtBuilder.addLeaf(ADMIN_STATUS, null, UP);
YdtContext logicalRoot = ydtBuilder.getRootNode();
YdtExtendedContext appRoot =
(YdtExtendedContext) logicalRoot.getFirstChild();
DefaultYobBuilder yobBuilder = new DefaultYobBuilder();
Object yangObject = yobBuilder.getYangObject(appRoot,
utils.schemaRegistry());
assertThat(yangObject, is(notNullValue()));
YmsIetfTeTopologyOpParam ietfTeTopology = (YmsIetfTeTopologyOpParam)
yangObject;
TeAdminStatus adminStatus = ietfTeTopology.teNodeEvent()
.teNodeAttributes()
.adminStatus();
assertThat(adminStatus.enumeration(), is(TeAdminStatusEnum.UP));
}
@Test
public void testGroupingUsesInterfile() throws IOException {
YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
ydtBuilder.addChild(YMS_IETF_NETWORK, null, CREATE);
ydtBuilder.addChild(NETWORKS, null);
ydtBuilder.addChild(NETWORK, null);
ydtBuilder.addChild(LINK, YMS_NETWORK_TOPOLOGY);
ydtBuilder.addChild(TE, IETF_TE_TOPOLOGY);
ydtBuilder.addChild(CONFIG, IETF_TE_TOPOLOGY);
ydtBuilder.addChild(BUNDLED_LINKS, IETF_TE_TOPOLOGY);
ydtBuilder.addChild(BUNDLED_LINK, IETF_TE_TOPOLOGY);
ydtBuilder.addLeaf(SEQUENCE, null, "1");
YdtContext logicalRoot = ydtBuilder.getRootNode();
YdtExtendedContext appRoot =
(YdtExtendedContext) logicalRoot.getFirstChild();
DefaultYobBuilder yobBuilder = new DefaultYobBuilder();
Object yangObject = yobBuilder.getYangObject(appRoot,
utils.schemaRegistry());
assertThat(yangObject, is(notNullValue()));
YmsIetfNetworkOpParam ietfNetwork = (YmsIetfNetworkOpParam) yangObject;
org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang
.ietf.network.rev20151208.ymsietfnetwork
.networks.Network network = ietfNetwork.networks().network().get(0);
DefaultAugmentedNdNetwork augmentedNdNetworks = (DefaultAugmentedNdNetwork) network
.yangAugmentedInfo(AugmentedNdNetwork.class);
assertThat(augmentedNdNetworks.yangAugmentedNdNetworkOpType(),
is(YmsNetworkTopology.OnosYangOpType.CREATE));
Link link = augmentedNdNetworks.link().get(0);
DefaultAugmentedNtLink augmentedNtLink = (DefaultAugmentedNtLink) link
.yangAugmentedInfo(AugmentedNtLink.class);
assertThat(augmentedNtLink.yangAugmentedNtLinkOpType(),
is(YmsIetfTeTopology.OnosYangOpType.CREATE));
DefaultBundle bundleStackLevel = (DefaultBundle) augmentedNtLink.te()
.config().bundleStackLevel();
assertThat(bundleStackLevel.yangBundleOpType(),
is(YmsIetfTeTopology.OnosYangOpType.CREATE));
BundledLink bundledLink = bundleStackLevel.bundledLinks().bundledLink().get(0);
assertThat(bundledLink.yangBundledLinkOpType(),
is(YmsIetfTeTopology.OnosYangOpType.CREATE));
assertThat(bundledLink.sequence(), is(1L));
}
@Test
public void testGroupingUsesAugment() throws IOException {
YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true);
ydtBuilder.addChild(YMS_IETF_NETWORK, null, CREATE);
ydtBuilder.addChild(NETWORKS, null);
ydtBuilder.addChild(NETWORK, null);
ydtBuilder.addChild(LINK, YMS_NETWORK_TOPOLOGY);
ydtBuilder.addChild(TE, IETF_TE_TOPOLOGY);
ydtBuilder.addChild(CONFIG, IETF_TE_TOPOLOGY);
ydtBuilder.addLeaf(TE_LINK_TEMPLATE, null, "1");
YdtContext logicalRoot = ydtBuilder.getRootNode();
YdtExtendedContext appRoot =
(YdtExtendedContext) logicalRoot.getFirstChild();
DefaultYobBuilder yobBuilder = new DefaultYobBuilder();
Object yangObject = yobBuilder.getYangObject(appRoot,
utils.schemaRegistry());
assertThat(yangObject, is(notNullValue()));
YmsIetfNetworkOpParam ietfNetwork = (YmsIetfNetworkOpParam) yangObject;
org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang
.ietf.network.rev20151208.ymsietfnetwork
.networks.Network network = ietfNetwork.networks().network().get(0);
DefaultAugmentedNdNetwork augmentedNdNetworks = (DefaultAugmentedNdNetwork) network
.yangAugmentedInfo(AugmentedNdNetwork.class);
assertThat(augmentedNdNetworks.yangAugmentedNdNetworkOpType(),
is(YmsNetworkTopology.OnosYangOpType.CREATE));
Link link = augmentedNdNetworks.link().get(0);
DefaultAugmentedNtLink augmentedNtLink = (DefaultAugmentedNtLink) link
.yangAugmentedInfo(AugmentedNtLink.class);
assertThat(augmentedNtLink.yangAugmentedNtLinkOpType(),
is(YmsIetfTeTopology.OnosYangOpType.CREATE));
assertThat(augmentedNtLink.te().config().teLinkTemplate().get(0),
is("1"));
}
}