Fix for ONOS-4940
Change-Id: Id4e5913cb69e913190a0b32cd41bac0dbe786729
(cherry picked from commit 924c54ccb05c648afa49c6c2bd509a060b8d174c)
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/TopologyWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/TopologyWebResource.java
index c01d94f..94fd510 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/TopologyWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/TopologyWebResource.java
@@ -22,6 +22,7 @@
import org.onosproject.net.DeviceId;
import org.onosproject.net.Link;
import org.onosproject.net.PortNumber;
+import org.onosproject.net.device.DeviceService;
import org.onosproject.net.topology.ClusterId;
import org.onosproject.net.topology.Topology;
import org.onosproject.net.topology.TopologyCluster;
@@ -35,7 +36,6 @@
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.List;
-
import static org.onlab.util.Tools.nullIsNotFound;
/**
@@ -187,9 +187,10 @@
@Path("broadcast/{connectPoint}")
public Response getConnectPointBroadcast(@PathParam("connectPoint") String connectPointString) {
Topology topology = get(TopologyService.class).currentTopology();
-
DeviceId deviceId = DeviceId.deviceId(getDeviceId(connectPointString));
+ nullIsNotFound(get(DeviceService.class).getDevice(deviceId), "Device not found " + connectPointString);
PortNumber portNumber = PortNumber.portNumber(getPortNumber(connectPointString));
+ nullIsNotFound(get(DeviceService.class).getPort(deviceId, portNumber), "Port not found " + connectPointString);
ConnectPoint connectPoint = new ConnectPoint(deviceId, portNumber);
boolean isBroadcast = get(TopologyService.class).isBroadcastPoint(topology, connectPoint);
@@ -211,9 +212,10 @@
@Path("infrastructure/{connectPoint}")
public Response getConnectPointInfrastructure(@PathParam("connectPoint") String connectPointString) {
Topology topology = get(TopologyService.class).currentTopology();
-
DeviceId deviceId = DeviceId.deviceId(getDeviceId(connectPointString));
+ nullIsNotFound(get(DeviceService.class).getDevice(deviceId), "Device not found " + connectPointString);
PortNumber portNumber = PortNumber.portNumber(getPortNumber(connectPointString));
+ nullIsNotFound(get(DeviceService.class).getPort(deviceId, portNumber), "Port not found " + connectPointString);
ConnectPoint connectPoint = new ConnectPoint(deviceId, portNumber);
boolean isInfrastructure = get(TopologyService.class).isInfrastructure(topology, connectPoint);
diff --git a/web/api/src/test/java/org/onosproject/rest/resources/TopologyResourceTest.java b/web/api/src/test/java/org/onosproject/rest/resources/TopologyResourceTest.java
index f20249b..7ed3519 100644
--- a/web/api/src/test/java/org/onosproject/rest/resources/TopologyResourceTest.java
+++ b/web/api/src/test/java/org/onosproject/rest/resources/TopologyResourceTest.java
@@ -29,6 +29,12 @@
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DeviceId;
import org.onosproject.net.Link;
+import org.onosproject.net.Device;
+import org.onosproject.net.PortNumber;
+import org.onosproject.net.DefaultPort;
+import org.onosproject.net.Port;
+import org.onosproject.net.device.DeviceService;
+import org.onosproject.net.device.DeviceServiceAdapter;
import org.onosproject.net.provider.ProviderId;
import org.onosproject.net.topology.ClusterId;
import org.onosproject.net.topology.DefaultTopologyCluster;
@@ -37,17 +43,17 @@
import org.onosproject.net.topology.TopologyCluster;
import org.onosproject.net.topology.TopologyService;
import org.onosproject.net.topology.TopologyServiceAdapter;
-
import javax.ws.rs.client.WebTarget;
import java.util.Set;
-
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertThat;
+import static org.onosproject.net.NetTestTools.device;
import static org.onosproject.net.NetTestTools.did;
import static org.onosproject.net.NetTestTools.link;
+import static org.onosproject.net.PortNumber.portNumber;
/**
* Unit tests for Topology REST APIs.
@@ -144,17 +150,37 @@
}
+ private static class MockDeviceService extends DeviceServiceAdapter {
+
+ @Override
+ public Device getDevice(DeviceId deviceId) {
+ String deviceId1 = "dev2";
+ Device device = device(deviceId1);
+ return device;
+ }
+
+ @Override
+ public Port getPort(DeviceId deviceId, PortNumber portNumber) {
+ String deviceIdString = "dev2";
+ Device device = device(deviceIdString);
+ Port port = new DefaultPort(device, portNumber(1), true);
+ return port;
+ }
+ }
+
/**
* Initializes the test harness.
*/
@Before
public void setUpTest() {
TopologyService topologyService = new MockTopologyService();
+ DeviceService mockDeviceService = new MockDeviceService();
CodecManager codecService = new CodecManager();
codecService.activate();
ServiceDirectory testDirectory =
new TestServiceDirectory()
+ .add(DeviceService.class, mockDeviceService)
.add(TopologyService.class, topologyService)
.add(CodecService.class, codecService);
BaseResource.setServiceDirectory(testDirectory);
@@ -275,7 +301,6 @@
String response = wt.path("topology/infrastructure/dev2:1").request().get(String.class);
JsonObject result = Json.parse(response).asObject();
assertThat(result, notNullValue());
-
assertThat(result.get("infrastructure").asBoolean(), is(true));
}
}