summaryrefslogtreecommitdiffstats
path: root/framework/src/onos/web/api/src/test/java/org/onosproject/rest/HostResourceTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/web/api/src/test/java/org/onosproject/rest/HostResourceTest.java')
-rw-r--r--framework/src/onos/web/api/src/test/java/org/onosproject/rest/HostResourceTest.java390
1 files changed, 0 insertions, 390 deletions
diff --git a/framework/src/onos/web/api/src/test/java/org/onosproject/rest/HostResourceTest.java b/framework/src/onos/web/api/src/test/java/org/onosproject/rest/HostResourceTest.java
deleted file mode 100644
index 5ac483d8..00000000
--- a/framework/src/onos/web/api/src/test/java/org/onosproject/rest/HostResourceTest.java
+++ /dev/null
@@ -1,390 +0,0 @@
-/*
- * Copyright 2014-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.io.InputStream;
-import java.net.HttpURLConnection;
-import java.util.HashSet;
-import java.util.Set;
-
-import com.sun.jersey.api.client.ClientResponse;
-import org.hamcrest.Description;
-import org.hamcrest.Matchers;
-import org.hamcrest.TypeSafeMatcher;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.osgi.TestServiceDirectory;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onlab.rest.BaseResource;
-import org.onosproject.codec.CodecService;
-import org.onosproject.codec.impl.CodecManager;
-import org.onosproject.net.DefaultHost;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Host;
-import org.onosproject.net.HostId;
-import org.onosproject.net.HostLocation;
-import org.onosproject.net.host.HostProviderRegistry;
-import org.onosproject.net.host.HostProviderService;
-import org.onosproject.net.host.HostService;
-import org.onosproject.net.provider.ProviderId;
-
-import com.eclipsesource.json.JsonArray;
-import com.eclipsesource.json.JsonObject;
-import com.google.common.collect.ImmutableSet;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
-
-import javax.ws.rs.core.MediaType;
-
-import static org.easymock.EasyMock.*;
-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.junit.Assert.fail;
-import static org.onlab.packet.MacAddress.valueOf;
-import static org.onlab.packet.VlanId.vlanId;
-import static org.onosproject.net.PortNumber.portNumber;
-
-/**
- * Simple example on how to write a JAX-RS unit test using Jersey test framework.
- * A base class should/will be created to provide further assistance for testing.
- */
-public class HostResourceTest extends ResourceTest {
- final HostService mockHostService = createMock(HostService.class);
- final HostProviderRegistry mockHostProviderRegistry = createMock(HostProviderRegistry.class);
- final HostProviderService mockHostProviderService = createMock(HostProviderService.class);
- final HashSet<Host> hosts = new HashSet<>();
-
- /**
- * Initializes test mocks and environment.
- */
- @Before
- public void setUpTest() {
- expect(mockHostService.getHosts()).andReturn(hosts).anyTimes();
-
- // Register the services needed for the test
- final CodecManager codecService = new CodecManager();
- codecService.activate();
- ServiceDirectory testDirectory =
- new TestServiceDirectory()
- .add(HostService.class, mockHostService)
- .add(CodecService.class, codecService)
- .add(HostProviderRegistry.class, mockHostProviderRegistry);
- BaseResource.setServiceDirectory(testDirectory);
- }
-
- /**
- * Verifies mocks.
- */
- @After
- public void tearDownTest() {
- verify(mockHostService);
- }
-
- /**
- * Hamcrest matcher to check that a host representation in JSON matches
- * the actual host.
- */
- public static class HostJsonMatcher extends TypeSafeMatcher<JsonObject> {
- private final Host host;
- private String reason = "";
-
- public HostJsonMatcher(Host hostValue) {
- host = hostValue;
- }
-
- @Override
- public boolean matchesSafely(JsonObject jsonHost) {
- // Check id
- final String jsonId = jsonHost.get("id").asString();
- if (!jsonId.equals(host.id().toString())) {
- reason = "id " + host.id().toString();
- return false;
- }
-
- // Check vlan id
- final String jsonVlanId = jsonHost.get("vlan").asString();
- if (!jsonVlanId.equals(host.vlan().toString())) {
- reason = "vlan id " + host.vlan().toString();
- return false;
- }
-
- // Check mac address
- final String jsonMacAddress = jsonHost.get("mac").asString();
- if (!jsonMacAddress.equals(host.mac().toString())) {
- reason = "mac address " + host.mac().toString();
- return false;
- }
-
- // Check location element id
- final JsonObject jsonLocation = jsonHost.get("location").asObject();
- final String jsonLocationElementId = jsonLocation.get("elementId").asString();
- if (!jsonLocationElementId.equals(host.location().elementId().toString())) {
- reason = "location element id " + host.location().elementId().toString();
- return false;
- }
-
- // Check location port number
- final String jsonLocationPortNumber = jsonLocation.get("port").asString();
- if (!jsonLocationPortNumber.equals(host.location().port().toString())) {
- reason = "location portNumber " + host.location().port().toString();
- return false;
- }
-
- // Check Ip Addresses
- final JsonArray jsonHostIps = jsonHost.get("ipAddresses").asArray();
- final Set<IpAddress> expectedHostIps = host.ipAddresses();
- if (jsonHostIps.size() != expectedHostIps.size()) {
- reason = "IP address arrays differ in size";
- return false;
- }
-
- return true;
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText(reason);
- }
- }
-
- /**
- * Factory to allocate a host array matcher.
- *
- * @param host host object we are looking for
- * @return matcher
- */
- private static HostJsonMatcher matchesHost(Host host) {
- return new HostJsonMatcher(host);
- }
-
- /**
- * Hamcrest matcher to check that a host is represented properly in a JSON
- * array of hosts.
- */
- public static class HostJsonArrayMatcher extends TypeSafeMatcher<JsonArray> {
- private final Host host;
- private String reason = "";
-
- public HostJsonArrayMatcher(Host hostValue) {
- host = hostValue;
- }
-
- @Override
- public boolean matchesSafely(JsonArray json) {
- boolean hostFound = false;
- final int expectedAttributes = 5;
- for (int jsonHostIndex = 0; jsonHostIndex < json.size();
- jsonHostIndex++) {
-
- final JsonObject jsonHost = json.get(jsonHostIndex).asObject();
-
- if (jsonHost.names().size() != expectedAttributes) {
- reason = "Found a host with the wrong number of attributes";
- return false;
- }
-
- final String jsonHostId = jsonHost.get("id").asString();
- if (jsonHostId.equals(host.id().toString())) {
- hostFound = true;
-
- // We found the correct host, check attribute values
- assertThat(jsonHost, matchesHost(host));
- }
- }
- if (!hostFound) {
- reason = "Host with id " + host.id().toString() + " not found";
- return false;
- } else {
- return true;
- }
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText(reason);
- }
- }
-
- /**
- * Factory to allocate a host array matcher.
- *
- * @param host host object we are looking for
- * @return matcher
- */
- private static HostJsonArrayMatcher hasHost(Host host) {
- return new HostJsonArrayMatcher(host);
- }
-
- /**
- * Tests the result of the rest api GET when there are no hosts.
- */
- @Test
- public void testHostsEmptyArray() {
- replay(mockHostService);
- WebResource rs = resource();
- String response = rs.path("hosts").get(String.class);
- assertThat(response, is("{\"hosts\":[]}"));
- }
-
- /**
- * Tests the result of the rest api GET when hosts are defined.
- */
- @Test
- public void testHostsArray() {
- replay(mockHostService);
- final ProviderId pid = new ProviderId("of", "foo");
- final MacAddress mac1 = MacAddress.valueOf("00:00:11:00:00:01");
- final Set<IpAddress> ips1 = ImmutableSet.of(IpAddress.valueOf("1111:1111:1111:1::"));
- final Host host1 =
- new DefaultHost(pid, HostId.hostId(mac1), valueOf(1), vlanId((short) 1),
- new HostLocation(DeviceId.deviceId("1"), portNumber(11), 1),
- ips1);
- final MacAddress mac2 = MacAddress.valueOf("00:00:11:00:00:02");
- final Set<IpAddress> ips2 = ImmutableSet.of(
- IpAddress.valueOf("2222:2222:2222:1::"),
- IpAddress.valueOf("2222:2222:2222:2::"));
- final Host host2 =
- new DefaultHost(pid, HostId.hostId(mac2), valueOf(2), vlanId((short) 2),
- new HostLocation(DeviceId.deviceId("2"), portNumber(22), 2),
- ips2);
- hosts.add(host1);
- hosts.add(host2);
- WebResource rs = resource();
- String response = rs.path("hosts").get(String.class);
- assertThat(response, containsString("{\"hosts\":["));
-
- final JsonObject result = JsonObject.readFrom(response);
- assertThat(result, notNullValue());
-
- assertThat(result.names(), hasSize(1));
- assertThat(result.names().get(0), is("hosts"));
-
- final JsonArray hosts = result.get("hosts").asArray();
- assertThat(hosts, notNullValue());
-
- assertThat(hosts, hasHost(host1));
- assertThat(hosts, hasHost(host2));
- }
-
- /**
- * Tests fetch of one host by Id.
- */
- @Test
- public void testSingleHostByIdFetch() {
- final ProviderId pid = new ProviderId("of", "foo");
- final MacAddress mac1 = MacAddress.valueOf("00:00:11:00:00:01");
- final Set<IpAddress> ips1 = ImmutableSet.of(IpAddress.valueOf("1111:1111:1111:1::"));
- final Host host1 =
- new DefaultHost(pid, HostId.hostId(mac1), valueOf(1), vlanId((short) 1),
- new HostLocation(DeviceId.deviceId("1"), portNumber(11), 1),
- ips1);
-
- hosts.add(host1);
-
- expect(mockHostService.getHost(HostId.hostId("00:00:11:00:00:01/1")))
- .andReturn(host1)
- .anyTimes();
- replay(mockHostService);
-
- WebResource rs = resource();
- String response = rs.path("hosts/00:00:11:00:00:01%2F1").get(String.class);
- final JsonObject result = JsonObject.readFrom(response);
- assertThat(result, matchesHost(host1));
- }
-
- /**
- * Tests fetch of one host by mac and vlan.
- */
- @Test
- public void testSingleHostByMacAndVlanFetch() {
- final ProviderId pid = new ProviderId("of", "foo");
- final MacAddress mac1 = MacAddress.valueOf("00:00:11:00:00:01");
- final Set<IpAddress> ips1 = ImmutableSet.of(IpAddress.valueOf("1111:1111:1111:1::"));
- final Host host1 =
- new DefaultHost(pid, HostId.hostId(mac1), valueOf(1), vlanId((short) 1),
- new HostLocation(DeviceId.deviceId("1"), portNumber(11), 1),
- ips1);
-
- hosts.add(host1);
-
- expect(mockHostService.getHost(HostId.hostId("00:00:11:00:00:01/1")))
- .andReturn(host1)
- .anyTimes();
- replay(mockHostService);
-
- WebResource rs = resource();
- String response = rs.path("hosts/00:00:11:00:00:01/1").get(String.class);
- final JsonObject result = JsonObject.readFrom(response);
- assertThat(result, matchesHost(host1));
- }
-
- /**
- * Tests that a fetch of a non-existent object throws an exception.
- */
- @Test
- public void testBadGet() {
-
- expect(mockHostService.getHost(HostId.hostId("00:00:11:00:00:01/1")))
- .andReturn(null)
- .anyTimes();
- replay(mockHostService);
-
- WebResource rs = resource();
- try {
- rs.path("hosts/00:00:11:00:00:01/1").get(String.class);
- fail("Fetch of non-existent host did not throw an exception");
- } catch (UniformInterfaceException ex) {
- assertThat(ex.getMessage(),
- containsString("returned a response status of"));
- }
- }
-
- /**
- * Tests post of a single host via JSON stream.
- */
- @Test
- public void testPost() {
- mockHostProviderService.hostDetected(anyObject(), anyObject());
- expectLastCall();
- replay(mockHostProviderService);
-
- expect(mockHostProviderRegistry.register(anyObject())).andReturn(mockHostProviderService);
- mockHostProviderRegistry.unregister(anyObject());
- expectLastCall();
- replay(mockHostProviderRegistry);
-
- replay(mockHostService);
-
- InputStream jsonStream = HostResourceTest.class
- .getResourceAsStream("post-host.json");
- WebResource rs = resource();
-
- ClientResponse response = rs.path("hosts")
- .type(MediaType.APPLICATION_JSON_TYPE)
- .post(ClientResponse.class, jsonStream);
- assertThat(response.getStatus(), is(HttpURLConnection.HTTP_CREATED));
- String location = response.getLocation().getPath();
- assertThat(location, Matchers.startsWith("/hosts/11:22:33:44:55:66/-1"));
- }
-}
-