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.rev200128.PathComputationRequestInput;
13 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInputBuilder;
14 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestOutput;
15 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestOutputBuilder;
16 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.path.computation.request.input.ServiceAEnd;
17 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.path.computation.request.input.ServiceAEndBuilder;
18 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.path.computation.request.input.ServiceZEnd;
19 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.path.computation.request.input.ServiceZEndBuilder;
20 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev181130.NodeIdType;
21 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ConnectionType;
22 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.configuration.response.common.ConfigurationResponseCommon;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.configuration.response.common.ConfigurationResponseCommonBuilder;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.sdnc.request.header.SdncRequestHeaderBuilder;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.port.PortBuilder;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceCreateInput;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceCreateInputBuilder;
29 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.AToZDirection;
30 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.AToZDirectionBuilder;
31 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.ZToADirection;
32 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.ZToADirectionBuilder;
33 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.RoutingConstraintsSp.PceMetric;
34 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.CoRoutingBuilder;
35 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.GeneralBuilder;
36 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.general.DiversityBuilder;
37 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.general.ExcludeBuilder;
38 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.diversity.existing.service.contraints.sp.ExistingServiceApplicability;
39 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.diversity.existing.service.contraints.sp.ExistingServiceApplicabilityBuilder;
40 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.HardConstraintsBuilder;
41 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.SoftConstraintsBuilder;
42 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.ResponseParameters;
43 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.ResponseParametersBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.response.parameters.PathDescription;
45 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.response.parameters.PathDescriptionBuilder;
46 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder;
47 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder;
48 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.handler.header.ServiceHandlerHeader;
49 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.handler.header.ServiceHandlerHeaderBuilder;
51 public final class PceTestData {
53 private PceTestData() {
56 public static PathComputationRequestInput getEmptyPCERequest() {
57 ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
58 .setRequestId("request1")
60 PathComputationRequestInput input = new PathComputationRequestInputBuilder()
61 .setServiceHandlerHeader(serviceHandlerHeader)
66 public static PathComputationRequestInput getPCERequest() {
67 ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
68 .setRequestId("request1")
70 ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
71 .setServiceFormat(ServiceFormat.Ethernet)
74 .setNodeId("XPONDER-2-2")
75 .setTxDirection(new TxDirectionBuilder().setPort(
77 .setPortDeviceName("Some port-device-name")
78 .setPortType("Some port-type")
79 .setPortName("Some port-name")
80 .setPortRack("Some port-rack")
81 .setPortShelf("Some port-shelf")
82 .setPortSlot("Some port-slot")
83 .setPortSubSlot("Some port-sub-slot")
86 .setRxDirection(new RxDirectionBuilder().setPort(
88 .setPortDeviceName("Some port-device-name")
89 .setPortType("Some port-type")
90 .setPortName("Some port-name")
91 .setPortRack("Some port-rack")
92 .setPortShelf("Some port-shelf")
93 .setPortSlot("Some port-slot")
94 .setPortSubSlot("Some port-sub-slot")
98 ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
99 .setServiceFormat(ServiceFormat.Ethernet)
101 .setClli("Some clli11")
102 .setNodeId("XPONDER-1-2")
103 .setTxDirection(new TxDirectionBuilder().setPort(
105 .setPortDeviceName("Some port-device-name")
106 .setPortType("Some port-type")
107 .setPortName("Some port-name")
108 .setPortRack("Some port-rack")
109 .setPortShelf("Some port-shelf")
110 .setPortSlot("Some port-slot")
111 .setPortSubSlot("Some port-sub-slot")
114 .setRxDirection(new RxDirectionBuilder().setPort(
116 .setPortDeviceName("Some port-device-name")
117 .setPortType("Some port-type")
118 .setPortName("Some port-name")
119 .setPortRack("Some port-rack")
120 .setPortShelf("Some port-shelf")
121 .setPortSlot("Some port-slot")
122 .setPortSubSlot("Some port-sub-slot")
126 PathComputationRequestInput input = new PathComputationRequestInputBuilder()
127 .setServiceName("service1")
128 .setResourceReserve(true)
129 .setPceMetric(PceMetric.HopCount)
130 .setLocallyProtectedLinks(true)
131 .setServiceHandlerHeader(serviceHandlerHeader)
132 .setServiceAEnd(serviceAEnd)
133 .setServiceZEnd(serviceZEnd)
134 .setHardConstraints(new HardConstraintsBuilder()
135 .setCustomerCode(Arrays.asList("Some customer-code"))
136 .setCoRoutingOrGeneral(new CoRoutingBuilder()
137 .setCoRouting(new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints
138 .rev171017.constraints.sp.co.routing.or.general.co.routing.CoRoutingBuilder()
139 .setExistingService(Arrays.asList("Some existing-service"))
143 .setSoftConstraints(new SoftConstraintsBuilder()
144 .setCustomerCode(Arrays.asList("Some customer-code"))
145 .setCoRoutingOrGeneral(new CoRoutingBuilder()
146 .setCoRouting(new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints
147 .rev171017.constraints.sp.co.routing.or.general.co.routing.CoRoutingBuilder()
148 .setExistingService(Arrays.asList("Some existing-service"))
156 public static PathComputationRequestOutput getFailedPCEResultYes() {
157 PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder();
158 ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder()
159 .setAckFinalIndicator("Yes")
160 .setRequestId("request1")
161 .setResponseCode("Path not calculated")
162 .setResponseMessage("Service Name is not set");
163 outputBuilder.setConfigurationResponseCommon(configurationResponseCommon.build())
164 .setResponseParameters(null);
165 return outputBuilder.build();
168 public static PathComputationRequestOutput getPCEResultOk(Long wl) {
169 PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder();
170 ResponseParameters responseParameters = new ResponseParametersBuilder()
171 .setPathDescription(createPathDescription(0L, wl, 0L, wl))
173 outputBuilder.setConfigurationResponseCommon(createCommonSuccessResponse())
174 .setResponseParameters(responseParameters);
175 return outputBuilder.build();
179 * Generate Data for Test 1 request 5-4.
182 "pce:service-name": "service 1",
183 "pce:resource-reserve": "true",
184 "pce:service-handler-header": {
185 "pce:request-id": "request 1"
187 "pce:service-a-end": {
188 "pce:service-rate": "0",
189 "pce:node-id": "XPONDER-1-2"
191 "pce:service-z-end": {
192 "pce:service-rate": "0",
193 "pce:node-id": "XPONDER-3-2"
195 "pce:pce-metric": "hop-count"
199 * @return input PathComputationRequestInput data
201 public static PathComputationRequestInput getPCE_test1_request_54() {
202 ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
203 .setRequestId("request 1")
205 ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
207 .setNodeId("XPONDER-1-2")
209 ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
211 .setNodeId("XPONDER-3-2")
213 PathComputationRequestInput input = new PathComputationRequestInputBuilder()
214 .setServiceHandlerHeader(serviceHandlerHeader)
215 .setServiceName("service 1")
216 .setResourceReserve(true)
217 .setPceMetric(PceMetric.HopCount)
218 .setServiceAEnd(serviceAEnd)
219 .setServiceZEnd(serviceZEnd)
225 * Generate Data for Test 1 result 5-4.
226 * @param wl WaveLength
228 * @return output PathComputationRequestOutput data
230 public static PathComputationRequestOutput getPCE_test_result_54(Long wl) {
231 PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder();
232 ResponseParameters responseParameters = new ResponseParametersBuilder()
233 .setPathDescription(createPathDescription(0L, wl, 0L, wl))
235 outputBuilder.setConfigurationResponseCommon(createCommonSuccessResponse())
236 .setResponseParameters(responseParameters);
237 return outputBuilder.build();
241 * Generate Data for Test 2 request 5-4.
244 "pce:service-name": "service 1",
245 "pce:resource-reserve": "true",
246 "pce:service-handler-header": {
247 "pce:request-id": "request 1"
249 "pce:service-a-end": {
250 "pce:service-rate": "0",
251 "pce:node-id": "XPONDER-1-2"
253 "pce:service-z-end": {
254 "pce:service-rate": "0",
255 "pce:node-id": "XPONDER-3-2"
257 "pce:hard-constraints": {
259 "node-id": [ "OpenROADM-2-2" ]
262 "pce:pce-metric": "hop-count"
265 * @return input PathComputationRequestInput data
267 public static PathComputationRequestInput getPCE_test2_request_54() {
268 ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
269 .setRequestId("request 1")
271 ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
273 .setNodeId("XPONDER-1-2")
275 ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
277 .setNodeId("XPONDER-3-2")
279 PathComputationRequestInput input = new PathComputationRequestInputBuilder()
280 .setServiceHandlerHeader(serviceHandlerHeader)
281 .setServiceName("service 1")
282 .setResourceReserve(true)
283 .setPceMetric(PceMetric.HopCount)
284 .setServiceAEnd(serviceAEnd)
285 .setServiceZEnd(serviceZEnd)
286 .setHardConstraints(new HardConstraintsBuilder()
287 .setCoRoutingOrGeneral(new GeneralBuilder()
288 .setExclude(new ExcludeBuilder()
289 .setNodeId(Arrays.asList("OpenROADM-2-2"))
298 * Generate Data for Test 2 result 5-4.
299 * @return output PathComputationRequestOutput data
301 public static PathComputationRequestOutput getPCE_test2_result_54() {
302 PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder();
303 ResponseParameters responseParameters = new ResponseParametersBuilder()
304 .setPathDescription(createPathDescription(0L, 9L, 0L, 9L))
306 outputBuilder.setConfigurationResponseCommon(createCommonSuccessResponse())
307 .setResponseParameters(responseParameters);
308 return outputBuilder.build();
312 * Generate Data for Test 2 request 5-4.
315 "pce:service-name": "service 1",
316 "pce:resource-reserve": "true",
317 "pce:service-handler-header": {
318 "pce:request-id": "request 1"
320 "pce:service-a-end": {
321 "pce:service-rate": "0",
322 "pce:node-id": "XPONDER-1-2"
324 "pce:service-z-end": {
325 "pce:service-rate": "0",
326 "pce:node-id": "XPONDER-3-2"
328 "pce:hard-constraints": {
330 "node-id": [ "OpenROADM-2-1", "OpenROADM-2-2" ]
333 "pce:pce-metric": "hop-count"
336 * @return input PathComputationRequestInput data
338 public static PathComputationRequestInput getPCE_test3_request_54() {
339 ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
340 .setRequestId("request 1")
342 ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
344 .setNodeId("XPONDER-1-2")
346 ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
348 .setNodeId("XPONDER-3-2")
350 PathComputationRequestInput input = new PathComputationRequestInputBuilder()
351 .setServiceHandlerHeader(serviceHandlerHeader)
352 .setServiceName("service 1")
353 .setResourceReserve(true)
354 .setPceMetric(PceMetric.HopCount)
355 .setServiceAEnd(serviceAEnd)
356 .setServiceZEnd(serviceZEnd)
357 .setHardConstraints(new HardConstraintsBuilder()
358 .setCoRoutingOrGeneral(new GeneralBuilder()
359 .setExclude(new ExcludeBuilder()
360 .setNodeId(Arrays.asList("OpenROADM-2-1", "OpenROADM-2-2"))
369 * Generate Data for Test 3 result 5-4.
370 * @return output PathComputationRequestOutput data
372 public static PathComputationRequestOutput getPCE_test3_result_54() {
373 PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder();
374 ResponseParameters responseParameters = new ResponseParametersBuilder()
375 .setPathDescription(createPathDescription(0L, 9L, 0L, 9L))
377 outputBuilder.setConfigurationResponseCommon(createCommonSuccessResponse())
378 .setResponseParameters(responseParameters);
379 return outputBuilder.build();
382 public static PathComputationRequestInput getPCE_simpletopology_test1_request() {
383 ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
384 .setRequestId("request 1")
386 ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
388 .setNodeId("XPONDER-1-2")
390 ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
392 .setNodeId("XPONDER-3-2")
394 PathComputationRequestInput input = new PathComputationRequestInputBuilder()
395 .setServiceHandlerHeader(serviceHandlerHeader)
396 .setServiceName("service 1")
397 .setResourceReserve(true)
398 .setPceMetric(PceMetric.HopCount)
399 .setServiceAEnd(serviceAEnd)
400 .setServiceZEnd(serviceZEnd)
405 public static PathComputationRequestOutput getPCE_simpletopology_test1_result(Long wl) {
406 PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder();
407 ResponseParameters responseParameters = new ResponseParametersBuilder()
408 .setPathDescription(createPathDescription(0L, wl, 0L, wl))
410 outputBuilder.setConfigurationResponseCommon(createCommonSuccessResponse())
411 .setResponseParameters(responseParameters);
412 return outputBuilder.build();
415 private static ConfigurationResponseCommon createCommonSuccessResponse() {
416 ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder()
417 .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES)
418 .setRequestId("request 1")
419 .setResponseCode(ResponseCodes.RESPONSE_OK)
420 .setResponseMessage("Path is calculated");
421 return configurationResponseCommon.build();
424 private static PathDescription createPathDescription(long azRate, long azWaveLength, long zaRate,
426 AToZDirection atozDirection = new AToZDirectionBuilder()
428 .setAToZWavelengthNumber(azWaveLength)
431 ZToADirection ztoaDirection = new ZToADirectionBuilder()
433 .setZToAWavelengthNumber(zaWaveLength)
436 PathDescription pathDescription = new PathDescriptionBuilder()
437 .setAToZDirection(atozDirection)
438 .setZToADirection(ztoaDirection)
440 return pathDescription;
444 * Generate Data for Test Diversity test 1 request 5-4.
447 "pce:service-name": "service 1",
448 "pce:resource-reserve": "true",
449 "pce:service-handler-header": {
450 "pce:request-id": "request 1"
452 "pce:service-a-end": {
453 "pce:service-rate": "0",
454 "pce:node-id": "XPONDER-1-1"
456 "pce:service-z-end": {
457 "pce:service-rate": "0",
458 "pce:node-id": "XPONDER-3-1"
460 "pce:hard-constraints": {
462 "existing-service": ["Path test-1-54"],
463 "existing-service-applicability": {
468 "pce:pce-metric": "hop-count"
471 * @param base Path Computation Request Input base
473 * @return input PathComputationRequestInput data
475 public static PathComputationRequestInput build_diversity_from_request(PathComputationRequestInput base) {
477 ExistingServiceApplicability nodeTrue = new ExistingServiceApplicabilityBuilder()
478 .setNode(true).build();
480 ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
482 .setNodeId("XPONDER-1-1")
484 ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
486 .setNodeId("XPONDER-3-1")
489 PathComputationRequestInput input = new PathComputationRequestInputBuilder(base)
490 .setServiceName("service 2")
491 .setServiceAEnd(serviceAEnd)
492 .setServiceZEnd(serviceZEnd)
493 .setHardConstraints(new HardConstraintsBuilder()
494 .setCoRoutingOrGeneral(new GeneralBuilder()
495 .setDiversity(new DiversityBuilder()
496 .setExistingService(Arrays.asList(base.getServiceName()))
497 .setExistingServiceApplicability(nodeTrue)
505 public static ServiceCreateInput buildServiceCreateInput() {
507 org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.create.input.ServiceAEnd serviceAEnd =
508 new org.opendaylight.yang.gen.v1.http.org.openroadm.service
509 .rev190531.service.create.input.ServiceAEndBuilder()
511 .setServiceRate((long)0)
512 .setNodeId(new NodeIdType("XPONDER-1-2"))
513 .setTxDirection(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types
514 .rev190531.service.endpoint.TxDirectionBuilder()
515 .setPort(new PortBuilder().build())
517 .setRxDirection(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types
518 .rev190531.service.endpoint.RxDirectionBuilder()
519 .setPort(new PortBuilder().build())
523 org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.create.input.ServiceZEnd serviceZEnd =
524 new org.opendaylight.yang.gen.v1.http.org.openroadm.service
525 .rev190531.service.create.input.ServiceZEndBuilder()
527 .setServiceRate((long)0)
528 .setNodeId(new NodeIdType("XPONDER-3-2"))
529 .setTxDirection(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types
530 .rev190531.service.endpoint.TxDirectionBuilder()
531 .setPort(new PortBuilder().build())
533 .setRxDirection(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types
534 .rev190531.service.endpoint.RxDirectionBuilder()
535 .setPort(new PortBuilder().build())
539 ServiceCreateInputBuilder builtInput = new ServiceCreateInputBuilder()
540 .setCommonId("commonId")
541 .setConnectionType(ConnectionType.Service)
542 .setCustomer("Customer")
543 .setServiceName("service 1")
544 .setServiceAEnd(serviceAEnd)
545 .setServiceZEnd(serviceZEnd)
546 .setSdncRequestHeader(new SdncRequestHeaderBuilder()
547 .setRequestId("request 1")
550 return builtInput.build();