Bug-2423: LSP Identifiers TLV in PCEP-SR PCRpt messsage 67/13167/4
authorMilos Fabian <milfabia@cisco.com>
Thu, 27 Nov 2014 08:51:27 +0000 (09:51 +0100)
committerMilos Fabian <milfabia@cisco.com>
Fri, 28 Nov 2014 14:25:13 +0000 (14:25 +0000)
-LSP Identifier TLV is not included in LSP object of PCRpt
message for PCEP segment routing

-since building of PCEP topology depends on LSP Identifier,
lets put fake LSP Identifier (use PLSP ID value)

Change-Id: Idb0ec249a11f343c6071e6bf286fa2cb6f91940f
Signed-off-by: Milos Fabian <milfabia@cisco.com>
pcep/segment-routing/pom.xml
pcep/segment-routing/src/main/java/org/opendaylight/protocol/pcep/segment/routing02/SrPcRptMessageParser.java
pcep/segment-routing/src/test/java/org/opendaylight/protocol/pcep/segment/routing02/SrMessageParserTest.java
pcep/segment-routing/src/test/java/org/opendaylight/protocol/pcep/segment/routing02/TopologyProviderTest.java [new file with mode: 0644]
pcep/topology-provider/src/test/java/org/opendaylight/bgpcep/pcep/topology/provider/AbstractPCEPSessionTest.java
pcep/topology-provider/src/test/java/org/opendaylight/bgpcep/pcep/topology/provider/Stateful02TopologySessionListenerTest.java
pcep/topology-provider/src/test/java/org/opendaylight/bgpcep/pcep/topology/provider/Stateful07TopologySessionListenerTest.java

index d6de1a70d12d4be03a3c6ccf05f6c6e41b9ac45c..0726944b9f3fd3c973e98bc41709bd843b021774 100644 (file)
          <groupId>org.opendaylight.yangtools</groupId>
          <artifactId>mockito-configuration</artifactId>
       </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pcep-spi</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
+      <dependency>
+         <groupId>${project.groupId}</groupId>
+         <artifactId>pcep-spi</artifactId>
+         <type>test-jar</type>
+         <scope>test</scope>
+      </dependency>
+      <dependency>
+         <groupId>org.opendaylight.controller</groupId>
+         <artifactId>sal-binding-broker-impl</artifactId>
+         <scope>test</scope>
+      </dependency>
+      <dependency>
+          <groupId>org.opendaylight.controller</groupId>
+          <artifactId>sal-binding-broker-impl</artifactId>
+          <scope>test</scope>
+          <type>test-jar</type>
+      </dependency>
+      <dependency>
+         <groupId>${project.groupId}</groupId>
+         <artifactId>pcep-topology-provider</artifactId>
+         <type>test-jar</type>
+         <scope>test</scope>
+      </dependency>
+      <dependency>
+         <groupId>${project.groupId}</groupId>
+         <artifactId>pcep-topology-provider</artifactId>
+         <scope>test</scope>
+      </dependency>
    </dependencies>
 
    <build>
index ed1a346aab2a7e0a67c70a7984fd5f1eb02ac8d0..9305f3a2225014f646d1f3ec7280bdbd3f34e59f 100644 (file)
@@ -14,7 +14,10 @@ import java.util.List;
 import org.opendaylight.protocol.pcep.ietf.stateful07.Stateful07PCReportMessageParser;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
 import org.opendaylight.protocol.pcep.spi.PCEPErrors;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.identifiers.tlv.LspIdentifiersBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.Lsp;
