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.Arrays;
16 import java.util.List;
18 import org.junit.Test;
20 import org.opendaylight.protocol.framework.DeserializerException;
21 import org.opendaylight.protocol.framework.DocumentedException;
22 import org.opendaylight.protocol.util.ByteArray;
23 import org.opendaylight.protocol.concepts.ASNumber;
24 import org.opendaylight.protocol.concepts.Bandwidth;
25 import org.opendaylight.protocol.concepts.IGPMetric;
26 import org.opendaylight.protocol.concepts.IPv4;
27 import org.opendaylight.protocol.concepts.IPv4Address;
28 import org.opendaylight.protocol.concepts.TEMetric;
29 import org.opendaylight.protocol.pcep.PCEPDeserializerException;
30 import org.opendaylight.protocol.pcep.PCEPDocumentedException;
31 import org.opendaylight.protocol.pcep.PCEPErrors;
32 import org.opendaylight.protocol.pcep.PCEPMessage;
33 import org.opendaylight.protocol.pcep.PCEPOFCodes;
34 import org.opendaylight.protocol.pcep.PCEPObject;
35 import org.opendaylight.protocol.pcep.PCEPTlv;
36 import org.opendaylight.protocol.pcep.concepts.LSPSymbolicName;
37 import org.opendaylight.protocol.pcep.concepts.UnnumberedInterfaceIdentifier;
38 import org.opendaylight.protocol.pcep.impl.PCEPMessageFactory.PCEPMessageType;
39 import org.opendaylight.protocol.pcep.impl.message.PCEPRawMessage;
40 import org.opendaylight.protocol.pcep.impl.object.UnknownObject;
41 import org.opendaylight.protocol.pcep.message.PCCreateMessage;
42 import org.opendaylight.protocol.pcep.message.PCEPCloseMessage;
43 import org.opendaylight.protocol.pcep.message.PCEPErrorMessage;
44 import org.opendaylight.protocol.pcep.message.PCEPKeepAliveMessage;
45 import org.opendaylight.protocol.pcep.message.PCEPNotificationMessage;
46 import org.opendaylight.protocol.pcep.message.PCEPOpenMessage;
47 import org.opendaylight.protocol.pcep.message.PCEPReplyMessage;
48 import org.opendaylight.protocol.pcep.message.PCEPReportMessage;
49 import org.opendaylight.protocol.pcep.message.PCEPRequestMessage;
50 import org.opendaylight.protocol.pcep.message.PCEPUpdateRequestMessage;
51 import org.opendaylight.protocol.pcep.message.PCEPXRAddTunnelMessage;
52 import org.opendaylight.protocol.pcep.message.PCEPXRDeleteTunnelMessage;
53 import org.opendaylight.protocol.pcep.object.CompositeErrorObject;
54 import org.opendaylight.protocol.pcep.object.CompositeInstantiationObject;
55 import org.opendaylight.protocol.pcep.object.CompositeNotifyObject;
56 import org.opendaylight.protocol.pcep.object.CompositePathObject;
57 import org.opendaylight.protocol.pcep.object.CompositeReplySvecObject;
58 import org.opendaylight.protocol.pcep.object.CompositeRequestObject;
59 import org.opendaylight.protocol.pcep.object.CompositeRequestSvecObject;
60 import org.opendaylight.protocol.pcep.object.CompositeResponseObject;
61 import org.opendaylight.protocol.pcep.object.CompositeRptPathObject;
62 import org.opendaylight.protocol.pcep.object.CompositeStateReportObject;
63 import org.opendaylight.protocol.pcep.object.CompositeUpdPathObject;
64 import org.opendaylight.protocol.pcep.object.CompositeUpdateRequestObject;
65 import org.opendaylight.protocol.pcep.object.PCEPCloseObject;
66 import org.opendaylight.protocol.pcep.object.PCEPCloseObject.Reason;
67 import org.opendaylight.protocol.pcep.object.PCEPEndPointsObject;
68 import org.opendaylight.protocol.pcep.object.PCEPErrorObject;
69 import org.opendaylight.protocol.pcep.object.PCEPExcludeRouteObject;
70 import org.opendaylight.protocol.pcep.object.PCEPExistingPathBandwidthObject;
71 import org.opendaylight.protocol.pcep.object.PCEPExplicitRouteObject;
72 import org.opendaylight.protocol.pcep.object.PCEPGlobalConstraintsObject;
73 import org.opendaylight.protocol.pcep.object.PCEPIncludeRouteObject;
74 import org.opendaylight.protocol.pcep.object.PCEPLoadBalancingObject;
75 import org.opendaylight.protocol.pcep.object.PCEPLspObject;
76 import org.opendaylight.protocol.pcep.object.PCEPLspaObject;
77 import org.opendaylight.protocol.pcep.object.PCEPMetricObject;
78 import org.opendaylight.protocol.pcep.object.PCEPNoPathObject;
79 import org.opendaylight.protocol.pcep.object.PCEPNotificationObject;
80 import org.opendaylight.protocol.pcep.object.PCEPObjectiveFunctionObject;
81 import org.opendaylight.protocol.pcep.object.PCEPOpenObject;
82 import org.opendaylight.protocol.pcep.object.PCEPReportedRouteObject;
83 import org.opendaylight.protocol.pcep.object.PCEPRequestParameterObject;
84 import org.opendaylight.protocol.pcep.object.PCEPRequestedPathBandwidthObject;
85 import org.opendaylight.protocol.pcep.object.PCEPSvecObject;
86 import org.opendaylight.protocol.pcep.subobject.EROAsNumberSubobject;
87 import org.opendaylight.protocol.pcep.subobject.EROUnnumberedInterfaceSubobject;
88 import org.opendaylight.protocol.pcep.subobject.ExcludeRouteSubobject;
89 import org.opendaylight.protocol.pcep.subobject.ExplicitRouteSubobject;
90 import org.opendaylight.protocol.pcep.subobject.RROUnnumberedInterfaceSubobject;
91 import org.opendaylight.protocol.pcep.subobject.ReportedRouteSubobject;
92 import org.opendaylight.protocol.pcep.subobject.XROAsNumberSubobject;
93 import org.opendaylight.protocol.pcep.tlv.LSPStateDBVersionTlv;
94 import org.opendaylight.protocol.pcep.tlv.LSPSymbolicNameTlv;
95 import org.opendaylight.protocol.pcep.tlv.PCEStatefulCapabilityTlv;
97 public class PCEPValidatorTest {
99 private static final PCEPLspaObject lspa = new PCEPLspaObject(0L, 0L, 0L, (short) 0, (short) 0, false, false, false, false);
101 private final List<ExplicitRouteSubobject> eroSubobjects = asList(
102 new EROAsNumberSubobject(new ASNumber(0xFFFFL), false),
103 new EROUnnumberedInterfaceSubobject(new IPv4Address(
104 new byte[] { (byte) 0x00, (byte) 0x11, (byte) 0x22, (byte) 0x33 }), new UnnumberedInterfaceIdentifier(0x00FF00FF), false));
106 private final List<ReportedRouteSubobject> rroSubobjects = asList((ReportedRouteSubobject) new RROUnnumberedInterfaceSubobject(new IPv4Address(new byte[] { (byte) 0x00, (byte) 0x11, (byte) 0x22, (byte) 0x33 }),
107 new UnnumberedInterfaceIdentifier(0x00FF00FF)));
109 private final List<Long> requestIds = asList(0x000001L);
111 private final IPv4Address ip4addr = new IPv4Address(new byte[] { (byte) 0xFF, 0x00, 0x00, 0x01 });
113 private final PCEPSvecObject svecObj = new PCEPSvecObject(true, true, true, false, false, PCEPValidatorTest.this.requestIds, true);
115 private final PCEPRequestParameterObject requestParameter = new PCEPRequestParameterObject(true, false, false, false, false, false, false, false,
116 (short) 3, 1, true, false);
118 // private final PCEPEndPointsObject<IPv4Address> endPoints = new
119 // PCEPEndPointsObject<IPv4Address>(this.ip4addr, this.ip4addr);
121 private final PCEPEndPointsObject<IPv4Address> endPoints = new PCEPEndPointsObject<IPv4Address>(this.ip4addr, this.ip4addr);
123 private final PCEPMessageFactory msgFactory = new PCEPMessageFactory();
125 // private final PCEPClassTypeObject classType = new
126 // PCEPClassTypeObject((short) 7);
127 // private final PCEPClassTypeObjectProvider classTypeProvider = new
128 // PCEPClassTypeObjectProvider((short) 7, true);
130 private static List<PCEPMessage> deserMsg(final String srcFile) throws IOException, DeserializerException, DocumentedException, PCEPDeserializerException {
131 final byte[] bytesFromFile = ByteArray.fileToBytes(srcFile);
132 final PCEPRawMessage rawMessage = (PCEPRawMessage) new PCEPMessageFactory().parse(ByteArray.cutBytes(bytesFromFile, PCEPMessageHeader.COMMON_HEADER_LENGTH),
133 new PCEPMessageHeader().fromBytes(Arrays.copyOf(bytesFromFile, PCEPMessageHeader.COMMON_HEADER_LENGTH)));
135 return PCEPMessageValidator.getValidator(rawMessage.getMsgType()).validate(rawMessage.getAllObjects());
139 public void testOpenMessageValidationFromBin() throws IOException, DeserializerException, DocumentedException, PCEPDeserializerException {
141 deserMsg("src/test/resources/PCEPOpenMessage1.bin"),
142 asList(new PCEPOpenMessage(new PCEPOpenObject(30, 120, 1, asList(new PCEStatefulCapabilityTlv(false, true, true), new LSPStateDBVersionTlv(
145 assertEquals(deserMsg("src/test/resources/Open.1.bin"), asList(new PCEPOpenMessage(new PCEPOpenObject(1, 4, 1))));
148 deserMsg("src/test/resources/Open.3.bin"),
149 asList(new PCEPOpenMessage(new PCEPOpenObject(1, 4, 1, asList(new PCEStatefulCapabilityTlv(false, true, true), new LSPStateDBVersionTlv(53))))));
153 public void testKeepAliveMessageValidationFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException, DeserializerException, DocumentedException {
154 assertEquals(deserMsg("src/test/resources/PCEPKeepAliveMessage1.bin"), asList(new PCEPKeepAliveMessage()));
155 assertEquals(deserMsg("src/test/resources/Keepalive.1.bin"), asList(new PCEPKeepAliveMessage()));
159 public void testCloseMsg() throws PCEPDeserializerException, IOException, PCEPDocumentedException, DeserializerException, DocumentedException {
160 assertEquals(deserMsg("src/test/resources/PCEPCloseMessage1.bin"), 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, DeserializerException, DocumentedException {
166 List<CompositeRequestObject> requests = new ArrayList<CompositeRequestObject>();
167 final byte[] ipAdress = { (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF };
168 requests.add(new CompositeRequestObject(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 5, 0xDEADBEEFL,
169 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,
188 null, null, null, null, new PCEPLoadBalancingObject(3, new Bandwidth(1024.75f), false)));
189 specMessage = new PCEPRequestMessage(requests);
190 deserMsgs = deserMsg("src/test/resources/PCReq.2.bin");
191 specMessages.clear();
192 specMessages.add(specMessage);
193 assertEquals(deserMsgs, specMessages);
195 requests = new ArrayList<CompositeRequestObject>();
196 requests.add(new CompositeRequestObject(this.requestParameter, new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress2), new IPv4Address(ipAdress2)), null, new PCEPLspObject(1,
197 false, false, true, false), PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(1000), false, false),
198 new ArrayList<PCEPMetricObject>() {
199 private static final long serialVersionUID = 1L;
202 this.add(new PCEPMetricObject(true, true, new IGPMetric(53L), false, false));
204 }, new PCEPReportedRouteObject(this.rroSubobjects, false), new PCEPExistingPathBandwidthObject(new Bandwidth(5353), false, false),
205 new PCEPIncludeRouteObject(this.eroSubobjects, false, false), new PCEPLoadBalancingObject(5, new Bandwidth(3f), false)));
207 List<CompositeRequestSvecObject> svecList = new ArrayList<CompositeRequestSvecObject>();
208 svecList.add(new CompositeRequestSvecObject(new PCEPSvecObject(true, false, false, false, false, this.requestIds, false)));
210 specMessage = new PCEPRequestMessage(svecList, requests);
211 deserMsgs = deserMsg("src/test/resources/PCReq.3.bin");
212 specMessages.clear();
213 specMessages.add(specMessage);
214 assertEquals(deserMsgs, specMessages);
216 specMessages.clear();
217 requests = new ArrayList<CompositeRequestObject>();
218 requests.add(new CompositeRequestObject(this.requestParameter, new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress2), new IPv4Address(ipAdress2)), null, null, null, null,
219 null, null, null, null, null));
220 specMessages.add(new PCEPRequestMessage(requests));
222 final byte[] ipAdress3 = { (byte) 0x7F, (byte) 0x00, (byte) 0x30, (byte) 0x01 };
223 requests = new ArrayList<CompositeRequestObject>();
224 requests.add(new CompositeRequestObject(new PCEPRequestParameterObject(false, false, false, false, false, false, false, false, (short) 4, 1, true,
225 false), new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress3), new IPv4Address(ipAdress2)), null, null, null, null, null, null, null, null, null));
226 specMessages.add(new PCEPRequestMessage(requests));
228 final byte[] ipAdress4 = { (byte) 0x7F, (byte) 0x30, (byte) 0x00, (byte) 0x01 };
229 requests = new ArrayList<CompositeRequestObject>();
230 requests.add(new CompositeRequestObject(this.requestParameter, new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress2), new IPv4Address(ipAdress4)), null, null, null, null,
231 null, null, null, null, null));
232 specMessages.add(new PCEPRequestMessage(requests));
234 final byte[] ipAdress5 = { (byte) 0x7F, (byte) 0xd0, (byte) 0x00, (byte) 0x01 };
235 requests = new ArrayList<CompositeRequestObject>();
236 requests.add(new CompositeRequestObject(
237 new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 1, true, false),
238 new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress5), new IPv4Address(ipAdress5)), null, null, null, null, null, null, null, null, null));
240 specMessages.add(new PCEPRequestMessage(requests));
241 deserMsgs = deserMsg("src/test/resources/PCReq.4.bin");
242 assertEquals(deserMsgs, specMessages);
244 specMessages.clear();
245 svecList = new ArrayList<CompositeRequestSvecObject>();
246 svecList.add(new CompositeRequestSvecObject(new PCEPSvecObject(true, false, false, false, false, this.requestIds, false)));
247 svecList.add(new CompositeRequestSvecObject(new PCEPSvecObject(false, true, true, false, false, this.requestIds, false),
248 new PCEPObjectiveFunctionObject(PCEPOFCodes.MCC, true, false), new PCEPGlobalConstraintsObject((short) 0x55, (short) 1, (short) 100,
249 (short) 0x26, true, false), new PCEPExcludeRouteObject(new ArrayList<ExcludeRouteSubobject>() {
250 private static final long serialVersionUID = 1L;
253 this.add(new XROAsNumberSubobject(new ASNumber(0x12), true));
255 }, true, true, false), new ArrayList<PCEPMetricObject>() {
256 private static final long serialVersionUID = 1L;
259 this.add(new PCEPMetricObject(true, true, new TEMetric(123456L), true, false));
263 requests = new ArrayList<CompositeRequestObject>();
264 requests.add(new CompositeRequestObject(this.requestParameter, new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress2), new IPv4Address(ipAdress2)), null, null,
265 PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(1000), false, false), new ArrayList<PCEPMetricObject>() {
266 private static final long serialVersionUID = 1L;
269 this.add(new PCEPMetricObject(true, true, new IGPMetric(53L), false, false));
270 this.add(new PCEPMetricObject(true, true, new IGPMetric(5335L), false, false));
271 this.add(new PCEPMetricObject(true, true, new IGPMetric(128256), false, false));
273 }, new PCEPReportedRouteObject(this.rroSubobjects, false), new PCEPExistingPathBandwidthObject(new Bandwidth(5353), false, false),
274 new PCEPIncludeRouteObject(this.eroSubobjects, false, false), new PCEPLoadBalancingObject(5, new Bandwidth(3f), false)));
276 final byte[] ipAdress6 = { (byte) 0x7F, (byte) 0xF0, (byte) 0x00, (byte) 0x01 };
277 specMessages.add(new PCEPRequestMessage(svecList, requests));
279 requests = new ArrayList<CompositeRequestObject>();
280 requests.add(new CompositeRequestObject(this.requestParameter, new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress6), new IPv4Address(ipAdress6)), null, null,
281 PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(1000), false, false), new ArrayList<PCEPMetricObject>() {
282 private static final long serialVersionUID = 1L;
285 this.add(new PCEPMetricObject(true, true, new IGPMetric(53L), false, false));
287 }, new PCEPReportedRouteObject(this.rroSubobjects, false), new PCEPExistingPathBandwidthObject(new Bandwidth(5353), false, false),
288 new PCEPIncludeRouteObject(this.eroSubobjects, false, false), new PCEPLoadBalancingObject(5, new Bandwidth(3f), false)));
289 deserMsgs = deserMsg("src/test/resources/PCReq.5.bin");
290 specMessages.add(new PCEPRequestMessage(svecList, requests));
291 assertEquals(deserMsgs, specMessages);
293 // FIXME: need construct with invalid processed parameter
294 // assertEquals(deserMsg("src/test/resources/PCReq.6.invalid.bin"),
296 // new PCEPErrorMessage(new CompositeErrorObject(new
297 // PCEPRequestParameterObject(true, false, false, false, false, false,
298 // false, false, (short) 3,
299 // 1L, false, false), new PCEPErrorObject(PCEPErrors.P_FLAG_NOT_SET))),
300 // new PCEPRequestMessage(asList(new
301 // CompositeRequestObject(this.requestParameter, new
302 // PCEPEndPointsObject<IPv4Address>(IPv4Address
303 // .getNetworkAddressFactory().getNetworkAddressForBytes(new byte[] {
304 // 127, 0, 0, 1 }), IPv4Address.getNetworkAddressFactory()
305 // .getNetworkAddressForBytes(new byte[] { 127, 0, 0, 1 })), null, null,
306 // null, null, null, null, null, null, new PCEPLoadBalancingObject(
307 // 3, new Bandwidth(1024.75), false))))));
312 public void testRequestMessageValidationFromRawMsg() throws PCEPDeserializerException {
313 List<PCEPObject> objs = new ArrayList<PCEPObject>();
314 List<PCEPMessage> msgs;
315 PCEPRequestParameterObject tmpRP;
317 // test unrecognized object in svec list
318 objs.add(this.svecObj);
319 objs.add(new UnknownObject(true, false, PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
320 objs.add(new PCEPSvecObject(true, true, true, false, false, PCEPValidatorTest.this.requestIds, true));
322 msgs = PCEPMessageValidator.getValidator(PCEPMessageType.REQUEST).validate(objs);
324 assertEquals(msgs.get(0), new PCEPErrorMessage(new ArrayList<PCEPErrorObject>() {
325 private static final long serialVersionUID = 1L;
328 this.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
332 // test with request p flag not set and ignoracion of more than one
333 // end-points objects
334 objs = new ArrayList<PCEPObject>();
335 objs.add(this.svecObj);
336 objs.add(this.svecObj);
337 tmpRP = new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 3, 1, false, false);
339 objs.add(this.endPoints);
341 objs.add(this.requestParameter);
342 objs.add(this.endPoints);
343 objs.add(this.endPoints);
344 // FIXME:mv use object constructor with set processed flag
345 // objs.add(this.classTypeProvider);
346 // objs.add(this.requestParameter);
347 // objs.add(this.endPointsProvider);
348 // objs.add(new PCEPClassTypeObjectProvider((short) 7, false));
350 msgs = PCEPMessageValidator.getValidator(PCEPMessageType.REQUEST).validate(objs);
351 // FIXME:mv use object constructor with set processed flag
352 // assertEquals(msgs.get(0), new PCEPErrorMessage(new
353 // CompositeErrorObject(tmpRP, new
354 // PCEPErrorObject(PCEPErrors.P_FLAG_NOT_SET))));
357 // new PCEPRequestMessage(asList(new
358 // CompositeRequestSvecObject(this.svecObj), new
359 // CompositeRequestSvecObject(this.svecObj)), Util
360 // .asList(new CompositeRequestObject(this.requestParameter,
361 // this.endPoints, this.classType, null, null, null, null, null, null,
364 // assertEquals(msgs.get(2), new PCEPErrorMessage(new
365 // CompositeErrorObject(tmpRP, new
366 // PCEPErrorObject(PCEPErrors.P_FLAG_NOT_SET))));
370 public void testReplyMessageValidatorFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException, DeserializerException, DocumentedException {
372 List<PCEPReplyMessage> specMessages = new ArrayList<PCEPReplyMessage>();
373 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false,
374 false, false, (short) 5, 0xDEADBEEFL, true, true)))));
375 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, true, true, false, false, false,
376 false, false, (short) 7, 0x12345678L, false, false)))));
377 assertEquals(deserMsg("src/test/resources/PCEPReplyMessage1.bin"), specMessages);
379 specMessages = new ArrayList<PCEPReplyMessage>();
380 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false,
381 false, false, (short) 3, 1, false, false)))));
382 assertEquals(deserMsg("src/test/resources/PCRep.1.bin"), specMessages);
384 specMessages = new ArrayList<PCEPReplyMessage>();
385 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false,
386 false, false, (short) 3, 1, false, false)))));
387 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(false, false, false, false, false, false,
388 false, false, (short) 5, 2, false, false), new PCEPNoPathObject((short) 0, false, false), null, null, null, null, null, null))));
389 assertEquals(deserMsg("src/test/resources/PCRep.2.bin"), specMessages);
391 specMessages = new ArrayList<PCEPReplyMessage>();
392 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false,
393 false, false, (short) 3, 1, false, false), new PCEPNoPathObject((short) 1, true, false), new PCEPLspObject(1, true, true, false, true),
394 PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(500f), false, false), new ArrayList<PCEPMetricObject>() {
395 private static final long serialVersionUID = 1L;
398 this.add(new PCEPMetricObject(true, true, new IGPMetric(234), false, false));
400 }, new PCEPIncludeRouteObject(this.eroSubobjects, false, false), new ArrayList<CompositePathObject>() {
401 private static final long serialVersionUID = 1L;
404 this.add(new CompositePathObject(new PCEPExplicitRouteObject(PCEPValidatorTest.this.eroSubobjects, false), lspa,
405 new PCEPRequestedPathBandwidthObject(new Bandwidth(500f), false, false), new ArrayList<PCEPMetricObject>() {
406 private static final long serialVersionUID = 1L;
409 this.add(new PCEPMetricObject(true, true, new IGPMetric(234L), false, false));
411 }, new PCEPIncludeRouteObject(PCEPValidatorTest.this.eroSubobjects, false, false)));
414 assertEquals(deserMsg("src/test/resources/PCRep.3.bin"), specMessages);
416 specMessages = new ArrayList<PCEPReplyMessage>();
417 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false,
418 false, false, (short) 7, 1, false, false)))));
419 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false,
420 false, false, (short) 1, 2, false, false)))));
421 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false,
422 false, false, (short) 2, 4, false, false)))));
423 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(false, false, false, false, false, false,
424 false, false, (short) 3, 4, false, false)))));
425 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(false, false, false, false, false, false,
426 false, false, (short) 6, 5, false, false)))));
427 assertEquals(deserMsg("src/test/resources/PCRep.4.bin"), specMessages);
429 specMessages = new ArrayList<PCEPReplyMessage>();
430 final List<Long> requestIDs = new ArrayList<Long>();
431 requestIDs.add(0x25069045L);
433 final List<PCEPMetricObject> metrics = new ArrayList<PCEPMetricObject>();
434 metrics.add(new PCEPMetricObject(true, true, new IGPMetric(234L), true, false));
436 final List<CompositeReplySvecObject> svecList = new ArrayList<CompositeReplySvecObject>();
437 svecList.add(new CompositeReplySvecObject(new PCEPSvecObject(true, true, true, false, false, requestIDs, true), new PCEPObjectiveFunctionObject(
438 PCEPOFCodes.MCC, true, false), metrics));
440 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false,
441 false, false, (short) 3, 1, false, false), new PCEPNoPathObject((short) 1, true, false), null, PCEPValidatorTest.lspa,
442 new PCEPRequestedPathBandwidthObject(new Bandwidth(500f), false, false), new ArrayList<PCEPMetricObject>() {
443 private static final long serialVersionUID = 1L;
446 this.add(new PCEPMetricObject(true, true, new IGPMetric(234), false, false));
448 }, new PCEPIncludeRouteObject(this.eroSubobjects, false, false), new ArrayList<CompositePathObject>() {
449 private static final long serialVersionUID = 1L;
452 this.add(new CompositePathObject(new PCEPExplicitRouteObject(PCEPValidatorTest.this.eroSubobjects, false), lspa,
453 new PCEPRequestedPathBandwidthObject(new Bandwidth(500f), false, false), new ArrayList<PCEPMetricObject>() {
454 private static final long serialVersionUID = 1L;
457 this.add(new PCEPMetricObject(true, true, new IGPMetric(234L), false, false));
458 this.add(new PCEPMetricObject(true, true, new IGPMetric(5355L), false, false));
459 this.add(new PCEPMetricObject(true, true, new IGPMetric(5353L), false, false));
461 }, new PCEPIncludeRouteObject(PCEPValidatorTest.this.eroSubobjects, false, false)));
464 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false,
465 false, false, (short) 3, 1, false, false), new PCEPNoPathObject((short) 1, true, false), null, PCEPValidatorTest.lspa,
466 new PCEPRequestedPathBandwidthObject(new Bandwidth(500f), false, false), new ArrayList<PCEPMetricObject>() {
467 private static final long serialVersionUID = 1L;
470 this.add(new PCEPMetricObject(true, true, new IGPMetric(234), false, false));
472 }, new PCEPIncludeRouteObject(this.eroSubobjects, false, false), new ArrayList<CompositePathObject>() {
473 private static final long serialVersionUID = 1L;
476 this.add(new CompositePathObject(new PCEPExplicitRouteObject(PCEPValidatorTest.this.eroSubobjects, false), lspa,
477 new PCEPRequestedPathBandwidthObject(new Bandwidth(500f), false, false), new ArrayList<PCEPMetricObject>() {
478 private static final long serialVersionUID = 1L;
481 this.add(new PCEPMetricObject(true, true, new IGPMetric(234L), false, false));
483 }, new PCEPIncludeRouteObject(PCEPValidatorTest.this.eroSubobjects, false, false)));
484 this.add(new CompositePathObject(new PCEPExplicitRouteObject(PCEPValidatorTest.this.eroSubobjects, false), lspa,
485 new PCEPRequestedPathBandwidthObject(new Bandwidth(500f), false, false), new ArrayList<PCEPMetricObject>() {
486 private static final long serialVersionUID = 1L;
489 this.add(new PCEPMetricObject(true, true, new IGPMetric(234L), false, false));
491 }, new PCEPIncludeRouteObject(PCEPValidatorTest.this.eroSubobjects, false, false)));
494 assertEquals(deserMsg("src/test/resources/PCRep.5.bin"), specMessages);
498 public void testUpdMessageValidatorFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException, DeserializerException, DocumentedException {
499 List<PCEPMessage> specMessages = new ArrayList<PCEPMessage>();
501 List<CompositeUpdateRequestObject> requests = new ArrayList<CompositeUpdateRequestObject>();
502 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true)));
504 specMessages.add(new PCEPUpdateRequestMessage(requests));
505 assertEquals(deserMsg("src/test/resources/PCUpd.1.bin"), specMessages);
507 specMessages = new ArrayList<PCEPMessage>();
508 List<CompositeUpdPathObject> paths = new ArrayList<CompositeUpdPathObject>();
509 paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, null, null));
510 requests = new ArrayList<CompositeUpdateRequestObject>();
511 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true), paths));
512 specMessages.add(new PCEPUpdateRequestMessage(requests));
513 assertEquals(deserMsg("src/test/resources/PCUpd.2.bin"), specMessages);
515 specMessages = new ArrayList<PCEPMessage>();
516 paths = new ArrayList<CompositeUpdPathObject>();
517 paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa,
518 new PCEPRequestedPathBandwidthObject(new Bandwidth(5353), false, false), new ArrayList<PCEPMetricObject>() {
519 private static final long serialVersionUID = 1L;
522 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
525 requests = new ArrayList<CompositeUpdateRequestObject>();
526 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true), paths));
527 specMessages.add(new PCEPUpdateRequestMessage(requests));
528 assertEquals(deserMsg("src/test/resources/PCUpd.3.bin"), specMessages);
530 specMessages = new ArrayList<PCEPMessage>();
531 requests = new ArrayList<CompositeUpdateRequestObject>();
532 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true)));
533 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true)));
534 specMessages.add(new PCEPUpdateRequestMessage(requests));
535 assertEquals(deserMsg("src/test/resources/PCUpd.4.bin"), specMessages);
537 specMessages = new ArrayList<PCEPMessage>();
538 requests = new ArrayList<CompositeUpdateRequestObject>();
539 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true)));
540 paths = new ArrayList<CompositeUpdPathObject>();
541 paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa,
542 new PCEPRequestedPathBandwidthObject(new Bandwidth(5353), false, false), new ArrayList<PCEPMetricObject>() {
543 private static final long serialVersionUID = 1L;
546 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
549 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true), paths));
550 paths = new ArrayList<CompositeUpdPathObject>();
551 paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa,
552 new PCEPRequestedPathBandwidthObject(new Bandwidth(5353), false, false), new ArrayList<PCEPMetricObject>() {
553 private static final long serialVersionUID = 1L;
556 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
559 paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa,
560 new PCEPRequestedPathBandwidthObject(new Bandwidth(5353), false, false), new ArrayList<PCEPMetricObject>() {
561 private static final long serialVersionUID = 1L;
564 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
567 paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa,
568 new PCEPRequestedPathBandwidthObject(new Bandwidth(5353), false, false), new ArrayList<PCEPMetricObject>() {
569 private static final long serialVersionUID = 1L;
572 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
573 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
576 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true), paths));
577 specMessages.add(new PCEPUpdateRequestMessage(requests));
578 assertEquals(deserMsg("src/test/resources/PCUpd.5.bin"), specMessages);
582 public void testRptMessageValidatorFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException, DeserializerException, DocumentedException {
583 List<PCEPMessage> specMessages = new ArrayList<PCEPMessage>();
584 List<CompositeStateReportObject> reports = new ArrayList<CompositeStateReportObject>();
585 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true)));
586 specMessages.add(new PCEPReportMessage(reports));
587 assertEquals(deserMsg("src/test/resources/PCRpt.1.bin"), specMessages);
589 specMessages = new ArrayList<PCEPMessage>();
590 List<CompositeRptPathObject> paths = new ArrayList<CompositeRptPathObject>();
591 paths.add(new CompositeRptPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, null, null, null));
592 reports = new ArrayList<CompositeStateReportObject>();
593 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true), paths));
594 specMessages.add(new PCEPReportMessage(reports));
595 assertEquals(deserMsg("src/test/resources/PCRpt.2.bin"), specMessages);
597 specMessages = new ArrayList<PCEPMessage>();
598 paths = new ArrayList<CompositeRptPathObject>();
599 paths.add(new CompositeRptPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa,
600 new PCEPExistingPathBandwidthObject(new Bandwidth(5353), false, false), new PCEPReportedRouteObject(this.rroSubobjects, false),
601 new ArrayList<PCEPMetricObject>() {
602 private static final long serialVersionUID = 1L;
605 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
609 reports = new ArrayList<CompositeStateReportObject>();
610 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true), paths));
611 specMessages.add(new PCEPReportMessage(reports));
613 //assertEquals(deserMsg("src/test/resources/PCRpt.3.bin"), specMessages);
615 specMessages = new ArrayList<PCEPMessage>();
616 reports = new ArrayList<CompositeStateReportObject>();
617 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true)));
618 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true)));
619 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true)));
620 specMessages.add(new PCEPReportMessage(reports));
621 assertEquals(deserMsg("src/test/resources/PCRpt.4.bin"), specMessages);
623 specMessages = new ArrayList<PCEPMessage>();
624 reports = new ArrayList<CompositeStateReportObject>();
625 paths = new ArrayList<CompositeRptPathObject>();
626 paths.add(new CompositeRptPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa,
627 new PCEPExistingPathBandwidthObject(new Bandwidth(5353), false, false), new PCEPReportedRouteObject(this.rroSubobjects, false),
628 new ArrayList<PCEPMetricObject>() {
629 private static final long serialVersionUID = 1L;
632 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
635 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true), paths));
636 paths = new ArrayList<CompositeRptPathObject>();
637 paths.add(new CompositeRptPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa,
638 new PCEPExistingPathBandwidthObject(new Bandwidth(5353), false, false), new PCEPReportedRouteObject(this.rroSubobjects, false),
639 new ArrayList<PCEPMetricObject>() {
640 private static final long serialVersionUID = 1L;
643 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
644 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
645 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
648 paths.add(new CompositeRptPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa,
649 new PCEPExistingPathBandwidthObject(new Bandwidth(5353), false, false), new PCEPReportedRouteObject(this.rroSubobjects, false),
650 new ArrayList<PCEPMetricObject>() {
651 private static final long serialVersionUID = 1L;
654 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
657 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true), paths));
658 specMessages.add(new PCEPReportMessage(reports));
660 //assertEquals(deserMsg("src/test/resources/PCRpt.5.bin"), specMessages);
664 public void testXRDeleteTunnelMessage() throws DeserializerException, DocumentedException, PCEPDeserializerException {
665 final PCEPXRDeleteTunnelMessage dTunnel = new PCEPXRDeleteTunnelMessage(new PCEPLspObject(1, false, true, false, true));
666 final byte[] bytes = this.msgFactory.put(dTunnel);
668 final PCEPRawMessage rawMessage = (PCEPRawMessage) this.msgFactory.parse(ByteArray.cutBytes(bytes, PCEPMessageHeader.COMMON_HEADER_LENGTH),
669 new PCEPMessageHeader().fromBytes(Arrays.copyOf(bytes, PCEPMessageHeader.COMMON_HEADER_LENGTH)));
671 assertEquals(PCEPMessageValidator.getValidator(rawMessage.getMsgType()).validate(rawMessage.getAllObjects()), asList((PCEPMessage) dTunnel));
675 public void testXRAddTunnelMessage() throws DeserializerException, DocumentedException, PCEPDeserializerException {
676 final List<ExplicitRouteSubobject> subs = new ArrayList<ExplicitRouteSubobject>();
677 subs.add(new EROAsNumberSubobject(new ASNumber(10), false));
678 final PCEPXRAddTunnelMessage addTunnel = new PCEPXRAddTunnelMessage(new PCEPLspObject(1, false, false, false, false),
679 new PCEPEndPointsObject<IPv4Address>(IPv4.FAMILY.addressForString("127.0.0.2"), IPv4.FAMILY.addressForString("127.0.0.1")),
680 new PCEPExplicitRouteObject(subs, true));
681 final byte[] bytes = this.msgFactory.put(addTunnel);
683 final PCEPRawMessage rawMessage = (PCEPRawMessage) this.msgFactory.parse(ByteArray.cutBytes(bytes, PCEPMessageHeader.COMMON_HEADER_LENGTH),
684 new PCEPMessageHeader().fromBytes(Arrays.copyOf(bytes, PCEPMessageHeader.COMMON_HEADER_LENGTH)));
685 assertEquals(PCEPMessageValidator.getValidator(rawMessage.getMsgType()).validate(rawMessage.getAllObjects()), asList((PCEPMessage) addTunnel));
689 public void testPCCreateMessage() throws DeserializerException, DocumentedException, PCEPDeserializerException {
690 final List<CompositeInstantiationObject> insts = new ArrayList<CompositeInstantiationObject>();
691 final List<ExplicitRouteSubobject> subs = new ArrayList<ExplicitRouteSubobject>();
692 subs.add(new EROAsNumberSubobject(new ASNumber(10), false));
693 final List<PCEPTlv> tlvs = new ArrayList<PCEPTlv>();
694 final LSPSymbolicNameTlv tlv = new LSPSymbolicNameTlv(new LSPSymbolicName(new byte[] { 5, 4 }));
696 insts.add(new CompositeInstantiationObject(new PCEPEndPointsObject<IPv4Address>(IPv4.FAMILY.addressForString("127.0.0.2"),
697 IPv4.FAMILY.addressForString("127.0.0.1")), PCEPValidatorTest.lspa, new PCEPExplicitRouteObject(subs, true), null, new ArrayList<PCEPMetricObject>() {
698 private static final long serialVersionUID = 1L;
701 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
702 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
703 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
706 final PCCreateMessage msg = new PCCreateMessage(insts);
708 final byte[] bytes = this.msgFactory.put(msg);
710 // FIXME: need construct with invalid processed parameter
711 final PCEPRawMessage rawMessage = (PCEPRawMessage) this.msgFactory.parse(ByteArray.cutBytes(bytes, PCEPMessageHeader.COMMON_HEADER_LENGTH),
712 new PCEPMessageHeader().fromBytes(Arrays.copyOf(bytes, PCEPMessageHeader.COMMON_HEADER_LENGTH)));
714 assertEquals(PCEPMessageValidator.getValidator(rawMessage.getMsgType()).validate(rawMessage.getAllObjects()), asList((PCEPMessage) msg));
718 public void testNotificationValidatorFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException, DeserializerException, DocumentedException {
719 List<CompositeNotifyObject> notifications = new ArrayList<CompositeNotifyObject>();
720 List<PCEPNotificationObject> notificationsList = new ArrayList<PCEPNotificationObject>();
721 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
722 notifications.add(new CompositeNotifyObject(notificationsList));
723 PCEPNotificationMessage specMessage = new PCEPNotificationMessage(notifications);
724 assertEquals(deserMsg("src/test/resources/PCNtf.1.bin"), asList((PCEPMessage) specMessage));
726 notifications = new ArrayList<CompositeNotifyObject>();
727 notificationsList = new ArrayList<PCEPNotificationObject>();
728 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
729 List<PCEPRequestParameterObject> requestsList = new ArrayList<PCEPRequestParameterObject>();
730 requestsList.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 3, 1, false, false));
731 notifications.add(new CompositeNotifyObject(requestsList, notificationsList));
732 specMessage = new PCEPNotificationMessage(notifications);
733 assertEquals(deserMsg("src/test/resources/PCNtf.2.bin"), asList((PCEPMessage) specMessage));
735 notifications = new ArrayList<CompositeNotifyObject>();
736 notificationsList = new ArrayList<PCEPNotificationObject>();
737 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
738 requestsList = new ArrayList<PCEPRequestParameterObject>();
739 requestsList.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 10, false, false));
740 notifications.add(new CompositeNotifyObject(requestsList, notificationsList));
741 specMessage = new PCEPNotificationMessage(notifications);
742 assertEquals(deserMsg("src/test/resources/PCNtf.3.bin"), asList((PCEPMessage) specMessage));
744 notifications = new ArrayList<CompositeNotifyObject>();
745 notificationsList = new ArrayList<PCEPNotificationObject>();
746 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
747 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 2));
748 notificationsList.add(new PCEPNotificationObject((short) 2, (short) 1));
749 notificationsList.add(new PCEPNotificationObject((short) 2, (short) 2));
750 notifications.add(new CompositeNotifyObject(notificationsList));
751 specMessage = new PCEPNotificationMessage(notifications);
752 assertEquals(deserMsg("src/test/resources/PCNtf.4.bin"), asList((PCEPMessage) specMessage));
754 notifications = new ArrayList<CompositeNotifyObject>();
755 notificationsList = new ArrayList<PCEPNotificationObject>();
756 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
757 requestsList = new ArrayList<PCEPRequestParameterObject>();
758 requestsList.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 10, false, false));
759 notifications.add(new CompositeNotifyObject(requestsList, notificationsList));
760 notificationsList = new ArrayList<PCEPNotificationObject>();
761 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
762 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
763 requestsList = new ArrayList<PCEPRequestParameterObject>();
764 requestsList.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 10, false, false));
765 requestsList.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 10, false, false));
766 notifications.add(new CompositeNotifyObject(requestsList, notificationsList));
767 specMessage = new PCEPNotificationMessage(notifications);
768 assertEquals(deserMsg("src/test/resources/PCNtf.5.bin"), asList((PCEPMessage) specMessage));
772 public void testErrorMessageValidatoinFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException, DeserializerException, DocumentedException {
773 List<PCEPErrorObject> errorsList = new ArrayList<PCEPErrorObject>();
774 errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
776 PCEPErrorMessage specMessage = new PCEPErrorMessage(errorsList);
777 assertEquals(deserMsg("src/test/resources/PCErr.1.bin"), asList((PCEPMessage) specMessage));
779 List<PCEPRequestParameterObject> requests = new ArrayList<PCEPRequestParameterObject>();
780 requests.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 3, 1, false, false));
782 List<CompositeErrorObject> errors = new ArrayList<CompositeErrorObject>();
783 errors.add(new CompositeErrorObject(requests, errorsList));
785 specMessage = new PCEPErrorMessage(errors);
786 assertEquals(deserMsg("src/test/resources/PCErr.2.bin"), asList((PCEPMessage) specMessage));
788 specMessage = new PCEPErrorMessage(new PCEPOpenObject(0, 0, 0), errorsList, null);
789 assertEquals(deserMsg("src/test/resources/PCErr.3.bin"), asList((PCEPMessage) specMessage));
791 requests = new ArrayList<PCEPRequestParameterObject>();
792 requests.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 53, false, false));
794 errors = new ArrayList<CompositeErrorObject>();
795 errors.add(new CompositeErrorObject(requests, errorsList));
797 specMessage = new PCEPErrorMessage(errors);
798 assertEquals(deserMsg("src/test/resources/PCErr.3b.bin"), asList((PCEPMessage) specMessage));
800 errorsList = new ArrayList<PCEPErrorObject>();
801 errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
802 errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
803 errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
805 specMessage = new PCEPErrorMessage(null, errorsList, null);
806 assertEquals(deserMsg("src/test/resources/PCErr.4.bin"), asList((PCEPMessage) specMessage));
808 requests = new ArrayList<PCEPRequestParameterObject>();
809 requests.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 53, false, false));
811 errorsList = new ArrayList<PCEPErrorObject>();
812 errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
814 errors = new ArrayList<CompositeErrorObject>();
815 errors.add(new CompositeErrorObject(requests, errorsList));
816 errors.add(new CompositeErrorObject(requests, errorsList));
818 specMessage = new PCEPErrorMessage(errors);
819 assertEquals(deserMsg("src/test/resources/PCErr.5.bin"), asList((PCEPMessage) specMessage));