2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.protocol.pcep.impl;
10 import static java.util.Arrays.asList;
11 import static org.junit.Assert.assertEquals;
13 import java.io.IOException;
14 import java.util.ArrayList;
15 import java.util.List;
17 import org.junit.Test;
18 import org.opendaylight.protocol.concepts.ASNumber;
19 import org.opendaylight.protocol.concepts.Bandwidth;
20 import org.opendaylight.protocol.concepts.IGPMetric;
21 import org.opendaylight.protocol.concepts.IPv4;
22 import org.opendaylight.protocol.concepts.IPv4Address;
23 import org.opendaylight.protocol.concepts.TEMetric;
24 import org.opendaylight.protocol.framework.DeserializerException;
25 import org.opendaylight.protocol.framework.DocumentedException;
26 import org.opendaylight.protocol.pcep.PCEPDeserializerException;
27 import org.opendaylight.protocol.pcep.PCEPDocumentedException;
28 import org.opendaylight.protocol.pcep.PCEPErrors;
29 import org.opendaylight.protocol.pcep.PCEPMessage;
30 import org.opendaylight.protocol.pcep.PCEPOFCodes;
31 import org.opendaylight.protocol.pcep.PCEPObject;
32 import org.opendaylight.protocol.pcep.PCEPTlv;
33 import org.opendaylight.protocol.pcep.concepts.LSPSymbolicName;
34 import org.opendaylight.protocol.pcep.concepts.UnnumberedInterfaceIdentifier;
35 import org.opendaylight.protocol.pcep.impl.message.PCEPRawMessage;
36 import org.opendaylight.protocol.pcep.impl.object.UnknownObject;
37 import org.opendaylight.protocol.pcep.message.PCCreateMessage;
38 import org.opendaylight.protocol.pcep.message.PCEPCloseMessage;
39 import org.opendaylight.protocol.pcep.message.PCEPErrorMessage;
40 import org.opendaylight.protocol.pcep.message.PCEPKeepAliveMessage;
41 import org.opendaylight.protocol.pcep.message.PCEPNotificationMessage;
42 import org.opendaylight.protocol.pcep.message.PCEPOpenMessage;
43 import org.opendaylight.protocol.pcep.message.PCEPReplyMessage;
44 import org.opendaylight.protocol.pcep.message.PCEPReportMessage;
45 import org.opendaylight.protocol.pcep.message.PCEPRequestMessage;
46 import org.opendaylight.protocol.pcep.message.PCEPUpdateRequestMessage;
47 import org.opendaylight.protocol.pcep.message.PCEPXRAddTunnelMessage;
48 import org.opendaylight.protocol.pcep.message.PCEPXRDeleteTunnelMessage;
49 import org.opendaylight.protocol.pcep.object.CompositeErrorObject;
50 import org.opendaylight.protocol.pcep.object.CompositeInstantiationObject;
51 import org.opendaylight.protocol.pcep.object.CompositeNotifyObject;
52 import org.opendaylight.protocol.pcep.object.CompositePathObject;
53 import org.opendaylight.protocol.pcep.object.CompositeReplySvecObject;
54 import org.opendaylight.protocol.pcep.object.CompositeRequestObject;
55 import org.opendaylight.protocol.pcep.object.CompositeRequestSvecObject;
56 import org.opendaylight.protocol.pcep.object.CompositeResponseObject;
57 import org.opendaylight.protocol.pcep.object.CompositeRptPathObject;
58 import org.opendaylight.protocol.pcep.object.CompositeStateReportObject;
59 import org.opendaylight.protocol.pcep.object.CompositeUpdPathObject;
60 import org.opendaylight.protocol.pcep.object.CompositeUpdateRequestObject;
61 import org.opendaylight.protocol.pcep.object.PCEPCloseObject;
62 import org.opendaylight.protocol.pcep.object.PCEPCloseObject.Reason;
63 import org.opendaylight.protocol.pcep.object.PCEPEndPointsObject;
64 import org.opendaylight.protocol.pcep.object.PCEPErrorObject;
65 import org.opendaylight.protocol.pcep.object.PCEPExcludeRouteObject;
66 import org.opendaylight.protocol.pcep.object.PCEPExistingPathBandwidthObject;
67 import org.opendaylight.protocol.pcep.object.PCEPExplicitRouteObject;
68 import org.opendaylight.protocol.pcep.object.PCEPGlobalConstraintsObject;
69 import org.opendaylight.protocol.pcep.object.PCEPIncludeRouteObject;
70 import org.opendaylight.protocol.pcep.object.PCEPLoadBalancingObject;
71 import org.opendaylight.protocol.pcep.object.PCEPLspObject;
72 import org.opendaylight.protocol.pcep.object.PCEPLspaObject;
73 import org.opendaylight.protocol.pcep.object.PCEPMetricObject;
74 import org.opendaylight.protocol.pcep.object.PCEPNoPathObject;
75 import org.opendaylight.protocol.pcep.object.PCEPNotificationObject;
76 import org.opendaylight.protocol.pcep.object.PCEPObjectiveFunctionObject;
77 import org.opendaylight.protocol.pcep.object.PCEPOpenObject;
78 import org.opendaylight.protocol.pcep.object.PCEPReportedRouteObject;
79 import org.opendaylight.protocol.pcep.object.PCEPRequestParameterObject;
80 import org.opendaylight.protocol.pcep.object.PCEPRequestedPathBandwidthObject;
81 import org.opendaylight.protocol.pcep.object.PCEPSvecObject;
82 import org.opendaylight.protocol.pcep.subobject.EROAsNumberSubobject;
83 import org.opendaylight.protocol.pcep.subobject.EROUnnumberedInterfaceSubobject;
84 import org.opendaylight.protocol.pcep.subobject.ExcludeRouteSubobject;
85 import org.opendaylight.protocol.pcep.subobject.ExplicitRouteSubobject;
86 import org.opendaylight.protocol.pcep.subobject.RROUnnumberedInterfaceSubobject;
87 import org.opendaylight.protocol.pcep.subobject.ReportedRouteSubobject;
88 import org.opendaylight.protocol.pcep.subobject.XROAsNumberSubobject;
89 import org.opendaylight.protocol.pcep.tlv.LSPStateDBVersionTlv;
90 import org.opendaylight.protocol.pcep.tlv.LSPSymbolicNameTlv;
91 import org.opendaylight.protocol.pcep.tlv.PCEStatefulCapabilityTlv;
92 import org.opendaylight.protocol.util.ByteArray;
94 public class PCEPValidatorTest {
96 private static final PCEPLspaObject lspa = new PCEPLspaObject(0L, 0L, 0L, (short) 0, (short) 0, false, false, false, false);
98 private final List<ExplicitRouteSubobject> eroSubobjects = asList(
99 new EROAsNumberSubobject(new ASNumber(0xFFFFL), false),
100 new EROUnnumberedInterfaceSubobject(new IPv4Address(new byte[] { (byte) 0x00, (byte) 0x11, (byte) 0x22, (byte) 0x33 }), new UnnumberedInterfaceIdentifier(0x00FF00FF), false));
102 private final List<ReportedRouteSubobject> rroSubobjects = asList((ReportedRouteSubobject) new RROUnnumberedInterfaceSubobject(new IPv4Address(new byte[] {
103 (byte) 0x00, (byte) 0x11, (byte) 0x22, (byte) 0x33 }), new UnnumberedInterfaceIdentifier(0x00FF00FF)));
105 private final List<Long> requestIds = asList(0x000001L);
107 private final IPv4Address ip4addr = new IPv4Address(new byte[] { (byte) 0xFF, 0x00, 0x00, 0x01 });
109 private final PCEPSvecObject svecObj = new PCEPSvecObject(true, true, true, false, false, PCEPValidatorTest.this.requestIds, true);
111 private final PCEPRequestParameterObject requestParameter = new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 3, 1, true, false);
113 // private final PCEPEndPointsObject<IPv4Address> endPoints = new
114 // PCEPEndPointsObject<IPv4Address>(this.ip4addr, this.ip4addr);
116 private final PCEPEndPointsObject<IPv4Address> endPoints = new PCEPEndPointsObject<IPv4Address>(this.ip4addr, this.ip4addr);
118 private static final RawPCEPMessageFactory msgFactory = new RawPCEPMessageFactory();
120 // private final PCEPClassTypeObject classType = new
121 // PCEPClassTypeObject((short) 7);
122 // private final PCEPClassTypeObjectProvider classTypeProvider = new
123 // PCEPClassTypeObjectProvider((short) 7, true);
125 private static List<PCEPMessage> deserMsg(final String srcFile) throws IOException, DeserializerException, DocumentedException,
126 PCEPDeserializerException {
127 final byte[] bytesFromFile = ByteArray.fileToBytes(srcFile);
128 final PCEPRawMessage rawMessage = (PCEPRawMessage) msgFactory.parse(bytesFromFile).get(0);
130 return PCEPMessageValidator.getValidator(rawMessage.getMsgType()).validate(rawMessage.getAllObjects());
134 public void testOpenMessageValidationFromBin() throws IOException, DeserializerException, DocumentedException,
135 PCEPDeserializerException {
137 deserMsg("src/test/resources/PCEPOpenMessage1.bin"),
138 asList(new PCEPOpenMessage(new PCEPOpenObject(30, 120, 1, asList(new PCEStatefulCapabilityTlv(false, true, true),
139 new LSPStateDBVersionTlv(0x80))))));
141 assertEquals(deserMsg("src/test/resources/Open.1.bin"), asList(new PCEPOpenMessage(new PCEPOpenObject(1, 4, 1))));
144 deserMsg("src/test/resources/Open.3.bin"),
145 asList(new PCEPOpenMessage(new PCEPOpenObject(1, 4, 1, asList(new PCEStatefulCapabilityTlv(false, true, true),
146 new LSPStateDBVersionTlv(53))))));
150 public void testKeepAliveMessageValidationFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException,
151 DeserializerException, DocumentedException {
152 assertEquals(deserMsg("src/test/resources/PCEPKeepAliveMessage1.bin"), asList(new PCEPKeepAliveMessage()));
153 assertEquals(deserMsg("src/test/resources/Keepalive.1.bin"), asList(new PCEPKeepAliveMessage()));
157 public void testCloseMsg() throws PCEPDeserializerException, IOException, PCEPDocumentedException, DeserializerException,
158 DocumentedException {
159 assertEquals(deserMsg("src/test/resources/PCEPCloseMessage1.bin"),
160 asList(new PCEPCloseMessage(new PCEPCloseObject(Reason.TOO_MANY_UNKNOWN_MSG))));
161 assertEquals(deserMsg("src/test/resources/Close.1.bin"), asList(new PCEPCloseMessage(new PCEPCloseObject(Reason.UNKNOWN))));
165 public void testRequestMessageValidationFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException,
166 DeserializerException, DocumentedException {
167 List<CompositeRequestObject> requests = new ArrayList<CompositeRequestObject>();
168 final byte[] ipAdress = { (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF };
169 requests.add(new CompositeRequestObject(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 5, 0xDEADBEEFL, true, false), new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress), new IPv4Address(ipAdress))));
170 PCEPRequestMessage specMessage = new PCEPRequestMessage(requests);
171 List<PCEPMessage> deserMsgs = deserMsg("src/test/resources/PCEPRequestMessage1.bin");
172 final List<PCEPMessage> specMessages = new ArrayList<PCEPMessage>();
173 specMessages.add(specMessage);
175 assertEquals(deserMsgs, specMessages);
177 requests = new ArrayList<CompositeRequestObject>();
178 final byte[] ipAdress2 = { (byte) 0x7F, (byte) 0x00, (byte) 0x00, (byte) 0x01 };
179 requests.add(new CompositeRequestObject(this.requestParameter, new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress2), new IPv4Address(ipAdress2))));
180 specMessage = new PCEPRequestMessage(requests);
181 deserMsgs = deserMsg("src/test/resources/PCReq.1.bin");
182 specMessages.clear();
183 specMessages.add(specMessage);
184 assertEquals(deserMsgs, specMessages);
186 requests = new ArrayList<CompositeRequestObject>();
187 requests.add(new CompositeRequestObject(this.requestParameter, new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress2), new IPv4Address(ipAdress2)), null, null, null, null, null, null, null, null, new PCEPLoadBalancingObject(3, new Bandwidth(1024.75f), false)));
188 specMessage = new PCEPRequestMessage(requests);
189 deserMsgs = deserMsg("src/test/resources/PCReq.2.bin");
190 specMessages.clear();
191 specMessages.add(specMessage);
192 assertEquals(deserMsgs, specMessages);
194 requests = new ArrayList<CompositeRequestObject>();
195 requests.add(new CompositeRequestObject(this.requestParameter, new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress2), new IPv4Address(ipAdress2)), null, new PCEPLspObject(1, false, false, true, false), PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(1000), false, false), new ArrayList<PCEPMetricObject>() {
196 private static final long serialVersionUID = 1L;
199 this.add(new PCEPMetricObject(true, true, new IGPMetric(53L), false, false));
201 }, new PCEPReportedRouteObject(this.rroSubobjects, false), new PCEPExistingPathBandwidthObject(new Bandwidth(5353), false, false), new PCEPIncludeRouteObject(this.eroSubobjects, false, false), new PCEPLoadBalancingObject(5, new Bandwidth(3f), false)));
203 List<CompositeRequestSvecObject> svecList = new ArrayList<CompositeRequestSvecObject>();
204 svecList.add(new CompositeRequestSvecObject(new PCEPSvecObject(true, false, false, false, false, this.requestIds, false)));
206 specMessage = new PCEPRequestMessage(svecList, requests);
207 deserMsgs = deserMsg("src/test/resources/PCReq.3.bin");
208 specMessages.clear();
209 specMessages.add(specMessage);
210 assertEquals(deserMsgs, specMessages);
212 specMessages.clear();
213 requests = new ArrayList<CompositeRequestObject>();
214 requests.add(new CompositeRequestObject(this.requestParameter, new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress2), new IPv4Address(ipAdress2)), null, null, null, null, null, null, null, null, null));
215 specMessages.add(new PCEPRequestMessage(requests));
217 final byte[] ipAdress3 = { (byte) 0x7F, (byte) 0x00, (byte) 0x30, (byte) 0x01 };
218 requests = new ArrayList<CompositeRequestObject>();
219 requests.add(new CompositeRequestObject(new PCEPRequestParameterObject(false, false, false, false, false, false, false, false, (short) 4, 1, true, false), new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress3), new IPv4Address(ipAdress2)), null, null, null, null, null, null, null, null, null));
220 specMessages.add(new PCEPRequestMessage(requests));
222 final byte[] ipAdress4 = { (byte) 0x7F, (byte) 0x30, (byte) 0x00, (byte) 0x01 };
223 requests = new ArrayList<CompositeRequestObject>();
224 requests.add(new CompositeRequestObject(this.requestParameter, new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress2), new IPv4Address(ipAdress4)), null, null, null, null, null, null, null, null, null));
225 specMessages.add(new PCEPRequestMessage(requests));
227 final byte[] ipAdress5 = { (byte) 0x7F, (byte) 0xd0, (byte) 0x00, (byte) 0x01 };
228 requests = new ArrayList<CompositeRequestObject>();
229 requests.add(new CompositeRequestObject(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 1, true, false), new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress5), new IPv4Address(ipAdress5)), null, null, null, null, null, null, null, null, null));
231 specMessages.add(new PCEPRequestMessage(requests));
232 deserMsgs = deserMsg("src/test/resources/PCReq.4.bin");
233 assertEquals(deserMsgs, specMessages);
235 specMessages.clear();
236 svecList = new ArrayList<CompositeRequestSvecObject>();
237 svecList.add(new CompositeRequestSvecObject(new PCEPSvecObject(true, false, false, false, false, this.requestIds, false)));
238 svecList.add(new CompositeRequestSvecObject(new PCEPSvecObject(false, true, true, false, false, this.requestIds, false), new PCEPObjectiveFunctionObject(PCEPOFCodes.MCC, true, false), new PCEPGlobalConstraintsObject((short) 0x55, (short) 1, (short) 100, (short) 0x26, true, false), new PCEPExcludeRouteObject(new ArrayList<ExcludeRouteSubobject>() {
239 private static final long serialVersionUID = 1L;
242 this.add(new XROAsNumberSubobject(new ASNumber(0x12), true));
244 }, true, true, false), new ArrayList<PCEPMetricObject>() {
245 private static final long serialVersionUID = 1L;
248 this.add(new PCEPMetricObject(true, true, new TEMetric(123456L), true, false));
252 requests = new ArrayList<CompositeRequestObject>();
253 requests.add(new CompositeRequestObject(this.requestParameter, new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress2), new IPv4Address(ipAdress2)), null, null, PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(1000), false, false), new ArrayList<PCEPMetricObject>() {
254 private static final long serialVersionUID = 1L;
257 this.add(new PCEPMetricObject(true, true, new IGPMetric(53L), false, false));
258 this.add(new PCEPMetricObject(true, true, new IGPMetric(5335L), false, false));
259 this.add(new PCEPMetricObject(true, true, new IGPMetric(128256), false, false));
261 }, new PCEPReportedRouteObject(this.rroSubobjects, false), new PCEPExistingPathBandwidthObject(new Bandwidth(5353), false, false), new PCEPIncludeRouteObject(this.eroSubobjects, false, false), new PCEPLoadBalancingObject(5, new Bandwidth(3f), false)));
263 final byte[] ipAdress6 = { (byte) 0x7F, (byte) 0xF0, (byte) 0x00, (byte) 0x01 };
264 specMessages.add(new PCEPRequestMessage(svecList, requests));
266 requests = new ArrayList<CompositeRequestObject>();
267 requests.add(new CompositeRequestObject(this.requestParameter, new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress6), new IPv4Address(ipAdress6)), null, null, PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(1000), false, false), new ArrayList<PCEPMetricObject>() {
268 private static final long serialVersionUID = 1L;
271 this.add(new PCEPMetricObject(true, true, new IGPMetric(53L), false, false));
273 }, new PCEPReportedRouteObject(this.rroSubobjects, false), new PCEPExistingPathBandwidthObject(new Bandwidth(5353), false, false), new PCEPIncludeRouteObject(this.eroSubobjects, false, false), new PCEPLoadBalancingObject(5, new Bandwidth(3f), false)));
274 deserMsgs = deserMsg("src/test/resources/PCReq.5.bin");
275 specMessages.add(new PCEPRequestMessage(svecList, requests));
276 assertEquals(deserMsgs, specMessages);
278 // FIXME: need construct with invalid processed parameter
279 // assertEquals(deserMsg("src/test/resources/PCReq.6.invalid.bin"),
281 // new PCEPErrorMessage(new CompositeErrorObject(new
282 // PCEPRequestParameterObject(true, false, false, false, false, false,
283 // false, false, (short) 3,
284 // 1L, false, false), new PCEPErrorObject(PCEPErrors.P_FLAG_NOT_SET))),
285 // new PCEPRequestMessage(asList(new
286 // CompositeRequestObject(this.requestParameter, new
287 // PCEPEndPointsObject<IPv4Address>(IPv4Address
288 // .getNetworkAddressFactory().getNetworkAddressForBytes(new byte[] {
289 // 127, 0, 0, 1 }), IPv4Address.getNetworkAddressFactory()
290 // .getNetworkAddressForBytes(new byte[] { 127, 0, 0, 1 })), null, null,
291 // null, null, null, null, null, null, new PCEPLoadBalancingObject(
292 // 3, new Bandwidth(1024.75), false))))));
297 public void testRequestMessageValidationFromRawMsg() throws PCEPDeserializerException {
298 List<PCEPObject> objs = new ArrayList<PCEPObject>();
299 List<PCEPMessage> msgs;
300 PCEPRequestParameterObject tmpRP;
302 // test unrecognized object in svec list
303 objs.add(this.svecObj);
304 objs.add(new UnknownObject(true, false, PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
305 objs.add(new PCEPSvecObject(true, true, true, false, false, PCEPValidatorTest.this.requestIds, true));
307 msgs = PCEPMessageValidator.getValidator(PCEPMessageType.REQUEST).validate(objs);
309 assertEquals(msgs.get(0), new PCEPErrorMessage(new ArrayList<PCEPErrorObject>() {
310 private static final long serialVersionUID = 1L;
313 this.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
317 // test with request p flag not set and ignoracion of more than one
318 // end-points objects
319 objs = new ArrayList<PCEPObject>();
320 objs.add(this.svecObj);
321 objs.add(this.svecObj);
322 tmpRP = new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 3, 1, false, false);
324 objs.add(this.endPoints);
326 objs.add(this.requestParameter);
327 objs.add(this.endPoints);
328 objs.add(this.endPoints);
329 // FIXME:mv use object constructor with set processed flag
330 // objs.add(this.classTypeProvider);
331 // objs.add(this.requestParameter);
332 // objs.add(this.endPointsProvider);
333 // objs.add(new PCEPClassTypeObjectProvider((short) 7, false));
335 msgs = PCEPMessageValidator.getValidator(PCEPMessageType.REQUEST).validate(objs);
336 // FIXME:mv use object constructor with set processed flag
337 // assertEquals(msgs.get(0), new PCEPErrorMessage(new
338 // CompositeErrorObject(tmpRP, new
339 // PCEPErrorObject(PCEPErrors.P_FLAG_NOT_SET))));
342 // new PCEPRequestMessage(asList(new
343 // CompositeRequestSvecObject(this.svecObj), new
344 // CompositeRequestSvecObject(this.svecObj)), Util
345 // .asList(new CompositeRequestObject(this.requestParameter,
346 // this.endPoints, this.classType, null, null, null, null, null, null,
349 // assertEquals(msgs.get(2), new PCEPErrorMessage(new
350 // CompositeErrorObject(tmpRP, new
351 // PCEPErrorObject(PCEPErrors.P_FLAG_NOT_SET))));
355 public void testReplyMessageValidatorFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException,
356 DeserializerException, DocumentedException {
358 List<PCEPReplyMessage> specMessages = new ArrayList<PCEPReplyMessage>();
359 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 5, 0xDEADBEEFL, true, true)))));
360 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, true, true, false, false, false, false, false, (short) 7, 0x12345678L, false, false)))));
361 assertEquals(deserMsg("src/test/resources/PCEPReplyMessage1.bin"), specMessages);
363 specMessages = new ArrayList<PCEPReplyMessage>();
364 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 3, 1, false, false)))));
365 assertEquals(deserMsg("src/test/resources/PCRep.1.bin"), specMessages);
367 specMessages = new ArrayList<PCEPReplyMessage>();
368 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 3, 1, false, false)))));
369 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(false, false, false, false, false, false, false, false, (short) 5, 2, false, false), new PCEPNoPathObject((short) 0, false, false), null, null, null, null, null, null))));
370 assertEquals(deserMsg("src/test/resources/PCRep.2.bin"), specMessages);
372 specMessages = new ArrayList<PCEPReplyMessage>();
373 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 3, 1, false, false), new PCEPNoPathObject((short) 1, true, false), new PCEPLspObject(1, true, true, false, true), PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(500f), false, false), new ArrayList<PCEPMetricObject>() {
374 private static final long serialVersionUID = 1L;
377 this.add(new PCEPMetricObject(true, true, new IGPMetric(234), false, false));
379 }, new PCEPIncludeRouteObject(this.eroSubobjects, false, false), new ArrayList<CompositePathObject>() {
380 private static final long serialVersionUID = 1L;
383 this.add(new CompositePathObject(new PCEPExplicitRouteObject(PCEPValidatorTest.this.eroSubobjects, false), lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(500f), false, false), new ArrayList<PCEPMetricObject>() {
384 private static final long serialVersionUID = 1L;
387 this.add(new PCEPMetricObject(true, true, new IGPMetric(234L), false, false));
389 }, new PCEPIncludeRouteObject(PCEPValidatorTest.this.eroSubobjects, false, false)));
392 assertEquals(deserMsg("src/test/resources/PCRep.3.bin"), specMessages);
394 specMessages = new ArrayList<PCEPReplyMessage>();
395 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 7, 1, false, false)))));
396 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 2, false, false)))));
397 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 2, 4, false, false)))));
398 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(false, false, false, false, false, false, false, false, (short) 3, 4, false, false)))));
399 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(false, false, false, false, false, false, false, false, (short) 6, 5, false, false)))));
400 assertEquals(deserMsg("src/test/resources/PCRep.4.bin"), specMessages);
402 specMessages = new ArrayList<PCEPReplyMessage>();
403 final List<Long> requestIDs = new ArrayList<Long>();
404 requestIDs.add(0x25069045L);
406 final List<PCEPMetricObject> metrics = new ArrayList<PCEPMetricObject>();
407 metrics.add(new PCEPMetricObject(true, true, new IGPMetric(234L), true, false));
409 final List<CompositeReplySvecObject> svecList = new ArrayList<CompositeReplySvecObject>();
410 svecList.add(new CompositeReplySvecObject(new PCEPSvecObject(true, true, true, false, false, requestIDs, true), new PCEPObjectiveFunctionObject(PCEPOFCodes.MCC, true, false), metrics));
412 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 3, 1, false, false), new PCEPNoPathObject((short) 1, true, false), null, PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(500f), false, false), new ArrayList<PCEPMetricObject>() {
413 private static final long serialVersionUID = 1L;
416 this.add(new PCEPMetricObject(true, true, new IGPMetric(234), false, false));
418 }, new PCEPIncludeRouteObject(this.eroSubobjects, false, false), new ArrayList<CompositePathObject>() {
419 private static final long serialVersionUID = 1L;
422 this.add(new CompositePathObject(new PCEPExplicitRouteObject(PCEPValidatorTest.this.eroSubobjects, false), lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(500f), false, false), new ArrayList<PCEPMetricObject>() {
423 private static final long serialVersionUID = 1L;
426 this.add(new PCEPMetricObject(true, true, new IGPMetric(234L), false, false));
427 this.add(new PCEPMetricObject(true, true, new IGPMetric(5355L), false, false));
428 this.add(new PCEPMetricObject(true, true, new IGPMetric(5353L), false, false));
430 }, new PCEPIncludeRouteObject(PCEPValidatorTest.this.eroSubobjects, false, false)));
433 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 3, 1, false, false), new PCEPNoPathObject((short) 1, true, false), null, PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(500f), false, false), new ArrayList<PCEPMetricObject>() {
434 private static final long serialVersionUID = 1L;
437 this.add(new PCEPMetricObject(true, true, new IGPMetric(234), false, false));
439 }, new PCEPIncludeRouteObject(this.eroSubobjects, false, false), new ArrayList<CompositePathObject>() {
440 private static final long serialVersionUID = 1L;
443 this.add(new CompositePathObject(new PCEPExplicitRouteObject(PCEPValidatorTest.this.eroSubobjects, false), lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(500f), false, false), new ArrayList<PCEPMetricObject>() {
444 private static final long serialVersionUID = 1L;
447 this.add(new PCEPMetricObject(true, true, new IGPMetric(234L), false, false));
449 }, new PCEPIncludeRouteObject(PCEPValidatorTest.this.eroSubobjects, false, false)));
450 this.add(new CompositePathObject(new PCEPExplicitRouteObject(PCEPValidatorTest.this.eroSubobjects, false), lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(500f), false, false), new ArrayList<PCEPMetricObject>() {
451 private static final long serialVersionUID = 1L;
454 this.add(new PCEPMetricObject(true, true, new IGPMetric(234L), false, false));
456 }, new PCEPIncludeRouteObject(PCEPValidatorTest.this.eroSubobjects, false, false)));
459 assertEquals(deserMsg("src/test/resources/PCRep.5.bin"), specMessages);
463 public void testUpdMessageValidatorFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException,
464 DeserializerException, DocumentedException {
465 List<PCEPMessage> specMessages = new ArrayList<PCEPMessage>();
467 List<CompositeUpdateRequestObject> requests = new ArrayList<CompositeUpdateRequestObject>();
468 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true)));
470 specMessages.add(new PCEPUpdateRequestMessage(requests));
471 assertEquals(deserMsg("src/test/resources/PCUpd.1.bin"), specMessages);
473 specMessages = new ArrayList<PCEPMessage>();
474 List<CompositeUpdPathObject> paths = new ArrayList<CompositeUpdPathObject>();
475 paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, null, null));
476 requests = new ArrayList<CompositeUpdateRequestObject>();
477 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true), paths));
478 specMessages.add(new PCEPUpdateRequestMessage(requests));
479 assertEquals(deserMsg("src/test/resources/PCUpd.2.bin"), specMessages);
481 specMessages = new ArrayList<PCEPMessage>();
482 paths = new ArrayList<CompositeUpdPathObject>();
483 paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(5353), false, false), new ArrayList<PCEPMetricObject>() {
484 private static final long serialVersionUID = 1L;
487 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
490 requests = new ArrayList<CompositeUpdateRequestObject>();
491 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true), paths));
492 specMessages.add(new PCEPUpdateRequestMessage(requests));
493 assertEquals(deserMsg("src/test/resources/PCUpd.3.bin"), specMessages);
495 specMessages = new ArrayList<PCEPMessage>();
496 requests = new ArrayList<CompositeUpdateRequestObject>();
497 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true)));
498 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true)));
499 specMessages.add(new PCEPUpdateRequestMessage(requests));
500 assertEquals(deserMsg("src/test/resources/PCUpd.4.bin"), specMessages);
502 specMessages = new ArrayList<PCEPMessage>();
503 requests = new ArrayList<CompositeUpdateRequestObject>();
504 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true)));
505 paths = new ArrayList<CompositeUpdPathObject>();
506 paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(5353), false, false), new ArrayList<PCEPMetricObject>() {
507 private static final long serialVersionUID = 1L;
510 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
513 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true), paths));
514 paths = new ArrayList<CompositeUpdPathObject>();
515 paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(5353), false, false), new ArrayList<PCEPMetricObject>() {
516 private static final long serialVersionUID = 1L;
519 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
522 paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(5353), false, false), new ArrayList<PCEPMetricObject>() {
523 private static final long serialVersionUID = 1L;
526 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
529 paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(5353), false, false), new ArrayList<PCEPMetricObject>() {
530 private static final long serialVersionUID = 1L;
533 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
534 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
537 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true), paths));
538 specMessages.add(new PCEPUpdateRequestMessage(requests));
539 assertEquals(deserMsg("src/test/resources/PCUpd.5.bin"), specMessages);
543 public void testRptMessageValidatorFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException,
544 DeserializerException, DocumentedException {
545 List<PCEPMessage> specMessages = new ArrayList<PCEPMessage>();
546 List<CompositeStateReportObject> reports = new ArrayList<CompositeStateReportObject>();
547 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true)));
548 specMessages.add(new PCEPReportMessage(reports));
549 assertEquals(deserMsg("src/test/resources/PCRpt.1.bin"), specMessages);
551 specMessages = new ArrayList<PCEPMessage>();
552 List<CompositeRptPathObject> paths = new ArrayList<CompositeRptPathObject>();
553 paths.add(new CompositeRptPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, null, null, null));
554 reports = new ArrayList<CompositeStateReportObject>();
555 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true), paths));
556 specMessages.add(new PCEPReportMessage(reports));
557 assertEquals(deserMsg("src/test/resources/PCRpt.2.bin"), specMessages);
559 specMessages = new ArrayList<PCEPMessage>();
560 paths = new ArrayList<CompositeRptPathObject>();
561 paths.add(new CompositeRptPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, new PCEPExistingPathBandwidthObject(new Bandwidth(5353), false, false), new PCEPReportedRouteObject(this.rroSubobjects, false), new ArrayList<PCEPMetricObject>() {
562 private static final long serialVersionUID = 1L;
565 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
569 reports = new ArrayList<CompositeStateReportObject>();
570 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true), paths));
571 specMessages.add(new PCEPReportMessage(reports));
573 // assertEquals(deserMsg("src/test/resources/PCRpt.3.bin"), specMessages);
575 specMessages = new ArrayList<PCEPMessage>();
576 reports = new ArrayList<CompositeStateReportObject>();
577 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true)));
578 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true)));
579 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true)));
580 specMessages.add(new PCEPReportMessage(reports));
581 assertEquals(deserMsg("src/test/resources/PCRpt.4.bin"), specMessages);
583 specMessages = new ArrayList<PCEPMessage>();
584 reports = new ArrayList<CompositeStateReportObject>();
585 paths = new ArrayList<CompositeRptPathObject>();
586 paths.add(new CompositeRptPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, new PCEPExistingPathBandwidthObject(new Bandwidth(5353), false, false), new PCEPReportedRouteObject(this.rroSubobjects, false), new ArrayList<PCEPMetricObject>() {
587 private static final long serialVersionUID = 1L;
590 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
593 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true), paths));
594 paths = new ArrayList<CompositeRptPathObject>();
595 paths.add(new CompositeRptPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, new PCEPExistingPathBandwidthObject(new Bandwidth(5353), false, false), new PCEPReportedRouteObject(this.rroSubobjects, false), new ArrayList<PCEPMetricObject>() {
596 private static final long serialVersionUID = 1L;
599 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
600 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
601 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
604 paths.add(new CompositeRptPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, new PCEPExistingPathBandwidthObject(new Bandwidth(5353), false, false), new PCEPReportedRouteObject(this.rroSubobjects, false), new ArrayList<PCEPMetricObject>() {
605 private static final long serialVersionUID = 1L;
608 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
611 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true), paths));
612 specMessages.add(new PCEPReportMessage(reports));
614 // assertEquals(deserMsg("src/test/resources/PCRpt.5.bin"), specMessages);
618 public void testXRDeleteTunnelMessage() throws DeserializerException, DocumentedException, PCEPDeserializerException {
619 final PCEPXRDeleteTunnelMessage dTunnel = new PCEPXRDeleteTunnelMessage(new PCEPLspObject(1, false, true, false, true));
620 final byte[] bytes = this.msgFactory.put(dTunnel);
622 final PCEPRawMessage rawMessage = (PCEPRawMessage) msgFactory.parse(bytes).get(0);
624 assertEquals(PCEPMessageValidator.getValidator(rawMessage.getMsgType()).validate(rawMessage.getAllObjects()),
625 asList((PCEPMessage) dTunnel));
629 public void testXRAddTunnelMessage() throws DeserializerException, DocumentedException, PCEPDeserializerException {
630 final List<ExplicitRouteSubobject> subs = new ArrayList<ExplicitRouteSubobject>();
631 subs.add(new EROAsNumberSubobject(new ASNumber(10), false));
632 final PCEPXRAddTunnelMessage addTunnel = new PCEPXRAddTunnelMessage(new PCEPLspObject(1, false, false, false, false), new PCEPEndPointsObject<IPv4Address>(IPv4.FAMILY.addressForString("127.0.0.2"), IPv4.FAMILY.addressForString("127.0.0.1")), new PCEPExplicitRouteObject(subs, true));
633 final byte[] bytes = this.msgFactory.put(addTunnel);
635 final PCEPRawMessage rawMessage = (PCEPRawMessage) msgFactory.parse(bytes).get(0);
636 assertEquals(PCEPMessageValidator.getValidator(rawMessage.getMsgType()).validate(rawMessage.getAllObjects()),
637 asList((PCEPMessage) addTunnel));
641 public void testPCCreateMessage() throws DeserializerException, DocumentedException, PCEPDeserializerException {
642 final List<CompositeInstantiationObject> insts = new ArrayList<CompositeInstantiationObject>();
643 final List<ExplicitRouteSubobject> subs = new ArrayList<ExplicitRouteSubobject>();
644 subs.add(new EROAsNumberSubobject(new ASNumber(10), false));
645 final List<PCEPTlv> tlvs = new ArrayList<PCEPTlv>();
646 final LSPSymbolicNameTlv tlv = new LSPSymbolicNameTlv(new LSPSymbolicName(new byte[] { 5, 4 }));
648 insts.add(new CompositeInstantiationObject(new PCEPEndPointsObject<IPv4Address>(IPv4.FAMILY.addressForString("127.0.0.2"), IPv4.FAMILY.addressForString("127.0.0.1")), PCEPValidatorTest.lspa, new PCEPExplicitRouteObject(subs, true), null, new ArrayList<PCEPMetricObject>() {
649 private static final long serialVersionUID = 1L;
652 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
653 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
654 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
657 final PCCreateMessage msg = new PCCreateMessage(insts);
659 final byte[] bytes = this.msgFactory.put(msg);
661 // FIXME: need construct with invalid processed parameter
662 final PCEPRawMessage rawMessage = (PCEPRawMessage) msgFactory.parse(bytes).get(0);
664 assertEquals(PCEPMessageValidator.getValidator(rawMessage.getMsgType()).validate(rawMessage.getAllObjects()),
665 asList((PCEPMessage) msg));
669 public void testNotificationValidatorFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException,
670 DeserializerException, DocumentedException {
671 List<CompositeNotifyObject> notifications = new ArrayList<CompositeNotifyObject>();
672 List<PCEPNotificationObject> notificationsList = new ArrayList<PCEPNotificationObject>();
673 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
674 notifications.add(new CompositeNotifyObject(notificationsList));
675 PCEPNotificationMessage specMessage = new PCEPNotificationMessage(notifications);
676 assertEquals(deserMsg("src/test/resources/PCNtf.1.bin"), asList((PCEPMessage) specMessage));
678 notifications = new ArrayList<CompositeNotifyObject>();
679 notificationsList = new ArrayList<PCEPNotificationObject>();
680 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
681 List<PCEPRequestParameterObject> requestsList = new ArrayList<PCEPRequestParameterObject>();
682 requestsList.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 3, 1, false, false));
683 notifications.add(new CompositeNotifyObject(requestsList, notificationsList));
684 specMessage = new PCEPNotificationMessage(notifications);
685 assertEquals(deserMsg("src/test/resources/PCNtf.2.bin"), asList((PCEPMessage) specMessage));
687 notifications = new ArrayList<CompositeNotifyObject>();
688 notificationsList = new ArrayList<PCEPNotificationObject>();
689 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
690 requestsList = new ArrayList<PCEPRequestParameterObject>();
691 requestsList.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 10, false, false));
692 notifications.add(new CompositeNotifyObject(requestsList, notificationsList));
693 specMessage = new PCEPNotificationMessage(notifications);
694 assertEquals(deserMsg("src/test/resources/PCNtf.3.bin"), asList((PCEPMessage) specMessage));
696 notifications = new ArrayList<CompositeNotifyObject>();
697 notificationsList = new ArrayList<PCEPNotificationObject>();
698 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
699 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 2));
700 notificationsList.add(new PCEPNotificationObject((short) 2, (short) 1));
701 notificationsList.add(new PCEPNotificationObject((short) 2, (short) 2));
702 notifications.add(new CompositeNotifyObject(notificationsList));
703 specMessage = new PCEPNotificationMessage(notifications);
704 assertEquals(deserMsg("src/test/resources/PCNtf.4.bin"), asList((PCEPMessage) specMessage));
706 notifications = new ArrayList<CompositeNotifyObject>();
707 notificationsList = new ArrayList<PCEPNotificationObject>();
708 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
709 requestsList = new ArrayList<PCEPRequestParameterObject>();
710 requestsList.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 10, false, false));
711 notifications.add(new CompositeNotifyObject(requestsList, notificationsList));
712 notificationsList = new ArrayList<PCEPNotificationObject>();
713 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
714 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
715 requestsList = new ArrayList<PCEPRequestParameterObject>();
716 requestsList.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 10, false, false));
717 requestsList.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 10, false, false));
718 notifications.add(new CompositeNotifyObject(requestsList, notificationsList));
719 specMessage = new PCEPNotificationMessage(notifications);
720 assertEquals(deserMsg("src/test/resources/PCNtf.5.bin"), asList((PCEPMessage) specMessage));
724 public void testErrorMessageValidatoinFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException,
725 DeserializerException, DocumentedException {
726 List<PCEPErrorObject> errorsList = new ArrayList<PCEPErrorObject>();
727 errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
729 PCEPErrorMessage specMessage = new PCEPErrorMessage(errorsList);
730 assertEquals(deserMsg("src/test/resources/PCErr.1.bin"), asList((PCEPMessage) specMessage));
732 List<PCEPRequestParameterObject> requests = new ArrayList<PCEPRequestParameterObject>();
733 requests.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 3, 1, false, false));
735 List<CompositeErrorObject> errors = new ArrayList<CompositeErrorObject>();
736 errors.add(new CompositeErrorObject(requests, errorsList));
738 specMessage = new PCEPErrorMessage(errors);
739 assertEquals(deserMsg("src/test/resources/PCErr.2.bin"), asList((PCEPMessage) specMessage));
741 specMessage = new PCEPErrorMessage(new PCEPOpenObject(0, 0, 0), errorsList, null);
742 assertEquals(deserMsg("src/test/resources/PCErr.3.bin"), asList((PCEPMessage) specMessage));
744 requests = new ArrayList<PCEPRequestParameterObject>();
745 requests.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 53, false, false));
747 errors = new ArrayList<CompositeErrorObject>();
748 errors.add(new CompositeErrorObject(requests, errorsList));
750 specMessage = new PCEPErrorMessage(errors);
751 assertEquals(deserMsg("src/test/resources/PCErr.3b.bin"), asList((PCEPMessage) specMessage));
753 errorsList = new ArrayList<PCEPErrorObject>();
754 errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
755 errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
756 errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
758 specMessage = new PCEPErrorMessage(null, errorsList, null);
759 assertEquals(deserMsg("src/test/resources/PCErr.4.bin"), asList((PCEPMessage) specMessage));
761 requests = new ArrayList<PCEPRequestParameterObject>();
762 requests.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 53, false, false));
764 errorsList = new ArrayList<PCEPErrorObject>();
765 errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
767 errors = new ArrayList<CompositeErrorObject>();
768 errors.add(new CompositeErrorObject(requests, errorsList));
769 errors.add(new CompositeErrorObject(requests, errorsList));
771 specMessage = new PCEPErrorMessage(errors);
772 assertEquals(deserMsg("src/test/resources/PCErr.5.bin"), asList((PCEPMessage) specMessage));