Mahesh Poojary S
Committed by Mahesh Poojary Huawei

[ONOS-4160] PCE REST

Change-Id: Iec0554190876c7363114c03aa5d2b25b42ade071
Showing 20 changed files with 56 additions and 362 deletions
1 /* 1 /*
2 - * Copyright 2016 Open Networking Laboratory 2 + * Copyright 2016-present Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
...@@ -21,6 +21,7 @@ import org.apache.karaf.shell.commands.Argument; ...@@ -21,6 +21,7 @@ import org.apache.karaf.shell.commands.Argument;
21 import org.apache.karaf.shell.commands.Command; 21 import org.apache.karaf.shell.commands.Command;
22 22
23 import org.onosproject.cli.AbstractShellCommand; 23 import org.onosproject.cli.AbstractShellCommand;
24 +import org.onosproject.incubator.net.tunnel.TunnelId;
24 import org.onosproject.pce.pceservice.api.PceService; 25 import org.onosproject.pce.pceservice.api.PceService;
25 26
26 import org.slf4j.Logger; 27 import org.slf4j.Logger;
...@@ -41,10 +42,9 @@ public class PceDeletePathCommand extends AbstractShellCommand { ...@@ -41,10 +42,9 @@ public class PceDeletePathCommand extends AbstractShellCommand {
41 42
42 PceService service = get(PceService.class); 43 PceService service = get(PceService.class);
43 44
44 - //TODO: need to uncomment below lines once releasePath method is added to PceService 45 + if (!service.releasePath(TunnelId.valueOf(id))) {
45 - //if (!service.releasePath(PcePathId.of(id))) { 46 + error("Path deletion failed.");
46 - // error("Path deletion failed."); 47 + return;
47 - // return; 48 + }
48 - //}
49 } 49 }
50 } 50 }
......
1 /* 1 /*
2 - * Copyright 2016 Open Networking Laboratory 2 + * Copyright 2016-present Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
...@@ -22,6 +22,7 @@ import org.apache.karaf.shell.commands.Option; ...@@ -22,6 +22,7 @@ import org.apache.karaf.shell.commands.Option;
22 22
23 import org.onosproject.cli.AbstractShellCommand; 23 import org.onosproject.cli.AbstractShellCommand;
24 import org.onosproject.incubator.net.tunnel.Tunnel; 24 import org.onosproject.incubator.net.tunnel.Tunnel;
25 +import org.onosproject.incubator.net.tunnel.TunnelId;
25 import org.onosproject.net.AnnotationKeys; 26 import org.onosproject.net.AnnotationKeys;
26 import org.onosproject.pce.pceservice.api.PceService; 27 import org.onosproject.pce.pceservice.api.PceService;
27 28
...@@ -45,8 +46,7 @@ public class PceQueryPathCommand extends AbstractShellCommand { ...@@ -45,8 +46,7 @@ public class PceQueryPathCommand extends AbstractShellCommand {
45 46
46 PceService service = get(PceService.class); 47 PceService service = get(PceService.class);
47 if (null == id) { 48 if (null == id) {
48 - //TODO: need to uncomment below line once queryAllPath method is added to PceService 49 + Iterable<Tunnel> tunnels = service.queryAllPath();
49 - Iterable<Tunnel> tunnels = null; // = service.queryAllPath();
50 if (tunnels != null) { 50 if (tunnels != null) {
51 for (final Tunnel tunnel : tunnels) { 51 for (final Tunnel tunnel : tunnels) {
52 display(tunnel); 52 display(tunnel);
...@@ -56,8 +56,7 @@ public class PceQueryPathCommand extends AbstractShellCommand { ...@@ -56,8 +56,7 @@ public class PceQueryPathCommand extends AbstractShellCommand {
56 return; 56 return;
57 } 57 }
58 } else { 58 } else {
59 - //TODO: need to uncomment below line once queryPath method is added to PceService 59 + Tunnel tunnel = service.queryPath(TunnelId.valueOf(id));
60 - Tunnel tunnel = null; // = service.queryPath(PcePathId.of(id));
61 if (tunnel == null) { 60 if (tunnel == null) {
62 print("Path doesnot exists."); 61 print("Path doesnot exists.");
63 return; 62 return;
......
1 /* 1 /*
2 - * Copyright 2016 Open Networking Laboratory 2 + * Copyright 2016-present Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
...@@ -86,9 +86,8 @@ public class PceSetupPathCommand extends AbstractShellCommand { ...@@ -86,9 +86,8 @@ public class PceSetupPathCommand extends AbstractShellCommand {
86 //listConstrnt.add(LocalBandwidthConstraint.of(bandwidth, DataRateUnit.valueOf("BPS"))); 86 //listConstrnt.add(LocalBandwidthConstraint.of(bandwidth, DataRateUnit.valueOf("BPS")));
87 } 87 }
88 88
89 - //TODO: need to uncomment below lines once setupPath method is modified in PceService 89 + if (!service.setupPath(srcDevice, dstDevice, name, listConstrnt, lspType)) {
90 - //if (null == service.setupPath(srcDevice, dstDevice, name, listConstrnt, lspType)) { 90 + error("Path creation failed.");
91 - // error("Path creation failed."); 91 + }
92 - //}
93 } 92 }
94 } 93 }
......
1 /* 1 /*
2 - * Copyright 2016 Open Networking Laboratory 2 + * Copyright 2016-present Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
......
1 /* 1 /*
2 - * Copyright 2016 Open Networking Laboratory 2 + * Copyright 2016-present Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
......
...@@ -244,12 +244,14 @@ public final class DefaultPcePath implements PcePath { ...@@ -244,12 +244,14 @@ public final class DefaultPcePath implements PcePath {
244 this.id = TunnelId.valueOf(tunnel.tunnelId().id()); 244 this.id = TunnelId.valueOf(tunnel.tunnelId().id());
245 this.source = tunnel.src().toString(); 245 this.source = tunnel.src().toString();
246 this.destination = tunnel.dst().toString(); 246 this.destination = tunnel.dst().toString();
247 - //TODO: need to uncomment below line once LSP_SIG_TYPE is added to AnnotationKeys 247 + //TODO: need to uncomment below line once LSP_SIG_TYPE is added to AnnotationKeys.
248 - this.lspType = null; // = LspType.valueOf(tunnel.annotations().value(AnnotationKeys.LSP_SIG_TYPE)); 248 + this.lspType = null; // = LspType.valueOf(tunnel.annotations()
249 + //.value(AnnotationKeys.LSP_SIG_TYPE));
249 this.name = tunnel.tunnelName().toString(); 250 this.name = tunnel.tunnelName().toString();
250 - this.costConstraint = null; //CostConstraint.of(tunnel.path().cost()); 251 + //TODO: uncomment below lines once CostConstraint and LocalBandwidthConstraint classes are ready
251 - this.bandwidthConstraint = null; 252 + this.costConstraint = null; // = CostConstraint.of(tunnel.path().cost());
252 - //LocalBandwidthConstraint.of(tunnel.annotations().value(AnnotationKeys.BANDWIDTH)); 253 + this.bandwidthConstraint = null; // = LocalBandwidthConstraint.of(tunnel.annotations()
254 + //.value(AnnotationKeys.BANDWIDTH));
253 return this; 255 return this;
254 } 256 }
255 257
......
1 /* 1 /*
2 - * Copyright 2016 Open Networking Laboratory 2 + * Copyright 2016-present Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package org.onosproject.pce.web; 16 +package org.onosproject.pce.rest;
17 17
18 import org.apache.felix.scr.annotations.Activate; 18 import org.apache.felix.scr.annotations.Activate;
19 import org.apache.felix.scr.annotations.Component; 19 import org.apache.felix.scr.annotations.Component;
......
1 /* 1 /*
2 - * Copyright 2016 Open Networking Laboratory 2 + * Copyright 2016-present Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package org.onosproject.pce.web; 16 +package org.onosproject.pce.rest;
17 17
18 import static com.google.common.base.Preconditions.checkNotNull; 18 import static com.google.common.base.Preconditions.checkNotNull;
19 19
......
1 /* 1 /*
2 - * Copyright 2016 Open Networking Laboratory 2 + * Copyright 2016-present Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
...@@ -13,9 +13,10 @@ ...@@ -13,9 +13,10 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package org.onosproject.pce.web; 16 +package org.onosproject.pce.rest;
17 17
18 import static javax.ws.rs.core.Response.Status.OK; 18 import static javax.ws.rs.core.Response.Status.OK;
19 +import static org.onlab.util.Tools.nullIsNotFound;
19 20
20 import java.io.IOException; 21 import java.io.IOException;
21 import java.io.InputStream; 22 import java.io.InputStream;
...@@ -34,8 +35,10 @@ import javax.ws.rs.core.MediaType; ...@@ -34,8 +35,10 @@ import javax.ws.rs.core.MediaType;
34 import javax.ws.rs.core.Response; 35 import javax.ws.rs.core.Response;
35 36
36 import org.onosproject.incubator.net.tunnel.Tunnel; 37 import org.onosproject.incubator.net.tunnel.Tunnel;
38 +import org.onosproject.incubator.net.tunnel.TunnelId;
37 import org.onosproject.net.DeviceId; 39 import org.onosproject.net.DeviceId;
38 import org.onosproject.net.intent.Constraint; 40 import org.onosproject.net.intent.Constraint;
41 +import org.onosproject.pce.pceservice.api.PceService;
39 import org.onosproject.pce.pceservice.PcePath; 42 import org.onosproject.pce.pceservice.PcePath;
40 import org.onosproject.pce.pceservice.DefaultPcePath; 43 import org.onosproject.pce.pceservice.DefaultPcePath;
41 import org.onosproject.pce.pceservice.LspType; 44 import org.onosproject.pce.pceservice.LspType;
...@@ -58,6 +61,7 @@ public class PcePathWebResource extends AbstractWebResource { ...@@ -58,6 +61,7 @@ public class PcePathWebResource extends AbstractWebResource {
58 public static final String PCE_PATH_NOT_FOUND = "Path not found"; 61 public static final String PCE_PATH_NOT_FOUND = "Path not found";
59 public static final String PCE_PATH_ID_EXIST = "Path exists"; 62 public static final String PCE_PATH_ID_EXIST = "Path exists";
60 public static final String PCE_PATH_ID_NOT_EXIST = "Path does not exist for the identifier"; 63 public static final String PCE_PATH_ID_NOT_EXIST = "Path does not exist for the identifier";
64 + public static final String PCE_SETUP_PATH_FAILED = "PCE Setup path has failed.";
61 65
62 /** 66 /**
63 * Retrieve details of all paths created. 67 * Retrieve details of all paths created.
...@@ -68,8 +72,7 @@ public class PcePathWebResource extends AbstractWebResource { ...@@ -68,8 +72,7 @@ public class PcePathWebResource extends AbstractWebResource {
68 @Produces(MediaType.APPLICATION_JSON) 72 @Produces(MediaType.APPLICATION_JSON)
69 public Response queryAllPath() { 73 public Response queryAllPath() {
70 log.debug("Query all paths."); 74 log.debug("Query all paths.");
71 - //TODO: need to uncomment below line once queryAllPath method is added to PceService 75 + Iterable<Tunnel> tunnels = get(PceService.class).queryAllPath();
72 - Iterable<Tunnel> tunnels = null; // = get(PceService.class).queryAllPath();
73 ObjectNode result = mapper().createObjectNode(); 76 ObjectNode result = mapper().createObjectNode();
74 ArrayNode pathEntry = result.putArray("paths"); 77 ArrayNode pathEntry = result.putArray("paths");
75 if (tunnels != null) { 78 if (tunnels != null) {
...@@ -92,9 +95,8 @@ public class PcePathWebResource extends AbstractWebResource { ...@@ -92,9 +95,8 @@ public class PcePathWebResource extends AbstractWebResource {
92 @Produces(MediaType.APPLICATION_JSON) 95 @Produces(MediaType.APPLICATION_JSON)
93 public Response queryPath(@PathParam("path_id") String id) { 96 public Response queryPath(@PathParam("path_id") String id) {
94 log.debug("Query path by identifier {}.", id); 97 log.debug("Query path by identifier {}.", id);
95 - //TODO: need to uncomment below lines once queryPath method is added to PceService 98 + Tunnel tunnel = nullIsNotFound(get(PceService.class).queryPath(TunnelId.valueOf(id)),
96 - Tunnel tunnel = null; // = nullIsNotFound(get(PceService.class).queryPath(PcePathId.of(id)), 99 + PCE_PATH_NOT_FOUND);
97 - //PCE_PATH_NOT_FOUND);
98 PcePath path = DefaultPcePath.builder().of(tunnel).build(); 100 PcePath path = DefaultPcePath.builder().of(tunnel).build();
99 ObjectNode result = mapper().createObjectNode(); 101 ObjectNode result = mapper().createObjectNode();
100 result.set("path", codec(PcePath.class).encode(path, this)); 102 result.set("path", codec(PcePath.class).encode(path, this));
...@@ -131,9 +133,9 @@ public class PcePathWebResource extends AbstractWebResource { ...@@ -131,9 +133,9 @@ public class PcePathWebResource extends AbstractWebResource {
131 //listConstrnt.add(LocalBandwidthConstraint.of(Double.valueOf(path.constraint().bandwidth()), DataRateUnit 133 //listConstrnt.add(LocalBandwidthConstraint.of(Double.valueOf(path.constraint().bandwidth()), DataRateUnit
132 // .valueOf("BPS"))); 134 // .valueOf("BPS")));
133 135
134 - //TODO: need to uncomment below lines once setupPath method is modified in PceService 136 + Boolean issuccess = nullIsNotFound(get(PceService.class)
135 - Boolean issuccess = true; // = (null != get(PceService.class) 137 + .setupPath(srcDevice, dstDevice, path.name(), listConstrnt, lspType),
136 - //.setupPath(srcDevice, dstDevice, path.name(), listConstrnt, lspType)) ? true : false; 138 + PCE_SETUP_PATH_FAILED);
137 return Response.status(OK).entity(issuccess.toString()).build(); 139 return Response.status(OK).entity(issuccess.toString()).build();
138 } catch (IOException e) { 140 } catch (IOException e) {
139 log.error("Exception while creating path {}.", e.toString()); 141 log.error("Exception while creating path {}.", e.toString());
...@@ -174,9 +176,8 @@ public class PcePathWebResource extends AbstractWebResource { ...@@ -174,9 +176,8 @@ public class PcePathWebResource extends AbstractWebResource {
174 // .of(path.constraint().bandwidth(), DataRateUnit.valueOf("BPS"))); 176 // .of(path.constraint().bandwidth(), DataRateUnit.valueOf("BPS")));
175 } 177 }
176 178
177 - //TODO: need to uncomment below line once updatePath is added to PceService 179 + Boolean result = nullIsNotFound(get(PceService.class).updatePath(TunnelId.valueOf(id), constrntList),
178 - Boolean result = true; // = (null != (get(PceService.class).updatePath(PcePathId.of(id), constrntList))) 180 + PCE_PATH_NOT_FOUND);
179 - //? true : false;
180 return Response.status(OK).entity(result.toString()).build(); 181 return Response.status(OK).entity(result.toString()).build();
181 } catch (IOException e) { 182 } catch (IOException e) {
182 log.error("Update path failed because of exception {}.", e.toString()); 183 log.error("Update path failed because of exception {}.", e.toString());
...@@ -195,9 +196,8 @@ public class PcePathWebResource extends AbstractWebResource { ...@@ -195,9 +196,8 @@ public class PcePathWebResource extends AbstractWebResource {
195 public Response releasePath(@PathParam("path_id") String id) { 196 public Response releasePath(@PathParam("path_id") String id) {
196 log.debug("Deletes path by identifier {}.", id); 197 log.debug("Deletes path by identifier {}.", id);
197 198
198 - //TODO: need to uncomment below lines once releasePath method is added to PceService 199 + Boolean isSuccess = nullIsNotFound(get(PceService.class).releasePath(TunnelId.valueOf(id)),
199 - Boolean isSuccess = true; // = nullIsNotFound(get(PceService.class).releasePath(PcePathId.of(id)), 200 + PCE_PATH_NOT_FOUND);
200 - //PCE_PATH_NOT_FOUND);
201 if (!isSuccess) { 201 if (!isSuccess) {
202 log.debug("Path identifier {} does not exist", id); 202 log.debug("Path identifier {} does not exist", id);
203 } 203 }
......
1 /* 1 /*
2 - * Copyright 2016 Open Networking Laboratory 2 + * Copyright 2016-present Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 16
17 -package org.onosproject.pce.web; 17 +package org.onosproject.pce.rest;
18 18
19 import org.onlab.rest.AbstractWebApplication; 19 import org.onlab.rest.AbstractWebApplication;
20 20
......
1 /* 1 /*
2 - * Copyright 2016 Open Networking Laboratory 2 + * Copyright 2016-present Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
...@@ -17,4 +17,4 @@ ...@@ -17,4 +17,4 @@
17 /** 17 /**
18 * PCE rest application. 18 * PCE rest application.
19 */ 19 */
20 -package org.onosproject.pce.web; 20 +package org.onosproject.pce.rest;
......
1 <!-- 1 <!--
2 - ~ Copyright 2016 Open Networking Laboratory 2 + ~ Copyright 2016-present Open Networking Laboratory
3 ~ 3 ~
4 ~ Licensed under the Apache License, Version 2.0 (the "License"); 4 ~ Licensed under the Apache License, Version 2.0 (the "License");
5 ~ you may not use this file except in compliance with the License. 5 ~ you may not use this file except in compliance with the License.
......
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- 2 <!--
3 - ~ Copyright 2016 Open Networking Laboratory 3 + ~ Copyright 2016-present Open Networking Laboratory
4 ~ 4 ~
5 ~ Licensed under the Apache License, Version 2.0 (the "License"); 5 ~ Licensed under the Apache License, Version 2.0 (the "License");
6 ~ you may not use this file except in compliance with the License. 6 ~ you may not use this file except in compliance with the License.
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
25 <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 25 <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
26 <init-param> 26 <init-param>
27 <param-name>javax.ws.rs.Application</param-name> 27 <param-name>javax.ws.rs.Application</param-name>
28 - <param-value>org.onosproject.pce.web.PceWebApplication</param-value> 28 + <param-value>org.onosproject.pce.rest.PceWebApplication</param-value>
29 </init-param> 29 </init-param>
30 <load-on-startup>1</load-on-startup> 30 <load-on-startup>1</load-on-startup>
31 </servlet> 31 </servlet>
......
1 /* 1 /*
2 - * Copyright 2016 Open Networking Laboratory 2 + * Copyright 2016-present Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package org.onosproject.pce.web; 16 +package org.onosproject.pce.rest;
17 17
18 import org.onosproject.codec.CodecContext; 18 import org.onosproject.codec.CodecContext;
19 import org.onosproject.codec.CodecService; 19 import org.onosproject.codec.CodecService;
......
1 /* 1 /*
2 - * Copyright 2016 Open Networking Laboratory 2 + * Copyright 2016-present Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package org.onosproject.pce.web; 16 +package org.onosproject.pce.rest;
17 17
18 import static org.hamcrest.MatcherAssert.assertThat; 18 import static org.hamcrest.MatcherAssert.assertThat;
19 import static org.hamcrest.Matchers.is; 19 import static org.hamcrest.Matchers.is;
......
1 /* 1 /*
2 - * Copyright 2016 Open Networking Laboratory 2 + * Copyright 2016-present Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package org.onosproject.pce.web; 16 +package org.onosproject.pce.rest;
17 17
18 import org.glassfish.jersey.server.ResourceConfig; 18 import org.glassfish.jersey.server.ResourceConfig;
19 import org.glassfish.jersey.test.JerseyTest; 19 import org.glassfish.jersey.test.JerseyTest;
......
1 -/*
2 - * Copyright 2016 Open Networking Laboratory
3 - *
4 - * Licensed under the Apache License, Version 2.0 (the "License");
5 - * you may not use this file except in compliance with the License.
6 - * You may obtain a copy of the License at
7 - *
8 - * http://www.apache.org/licenses/LICENSE-2.0
9 - *
10 - * Unless required by applicable law or agreed to in writing, software
11 - * distributed under the License is distributed on an "AS IS" BASIS,
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 - * See the License for the specific language governing permissions and
14 - * limitations under the License.
15 - */
16 -package org.onosproject.pce.web;
17 -
18 -//import static org.easymock.EasyMock.anyObject;
19 -import static org.easymock.EasyMock.createMock;
20 -//import static org.easymock.EasyMock.expect;
21 -//import static org.easymock.EasyMock.replay;
22 -//import static org.hamcrest.Matchers.containsString;
23 -//import static org.hamcrest.Matchers.is;
24 -//import static org.hamcrest.Matchers.notNullValue;
25 -//import static org.junit.Assert.assertThat;
26 -//import static org.junit.Assert.fail;
27 -
28 -//import javax.ws.rs.NotFoundException;
29 -//import javax.ws.rs.client.Entity;
30 -//import javax.ws.rs.client.WebTarget;
31 -//import javax.ws.rs.core.MediaType;
32 -//import javax.ws.rs.core.Response;
33 -//import java.io.InputStream;
34 -//import java.net.HttpURLConnection;
35 -//import java.util.HashSet;
36 -//import java.util.List;
37 -//import java.util.Objects;
38 -//import java.util.Optional;
39 -//import java.util.Set;
40 -
41 -//import com.eclipsesource.json.Json;
42 -//import com.eclipsesource.json.JsonObject;
43 -//import com.google.common.collect.ImmutableList;
44 -//import com.google.common.collect.Lists;
45 -
46 -import org.junit.After;
47 -import org.junit.Before;
48 -import org.junit.Test;
49 -import org.onlab.osgi.ServiceDirectory;
50 -import org.onlab.osgi.TestServiceDirectory;
51 -import org.onlab.rest.BaseResource;
52 -import org.onosproject.codec.CodecService;
53 -import org.onosproject.incubator.net.tunnel.TunnelId;
54 -import org.onosproject.net.intent.Constraint;
55 -import org.onosproject.pce.pceservice.PcePath;
56 -import org.onosproject.pce.pceservice.LspType;
57 -import org.onosproject.pce.pceservice.api.PceService;
58 -
59 -/**
60 - * Unit tests for pce path REST APIs.
61 - */
62 -public class PcePathResourceTest extends PceResourceTest {
63 - final PceService pceService = createMock(PceService.class);
64 - final TunnelId pcePathId1 = TunnelId.valueOf("1");
65 - //TODO: will be uncommented below lines once CostConstraint and LocalBandwidthConstraint classes are ready
66 - final Constraint costConstraint = null; //CostConstraint.of("2");
67 - final Constraint bandwidthConstraint = null; //LocalBandwidthConstraint.of("200.0");
68 - final LspType lspType = LspType.WITH_SIGNALLING;
69 - final MockPcePath pcePath1 = new MockPcePath(pcePathId1, "11.0.0.1", "11.0.0.2", lspType, "pcc2",
70 - costConstraint, bandwidthConstraint);
71 -
72 - /**
73 - * Mock class for a pce path.
74 - */
75 - private static class MockPcePath implements PcePath {
76 - private TunnelId id;
77 - private String source;
78 - private String destination;
79 - private LspType lspType;
80 - private String name;
81 - private Constraint costConstraint;
82 - private Constraint bandwidthConstraint;
83 -
84 - /**
85 - * Constructor to initialize member variables.
86 - *
87 - * @param id pce path id
88 - * @param src source device
89 - * @param dst destination device
90 - * @param type lsp type
91 - * @param name symbolic path name
92 - * @param constrnt pce constraint
93 - */
94 - public MockPcePath(TunnelId id, String src, String dst, LspType type, String name,
95 - Constraint costConstrnt, Constraint bandwidthConstrnt) {
96 - this.id = id;
97 - this.source = src;
98 - this.destination = dst;
99 - this.name = name;
100 - this.lspType = type;
101 - this.costConstraint = costConstrnt;
102 - this.bandwidthConstraint = bandwidthConstrnt;
103 - }
104 -
105 - @Override
106 - public TunnelId id() {
107 - return id;
108 - }
109 -
110 - @Override
111 - public void id(TunnelId id) {
112 - this.id = id;
113 - }
114 -
115 - @Override
116 - public String source() {
117 - return source;
118 - }
119 -
120 - @Override
121 - public void source(String src) {
122 - this.source = src;
123 - }
124 -
125 - @Override
126 - public String destination() {
127 - return destination;
128 - }
129 -
130 - @Override
131 - public void destination(String dst) {
132 - this.destination = dst;
133 - }
134 -
135 - @Override
136 - public LspType lspType() {
137 - return lspType;
138 - }
139 -
140 - @Override
141 - public String name() {
142 - return name;
143 - }
144 -
145 - @Override
146 - public Constraint costConstraint() {
147 - return costConstraint;
148 - }
149 -
150 - @Override
151 - public Constraint bandwidthConstraint() {
152 - return bandwidthConstraint;
153 - }
154 -
155 - @Override
156 - public PcePath copy(PcePath path) {
157 - if (null != path.source()) {
158 - this.source = path.source();
159 - }
160 - if (null != path.destination()) {
161 - this.destination = path.destination();
162 - }
163 - if (this.lspType != path.lspType()) {
164 - this.lspType = path.lspType();
165 - }
166 - if (null != path.name()) {
167 - this.name = path.name();
168 - }
169 - if (null != path.costConstraint()) {
170 - this.costConstraint = path.costConstraint();
171 - }
172 - if (null != path.bandwidthConstraint()) {
173 - this.bandwidthConstraint = path.bandwidthConstraint();
174 - }
175 - return this;
176 - }
177 - }
178 -
179 - /**
180 - * Sets up the global values for all the tests.
181 - */
182 - @Before
183 - public void setUpTest() {
184 - MockPceCodecContext context = new MockPceCodecContext();
185 - ServiceDirectory testDirectory = new TestServiceDirectory().add(PceService.class, pceService)
186 - .add(CodecService.class, context.codecManager());
187 - BaseResource.setServiceDirectory(testDirectory);
188 - }
189 -
190 - /**
191 - * Cleans up.
192 - */
193 - @After
194 - public void tearDownTest() {
195 - }
196 -
197 - /**
198 - * Tests the result of the rest api GET when there are no pce paths.
199 - */
200 - @Test
201 - public void testPcePathsEmpty() {
202 - //TODO: will be uncommented below code once PceService is ready
203 - //expect(pceService.queryAllPath()).andReturn(null).anyTimes();
204 - //replay(pceService);
205 - //final WebTarget wt = target();
206 - //final String response = wt.path("path").request().get(String.class);
207 - //assertThat(response, is("{\"paths\":[]}"));
208 - }
209 -
210 - /**
211 - * Tests the result of a rest api GET for pce path id.
212 - */
213 - @Test
214 - public void testGetTunnelId() {
215 - //TODO: will be uncommented below code once PceService is ready
216 - //final Set<PcePath> pcePaths = new HashSet<>();
217 - //pcePaths.add(pcePath1);
218 -
219 - //expect(pceService.queryPath(anyObject())).andReturn(pcePath1).anyTimes();
220 - //replay(pceService);
221 -
222 - //final WebTarget wt = target();
223 - //final String response = wt.path("path/1").request().get(String.class);
224 - //final JsonObject result = Json.parse(response).asObject();
225 - //assertThat(result, notNullValue());
226 - }
227 -
228 - /**
229 - * Tests that a fetch of a non-existent pce path object throws an exception.
230 - */
231 - @Test
232 - public void testBadGet() {
233 - //TODO: will be uncommented below code once PceService is ready
234 - //expect(pceService.queryPath(anyObject()))
235 - // .andReturn(null).anyTimes();
236 - //replay(pceService);
237 -
238 - //WebTarget wt = target();
239 - //try {
240 - // wt.path("path/1").request().get(String.class);
241 - // fail("Fetch of non-existent pce path did not throw an exception");
242 - //} catch (NotFoundException ex) {
243 - // assertThat(ex.getMessage(),
244 - // containsString("HTTP 404 Not Found"));
245 - //}
246 - }
247 -
248 - /**
249 - * Tests creating a pce path with POST.
250 - */
251 - @Test
252 - public void testPost() {
253 - //TODO: will be uncommented below code once PceService is ready
254 - //expect(pceService.setupPath(anyObject()))
255 - // .andReturn(true).anyTimes();
256 - //replay(pceService);
257 -
258 - //WebTarget wt = target();
259 - //InputStream jsonStream = PcePathResourceTest.class.getResourceAsStream("post-PcePath.json");
260 -
261 - //Response response = wt.path("path")
262 - // .request(MediaType.APPLICATION_JSON_TYPE)
263 - // .post(Entity.json(jsonStream));
264 - //assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
265 - }
266 -
267 - /**
268 - * Tests creating a pce path with PUT.
269 - */
270 - @Test
271 - public void testPut() {
272 - //TODO: will be uncommented below code once PceService is ready
273 - //expect(pceService.updatePath(anyObject()))
274 - // .andReturn(true).anyTimes();
275 - //replay(pceService);
276 -
277 - //WebTarget wt = target();
278 - //InputStream jsonStream = PcePathResourceTest.class.getResourceAsStream("post-PcePath.json");
279 -
280 - //Response response = wt.path("path/1")
281 - // .request(MediaType.APPLICATION_JSON_TYPE)
282 - // .put(Entity.json(jsonStream));
283 - //assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
284 - }
285 -
286 - /**
287 - * Tests deleting a pce path.
288 - */
289 - @Test
290 - public void testDelete() {
291 - //TODO: will be uncommented below code once PceService is ready
292 - //expect(pceService.releasePath(anyObject()))
293 - // .andReturn(true).anyTimes();
294 - //replay(pceService);
295 -
296 - //WebTarget wt = target();
297 -
298 - //String location = "path/1";
299 -
300 - //Response deleteResponse = wt.path(location)
301 - // .request(MediaType.APPLICATION_JSON_TYPE)
302 - // .delete();
303 - //assertThat(deleteResponse.getStatus(),
304 - // is(HttpURLConnection.HTTP_OK));
305 - }
306 -}