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.PCEPMessageFactory.PCEPMessageType;
36 import org.opendaylight.protocol.pcep.impl.message.PCEPRawMessage;
37 import org.opendaylight.protocol.pcep.impl.object.UnknownObject;
38 import org.opendaylight.protocol.pcep.message.PCCreateMessage;
39 import org.opendaylight.protocol.pcep.message.PCEPCloseMessage;
40 import org.opendaylight.protocol.pcep.message.PCEPErrorMessage;
41 import org.opendaylight.protocol.pcep.message.PCEPKeepAliveMessage;
42 import org.opendaylight.protocol.pcep.message.PCEPNotificationMessage;
43 import org.opendaylight.protocol.pcep.message.PCEPOpenMessage;
44 import org.opendaylight.protocol.pcep.message.PCEPReplyMessage;
45 import org.opendaylight.protocol.pcep.message.PCEPReportMessage;
46 import org.opendaylight.protocol.pcep.message.PCEPRequestMessage;
47 import org.opendaylight.protocol.pcep.message.PCEPUpdateRequestMessage;
48 import org.opendaylight.protocol.pcep.message.PCEPXRAddTunnelMessage;
49 import org.opendaylight.protocol.pcep.message.PCEPXRDeleteTunnelMessage;
50 import org.opendaylight.protocol.pcep.object.CompositeErrorObject;
51 import org.opendaylight.protocol.pcep.object.CompositeInstantiationObject;
52 import org.opendaylight.protocol.pcep.object.CompositeNotifyObject;
53 import org.opendaylight.protocol.pcep.object.CompositePathObject;
54 import org.opendaylight.protocol.pcep.object.CompositeReplySvecObject;
55 import org.opendaylight.protocol.pcep.object.CompositeRequestObject;
56 import org.opendaylight.protocol.pcep.object.CompositeRequestSvecObject;
57 import org.opendaylight.protocol.pcep.object.CompositeResponseObject;
58 import org.opendaylight.protocol.pcep.object.CompositeRptPathObject;
59 import org.opendaylight.protocol.pcep.object.CompositeStateReportObject;
60 import org.opendaylight.protocol.pcep.object.CompositeUpdPathObject;
61 import org.opendaylight.protocol.pcep.object.CompositeUpdateRequestObject;
62 import org.opendaylight.protocol.pcep.object.PCEPCloseObject;
63 import org.opendaylight.protocol.pcep.object.PCEPCloseObject.Reason;
64 import org.opendaylight.protocol.pcep.object.PCEPEndPointsObject;
65 import org.opendaylight.protocol.pcep.object.PCEPErrorObject;
66 import org.opendaylight.protocol.pcep.object.PCEPExcludeRouteObject;
67 import org.opendaylight.protocol.pcep.object.PCEPExistingPathBandwidthObject;
68 import org.opendaylight.protocol.pcep.object.PCEPExplicitRouteObject;
69 import org.opendaylight.protocol.pcep.object.PCEPGlobalConstraintsObject;
70 import org.opendaylight.protocol.pcep.object.PCEPIncludeRouteObject;
71 import org.opendaylight.protocol.pcep.object.PCEPLoadBalancingObject;
72 import org.opendaylight.protocol.pcep.object.PCEPLspObject;
73 import org.opendaylight.protocol.pcep.object.PCEPLspaObject;
74 import org.opendaylight.protocol.pcep.object.PCEPMetricObject;
75 import org.opendaylight.protocol.pcep.object.PCEPNoPathObject;
76 import org.opendaylight.protocol.pcep.object.PCEPNotificationObject;
77 import org.opendaylight.protocol.pcep.object.PCEPObjectiveFunctionObject;
78 import org.opendaylight.protocol.pcep.object.PCEPOpenObject;
79 import org.opendaylight.protocol.pcep.object.PCEPReportedRouteObject;
80 import org.opendaylight.protocol.pcep.object.PCEPRequestParameterObject;
81 import org.opendaylight.protocol.pcep.object.PCEPRequestedPathBandwidthObject;
82 import org.opendaylight.protocol.pcep.object.PCEPSvecObject;
83 import org.opendaylight.protocol.pcep.subobject.EROAsNumberSubobject;
84 import org.opendaylight.protocol.pcep.subobject.EROUnnumberedInterfaceSubobject;
85 import org.opendaylight.protocol.pcep.subobject.ExcludeRouteSubobject;
86 import org.opendaylight.protocol.pcep.subobject.ExplicitRouteSubobject;
87 import org.opendaylight.protocol.pcep.subobject.RROUnnumberedInterfaceSubobject;
88 import org.opendaylight.protocol.pcep.subobject.ReportedRouteSubobject;
89 import org.opendaylight.protocol.pcep.subobject.XROAsNumberSubobject;
90 import org.opendaylight.protocol.pcep.tlv.LSPStateDBVersionTlv;
91 import org.opendaylight.protocol.pcep.tlv.LSPSymbolicNameTlv;
92 import org.opendaylight.protocol.pcep.tlv.PCEStatefulCapabilityTlv;
93 import org.opendaylight.protocol.util.ByteArray;
95 public class PCEPValidatorTest {
97 private static final PCEPLspaObject lspa = new PCEPLspaObject(0L, 0L, 0L, (short) 0, (short) 0, false, false, false, false);
99 private final List<ExplicitRouteSubobject> eroSubobjects = asList(
100 new EROAsNumberSubobject(new ASNumber(0xFFFFL), false),
101 new EROUnnumberedInterfaceSubobject(new IPv4Address(new byte[] { (byte) 0x00, (byte) 0x11, (byte) 0x22, (byte) 0x33 }), new UnnumberedInterfaceIdentifier(0x00FF00FF), false));
103 private final List<ReportedRouteSubobject> rroSubobjects = asList((ReportedRouteSubobject) new RROUnnumberedInterfaceSubobject(new IPv4Address(new byte[] {
104 (byte) 0x00, (byte) 0x11, (byte) 0x22, (byte) 0x33 }), new UnnumberedInterfaceIdentifier(0x00FF00FF)));
106 private final List<Long> requestIds = asList(0x000001L);
108 private final IPv4Address ip4addr = new IPv4Address(new byte[] { (byte) 0xFF, 0x00, 0x00, 0x01 });
110 private final PCEPSvecObject svecObj = new PCEPSvecObject(true, true, true, false, false, PCEPValidatorTest.this.requestIds, true);
112 private final PCEPRequestParameterObject requestParameter = new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 3, 1, true, false);
114 // private final PCEPEndPointsObject<IPv4Address> endPoints = new
115 // PCEPEndPointsObject<IPv4Address>(this.ip4addr, this.ip4addr);
117 private final PCEPEndPointsObject<IPv4Address> endPoints = new PCEPEndPointsObject<IPv4Address>(this.ip4addr, this.ip4addr);
119 private final PCEPMessageFactory msgFactory = new PCEPMessageFactory();
121 // private final PCEPClassTypeObject classType = new
122 // PCEPClassTypeObject((short) 7);
123 // private final PCEPClassTypeObjectProvider classTypeProvider = new
124 // PCEPClassTypeObjectProvider((short) 7, true);
126 private static List<PCEPMessage> deserMsg(final String srcFile) throws IOException, DeserializerException, DocumentedException,
127 PCEPDeserializerException {
128 final byte[] bytesFromFile = ByteArray.fileToBytes(srcFile);
129 final PCEPRawMessage rawMessage = (PCEPRawMessage) new PCEPMessageFactory().parse(ByteArray.cutBytes(bytesFromFile, 1));
131 return PCEPMessageValidator.getValidator(rawMessage.getMsgType()).validate(rawMessage.getAllObjects());
135 public void testOpenMessageValidationFromBin() throws IOException, DeserializerException, DocumentedException,
136 PCEPDeserializerException {
138 deserMsg("src/test/resources/PCEPOpenMessage1.bin"),
139 asList(new PCEPOpenMessage(new PCEPOpenObject(30, 120, 1, asList(new PCEStatefulCapabilityTlv(false, true, true),
140 new LSPStateDBVersionTlv(0x80))))));
142 assertEquals(deserMsg("src/test/resources/Open.1.bin"), asList(new PCEPOpenMessage(new PCEPOpenObject(1, 4, 1))));
145 deserMsg("src/test/resources/Open.3.bin"),
146 asList(new PCEPOpenMessage(new PCEPOpenObject(1, 4, 1, asList(new PCEStatefulCapabilityTlv(false, true, true),
147 new LSPStateDBVersionTlv(53))))));
151 public void testKeepAliveMessageValidationFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException,
152 DeserializerException, DocumentedException {
153 assertEquals(deserMsg("src/test/resources/PCEPKeepAliveMessage1.bin"), asList(new PCEPKeepAliveMessage()));
154 assertEquals(deserMsg("src/test/resources/Keepalive.1.bin"), asList(new PCEPKeepAliveMessage()));
158 public void testCloseMsg() throws PCEPDeserializerException, IOException, PCEPDocumentedException, DeserializerException,
159 DocumentedException {
160 assertEquals(deserMsg("src/test/resources/PCEPCloseMessage1.bin"),
161 asList(new PCEPCloseMessage(new PCEPCloseObject(Reason.TOO_MANY_UNKNOWN_MSG))));
162 assertEquals(deserMsg("src/test/resources/Close.1.bin"), asList(new PCEPCloseMessage(new PCEPCloseObject(Reason.UNKNOWN))));
166 public void testRequestMessageValidationFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException,
167 DeserializerException, DocumentedException {
168 List<CompositeRequestObject> requests = new ArrayList<CompositeRequestObject>();
169 final byte[] ipAdress = { (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF };
170 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))));
171 PCEPRequestMessage specMessage = new PCEPRequestMessage(requests);
172 List<PCEPMessage> deserMsgs = deserMsg("src/test/resources/PCEPRequestMessage1.bin");
173 final List<PCEPMessage> specMessages = new ArrayList<PCEPMessage>();
174 specMessages.add(specMessage);
176 assertEquals(deserMsgs, specMessages);
178 requests = new ArrayList<CompositeRequestObject>();
179 final byte[] ipAdress2 = { (byte) 0x7F, (byte) 0x00, (byte) 0x00, (byte) 0x01 };
180 requests.add(new CompositeRequestObject(this.requestParameter, new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress2), new IPv4Address(ipAdress2))));
181 specMessage = new PCEPRequestMessage(requests);
182 deserMsgs = deserMsg("src/test/resources/PCReq.1.bin");
183 specMessages.clear();
184 specMessages.add(specMessage);
185 assertEquals(deserMsgs, specMessages);
187 requests = new ArrayList<CompositeRequestObject>();
188 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)));
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, false, false, true, false), PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(1000), false, false), new ArrayList<PCEPMetricObject>() {
197 private static final long serialVersionUID = 1L;
200 this.add(new PCEPMetricObject(true, true, new IGPMetric(53L), false, false));
202 }, 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)));
204 List<CompositeRequestSvecObject> svecList = new ArrayList<CompositeRequestSvecObject>();
205 svecList.add(new CompositeRequestSvecObject(new PCEPSvecObject(true, false, false, false, false, this.requestIds, false)));
207 specMessage = new PCEPRequestMessage(svecList, requests);
208 deserMsgs = deserMsg("src/test/resources/PCReq.3.bin");
209 specMessages.clear();
210 specMessages.add(specMessage);
211 assertEquals(deserMsgs, specMessages);
213 specMessages.clear();
214 requests = new ArrayList<CompositeRequestObject>();
215 requests.add(new CompositeRequestObject(this.requestParameter, new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress2), new IPv4Address(ipAdress2)), null, null, null, null, null, null, null, null, null));
216 specMessages.add(new PCEPRequestMessage(requests));
218 final byte[] ipAdress3 = { (byte) 0x7F, (byte) 0x00, (byte) 0x30, (byte) 0x01 };
219 requests = new ArrayList<CompositeRequestObject>();
220 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));
221 specMessages.add(new PCEPRequestMessage(requests));
223 final byte[] ipAdress4 = { (byte) 0x7F, (byte) 0x30, (byte) 0x00, (byte) 0x01 };
224 requests = new ArrayList<CompositeRequestObject>();
225 requests.add(new CompositeRequestObject(this.requestParameter, new PCEPEndPointsObject<IPv4Address>(new IPv4Address(ipAdress2), new IPv4Address(ipAdress4)), null, null, null, null, null, null, null, null, null));
226 specMessages.add(new PCEPRequestMessage(requests));
228 final byte[] ipAdress5 = { (byte) 0x7F, (byte) 0xd0, (byte) 0x00, (byte) 0x01 };
229 requests = new ArrayList<CompositeRequestObject>();
230 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));
232 specMessages.add(new PCEPRequestMessage(requests));
233 deserMsgs = deserMsg("src/test/resources/PCReq.4.bin");
234 assertEquals(deserMsgs, specMessages);
236 specMessages.clear();
237 svecList = new ArrayList<CompositeRequestSvecObject>();
238 svecList.add(new CompositeRequestSvecObject(new PCEPSvecObject(true, false, false, false, false, this.requestIds, false)));
239 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>() {
240 private static final long serialVersionUID = 1L;
243 this.add(new XROAsNumberSubobject(new ASNumber(0x12), true));
245 }, true, true, false), new ArrayList<PCEPMetricObject>() {
246 private static final long serialVersionUID = 1L;
249 this.add(new PCEPMetricObject(true, true, new TEMetric(123456L), true, false));
253 requests = new ArrayList<CompositeRequestObject>();
254 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>() {
255 private static final long serialVersionUID = 1L;
258 this.add(new PCEPMetricObject(true, true, new IGPMetric(53L), false, false));
259 this.add(new PCEPMetricObject(true, true, new IGPMetric(5335L), false, false));
260 this.add(new PCEPMetricObject(true, true, new IGPMetric(128256), false, false));
262 }, 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)));
264 final byte[] ipAdress6 = { (byte) 0x7F, (byte) 0xF0, (byte) 0x00, (byte) 0x01 };
265 specMessages.add(new PCEPRequestMessage(svecList, requests));
267 requests = new ArrayList<CompositeRequestObject>();
268 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>() {
269 private static final long serialVersionUID = 1L;
272 this.add(new PCEPMetricObject(true, true, new IGPMetric(53L), false, false));
274 }, 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)));
275 deserMsgs = deserMsg("src/test/resources/PCReq.5.bin");
276 specMessages.add(new PCEPRequestMessage(svecList, requests));
277 assertEquals(deserMsgs, specMessages);
279 // FIXME: need construct with invalid processed parameter
280 // assertEquals(deserMsg("src/test/resources/PCReq.6.invalid.bin"),
282 // new PCEPErrorMessage(new CompositeErrorObject(new
283 // PCEPRequestParameterObject(true, false, false, false, false, false,
284 // false, false, (short) 3,
285 // 1L, false, false), new PCEPErrorObject(PCEPErrors.P_FLAG_NOT_SET))),
286 // new PCEPRequestMessage(asList(new
287 // CompositeRequestObject(this.requestParameter, new
288 // PCEPEndPointsObject<IPv4Address>(IPv4Address
289 // .getNetworkAddressFactory().getNetworkAddressForBytes(new byte[] {
290 // 127, 0, 0, 1 }), IPv4Address.getNetworkAddressFactory()
291 // .getNetworkAddressForBytes(new byte[] { 127, 0, 0, 1 })), null, null,
292 // null, null, null, null, null, null, new PCEPLoadBalancingObject(
293 // 3, new Bandwidth(1024.75), false))))));
298 public void testRequestMessageValidationFromRawMsg() throws PCEPDeserializerException {
299 List<PCEPObject> objs = new ArrayList<PCEPObject>();
300 List<PCEPMessage> msgs;
301 PCEPRequestParameterObject tmpRP;
303 // test unrecognized object in svec list
304 objs.add(this.svecObj);
305 objs.add(new UnknownObject(true, false, PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
306 objs.add(new PCEPSvecObject(true, true, true, false, false, PCEPValidatorTest.this.requestIds, true));
308 msgs = PCEPMessageValidator.getValidator(PCEPMessageType.REQUEST).validate(objs);
310 assertEquals(msgs.get(0), new PCEPErrorMessage(new ArrayList<PCEPErrorObject>() {
311 private static final long serialVersionUID = 1L;
314 this.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
318 // test with request p flag not set and ignoracion of more than one
319 // end-points objects
320 objs = new ArrayList<PCEPObject>();
321 objs.add(this.svecObj);
322 objs.add(this.svecObj);
323 tmpRP = new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 3, 1, false, false);
325 objs.add(this.endPoints);
327 objs.add(this.requestParameter);
328 objs.add(this.endPoints);
329 objs.add(this.endPoints);
330 // FIXME:mv use object constructor with set processed flag
331 // objs.add(this.classTypeProvider);
332 // objs.add(this.requestParameter);
333 // objs.add(this.endPointsProvider);
334 // objs.add(new PCEPClassTypeObjectProvider((short) 7, false));
336 msgs = PCEPMessageValidator.getValidator(PCEPMessageType.REQUEST).validate(objs);
337 // FIXME:mv use object constructor with set processed flag
338 // assertEquals(msgs.get(0), new PCEPErrorMessage(new
339 // CompositeErrorObject(tmpRP, new
340 // PCEPErrorObject(PCEPErrors.P_FLAG_NOT_SET))));
343 // new PCEPRequestMessage(asList(new
344 // CompositeRequestSvecObject(this.svecObj), new
345 // CompositeRequestSvecObject(this.svecObj)), Util
346 // .asList(new CompositeRequestObject(this.requestParameter,
347 // this.endPoints, this.classType, null, null, null, null, null, null,
350 // assertEquals(msgs.get(2), new PCEPErrorMessage(new
351 // CompositeErrorObject(tmpRP, new
352 // PCEPErrorObject(PCEPErrors.P_FLAG_NOT_SET))));
356 public void testReplyMessageValidatorFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException,
357 DeserializerException, DocumentedException {
359 List<PCEPReplyMessage> specMessages = new ArrayList<PCEPReplyMessage>();
360 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 5, 0xDEADBEEFL, true, true)))));
361 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, true, true, false, false, false, false, false, (short) 7, 0x12345678L, false, false)))));
362 assertEquals(deserMsg("src/test/resources/PCEPReplyMessage1.bin"), specMessages);
364 specMessages = new ArrayList<PCEPReplyMessage>();
365 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 3, 1, false, false)))));
366 assertEquals(deserMsg("src/test/resources/PCRep.1.bin"), specMessages);
368 specMessages = new ArrayList<PCEPReplyMessage>();
369 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 3, 1, false, false)))));
370 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))));
371 assertEquals(deserMsg("src/test/resources/PCRep.2.bin"), specMessages);
373 specMessages = new ArrayList<PCEPReplyMessage>();
374 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>() {
375 private static final long serialVersionUID = 1L;
378 this.add(new PCEPMetricObject(true, true, new IGPMetric(234), false, false));
380 }, new PCEPIncludeRouteObject(this.eroSubobjects, false, false), new ArrayList<CompositePathObject>() {
381 private static final long serialVersionUID = 1L;
384 this.add(new CompositePathObject(new PCEPExplicitRouteObject(PCEPValidatorTest.this.eroSubobjects, false), lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(500f), false, false), new ArrayList<PCEPMetricObject>() {
385 private static final long serialVersionUID = 1L;
388 this.add(new PCEPMetricObject(true, true, new IGPMetric(234L), false, false));
390 }, new PCEPIncludeRouteObject(PCEPValidatorTest.this.eroSubobjects, false, false)));
393 assertEquals(deserMsg("src/test/resources/PCRep.3.bin"), specMessages);
395 specMessages = new ArrayList<PCEPReplyMessage>();
396 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 7, 1, false, false)))));
397 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 2, false, false)))));
398 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 2, 4, false, false)))));
399 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(false, false, false, false, false, false, false, false, (short) 3, 4, false, false)))));
400 specMessages.add(new PCEPReplyMessage(asList(new CompositeResponseObject(new PCEPRequestParameterObject(false, false, false, false, false, false, false, false, (short) 6, 5, false, false)))));
401 assertEquals(deserMsg("src/test/resources/PCRep.4.bin"), specMessages);
403 specMessages = new ArrayList<PCEPReplyMessage>();
404 final List<Long> requestIDs = new ArrayList<Long>();
405 requestIDs.add(0x25069045L);
407 final List<PCEPMetricObject> metrics = new ArrayList<PCEPMetricObject>();
408 metrics.add(new PCEPMetricObject(true, true, new IGPMetric(234L), true, false));
410 final List<CompositeReplySvecObject> svecList = new ArrayList<CompositeReplySvecObject>();
411 svecList.add(new CompositeReplySvecObject(new PCEPSvecObject(true, true, true, false, false, requestIDs, true), new PCEPObjectiveFunctionObject(PCEPOFCodes.MCC, true, false), metrics));
413 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>() {
414 private static final long serialVersionUID = 1L;
417 this.add(new PCEPMetricObject(true, true, new IGPMetric(234), false, false));
419 }, new PCEPIncludeRouteObject(this.eroSubobjects, false, false), new ArrayList<CompositePathObject>() {
420 private static final long serialVersionUID = 1L;
423 this.add(new CompositePathObject(new PCEPExplicitRouteObject(PCEPValidatorTest.this.eroSubobjects, false), lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(500f), false, false), new ArrayList<PCEPMetricObject>() {
424 private static final long serialVersionUID = 1L;
427 this.add(new PCEPMetricObject(true, true, new IGPMetric(234L), false, false));
428 this.add(new PCEPMetricObject(true, true, new IGPMetric(5355L), false, false));
429 this.add(new PCEPMetricObject(true, true, new IGPMetric(5353L), false, false));
431 }, new PCEPIncludeRouteObject(PCEPValidatorTest.this.eroSubobjects, false, false)));
434 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>() {
435 private static final long serialVersionUID = 1L;
438 this.add(new PCEPMetricObject(true, true, new IGPMetric(234), false, false));
440 }, new PCEPIncludeRouteObject(this.eroSubobjects, false, false), new ArrayList<CompositePathObject>() {
441 private static final long serialVersionUID = 1L;
444 this.add(new CompositePathObject(new PCEPExplicitRouteObject(PCEPValidatorTest.this.eroSubobjects, false), lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(500f), false, false), new ArrayList<PCEPMetricObject>() {
445 private static final long serialVersionUID = 1L;
448 this.add(new PCEPMetricObject(true, true, new IGPMetric(234L), false, false));
450 }, new PCEPIncludeRouteObject(PCEPValidatorTest.this.eroSubobjects, false, false)));
451 this.add(new CompositePathObject(new PCEPExplicitRouteObject(PCEPValidatorTest.this.eroSubobjects, false), lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(500f), false, false), new ArrayList<PCEPMetricObject>() {
452 private static final long serialVersionUID = 1L;
455 this.add(new PCEPMetricObject(true, true, new IGPMetric(234L), false, false));
457 }, new PCEPIncludeRouteObject(PCEPValidatorTest.this.eroSubobjects, false, false)));
460 assertEquals(deserMsg("src/test/resources/PCRep.5.bin"), specMessages);
464 public void testUpdMessageValidatorFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException,
465 DeserializerException, DocumentedException {
466 List<PCEPMessage> specMessages = new ArrayList<PCEPMessage>();
468 List<CompositeUpdateRequestObject> requests = new ArrayList<CompositeUpdateRequestObject>();
469 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true)));
471 specMessages.add(new PCEPUpdateRequestMessage(requests));
472 assertEquals(deserMsg("src/test/resources/PCUpd.1.bin"), specMessages);
474 specMessages = new ArrayList<PCEPMessage>();
475 List<CompositeUpdPathObject> paths = new ArrayList<CompositeUpdPathObject>();
476 paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, null, null));
477 requests = new ArrayList<CompositeUpdateRequestObject>();
478 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true), paths));
479 specMessages.add(new PCEPUpdateRequestMessage(requests));
480 assertEquals(deserMsg("src/test/resources/PCUpd.2.bin"), specMessages);
482 specMessages = new ArrayList<PCEPMessage>();
483 paths = new ArrayList<CompositeUpdPathObject>();
484 paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(5353), false, false), new ArrayList<PCEPMetricObject>() {
485 private static final long serialVersionUID = 1L;
488 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
491 requests = new ArrayList<CompositeUpdateRequestObject>();
492 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true), paths));
493 specMessages.add(new PCEPUpdateRequestMessage(requests));
494 assertEquals(deserMsg("src/test/resources/PCUpd.3.bin"), specMessages);
496 specMessages = new ArrayList<PCEPMessage>();
497 requests = new ArrayList<CompositeUpdateRequestObject>();
498 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true)));
499 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true)));
500 specMessages.add(new PCEPUpdateRequestMessage(requests));
501 assertEquals(deserMsg("src/test/resources/PCUpd.4.bin"), specMessages);
503 specMessages = new ArrayList<PCEPMessage>();
504 requests = new ArrayList<CompositeUpdateRequestObject>();
505 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true)));
506 paths = new ArrayList<CompositeUpdPathObject>();
507 paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(5353), false, false), new ArrayList<PCEPMetricObject>() {
508 private static final long serialVersionUID = 1L;
511 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
514 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true), paths));
515 paths = new ArrayList<CompositeUpdPathObject>();
516 paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(5353), false, false), new ArrayList<PCEPMetricObject>() {
517 private static final long serialVersionUID = 1L;
520 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
523 paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(5353), false, false), new ArrayList<PCEPMetricObject>() {
524 private static final long serialVersionUID = 1L;
527 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
530 paths.add(new CompositeUpdPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, new PCEPRequestedPathBandwidthObject(new Bandwidth(5353), false, false), new ArrayList<PCEPMetricObject>() {
531 private static final long serialVersionUID = 1L;
534 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
535 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
538 requests.add(new CompositeUpdateRequestObject(new PCEPLspObject(1, true, false, true, true), paths));
539 specMessages.add(new PCEPUpdateRequestMessage(requests));
540 assertEquals(deserMsg("src/test/resources/PCUpd.5.bin"), specMessages);
544 public void testRptMessageValidatorFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException,
545 DeserializerException, DocumentedException {
546 List<PCEPMessage> specMessages = new ArrayList<PCEPMessage>();
547 List<CompositeStateReportObject> reports = new ArrayList<CompositeStateReportObject>();
548 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true)));
549 specMessages.add(new PCEPReportMessage(reports));
550 assertEquals(deserMsg("src/test/resources/PCRpt.1.bin"), specMessages);
552 specMessages = new ArrayList<PCEPMessage>();
553 List<CompositeRptPathObject> paths = new ArrayList<CompositeRptPathObject>();
554 paths.add(new CompositeRptPathObject(new PCEPExplicitRouteObject(this.eroSubobjects, false), PCEPValidatorTest.lspa, null, null, null));
555 reports = new ArrayList<CompositeStateReportObject>();
556 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true), paths));
557 specMessages.add(new PCEPReportMessage(reports));
558 assertEquals(deserMsg("src/test/resources/PCRpt.2.bin"), specMessages);
560 specMessages = new ArrayList<PCEPMessage>();
561 paths = new ArrayList<CompositeRptPathObject>();
562 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>() {
563 private static final long serialVersionUID = 1L;
566 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
570 reports = new ArrayList<CompositeStateReportObject>();
571 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true), paths));
572 specMessages.add(new PCEPReportMessage(reports));
574 // assertEquals(deserMsg("src/test/resources/PCRpt.3.bin"), specMessages);
576 specMessages = new ArrayList<PCEPMessage>();
577 reports = new ArrayList<CompositeStateReportObject>();
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 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true)));
581 specMessages.add(new PCEPReportMessage(reports));
582 assertEquals(deserMsg("src/test/resources/PCRpt.4.bin"), specMessages);
584 specMessages = new ArrayList<PCEPMessage>();
585 reports = new ArrayList<CompositeStateReportObject>();
586 paths = new ArrayList<CompositeRptPathObject>();
587 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>() {
588 private static final long serialVersionUID = 1L;
591 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
594 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true), paths));
595 paths = new ArrayList<CompositeRptPathObject>();
596 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>() {
597 private static final long serialVersionUID = 1L;
600 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
601 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
602 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
605 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>() {
606 private static final long serialVersionUID = 1L;
609 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
612 reports.add(new CompositeStateReportObject(new PCEPLspObject(1, true, false, true, true), paths));
613 specMessages.add(new PCEPReportMessage(reports));
615 // assertEquals(deserMsg("src/test/resources/PCRpt.5.bin"), specMessages);
619 public void testXRDeleteTunnelMessage() throws DeserializerException, DocumentedException, PCEPDeserializerException {
620 final PCEPXRDeleteTunnelMessage dTunnel = new PCEPXRDeleteTunnelMessage(new PCEPLspObject(1, false, true, false, true));
621 final byte[] bytes = this.msgFactory.put(dTunnel);
623 final PCEPRawMessage rawMessage = (PCEPRawMessage) this.msgFactory.parse(ByteArray.cutBytes(bytes, 1));
625 assertEquals(PCEPMessageValidator.getValidator(rawMessage.getMsgType()).validate(rawMessage.getAllObjects()),
626 asList((PCEPMessage) dTunnel));
630 public void testXRAddTunnelMessage() throws DeserializerException, DocumentedException, PCEPDeserializerException {
631 final List<ExplicitRouteSubobject> subs = new ArrayList<ExplicitRouteSubobject>();
632 subs.add(new EROAsNumberSubobject(new ASNumber(10), false));
633 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));
634 final byte[] bytes = this.msgFactory.put(addTunnel);
636 final PCEPRawMessage rawMessage = (PCEPRawMessage) this.msgFactory.parse(ByteArray.cutBytes(bytes, 1));
637 assertEquals(PCEPMessageValidator.getValidator(rawMessage.getMsgType()).validate(rawMessage.getAllObjects()),
638 asList((PCEPMessage) addTunnel));
642 public void testPCCreateMessage() throws DeserializerException, DocumentedException, PCEPDeserializerException {
643 final List<CompositeInstantiationObject> insts = new ArrayList<CompositeInstantiationObject>();
644 final List<ExplicitRouteSubobject> subs = new ArrayList<ExplicitRouteSubobject>();
645 subs.add(new EROAsNumberSubobject(new ASNumber(10), false));
646 final List<PCEPTlv> tlvs = new ArrayList<PCEPTlv>();
647 final LSPSymbolicNameTlv tlv = new LSPSymbolicNameTlv(new LSPSymbolicName(new byte[] { 5, 4 }));
649 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>() {
650 private static final long serialVersionUID = 1L;
653 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
654 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
655 this.add(new PCEPMetricObject(true, false, new IGPMetric(4L), false, false));
658 final PCCreateMessage msg = new PCCreateMessage(insts);
660 final byte[] bytes = this.msgFactory.put(msg);
662 // FIXME: need construct with invalid processed parameter
663 final PCEPRawMessage rawMessage = (PCEPRawMessage) this.msgFactory.parse(ByteArray.cutBytes(bytes, 1));
665 assertEquals(PCEPMessageValidator.getValidator(rawMessage.getMsgType()).validate(rawMessage.getAllObjects()),
666 asList((PCEPMessage) msg));
670 public void testNotificationValidatorFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException,
671 DeserializerException, DocumentedException {
672 List<CompositeNotifyObject> notifications = new ArrayList<CompositeNotifyObject>();
673 List<PCEPNotificationObject> notificationsList = new ArrayList<PCEPNotificationObject>();
674 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
675 notifications.add(new CompositeNotifyObject(notificationsList));
676 PCEPNotificationMessage specMessage = new PCEPNotificationMessage(notifications);
677 assertEquals(deserMsg("src/test/resources/PCNtf.1.bin"), asList((PCEPMessage) specMessage));
679 notifications = new ArrayList<CompositeNotifyObject>();
680 notificationsList = new ArrayList<PCEPNotificationObject>();
681 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
682 List<PCEPRequestParameterObject> requestsList = new ArrayList<PCEPRequestParameterObject>();
683 requestsList.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 3, 1, false, false));
684 notifications.add(new CompositeNotifyObject(requestsList, notificationsList));
685 specMessage = new PCEPNotificationMessage(notifications);
686 assertEquals(deserMsg("src/test/resources/PCNtf.2.bin"), asList((PCEPMessage) specMessage));
688 notifications = new ArrayList<CompositeNotifyObject>();
689 notificationsList = new ArrayList<PCEPNotificationObject>();
690 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
691 requestsList = new ArrayList<PCEPRequestParameterObject>();
692 requestsList.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 10, false, false));
693 notifications.add(new CompositeNotifyObject(requestsList, notificationsList));
694 specMessage = new PCEPNotificationMessage(notifications);
695 assertEquals(deserMsg("src/test/resources/PCNtf.3.bin"), asList((PCEPMessage) specMessage));
697 notifications = new ArrayList<CompositeNotifyObject>();
698 notificationsList = new ArrayList<PCEPNotificationObject>();
699 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
700 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 2));
701 notificationsList.add(new PCEPNotificationObject((short) 2, (short) 1));
702 notificationsList.add(new PCEPNotificationObject((short) 2, (short) 2));
703 notifications.add(new CompositeNotifyObject(notificationsList));
704 specMessage = new PCEPNotificationMessage(notifications);
705 assertEquals(deserMsg("src/test/resources/PCNtf.4.bin"), asList((PCEPMessage) specMessage));
707 notifications = new ArrayList<CompositeNotifyObject>();
708 notificationsList = new ArrayList<PCEPNotificationObject>();
709 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
710 requestsList = new ArrayList<PCEPRequestParameterObject>();
711 requestsList.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 10, false, false));
712 notifications.add(new CompositeNotifyObject(requestsList, notificationsList));
713 notificationsList = new ArrayList<PCEPNotificationObject>();
714 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
715 notificationsList.add(new PCEPNotificationObject((short) 1, (short) 1));
716 requestsList = new ArrayList<PCEPRequestParameterObject>();
717 requestsList.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 10, false, false));
718 requestsList.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 10, false, false));
719 notifications.add(new CompositeNotifyObject(requestsList, notificationsList));
720 specMessage = new PCEPNotificationMessage(notifications);
721 assertEquals(deserMsg("src/test/resources/PCNtf.5.bin"), asList((PCEPMessage) specMessage));
725 public void testErrorMessageValidatoinFromBin() throws IOException, PCEPDeserializerException, PCEPDocumentedException,
726 DeserializerException, DocumentedException {
727 List<PCEPErrorObject> errorsList = new ArrayList<PCEPErrorObject>();
728 errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
730 PCEPErrorMessage specMessage = new PCEPErrorMessage(errorsList);
731 assertEquals(deserMsg("src/test/resources/PCErr.1.bin"), asList((PCEPMessage) specMessage));
733 List<PCEPRequestParameterObject> requests = new ArrayList<PCEPRequestParameterObject>();
734 requests.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 3, 1, false, false));
736 List<CompositeErrorObject> errors = new ArrayList<CompositeErrorObject>();
737 errors.add(new CompositeErrorObject(requests, errorsList));
739 specMessage = new PCEPErrorMessage(errors);
740 assertEquals(deserMsg("src/test/resources/PCErr.2.bin"), asList((PCEPMessage) specMessage));
742 specMessage = new PCEPErrorMessage(new PCEPOpenObject(0, 0, 0), errorsList, null);
743 assertEquals(deserMsg("src/test/resources/PCErr.3.bin"), asList((PCEPMessage) specMessage));
745 requests = new ArrayList<PCEPRequestParameterObject>();
746 requests.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 53, false, false));
748 errors = new ArrayList<CompositeErrorObject>();
749 errors.add(new CompositeErrorObject(requests, errorsList));
751 specMessage = new PCEPErrorMessage(errors);
752 assertEquals(deserMsg("src/test/resources/PCErr.3b.bin"), asList((PCEPMessage) specMessage));
754 errorsList = new ArrayList<PCEPErrorObject>();
755 errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
756 errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
757 errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
759 specMessage = new PCEPErrorMessage(null, errorsList, null);
760 assertEquals(deserMsg("src/test/resources/PCErr.4.bin"), asList((PCEPMessage) specMessage));
762 requests = new ArrayList<PCEPRequestParameterObject>();
763 requests.add(new PCEPRequestParameterObject(true, false, false, false, false, false, false, false, (short) 1, 53, false, false));
765 errorsList = new ArrayList<PCEPErrorObject>();
766 errorsList.add(new PCEPErrorObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS));
768 errors = new ArrayList<CompositeErrorObject>();
769 errors.add(new CompositeErrorObject(requests, errorsList));
770 errors.add(new CompositeErrorObject(requests, errorsList));
772 specMessage = new PCEPErrorMessage(errors);
773 assertEquals(deserMsg("src/test/resources/PCErr.5.bin"), asList((PCEPMessage) specMessage));