| /* |
| * 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")); |
| } |
| } |
| |