Make REST API unit tests choose a free port to allow concurrent builds
Change-Id: I05579d38e9374c40ef67251a30869361e31fc6d8
Showing
7 changed files
with
60 additions
and
43 deletions
| ... | @@ -39,7 +39,6 @@ import com.eclipsesource.json.JsonObject; | ... | @@ -39,7 +39,6 @@ import com.eclipsesource.json.JsonObject; |
| 39 | import com.google.common.collect.ImmutableList; | 39 | import com.google.common.collect.ImmutableList; |
| 40 | import com.sun.jersey.api.client.UniformInterfaceException; | 40 | import com.sun.jersey.api.client.UniformInterfaceException; |
| 41 | import com.sun.jersey.api.client.WebResource; | 41 | import com.sun.jersey.api.client.WebResource; |
| 42 | -import com.sun.jersey.test.framework.JerseyTest; | ||
| 43 | 42 | ||
| 44 | import static org.easymock.EasyMock.createMock; | 43 | import static org.easymock.EasyMock.createMock; |
| 45 | import static org.easymock.EasyMock.expect; | 44 | import static org.easymock.EasyMock.expect; |
| ... | @@ -60,17 +59,10 @@ import static org.onosproject.net.PortNumber.portNumber; | ... | @@ -60,17 +59,10 @@ import static org.onosproject.net.PortNumber.portNumber; |
| 60 | /** | 59 | /** |
| 61 | * Unit tests for devices REST APIs. | 60 | * Unit tests for devices REST APIs. |
| 62 | */ | 61 | */ |
| 63 | -public class DevicesResourceTest extends JerseyTest { | 62 | +public class DevicesResourceTest extends ResourceTest { |
| 64 | DeviceService mockDeviceService; | 63 | DeviceService mockDeviceService; |
| 65 | 64 | ||
| 66 | /** | 65 | /** |
| 67 | - * Constructs the test. | ||
| 68 | - */ | ||
| 69 | - public DevicesResourceTest() { | ||
| 70 | - super("org.onosproject.rest"); | ||
| 71 | - } | ||
| 72 | - | ||
| 73 | - /** | ||
| 74 | * Hamcrest matcher to check that an device representation in JSON matches | 66 | * Hamcrest matcher to check that an device representation in JSON matches |
| 75 | * the actual device. | 67 | * the actual device. |
| 76 | */ | 68 | */ | ... | ... |
| ... | @@ -52,7 +52,6 @@ import com.eclipsesource.json.JsonObject; | ... | @@ -52,7 +52,6 @@ import com.eclipsesource.json.JsonObject; |
| 52 | import com.google.common.collect.ImmutableSet; | 52 | import com.google.common.collect.ImmutableSet; |
| 53 | import com.sun.jersey.api.client.UniformInterfaceException; | 53 | import com.sun.jersey.api.client.UniformInterfaceException; |
| 54 | import com.sun.jersey.api.client.WebResource; | 54 | import com.sun.jersey.api.client.WebResource; |
| 55 | -import com.sun.jersey.test.framework.JerseyTest; | ||
| 56 | 55 | ||
| 57 | import static org.easymock.EasyMock.anyObject; | 56 | import static org.easymock.EasyMock.anyObject; |
| 58 | import static org.easymock.EasyMock.createMock; | 57 | import static org.easymock.EasyMock.createMock; |
| ... | @@ -70,7 +69,7 @@ import static org.junit.Assert.fail; | ... | @@ -70,7 +69,7 @@ import static org.junit.Assert.fail; |
| 70 | /** | 69 | /** |
| 71 | * Unit tests for Flows REST APIs. | 70 | * Unit tests for Flows REST APIs. |
| 72 | */ | 71 | */ |
| 73 | -public class FlowsResourceTest extends JerseyTest { | 72 | +public class FlowsResourceTest extends ResourceTest { |
| 74 | final FlowRuleService mockFlowService = createMock(FlowRuleService.class); | 73 | final FlowRuleService mockFlowService = createMock(FlowRuleService.class); |
| 75 | final HashMap<DeviceId, Set<FlowEntry>> rules = new HashMap<>(); | 74 | final HashMap<DeviceId, Set<FlowEntry>> rules = new HashMap<>(); |
| 76 | 75 | ||
| ... | @@ -189,10 +188,6 @@ public class FlowsResourceTest extends JerseyTest { | ... | @@ -189,10 +188,6 @@ public class FlowsResourceTest extends JerseyTest { |
| 189 | } | 188 | } |
| 190 | } | 189 | } |
| 191 | 190 | ||
| 192 | - public FlowsResourceTest() { | ||
| 193 | - super("org.onosproject.rest"); | ||
| 194 | - } | ||
| 195 | - | ||
| 196 | /** | 191 | /** |
| 197 | * Populates some flows used as testing data. | 192 | * Populates some flows used as testing data. |
| 198 | */ | 193 | */ | ... | ... |
| ... | @@ -44,7 +44,6 @@ import com.eclipsesource.json.JsonObject; | ... | @@ -44,7 +44,6 @@ import com.eclipsesource.json.JsonObject; |
| 44 | import com.google.common.collect.ImmutableSet; | 44 | import com.google.common.collect.ImmutableSet; |
| 45 | import com.sun.jersey.api.client.UniformInterfaceException; | 45 | import com.sun.jersey.api.client.UniformInterfaceException; |
| 46 | import com.sun.jersey.api.client.WebResource; | 46 | import com.sun.jersey.api.client.WebResource; |
| 47 | -import com.sun.jersey.test.framework.JerseyTest; | ||
| 48 | 47 | ||
| 49 | import static org.easymock.EasyMock.createMock; | 48 | import static org.easymock.EasyMock.createMock; |
| 50 | import static org.easymock.EasyMock.expect; | 49 | import static org.easymock.EasyMock.expect; |
| ... | @@ -64,14 +63,10 @@ import static org.onosproject.net.PortNumber.portNumber; | ... | @@ -64,14 +63,10 @@ import static org.onosproject.net.PortNumber.portNumber; |
| 64 | * Simple example on how to write a JAX-RS unit test using Jersey test framework. | 63 | * Simple example on how to write a JAX-RS unit test using Jersey test framework. |
| 65 | * A base class should/will be created to provide further assistance for testing. | 64 | * A base class should/will be created to provide further assistance for testing. |
| 66 | */ | 65 | */ |
| 67 | -public class HostResourceTest extends JerseyTest { | 66 | +public class HostResourceTest extends ResourceTest { |
| 68 | final HostService mockHostService = createMock(HostService.class); | 67 | final HostService mockHostService = createMock(HostService.class); |
| 69 | final HashSet<Host> hosts = new HashSet<>(); | 68 | final HashSet<Host> hosts = new HashSet<>(); |
| 70 | 69 | ||
| 71 | - public HostResourceTest() { | ||
| 72 | - super("org.onosproject.rest"); | ||
| 73 | - } | ||
| 74 | - | ||
| 75 | @Before | 70 | @Before |
| 76 | public void setUp() { | 71 | public void setUp() { |
| 77 | expect(mockHostService.getHosts()).andReturn(hosts).anyTimes(); | 72 | expect(mockHostService.getHosts()).andReturn(hosts).anyTimes(); | ... | ... |
| ... | @@ -44,7 +44,6 @@ import com.eclipsesource.json.JsonValue; | ... | @@ -44,7 +44,6 @@ import com.eclipsesource.json.JsonValue; |
| 44 | import com.google.common.base.MoreObjects; | 44 | import com.google.common.base.MoreObjects; |
| 45 | import com.sun.jersey.api.client.UniformInterfaceException; | 45 | import com.sun.jersey.api.client.UniformInterfaceException; |
| 46 | import com.sun.jersey.api.client.WebResource; | 46 | import com.sun.jersey.api.client.WebResource; |
| 47 | -import com.sun.jersey.test.framework.JerseyTest; | ||
| 48 | 47 | ||
| 49 | import static org.easymock.EasyMock.createMock; | 48 | import static org.easymock.EasyMock.createMock; |
| 50 | import static org.easymock.EasyMock.expect; | 49 | import static org.easymock.EasyMock.expect; |
| ... | @@ -60,7 +59,7 @@ import static org.junit.Assert.fail; | ... | @@ -60,7 +59,7 @@ import static org.junit.Assert.fail; |
| 60 | /** | 59 | /** |
| 61 | * Unit tests for Intents REST APIs. | 60 | * Unit tests for Intents REST APIs. |
| 62 | */ | 61 | */ |
| 63 | -public class IntentsResourceTest extends JerseyTest { | 62 | +public class IntentsResourceTest extends ResourceTest { |
| 64 | final IntentService mockIntentService = createMock(IntentService.class); | 63 | final IntentService mockIntentService = createMock(IntentService.class); |
| 65 | final HashSet<Intent> intents = new HashSet<>(); | 64 | final HashSet<Intent> intents = new HashSet<>(); |
| 66 | private static final ApplicationId APP_ID = | 65 | private static final ApplicationId APP_ID = |
| ... | @@ -110,10 +109,6 @@ public class IntentsResourceTest extends JerseyTest { | ... | @@ -110,10 +109,6 @@ public class IntentsResourceTest extends JerseyTest { |
| 110 | } | 109 | } |
| 111 | } | 110 | } |
| 112 | 111 | ||
| 113 | - public IntentsResourceTest() { | ||
| 114 | - super("org.onosproject.rest"); | ||
| 115 | - } | ||
| 116 | - | ||
| 117 | /** | 112 | /** |
| 118 | * Hamcrest matcher to check that an intent representation in JSON matches | 113 | * Hamcrest matcher to check that an intent representation in JSON matches |
| 119 | * the actual intent. | 114 | * the actual intent. | ... | ... |
| ... | @@ -35,7 +35,6 @@ import com.eclipsesource.json.JsonObject; | ... | @@ -35,7 +35,6 @@ import com.eclipsesource.json.JsonObject; |
| 35 | import com.google.common.collect.ImmutableList; | 35 | import com.google.common.collect.ImmutableList; |
| 36 | import com.google.common.collect.ImmutableSet; | 36 | import com.google.common.collect.ImmutableSet; |
| 37 | import com.sun.jersey.api.client.WebResource; | 37 | import com.sun.jersey.api.client.WebResource; |
| 38 | -import com.sun.jersey.test.framework.JerseyTest; | ||
| 39 | 38 | ||
| 40 | import static org.easymock.EasyMock.createMock; | 39 | import static org.easymock.EasyMock.createMock; |
| 41 | import static org.easymock.EasyMock.expect; | 40 | import static org.easymock.EasyMock.expect; |
| ... | @@ -52,7 +51,7 @@ import static org.onosproject.net.NetTestTools.link; | ... | @@ -52,7 +51,7 @@ import static org.onosproject.net.NetTestTools.link; |
| 52 | /** | 51 | /** |
| 53 | * Unit tests for links REST APIs. | 52 | * Unit tests for links REST APIs. |
| 54 | */ | 53 | */ |
| 55 | -public class LinksResourceTest extends JerseyTest { | 54 | +public class LinksResourceTest extends ResourceTest { |
| 56 | LinkService mockLinkService; | 55 | LinkService mockLinkService; |
| 57 | 56 | ||
| 58 | Link link1 = link("src1", 1, "dst1", 1); | 57 | Link link1 = link("src1", 1, "dst1", 1); |
| ... | @@ -60,13 +59,6 @@ public class LinksResourceTest extends JerseyTest { | ... | @@ -60,13 +59,6 @@ public class LinksResourceTest extends JerseyTest { |
| 60 | Link link3 = link("src3", 3, "dst3", 3); | 59 | Link link3 = link("src3", 3, "dst3", 3); |
| 61 | 60 | ||
| 62 | /** | 61 | /** |
| 63 | - * Constructs the test. | ||
| 64 | - */ | ||
| 65 | - public LinksResourceTest() { | ||
| 66 | - super("org.onosproject.rest"); | ||
| 67 | - } | ||
| 68 | - | ||
| 69 | - /** | ||
| 70 | * Hamcrest matcher to check that an link representation in JSON matches | 62 | * Hamcrest matcher to check that an link representation in JSON matches |
| 71 | * the actual link. | 63 | * the actual link. |
| 72 | */ | 64 | */ | ... | ... |
| 1 | +/* | ||
| 2 | + * Copyright 2015 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.rest; | ||
| 17 | + | ||
| 18 | +import java.io.IOException; | ||
| 19 | +import java.net.ServerSocket; | ||
| 20 | + | ||
| 21 | +import com.sun.jersey.test.framework.AppDescriptor; | ||
| 22 | +import com.sun.jersey.test.framework.JerseyTest; | ||
| 23 | +import com.sun.jersey.test.framework.WebAppDescriptor; | ||
| 24 | + | ||
| 25 | +/** | ||
| 26 | + * Base class for REST API tests. Performs common configuration operations. | ||
| 27 | + */ | ||
| 28 | +public class ResourceTest extends JerseyTest { | ||
| 29 | + | ||
| 30 | + /** | ||
| 31 | + * Assigns an available port for the test. | ||
| 32 | + * | ||
| 33 | + * @param defaultPort If a port cannot be determined, this one is used. | ||
| 34 | + * @return free port | ||
| 35 | + */ | ||
| 36 | + @Override | ||
| 37 | + public int getPort(int defaultPort) { | ||
| 38 | + try { | ||
| 39 | + ServerSocket socket = new ServerSocket(0); | ||
| 40 | + socket.setReuseAddress(true); | ||
| 41 | + int port = socket.getLocalPort(); | ||
| 42 | + socket.close(); | ||
| 43 | + return port; | ||
| 44 | + } catch (IOException ioe) { | ||
| 45 | + return defaultPort; | ||
| 46 | + } | ||
| 47 | + } | ||
| 48 | + | ||
| 49 | + @Override | ||
| 50 | + public AppDescriptor configure() { | ||
| 51 | + return new WebAppDescriptor.Builder("org.onosproject.rest").build(); | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | +} |
| ... | @@ -43,7 +43,6 @@ import com.eclipsesource.json.JsonArray; | ... | @@ -43,7 +43,6 @@ import com.eclipsesource.json.JsonArray; |
| 43 | import com.eclipsesource.json.JsonObject; | 43 | import com.eclipsesource.json.JsonObject; |
| 44 | import com.google.common.collect.ImmutableSet; | 44 | import com.google.common.collect.ImmutableSet; |
| 45 | import com.sun.jersey.api.client.WebResource; | 45 | import com.sun.jersey.api.client.WebResource; |
| 46 | -import com.sun.jersey.test.framework.JerseyTest; | ||
| 47 | 46 | ||
| 48 | import static org.hamcrest.Matchers.hasSize; | 47 | import static org.hamcrest.Matchers.hasSize; |
| 49 | import static org.hamcrest.Matchers.is; | 48 | import static org.hamcrest.Matchers.is; |
| ... | @@ -56,7 +55,7 @@ import static org.onosproject.net.NetTestTools.link; | ... | @@ -56,7 +55,7 @@ import static org.onosproject.net.NetTestTools.link; |
| 56 | /** | 55 | /** |
| 57 | * Unit tests for Topology REST APIs. | 56 | * Unit tests for Topology REST APIs. |
| 58 | */ | 57 | */ |
| 59 | -public class TopologyResourceTest extends JerseyTest { | 58 | +public class TopologyResourceTest extends ResourceTest { |
| 60 | 59 | ||
| 61 | private static class MockTopology implements Topology { | 60 | private static class MockTopology implements Topology { |
| 62 | @Override | 61 | @Override |
| ... | @@ -172,11 +171,6 @@ public class TopologyResourceTest extends JerseyTest { | ... | @@ -172,11 +171,6 @@ public class TopologyResourceTest extends JerseyTest { |
| 172 | } | 171 | } |
| 173 | } | 172 | } |
| 174 | 173 | ||
| 175 | - public TopologyResourceTest() { | ||
| 176 | - super("org.onosproject.rest"); | ||
| 177 | - } | ||
| 178 | - | ||
| 179 | - | ||
| 180 | /** | 174 | /** |
| 181 | * Initializes the test harness. | 175 | * Initializes the test harness. |
| 182 | */ | 176 | */ | ... | ... |
-
Please register or login to post a comment