-all reported LSPs have common tunnel endpoint + one hop path (ERO with one ipv4-prefix subobject)
Change-Id: Ib358bccce79e4e41020dddecfcf5476c010fc8fe
Signed-off-by: Milos Fabian <milfabia@cisco.com>
import com.google.common.base.Charsets;
import com.google.common.base.Optional;
import com.google.common.collect.Lists;
-import java.net.InetAddress;
import java.util.Arrays;
import java.util.List;
import org.opendaylight.protocol.pcep.spi.PCEPErrors;
return pathBuilder.build();
}
- public static Tlvs createLspTlvs(final long lspId, final boolean symbolicPathName, InetAddress tunnelEndpoint,
- InetAddress tunnelSender, InetAddress extendedTunnelAddress) {
+ public static Tlvs createLspTlvs(final long lspId, final boolean symbolicPathName, String tunnelEndpoint,
+ String tunnelSender, String extendedTunnelAddress) {
final TlvsBuilder tlvs = new TlvsBuilder().setLspIdentifiers(new LspIdentifiersBuilder()
.setLspId(new LspId(lspId))
.setAddressFamily(
new Ipv4CaseBuilder().setIpv4(
new Ipv4Builder()
- .setIpv4TunnelEndpointAddress(new Ipv4Address(tunnelEndpoint.getHostAddress()))
- .setIpv4TunnelSenderAddress(new Ipv4Address(tunnelSender.getHostAddress()))
+ .setIpv4TunnelEndpointAddress(new Ipv4Address(tunnelEndpoint))
+ .setIpv4TunnelSenderAddress(new Ipv4Address(tunnelSender))
.setIpv4ExtendedTunnelId(
- new Ipv4ExtendedTunnelId(extendedTunnelAddress.getHostAddress()))
+ new Ipv4ExtendedTunnelId(extendedTunnelAddress))
.build()).build()).setTunnelId(new TunnelId((int) lspId)).build());
if (symbolicPathName) {
- final String pathName = "pcc_" + tunnelSender.getHostAddress() + "_tunnel_" + lspId;
+ final String pathName = "pcc_" + tunnelSender + "_tunnel_" + lspId;
tlvs.setSymbolicPathName(new SymbolicPathNameBuilder().setPathName(
new SymbolicPathName(pathName.getBytes(Charsets.UTF_8))).build());
}
import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
import java.net.InetAddress;
-import java.net.UnknownHostException;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import org.opendaylight.protocol.pcep.PCEPSessionListener;
import org.opendaylight.protocol.pcep.PCEPTerminationReason;
import org.opendaylight.protocol.pcep.spi.PCEPErrors;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Pcrpt;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Pcupd;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.LspBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.srp.object.Srp;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.ero.Subobject;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.ero.SubobjectBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.basic.explicit.route.subobjects.subobject.type.IpPrefixCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.basic.explicit.route.subobjects.subobject.type.IpPrefixCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.basic.explicit.route.subobjects.subobject.type.ip.prefix._case.IpPrefixBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger LOG = LoggerFactory.getLogger(SimpleSessionListener.class);
+ private static final String ENDPOINT_ADDRESS = "1.1.1.1";
+ private static final String ENDPOINT_PREFIX = ENDPOINT_ADDRESS + "/32";
+
+ private static final Subobject DEFAULT_ENDPOINT_HOP = getDefaultEROEndpointHop();
+
private final int lspsCount;
private final boolean pcError;
- private final InetAddress address;
+ private final String address;
public SimpleSessionListener(final int lspsCount, final boolean pcError, final InetAddress address) {
Preconditions.checkArgument(lspsCount >= 0);
this.lspsCount = lspsCount;
this.pcError = pcError;
- this.address = address;
+ this.address = address.getHostAddress();
}
@Override
public void onSessionUp(final PCEPSession session) {
LOG.debug("Session up.");
for (int i = 1; i <= this.lspsCount; i++) {
- final Tlvs tlvs = MsgBuilderUtil.createLspTlvs(i, true, this.address, this.address,
+ final Tlvs tlvs = MsgBuilderUtil.createLspTlvs(i, true, ENDPOINT_ADDRESS, this.address,
this.address);
session.sendMessage(createPcRtpMessage(
createLsp(i, true, Optional.<Tlvs> fromNullable(tlvs)), Optional.<Srp> absent(),
- createPath(Collections.<Subobject> emptyList())));
+ createPath(Lists.newArrayList(DEFAULT_ENDPOINT_HOP))));
}
// end-of-sync marker
session.sendMessage(createPcRtpMessage(createLsp(0, false, Optional.<Tlvs> absent()), Optional.<Srp> absent(),
LOG.info("Session terminated. Cause : {}", cause.toString());
}
- private InetAddress getDestinationAddress(final List<Subobject> subobjects) {
+ private String getDestinationAddress(final List<Subobject> subobjects) {
if (subobjects != null && !subobjects.isEmpty()) {
final String prefix = ((IpPrefixCase) subobjects.get(subobjects.size() - 1).getSubobjectType())
.getIpPrefix().getIpPrefix().getIpv4Prefix().getValue();
- try {
- return InetAddress.getByName(prefix.substring(0, prefix.indexOf('/')));
- } catch (UnknownHostException e) {
- LOG.warn("Unknown host name {}", prefix);
- }
+ return prefix.substring(0, prefix.indexOf('/'));
}
return this.address;
}
+ private static Subobject getDefaultEROEndpointHop() {
+ final SubobjectBuilder builder = new SubobjectBuilder();
+ builder.setLoose(false);
+ builder.setSubobjectType(new IpPrefixCaseBuilder().setIpPrefix(new IpPrefixBuilder().setIpPrefix(
+ new IpPrefix(new Ipv4Prefix(ENDPOINT_PREFIX))).build()).build());
+ return builder.build();
+ }
+
private Random rnd = new Random();
private PCEPErrors getRandomError() {
import com.google.common.base.Optional;
import com.google.common.collect.Lists;
-import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Collections;
import java.util.List;
final Pcinitiate pcinitiate = (Pcinitiate) this.receivedMsgs.get(0);
final Requests req = pcinitiate.getPcinitiateMessage().getRequests().get(0);
final long srpId = req.getSrp().getOperationId().getValue();
- final InetAddress inetAddress = InetAddress.getByName(TEST_ADDRESS);
final Tlvs tlvs = createLspTlvs(req.getLsp().getPlspId().getValue(), true,
- inetAddress, inetAddress, inetAddress);
+ TEST_ADDRESS, TEST_ADDRESS, TEST_ADDRESS);
final Pcrpt pcRpt = MsgBuilderUtil.createPcRtpMessage(new LspBuilder(req.getLsp()).setTlvs(tlvs).setPlspId(new PlspId(1L)).setSync(false).setRemove(false).setOperational(OperationalStatus.Active).build(), Optional.of(MsgBuilderUtil.createSrp(srpId)), MsgBuilderUtil.createPath(req.getEro().getSubobject()));
final Pcrpt esm = MsgBuilderUtil.createPcRtpMessage(new LspBuilder().setSync(false).build(), Optional.of(MsgBuilderUtil.createSrp(0L)), null);
this.listener.onMessage(this.session, esm);
final Updates upd = updateMsg.getPcupdMessage().getUpdates().get(0);
final long srpId2 = upd.getSrp().getOperationId().getValue();
final Tlvs tlvs2 = createLspTlvs(upd.getLsp().getPlspId().getValue(), false,
- InetAddress.getByName(NEW_DESTINATION_ADDRESS), inetAddress, inetAddress);
+ NEW_DESTINATION_ADDRESS, TEST_ADDRESS, TEST_ADDRESS);
final Pcrpt pcRpt2 = MsgBuilderUtil.createPcRtpMessage(new LspBuilder(upd.getLsp()).setTlvs(tlvs2).setSync(true).setRemove(false).setOperational(OperationalStatus.Active).build(), Optional.of(MsgBuilderUtil.createSrp(srpId2)), MsgBuilderUtil.createPath(upd.getPath().getEro().getSubobject()));
this.listener.onMessage(this.session, pcRpt2);
//check updated lsp
final Requests req2 = pcinitiate2.getPcinitiateMessage().getRequests().get(0);
final long srpId3 = req2.getSrp().getOperationId().getValue();
final Tlvs tlvs3 = createLspTlvs(req2.getLsp().getPlspId().getValue(), false,
- inetAddress, inetAddress, inetAddress);
+ TEST_ADDRESS, TEST_ADDRESS, TEST_ADDRESS);
final Pcrpt pcRpt3 = MsgBuilderUtil.createPcRtpMessage(new LspBuilder(req2.getLsp()).setTlvs(tlvs3).setRemove(true).setSync(true).setOperational(OperationalStatus.Down).build(), Optional.of(MsgBuilderUtil.createSrp(srpId3)), MsgBuilderUtil.createPath(Collections.<Subobject>emptyList()));
this.listener.onMessage(this.session, pcRpt3);
// check if lsp was removed
final Pcinitiate pcinitiate = (Pcinitiate) this.receivedMsgs.get(0);
final Requests req = pcinitiate.getPcinitiateMessage().getRequests().get(0);
final long srpId = req.getSrp().getOperationId().getValue();
- final InetAddress inetAddress = InetAddress.getByName(TEST_ADDRESS);
final Tlvs tlvs = createLspTlvs(req.getLsp().getPlspId().getValue(), true,
- inetAddress, inetAddress, inetAddress);
+ TEST_ADDRESS, TEST_ADDRESS, TEST_ADDRESS);
final Pcrpt pcRpt = MsgBuilderUtil.createPcRtpMessage(new LspBuilder(req.getLsp()).setTlvs(tlvs).setSync(true).setRemove(false).setOperational(OperationalStatus.Active).build(), Optional.of(MsgBuilderUtil.createSrp(srpId)), MsgBuilderUtil.createPath(req.getEro().getSubobject()));
this.listener.onMessage(this.session, pcRpt);
Assert.assertEquals(1, getTopology().get().getNode().size());