import org.opendaylight.controller.config.api.DependencyResolver;
import org.opendaylight.controller.config.api.ModuleIdentifier;
-import org.opendaylight.protocol.pcep.ietf.stateful07.StatefulActivator;
+import org.opendaylight.protocol.pcep.sync.optimizations.SyncOptimizationsActivator;
public class SyncOptimizationsPCEPParserModule extends AbstractSyncOptimizationsPCEPParserModule {
@Override
protected AutoCloseable createInstance() {
- return new StatefulActivator();
+ return new SyncOptimizationsActivator();
}
}
--- /dev/null
+/*
+ * Copyright (c) 2015 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.sync.optimizations;
+
+import static org.opendaylight.protocol.util.ByteBufWriteUtil.writeUnsignedLong;
+import com.google.common.base.Preconditions;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
+import java.math.BigInteger;
+import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
+import org.opendaylight.protocol.pcep.spi.TlvParser;
+import org.opendaylight.protocol.pcep.spi.TlvSerializer;
+import org.opendaylight.protocol.pcep.spi.TlvUtil;
+import org.opendaylight.protocol.util.ByteArray;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.lsp.db.version.tlv.LspDbVersion;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.lsp.db.version.tlv.LspDbVersionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
+
+public class LspDbVersionTlvParser implements TlvParser, TlvSerializer {
+
+ public static final int TYPE = 23;
+
+ @Override
+ public void serializeTlv(final Tlv tlv, final ByteBuf buffer) {
+ Preconditions.checkArgument(tlv instanceof LspDbVersion, "Tlv object is not instance of LspDbVersion.");
+ final ByteBuf body = Unpooled.buffer();
+ writeUnsignedLong(((LspDbVersion) tlv).getLspDbVersionValue(), body);
+ TlvUtil.formatTlv(TYPE, body, buffer);
+ }
+
+ @Override
+ public Tlv parseTlv(final ByteBuf buffer) throws PCEPDeserializerException {
+ if (buffer == null) {
+ return null;
+ }
+ return new LspDbVersionBuilder().setLspDbVersionValue(new BigInteger(ByteArray.readAllBytes(buffer))).build();
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2015 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.sync.optimizations;
+
+import com.google.common.base.Preconditions;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
+import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
+import org.opendaylight.protocol.pcep.spi.TlvParser;
+import org.opendaylight.protocol.pcep.spi.TlvSerializer;
+import org.opendaylight.protocol.pcep.spi.TlvUtil;
+import org.opendaylight.protocol.util.ByteArray;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.speaker.entity.id.tlv.SpeakerEntityId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.speaker.entity.id.tlv.SpeakerEntityIdBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
+
+public class SpeakerEntityIdTlvParser implements TlvParser, TlvSerializer {
+
+ public static final int TYPE = 24;
+
+ @Override
+ public void serializeTlv(final Tlv tlv, final ByteBuf buffer) {
+ Preconditions.checkArgument(tlv instanceof SpeakerEntityId, "Tlv object is not instance of SpeakerEntityId.");
+ final ByteBuf body = Unpooled.buffer();
+ body.writeBytes(((SpeakerEntityId) tlv).getSpeakerEntityIdValue());
+ TlvUtil.formatTlv(TYPE, body, buffer);
+ }
+
+ @Override
+ public Tlv parseTlv(final ByteBuf buffer) throws PCEPDeserializerException {
+ if (buffer == null) {
+ return null;
+ }
+ return new SpeakerEntityIdBuilder().setSpeakerEntityIdValue(ByteArray.readAllBytes(buffer)).build();
+ }
+
+}
import java.util.ArrayList;
import java.util.List;
import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderContext;
+import org.opendaylight.protocol.pcep.spi.TlvRegistry;
+import org.opendaylight.protocol.pcep.spi.VendorInformationTlvRegistry;
import org.opendaylight.protocol.pcep.spi.pojo.AbstractPCEPExtensionProviderActivator;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.lsp.db.version.tlv.LspDbVersion;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.speaker.entity.id.tlv.SpeakerEntityId;
+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.stateful.capability.tlv.Stateful;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.Open;
public class SyncOptimizationsActivator extends AbstractPCEPExtensionProviderActivator {
protected List<AutoCloseable> startImpl(final PCEPExtensionProviderContext context) {
final List<AutoCloseable> regs = new ArrayList<>();
+ final TlvRegistry tlvReg = context.getTlvHandlerRegistry();
+ final VendorInformationTlvRegistry viTlvReg = context.getVendorInformationTlvRegistry();
+ regs.add(context.registerObjectParser(SyncOptimizationsLspObjectParser.CLASS, SyncOptimizationsLspObjectParser.TYPE,
+ new SyncOptimizationsLspObjectParser(tlvReg, viTlvReg)));
+ regs.add(context.registerObjectSerializer(Lsp.class, new SyncOptimizationsLspObjectParser(tlvReg, viTlvReg)));
+
+ regs.add(context.registerObjectParser(SyncOptimizationsOpenObjectParser.CLASS, SyncOptimizationsOpenObjectParser.TYPE,
+ new SyncOptimizationsOpenObjectParser(tlvReg, viTlvReg)));
+ regs.add(context.registerObjectSerializer(Open.class, new SyncOptimizationsOpenObjectParser(tlvReg, viTlvReg)));
+
+ regs.add(context.registerTlvParser(LspDbVersionTlvParser.TYPE, new LspDbVersionTlvParser()));
+ regs.add(context.registerTlvSerializer(LspDbVersion.class, new LspDbVersionTlvParser()));
+
+ regs.add(context.registerTlvParser(SpeakerEntityIdTlvParser.TYPE, new SpeakerEntityIdTlvParser()));
+ regs.add(context.registerTlvSerializer(SpeakerEntityId.class, new SpeakerEntityIdTlvParser()));
+
regs.add(context.registerTlvParser(SyncOptimizationsCapabilityTlvParser.TYPE, new SyncOptimizationsCapabilityTlvParser()));
regs.add(context.registerTlvSerializer(Stateful.class, new SyncOptimizationsCapabilityTlvParser()));
--- /dev/null
+/*
+ * Copyright (c) 2015 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.sync.optimizations;
+
+import com.google.common.base.Preconditions;
+import io.netty.buffer.ByteBuf;
+import org.opendaylight.protocol.pcep.ietf.initiated00.CInitiated00LspObjectParser;
+import org.opendaylight.protocol.pcep.spi.TlvRegistry;
+import org.opendaylight.protocol.pcep.spi.VendorInformationTlvRegistry;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.LspDbVersionTlv;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.Tlvs1;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.Tlvs1Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.lsp.db.version.tlv.LspDbVersion;
+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.types.rev131005.Tlv;
+
+public class SyncOptimizationsLspObjectParser extends CInitiated00LspObjectParser {
+
+ public SyncOptimizationsLspObjectParser(final TlvRegistry tlvReg, final VendorInformationTlvRegistry viTlvReg) {
+ super(tlvReg, viTlvReg);
+ }
+
+ @Override
+ public void serializeTlvs(final Tlvs tlvs, final ByteBuf body) {
+ super.serializeTlvs(tlvs, body);
+ serializeAugmentation(tlvs.getAugmentation(Tlvs1.class), body);
+ }
+
+ private void serializeAugmentation(final Tlvs1 tlv, final ByteBuf body) {
+ if (tlv == null) {
+ return;
+ }
+ Preconditions.checkArgument(tlv instanceof LspDbVersionTlv, "TLV object is not instance of LspDbVersionTlv.");
+ final LspDbVersionTlv dbVersion = tlv;
+ serializeTlv(dbVersion.getLspDbVersion(), body);
+ }
+
+ @Override
+ public void addTlv(final TlvsBuilder tbuilder, final Tlv tlv) {
+ super.addTlv(tbuilder, tlv);
+ final Tlvs1Builder syncOptTlvsBuilder = new Tlvs1Builder();
+ if (tbuilder.getAugmentation(Tlvs1.class) != null) {
+ final Tlvs1 t = tbuilder.getAugmentation(Tlvs1.class);
+ if (t.getLspDbVersion() != null) {
+ syncOptTlvsBuilder.setLspDbVersion(t.getLspDbVersion());
+ }
+ }
+ if (tlv instanceof LspDbVersion) {
+ syncOptTlvsBuilder.setLspDbVersion((LspDbVersion) tlv);
+ }
+ tbuilder.addAugmentation(Tlvs1.class, syncOptTlvsBuilder.build());
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2015 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.sync.optimizations;
+
+import io.netty.buffer.ByteBuf;
+import org.opendaylight.protocol.pcep.ietf.stateful07.Stateful07OpenObjectParser;
+import org.opendaylight.protocol.pcep.spi.TlvRegistry;
+import org.opendaylight.protocol.pcep.spi.VendorInformationTlvRegistry;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.Tlvs3;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.Tlvs3Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.lsp.db.version.tlv.LspDbVersion;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.speaker.entity.id.tlv.SpeakerEntityId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.open.Tlvs;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.open.TlvsBuilder;
+
+public class SyncOptimizationsOpenObjectParser extends Stateful07OpenObjectParser {
+
+ public SyncOptimizationsOpenObjectParser(final TlvRegistry tlvReg, final VendorInformationTlvRegistry viTlvReg) {
+ super(tlvReg, viTlvReg);
+ }
+
+
+ @Override
+ public void addTlv(final TlvsBuilder tbuilder, final Tlv tlv) {
+ super.addTlv(tbuilder, tlv);
+ final Tlvs3Builder syncOptTlvsBuilder = new Tlvs3Builder();
+ if (tbuilder.getAugmentation(Tlvs3.class) != null) {
+ final Tlvs3 t = tbuilder.getAugmentation(Tlvs3.class);
+ if (t.getLspDbVersion() != null) {
+ syncOptTlvsBuilder.setLspDbVersion(t.getLspDbVersion());
+ }
+ if (t.getSpeakerEntityId() != null) {
+ syncOptTlvsBuilder.setSpeakerEntityId(t.getSpeakerEntityId());
+ }
+ }
+ if (tlv instanceof LspDbVersion) {
+ syncOptTlvsBuilder.setLspDbVersion((LspDbVersion) tlv);
+ }
+ if (tlv instanceof SpeakerEntityId) {
+ syncOptTlvsBuilder.setSpeakerEntityId((SpeakerEntityId) tlv);
+ }
+ tbuilder.addAugmentation(Tlvs3.class, syncOptTlvsBuilder.build());
+ }
+
+ @Override
+ public void serializeTlvs(final Tlvs tlvs, final ByteBuf body) {
+ if (tlvs == null) {
+ return;
+ }
+ super.serializeTlvs(tlvs, body);
+ if (tlvs.getAugmentation(Tlvs3.class) != null) {
+ final Tlvs3 syncOptTlvs = tlvs.getAugmentation(Tlvs3.class);
+ if (syncOptTlvs.getLspDbVersion() != null) {
+ serializeTlv(syncOptTlvs.getLspDbVersion(), body);
+ }
+ if (syncOptTlvs.getSpeakerEntityId() != null) {
+ serializeTlv(syncOptTlvs.getSpeakerEntityId(), body);
+ }
+ }
+ }
+}
}
}
+ grouping lsp-db-version-tlv {
+ container lsp-db-version {
+ uses pcep:tlv;
+ leaf lsp-db-version-value {
+ type uint64;
+ }
+ }
+ }
+
+ grouping speaker-entity-id-tlv {
+ container speaker-entity-id {
+ uses pcep:tlv;
+ leaf speaker-entity-id-value {
+ type binary;
+ }
+ }
+ }
+
augment "/msg:open/msg:open-message/msg:open/msg:tlvs/stateful:stateful" {
uses sync-optimizations-capability-tlv;
}
augment "/nt:network-topology/nt:topology/nt:node/topo:path-computation-client/topo:stateful-tlv/stateful:stateful" {
uses sync-optimizations-capability-tlv;
}
+
+ augment "/msg:open/msg:open-message/msg:open/msg:tlvs" {
+ uses lsp-db-version-tlv;
+ uses speaker-entity-id-tlv;
+ }
+
+ augment "/stateful:pcupd/stateful:pcupd-message/stateful:updates/stateful:lsp/stateful:tlvs" {
+ uses lsp-db-version-tlv;
+ }
+
+ augment "/stateful:pcrpt/stateful:pcrpt-message/stateful:reports/stateful:lsp/stateful:tlvs" {
+ uses lsp-db-version-tlv;
+ }
+
+ augment "/nt:network-topology/nt:topology/nt:node/topo:path-computation-client/topo:reported-lsp/topo:path/stateful:lsp/stateful:tlvs" {
+ uses lsp-db-version-tlv;
+ }
+
+ augment "/topo:add-lsp/topo:input/topo:arguments/stateful:lsp/stateful:tlvs" {
+ uses lsp-db-version-tlv;
+ }
+
+ augment "/topo:update-lsp/topo:input/topo:arguments/stateful:lsp/stateful:tlvs" {
+ uses lsp-db-version-tlv;
+ }
+
+ augment "/msg:pcerr/msg:pcerr-message/msg:error-type/msg:session-case/msg:session/msg:open/msg:tlvs" {
+ uses lsp-db-version-tlv;
+ uses speaker-entity-id-tlv;
+ }
}
\ No newline at end of file
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
-
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import java.io.IOException;
+import java.math.BigInteger;
import org.junit.Before;
import org.junit.Test;
-import org.opendaylight.protocol.pcep.ietf.initiated00.CInitiated00LspObjectParser;
import org.opendaylight.protocol.pcep.ietf.initiated00.CInitiated00SrpObjectParser;
import org.opendaylight.protocol.pcep.ietf.stateful07.Stateful07LspObjectParser;
import org.opendaylight.protocol.pcep.ietf.stateful07.Stateful07LspaObjectParser;
-import org.opendaylight.protocol.pcep.ietf.stateful07.Stateful07OpenObjectParser;
+import org.opendaylight.protocol.pcep.ietf.stateful07.StatefulActivator;
+import org.opendaylight.protocol.pcep.impl.Activator;
import org.opendaylight.protocol.pcep.spi.ObjectHeaderImpl;
import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
import org.opendaylight.protocol.pcep.spi.TlvRegistry;
import org.opendaylight.protocol.pcep.spi.VendorInformationTlvRegistry;
import org.opendaylight.protocol.pcep.spi.pojo.ServiceLoaderPCEPExtensionProviderContext;
+import org.opendaylight.protocol.pcep.spi.pojo.SimplePCEPExtensionProviderContext;
+import org.opendaylight.protocol.pcep.sync.optimizations.SyncOptimizationsActivator;
+import org.opendaylight.protocol.pcep.sync.optimizations.SyncOptimizationsLspObjectParser;
+import org.opendaylight.protocol.pcep.sync.optimizations.SyncOptimizationsOpenObjectParser;
import org.opendaylight.protocol.util.ByteArray;
import org.opendaylight.protocol.util.Ipv4Util;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.Stateful1;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.Stateful1Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.Tlvs3;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.Tlvs3Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.lsp.db.version.tlv.LspDbVersion;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.lsp.db.version.tlv.LspDbVersionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.speaker.entity.id.tlv.SpeakerEntityIdBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.Lsp1;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.Lsp1Builder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.Srp1;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.ProtocolVersion;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lspa.object.Lspa;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lspa.object.LspaBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.OpenBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.path.setup.type.tlv.PathSetupTypeBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.AttributeFilter;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.Ipv4ExtendedTunnelId;
public class PCEPObjectParserTest {
- private TlvRegistry tlvRegistry;
+ private SimplePCEPExtensionProviderContext ctx;
+ private Activator act;
+ private TlvRegistry tlvRegistry;
private VendorInformationTlvRegistry viTlvRegistry;
+ private static final byte[] DB_VERSION = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
+ private static final byte[] SPEAKER_ID = {0x01, 0x02, 0x03, 0x04};
+
@Before
public void setUp() throws Exception {
+ this.ctx = new SimplePCEPExtensionProviderContext();
+ this.act = new Activator();
+ this.act.start(this.ctx);
this.tlvRegistry = ServiceLoaderPCEPExtensionProviderContext.create().getTlvHandlerRegistry();
this.viTlvRegistry = ServiceLoaderPCEPExtensionProviderContext.getSingletonInstance().getVendorInformationTlvRegistry();
}
@Test
public void testOpenObjectWithTLV() throws PCEPDeserializerException, IOException {
- final Stateful07OpenObjectParser parser = new Stateful07OpenObjectParser(this.tlvRegistry, this.viTlvRegistry);
- final ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCEPOpenObject1.bin"));
+ try (SyncOptimizationsActivator a = new SyncOptimizationsActivator()) {
+ a.start(this.ctx);
- final OpenBuilder builder = new OpenBuilder();
- builder.setProcessingRule(false);
- builder.setIgnore(false);
- builder.setVersion(new ProtocolVersion((short) 1));
- builder.setKeepalive((short) 30);
- builder.setDeadTimer((short) 120);
- builder.setSessionId((short) 1);
+ final SyncOptimizationsOpenObjectParser parser = new SyncOptimizationsOpenObjectParser(this.ctx.getTlvHandlerRegistry(), this.ctx.getVendorInformationTlvRegistry());
+ final ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCEPOpenObject1.bin"));
- final Stateful tlv1 = new StatefulBuilder().setLspUpdateCapability(Boolean.TRUE).build();
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.OpenBuilder builder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.OpenBuilder();
+ builder.setProcessingRule(false);
+ builder.setIgnore(false);
+ builder.setVersion(new ProtocolVersion((short) 1));
+ builder.setKeepalive((short) 30);
+ builder.setDeadTimer((short) 120);
+ builder.setSessionId((short) 1);
- final Tlvs1Builder statBuilder = new Tlvs1Builder();
- statBuilder.setStateful(tlv1);
+ final Stateful tlv1 = new StatefulBuilder().setLspUpdateCapability(Boolean.TRUE).addAugmentation(Stateful1.class, new Stateful1Builder().build()).build();
- builder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.open.TlvsBuilder().addAugmentation(
- Tlvs1.class, statBuilder.build()).build());
+ final Tlvs1Builder statBuilder = new Tlvs1Builder();
+ statBuilder.setStateful(tlv1);
- assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(false, false), result.slice(4, result.readableBytes() - 4)));
- final ByteBuf buf = Unpooled.buffer();
- parser.serializeObject(builder.build(), buf);
- assertArrayEquals(result.array(),ByteArray.getAllBytes(buf));
+ final Tlvs3Builder syncOptBuilder = new Tlvs3Builder();
+ syncOptBuilder.setLspDbVersion(new LspDbVersionBuilder().setLspDbVersionValue(new BigInteger(DB_VERSION)).build());
+ syncOptBuilder.setSpeakerEntityId(new SpeakerEntityIdBuilder().setSpeakerEntityIdValue(SPEAKER_ID).build());
+
+ builder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.open.TlvsBuilder()
+ .addAugmentation(Tlvs1.class, statBuilder.build())
+ .addAugmentation(Tlvs3.class, syncOptBuilder.build())
+ .build());
+
+ assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(false, false), result.slice(4, result.readableBytes() - 4)));
+ final ByteBuf buf = Unpooled.buffer();
+ parser.serializeObject(builder.build(), buf);
+ assertArrayEquals(result.array(), ByteArray.getAllBytes(buf));
+ }
}
@Test
public void testLspObjectWithTLV() throws IOException, PCEPDeserializerException {
- final CInitiated00LspObjectParser parser = new CInitiated00LspObjectParser(this.tlvRegistry, this.viTlvRegistry);
- final ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCEPLspObject1WithTLV.bin"));
+ try (StatefulActivator a = new StatefulActivator();
+ SyncOptimizationsActivator a2 = new SyncOptimizationsActivator()) {
+ a.start(this.ctx);
+ a2.start(this.ctx);
- final LspBuilder builder = new LspBuilder();
- builder.setProcessingRule(true);
- builder.setIgnore(true);
- builder.setAdministrative(true);
- builder.setDelegate(false);
- builder.setRemove(true);
- builder.setSync(false);
- builder.addAugmentation(Lsp1.class, new Lsp1Builder().setCreate(false).build());
- builder.setOperational(OperationalStatus.GoingDown);
- builder.setPlspId(new PlspId(0x12345L));
+ final SyncOptimizationsLspObjectParser parser = new SyncOptimizationsLspObjectParser(this.ctx.getTlvHandlerRegistry(), this.ctx.getVendorInformationTlvRegistry());
+ final ByteBuf result = Unpooled.wrappedBuffer(ByteArray.fileToBytes("src/test/resources/PCEPLspObject1WithTLV.bin"));
- final LspErrorCode tlv1 = new LspErrorCodeBuilder().setErrorCode(627610883L).build();
- final SymbolicPathName tlv2 = new SymbolicPathNameBuilder().setPathName(
- new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.SymbolicPathName("Med".getBytes())).build();
- builder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.lsp.TlvsBuilder().setLspErrorCode(
- tlv1).setSymbolicPathName(tlv2).build());
- assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result.slice(4, result.readableBytes() - 4)));
- final ByteBuf buf = Unpooled.buffer();
- parser.serializeObject(builder.build(), buf);
- assertArrayEquals(result.array(),ByteArray.getAllBytes(buf));
+ final LspBuilder builder = new LspBuilder();
+ builder.setProcessingRule(true);
+ builder.setIgnore(true);
+ builder.setAdministrative(true);
+ builder.setDelegate(false);
+ builder.setRemove(true);
+ builder.setSync(false);
+ builder.addAugmentation(Lsp1.class, new Lsp1Builder().setCreate(false).build());
+ builder.setOperational(OperationalStatus.GoingDown);
+ builder.setPlspId(new PlspId(0x12345L));
+
+ final LspErrorCode tlv1 = new LspErrorCodeBuilder().setErrorCode(627610883L).build();
+ final SymbolicPathName tlv2 = new SymbolicPathNameBuilder().setPathName(
+ new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.SymbolicPathName("Med".getBytes())).build();
+ final LspDbVersion lspDbVersion = new LspDbVersionBuilder().setLspDbVersionValue(new BigInteger(DB_VERSION)).build();
+ builder.setTlvs(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.lsp.TlvsBuilder().setLspErrorCode(
+ tlv1).setSymbolicPathName(tlv2)
+ .addAugmentation(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.Tlvs1.class, new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev150714.Tlvs1Builder().setLspDbVersion(lspDbVersion).build())
+ .build());
+
+ assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, true), result.slice(4, result.readableBytes() - 4)));
+ final ByteBuf buf = Unpooled.buffer();
+ parser.serializeObject(builder.build(), buf);
+ assertArrayEquals(result.array(),ByteArray.getAllBytes(buf));
+ }
}
@Test