Pcep Stateful & Initiated renaming
[bgpcep.git] / pcep / topology / topology-provider / src / test / java / org / opendaylight / bgpcep / pcep / topology / provider / Stateful07TopologySessionListenerTest.java
diff --git a/pcep/topology/topology-provider/src/test/java/org/opendaylight/bgpcep/pcep/topology/provider/Stateful07TopologySessionListenerTest.java b/pcep/topology/topology-provider/src/test/java/org/opendaylight/bgpcep/pcep/topology/provider/Stateful07TopologySessionListenerTest.java
deleted file mode 100644 (file)
index 15827aa..0000000
+++ /dev/null
@@ -1,659 +0,0 @@
-/*
- * 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.bgpcep.pcep.topology.provider;
-
-import static java.lang.Boolean.FALSE;
-import static java.lang.Boolean.TRUE;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.opendaylight.protocol.pcep.pcc.mock.spi.MsgBuilderUtil.createLspTlvs;
-import static org.opendaylight.protocol.util.CheckTestUtil.checkEquals;
-import static org.opendaylight.protocol.util.CheckTestUtil.checkNotPresentOperational;
-import static org.opendaylight.protocol.util.CheckTestUtil.readDataOperational;
-
-import com.google.common.collect.Lists;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.protocol.pcep.PCEPCloseTermination;
-import org.opendaylight.protocol.pcep.TerminationReason;
-import org.opendaylight.protocol.pcep.impl.PCEPSessionImpl;
-import org.opendaylight.protocol.pcep.pcc.mock.spi.MsgBuilderUtil;
-import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
-import org.opendaylight.protocol.pcep.spi.PCEPErrors;
-import org.opendaylight.protocol.util.CheckTestUtil;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressNoZone;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.network.topology.rev140113.NetworkTopologyRef;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev181109.Pcinitiate;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev181109.Stateful1Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev181109.pcinitiate.message.pcinitiate.message.Requests;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.Arguments1Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.Arguments2Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.Arguments3Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.OperationalStatus;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.Pcrpt;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.PcrptBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.Pcupd;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.PlspId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.SymbolicPathName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.Tlvs1Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.lsp.identifiers.tlv.LspIdentifiersBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.lsp.object.LspBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.lsp.object.lsp.Tlvs;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.pcrpt.message.PcrptMessageBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.pcrpt.message.pcrpt.message.Reports;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.pcrpt.message.pcrpt.message.ReportsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.pcrpt.message.pcrpt.message.reports.PathBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.pcupd.message.pcupd.message.Updates;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.stateful.capability.tlv.StatefulBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.symbolic.path.name.tlv.SymbolicPathNameBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev181109.Close;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.StatefulCapabilitiesStatsAug;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.StatefulMessagesStatsAug;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.PcepSessionState;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.pcep.session.state.LocalPref;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.pcep.session.state.PeerPref;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.reply.time.grouping.ReplyTime;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.Message;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.endpoints.address.family.Ipv4CaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.endpoints.address.family.ipv4._case.Ipv4Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.endpoints.object.EndpointsObjBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.explicit.route.object.EroBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.open.object.Open;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.open.object.OpenBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.open.object.open.TlvsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.pcep.error.object.ErrorObject;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.LspId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.AddLspInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.AddLspInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.AddLspOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.EnsureLspOperationalInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.EnsureLspOperationalInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.FailureType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.OperationResult;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.RemoveLspInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.RemoveLspInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.UpdateLspInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.UpdateLspInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.UpdateLspOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.add.lsp.args.ArgumentsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.pcep.client.attributes.path.computation.client.ReportedLsp;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.pcep.client.attributes.path.computation.client.reported.lsp.Path;
-import org.opendaylight.yangtools.yang.common.RpcResult;
-import org.opendaylight.yangtools.yang.common.Uint32;
-
-public class Stateful07TopologySessionListenerTest
-        extends AbstractPCEPSessionTest<Stateful07TopologySessionListenerFactory> {
-
-    private final String tunnelName = "pcc_" + this.testAddress + "_tunnel_0";
-
-    private Stateful07TopologySessionListener listener;
-
-    private PCEPSessionImpl session;
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        super.setUp();
-        this.listener = (Stateful07TopologySessionListener) getSessionListener();
-        this.session = getPCEPSession(getLocalPref(), getRemotePref());
-    }
-
-    @Test
-    public void testStateful07TopologySessionListener() throws Exception {
-        this.listener.onSessionUp(this.session);
-        final PcepSessionState listenerState = this.listener.listenerState;
-        assertEquals(this.testAddress, listenerState.getPeerPref().getIpAddress());
-        final LocalPref state = this.listener.listenerState.getLocalPref();
-        assertNotNull(state);
-        assertEquals(DEAD_TIMER, state.getDeadtimer().shortValue());
-        assertEquals(KEEP_ALIVE, state.getKeepalive().shortValue());
-        assertEquals(0, state.getSessionId().intValue());
-        assertEquals(this.testAddress, state.getIpAddress());
-
-        final PeerPref peerState = listenerState.getPeerPref();
-
-        assertEquals(DEAD_TIMER, peerState.getDeadtimer().shortValue());
-        assertEquals(KEEP_ALIVE, peerState.getKeepalive().shortValue());
-        assertEquals(0, peerState.getSessionId().intValue());
-        assertEquals(this.testAddress, peerState.getIpAddress());
-
-        // add-lsp
-        this.topologyRpcs.addLsp(createAddLspInput());
-        assertEquals(1, this.receivedMsgs.size());
-        assertTrue(this.receivedMsgs.get(0) instanceof Pcinitiate);
-        final Pcinitiate pcinitiate = (Pcinitiate) this.receivedMsgs.get(0);
-        final Requests req = pcinitiate.getPcinitiateMessage().getRequests().get(0);
-        final Uint32 srpId = req.getSrp().getOperationId().getValue();
-        final Tlvs tlvs = createLspTlvs(req.getLsp().getPlspId().getValue(), true,
-                this.testAddress, this.testAddress, this.testAddress, Optional.empty());
-        final Pcrpt pcRpt = MsgBuilderUtil.createPcRtpMessage(new LspBuilder(req.getLsp())
-                        .setTlvs(tlvs).setPlspId(new PlspId(Uint32.ONE)).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(Uint32.ZERO)), null);
-        this.listener.onMessage(this.session, esm);
-        readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
-            assertEquals(this.testAddress, pcc.getIpAddress().getIpv4AddressNoZone().getValue());
-            // reported lsp so far empty, has not received response (PcRpt) yet
-            assertNull(pcc.getReportedLsp());
-            return pcc;
-        });
-
-        this.listener.onMessage(this.session, pcRpt);
-        // check created lsp
-        readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
-            assertEquals(1, pcc.nonnullReportedLsp().size());
-            final ReportedLsp reportedLsp = pcc.getReportedLsp().values().iterator().next();
-            assertEquals(this.tunnelName, reportedLsp.getName());
-            assertEquals(1, reportedLsp.nonnullPath().size());
-            final Path path = reportedLsp.nonnullPath().values().iterator().next();
-            assertEquals(1, path.getEro().getSubobject().size());
-            assertEquals(this.eroIpPrefix, getLastEroIpPrefix(path.getEro()));
-            return pcc;
-        });
-
-        // check stats
-        checkEquals(() -> assertEquals(1, listenerState.getDelegatedLspsCount().intValue()));
-        checkEquals(() -> assertTrue(this.listener.isSessionSynchronized()));
-        checkEquals(() -> assertTrue(listenerState.getMessages()
-                .augmentation(StatefulMessagesStatsAug.class).getLastReceivedRptMsgTimestamp().toJava() > 0));
-        checkEquals(() -> assertEquals(2, listenerState.getMessages()
-                .augmentation(StatefulMessagesStatsAug.class).getReceivedRptMsgCount().intValue()));
-        checkEquals(() -> assertEquals(1, listenerState.getMessages()
-                .augmentation(StatefulMessagesStatsAug.class).getSentInitMsgCount().intValue()));
-        checkEquals(() -> assertEquals(0, listenerState.getMessages()
-                .augmentation(StatefulMessagesStatsAug.class).getSentUpdMsgCount().intValue()));
-
-        // update-lsp
-        final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.update.lsp.args
-                .ArgumentsBuilder updArgsBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
-                .topology.pcep.rev200120.update.lsp.args.ArgumentsBuilder();
-        updArgsBuilder.setEro(createEroWithIpPrefixes(Lists.newArrayList(this.eroIpPrefix, this.dstIpPrefix)));
-        updArgsBuilder.addAugmentation(new Arguments3Builder().setLsp(new LspBuilder()
-                .setDelegate(TRUE).setAdministrative(FALSE).build()).build());
-        final UpdateLspInput update = new UpdateLspInputBuilder().setArguments(updArgsBuilder.build())
-                .setName(this.tunnelName).setNetworkTopologyRef(new NetworkTopologyRef(TOPO_IID))
-                .setNode(this.nodeId).build();
-        this.topologyRpcs.updateLsp(update);
-        assertEquals(2, this.receivedMsgs.size());
-        assertTrue(this.receivedMsgs.get(1) instanceof Pcupd);
-        final Pcupd updateMsg = (Pcupd) this.receivedMsgs.get(1);
-        final Updates upd = updateMsg.getPcupdMessage().getUpdates().get(0);
-        final Uint32 srpId2 = upd.getSrp().getOperationId().getValue();
-        final Tlvs tlvs2 = createLspTlvs(upd.getLsp().getPlspId().getValue(), false,
-                this.newDestinationAddress, this.testAddress, this.testAddress, Optional.empty());
-        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
-        readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
-            assertEquals(1, pcc.getReportedLsp().size());
-            final ReportedLsp reportedLsp = pcc.getReportedLsp().values().iterator().next();
-            assertEquals(this.tunnelName, reportedLsp.getName());
-            assertEquals(1, reportedLsp.getPath().size());
-            final Path path = reportedLsp.getPath().values().iterator().next();
-            assertEquals(2, path.getEro().getSubobject().size());
-            assertEquals(this.dstIpPrefix, getLastEroIpPrefix(path.getEro()));
-            assertEquals(1, listenerState.getDelegatedLspsCount().intValue());
-            assertTrue(this.listener.isSessionSynchronized());
-            final StatefulMessagesStatsAug statefulstate = listenerState.getMessages()
-                    .augmentation(StatefulMessagesStatsAug.class);
-            assertTrue(statefulstate.getLastReceivedRptMsgTimestamp().toJava() > 0);
-            assertEquals(3, statefulstate.getReceivedRptMsgCount().intValue());
-            assertEquals(1, statefulstate.getSentInitMsgCount().intValue());
-            assertEquals(1, statefulstate.getSentUpdMsgCount().intValue());
-            final ReplyTime replyTime = listenerState.getMessages().getReplyTime();
-            assertTrue(replyTime.getAverageTime().toJava() > 0);
-            assertTrue(replyTime.getMaxTime().toJava() > 0);
-            final StatefulCapabilitiesStatsAug statefulCapabilities = listenerState
-                    .getPeerCapabilities().augmentation(StatefulCapabilitiesStatsAug.class);
-            assertFalse(statefulCapabilities.isActive());
-            assertTrue(statefulCapabilities.isInstantiation());
-            assertTrue(statefulCapabilities.isStateful());
-            return pcc;
-        });
-
-        // ensure-operational
-        final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.ensure.lsp
-                .operational.args.ArgumentsBuilder ensureArgs = new org.opendaylight.yang.gen.v1.urn.opendaylight.params
-                .xml.ns.yang.topology.pcep.rev200120.ensure.lsp.operational.args.ArgumentsBuilder();
-        ensureArgs.addAugmentation(new Arguments1Builder().setOperational(OperationalStatus.Active).build());
-        final EnsureLspOperationalInput ensure = new EnsureLspOperationalInputBuilder().setArguments(ensureArgs.build())
-                .setName(this.tunnelName).setNetworkTopologyRef(new NetworkTopologyRef(TOPO_IID))
-                .setNode(this.nodeId).build();
-        final OperationResult result = this.topologyRpcs.ensureLspOperational(ensure).get().getResult();
-        //check result
-        assertNull(result.getFailure());
-
-        // remove-lsp
-        final RemoveLspInput remove = new RemoveLspInputBuilder().setName(this.tunnelName)
-                .setNetworkTopologyRef(new NetworkTopologyRef(TOPO_IID)).setNode(this.nodeId).build();
-        this.topologyRpcs.removeLsp(remove);
-        assertEquals(3, this.receivedMsgs.size());
-        assertTrue(this.receivedMsgs.get(2) instanceof Pcinitiate);
-        final Pcinitiate pcinitiate2 = (Pcinitiate) this.receivedMsgs.get(2);
-        final Requests req2 = pcinitiate2.getPcinitiateMessage().getRequests().get(0);
-        final Uint32 srpId3 = req2.getSrp().getOperationId().getValue();
-        final Tlvs tlvs3 = createLspTlvs(req2.getLsp().getPlspId().getValue(), false,
-                this.testAddress, this.testAddress, this.testAddress, Optional.empty());
-        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.emptyList()));
-        this.listener.onMessage(this.session, pcRpt3);
-
-        // check if lsp was removed
-        readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
-            assertNull(pcc.getReportedLsp());
-            return pcc;
-        });
-        // check stats
-        checkEquals(() -> assertEquals(0, listenerState.getDelegatedLspsCount().intValue()));
-        checkEquals(() -> assertTrue(this.listener.isSessionSynchronized()));
-        checkEquals(() -> assertTrue(listenerState.getMessages()
-                .augmentation(StatefulMessagesStatsAug.class).getLastReceivedRptMsgTimestamp().toJava() > 0));
-        checkEquals(() -> assertEquals(4, listenerState.getMessages()
-                .augmentation(StatefulMessagesStatsAug.class).getReceivedRptMsgCount().intValue()));
-        checkEquals(() -> assertEquals(2, listenerState.getMessages()
-                .augmentation(StatefulMessagesStatsAug.class).getSentInitMsgCount().intValue()));
-        checkEquals(() -> assertEquals(1, listenerState.getMessages()
-                .augmentation(StatefulMessagesStatsAug.class).getSentUpdMsgCount().intValue()));
-    }
-
-    @Test
-    public void testOnUnhandledErrorMessage() {
-        final Message errorMsg = AbstractMessageParser.createErrorMsg(PCEPErrors.NON_ZERO_PLSPID, Optional.empty());
-        this.listener.onSessionUp(this.session);
-        assertTrue(this.listener.onMessage(Optional.<AbstractTopologySessionListener.MessageContext>empty()
-                .orElse(null),
-            errorMsg));
-    }
-
-    @Test
-    public void testOnErrorMessage() throws InterruptedException, ExecutionException {
-        final Message errorMsg = MsgBuilderUtil.createErrorMsg(PCEPErrors.NON_ZERO_PLSPID, Uint32.ONE);
-        this.listener.onSessionUp(this.session);
-        final Future<RpcResult<AddLspOutput>> futureOutput = this.topologyRpcs.addLsp(createAddLspInput());
-        this.listener.onMessage(this.session, errorMsg);
-
-        final AddLspOutput output = futureOutput.get().getResult();
-        assertEquals(FailureType.Failed, output.getFailure());
-        assertEquals(1, output.getError().size());
-        final ErrorObject err = output.getError().get(0).getErrorObject();
-        assertEquals(PCEPErrors.NON_ZERO_PLSPID.getErrorType(), err.getType());
-        assertEquals(PCEPErrors.NON_ZERO_PLSPID.getErrorValue(), err.getValue());
-    }
-
-    @Test
-    public void testOnSessionDown() throws InterruptedException, ExecutionException {
-        this.listener.onSessionUp(this.session);
-        // send request
-        final Future<RpcResult<AddLspOutput>> futureOutput = this.topologyRpcs.addLsp(createAddLspInput());
-        assertFalse(this.session.isClosed());
-        this.listener.onSessionDown(this.session, new IllegalArgumentException());
-        assertTrue(this.session.isClosed());
-        final AddLspOutput output = futureOutput.get().getResult();
-        // deal with unsent request after session down
-        assertEquals(FailureType.Unsent, output.getFailure());
-    }
-
-    /**
-     * All the pcep session registration should be closed when the session manager is closed.
-     */
-    @Test
-    public void testOnServerSessionManagerDown() throws InterruptedException, ExecutionException {
-        this.listener.onSessionUp(this.session);
-        // the session should not be closed when session manager is up
-        assertFalse(this.session.isClosed());
-        // send request
-        final Future<RpcResult<AddLspOutput>> futureOutput = this.topologyRpcs.addLsp(createAddLspInput());
-        stopSessionManager();
-        final AddLspOutput output = futureOutput.get().getResult();
-        // deal with unsent request after session down
-        assertEquals(FailureType.Unsent, output.getFailure());
-        // verify the session is closed after server session manager is closed
-        assertTrue(this.session.isClosed());
-    }
-
-    /**
-     * Verify the PCEP session should not be up when server session manager is down,
-     * otherwise it would be a problem when the session is up while it's not registered with session manager.
-     */
-    @Test
-    public void testOnServerSessionManagerUnstarted() throws InterruptedException, ExecutionException {
-        stopSessionManager();
-        assertFalse(this.session.isClosed());
-        this.listener.onSessionUp(this.session);
-        // verify the session was NOT added to topology
-        checkNotPresentOperational(getDataBroker(), TOPO_IID);
-        // verify the session is closed due to server session manager is closed
-        assertTrue(this.session.isClosed());
-        // send request
-        final Future<RpcResult<AddLspOutput>> futureOutput = this.topologyRpcs.addLsp(createAddLspInput());
-        final AddLspOutput output = futureOutput.get().getResult();
-        // deal with unsent request after session down
-        assertEquals(FailureType.Unsent, output.getFailure());
-    }
-
-    @Test
-    public void testOnServerSessionManagerRestartAndSessionRecovery() throws Exception {
-        // close server session manager first
-        stopSessionManager();
-        assertFalse(this.session.isClosed());
-        this.listener.onSessionUp(this.session);
-        // verify the session was NOT added to topology
-        checkNotPresentOperational(getDataBroker(), TOPO_IID);
-        // verify the session is closed due to server session manager is closed
-        assertTrue(this.session.isClosed());
-        // send request
-        final Future<RpcResult<AddLspOutput>> futureOutput = this.topologyRpcs.addLsp(createAddLspInput());
-        final AddLspOutput output = futureOutput.get().getResult();
-        // deal with unsent request after session down
-        assertEquals(FailureType.Unsent, output.getFailure());
-        // PCC client is not there
-        checkNotPresentOperational(getDataBroker(), this.pathComputationClientIId);
-
-        // reset received message queue
-        this.receivedMsgs.clear();
-        // now we restart the session manager
-        startSessionManager();
-        // try to start the session again
-        // notice since the session was terminated before, it is not usable anymore.
-        // we need to get a new session instance. the new session will have the same local / remote preference
-        this.session = getPCEPSession(getLocalPref(), getRemotePref());
-        assertFalse(this.session.isClosed());
-        this.listener.onSessionUp(this.session);
-        assertFalse(this.session.isClosed());
-
-        // create node
-        this.topologyRpcs.addLsp(createAddLspInput());
-        final Pcinitiate pcinitiate = (Pcinitiate) this.receivedMsgs.get(0);
-        final Requests req = pcinitiate.getPcinitiateMessage().getRequests().get(0);
-        final Uint32 srpId = req.getSrp().getOperationId().getValue();
-        final Tlvs tlvs = createLspTlvs(req.getLsp().getPlspId().getValue(), true,
-                this.testAddress, this.testAddress, this.testAddress, Optional.empty());
-        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);
-        readDataOperational(getDataBroker(), TOPO_IID, topology -> {
-            assertEquals(1, topology.getNode().size());
-            return topology;
-        });
-    }
-
-    /**
-     * When a session is somehow duplicated in controller, the controller should drop existing session.
-     */
-    @Test
-    public void testDuplicatedSession() throws ExecutionException, InterruptedException {
-        this.listener.onSessionUp(this.session);
-
-        // create node
-        this.topologyRpcs.addLsp(createAddLspInput());
-        final Pcinitiate pcinitiate = (Pcinitiate) this.receivedMsgs.get(0);
-        final Requests req = pcinitiate.getPcinitiateMessage().getRequests().get(0);
-        final Uint32 srpId = req.getSrp().getOperationId().getValue();
-        final Tlvs tlvs = createLspTlvs(req.getLsp().getPlspId().getValue(), true,
-                this.testAddress, this.testAddress, this.testAddress, Optional.empty());
-        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);
-        readDataOperational(getDataBroker(), TOPO_IID, topology -> {
-            assertEquals(1, topology.getNode().size());
-            return topology;
-        });
-
-        // now we do session up again
-        this.listener.onSessionUp(this.session);
-        assertTrue(this.session.isClosed());
-        // node should be removed after termination
-        checkNotPresentOperational(getDataBroker(), this.pathComputationClientIId);
-        assertFalse(this.receivedMsgs.isEmpty());
-        // the last message should be a Close message
-        assertTrue(this.receivedMsgs.get(this.receivedMsgs.size() - 1) instanceof Close);
-    }
-
-    @Test
-    public void testConflictingListeners() {
-        this.listener.onSessionUp(this.session);
-        assertFalse(this.session.isClosed());
-        Stateful07TopologySessionListener conflictingListener =
-                (Stateful07TopologySessionListener) getSessionListener();
-        conflictingListener.onSessionUp(this.session);
-        assertTrue(this.session.isClosed());
-    }
-
-    @Test
-    public void testOnSessionTermination() throws Exception {
-        this.listener.onSessionUp(this.session);
-        // create node
-        this.topologyRpcs.addLsp(createAddLspInput());
-        final Pcinitiate pcinitiate = (Pcinitiate) this.receivedMsgs.get(0);
-        final Requests req = pcinitiate.getPcinitiateMessage().getRequests().get(0);
-        final Uint32 srpId = req.getSrp().getOperationId().getValue();
-        final Tlvs tlvs = createLspTlvs(req.getLsp().getPlspId().getValue(), true,
-                this.testAddress, this.testAddress, this.testAddress, Optional.empty());
-        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);
-        readDataOperational(getDataBroker(), TOPO_IID, topology -> {
-            assertEquals(1, topology.getNode().size());
-            return topology;
-        });
-
-        assertFalse(this.session.isClosed());
-        // node should be removed after termination
-        this.listener.onSessionTerminated(this.session, new PCEPCloseTermination(TerminationReason.UNKNOWN));
-        assertTrue(this.session.isClosed());
-        checkNotPresentOperational(getDataBroker(), this.pathComputationClientIId);
-    }
-
-    @Test
-    public void testUnknownLsp() throws Exception {
-        final List<Reports> reports = Lists.newArrayList(new ReportsBuilder()
-            .setPath(new PathBuilder()
-                .setEro(new EroBuilder().build())
-                .build())
-            .setLsp(new LspBuilder()
-                .setPlspId(new PlspId(Uint32.valueOf(5)))
-                .setSync(FALSE).setRemove(FALSE)
-                .setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful
-                    .rev181109.lsp.object.lsp.TlvsBuilder().setLspIdentifiers(new LspIdentifiersBuilder()
-                        .setLspId(new LspId(Uint32.ONE))
-                        .build())
-                    .setSymbolicPathName(new SymbolicPathNameBuilder()
-                        .setPathName(new SymbolicPathName(new byte[]{22, 34}))
-                        .build())
-                    .build())
-                .build())
-            .build());
-        final Pcrpt rptmsg = new PcrptBuilder().setPcrptMessage(new PcrptMessageBuilder().setReports(reports).build())
-                .build();
-        this.listener.onSessionUp(this.session);
-        this.listener.onMessage(this.session, rptmsg);
-        readDataOperational(getDataBroker(), TOPO_IID, node -> {
-            assertFalse(node.getNode().isEmpty());
-            return node;
-        });
-    }
-
-    @Test
-    public void testUpdateUnknownLsp() throws InterruptedException, ExecutionException {
-        this.listener.onSessionUp(this.session);
-        final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.update.lsp.args
-                .ArgumentsBuilder updArgsBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
-                .topology.pcep.rev200120.update.lsp.args.ArgumentsBuilder();
-        updArgsBuilder.setEro(createEroWithIpPrefixes(Lists.newArrayList(this.eroIpPrefix, this.dstIpPrefix)));
-        updArgsBuilder.addAugmentation(new Arguments3Builder().setLsp(new LspBuilder()
-                .setDelegate(TRUE).setAdministrative(TRUE).build()).build());
-        final UpdateLspInput update = new UpdateLspInputBuilder().setArguments(updArgsBuilder.build())
-                .setName(this.tunnelName).setNetworkTopologyRef(new NetworkTopologyRef(TOPO_IID)).setNode(this.nodeId)
-                .build();
-        final UpdateLspOutput result = this.topologyRpcs.updateLsp(update).get().getResult();
-        assertEquals(FailureType.Unsent, result.getFailure());
-        assertEquals(1, result.getError().size());
-        final ErrorObject errorObject = result.getError().get(0).getErrorObject();
-        assertNotNull(errorObject);
-        assertEquals(PCEPErrors.UNKNOWN_PLSP_ID, PCEPErrors.forValue(errorObject.getType(), errorObject.getValue()));
-    }
-
-    @Test
-    public void testRemoveUnknownLsp() throws InterruptedException, ExecutionException {
-        this.listener.onSessionUp(this.session);
-        final RemoveLspInput remove = new RemoveLspInputBuilder().setName(this.tunnelName).setNetworkTopologyRef(
-                new NetworkTopologyRef(TOPO_IID)).setNode(this.nodeId).build();
-        final OperationResult result = this.topologyRpcs.removeLsp(remove).get().getResult();
-        assertEquals(FailureType.Unsent, result.getFailure());
-        assertEquals(1, result.getError().size());
-        final ErrorObject errorObject = result.getError().get(0).getErrorObject();
-        assertNotNull(errorObject);
-        assertEquals(PCEPErrors.UNKNOWN_PLSP_ID, PCEPErrors.forValue(errorObject.getType(), errorObject.getValue()));
-    }
-
-    @Test
-    public void testAddAlreadyExistingLsp() throws InterruptedException, ExecutionException {
-        this.listener.onSessionUp(this.session);
-        this.topologyRpcs.addLsp(createAddLspInput());
-        assertEquals(1, this.receivedMsgs.size());
-        assertTrue(this.receivedMsgs.get(0) instanceof Pcinitiate);
-        final Pcinitiate pcinitiate = (Pcinitiate) this.receivedMsgs.get(0);
-        final Requests req = pcinitiate.getPcinitiateMessage().getRequests().get(0);
-        final Uint32 srpId = req.getSrp().getOperationId().getValue();
-        final Tlvs tlvs = createLspTlvs(req.getLsp().getPlspId().getValue(), true,
-                this.testAddress, this.testAddress, this.testAddress, Optional.empty());
-        final Pcrpt pcRpt = MsgBuilderUtil.createPcRtpMessage(new LspBuilder(req.getLsp()).setTlvs(tlvs)
-                .setPlspId(new PlspId(Uint32.ONE))
-                .setSync(FALSE)
-                .setRemove(FALSE)
-                .setOperational(OperationalStatus.Active)
-                .build(), Optional.of(MsgBuilderUtil.createSrp(srpId)), MsgBuilderUtil.createPath(req.getEro()
-                .getSubobject()));
-        this.listener.onMessage(this.session, pcRpt);
-
-        //try to add already existing LSP
-        final AddLspOutput result = this.topologyRpcs.addLsp(createAddLspInput()).get().getResult();
-        assertEquals(FailureType.Unsent, result.getFailure());
-        assertEquals(1, result.getError().size());
-        final ErrorObject errorObject = result.getError().get(0).getErrorObject();
-        assertNotNull(errorObject);
-        assertEquals(PCEPErrors.USED_SYMBOLIC_PATH_NAME, PCEPErrors.forValue(errorObject.getType(),
-                errorObject.getValue()));
-    }
-
-    @Test
-    @SuppressWarnings("checkstyle:IllegalCatch")
-    public void testPccResponseTimeout() throws Exception {
-        this.listener.onSessionUp(this.session);
-        final Future<RpcResult<AddLspOutput>> addLspResult = this.topologyRpcs.addLsp(createAddLspInput());
-        try {
-            addLspResult.get(2, TimeUnit.SECONDS);
-            fail();
-        } catch (final Exception e) {
-            assertTrue(e instanceof TimeoutException);
-        }
-        Thread.sleep(AbstractPCEPSessionTest.RPC_TIMEOUT);
-        CheckTestUtil.checkEquals(() -> {
-            final RpcResult<AddLspOutput> rpcResult = addLspResult.get();
-            assertNotNull(rpcResult);
-            assertEquals(rpcResult.getResult().getFailure(), FailureType.Unsent);
-        });
-    }
-
-    @Test
-    public void testDelegatedLspsCountWithDelegation() throws Exception {
-        this.listener.onSessionUp(this.session);
-        this.topologyRpcs.addLsp(createAddLspInput());
-        assertEquals(1, this.receivedMsgs.size());
-        assertTrue(this.receivedMsgs.get(0) instanceof Pcinitiate);
-        final Pcinitiate pcinitiate = (Pcinitiate) this.receivedMsgs.get(0);
-        final Requests req = pcinitiate.getPcinitiateMessage().getRequests().get(0);
-        final Uint32 srpId = req.getSrp().getOperationId().getValue();
-        final Tlvs tlvs = createLspTlvs(req.getLsp().getPlspId().getValue(), true,
-                this.testAddress, this.testAddress, this.testAddress, Optional.empty());
-        //delegate set to true
-        final Pcrpt pcRpt = MsgBuilderUtil.createPcRtpMessage(new LspBuilder(req.getLsp()).setTlvs(tlvs)
-                .setPlspId(new PlspId(Uint32.ONE))
-                .setSync(FALSE)
-                .setRemove(FALSE)
-                .setOperational(OperationalStatus.Active)
-                .setDelegate(TRUE)
-                .build(), Optional.of(MsgBuilderUtil.createSrp(srpId)), MsgBuilderUtil.createPath(
-                req.getEro().getSubobject()));
-        this.listener.onMessage(this.session, pcRpt);
-        checkEquals(() -> assertEquals(1, this.listener.listenerState.getDelegatedLspsCount().intValue()));
-    }
-
-    @Test
-    public void testDelegatedLspsCountWithoutDelegation() throws Exception {
-        this.listener.onSessionUp(this.session);
-        this.topologyRpcs.addLsp(createAddLspInput());
-        assertEquals(1, this.receivedMsgs.size());
-        assertTrue(this.receivedMsgs.get(0) instanceof Pcinitiate);
-        final Pcinitiate pcinitiate = (Pcinitiate) this.receivedMsgs.get(0);
-        final Requests req = pcinitiate.getPcinitiateMessage().getRequests().get(0);
-        final Uint32 srpId = req.getSrp().getOperationId().getValue();
-        final Tlvs tlvs = createLspTlvs(req.getLsp().getPlspId().getValue(), true,
-                this.testAddress, this.testAddress, this.testAddress, Optional.empty());
-        //delegate set to false
-        final Pcrpt pcRpt = MsgBuilderUtil.createPcRtpMessage(new LspBuilder(req.getLsp()).setTlvs(tlvs)
-                        .setPlspId(new PlspId(Uint32.ONE))
-                        .setSync(FALSE)
-                        .setRemove(FALSE)
-                        .setOperational(OperationalStatus.Active)
-                        .setDelegate(FALSE)
-                        .build(), Optional.of(MsgBuilderUtil.createSrp(srpId)),
-                MsgBuilderUtil.createPath(req.getEro().getSubobject()));
-        this.listener.onMessage(this.session, pcRpt);
-        checkEquals(() -> assertEquals(0, this.listener.listenerState.getDelegatedLspsCount().intValue()));
-    }
-
-    @Override
-    protected Open getLocalPref() {
-        return new OpenBuilder(super.getLocalPref()).setTlvs(new TlvsBuilder().addAugmentation(new Tlvs1Builder()
-            .setStateful(new StatefulBuilder()
-                .addAugmentation(new Stateful1Builder().setInitiation(TRUE).build())
-                .addAugmentation(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep
-                    .sync.optimizations.rev181109.Stateful1Builder().setTriggeredInitialSync(TRUE).build())
-                .build()).build()).build()).build();
-    }
-
-    @Override
-    protected Open getRemotePref() {
-        return getLocalPref();
-    }
-
-    private AddLspInput createAddLspInput() {
-        final ArgumentsBuilder argsBuilder = new ArgumentsBuilder();
-        final Ipv4CaseBuilder ipv4Builder = new Ipv4CaseBuilder();
-        ipv4Builder.setIpv4(new Ipv4Builder().setSourceIpv4Address(new Ipv4AddressNoZone(this.testAddress))
-                .setDestinationIpv4Address(new Ipv4AddressNoZone(this.testAddress)).build());
-        argsBuilder.setEndpointsObj(new EndpointsObjBuilder().setAddressFamily(ipv4Builder.build()).build());
-        argsBuilder.setEro(createEroWithIpPrefixes(Lists.newArrayList(this.eroIpPrefix)));
-        argsBuilder.addAugmentation(new Arguments2Builder().setLsp(new LspBuilder()
-                .setDelegate(TRUE).setAdministrative(TRUE).build()).build());
-        return new AddLspInputBuilder().setName(this.tunnelName).setArguments(argsBuilder.build())
-                .setNetworkTopologyRef(new NetworkTopologyRef(TOPO_IID)).setNode(this.nodeId).build();
-    }
-}