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().build())
92             .setServiceZEnd(getServiceZEndBuild().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                         .setTpId((nodeId.equals(otherNodeId) ? "" : nodeId + "-") + otherNodeId + "-" + tpId).build())
163                     .build();
164                 AToZ atoZ = new AToZBuilder().setId(atozId.toString())
165                     .withKey(new AToZKey(atozId.toString())).setResource(new ResourceBuilder()
166                         .setResource(terminationPoint).build()).build();
167                 atozId++;
168                 atoZList.add(atoZ);
169             }
170         }
171         AToZDirection atozDirection = new AToZDirectionBuilder()
172             .setRate(20L)
173             .setAToZWavelengthNumber(20L)
174             .setAToZ(atoZList)
175             .build();
176
177         Collections.reverse(nodeIds);
178         List<ZToA> ztoAList = new ArrayList<ZToA>();
179         Integer ztoaId = 1;
180         for (String nodeId : nodeIds) {
181             for (String otherNodeId : nodeIds) {
182                 TerminationPoint terminationPoint = terminationPointBuilder
183                     .setTerminationPointIdentifier(new TerminationPointIdentifierBuilder().setNodeId(nodeId)
184                         .setTpId((nodeId.equals(otherNodeId) ? "" : nodeId + "-") + otherNodeId + "-" + tpId).build())
185                     .build();
186                 ZToA ztoA = new ZToABuilder().setId(ztoaId.toString())
187                     .withKey(new ZToAKey(ztoaId.toString())).setResource(new ResourceBuilder()
188                         .setResource(terminationPoint).build()).build();
189                 ztoaId++;
190                 ztoAList.add(ztoA);
191             }
192         }
193         ZToADirection ztoaDirection = new ZToADirectionBuilder()
194             .setRate(20L)
195             .setZToAWavelengthNumber(20L)
196             .setZToA(ztoAList)
197             .build();
198         PathDescriptionBuilder builder = new PathDescriptionBuilder()
199             .setAToZDirection(atozDirection)
200             .setZToADirection(ztoaDirection);
201         return builder.build();
202     }
203
204     private static PathDescription createPathDescriptionLinkResource() {
205         List<AToZ> atoZList = new ArrayList<AToZ>();
206         org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
207             .resource.resource.NodeBuilder nodesBuilder = new NodeBuilder();
208         Link link1 = new LinkBuilder().setLinkIdentifier(new LinkIdentifierBuilder().setLinkId("link 1").build())
209             .build();
210         Link link2 = new LinkBuilder().setLinkIdentifier(new LinkIdentifierBuilder().setLinkId("link 2").build())
211             .build();
212         AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
213             .setResource(link1).build()).build();
214         AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
215             .setResource(link2).build()).build();
216         atoZList.add(atoZ);
217         atoZList.add(atoZ2);
218         AToZDirection atozDirection = new AToZDirectionBuilder()
219             .setRate(20L)
220             .setAToZWavelengthNumber(20L)
221             .setAToZ(atoZList)
222             .build();
223         List<ZToA> ztoAList = new ArrayList<ZToA>();
224         ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
225             .setResource(link1).build()).build();
226         ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
227             .setResource(link2).build()).build();
228         ztoAList.add(ztoA);
229         ztoAList.add(ztoA2);
230         ZToADirection ztoaDirection = new ZToADirectionBuilder()
231             .setRate(20L)
232             .setZToAWavelengthNumber(20L)
233             .setZToA(ztoAList)
234             .build();
235         PathDescriptionBuilder builder = new PathDescriptionBuilder()
236             .setAToZDirection(atozDirection)
237             .setZToADirection(ztoaDirection);
238         return builder.build();
239     }
240
241     public static ServiceAEndBuilder getServiceAEndBuild() {
242         return new ServiceAEndBuilder()
243             .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2")
244             .setTxDirection(
245                 new TxDirectionBuilder()
246                     .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
247                         .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
248                         .setPortSubSlot("port subslot").setPortType("port type").build())
249                     .build())
250             .setRxDirection(
251                 new RxDirectionBuilder()
252                     .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
253                         .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
254                         .setPortSubSlot("port subslot").setPortType("port type").build())
255                     .build());
256     }
257
258     public static ServiceZEndBuilder getServiceZEndBuild() {
259         return new ServiceZEndBuilder()
260             .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-2-3")
261             .setTxDirection(
262                 new TxDirectionBuilder()
263                     .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
264                         .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
265                         .setPortSubSlot("port subslot").setPortType("port type").build())
266                     .build())
267             .setRxDirection(
268                 new RxDirectionBuilder()
269                     .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
270                         .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
271                         .setPortSubSlot("port subslot").setPortType("port type").build())
272                     .build());
273     }
274
275 }