2 * Copyright © 2017 AT&T, 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.transportpce.pce.utils;
10 import java.util.Arrays;
11 import org.opendaylight.transportpce.common.ResponseCodes;
12 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.PathComputationRequestInput;
13 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.PathComputationRequestInputBuilder;
14 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.PathComputationRequestOutput;
15 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.PathComputationRequestOutputBuilder;
16 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.path.computation.request.input.ServiceAEnd;
17 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.path.computation.request.input.ServiceAEndBuilder;
18 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.path.computation.request.input.ServiceZEnd;
19 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.path.computation.request.input.ServiceZEndBuilder;
20 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ConnectionType;
21 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ServiceFormat;
22 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.configuration.response.common.ConfigurationResponseCommon;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.configuration.response.common.ConfigurationResponseCommonBuilder;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.sdnc.request.header.SdncRequestHeaderBuilder;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.port.PortBuilder;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceCreateInput;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceCreateInputBuilder;
28 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.AToZDirection;
29 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.AToZDirectionBuilder;
30 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.ZToADirection;
31 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.ZToADirectionBuilder;
32 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.RoutingConstraintsSp.PceMetric;
33 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.CoRoutingBuilder;
34 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.GeneralBuilder;
35 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.general.DiversityBuilder;
36 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.general.ExcludeBuilder;
37 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.diversity.existing.service.contraints.sp.ExistingServiceApplicability;
38 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.diversity.existing.service.contraints.sp.ExistingServiceApplicabilityBuilder;
39 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.HardConstraintsBuilder;
40 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.SoftConstraintsBuilder;
41 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev171016.response.parameters.sp.ResponseParameters;
42 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev171016.response.parameters.sp.ResponseParametersBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev171016.response.parameters.sp.response.parameters.PathDescription;
44 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev171016.response.parameters.sp.response.parameters.PathDescriptionBuilder;
45 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev171016.service.endpoint.sp.RxDirectionBuilder;
46 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev171016.service.endpoint.sp.TxDirectionBuilder;
47 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev171016.service.handler.header.ServiceHandlerHeader;
48 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev171016.service.handler.header.ServiceHandlerHeaderBuilder;
50 public final class PceTestData {
52 private PceTestData() {
55 public static PathComputationRequestInput getEmptyPCERequest() {
56 ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
57 .setRequestId("request1")
59 PathComputationRequestInput input = new PathComputationRequestInputBuilder()
60 .setServiceHandlerHeader(serviceHandlerHeader)
65 public static PathComputationRequestInput getPCERequest() {
66 ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
67 .setRequestId("request1")
69 ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
70 .setServiceFormat(ServiceFormat.Ethernet)
73 .setNodeId("XPONDER-2-2")
74 .setTxDirection(new TxDirectionBuilder().setPort(
76 .setPortDeviceName("Some port-device-name")
77 .setPortType("Some port-type")
78 .setPortName("Some port-name")
79 .setPortRack("Some port-rack")
80 .setPortShelf("Some port-shelf")
81 .setPortSlot("Some port-slot")
82 .setPortSubSlot("Some port-sub-slot")
85 .setRxDirection(new RxDirectionBuilder().setPort(
87 .setPortDeviceName("Some port-device-name")
88 .setPortType("Some port-type")
89 .setPortName("Some port-name")
90 .setPortRack("Some port-rack")
91 .setPortShelf("Some port-shelf")
92 .setPortSlot("Some port-slot")
93 .setPortSubSlot("Some port-sub-slot")
97 ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
98 .setServiceFormat(ServiceFormat.Ethernet)
100 .setClli("Some clli11")
101 .setNodeId("XPONDER-1-2")
102 .setTxDirection(new TxDirectionBuilder().setPort(
104 .setPortDeviceName("Some port-device-name")
105 .setPortType("Some port-type")
106 .setPortName("Some port-name")
107 .setPortRack("Some port-rack")
108 .setPortShelf("Some port-shelf")
109 .setPortSlot("Some port-slot")
110 .setPortSubSlot("Some port-sub-slot")
113 .setRxDirection(new RxDirectionBuilder().setPort(
115 .setPortDeviceName("Some port-device-name")
116 .setPortType("Some port-type")
117 .setPortName("Some port-name")
118 .setPortRack("Some port-rack")
119 .setPortShelf("Some port-shelf")
120 .setPortSlot("Some port-slot")
121 .setPortSubSlot("Some port-sub-slot")
125 PathComputationRequestInput input = new PathComputationRequestInputBuilder()
126 .setServiceName("service1")
127 .setResourceReserve(true)
128 .setPceMetric(PceMetric.HopCount)
129 .setLocallyProtectedLinks(true)
130 .setServiceHandlerHeader(serviceHandlerHeader)
131 .setServiceAEnd(serviceAEnd)
132 .setServiceZEnd(serviceZEnd)
133 .setHardConstraints(new HardConstraintsBuilder()
134 .setCustomerCode(Arrays.asList("Some customer-code"))
135 .setCoRoutingOrGeneral(new CoRoutingBuilder()
136 .setCoRouting(new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints
137 .rev171017.constraints.sp.co.routing.or.general.co.routing.CoRoutingBuilder()
138 .setExistingService(Arrays.asList("Some existing-service"))
142 .setSoftConstraints(new SoftConstraintsBuilder()
143 .setCustomerCode(Arrays.asList("Some customer-code"))
144 .setCoRoutingOrGeneral(new CoRoutingBuilder()
145 .setCoRouting(new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints
146 .rev171017.constraints.sp.co.routing.or.general.co.routing.CoRoutingBuilder()
147 .setExistingService(Arrays.asList("Some existing-service"))
155 public static PathComputationRequestOutput getFailedPCEResultYes() {
156 PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder();
157 ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder()
158 .setAckFinalIndicator("Yes")
159 .setRequestId("request1")
160 .setResponseCode("Path not calculated")
161 .setResponseMessage("Service Name is not set");
162 outputBuilder.setConfigurationResponseCommon(configurationResponseCommon.build())
163 .setResponseParameters(null);
164 return outputBuilder.build();
167 public static PathComputationRequestOutput getPCEResultOk(Long wl) {
168 PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder();
169 ResponseParameters responseParameters = new ResponseParametersBuilder()
170 .setPathDescription(createPathDescription(0L, wl, 0L, wl))
172 outputBuilder.setConfigurationResponseCommon(createCommonSuccessResponse())
173 .setResponseParameters(responseParameters);
174 return outputBuilder.build();
178 * Generate Data for Test 1 request 5-4.
181 "pce:service-name": "service 1",
182 "pce:resource-reserve": "true",
183 "pce:service-handler-header": {
184 "pce:request-id": "request 1"
186 "pce:service-a-end": {
187 "pce:service-rate": "0",
188 "pce:node-id": "XPONDER-1-2"
190 "pce:service-z-end": {
191 "pce:service-rate": "0",
192 "pce:node-id": "XPONDER-3-2"
194 "pce:pce-metric": "hop-count"
198 * @return input PathComputationRequestInput data
200 public static PathComputationRequestInput getPCE_test1_request_54() {
201 ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
202 .setRequestId("request 1")
204 ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
206 .setNodeId("XPONDER-1-2")
208 ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
210 .setNodeId("XPONDER-3-2")
212 PathComputationRequestInput input = new PathComputationRequestInputBuilder()
213 .setServiceHandlerHeader(serviceHandlerHeader)
214 .setServiceName("service 1")
215 .setResourceReserve(true)
216 .setPceMetric(PceMetric.HopCount)
217 .setServiceAEnd(serviceAEnd)
218 .setServiceZEnd(serviceZEnd)
224 * Generate Data for Test 1 result 5-4.
225 * @param wl WaveLength
227 * @return output PathComputationRequestOutput data
229 public static PathComputationRequestOutput getPCE_test_result_54(Long wl) {
230 PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder();
231 ResponseParameters responseParameters = new ResponseParametersBuilder()
232 .setPathDescription(createPathDescription(0L, wl, 0L, wl))
234 outputBuilder.setConfigurationResponseCommon(createCommonSuccessResponse())
235 .setResponseParameters(responseParameters);
236 return outputBuilder.build();
240 * Generate Data for Test 2 request 5-4.
243 "pce:service-name": "service 1",
244 "pce:resource-reserve": "true",
245 "pce:service-handler-header": {
246 "pce:request-id": "request 1"
248 "pce:service-a-end": {
249 "pce:service-rate": "0",
250 "pce:node-id": "XPONDER-1-2"
252 "pce:service-z-end": {
253 "pce:service-rate": "0",
254 "pce:node-id": "XPONDER-3-2"
256 "pce:hard-constraints": {
258 "node-id": [ "OpenROADM-2-2" ]
261 "pce:pce-metric": "hop-count"
264 * @return input PathComputationRequestInput data
266 public static PathComputationRequestInput getPCE_test2_request_54() {
267 ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
268 .setRequestId("request 1")
270 ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
272 .setNodeId("XPONDER-1-2")
274 ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
276 .setNodeId("XPONDER-3-2")
278 PathComputationRequestInput input = new PathComputationRequestInputBuilder()
279 .setServiceHandlerHeader(serviceHandlerHeader)
280 .setServiceName("service 1")
281 .setResourceReserve(true)
282 .setPceMetric(PceMetric.HopCount)
283 .setServiceAEnd(serviceAEnd)
284 .setServiceZEnd(serviceZEnd)
285 .setHardConstraints(new HardConstraintsBuilder()
286 .setCoRoutingOrGeneral(new GeneralBuilder()
287 .setExclude(new ExcludeBuilder()
288 .setNodeId(Arrays.asList("OpenROADM-2-2"))
297 * Generate Data for Test 2 result 5-4.
298 * @return output PathComputationRequestOutput data
300 public static PathComputationRequestOutput getPCE_test2_result_54() {
301 PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder();
302 ResponseParameters responseParameters = new ResponseParametersBuilder()
303 .setPathDescription(createPathDescription(0L, 9L, 0L, 9L))
305 outputBuilder.setConfigurationResponseCommon(createCommonSuccessResponse())
306 .setResponseParameters(responseParameters);
307 return outputBuilder.build();
311 * Generate Data for Test 2 request 5-4.
314 "pce:service-name": "service 1",
315 "pce:resource-reserve": "true",
316 "pce:service-handler-header": {
317 "pce:request-id": "request 1"
319 "pce:service-a-end": {
320 "pce:service-rate": "0",
321 "pce:node-id": "XPONDER-1-2"
323 "pce:service-z-end": {
324 "pce:service-rate": "0",
325 "pce:node-id": "XPONDER-3-2"
327 "pce:hard-constraints": {
329 "node-id": [ "OpenROADM-2-1", "OpenROADM-2-2" ]
332 "pce:pce-metric": "hop-count"
335 * @return input PathComputationRequestInput data
337 public static PathComputationRequestInput getPCE_test3_request_54() {
338 ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
339 .setRequestId("request 1")
341 ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
343 .setNodeId("XPONDER-1-2")
345 ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
347 .setNodeId("XPONDER-3-2")
349 PathComputationRequestInput input = new PathComputationRequestInputBuilder()
350 .setServiceHandlerHeader(serviceHandlerHeader)
351 .setServiceName("service 1")
352 .setResourceReserve(true)
353 .setPceMetric(PceMetric.HopCount)
354 .setServiceAEnd(serviceAEnd)
355 .setServiceZEnd(serviceZEnd)
356 .setHardConstraints(new HardConstraintsBuilder()
357 .setCoRoutingOrGeneral(new GeneralBuilder()
358 .setExclude(new ExcludeBuilder()
359 .setNodeId(Arrays.asList("OpenROADM-2-1", "OpenROADM-2-2"))
368 * Generate Data for Test 3 result 5-4.
369 * @return output PathComputationRequestOutput data
371 public static PathComputationRequestOutput getPCE_test3_result_54() {
372 PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder();
373 ResponseParameters responseParameters = new ResponseParametersBuilder()
374 .setPathDescription(createPathDescription(0L, 9L, 0L, 9L))
376 outputBuilder.setConfigurationResponseCommon(createCommonSuccessResponse())
377 .setResponseParameters(responseParameters);
378 return outputBuilder.build();
381 public static PathComputationRequestInput getPCE_simpletopology_test1_request() {
382 ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
383 .setRequestId("request 1")
385 ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
387 .setNodeId("XPONDER-1-2")
389 ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
391 .setNodeId("XPONDER-3-2")
393 PathComputationRequestInput input = new PathComputationRequestInputBuilder()
394 .setServiceHandlerHeader(serviceHandlerHeader)
395 .setServiceName("service 1")
396 .setResourceReserve(true)
397 .setPceMetric(PceMetric.HopCount)
398 .setServiceAEnd(serviceAEnd)
399 .setServiceZEnd(serviceZEnd)
404 public static PathComputationRequestOutput getPCE_simpletopology_test1_result(Long wl) {
405 PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder();
406 ResponseParameters responseParameters = new ResponseParametersBuilder()
407 .setPathDescription(createPathDescription(0L, wl, 0L, wl))
409 outputBuilder.setConfigurationResponseCommon(createCommonSuccessResponse())
410 .setResponseParameters(responseParameters);
411 return outputBuilder.build();
414 private static ConfigurationResponseCommon createCommonSuccessResponse() {
415 ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder()
416 .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES)
417 .setRequestId("request 1")
418 .setResponseCode(ResponseCodes.RESPONSE_OK)
419 .setResponseMessage("Path is calculated");
420 return configurationResponseCommon.build();
423 private static PathDescription createPathDescription(long azRate, long azWaveLength, long zaRate,
425 AToZDirection atozDirection = new AToZDirectionBuilder()
427 .setAToZWavelengthNumber(azWaveLength)
430 ZToADirection ztoaDirection = new ZToADirectionBuilder()
432 .setZToAWavelengthNumber(zaWaveLength)
435 PathDescription pathDescription = new PathDescriptionBuilder()
436 .setAToZDirection(atozDirection)
437 .setZToADirection(ztoaDirection)
439 return pathDescription;
443 * Generate Data for Test Diversity test 1 request 5-4.
446 "pce:service-name": "service 1",
447 "pce:resource-reserve": "true",
448 "pce:service-handler-header": {
449 "pce:request-id": "request 1"
451 "pce:service-a-end": {
452 "pce:service-rate": "0",
453 "pce:node-id": "XPONDER-1-1"
455 "pce:service-z-end": {
456 "pce:service-rate": "0",
457 "pce:node-id": "XPONDER-3-1"
459 "pce:hard-constraints": {
461 "existing-service": ["Path test-1-54"],
462 "existing-service-applicability": {
467 "pce:pce-metric": "hop-count"
470 * @param base Path Computation Request Input base
472 * @return input PathComputationRequestInput data
474 public static PathComputationRequestInput build_diversity_from_request(PathComputationRequestInput base) {
476 ExistingServiceApplicability nodeTrue = new ExistingServiceApplicabilityBuilder()
477 .setNode(true).build();
479 ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
481 .setNodeId("XPONDER-1-1")
483 ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
485 .setNodeId("XPONDER-3-1")
488 PathComputationRequestInput input = new PathComputationRequestInputBuilder(base)
489 .setServiceName("service 2")
490 .setServiceAEnd(serviceAEnd)
491 .setServiceZEnd(serviceZEnd)
492 .setHardConstraints(new HardConstraintsBuilder()
493 .setCoRoutingOrGeneral(new GeneralBuilder()
494 .setDiversity(new DiversityBuilder()
495 .setExistingService(Arrays.asList(base.getServiceName()))
496 .setExistingServiceApplicability(nodeTrue)
504 public static ServiceCreateInput buildServiceCreateInput() {
506 ServiceCreateInputBuilder builtInput = new ServiceCreateInputBuilder();
508 org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input.ServiceAEnd serviceAEnd =
509 new org.opendaylight.yang.gen.v1.http.org.openroadm.service
510 .rev161014.service.create.input.ServiceAEndBuilder()
512 .setServiceRate((long)0)
513 .setNodeId("XPONDER-1-2")
514 .setTxDirection(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types
515 .rev161014.service.endpoint.TxDirectionBuilder()
516 .setPort(new PortBuilder().build())
518 .setRxDirection(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types
519 .rev161014.service.endpoint.RxDirectionBuilder()
520 .setPort(new PortBuilder().build())
525 org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input.ServiceZEnd serviceZEnd =
526 new org.opendaylight.yang.gen.v1.http.org.openroadm.service
527 .rev161014.service.create.input.ServiceZEndBuilder()
529 .setServiceRate((long)0)
530 .setNodeId("XPONDER-3-2")
531 .setTxDirection(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types
532 .rev161014.service.endpoint.TxDirectionBuilder()
533 .setPort(new PortBuilder().build())
535 .setRxDirection(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types
536 .rev161014.service.endpoint.RxDirectionBuilder()
537 .setPort(new PortBuilder().build())
541 builtInput.setCommonId("commonId");
542 builtInput.setConnectionType(ConnectionType.Service);
543 builtInput.setCustomer("Customer");
544 builtInput.setServiceName("service 1");
545 builtInput.setServiceAEnd(serviceAEnd);
546 builtInput.setServiceZEnd(serviceZEnd);
547 builtInput.setSdncRequestHeader(new SdncRequestHeaderBuilder()
548 .setRequestId("request 1")
553 return builtInput.build();