diff options
author | Ashlee Young <ashlee@onosfw.com> | 2015-09-09 22:15:21 -0700 |
---|---|---|
committer | Ashlee Young <ashlee@onosfw.com> | 2015-09-09 22:15:21 -0700 |
commit | 13d05bc8458758ee39cb829098241e89616717ee (patch) | |
tree | 22a4d1ce65f15952f07a3df5af4b462b4697cb3a /framework/src/onos/web/api/src/test/java/org/onosproject/rest/TopologyResourceTest.java | |
parent | 6139282e1e93c2322076de4b91b1c85d0bc4a8b3 (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.java | 281 |
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)); + } +} |