+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.lsp.object.lsp.TlvsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.Reports;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.ReportsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.reports.PathBuilder;
@@ -24,6 +27,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.Ero;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rp.object.Rp;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.LspId;
 
 public class SrPcRptMessageParser extends Stateful07PCReportMessageParser {
 
@@ -44,42 +48,46 @@ public class SrPcRptMessageParser extends Stateful07PCReportMessageParser {
 
     @Override
     protected Reports getValidReports(List<Object> objects, List<Message> errors) {
-        if (!(objects.get(0) instanceof Srp)) {
-            errors.add(createErrorMsg(PCEPErrors.SRP_MISSING, Optional.<Rp>absent()));
-        }
-        final Srp srp = (Srp) objects.get(0);
-        if (isSegmentRoutingPath(srp)) {
-            boolean isValid = true;
-            final ReportsBuilder builder = new ReportsBuilder();
-            builder.setSrp(srp);
-            objects.remove(0);
-            if (objects.get(0) instanceof Lsp) {
-                builder.setLsp((Lsp) objects.get(0));
+        if (objects.get(0) instanceof Srp) {
+            final Srp srp = (Srp) objects.get(0);
+            if (isSegmentRoutingPath(srp)) {
+                boolean isValid = true;
+                final ReportsBuilder builder = new ReportsBuilder();
+                builder.setSrp(srp);
                 objects.remove(0);
-            } else {
-                errors.add(createErrorMsg(PCEPErrors.LSP_MISSING, Optional.<Rp>absent()));
-                isValid = false;
-            }
-
-            final Object obj = objects.get(0);
-            if (obj instanceof Ero) {
-                final Ero ero = (Ero) obj;
-                final PCEPErrors error = SrEroUtil.validateSrEroSubobjects(ero);
-                if (error != null) {
-                    errors.add(createErrorMsg(error, Optional.<Rp>absent()));
+                if (objects.get(0) instanceof Lsp) {
+                    final Lsp lsp = (Lsp) objects.get(0);
+                    final LspBuilder lspBuilder = new LspBuilder(lsp);
+                    final TlvsBuilder tlvsBuilder = new TlvsBuilder(lsp.getTlvs());
+                    tlvsBuilder.setLspIdentifiers(new LspIdentifiersBuilder().setLspId(new LspId(lsp.getPlspId().getValue())).build());
+                    lspBuilder.setTlvs(tlvsBuilder.build());
+                    builder.setLsp(lspBuilder.build());
+                    objects.remove(0);
+                } else {
+                    errors.add(createErrorMsg(PCEPErrors.LSP_MISSING, Optional.<Rp>absent()));
                     isValid = false;
+                }
+
+                final Object obj = objects.get(0);
+                if (obj instanceof Ero) {
+                    final Ero ero = (Ero) obj;
+                    final PCEPErrors error = SrEroUtil.validateSrEroSubobjects(ero);
+                    if (error != null) {
+                        errors.add(createErrorMsg(error, Optional.<Rp>absent()));
+                        isValid = false;
+                    } else {
+                        builder.setPath(new PathBuilder().setEro(ero).build());
+                    }
+                    objects.remove(0);
                 } else {
-                    builder.setPath(new PathBuilder().setEro(ero).build());
+                    errors.add(createErrorMsg(PCEPErrors.ERO_MISSING, Optional.<Rp>absent()));
+                    isValid = false;
                 }
-                objects.remove(0);
-            } else {
-                errors.add(createErrorMsg(PCEPErrors.ERO_MISSING, Optional.<Rp>absent()));
-                isValid = false;
-            }
-            if (isValid) {
-                return builder.build();
+                if (isValid) {
+                    return builder.build();
+                }
+                return null;
             }
-            return null;
         }
         return super.getValidReports(objects, errors);
     }
index 3c37dacd11022ead6c5bdf4a8f6376bca8a75b17..7c3f4b94372460ec0f730aee9b70e1d5888f78ee 100644 (file)
@@ -38,6 +38,7 @@ 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.PcupdBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.PlspId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.SrpIdNumber;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.identifiers.tlv.LspIdentifiersBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.Lsp;
 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.pcrpt.message.PcrptMessageBuilder;
@@ -78,6 +79,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rp.object.Rp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rp.object.RpBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rp.object.rp.TlvsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.LspId;
 
 public class SrMessageParserTest {
 
@@ -211,7 +213,13 @@ public class SrMessageParserTest {
         final SrPcRptMessageParser parser = new SrPcRptMessageParser(objectRegistry);
         final PcrptMessageBuilder builder = new PcrptMessageBuilder();
         final ReportsBuilder rptBuilder = new ReportsBuilder();
-        rptBuilder.setLsp(createLspObject());
+        final Lsp lsp = createLspObject();
+        final LspBuilder lspBuilder = new LspBuilder(lsp);
+        final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.lsp.TlvsBuilder tlvsBuilder =
+                new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.lsp.TlvsBuilder(lsp.getTlvs());
+        tlvsBuilder.setLspIdentifiers(new LspIdentifiersBuilder().setLspId(new LspId(0L)).build());
+        lspBuilder.setTlvs(tlvsBuilder.build());
+        rptBuilder.setLsp(lspBuilder.build());
         rptBuilder.setSrp(createSrpObject());
         rptBuilder.setPath(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.reports.PathBuilder().setEro(createSrEroObject()).build());
         builder.setReports(Lists.newArrayList(rptBuilder.build()));
@@ -221,6 +229,8 @@ public class SrMessageParserTest {
                 buf.readableBytes() - 4), Collections.<Message> emptyList()));
 
         final ByteBuf buffer = Unpooled.buffer(statefulMsg.length);
+        rptBuilder.setLsp(createLspObject());
+        builder.setReports(Lists.newArrayList(rptBuilder.build()));
         parser.serializeMessage(new PcrptBuilder().setPcrptMessage(builder.build()).build(), buffer);
         assertArrayEquals(statefulMsg, buffer.array());
     }
diff --git a/pcep/segment-routing/src/test/java/org/opendaylight/protocol/pcep/segment/routing02/TopologyProviderTest.java b/pcep/segment-routing/src/test/java/org/opendaylight/protocol/pcep/segment/routing02/TopologyProviderTest.java
new file mode 100644 (file)
index 0000000..b070a8e
--- /dev/null
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.protocol.pcep.segment.routing02;
+
+import com.google.common.base.Charsets;
+import com.google.common.collect.Lists;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.opendaylight.bgpcep.pcep.topology.provider.AbstractPCEPSessionTest;
+import org.opendaylight.bgpcep.pcep.topology.provider.AbstractTopologySessionListener;
+import org.opendaylight.bgpcep.pcep.topology.provider.Stateful07TopologySessionListenerFactory;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
+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.PcrptBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.PlspId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.SrpIdNumber;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.SymbolicPathName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.identifiers.tlv.LspIdentifiersBuilder;
+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.lsp.object.lsp.TlvsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.PcrptMessageBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.ReportsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.pcrpt.message.reports.PathBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.srp.object.SrpBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.symbolic.path.name.tlv.SymbolicPathNameBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing._02.rev140506.SidType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing._02.rev140506.SrEroSubobject.Flags;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing._02.rev140506.network.topology.topology.node.path.computation.client.reported.lsp.path.ero.subobject.subobject.type.SrEroType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing._02.rev140506.pcrpt.pcrpt.message.reports.path.ero.subobject.subobject.type.SrEroTypeBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing._02.rev140506.sr.ero.subobject.nai.IpNodeId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing._02.rev140506.sr.ero.subobject.nai.IpNodeIdBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.Ero;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.EroBuilder;
+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.LspId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.Node1;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.pcep.client.attributes.path.computation.client.ReportedLsp;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
+
+public class TopologyProviderTest extends AbstractPCEPSessionTest<Stateful07TopologySessionListenerFactory> {
+
+    private AbstractTopologySessionListener<SrpIdNumber, PlspId> listener;
+
+    @SuppressWarnings("unchecked")
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+        this.listener = (AbstractTopologySessionListener<SrpIdNumber, PlspId>) getSessionListener();
+    }
+
+    @Test
+    public void testOnReportMessage() throws InterruptedException, ExecutionException {
+        this.listener.onSessionUp(this.session);
+
+        Pcrpt pcRptMsg = createSrPcRpt("1.1.1.1", "sr-path1", 1L);
+        this.listener.onMessage(this.session, pcRptMsg);
+        //check sr-path
+        Topology topology = getTopology().get();
+        List<ReportedLsp> reportedLsps = topology.getNode().get(0).getAugmentation(Node1.class).getPathComputationClient().getReportedLsp();
+        Assert.assertEquals(1, reportedLsps.size());
+        final ReportedLsp lsp = reportedLsps.get(0);
+        Assert.assertEquals("sr-path1", lsp.getName());
+        List<Subobject> subobjects = lsp.getPath().get(0).getEro().getSubobject();
+        Assert.assertEquals(1, subobjects.size());
+        Assert.assertEquals("1.1.1.1", ((IpNodeId)((SrEroType)subobjects.get(0).getSubobjectType()).getNai()).getIpAddress().getIpv4Address().getValue());
+
+        pcRptMsg = createSrPcRpt("1.1.1.3", "sr-path2", 2L);
+        this.listener.onMessage(this.session, pcRptMsg);
+        //check second lsp sr-path
+        topology = getTopology().get();
+        reportedLsps = topology.getNode().get(0).getAugmentation(Node1.class).getPathComputationClient().getReportedLsp();
+        Assert.assertEquals(2, reportedLsps.size());
+
+        pcRptMsg = createSrPcRpt("1.1.1.2", "sr-path1", 1L);
+        this.listener.onMessage(this.session, pcRptMsg);
+        //check updated sr-path
+        topology = getTopology().get();
+        reportedLsps = topology.getNode().get(0).getAugmentation(Node1.class).getPathComputationClient().getReportedLsp();
+        Assert.assertEquals(2, reportedLsps.size());
+        for (final ReportedLsp rlsp : reportedLsps) {
+            if (rlsp.getName().equals("sr-path1")) {
+                subobjects = rlsp.getPath().get(0).getEro().getSubobject();
+                Assert.assertEquals(1, subobjects.size());
+                Assert.assertEquals("1.1.1.2", ((IpNodeId)((SrEroType)subobjects.get(0).getSubobjectType()).getNai()).getIpAddress().getIpv4Address().getValue());
+            }
+        }
+    }
+
+    private static Pcrpt createSrPcRpt(final String nai, final String pathName, final long plspId) {
+        return new PcrptBuilder().setPcrptMessage(new PcrptMessageBuilder().setReports(Lists.newArrayList(new ReportsBuilder()
+            .setLsp(new LspBuilder().setPlspId(new PlspId(plspId)).setRemove(false).setSync(true).setAdministrative(true).setDelegate(true)
+                    .setTlvs(new TlvsBuilder()
+                        .setLspIdentifiers(new LspIdentifiersBuilder().setLspId(new LspId(plspId)).build())
+                        .setSymbolicPathName(new SymbolicPathNameBuilder().setPathName(new SymbolicPathName(pathName.getBytes(Charsets.UTF_8))).build()).build()).build())
+            .setSrp(new SrpBuilder().setOperationId(new SrpIdNumber(0L)).build())
+            .setPath(new PathBuilder().setEro(createSrEroObject(nai)).build())
+            .build())).build()).build();
+    }
+
+    private static Ero createSrEroObject(final String nai) {
+        final SrEroTypeBuilder srEroBuilder = new SrEroTypeBuilder();
+        srEroBuilder.setFlags(new Flags(false, false, false, false));
+        srEroBuilder.setSidType(SidType.Ipv4NodeId);
+        srEroBuilder.setSid(123456L);
+        srEroBuilder.setNai(new IpNodeIdBuilder().setIpAddress(new IpAddress(new Ipv4Address(nai))).build());
+        final SubobjectBuilder subobjBuilder = new SubobjectBuilder().setSubobjectType(srEroBuilder.build()).setLoose(false);
+
+        final List<Subobject> subobjects = Lists.newArrayList(subobjBuilder.build());
+        return new EroBuilder().setProcessingRule(false).setIgnore(false).setSubobject(subobjects).build();
+    }
+
+}
index c9f4a68b6f6e41dd7a9394fcbeb47678f3e490fe..24e56570f131c7c1d57148448004033473edb648 100644 (file)
@@ -12,6 +12,7 @@ import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
+
 import com.google.common.base.Optional;
 import io.netty.channel.Channel;
 import io.netty.channel.ChannelFuture;
@@ -39,6 +40,7 @@ import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.binding.test.AbstractDataBrokerTest;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
+import org.opendaylight.protocol.pcep.PCEPSessionListener;
 import org.opendaylight.protocol.pcep.impl.DefaultPCEPSessionNegotiator;
 import org.opendaylight.protocol.pcep.impl.PCEPSessionImpl;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
@@ -161,4 +163,8 @@ public abstract class AbstractPCEPSessionTest<T extends TopologySessionListenerF
     protected Open getLocalPref() {
         return this.localPrefs;
     }
+
+    protected PCEPSessionListener getSessionListener() {
+        return this.manager.getSessionListener();
+    }
 }
index 2bf7264b77bfae8e683db90b0ea385afff86a492..7c095e8c08fbd44d38cf69bdb486c8be86cf3af3 100644 (file)
@@ -70,7 +70,7 @@ public class Stateful02TopologySessionListenerTest extends AbstractPCEPSessionTe
     @Before
     public void setUp() throws Exception {
         super.setUp();
-        listener = (Stateful02TopologySessionListener) this.manager.getSessionListener();
+        listener = (Stateful02TopologySessionListener) getSessionListener();
     }
 
     @Test
index 7471034fa9fe4467d497929781b32d684f80712a..933dff3e1f8033f58b5e9c65a4a1d195a9b45ff9 100644 (file)
@@ -99,7 +99,7 @@ public class Stateful07TopologySessionListenerTest extends AbstractPCEPSessionTe
     @Before
     public void setUp() throws Exception {
         super.setUp();
-        this.listener = (Stateful07TopologySessionListener) this.manager.getSessionListener();
+        this.listener = (Stateful07TopologySessionListener) getSessionListener();
     }
 
     @Test