Bug-2208: On session-up reported LSPs have one hop path. 25/12025/9
authorMilos Fabian <milfabia@cisco.com>
Thu, 16 Oct 2014 15:30:56 +0000 (17:30 +0200)
committerMilos Fabian <milfabia@cisco.com>
Mon, 1 Dec 2014 12:33:34 +0000 (12:33 +0000)
-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>
pcep/pcc-mock/src/main/java/org/opendaylight/protocol/pcep/pcc/mock/MsgBuilderUtil.java
pcep/pcc-mock/src/main/java/org/opendaylight/protocol/pcep/pcc/mock/SimpleSessionListener.java
pcep/topology-provider/src/test/java/org/opendaylight/bgpcep/pcep/topology/provider/Stateful07TopologySessionListenerTest.java

index 77a730f9b1c81591fbb6d2ad36841bfc5d96305c..591013bdc89a24f78809b1c60731df364870716f 100644 (file)
@@ -11,7 +11,6 @@ package org.opendaylight.protocol.pcep.pcc.mock;
 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;
@@ -111,20 +110,20 @@ public final class MsgBuilderUtil {
         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());
         }
index 393d4e441c6cf17c04fd90ebe3e6f56764c88bda..3021a4eea9fe5029b3fc050a079da821779aceb9 100644 (file)
@@ -17,8 +17,8 @@ import static org.opendaylight.protocol.pcep.pcc.mock.MsgBuilderUtil.updToRptPat
 
 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;
@@ -26,6 +26,8 @@ import org.opendaylight.protocol.pcep.PCEPSession;
 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;
@@ -34,7 +36,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.iet
 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;
 
@@ -42,15 +47,20 @@ public class SimpleSessionListener implements PCEPSessionListener {
 
     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
@@ -76,11 +86,11 @@ public class SimpleSessionListener implements PCEPSessionListener {
     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(),
@@ -98,19 +108,23 @@ public class SimpleSessionListener implements PCEPSessionListener {
         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() {
index 933dff3e1f8033f58b5e9c65a4a1d195a9b45ff9..6f14a63e3d7d92cd1794a2efd07204a08a9eb477 100644 (file)
@@ -17,7 +17,6 @@ import static org.opendaylight.protocol.pcep.pcc.mock.MsgBuilderUtil.createLspTl
 
 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;
@@ -113,9 +112,8 @@ public class Stateful07TopologySessionListenerTest extends AbstractPCEPSessionTe
         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);
@@ -154,7 +152,7 @@ public class Stateful07TopologySessionListenerTest extends AbstractPCEPSessionTe
         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
@@ -185,7 +183,7 @@ public class Stateful07TopologySessionListenerTest extends AbstractPCEPSessionTe
         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
@@ -236,9 +234,8 @@ public class Stateful07TopologySessionListenerTest extends AbstractPCEPSessionTe
         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());