blob: 191b40e76b587e0e4330c474e1826b8dbea822ce [file] [log] [blame]
/*
* 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));
}
}