import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutionException;
-import org.opendaylight.protocol.framework.ReconnectImmediatelyStrategy;
+import org.opendaylight.protocol.framework.NeverReconnectStrategy;
+import org.opendaylight.protocol.framework.ReconnectStrategy;
+import org.opendaylight.protocol.framework.ReconnectStrategyFactory;
import org.opendaylight.protocol.framework.SessionListenerFactory;
import org.opendaylight.protocol.framework.SessionNegotiatorFactory;
+import org.opendaylight.protocol.framework.TimedReconnectStrategy;
import org.opendaylight.protocol.pcep.PCEPSessionListener;
import org.opendaylight.protocol.pcep.ietf.initiated00.CrabbeInitiatedActivator;
import org.opendaylight.protocol.pcep.ietf.stateful07.StatefulActivator;
short ka = DEFAULT_KEEP_ALIVE;
short dt = DEFAULT_DEAD_TIMER;
String password = null;
+ int reconnectTime = -1;
getRootLogger(lc).setLevel(ch.qos.logback.classic.Level.INFO);
int argIdx = 0;
dt = Short.valueOf(args[++argIdx]);
} else if (args[argIdx].equals("--password")) {
password = args[++argIdx];
+ } else if (args[argIdx].equals("--reconnect")) {
+ reconnectTime = Integer.valueOf(args[++argIdx]).intValue() * 1000;
} else {
LOG.warn("WARNING: Unrecognized argument: {}", args[argIdx]);
}
argIdx++;
}
- createPCCs(lsps, pcError, pccCount, localAddress, remoteAddress, ka, dt, password);
+ createPCCs(lsps, pcError, pccCount, localAddress, remoteAddress, ka, dt, password, reconnectTime);
}
public static void createPCCs(final int lspsPerPcc, final boolean pcerr, final int pccCount,
final InetSocketAddress localAddress, final List<InetSocketAddress> remoteAddress, final short keepalive, final short deadtimer,
- final String password) throws InterruptedException, ExecutionException {
+ final String password, final int reconnectTime) throws InterruptedException, ExecutionException {
startActivators();
InetAddress currentAddress = localAddress.getAddress();
final Open openMessage = getOpenMessage(keepalive, deadtimer);
getSessionNegotiatorFactory(openMessage));
for (int i = 0; i < pccCount; i++) {
createPCC(lspsPerPcc, pcerr, new InetSocketAddress(currentAddress, localAddress.getPort()),
- remoteAddress, openMessage, pccDispatcher, password);
+ remoteAddress, openMessage, pccDispatcher, password, reconnectTime);
currentAddress = InetAddresses.increment(currentAddress);
}
}
+ @SuppressWarnings("deprecation")
private static void createPCC(final int lspsPerPcc, final boolean pcerr, final InetSocketAddress localAddress,
final List<InetSocketAddress> remoteAddress, final Open openMessage, final PCCDispatcher pccDispatcher,
- final String password) throws InterruptedException, ExecutionException {
+ final String password, final int reconnectTime) throws InterruptedException, ExecutionException {
final SessionNegotiatorFactory<Message, PCEPSessionImpl, PCEPSessionListener> snf = getSessionNegotiatorFactory(openMessage);
for (final InetSocketAddress pceAddress : remoteAddress) {
- pccDispatcher.createClient(localAddress, pceAddress, new ReconnectImmediatelyStrategy(GlobalEventExecutor.INSTANCE, RECONNECT_STRATEGY_TIMEOUT), new SessionListenerFactory<PCEPSessionListener>() {
+ pccDispatcher.createClient(localAddress, pceAddress, reconnectTime == -1 ? getNeverReconnectStrategyFactory() : getTimedReconnectStrategyFactory(reconnectTime), new SessionListenerFactory<PCEPSessionListener>() {
@Override
public PCEPSessionListener getSessionListener() {
return new SimpleSessionListener(lspsPerPcc, pcerr, localAddress.getAddress());
}
}
+ @SuppressWarnings("deprecation")
private static SessionNegotiatorFactory<Message, PCEPSessionImpl, PCEPSessionListener> getSessionNegotiatorFactory(final Open openMessage) {
return new DefaultPCEPSessionNegotiatorFactory(openMessage, 0);
}
activator.start(ctx);
}
+ @SuppressWarnings("deprecation")
+ private static ReconnectStrategyFactory getNeverReconnectStrategyFactory() {
+ return new ReconnectStrategyFactory() {
+
+ @Override
+ public ReconnectStrategy createReconnectStrategy() {
+ return new NeverReconnectStrategy(GlobalEventExecutor.INSTANCE, RECONNECT_STRATEGY_TIMEOUT);
+ }
+ };
+ }
+
+ @SuppressWarnings("deprecation")
+ private static ReconnectStrategyFactory getTimedReconnectStrategyFactory(final int reconnectTime) {
+ return new ReconnectStrategyFactory() {
+
+ @Override
+ public ReconnectStrategy createReconnectStrategy() {
+ return new TimedReconnectStrategy(GlobalEventExecutor.INSTANCE, RECONNECT_STRATEGY_TIMEOUT, reconnectTime, 1.0, null, null, null);
+ }
+ };
+ }
+
}
return pathBuilder.build();
}
- public static Tlvs createLspTlvs(final long lspId, final boolean symbolicPathName, String tunnelEndpoint,
- String tunnelSender, String extendedTunnelAddress) {
+ public static Tlvs createLspTlvs(final long lspId, final boolean symbolicPathName, final String tunnelEndpoint,
+ final String tunnelSender, final String extendedTunnelAddress, final Optional<byte[]> symbolicName) {
final TlvsBuilder tlvs = new TlvsBuilder().setLspIdentifiers(new LspIdentifiersBuilder()
.setLspId(new LspId(lspId))
.setAddressFamily(
new Ipv4ExtendedTunnelId(extendedTunnelAddress))
.build()).build()).setTunnelId(new TunnelId((int) lspId)).build());
if (symbolicPathName) {
- final String pathName = "pcc_" + tunnelSender + "_tunnel_" + lspId;
+ final byte[] pathName;
+ if (symbolicName.isPresent()) {
+ pathName = symbolicName.get();
+ } else {
+ pathName = ("pcc_" + tunnelSender + "_tunnel_" + lspId).getBytes(Charsets.UTF_8);
+ }
tlvs.setSymbolicPathName(new SymbolicPathNameBuilder().setPathName(
- new SymbolicPathName(pathName.getBytes(Charsets.UTF_8))).build());
+ new SymbolicPathName(pathName)).build());
}
return tlvs.build();
}
import io.netty.bootstrap.Bootstrap;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
-import io.netty.util.concurrent.Future;
import io.netty.util.concurrent.Promise;
import java.net.InetSocketAddress;
-import org.opendaylight.protocol.framework.ReconnectStrategy;
+import org.opendaylight.protocol.framework.ReconnectStrategyFactory;
import org.opendaylight.protocol.framework.SessionListenerFactory;
import org.opendaylight.protocol.framework.SessionNegotiatorFactory;
import org.opendaylight.protocol.pcep.PCEPSessionListener;
}
}
- public synchronized Future<PCEPSessionImpl> createClient(final InetSocketAddress localAddress, final InetSocketAddress remoteAddress,
- final ReconnectStrategy strategy, final SessionListenerFactory<PCEPSessionListener> listenerFactory,
+ public synchronized void createClient(final InetSocketAddress localAddress, final InetSocketAddress remoteAddress,
+ final ReconnectStrategyFactory strategyFactory, final SessionListenerFactory<PCEPSessionListener> listenerFactory,
final SessionNegotiatorFactory<Message, PCEPSessionImpl, PCEPSessionListener> negotiatorFactory, final KeyMapping keys) {
this.localAddress = localAddress;
this.keys = keys;
- final Future<PCEPSessionImpl> futureClient = super.createClient(remoteAddress, strategy, new PipelineInitializer<PCEPSessionImpl>() {
+ super.createReconnectingClient(remoteAddress, strategyFactory, new PipelineInitializer<PCEPSessionImpl>() {
@Override
public void initializeChannel(final SocketChannel ch, final Promise<PCEPSessionImpl> promise) {
ch.pipeline().addLast(PCCDispatcher.this.factory.getDecoders());
});
this.localAddress = null;
this.keys = null;
- return futureClient;
}
private static final class DeafultKeyAccessFactory {
import com.google.common.collect.Lists;
import java.net.InetAddress;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.Random;
import java.util.concurrent.atomic.AtomicLong;
+import javax.annotation.concurrent.GuardedBy;
import org.opendaylight.protocol.pcep.PCEPSession;
import org.opendaylight.protocol.pcep.PCEPSessionListener;
import org.opendaylight.protocol.pcep.PCEPTerminationReason;
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.lsp.object.LspBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.lsp.Tlvs;
-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.pcupd.message.pcupd.message.Updates;
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;
private final boolean pcError;
private final String address;
private final AtomicLong plspIDs;
+ @GuardedBy("this")
+ private final Map<Long, byte[]> pathNames = new HashMap<>();
public SimpleSessionListener(final int lspsCount, final boolean pcError, final InetAddress address) {
Preconditions.checkArgument(lspsCount >= 0);
if (this.pcError) {
session.sendMessage(MsgBuilderUtil.createErrorMsg(getRandomError(), srpId));
} else {
- final Tlvs tlvs = createLspTlvs(updates.getLsp().getPlspId().getValue(), false,
- getDestinationAddress(updates.getPath().getEro().getSubobject()), this.address, this.address);
+ final Tlvs tlvs = createLspTlvs(updates.getLsp().getPlspId().getValue(), true,
+ getDestinationAddress(updates.getPath().getEro().getSubobject()), this.address, this.address,
+ Optional.fromNullable(pathNames.get(updates.getLsp().getPlspId().getValue())));
final Pcrpt pcRpt = createPcRtpMessage(new LspBuilder(updates.getLsp()).setTlvs(tlvs).build(),
Optional.fromNullable(createSrp(srpId)), updToRptPath(updates.getPath()));
session.sendMessage(pcRpt);
final Pcrpt pcRpt;
if (request.getSrp().getAugmentation(Srp1.class) != null && request.getSrp().getAugmentation(Srp1.class).isRemove()) {
pcRpt = createPcRtpMessage(request.getLsp(), Optional.fromNullable(request.getSrp()), reqToRptPath(request));
+ this.pathNames.remove(request.getLsp().getPlspId().getValue());
} else {
final LspBuilder lspBuilder = new LspBuilder(request.getLsp());
lspBuilder.setPlspId(new PlspId(this.plspIDs.incrementAndGet()));
lspBuilder.addAugmentation(Lsp1.class, new Lsp1Builder().setCreate(true).build());
- final Tlvs tlvs = createLspTlvs(lspBuilder.getPlspId().getValue(), false,
- ((Ipv4Case) request.getEndpointsObj().getAddressFamily()).getIpv4().getDestinationIpv4Address().getValue(), this.address, this.address);
- lspBuilder.setTlvs(new TlvsBuilder(tlvs).setSymbolicPathName(request.getLsp().getTlvs().getSymbolicPathName()).build());
+ final Tlvs tlvs = createLspTlvs(lspBuilder.getPlspId().getValue(), true,
+ ((Ipv4Case) request.getEndpointsObj().getAddressFamily()).getIpv4().getDestinationIpv4Address().getValue(), this.address, this.address,
+ Optional.of(request.getLsp().getTlvs().getSymbolicPathName().getPathName().getValue()));
+ lspBuilder.setTlvs(tlvs);
pcRpt = createPcRtpMessage(lspBuilder.build(), Optional.fromNullable(request.getSrp()), reqToRptPath(request));
+ this.pathNames.put(lspBuilder.getPlspId().getValue(), tlvs.getSymbolicPathName().getPathName().getValue());
}
session.sendMessage(pcRpt);
}
LOG.debug("Session up.");
for (int i = 1; i <= this.lspsCount; i++) {
final Tlvs tlvs = MsgBuilderUtil.createLspTlvs(i, true, ENDPOINT_ADDRESS, this.address,
- this.address);
+ this.address, Optional.<byte[]>absent());
session.sendMessage(createPcRtpMessage(
createLsp(i, true, Optional.<Tlvs> fromNullable(tlvs)), Optional.<Srp> absent(),
createPath(Lists.newArrayList(DEFAULT_ENDPOINT_HOP))));
regs.add(context.registerTlvSerializer(SrPceCapability.class, new SrPceCapabilityTlvParser()));
/* Subobjects */
- regs.add(context.registerEROSubobjectParser(SrEroSubobjectParser.TYPE, new SrEroSubobjectParser()));
- regs.add(context.registerEROSubobjectSerializer(SrEroType.class, new SrEroSubobjectParser()));
- regs.add(context.registerRROSubobjectParser(SrRroSubobjectParser.TYPE, new SrRroSubobjectParser()));
- regs.add(context.registerRROSubobjectSerializer(SrRroType.class, new SrRroSubobjectParser()));
+ final SrEroSubobjectParser srEroSubobjectParser = new SrEroSubobjectParser();
+ regs.add(context.registerEROSubobjectParser(SrEroSubobjectParser.TYPE, srEroSubobjectParser));
+ regs.add(context.registerEROSubobjectSerializer(
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev150112.network.topology.topology.node.path.computation.client.reported.lsp.path.ero.subobject.subobject.type.SrEroType.class,
+ srEroSubobjectParser));
+ regs.add(context.registerEROSubobjectSerializer(
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev150112.pcinitiate.pcinitiate.message.requests.ero.subobject.subobject.type.SrEroType.class,
+ srEroSubobjectParser));
+ regs.add(context.registerEROSubobjectSerializer(
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev150112.pcrep.pcrep.message.replies.result.success._case.success.paths.ero.subobject.subobject.type.SrEroType.class,
+ srEroSubobjectParser));
+ regs.add(context.registerEROSubobjectSerializer(
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev150112.pcrpt.pcrpt.message.reports.path.ero.subobject.subobject.type.SrEroType.class,
+ srEroSubobjectParser));
+ regs.add(context.registerEROSubobjectSerializer(
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev150112.pcupd.pcupd.message.updates.path.ero.subobject.subobject.type.SrEroType.class,
+ srEroSubobjectParser));
+ regs.add(context.registerEROSubobjectSerializer(
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev150112.update.lsp.input.arguments.ero.subobject.subobject.type.SrEroType.class,
+ srEroSubobjectParser));
+ regs.add(context.registerEROSubobjectSerializer(SrEroType.class, srEroSubobjectParser));
+
+ final SrRroSubobjectParser srRroSubobjectParser = new SrRroSubobjectParser();
+ regs.add(context.registerRROSubobjectParser(SrRroSubobjectParser.TYPE, srRroSubobjectParser));
+ regs.add(context.registerRROSubobjectSerializer(
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev150112.network.topology.topology.node.path.computation.client.reported.lsp.path.rro.subobject.subobject.type.SrRroType.class,
+ srRroSubobjectParser));
+ regs.add(context.registerRROSubobjectSerializer(
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev150112.pcinitiate.pcinitiate.message.requests.rro.subobject.subobject.type.SrRroType.class,
+ srRroSubobjectParser));
+ regs.add(context.registerRROSubobjectSerializer(
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev150112.pcrep.pcrep.message.replies.result.failure._case.rro.subobject.subobject.type.SrRroType.class,
+ srRroSubobjectParser));
+ regs.add(context.registerRROSubobjectSerializer(
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev150112.pcreq.pcreq.message.requests.segment.computation.p2p.reported.route.rro.subobject.subobject.type.SrRroType.class,
+ srRroSubobjectParser));
+ regs.add(context.registerRROSubobjectSerializer(
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev150112.pcrpt.pcrpt.message.reports.path.rro.subobject.subobject.type.SrRroType.class,
+ srRroSubobjectParser));
+ regs.add(context.registerRROSubobjectSerializer(
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev150112.pcupd.pcupd.message.updates.path.rro.subobject.subobject.type.SrRroType.class,
+ srRroSubobjectParser));
+ regs.add(context.registerRROSubobjectSerializer(
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev150112.update.lsp.input.arguments.rro.subobject.subobject.type.SrRroType.class, srRroSubobjectParser));
+ regs.add(context.registerRROSubobjectSerializer(
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev150112.pcrep.pcrep.message.replies.result.success._case.success.paths.rro.subobject.subobject.type.SrRroType.class,
+ srRroSubobjectParser));
+ regs.add(context.registerRROSubobjectSerializer(
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev150112.pcreq.pcreq.message.requests.segment.computation.p2p.rro.subobject.subobject.type.SrRroType.class,
+ srRroSubobjectParser));
+ regs.add(context.registerRROSubobjectSerializer(SrRroType.class, srRroSubobjectParser));
/* Objects */
final TlvRegistry tlvReg = context.getTlvHandlerRegistry();
assertArrayEquals(srEroObjectBytes, ByteArray.getAllBytes(buffer));
}
+ @Test
+ public void testSrEroSerializerWithUpdateLspAugmentation() throws PCEPDeserializerException {
+ final PCEPExplicitRouteObjectParser parser = new PCEPExplicitRouteObjectParser(this.ctx.getEROSubobjectHandlerRegistry());
+
+ final EroBuilder builder = new EroBuilder();
+ builder.setProcessingRule(false);
+ builder.setIgnore(false);
+
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev150112.update.lsp.input.arguments.ero.subobject.subobject.type.SrEroTypeBuilder srEroSubBuilder =
+ new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev150112.update.lsp.input.arguments.ero.subobject.subobject.type.SrEroTypeBuilder();
+ srEroSubBuilder.setCFlag(false);
+ srEroSubBuilder.setMFlag(false);
+ srEroSubBuilder.setSidType(SidType.Ipv4NodeId);
+ srEroSubBuilder.setSid(123456L);
+ srEroSubBuilder.setNai(new IpNodeIdBuilder().setIpAddress(new IpAddress(new Ipv4Address("74.125.43.99"))).build());
+ final SubobjectBuilder subobjBuilder = new SubobjectBuilder().setSubobjectType(srEroSubBuilder.build()).setLoose(false);
+ builder.setSubobject(Lists.newArrayList(subobjBuilder.build()));
+
+ final ByteBuf buffer = Unpooled.buffer();
+ parser.serializeObject(builder.build(), buffer);
+ assertArrayEquals(srEroObjectBytes, ByteArray.getAllBytes(buffer));
+ }
+
}
final Requests req = pcinitiate.getPcinitiateMessage().getRequests().get(0);
final long srpId = req.getSrp().getOperationId().getValue();
final Tlvs tlvs = createLspTlvs(req.getLsp().getPlspId().getValue(), true,
- TEST_ADDRESS, TEST_ADDRESS, TEST_ADDRESS);
+ TEST_ADDRESS, TEST_ADDRESS, TEST_ADDRESS, Optional.<byte[]>absent());
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,
- NEW_DESTINATION_ADDRESS, TEST_ADDRESS, TEST_ADDRESS);
+ NEW_DESTINATION_ADDRESS, TEST_ADDRESS, TEST_ADDRESS, Optional.<byte[]>absent());
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,
- TEST_ADDRESS, TEST_ADDRESS, TEST_ADDRESS);
+ TEST_ADDRESS, TEST_ADDRESS, TEST_ADDRESS, Optional.<byte[]>absent());
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 Requests req = pcinitiate.getPcinitiateMessage().getRequests().get(0);
final long srpId = req.getSrp().getOperationId().getValue();
final Tlvs tlvs = createLspTlvs(req.getLsp().getPlspId().getValue(), true,
- TEST_ADDRESS, TEST_ADDRESS, TEST_ADDRESS);
+ TEST_ADDRESS, TEST_ADDRESS, TEST_ADDRESS, Optional.<byte[]>absent());
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);
assertEquals(1, getTopology().get().getNode().size());
final Requests req = pcinitiate.getPcinitiateMessage().getRequests().get(0);
final long srpId = req.getSrp().getOperationId().getValue();
final Tlvs tlvs = createLspTlvs(req.getLsp().getPlspId().getValue(), true,
- TEST_ADDRESS, TEST_ADDRESS, TEST_ADDRESS);
+ TEST_ADDRESS, TEST_ADDRESS, TEST_ADDRESS, Optional.<byte[]>absent());
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()));
this.listener.onMessage(this.session, pcRpt);