Update unit testing - Renderer
[transportpce.git] / renderer / src / test / java / org / opendaylight / transportpce / renderer / utils / ServiceDataUtils.java
1 /*
2  * Copyright © 2018 Orange Systems, 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.renderer.utils;
9
10 import java.util.ArrayList;
11 import java.util.Arrays;
12 import java.util.Collections;
13 import java.util.List;
14 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ServiceFormat;
15 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.port.PortBuilder;
16 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.AToZDirection;
17 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.AToZDirectionBuilder;
18 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ZToADirection;
19 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ZToADirectionBuilder;
20 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZ;
21 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZBuilder;
22 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZKey;
23 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToA;
24 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToABuilder;
25 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToAKey;
26 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.ResourceBuilder;
27 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.Link;
28 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.LinkBuilder;
29 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.NodeBuilder;
30 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.TerminationPoint;
31 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.TerminationPointBuilder;
32 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.link.LinkIdentifierBuilder;
33 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.node.NodeIdentifierBuilder;
34 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.termination.point.TerminationPointIdentifierBuilder;
35 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.RxDirectionBuilder;
36 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.TxDirectionBuilder;
37 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.handler.header.ServiceHandlerHeaderBuilder;
38 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestInput;
39 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestInputBuilder;
40 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.PathDescription;
41 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.PathDescriptionBuilder;
42 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.ServiceAEndBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.ServiceZEndBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.Nodes;
45 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.NodesBuilder;
46 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.NodesKey;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererRollbackInput;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererRollbackInputBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathInput;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathInputBuilder;
51
52
53 public final class ServiceDataUtils {
54
55     private ServiceDataUtils() {
56
57     }
58
59     public static Nodes createNode(String nodeId, String srcTp, String dstTp) {
60         return new NodesBuilder().setNodeId(nodeId).withKey(new NodesKey(nodeId)).setSrcTp(srcTp)
61                 .setDestTp(dstTp).build();
62     }
63
64     public static ServicePathInput buildServicePathInputs(List<Nodes> nodes) {
65         ServicePathInputBuilder servicePathInputBuilder = new ServicePathInputBuilder();
66         servicePathInputBuilder.setNodes(nodes);
67         servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(20L);
68         return servicePathInputBuilder.build();
69     }
70
71     public static ServicePathInput buildServicePathInputs() {
72         ServicePathInputBuilder servicePathInputBuilder = new ServicePathInputBuilder();
73         List<Nodes> nodes = new ArrayList<>();
74         nodes.add(ServiceDataUtils.createNode("node1", "src", "dst"));
75         servicePathInputBuilder.setNodes(nodes);
76         servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(20L);
77         return servicePathInputBuilder.build();
78     }
79
80     public static RendererRollbackInput buildRendererRollbackInput() {
81         RendererRollbackInputBuilder rendererRollbackInputBuilder = new RendererRollbackInputBuilder();
82         rendererRollbackInputBuilder.setNodeInterface(new ArrayList<>());
83         return rendererRollbackInputBuilder.build();
84     }
85
86     public static ServiceImplementationRequestInput buildServiceImplementationRequestInputTerminationPointResource(
87         String tpId) {
88         ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
89             .setServiceName("service 1").setPathDescription(createPathDescriptionTerminationPointResource(tpId))
90             .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
91             .setServiceAEnd(getServiceAEndBuild(tpId).build())
92             .setServiceZEnd(getServiceZEndBuild(tpId).build());
93         return builder.build();
94     }
95
96     /*public static ServiceImplementationRequestInput buildServiceImplementationRequestInputInvalidResource() {
97         ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
98             .setServiceName("service 1").setPathDescription(createPathDescriptionInvalidResource())
99             .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
100             .setServiceAEnd(getServiceAEndBuild().build())
101             .setServiceZEnd(getServiceZEndBuild().build());
102         return builder.build();
103     }
104
105     public static ServiceImplementationRequestInput buildServiceImplementationRequestInputLinkResource() {
106         ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
107             .setServiceName("service 1").setPathDescription(createPathDescriptionLinkResource())
108             .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
109             .setServiceAEnd(getServiceAEndBuild().build())
110             .setServiceZEnd(getServiceZEndBuild().build());
111         return builder.build();
112     }*/
113
114     private static PathDescription createPathDescriptionInvalidResource() {
115         List<AToZ> atoZList = new ArrayList<AToZ>();
116         org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
117             .resource.resource.NodeBuilder nodesBuilder = new NodeBuilder();
118         org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
119             .resource.resource.Node node1 = nodesBuilder.setNodeIdentifier(new NodeIdentifierBuilder()
120             .setNodeId("XPONDER-1-2").build()).build();
121         org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
122             .resource.resource.Node node2 = nodesBuilder.setNodeIdentifier(new NodeIdentifierBuilder()
123             .setNodeId("XPONDER-1-2").build()).build();
124         AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
125             .setResource(node1).build()).build();
126         AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
127             .setResource(node2).build()).build();
128         atoZList.add(atoZ);
129         atoZList.add(atoZ2);
130         AToZDirection atozDirection = new AToZDirectionBuilder()
131             .setRate(20L)
132             .setAToZWavelengthNumber(20L)
133             .setAToZ(atoZList)
134             .build();
135         List<ZToA> ztoAList = new ArrayList<ZToA>();
136         ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
137             .setResource(node1).build()).build();
138         ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
139             .setResource(node2).build()).build();
140         ztoAList.add(ztoA);
141         ztoAList.add(ztoA2);
142         ZToADirection ztoaDirection = new ZToADirectionBuilder()
143             .setRate(20L)
144             .setZToAWavelengthNumber(20L)
145             .setZToA(ztoAList)
146             .build();
147         PathDescriptionBuilder builder = new PathDescriptionBuilder()
148             .setAToZDirection(atozDirection)
149             .setZToADirection(ztoaDirection);
150         return builder.build();
151     }
152
153     public static PathDescription createPathDescriptionTerminationPointResource(String tpId) {
154         List<AToZ> atoZList = new ArrayList<AToZ>();
155         TerminationPointBuilder terminationPointBuilder = new TerminationPointBuilder();
156         List<String> nodeIds = Arrays.asList("XPONDER-1-2", "XPONDER-2-3");
157         Integer atozId = 1;
158         for (String nodeId : nodeIds) {
159             for (String otherNodeId : nodeIds) {
160                 TerminationPoint terminationPoint = terminationPointBuilder
161                     .setTerminationPointIdentifier(new TerminationPointIdentifierBuilder().setNodeId(nodeId + '-'
162                             + tpId)
163                         .setTpId(tpId).build())
164                     .build();
165                 AToZ atoZ = new AToZBuilder().setId(atozId.toString())
166                     .withKey(new AToZKey(atozId.toString())).setResource(new ResourceBuilder()
167                         .setResource(terminationPoint).build()).build();
168                 atozId++;
169                 atoZList.add(atoZ);
170             }
171         }
172         AToZDirection atozDirection = new AToZDirectionBuilder()
173             .setRate(20L)
174             .setAToZWavelengthNumber(20L)
175             .setAToZ(atoZList)
176             .build();
177
178         Collections.reverse(nodeIds);
179         List<ZToA> ztoAList = new ArrayList<ZToA>();
180         Integer ztoaId = 1;
181         for (String nodeId : nodeIds) {
182             for (String otherNodeId : nodeIds) {
183                 TerminationPoint terminationPoint = terminationPointBuilder
184                     .setTerminationPointIdentifier(new TerminationPointIdentifierBuilder().setNodeId(nodeId + '-'
185                             + tpId)
186                         .setTpId(tpId).build())
187                     .build();
188                 ZToA ztoA = new ZToABuilder().setId(ztoaId.toString())
189                     .withKey(new ZToAKey(ztoaId.toString())).setResource(new ResourceBuilder()
190                         .setResource(terminationPoint).build()).build();
191                 ztoaId++;
192                 ztoAList.add(ztoA);
193             }
194         }
195         ZToADirection ztoaDirection = new ZToADirectionBuilder()
196             .setRate(20L)
197             .setZToAWavelengthNumber(20L)
198             .setZToA(ztoAList)
199             .build();
200         PathDescriptionBuilder builder = new PathDescriptionBuilder()
201             .setAToZDirection(atozDirection)
202             .setZToADirection(ztoaDirection);
203         return builder.build();
204     }
205
206     private static PathDescription createPathDescriptionLinkResource() {
207         List<AToZ> atoZList = new ArrayList<AToZ>();
208         org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
209             .resource.resource.NodeBuilder nodesBuilder = new NodeBuilder();
210         Link link1 = new LinkBuilder().setLinkIdentifier(new LinkIdentifierBuilder().setLinkId("link 1").build())
211             .build();
212         Link link2 = new LinkBuilder().setLinkIdentifier(new LinkIdentifierBuilder().setLinkId("link 2").build())
213             .build();
214         AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
215             .setResource(link1).build()).build();
216         AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
217             .setResource(link2).build()).build();
218         atoZList.add(atoZ);
219         atoZList.add(atoZ2);
220         AToZDirection atozDirection = new AToZDirectionBuilder()
221             .setRate(20L)
222             .setAToZWavelengthNumber(20L)
223             .setAToZ(atoZList)
224             .build();
225         List<ZToA> ztoAList = new ArrayList<ZToA>();
226         ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
227             .setResource(link1).build()).build();
228         ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
229             .setResource(link2).build()).build();
230         ztoAList.add(ztoA);
231         ztoAList.add(ztoA2);
232         ZToADirection ztoaDirection = new ZToADirectionBuilder()
233             .setRate(20L)
234             .setZToAWavelengthNumber(20L)
235             .setZToA(ztoAList)
236             .build();
237         PathDescriptionBuilder builder = new PathDescriptionBuilder()
238             .setAToZDirection(atozDirection)
239             .setZToADirection(ztoaDirection);
240         return builder.build();
241     }
242
243     public static ServiceAEndBuilder getServiceAEndBuild(String tpId) {
244         return new ServiceAEndBuilder()
245             .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2-"
246                     + tpId)
247             .setTxDirection(
248                 new TxDirectionBuilder()
249                     .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
250                         .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
251                         .setPortSubSlot("port subslot").setPortType("port type").build())
252                     .build())
253             .setRxDirection(
254                 new RxDirectionBuilder()
255                     .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
256                         .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
257                         .setPortSubSlot("port subslot").setPortType("port type").build())
258                     .build());
259     }
260
261     public static ServiceZEndBuilder getServiceZEndBuild(String tpId) {
262         return new ServiceZEndBuilder()
263             .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-2-3-"
264                     + tpId)
265             .setTxDirection(
266                 new TxDirectionBuilder()
267                     .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
268                         .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
269                         .setPortSubSlot("port subslot").setPortType("port type").build())
270                     .build())
271             .setRxDirection(
272                 new RxDirectionBuilder()
273                     .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
274                         .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
275                         .setPortSubSlot("port subslot").setPortType("port type").build())
276                     .build());
277     }
278
279 }