Merge "add tests for impl layer pce module"
[transportpce.git] / pce / src / test / java / org / opendaylight / transportpce / pce / utils / PceTestData.java
1 /*
2  * Copyright © 2017 AT&T, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.transportpce.pce.utils;
9
10 import java.util.Arrays;
11
12 import org.opendaylight.transportpce.common.ResponseCodes;
13 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInput;
14 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInputBuilder;
15 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestOutput;
16 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestOutputBuilder;
17 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.path.computation.request.input.ServiceAEnd;
18 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.path.computation.request.input.ServiceAEndBuilder;
19 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.path.computation.request.input.ServiceZEnd;
20 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.path.computation.request.input.ServiceZEndBuilder;
21 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev181130.NodeIdType;
22 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ConnectionType;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.configuration.response.common.ConfigurationResponseCommon;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.configuration.response.common.ConfigurationResponseCommonBuilder;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.sdnc.request.header.SdncRequestHeaderBuilder;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.port.PortBuilder;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceCreateInput;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceCreateInputBuilder;
30 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.AToZDirection;
31 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.AToZDirectionBuilder;
32 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.ZToADirection;
33 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.ZToADirectionBuilder;
34 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.RoutingConstraintsSp.PceMetric;
35 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.CoRoutingBuilder;
36 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.GeneralBuilder;
37 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.general.DiversityBuilder;
38 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.general.ExcludeBuilder;
39 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.general.IncludeBuilder;
40 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.general.LatencyBuilder;
41 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.general.include_.OrderedHopsBuilder;
42 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.diversity.existing.service.contraints.sp.ExistingServiceApplicability;
43 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.diversity.existing.service.contraints.sp.ExistingServiceApplicabilityBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.HardConstraints;
45 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.HardConstraintsBuilder;
46 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.SoftConstraints;
47 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.SoftConstraintsBuilder;
48 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.ResponseParameters;
49 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.ResponseParametersBuilder;
50 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.response.parameters.PathDescription;
51 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.response.parameters.PathDescriptionBuilder;
52 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder;
53 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder;
54 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.handler.header.ServiceHandlerHeader;
55 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.handler.header.ServiceHandlerHeaderBuilder;
56
57
58
59 public final class PceTestData {
60
61     private PceTestData() {
62     }
63
64     public static PathComputationRequestInput getEmptyPCERequest() {
65         ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
66                 .setRequestId("request1")
67                 .build();
68         PathComputationRequestInput input = new PathComputationRequestInputBuilder()
69                 .setServiceHandlerHeader(serviceHandlerHeader)
70                 .build();
71         return input;
72     }
73
74     public static PathComputationRequestInput getEmptyPCERequestServiceNameWithRequestId() {
75         ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
76                 .setRequestId("request1")
77                 .build();
78         PathComputationRequestInput input = new PathComputationRequestInputBuilder()
79                 .setServiceName("serviceName")
80                 .setServiceHandlerHeader(serviceHandlerHeader)
81                 .build();
82         return input;
83     }
84
85     public static PathComputationRequestInput getEmptyPCERequestServiceNameWithOutRequestId() {
86         ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
87                 .build();
88         PathComputationRequestInput input = new PathComputationRequestInputBuilder()
89                 .setServiceName("serviceName")
90                 .setServiceHandlerHeader(serviceHandlerHeader)
91                 .build();
92         return input;
93     }
94
95     public static PathComputationRequestInput getPathComputationRequestInputWithCoRoutingOrGeneral() {
96         ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
97                 .setRequestId("request1")
98                 .build();
99         ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
100                 .setServiceFormat(ServiceFormat.Ethernet)
101                 .setServiceRate(100L)
102                 .setClli("clli11")
103                 .setNodeId("XPONDER-2-2")
104                 .setTxDirection(new TxDirectionBuilder().setPort(
105                         new PortBuilder()
106                                 .setPortDeviceName("Some port-device-name")
107                                 .setPortType("Some port-type")
108                                 .setPortName("Some port-name")
109                                 .setPortRack("Some port-rack")
110                                 .setPortShelf("Some port-shelf")
111                                 .setPortSlot("Some port-slot")
112                                 .setPortSubSlot("Some port-sub-slot")
113                                 .build()
114                 ).build())
115                 .setRxDirection(new RxDirectionBuilder().setPort(
116                         new PortBuilder()
117                                 .setPortDeviceName("Some port-device-name")
118                                 .setPortType("Some port-type")
119                                 .setPortName("Some port-name")
120                                 .setPortRack("Some port-rack")
121                                 .setPortShelf("Some port-shelf")
122                                 .setPortSlot("Some port-slot")
123                                 .setPortSubSlot("Some port-sub-slot")
124                                 .build()
125                 ).build())
126                 .build();
127         ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
128                 .setServiceFormat(ServiceFormat.Ethernet)
129                 .setServiceRate(0L)
130                 .setClli("Some clli11")
131                 .setNodeId("XPONDER-1-2")
132                 .setTxDirection(new TxDirectionBuilder().setPort(
133                         new PortBuilder()
134                                 .setPortDeviceName("Some port-device-name")
135                                 .setPortType("Some port-type")
136                                 .setPortName("Some port-name")
137                                 .setPortRack("Some port-rack")
138                                 .setPortShelf("Some port-shelf")
139                                 .setPortSlot("Some port-slot")
140                                 .setPortSubSlot("Some port-sub-slot")
141                                 .build()
142                 ).build())
143                 .setRxDirection(new RxDirectionBuilder().setPort(
144                         new PortBuilder()
145                                 .setPortDeviceName("Some port-device-name")
146                                 .setPortType("Some port-type")
147                                 .setPortName("Some port-name")
148                                 .setPortRack("Some port-rack")
149                                 .setPortShelf("Some port-shelf")
150                                 .setPortSlot("Some port-slot")
151                                 .setPortSubSlot("Some port-sub-slot")
152                                 .build()
153                 ).build())
154                 .build();
155         PathComputationRequestInput input = new PathComputationRequestInputBuilder()
156                 .setServiceName("service1")
157                 .setResourceReserve(true)
158                 .setPceMetric(PceMetric.HopCount)
159                 .setLocallyProtectedLinks(true)
160                 .setServiceHandlerHeader(serviceHandlerHeader)
161                 .setServiceAEnd(serviceAEnd)
162                 .setServiceZEnd(serviceZEnd)
163                 .setHardConstraints(new HardConstraintsBuilder()
164                         .setCustomerCode(Arrays.asList("Some customer-code"))
165                         .setCoRoutingOrGeneral(new CoRoutingBuilder()
166                                 .setCoRouting(new org.opendaylight.yang.gen.v1.http.org
167                                         .transportpce.b.c._interface.routing.constraints.rev171017
168                                         .constraints.sp.co.routing.or.general.co.routing.CoRoutingBuilder()
169                                         .setExistingService(Arrays.asList("Some existing-service"))
170
171                                         .build())
172                                 .build())
173                         .build())
174                 .setSoftConstraints(new SoftConstraintsBuilder()
175                         .setCustomerCode(Arrays.asList("Some customer-code"))
176                         .setCoRoutingOrGeneral(new CoRoutingBuilder()
177                                 .setCoRouting(new org.opendaylight.yang.gen.v1.http.org
178                                         .transportpce.b.c._interface.routing.constraints.rev171017
179                                         .constraints.sp.co.routing.or.general.co.routing.CoRoutingBuilder()
180                                         .setExistingService(Arrays.asList("Some existing-service"))
181                                         .build())
182                                 .build())
183                         .build())
184                 .build();
185         return input;
186     }
187
188     public static PathComputationRequestInput getPCERequest() {
189         ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
190                 .setRequestId("request1")
191                 .build();
192         ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
193                 .setServiceFormat(ServiceFormat.Ethernet)
194                 .setServiceRate(100L)
195                 .setClli("clli11")
196                 .setNodeId("XPONDER-2-2")
197                 .setTxDirection(new TxDirectionBuilder().setPort(
198                         new PortBuilder()
199                                 .setPortDeviceName("Some port-device-name")
200                                 .setPortType("Some port-type")
201                                 .setPortName("Some port-name")
202                                 .setPortRack("Some port-rack")
203                                 .setPortShelf("Some port-shelf")
204                                 .setPortSlot("Some port-slot")
205                                 .setPortSubSlot("Some port-sub-slot")
206                                 .build()
207                 ).build())
208                 .setRxDirection(new RxDirectionBuilder().setPort(
209                         new PortBuilder()
210                                 .setPortDeviceName("Some port-device-name")
211                                 .setPortType("Some port-type")
212                                 .setPortName("Some port-name")
213                                 .setPortRack("Some port-rack")
214                                 .setPortShelf("Some port-shelf")
215                                 .setPortSlot("Some port-slot")
216                                 .setPortSubSlot("Some port-sub-slot")
217                                 .build()
218                 ).build())
219                 .build();
220         ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
221                 .setServiceFormat(ServiceFormat.Ethernet)
222                 .setServiceRate(0L)
223                 .setClli("Some clli11")
224                 .setNodeId("XPONDER-1-2")
225                 .setTxDirection(new TxDirectionBuilder().setPort(
226                         new PortBuilder()
227                                 .setPortDeviceName("Some port-device-name")
228                                 .setPortType("Some port-type")
229                                 .setPortName("Some port-name")
230                                 .setPortRack("Some port-rack")
231                                 .setPortShelf("Some port-shelf")
232                                 .setPortSlot("Some port-slot")
233                                 .setPortSubSlot("Some port-sub-slot")
234                                 .build()
235                 ).build())
236                 .setRxDirection(new RxDirectionBuilder().setPort(
237                         new PortBuilder()
238                                 .setPortDeviceName("Some port-device-name")
239                                 .setPortType("Some port-type")
240                                 .setPortName("Some port-name")
241                                 .setPortRack("Some port-rack")
242                                 .setPortShelf("Some port-shelf")
243                                 .setPortSlot("Some port-slot")
244                                 .setPortSubSlot("Some port-sub-slot")
245                                 .build()
246                 ).build())
247                 .build();
248         PathComputationRequestInput input = new PathComputationRequestInputBuilder()
249                 .setServiceName("service1")
250                 .setResourceReserve(true)
251                 .setPceMetric(PceMetric.HopCount)
252                 .setLocallyProtectedLinks(true)
253                 .setServiceHandlerHeader(serviceHandlerHeader)
254                 .setServiceAEnd(serviceAEnd)
255                 .setServiceZEnd(serviceZEnd)
256                 .setHardConstraints(new HardConstraintsBuilder()
257                         .setCustomerCode(Arrays.asList("Some customer-code"))
258                         .setCoRoutingOrGeneral(new CoRoutingBuilder()
259                                 .setCoRouting(new org.opendaylight.yang.gen.v1.http.org
260                                         .transportpce.b.c._interface.routing.constraints.rev171017
261                                         .constraints.sp.co.routing.or.general.co.routing.CoRoutingBuilder()
262                                         .setExistingService(Arrays.asList("Some existing-service"))
263                                         .build())
264                                 .build())
265                         .build())
266                 .setSoftConstraints(new SoftConstraintsBuilder()
267                         .setCustomerCode(Arrays.asList("Some customer-code"))
268                         .setCoRoutingOrGeneral(new CoRoutingBuilder()
269                                 .setCoRouting(new org.opendaylight.yang.gen.v1.http.org
270                                         .transportpce.b.c._interface.routing.constraints.rev171017
271                                         .constraints.sp.co.routing.or.general.co.routing.CoRoutingBuilder()
272                                         .setExistingService(Arrays.asList("Some existing-service"))
273                                         .build())
274                                 .build())
275                         .build())
276                 .build();
277         return input;
278     }
279
280     public static PathComputationRequestOutput getFailedPCEResultYes() {
281         PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder();
282         ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder()
283                 .setAckFinalIndicator("Yes")
284                 .setRequestId("request1")
285                 .setResponseCode("Path not calculated")
286                 .setResponseMessage("Service Name is not set");
287         outputBuilder.setConfigurationResponseCommon(configurationResponseCommon.build())
288                 .setResponseParameters(null);
289         return outputBuilder.build();
290     }
291
292     public static PathComputationRequestOutput getPCEResultOk(Long wl) {
293         PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder();
294         ResponseParameters responseParameters = new ResponseParametersBuilder()
295                 .setPathDescription(createPathDescription(0L, wl, 0L, wl))
296                 .build();
297         outputBuilder.setConfigurationResponseCommon(createCommonSuccessResponse())
298                 .setResponseParameters(responseParameters);
299         return outputBuilder.build();
300     }
301
302     /**
303      * Generate Data for Test 1 request 5-4.
304      * <code>{
305      * "pce:input": {
306      * "pce:service-name": "service 1",
307      * "pce:resource-reserve": "true",
308      * "pce:service-handler-header": {
309      * "pce:request-id": "request 1"
310      * },
311      * "pce:service-a-end": {
312      * "pce:service-rate": "0",
313      * "pce:node-id": "XPONDER-1-2"
314      * },
315      * "pce:service-z-end": {
316      * "pce:service-rate": "0",
317      * "pce:node-id": "XPONDER-3-2"
318      * },
319      * "pce:pce-metric": "hop-count"
320      * }
321      * }</code>
322      *
323      * @return input PathComputationRequestInput data
324      */
325     public static PathComputationRequestInput getPCE_test1_request_54() {
326         ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
327                 .setRequestId("request 1")
328                 .build();
329         ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
330                 .setServiceRate(0L)
331                 .setNodeId("XPONDER-1-2")
332                 .build();
333         ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
334                 .setServiceRate(0L)
335                 .setNodeId("XPONDER-3-2")
336                 .build();
337         PathComputationRequestInput input = new PathComputationRequestInputBuilder()
338                 .setServiceHandlerHeader(serviceHandlerHeader)
339                 .setServiceName("service 1")
340                 .setResourceReserve(true)
341                 .setPceMetric(PceMetric.HopCount)
342                 .setServiceAEnd(serviceAEnd)
343                 .setServiceZEnd(serviceZEnd)
344                 .build();
345         return input;
346     }
347
348     /**
349      * Generate Data for Test 1 result 5-4.
350      *
351      * @param wl WaveLength
352      * @return output PathComputationRequestOutput data
353      */
354     public static PathComputationRequestOutput getPCE_test_result_54(Long wl) {
355         PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder();
356         ResponseParameters responseParameters = new ResponseParametersBuilder()
357                 .setPathDescription(createPathDescription(0L, wl, 0L, wl))
358                 .build();
359         outputBuilder.setConfigurationResponseCommon(createCommonSuccessResponse())
360                 .setResponseParameters(responseParameters);
361         return outputBuilder.build();
362     }
363
364     /**
365      * Generate Data for Test 2 request 5-4.
366      * <code>{
367      * "pce:input": {
368      * "pce:service-name": "service 1",
369      * "pce:resource-reserve": "true",
370      * "pce:service-handler-header": {
371      * "pce:request-id": "request 1"
372      * },
373      * "pce:service-a-end": {
374      * "pce:service-rate": "0",
375      * "pce:node-id": "XPONDER-1-2"
376      * },
377      * "pce:service-z-end": {
378      * "pce:service-rate": "0",
379      * "pce:node-id": "XPONDER-3-2"
380      * },
381      * "pce:hard-constraints": {
382      * "pce:exclude_": {
383      * "node-id": [ "OpenROADM-2-2" ]
384      * }
385      * },
386      * "pce:pce-metric": "hop-count"
387      * }
388      * }</code>
389      *
390      * @return input PathComputationRequestInput data
391      */
392     public static PathComputationRequestInput getPCE_test2_request_54() {
393         ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
394                 .setRequestId("request 1")
395                 .build();
396         ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
397                 .setServiceRate(0L)
398                 .setNodeId("XPONDER-1-2")
399                 .build();
400         ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
401                 .setServiceRate(0L)
402                 .setNodeId("XPONDER-3-2")
403                 .build();
404         PathComputationRequestInput input = new PathComputationRequestInputBuilder()
405                 .setServiceHandlerHeader(serviceHandlerHeader)
406                 .setServiceName("service 1")
407                 .setResourceReserve(true)
408                 .setPceMetric(PceMetric.HopCount)
409                 .setServiceAEnd(serviceAEnd)
410                 .setServiceZEnd(serviceZEnd)
411                 .setHardConstraints(new HardConstraintsBuilder()
412                         .setCoRoutingOrGeneral(new GeneralBuilder()
413                                 .setExclude(new ExcludeBuilder()
414                                         .setNodeId(Arrays.asList("OpenROADM-2-2"))
415                                         .build())
416                                 .setLatency(new LatencyBuilder()
417                                         .setMaxLatency(3223L).build())
418                                 .setInclude(new IncludeBuilder()
419                                         .setOrderedHops(
420                                                 Arrays.asList(new OrderedHopsBuilder()
421                                                         .setHopNumber(22)
422                                                         // .setHopType(new HopTypeBuilder()
423                                                         // .setHopType(new ClliBuilder().getClli())
424                                                         .build()))
425                                         .build())
426                                 .build())
427                         .build())
428                 .build();
429         return input;
430     }
431
432     /**
433      * Generate Data for Test 2 result 5-4.
434      *
435      * @return output PathComputationRequestOutput data
436      */
437     public static PathComputationRequestOutput getPCE_test2_result_54() {
438         PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder();
439         ResponseParameters responseParameters = new ResponseParametersBuilder()
440                 .setPathDescription(createPathDescription(0L, 9L, 0L, 9L))
441                 .build();
442         outputBuilder.setConfigurationResponseCommon(createCommonSuccessResponse())
443                 .setResponseParameters(responseParameters);
444         return outputBuilder.build();
445     }
446
447     /**
448      * Generate Data for Test 2 request 5-4.
449      * <code>{
450      * "pce:input": {
451      * "pce:service-name": "service 1",
452      * "pce:resource-reserve": "true",
453      * "pce:service-handler-header": {
454      * "pce:request-id": "request 1"
455      * },
456      * "pce:service-a-end": {
457      * "pce:service-rate": "0",
458      * "pce:node-id": "XPONDER-1-2"
459      * },
460      * "pce:service-z-end": {
461      * "pce:service-rate": "0",
462      * "pce:node-id": "XPONDER-3-2"
463      * },
464      * "pce:hard-constraints": {
465      * "pce:exclude_": {
466      * "node-id": [ "OpenROADM-2-1", "OpenROADM-2-2" ]
467      * }
468      * },
469      * "pce:pce-metric": "hop-count"
470      * }
471      * }</code>
472      *
473      * @return input PathComputationRequestInput data
474      */
475     public static PathComputationRequestInput getPCE_test3_request_54() {
476         ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
477                 .setRequestId("request 1")
478                 .build();
479         ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
480                 .setServiceRate(0L)
481                 .setNodeId("XPONDER-1-2")
482                 .build();
483         ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
484                 .setServiceRate(0L)
485                 .setNodeId("XPONDER-3-2")
486                 .build();
487         PathComputationRequestInput input = new PathComputationRequestInputBuilder()
488                 .setServiceHandlerHeader(serviceHandlerHeader)
489                 .setServiceName("service 1")
490                 .setResourceReserve(true)
491                 .setPceMetric(PceMetric.HopCount)
492                 .setServiceAEnd(serviceAEnd)
493                 .setServiceZEnd(serviceZEnd)
494                 .setHardConstraints(new HardConstraintsBuilder()
495                         .setCoRoutingOrGeneral(new GeneralBuilder()
496                                 .setExclude(new ExcludeBuilder()
497                                         .setNodeId(Arrays.asList("OpenROADM-2-1", "OpenROADM-2-2"))
498                                         .build())
499                                 .build())
500                         .build())
501                 .build();
502         return input;
503     }
504
505     /**
506      * Generate Data for Test 3 result 5-4.
507      *
508      * @return output PathComputationRequestOutput data
509      */
510     public static PathComputationRequestOutput getPCE_test3_result_54() {
511         PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder();
512         ResponseParameters responseParameters = new ResponseParametersBuilder()
513                 .setPathDescription(createPathDescription(0L, 9L, 0L, 9L))
514                 .build();
515         outputBuilder.setConfigurationResponseCommon(createCommonSuccessResponse())
516                 .setResponseParameters(responseParameters);
517         return outputBuilder.build();
518     }
519
520     public static PathComputationRequestInput getPCE_simpletopology_test1_requestSetHardAndSoftConstrains() {
521         ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
522                 .setRequestId("request 1")
523                 .build();
524         ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
525                 .setServiceRate(0L)
526                 .setNodeId("XPONDER-1-2")
527                 .build();
528         ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
529                 .setServiceRate(0L)
530                 .setNodeId("XPONDER-3-2")
531                 .build();
532         HardConstraints hardConstrains = new HardConstraintsBuilder().build();
533         SoftConstraints softConstraints = new SoftConstraintsBuilder().build();
534         PathComputationRequestInput input = new PathComputationRequestInputBuilder()
535                 .setServiceHandlerHeader(serviceHandlerHeader)
536                 .setServiceName("service 1")
537                 .setResourceReserve(true)
538                 .setPceMetric(PceMetric.HopCount)
539                 .setServiceAEnd(serviceAEnd)
540                 .setServiceZEnd(serviceZEnd)
541                 .setHardConstraints(hardConstrains)
542                 .setSoftConstraints(softConstraints)
543                 .build();
544         return input;
545     }
546
547     public static PathComputationRequestInput getPCE_simpletopology_test1_request() {
548         ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
549                 .setRequestId("request 1")
550                 .build();
551         ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
552                 .setServiceRate(0L)
553                 .setNodeId("XPONDER-1-2")
554                 .build();
555         ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
556                 .setServiceRate(0L)
557                 .setNodeId("XPONDER-3-2")
558                 .build();
559         PathComputationRequestInput input = new PathComputationRequestInputBuilder()
560                 .setServiceHandlerHeader(serviceHandlerHeader)
561                 .setServiceName("service 1")
562                 .setResourceReserve(true)
563                 .setPceMetric(PceMetric.HopCount)
564                 .setServiceAEnd(serviceAEnd)
565                 .setServiceZEnd(serviceZEnd)
566                 .build();
567         return input;
568     }
569
570     public static PathComputationRequestOutput getPCE_simpletopology_test1_result(Long wl) {
571         PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder();
572         ResponseParameters responseParameters = new ResponseParametersBuilder()
573                 .setPathDescription(createPathDescription(0L, wl, 0L, wl))
574                 .build();
575         outputBuilder.setConfigurationResponseCommon(createCommonSuccessResponse())
576                 .setResponseParameters(responseParameters);
577         return outputBuilder.build();
578     }
579
580     private static ConfigurationResponseCommon createCommonSuccessResponse() {
581         ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder()
582                 .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES)
583                 .setRequestId("request 1")
584                 .setResponseCode(ResponseCodes.RESPONSE_OK)
585                 .setResponseMessage("Path is calculated");
586         return configurationResponseCommon.build();
587     }
588
589     private static PathDescription createPathDescription(long azRate, long azWaveLength, long zaRate,
590                                                          long zaWaveLength) {
591         AToZDirection atozDirection = new AToZDirectionBuilder()
592                 .setRate(azRate)
593                 .setAToZWavelengthNumber(azWaveLength)
594                 .setAToZ(null)
595                 .build();
596         ZToADirection ztoaDirection = new ZToADirectionBuilder()
597                 .setRate(zaRate)
598                 .setZToAWavelengthNumber(zaWaveLength)
599                 .setZToA(null)
600                 .build();
601         PathDescription pathDescription = new PathDescriptionBuilder()
602                 .setAToZDirection(atozDirection)
603                 .setZToADirection(ztoaDirection)
604                 .build();
605         return pathDescription;
606     }
607
608     /**
609      * Generate Data for Test Diversity test 1 request 5-4.
610      * <code>{
611      * "pce:input": {
612      * "pce:service-name": "service 1",
613      * "pce:resource-reserve": "true",
614      * "pce:service-handler-header": {
615      * "pce:request-id": "request 1"
616      * },
617      * "pce:service-a-end": {
618      * "pce:service-rate": "0",
619      * "pce:node-id": "XPONDER-1-1"
620      * },
621      * "pce:service-z-end": {
622      * "pce:service-rate": "0",
623      * "pce:node-id": "XPONDER-3-1"
624      * },
625      * "pce:hard-constraints": {
626      * "pce:diversity": {
627      * "existing-service": ["Path test-1-54"],
628      * "existing-service-applicability": {
629      * "node": "true"
630      * }
631      * }
632      * },
633      * "pce:pce-metric": "hop-count"
634      * }
635      * }</code>
636      *
637      * @param base Path Computation Request Input base
638      * @return input PathComputationRequestInput data
639      */
640     public static PathComputationRequestInput build_diversity_from_request(PathComputationRequestInput base) {
641
642         ExistingServiceApplicability nodeTrue = new ExistingServiceApplicabilityBuilder()
643                 .setNode(true).build();
644
645         ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
646                 .setServiceRate(0L)
647                 .setNodeId("XPONDER-1-1")
648                 .build();
649         ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
650                 .setServiceRate(0L)
651                 .setNodeId("XPONDER-3-1")
652                 .build();
653
654         PathComputationRequestInput input = new PathComputationRequestInputBuilder(base)
655                 .setServiceName("service 2")
656                 .setServiceAEnd(serviceAEnd)
657                 .setServiceZEnd(serviceZEnd)
658                 .setHardConstraints(new HardConstraintsBuilder()
659                         .setCoRoutingOrGeneral(new GeneralBuilder()
660                                 .setDiversity(new DiversityBuilder()
661                                         .setExistingService(Arrays.asList(base.getServiceName()))
662                                         .setExistingServiceApplicability(nodeTrue)
663                                         .build())
664                                 .build())
665                         .build())
666                 .build();
667         return input;
668     }
669
670     public static ServiceCreateInput buildServiceCreateInput() {
671
672         org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.create.input.ServiceAEnd serviceAEnd =
673                 new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531
674                         .service.create.input.ServiceAEndBuilder()
675                         .setClli("clli")
676                         .setServiceRate((long) 0)
677                         .setNodeId(new NodeIdType("XPONDER-1-2"))
678                         .setTxDirection(new org.opendaylight.yang.gen.v1.http.org
679                                 .openroadm.common.service.types.rev190531.service.endpoint.TxDirectionBuilder()
680                                 .setPort(new PortBuilder().build())
681                                 .build())
682                         .setRxDirection(new org.opendaylight.yang.gen.v1.http.org
683                                 .openroadm.common.service.types.rev190531.service.endpoint.RxDirectionBuilder()
684                                 .setPort(new PortBuilder().build())
685                                 .build())
686                         .build();
687
688         org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.create.input.ServiceZEnd serviceZEnd =
689                 new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531
690                         .service.create.input.ServiceZEndBuilder()
691                         .setClli("clli")
692                         .setServiceRate((long) 0)
693                         .setNodeId(new NodeIdType("XPONDER-3-2"))
694                         .setTxDirection(new org.opendaylight.yang.gen.v1.http.org
695                                 .openroadm.common.service.types.rev190531.service.endpoint.TxDirectionBuilder()
696                                 .setPort(new PortBuilder().build())
697                                 .build())
698                         .setRxDirection(new org.opendaylight.yang.gen.v1.http.org
699                                 .openroadm.common.service.types.rev190531.service.endpoint.RxDirectionBuilder()
700                                 .setPort(new PortBuilder().build())
701                                 .build())
702                         .build();
703
704         ServiceCreateInputBuilder builtInput = new ServiceCreateInputBuilder()
705                 .setCommonId("commonId")
706                 .setConnectionType(ConnectionType.Service)
707                 .setCustomer("Customer")
708                 .setServiceName("service 1")
709                 .setServiceAEnd(serviceAEnd)
710                 .setServiceZEnd(serviceZEnd)
711                 .setSdncRequestHeader(new SdncRequestHeaderBuilder()
712                         .setRequestId("request 1")
713                         .build());
714
715         return builtInput.build();
716     }
717 }