| /* |
| * Copyright 2017-present Open Networking Laboratory |
| * |
| * 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.yang.runtime.impl; |
| |
| import org.junit.Test; |
| import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.DefaultL3VpnSvc; |
| import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.SvcId; |
| import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.accessvpnpolicy.vpnattachment.attachmentflavor.VpnId; |
| import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.DefaultSites; |
| import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.DefaultVpnServices; |
| import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.sites.DefaultSite; |
| import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.sites.SiteKeys; |
| import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.sites.site.DefaultSiteNetworkAccesses; |
| import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.sites.site.sitenetworkaccesses.DefaultSiteNetworkAccess; |
| import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.vpnservices.DefaultVpnSvc; |
| import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siteattachmentbearer.DefaultBearer; |
| import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siteattachmentbearer.bearer.DefaultRequestedType; |
| import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siteattachmentipconnection.DefaultIpConnection; |
| import org.onosproject.yang.gen.v1.l3vpnsvcext.rev20160730.l3vpnsvcext.l3vpnsvc.sites.site.sitenetworkaccesses.sitenetworkaccess.bearer.DefaultAugmentedL3VpnBearer; |
| import org.onosproject.yang.gen.v1.l3vpnsvcext.rev20160730.l3vpnsvcext.l3vpnsvc.sites.site.sitenetworkaccesses.sitenetworkaccess.bearer.requestedtype.DefaultAugmentedL3VpnRequestedType; |
| import org.onosproject.yang.gen.v1.l3vpnsvcext.rev20160730.l3vpnsvcext.requestedtypegrouping.requestedtypeprofile.requestedtypechoice.PhysicalCase; |
| import org.onosproject.yang.gen.v1.l3vpnsvcext.rev20160730.l3vpnsvcext.requestedtypegrouping.requestedtypeprofile.requestedtypechoice.physicalcase.Physical; |
| import org.onosproject.yang.model.AtomicPath; |
| import org.onosproject.yang.model.DataNode; |
| import org.onosproject.yang.model.DefaultResourceData; |
| import org.onosproject.yang.model.KeyInfo; |
| import org.onosproject.yang.model.ModelObject; |
| import org.onosproject.yang.model.ModelObjectData; |
| import org.onosproject.yang.model.ModelObjectId; |
| import org.onosproject.yang.model.MultiInstanceNode; |
| import org.onosproject.yang.model.ResourceData; |
| import org.onosproject.yang.model.ResourceId; |
| import org.onosproject.yang.model.SingleInstanceNode; |
| |
| import java.util.List; |
| |
| import static org.hamcrest.MatcherAssert.assertThat; |
| import static org.hamcrest.core.Is.is; |
| import static org.onosproject.yang.model.DataNode.Type.MULTI_INSTANCE_NODE; |
| import static org.onosproject.yang.model.DataNode.Type.SINGLE_INSTANCE_NODE; |
| import static org.onosproject.yang.runtime.SerializerHelper.addDataNode; |
| import static org.onosproject.yang.runtime.SerializerHelper.addToResourceId; |
| import static org.onosproject.yang.runtime.SerializerHelper.exitDataNode; |
| import static org.onosproject.yang.runtime.SerializerHelper.initializeDataNode; |
| import static org.onosproject.yang.runtime.SerializerHelper.initializeResourceId; |
| |
| /** |
| * Tests the YANG object building for the L3 VPN YANG data nodes. |
| */ |
| public class YobL3VpnSvcTest { |
| |
| private static final String L3VPN_SVC_NS = |
| "urn:ietf:params:xml:ns:yang:ietf-l3vpn-svc"; |
| private static final String L3VPN_SVC_EXT_NS = |
| "urn:ietf:params:xml:ns:yang:l3vpn:svc:ext"; |
| TestYangSerializerContext context = new TestYangSerializerContext(); |
| private DataNode.Builder dBlr; |
| private String value = null; |
| private ResourceId.Builder rIdBlr; |
| |
| private void buildDnForSiteRouting() { |
| dBlr = addDataNode(dBlr, "routing-protocols", null, value, null); |
| dBlr = addDataNode(dBlr, "routing-protocol", null, value, null); |
| dBlr = addDataNode(dBlr, "type", null, "ospf", null); |
| dBlr = exitDataNode(dBlr); |
| dBlr = exitDataNode(dBlr); |
| dBlr = exitDataNode(dBlr); |
| } |
| |
| private void buildDnForSiteTopLevelCfg() { |
| buildDnForSiteRouting(); // uses site-routing |
| } |
| |
| private void buildDnForSiteNetworkAccessTopLevelCfg() { |
| dBlr = addDataNode(dBlr, "site-network-access-type", null, "point-to-point", null); |
| dBlr = exitDataNode(dBlr); |
| buildDnForSiteAttachmentBearer(); // site-attachment-bearer |
| buildDnForSiteAttachmentIpConnection(); // site-attachment-ip-connection |
| buildDnForSiteRouting(); // site-routing |
| buildDnForAccessVpnPolicy(); // access-vpn-policy |
| } |
| |
| private void buildDnForSiteAttachmentBearer() { |
| dBlr = addDataNode(dBlr, "bearer", null, value, null); |
| dBlr = addDataNode(dBlr, "bearer-attachment", L3VPN_SVC_EXT_NS, value, null); |
| dBlr = addDataNode(dBlr, "pe-name", null, "pe-name", null); |
| dBlr = exitDataNode(dBlr); |
| dBlr = addDataNode(dBlr, "pe-mgmt-ip", null, "192.1.1.1", null); |
| dBlr = exitDataNode(dBlr); |
| dBlr = exitDataNode(dBlr); // bearer-attachment |
| dBlr = addDataNode(dBlr, "requested-type", L3VPN_SVC_NS, value, null); |
| dBlr = addDataNode(dBlr, "requested-type-profile", L3VPN_SVC_EXT_NS, value, null); |
| dBlr = addDataNode(dBlr, "physical", null, value, null); |
| dBlr = addDataNode(dBlr, "physical-if", null, "eth0/0/0", null); |
| dBlr = exitDataNode(dBlr); |
| dBlr = exitDataNode(dBlr); // physical |
| dBlr = addDataNode(dBlr, "circuit-id", null, "circuit-id", null); |
| dBlr = exitDataNode(dBlr); |
| dBlr = exitDataNode(dBlr); // requested-type-profile |
| dBlr = exitDataNode(dBlr); // requested-type |
| dBlr = exitDataNode(dBlr); // bearer |
| } |
| |
| private void buildDnForSiteAttachmentIpConnection() { |
| dBlr = addDataNode(dBlr, "ip-connection", L3VPN_SVC_NS, value, null); |
| dBlr = addDataNode(dBlr, "ipv4", null, value, null); |
| dBlr = addDataNode(dBlr, "addresses", null, value, null); |
| dBlr = addDataNode(dBlr, "provider-address", null, "192.12.1.1", null); |
| dBlr = exitDataNode(dBlr); |
| dBlr = addDataNode(dBlr, "mask", null, "24", null); |
| dBlr = exitDataNode(dBlr); |
| dBlr = exitDataNode(dBlr); // addresses |
| dBlr = exitDataNode(dBlr); // ipv4 |
| dBlr = addDataNode(dBlr, "ipv6", null, value, null); |
| dBlr = addDataNode(dBlr, "addresses", null, value, null); |
| dBlr = addDataNode(dBlr, "provider-address", null, "0:0:0:0:0:0:0:0", null); |
| dBlr = exitDataNode(dBlr); |
| dBlr = addDataNode(dBlr, "mask", null, "32", null); |
| dBlr = exitDataNode(dBlr); |
| dBlr = exitDataNode(dBlr); // addresses |
| dBlr = exitDataNode(dBlr); // ipv6 |
| dBlr = exitDataNode(dBlr); // ip-connection |
| } |
| |
| private void buildDnForAccessVpnPolicy() { |
| dBlr = addDataNode(dBlr, "vpn-attachment", null, value, null); |
| dBlr = addDataNode(dBlr, "vpn-id", null, "10", null); |
| dBlr = exitDataNode(dBlr); |
| dBlr = addDataNode(dBlr, "site-role", null, "hub-role", null); |
| dBlr = exitDataNode(dBlr); |
| dBlr = exitDataNode(dBlr); |
| } |
| |
| private ResourceId.Builder buildResourceIdForL3VpnSvc() { |
| rIdBlr = initializeResourceId(context); |
| rIdBlr = addToResourceId(rIdBlr, "l3vpn-svc", L3VPN_SVC_NS, value); |
| return rIdBlr; |
| } |
| |
| private ResourceId.Builder buildResourceIdForSites() { |
| rIdBlr = initializeResourceId(context); |
| rIdBlr = addToResourceId(rIdBlr, "l3vpn-svc", L3VPN_SVC_NS, value); |
| rIdBlr = addToResourceId(rIdBlr, "sites", L3VPN_SVC_NS, value); |
| return rIdBlr; |
| } |
| |
| private ResourceId.Builder buildResourceIdForSnas() { |
| rIdBlr = initializeResourceId(context); |
| rIdBlr = addToResourceId(rIdBlr, "l3vpn-svc", L3VPN_SVC_NS, value); |
| rIdBlr = addToResourceId(rIdBlr, "sites", L3VPN_SVC_NS, value); |
| rIdBlr = addToResourceId(rIdBlr, "site", L3VPN_SVC_NS, value); |
| rIdBlr = addToResourceId(rIdBlr, "site-id", L3VPN_SVC_NS, "10"); |
| rIdBlr = addToResourceId(rIdBlr, "site-network-accesses", |
| L3VPN_SVC_NS, value); |
| return rIdBlr; |
| } |
| |
| private ResourceId.Builder buildResourceIdForSite() { |
| rIdBlr = initializeResourceId(context); |
| rIdBlr = addToResourceId(rIdBlr, "l3vpn-svc", L3VPN_SVC_NS, value); |
| rIdBlr = addToResourceId(rIdBlr, "sites", L3VPN_SVC_NS, value); |
| rIdBlr = addToResourceId(rIdBlr, "site", L3VPN_SVC_NS, value); |
| rIdBlr = addToResourceId(rIdBlr, "site-id", L3VPN_SVC_NS, "10"); |
| return rIdBlr; |
| } |
| |
| private DataNode buildVpnServicesDataNode() { |
| ResourceId.Builder builder = buildResourceIdForL3VpnSvc(); |
| dBlr = initializeDataNode(builder); |
| dBlr = addDataNode(dBlr, "vpn-services", L3VPN_SVC_NS, value, null); |
| dBlr = addDataNode(dBlr, "vpn-svc", L3VPN_SVC_NS, value, null); |
| dBlr = addDataNode(dBlr, "vpn-id", L3VPN_SVC_NS, "10", null); |
| dBlr = exitDataNode(dBlr); |
| dBlr = exitDataNode(dBlr); |
| return dBlr.build(); |
| } |
| |
| private DataNode buildSitesDataNode() { |
| ResourceId.Builder builder = buildResourceIdForL3VpnSvc(); |
| dBlr = initializeDataNode(builder); |
| dBlr = addDataNode(dBlr, "sites", L3VPN_SVC_NS, value, null); |
| dBlr = addDataNode(dBlr, "site", null, value, null); |
| dBlr = addDataNode(dBlr, "site-id", null, "100", null); |
| dBlr = exitDataNode(dBlr); |
| buildDnForSiteTopLevelCfg(); //site-top-level-cfg |
| |
| dBlr = addDataNode(dBlr, "site-network-accesses", null, value, null); |
| dBlr = addDataNode(dBlr, "site-network-access", null, value, null); |
| dBlr = addDataNode(dBlr, "site-network-access-id", null, "1000", null); |
| dBlr = exitDataNode(dBlr); |
| |
| buildDnForSiteNetworkAccessTopLevelCfg(); // site-network-access-top-level-cfg |
| |
| dBlr = exitDataNode(dBlr); // end site-network-access |
| dBlr = exitDataNode(dBlr); // end site-network-accesses |
| dBlr = exitDataNode(dBlr); // end site |
| return dBlr.build(); |
| } |
| |
| private DataNode buildSiteDataNode(String siteId, String sncId) { |
| ResourceId.Builder builder = buildResourceIdForSites(); |
| dBlr = initializeDataNode(builder); |
| dBlr = addDataNode(dBlr, "site", null, value, null); |
| dBlr = addDataNode(dBlr, "site-id", null, siteId, null); |
| dBlr = exitDataNode(dBlr); |
| |
| buildDnForSiteTopLevelCfg(); // site-top-level-cfg |
| |
| value = null; |
| dBlr = addDataNode(dBlr, "site-network-accesses", null, value, null); |
| dBlr = addDataNode(dBlr, "site-network-access", null, value, null); |
| dBlr = addDataNode(dBlr, "site-network-access-id", null, sncId, null); |
| dBlr = exitDataNode(dBlr); |
| |
| buildDnForSiteNetworkAccessTopLevelCfg(); // site-network-access-top-level-cfg |
| |
| dBlr = exitDataNode(dBlr); // end site-network-access |
| dBlr = exitDataNode(dBlr); // end site-network-accesses |
| return dBlr.build(); |
| } |
| |
| private DataNode buildDnForSiteNetworkAccesses() { |
| ResourceId.Builder builder = buildResourceIdForSite(); |
| dBlr = initializeDataNode(builder); |
| dBlr = addDataNode(dBlr, "site-network-accesses", null, value, null); |
| dBlr = addDataNode(dBlr, "site-network-access", null, value, null); |
| dBlr = addDataNode(dBlr, "site-network-access-id", null, "10", null); |
| dBlr = exitDataNode(dBlr); |
| |
| buildDnForSiteNetworkAccessTopLevelCfg(); //site-network-access-top-level-cfg |
| |
| dBlr = exitDataNode(dBlr); // end site-network-access |
| return dBlr.build(); |
| } |
| |
| /** |
| * Tests creation of vpn-services and sites with resource id l3vpn-svc. |
| */ |
| @Test |
| public void createVpnServices() { |
| DataNode dataNode = buildVpnServicesDataNode(); |
| DataNode sitesDn = buildSitesDataNode(); |
| ResourceData data = DefaultResourceData.builder() |
| .addDataNode(dataNode).addDataNode(sitesDn) |
| .resourceId(buildResourceIdForL3VpnSvc().build()).build(); |
| DefaultYobBuilder builder = new DefaultYobBuilder( |
| (DefaultYangModelRegistry) context.getContext()); |
| ModelObjectData modelObjectData = builder.getYangObject(data); |
| ModelObjectId id = modelObjectData.identifier(); |
| assertThat(id.atomicPaths().size(), is(1)); |
| AtomicPath path = id.atomicPaths().get(0); |
| assertThat(path.type(), is(SINGLE_INSTANCE_NODE)); |
| assertThat(((SingleInstanceNode) path).container().getSimpleName(), |
| is("DefaultL3VpnSvc")); |
| List<ModelObject> modelObjectList = modelObjectData.modelObjects(); |
| DefaultVpnServices vpnServices = ((DefaultVpnServices) modelObjectList |
| .get(0)); |
| assertThat(vpnServices.vpnSvc().get(0).vpnId().string(), is("10")); |
| DefaultSites sites = ((DefaultSites) modelObjectList.get(1)); |
| DefaultSite site = ((DefaultSite) sites.site().get(0)); |
| assertThat(site.siteId().string(), is("100")); |
| assertThat(site.routingProtocols().routingProtocol().get(0).type() |
| .getSimpleName(), is("Ospf")); |
| |
| DefaultSiteNetworkAccess sna = ((DefaultSiteNetworkAccess) site |
| .siteNetworkAccesses().siteNetworkAccess().get(0)); |
| assertThat(sna.siteNetworkAccessId().string(), is("1000")); |
| DefaultBearer bearer = ((DefaultBearer) sna.bearer()); |
| DefaultAugmentedL3VpnBearer bearerAttach = bearer |
| .augmentation(DefaultAugmentedL3VpnBearer.class); |
| assertThat(bearerAttach.bearerAttachment().peMgmtIp().string(), |
| is("192.1.1.1")); |
| assertThat(bearerAttach.bearerAttachment().peName(), is("pe-name")); |
| DefaultAugmentedL3VpnRequestedType reqType = |
| ((DefaultRequestedType) bearer.requestedType()) |
| .augmentation(DefaultAugmentedL3VpnRequestedType.class); |
| Physical py = ((PhysicalCase) reqType.requestedTypeProfile() |
| .requestedTypeChoice()).physical(); |
| assertThat(py.physicalIf(), is("eth0/0/0")); |
| assertThat(reqType.requestedTypeProfile().circuitId(), is("circuit-id")); |
| |
| DefaultIpConnection ipConnection = ((DefaultIpConnection) sna.ipConnection()); |
| assertThat(ipConnection.ipv4().addresses().providerAddress().string(), |
| is("192.12.1.1")); |
| Short mask = 24; |
| assertThat(ipConnection.ipv4().addresses().mask(), is(mask)); |
| assertThat(ipConnection.ipv6().addresses().providerAddress() |
| .string(), is("0:0:0:0:0:0:0:0")); |
| mask = 32; |
| assertThat(ipConnection.ipv6().addresses().mask(), is(mask)); |
| assertThat(sna.routingProtocols().routingProtocol().get(0).type() |
| .getSimpleName(), is("Ospf")); |
| SvcId sId = (SvcId) ((VpnId) sna.vpnAttachment().attachmentFlavor()) |
| .vpnId(); |
| assertThat(sId.string(), is("10")); |
| assertThat(((VpnId) sna.vpnAttachment().attachmentFlavor()).siteRole() |
| .getSimpleName(), is("HubRole")); |
| } |
| |
| /** |
| * Tests creation of multiple instance of vpn-services with resource id |
| * vpn-services. |
| */ |
| @Test |
| public void createListVpnService() { |
| rIdBlr = initializeResourceId(context); |
| rIdBlr = addToResourceId(rIdBlr, "l3vpn-svc", L3VPN_SVC_NS, value); |
| rIdBlr = addToResourceId(rIdBlr, "vpn-services", L3VPN_SVC_NS, value); |
| dBlr = initializeDataNode(rIdBlr); |
| dBlr = addDataNode(dBlr, "vpn-svc", L3VPN_SVC_NS, value, null); |
| dBlr = addDataNode(dBlr, "vpn-id", L3VPN_SVC_NS, "10", null); |
| dBlr = exitDataNode(dBlr); |
| ResourceData.Builder dataBuilder = DefaultResourceData.builder() |
| .addDataNode(dBlr.build()).resourceId(rIdBlr.build()); |
| dBlr = initializeDataNode(rIdBlr); |
| dBlr = addDataNode(dBlr, "vpn-svc", L3VPN_SVC_NS, value, null); |
| dBlr = addDataNode(dBlr, "vpn-id", L3VPN_SVC_NS, "20", null); |
| dBlr = exitDataNode(dBlr); |
| dataBuilder.addDataNode(dBlr.build()); |
| |
| DefaultYobBuilder builder = new DefaultYobBuilder( |
| (DefaultYangModelRegistry) context.getContext()); |
| ModelObjectData modelObjectData = builder.getYangObject(dataBuilder.build()); |
| ModelObjectId id = modelObjectData.identifier(); |
| assertThat(id.atomicPaths().size(), is(2)); |
| AtomicPath path = id.atomicPaths().get(0); |
| assertThat(path.type(), is(SINGLE_INSTANCE_NODE)); |
| assertThat(((SingleInstanceNode) path).container().getSimpleName(), |
| is("DefaultL3VpnSvc")); |
| path = id.atomicPaths().get(1); |
| assertThat(path.type(), is(SINGLE_INSTANCE_NODE)); |
| assertThat(((SingleInstanceNode) path).container().getSimpleName(), |
| is("DefaultVpnServices")); |
| List<ModelObject> modelObjectList = modelObjectData.modelObjects(); |
| DefaultVpnSvc vpnSvc = ((DefaultVpnSvc) modelObjectList.get(0)); |
| assertThat(vpnSvc.vpnId().string(), is("10")); |
| DefaultVpnSvc vpnSvc1 = ((DefaultVpnSvc) modelObjectList.get(1)); |
| assertThat(vpnSvc1.vpnId().string(), is("20")); |
| } |
| |
| /** |
| * Tests creation of multiple instance of site with resource id |
| * vpn-services. |
| */ |
| @Test |
| public void createListSite() { |
| DataNode siteDn1 = buildSiteDataNode("10", "100"); |
| DataNode siteDn2 = buildSiteDataNode("20", "200"); |
| ResourceData data = DefaultResourceData.builder() |
| .addDataNode(siteDn1).addDataNode(siteDn2) |
| .resourceId(buildResourceIdForSites().build()).build(); |
| DefaultYobBuilder builder = new DefaultYobBuilder( |
| (DefaultYangModelRegistry) context.getContext()); |
| ModelObjectData modelObjectData = builder.getYangObject(data); |
| ModelObjectId id = modelObjectData.identifier(); |
| assertThat(id.atomicPaths().size(), is(2)); |
| AtomicPath path = id.atomicPaths().get(0); |
| assertThat(path.type(), is(SINGLE_INSTANCE_NODE)); |
| assertThat(((SingleInstanceNode) path).container().getSimpleName(), |
| is("DefaultL3VpnSvc")); |
| path = id.atomicPaths().get(1); |
| assertThat(path.type(), is(SINGLE_INSTANCE_NODE)); |
| assertThat(((SingleInstanceNode) path).container().getSimpleName(), |
| is("DefaultSites")); |
| List<ModelObject> modelObjectList = modelObjectData.modelObjects(); |
| DefaultSite site1 = ((DefaultSite) modelObjectList.get(0)); |
| assertThat(site1.siteId().string(), is("10")); |
| assertThat(site1.routingProtocols().routingProtocol().get(0).type() |
| .getSimpleName(), is("Ospf")); |
| |
| DefaultSiteNetworkAccess sna = ((DefaultSiteNetworkAccess) site1 |
| .siteNetworkAccesses().siteNetworkAccess().get(0)); |
| assertThat(sna.siteNetworkAccessId().string(), is("100")); |
| DefaultBearer bearer = ((DefaultBearer) sna.bearer()); |
| DefaultAugmentedL3VpnBearer bearerAttach = bearer |
| .augmentation(DefaultAugmentedL3VpnBearer.class); |
| assertThat(bearerAttach.bearerAttachment().peMgmtIp().string(), |
| is("192.1.1.1")); |
| assertThat(bearerAttach.bearerAttachment().peName(), is("pe-name")); |
| DefaultAugmentedL3VpnRequestedType reqType = |
| ((DefaultRequestedType) bearer.requestedType()) |
| .augmentation(DefaultAugmentedL3VpnRequestedType.class); |
| Physical py = ((PhysicalCase) reqType.requestedTypeProfile() |
| .requestedTypeChoice()).physical(); |
| assertThat(py.physicalIf(), is("eth0/0/0")); |
| assertThat(reqType.requestedTypeProfile().circuitId(), is("circuit-id")); |
| |
| DefaultIpConnection ipConnection = ((DefaultIpConnection) sna |
| .ipConnection()); |
| assertThat(ipConnection.ipv4().addresses().providerAddress().string(), |
| is("192.12.1.1")); |
| Short mask = 24; |
| assertThat(ipConnection.ipv4().addresses().mask(), is(mask)); |
| assertThat(ipConnection.ipv6().addresses().providerAddress() |
| .string(), is("0:0:0:0:0:0:0:0")); |
| mask = 32; |
| assertThat(ipConnection.ipv6().addresses().mask(), is(mask)); |
| assertThat(sna.routingProtocols().routingProtocol().get(0).type() |
| .getSimpleName(), is("Ospf")); |
| SvcId sId = (SvcId) ((VpnId) sna.vpnAttachment().attachmentFlavor()) |
| .vpnId(); |
| assertThat(sId.string(), is("10")); |
| assertThat(((VpnId) sna.vpnAttachment().attachmentFlavor()).siteRole() |
| .getSimpleName(), is("HubRole")); |
| DefaultSite site2 = ((DefaultSite) modelObjectList.get(1)); |
| assertThat(site2.siteId().string(), is("20")); |
| assertThat(site2.routingProtocols().routingProtocol().get(0).type() |
| .getSimpleName(), is("Ospf")); |
| sna = ((DefaultSiteNetworkAccess) site2.siteNetworkAccesses() |
| .siteNetworkAccess().get(0)); |
| assertThat(sna.siteNetworkAccessId().string(), is("200")); |
| ipConnection = ((DefaultIpConnection) sna.ipConnection()); |
| assertThat(ipConnection.ipv4().addresses().providerAddress().string(), |
| is("192.12.1.1")); |
| mask = 24; |
| assertThat(ipConnection.ipv4().addresses().mask(), is(mask)); |
| assertThat(ipConnection.ipv6().addresses().providerAddress() |
| .string(), is("0:0:0:0:0:0:0:0")); |
| mask = 32; |
| assertThat(ipConnection.ipv6().addresses().mask(), is(mask)); |
| assertThat(sna.routingProtocols().routingProtocol().get(0).type() |
| .getSimpleName(), is("Ospf")); |
| sId = (SvcId) ((VpnId) sna.vpnAttachment().attachmentFlavor()) |
| .vpnId(); |
| assertThat(sId.string(), is("10")); |
| assertThat(((VpnId) sna.vpnAttachment().attachmentFlavor()).siteRole() |
| .getSimpleName(), is("HubRole")); |
| } |
| |
| /** |
| * Tests creation of site-network-accesses with resource id |
| * site. |
| */ |
| @Test |
| public void createSiteNetworkAccesses() { |
| ResourceId.Builder rIdBuilder = buildResourceIdForSnas(); // site-network-accesses |
| dBlr = initializeDataNode(rIdBuilder); |
| dBlr = addDataNode(dBlr, "site-network-access", null, value, null); |
| dBlr = addDataNode(dBlr, "site-network-access-id", null, "1000", null); |
| dBlr = exitDataNode(dBlr); |
| |
| buildDnForSiteNetworkAccessTopLevelCfg(); // site-network-access-top-level-cfg |
| ResourceData.Builder dataBdlr = DefaultResourceData.builder() |
| .addDataNode(dBlr.build()) |
| .resourceId(buildResourceIdForSnas().build()); |
| dBlr = initializeDataNode(rIdBuilder); |
| value = null; |
| dBlr = addDataNode(dBlr, "site-network-access", null, value, null); |
| dBlr = addDataNode(dBlr, "site-network-access-id", null, "2000", null); |
| dBlr = exitDataNode(dBlr); |
| buildDnForSiteNetworkAccessTopLevelCfg(); |
| dataBdlr.addDataNode(dBlr.build()); |
| DefaultYobBuilder builder = new DefaultYobBuilder( |
| (DefaultYangModelRegistry) context.getContext()); |
| ModelObjectData modelObjectData = builder.getYangObject(dataBdlr.build()); |
| ModelObjectId id = modelObjectData.identifier(); |
| assertThat(id.atomicPaths().size(), is(4)); |
| AtomicPath path = id.atomicPaths().get(0); |
| assertThat(path.type(), is(SINGLE_INSTANCE_NODE)); |
| assertThat(((SingleInstanceNode) path).container().getSimpleName(), |
| is("DefaultL3VpnSvc")); |
| path = id.atomicPaths().get(1); |
| assertThat(path.type(), is(SINGLE_INSTANCE_NODE)); |
| assertThat(((SingleInstanceNode) path).container().getSimpleName(), |
| is("DefaultSites")); |
| path = id.atomicPaths().get(2); |
| assertThat(path.type(), is(MULTI_INSTANCE_NODE)); |
| assertThat(((MultiInstanceNode) path).listClass().getSimpleName(), |
| is("DefaultSite")); |
| KeyInfo obj = ((MultiInstanceNode) path).key(); |
| assertThat(((SiteKeys) obj).siteId().string(), is("10")); |
| path = id.atomicPaths().get(3); |
| assertThat(path.type(), is(SINGLE_INSTANCE_NODE)); |
| assertThat(((SingleInstanceNode) path).container().getSimpleName(), |
| is("DefaultSiteNetworkAccesses")); |
| |
| List<ModelObject> modelObjectList = modelObjectData.modelObjects(); |
| DefaultSiteNetworkAccess sna1 = ((DefaultSiteNetworkAccess) |
| modelObjectList.get(0)); |
| assertThat(sna1.siteNetworkAccessId().string(), is("1000")); |
| DefaultBearer bearer = ((DefaultBearer) sna1.bearer()); |
| DefaultAugmentedL3VpnBearer bearerAttach = bearer |
| .augmentation(DefaultAugmentedL3VpnBearer.class); |
| assertThat(bearerAttach.bearerAttachment().peMgmtIp().string(), |
| is("192.1.1.1")); |
| assertThat(bearerAttach.bearerAttachment().peName(), is("pe-name")); |
| DefaultAugmentedL3VpnRequestedType reqType = |
| ((DefaultRequestedType) bearer.requestedType()) |
| .augmentation(DefaultAugmentedL3VpnRequestedType.class); |
| Physical py = ((PhysicalCase) reqType.requestedTypeProfile() |
| .requestedTypeChoice()).physical(); |
| assertThat(py.physicalIf(), is("eth0/0/0")); |
| assertThat(reqType.requestedTypeProfile().circuitId(), is("circuit-id")); |
| DefaultIpConnection ipConnection = ((DefaultIpConnection) sna1.ipConnection()); |
| assertThat(ipConnection.ipv4().addresses().providerAddress().string(), |
| is("192.12.1.1")); |
| Short mask = 24; |
| assertThat(ipConnection.ipv4().addresses().mask(), is(mask)); |
| assertThat(ipConnection.ipv6().addresses().providerAddress() |
| .string(), is("0:0:0:0:0:0:0:0")); |
| mask = 32; |
| assertThat(ipConnection.ipv6().addresses().mask(), is(mask)); |
| assertThat(sna1.routingProtocols().routingProtocol().get(0).type() |
| .getSimpleName(), is("Ospf")); |
| SvcId sId = (SvcId) ((VpnId) sna1.vpnAttachment().attachmentFlavor()) |
| .vpnId(); |
| assertThat(sId.string(), is("10")); |
| assertThat(((VpnId) sna1.vpnAttachment().attachmentFlavor()).siteRole() |
| .getSimpleName(), is("HubRole")); |
| |
| DefaultSiteNetworkAccess sna2 = ((DefaultSiteNetworkAccess) |
| modelObjectList.get(1)); |
| assertThat(sna2.siteNetworkAccessId().string(), is("2000")); |
| bearer = ((DefaultBearer) sna2.bearer()); |
| bearerAttach = bearer.augmentation(DefaultAugmentedL3VpnBearer.class); |
| assertThat(bearerAttach.bearerAttachment().peMgmtIp().string(), is("192.1.1.1")); |
| assertThat(bearerAttach.bearerAttachment().peName(), is("pe-name")); |
| reqType = bearer.requestedType().augmentation( |
| DefaultAugmentedL3VpnRequestedType.class); |
| py = ((PhysicalCase) reqType.requestedTypeProfile() |
| .requestedTypeChoice()).physical(); |
| assertThat(py.physicalIf(), is("eth0/0/0")); |
| assertThat(reqType.requestedTypeProfile().circuitId(), is("circuit-id")); |
| ipConnection = ((DefaultIpConnection) sna2.ipConnection()); |
| assertThat(ipConnection.ipv4().addresses().providerAddress().string(), |
| is("192.12.1.1")); |
| mask = 24; |
| assertThat(ipConnection.ipv4().addresses().mask(), is(mask)); |
| assertThat(ipConnection.ipv6().addresses().providerAddress() |
| .string(), is("0:0:0:0:0:0:0:0")); |
| mask = 32; |
| assertThat(ipConnection.ipv6().addresses().mask(), is(mask)); |
| assertThat(sna2.routingProtocols().routingProtocol().get(0).type() |
| .getSimpleName(), is("Ospf")); |
| sId = (SvcId) ((VpnId) sna2.vpnAttachment().attachmentFlavor()) |
| .vpnId(); |
| assertThat(sId.string(), is("10")); |
| assertThat(((VpnId) sna2.vpnAttachment().attachmentFlavor()).siteRole() |
| .getSimpleName(), is("HubRole")); |
| } |
| |
| /** |
| * Tests creation of site-network-access with resource id |
| * site-network-accesses. |
| */ |
| @Test |
| public void createSiteNetworkAccess() { |
| ResourceData data = DefaultResourceData.builder() |
| .addDataNode(buildDnForSiteNetworkAccesses()) |
| .resourceId(buildResourceIdForSite().build()).build(); |
| DefaultYobBuilder builder = new DefaultYobBuilder( |
| (DefaultYangModelRegistry) context.getContext()); |
| ModelObjectData modelObjectData = builder.getYangObject(data); |
| ModelObjectId id = modelObjectData.identifier(); |
| assertThat(id.atomicPaths().size(), is(3)); |
| AtomicPath path = id.atomicPaths().get(0); |
| assertThat(path.type(), is(SINGLE_INSTANCE_NODE)); |
| assertThat(((SingleInstanceNode) path).container().getSimpleName(), |
| is("DefaultL3VpnSvc")); |
| path = id.atomicPaths().get(1); |
| assertThat(path.type(), is(SINGLE_INSTANCE_NODE)); |
| assertThat(((SingleInstanceNode) path).container().getSimpleName(), |
| is("DefaultSites")); |
| path = id.atomicPaths().get(2); |
| assertThat(path.type(), is(MULTI_INSTANCE_NODE)); |
| assertThat(((MultiInstanceNode) path).listClass().getSimpleName(), |
| is("DefaultSite")); |
| KeyInfo obj = ((MultiInstanceNode) path).key(); |
| assertThat(((SiteKeys) obj).siteId().string(), is("10")); |
| List<ModelObject> modelObjectList = modelObjectData.modelObjects(); |
| DefaultSiteNetworkAccesses snas = ((DefaultSiteNetworkAccesses) |
| modelObjectList.get(0)); |
| DefaultSiteNetworkAccess sna = ((DefaultSiteNetworkAccess) snas |
| .siteNetworkAccess().get(0)); |
| assertThat(sna.siteNetworkAccessId().string(), is("10")); |
| DefaultBearer bearer = ((DefaultBearer) sna.bearer()); |
| DefaultAugmentedL3VpnBearer bearerAttach = bearer |
| .augmentation(DefaultAugmentedL3VpnBearer.class); |
| assertThat(bearerAttach.bearerAttachment().peMgmtIp().string(), |
| is("192.1.1.1")); |
| assertThat(bearerAttach.bearerAttachment().peName(), is("pe-name")); |
| DefaultAugmentedL3VpnRequestedType reqType = |
| ((DefaultRequestedType) bearer.requestedType()) |
| .augmentation(DefaultAugmentedL3VpnRequestedType.class); |
| Physical py = ((PhysicalCase) reqType.requestedTypeProfile() |
| .requestedTypeChoice()).physical(); |
| assertThat(py.physicalIf(), is("eth0/0/0")); |
| assertThat(reqType.requestedTypeProfile().circuitId(), is("circuit-id")); |
| |
| DefaultIpConnection ipConnection = ((DefaultIpConnection) sna |
| .ipConnection()); |
| assertThat(ipConnection.ipv4().addresses().providerAddress().string(), |
| is("192.12.1.1")); |
| Short mask = 24; |
| assertThat(ipConnection.ipv4().addresses().mask(), is(mask)); |
| assertThat(ipConnection.ipv6().addresses().providerAddress() |
| .string(), is("0:0:0:0:0:0:0:0")); |
| mask = 32; |
| assertThat(ipConnection.ipv6().addresses().mask(), is(mask)); |
| assertThat(sna.routingProtocols().routingProtocol().get(0).type() |
| .getSimpleName(), is("Ospf")); |
| SvcId sId = (SvcId) ((VpnId) sna.vpnAttachment().attachmentFlavor()) |
| .vpnId(); |
| assertThat(sId.string(), is("10")); |
| assertThat(((VpnId) sna.vpnAttachment().attachmentFlavor()).siteRole() |
| .getSimpleName(), is("HubRole")); |
| } |
| |
| /** |
| * Tests creation of l3vpn-svc with resource id as "/". |
| */ |
| @Test |
| public void deleteL3VpnService() { |
| dBlr = initializeDataNode(context); |
| dBlr = addDataNode(dBlr, "l3vpn-svc", L3VPN_SVC_NS, value, null); |
| ResourceData data = DefaultResourceData.builder() |
| .addDataNode(dBlr.build()).build(); |
| DefaultYobBuilder builder = new DefaultYobBuilder( |
| (DefaultYangModelRegistry) context.getContext()); |
| ModelObjectData modelObjectData = builder.getYangObject(data); |
| List<ModelObject> modelObjectList = modelObjectData.modelObjects(); |
| DefaultL3VpnSvc l3VpnSvc = ((DefaultL3VpnSvc) modelObjectList.get(0)); |
| } |
| } |