summaryrefslogtreecommitdiffstats
path: root/framework/src/onos/web/api/src/test/java/org/onosproject/rest/TopologyResourceTest.java
diff options
context:
space:
mode:
authorAshlee Young <ashlee@onosfw.com>2015-09-09 22:15:21 -0700
committerAshlee Young <ashlee@onosfw.com>2015-09-09 22:15:21 -0700
commit13d05bc8458758ee39cb829098241e89616717ee (patch)
tree22a4d1ce65f15952f07a3df5af4b462b4697cb3a /framework/src/onos/web/api/src/test/java/org/onosproject/rest/TopologyResourceTest.java
parent6139282e1e93c2322076de4b91b1c85d0bc4a8b3 (diff)
ONOS checkin based on commit tag e796610b1f721d02f9b0e213cf6f7790c10ecd60
Change-Id: Ife8810491034fe7becdba75dda20de4267bd15cd
Diffstat (limited to 'framework/src/onos/web/api/src/test/java/org/onosproject/rest/TopologyResourceTest.java')
-rw-r--r--framework/src/onos/web/api/src/test/java/org/onosproject/rest/TopologyResourceTest.java281
1 files changed, 281 insertions, 0 deletions
diff --git a/framework/src/onos/web/api/src/test/java/org/onosproject/rest/TopologyResourceTest.java b/framework/src/onos/web/api/src/test/java/org/onosproject/rest/TopologyResourceTest.java
new file mode 100644
index 00000000..da5f9690
--- /dev/null
+++ b/framework/src/onos/web/api/src/test/java/org/onosproject/rest/TopologyResourceTest.java
@@ -0,0 +1,281 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.rest;
+
+import java.util.Set;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.osgi.ServiceDirectory;
+import org.onlab.osgi.TestServiceDirectory;
+import org.onlab.rest.BaseResource;
+import org.onosproject.codec.CodecService;
+import org.onosproject.codec.impl.CodecManager;
+import org.onosproject.net.ConnectPoint;
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.Link;
+import org.onosproject.net.provider.ProviderId;
+import org.onosproject.net.topology.ClusterId;
+import org.onosproject.net.topology.DefaultTopologyCluster;
+import org.onosproject.net.topology.DefaultTopologyVertex;
+import org.onosproject.net.topology.Topology;
+import org.onosproject.net.topology.TopologyCluster;
+import org.onosproject.net.topology.TopologyService;
+import org.onosproject.net.topology.TopologyServiceAdapter;
+
+import com.eclipsesource.json.JsonArray;
+import com.eclipsesource.json.JsonObject;
+import com.google.common.collect.ImmutableSet;
+import com.sun.jersey.api.client.WebResource;
+
+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.did;
+import static org.onosproject.net.NetTestTools.link;
+
+/**
+ * Unit tests for Topology REST APIs.
+ */
+public class TopologyResourceTest extends ResourceTest {
+
+ private static class MockTopology implements Topology {
+ @Override
+ public long time() {
+ return 11111L;
+ }
+
+ @Override
+ public long creationTime() {
+ return 22222L;
+ }
+
+ @Override
+ public long computeCost() {
+ return 0;
+ }
+
+ @Override
+ public int clusterCount() {
+ return 2;
+ }
+
+ @Override
+ public int deviceCount() {
+ return 6;
+ }
+
+ @Override
+ public int linkCount() {
+ return 4;
+ }
+
+ @Override
+ public ProviderId providerId() {
+ return ProviderId.NONE;
+ }
+ }
+
+ private static class MockTopologyService extends TopologyServiceAdapter {
+ final DefaultTopologyVertex root = new DefaultTopologyVertex(did("rootnode"));
+ final Topology topology = new MockTopology();
+ final TopologyCluster cluster1 =
+ new DefaultTopologyCluster(ClusterId.clusterId(0),
+ 2, 1, root);
+ final TopologyCluster cluster2 =
+ new DefaultTopologyCluster(ClusterId.clusterId(1),
+ 4, 3, root);
+
+ @Override
+ public Topology currentTopology() {
+ return topology;
+ }
+
+ @Override
+ public Set<TopologyCluster> getClusters(Topology topology) {
+ return ImmutableSet.of(cluster1, cluster2);
+ }
+
+ @Override
+ public TopologyCluster getCluster(Topology topology, ClusterId clusterId) {
+ return cluster1;
+ }
+
+ @Override
+ public Set<DeviceId> getClusterDevices(Topology topology, TopologyCluster cluster) {
+ DeviceId device1 = did("dev1");
+ DeviceId device2 = did("dev2");
+
+ return ImmutableSet.of(device1, device2);
+ }
+
+ @Override
+ public Set<Link> getClusterLinks(Topology topology, TopologyCluster cluster) {
+ Link link1 = link("src1", 1, "dst1", 1);
+ Link link2 = link("src2", 1, "dst2", 1);
+ Link link3 = link("src3", 1, "dst3", 1);
+ return ImmutableSet.of(link1, link2, link3);
+ }
+
+ @Override
+ public boolean isInfrastructure(Topology topology, ConnectPoint connectPoint) {
+ return connectPoint.elementId().toString().equals("dev2");
+ }
+
+ @Override
+ public boolean isBroadcastPoint(Topology topology, ConnectPoint connectPoint) {
+ return connectPoint.elementId().toString().equals("dev1");
+ }
+
+ }
+
+ /**
+ * Initializes the test harness.
+ */
+ @Before
+ public void setUpTest() {
+ TopologyService topologyService = new MockTopologyService();
+ CodecManager codecService = new CodecManager();
+ codecService.activate();
+
+ ServiceDirectory testDirectory =
+ new TestServiceDirectory()
+ .add(TopologyService.class, topologyService)
+ .add(CodecService.class, codecService);
+ BaseResource.setServiceDirectory(testDirectory);
+ }
+
+ /**
+ * Tests the topology overview.
+ */
+ @Test
+ public void getTopology() {
+ WebResource rs = resource();
+ String response = rs.path("topology").get(String.class);
+ JsonObject result = JsonObject.readFrom(response);
+ assertThat(result, notNullValue());
+
+ assertThat(result.names(), hasSize(4));
+
+ assertThat(result.get("time").asLong(), is(11111L));
+ assertThat(result.get("clusters").asLong(), is(2L));
+ assertThat(result.get("devices").asLong(), is(6L));
+ assertThat(result.get("links").asLong(), is(4L));
+ }
+
+ /**
+ * Tests the clusters overview.
+ */
+ @Test
+ public void getTopologyClusters() {
+ WebResource rs = resource();
+ String response = rs.path("topology/clusters").get(String.class);
+ JsonObject result = JsonObject.readFrom(response);
+ assertThat(result, notNullValue());
+
+ assertThat(result.names(), hasSize(1));
+ JsonArray clusters = result.get("clusters").asArray();
+ assertThat(clusters, notNullValue());
+ assertThat(clusters.size(), is(2));
+ }
+
+ /**
+ * Tests an individual cluster overview.
+ */
+ @Test
+ public void getCluster() {
+ WebResource rs = resource();
+ String response = rs.path("topology/clusters/0").get(String.class);
+ JsonObject result = JsonObject.readFrom(response);
+ assertThat(result, notNullValue());
+
+ assertThat(result.get("id").asLong(), is(0L));
+ assertThat(result.get("deviceCount").asLong(), is(2L));
+ assertThat(result.get("linkCount").asLong(), is(1L));
+ assertThat(result.get("root").asString(), containsString("rootnode"));
+
+ assertThat(result.names(), hasSize(4));
+ }
+
+ /**
+ * Tests an individual cluster's devices list.
+ */
+ @Test
+ public void getClusterDevices() {
+ WebResource rs = resource();
+ String response = rs.path("topology/clusters/0/devices").get(String.class);
+ JsonObject result = JsonObject.readFrom(response);
+ assertThat(result, notNullValue());
+
+ JsonArray devices = result.get("devices").asArray();
+ assertThat(devices.size(), is(2));
+
+ assertThat(devices.get(0).asString(), is("of:dev1"));
+ assertThat(devices.get(1).asString(), is("of:dev2"));
+ }
+
+ /**
+ * Tests an individual cluster's links list.
+ */
+ @Test
+ public void getClusterLinks() {
+ WebResource rs = resource();
+ String response = rs.path("topology/clusters/1/links").get(String.class);
+ JsonObject result = JsonObject.readFrom(response);
+ assertThat(result, notNullValue());
+
+ JsonArray links = result.get("links").asArray();
+ assertThat(links.size(), is(3));
+
+ JsonObject link0 = links.get(0).asObject();
+ JsonObject src0 = link0.get("src").asObject();
+ String device0 = src0.get("device").asString();
+ assertThat(device0, is("of:src1"));
+
+ JsonObject link2 = links.get(2).asObject();
+ JsonObject src2 = link2.get("src").asObject();
+ String device2 = src2.get("device").asString();
+ assertThat(device2, is("of:src3"));
+ }
+
+ /**
+ * Tests a broadcast query.
+ */
+ @Test
+ public void getBroadcast() {
+ WebResource rs = resource();
+ String response = rs.path("topology/broadcast/dev1:1").get(String.class);
+ JsonObject result = JsonObject.readFrom(response);
+ assertThat(result, notNullValue());
+
+ assertThat(result.get("broadcast").asBoolean(), is(true));
+ }
+
+ /**
+ * Tests an infrastructure query.
+ */
+ @Test
+ public void getInfrastructure() {
+ WebResource rs = resource();
+ String response = rs.path("topology/infrastructure/dev2:1").get(String.class);
+ JsonObject result = JsonObject.readFrom(response);
+ assertThat(result, notNullValue());
+
+ assertThat(result.get("infrastructure").asBoolean(), is(true));
+ }
+}