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