modules/plugins/jboss-as-7/pom.xml
| 2
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/InterruptibleOperationsTest.java
| 49 ++----
modules/plugins/netservices/pom.xml
| 7
modules/plugins/netservices/src/test/java/org/rhq/plugins/netservices/itest/HTTPNetServiceComponentTest.java
| 72 ++++------
modules/plugins/netservices/src/test/java/org/rhq/plugins/netservices/itest/NetServiceComponentTest.java
| 2
modules/plugins/netservices/src/test/java/org/rhq/plugins/netservices/itest/PortNetServiceComponentTest.java
| 55 ++++---
6 files changed, 81 insertions(+), 106 deletions(-)
New commits:
commit 3fb76cb4bc1f745985b8a9805481648fe5fa9e46
Author: Thomas Segismont <tsegismo(a)redhat.com>
Date: Fri May 31 13:37:48 2013 +0200
Use a port from dynamic port range in integration tests
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index d85e7e3..52cccde 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -30,7 +30,6 @@
<java.tieredCompilation>-Dxxx</java.tieredCompilation>
<java.useCompressedOOPS>-Dxxx</java.useCompressedOOPS>
<rhq.internal>false</rhq.internal>
-
<as7.itest.mock.http.management.server.port>32259</as7.itest.mock.http.management.server.port>
</properties>
@@ -638,7 +637,6 @@
<jboss.domain.portOffset>${jboss.domain.portOffset}</jboss.domain.portOffset>
<jboss.domain.httpManagementPort>${jboss.domain.httpManagementPort}</jboss.domain.httpManagementPort>
<settings.localRepository>${settings.localRepository}</settings.localRepository>
-
<as7.itest.mock.http.management.server.port>${as7.itest.mock.http.management.server.port}</as7.itest.mock.http.management.server.port>
</systemPropertyVariables>
</configuration>
<executions>
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/InterruptibleOperationsTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/InterruptibleOperationsTest.java
index 9597d47..192117c 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/InterruptibleOperationsTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/InterruptibleOperationsTest.java
@@ -30,6 +30,7 @@ import static
org.rhq.modules.plugins.jbossas7.helper.ServerPluginConfiguration.
import static org.testng.Assert.assertEquals;
import java.io.IOException;
+import java.net.BindException;
import java.net.InetSocketAddress;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -39,8 +40,6 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.map.ObjectMapper;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
@@ -59,7 +58,6 @@ import org.rhq.core.pluginapi.availability.AvailabilityContext;
import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.core.pluginapi.operation.OperationResult;
import org.rhq.core.system.SystemInfoFactory;
-import org.rhq.core.util.StringUtil;
import org.rhq.modules.plugins.jbossas7.StandaloneASComponent;
import org.rhq.modules.plugins.jbossas7.json.Operation;
import org.rhq.modules.plugins.jbossas7.json.Result;
@@ -72,15 +70,14 @@ import org.rhq.modules.plugins.jbossas7.json.Result;
*
* @author Thomas Segismont
*/
+@Test(singleThreaded = true)
public class InterruptibleOperationsTest {
- private static final Log LOG = LogFactory.getLog(InterruptibleOperationsTest.class);
-
private static final String HTTP_HOST = "localhost";
- private static final int HTTP_PORT = 31159;
+ private static final int MIN_DYNAMIC_PORT = 49152;
- private static final String HTTP_PORT_VARIABLE =
"as7.itest.mock.http.management.server.port";
+ private static final int MAX_PORT_NUMBER = 65535;
@Mock
private ResourceContext resourceContext;
@@ -95,36 +92,29 @@ public class InterruptibleOperationsTest {
private void setup() throws Exception {
MockitoAnnotations.initMocks(this);
serverComponent = new TestStandaloneASComponent();
- int httpPort = getJettyPort();
+ int httpPort = setupJettyServer();
setupResourceContext(httpPort);
- setupJettyServer(httpPort);
- jettyServer.start();
executorService = Executors.newSingleThreadExecutor();
serverComponent.start(resourceContext);
}
- private void setupJettyServer(int httpPort) {
- jettyServer = new Server(new InetSocketAddress(HTTP_HOST, httpPort));
- ServletContextHandler context = new
ServletContextHandler(ServletContextHandler.SESSIONS);
- context.setContextPath("/");
- jettyServer.setHandler(context);
- HttpServlet testServlet = new TestServlet();
- context.addServlet(new ServletHolder(testServlet), "/*");
- }
-
- private static int getJettyPort() {
- String httpPortVariable = System.getProperty(HTTP_PORT_VARIABLE);
- if (StringUtil.isNotBlank(httpPortVariable)) {
+ private int setupJettyServer() throws Exception {
+ // Loop until Jetty binds to an available port
+ for (int httpPort = MIN_DYNAMIC_PORT; httpPort <= MAX_PORT_NUMBER; httpPort++)
{
+ ServletContextHandler context = new
ServletContextHandler(ServletContextHandler.SESSIONS);
+ context.setContextPath("/");
+ HttpServlet testServlet = new TestServlet();
+ context.addServlet(new ServletHolder(testServlet), "/*");
+ jettyServer = new Server(new InetSocketAddress(HTTP_HOST, httpPort));
+ jettyServer.setHandler(context);
try {
- int port = Integer.parseInt(httpPortVariable);
- LOG.info("Using port " + httpPortVariable + " for http
server");
- return port;
- } catch (NumberFormatException e) {
- LOG.warn("Invalid port variable: " + httpPortVariable);
+ jettyServer.start();
+ return httpPort;
+ } catch (BindException e) {
+ // Port already in use
}
}
- LOG.info("Using default port " + String.valueOf(HTTP_PORT) + " for
http server");
- return HTTP_PORT;
+ throw new RuntimeException("Could not find an available port");
}
private void setupResourceContext(int httpPort) {
@@ -147,7 +137,6 @@ public class InterruptibleOperationsTest {
@AfterMethod
private void tearDown() throws Exception {
- LOG.info("Shutting down Jetty test server");
try {
if (jettyServer != null) {
jettyServer.stop();
diff --git a/modules/plugins/netservices/pom.xml b/modules/plugins/netservices/pom.xml
index 6b663ff..0cb6f9c 100644
--- a/modules/plugins/netservices/pom.xml
+++ b/modules/plugins/netservices/pom.xml
@@ -16,10 +16,6 @@
<name>RHQ Network Services Plugin</name>
<description>A plugin for monitoring network services.</description>
- <properties>
-
<netservices.itest.http.server.port>31158</netservices.itest.http.server.port>
- </properties>
-
<dependencies>
<dependency>
@@ -111,9 +107,6 @@
</properties>
<useSystemClassLoader>false</useSystemClassLoader>
<argLine>${jacoco.integration-test.args}</argLine>
- <systemPropertyVariables>
-
<netservices.itest.http.server.port>${netservices.itest.http.server.port}</netservices.itest.http.server.port>
- </systemPropertyVariables>
</configuration>
<executions>
<execution>
diff --git
a/modules/plugins/netservices/src/test/java/org/rhq/plugins/netservices/itest/HTTPNetServiceComponentTest.java
b/modules/plugins/netservices/src/test/java/org/rhq/plugins/netservices/itest/HTTPNetServiceComponentTest.java
index fc02516..eb07d65 100644
---
a/modules/plugins/netservices/src/test/java/org/rhq/plugins/netservices/itest/HTTPNetServiceComponentTest.java
+++
b/modules/plugins/netservices/src/test/java/org/rhq/plugins/netservices/itest/HTTPNetServiceComponentTest.java
@@ -25,6 +25,7 @@ import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
import java.io.IOException;
+import java.net.BindException;
import java.net.InetSocketAddress;
import java.util.HashMap;
import java.util.HashSet;
@@ -36,8 +37,6 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
@@ -53,7 +52,6 @@ import org.rhq.core.domain.measurement.MeasurementData;
import org.rhq.core.domain.measurement.MeasurementReport;
import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
import org.rhq.core.pluginapi.inventory.ResourceComponent;
-import org.rhq.core.util.StringUtil;
import org.rhq.plugins.netservices.HTTPNetServiceComponent;
import org.rhq.plugins.netservices.HTTPNetServiceComponent.ConfigKeys;
import org.rhq.plugins.netservices.HTTPNetServiceComponent.HttpMethod;
@@ -61,17 +59,16 @@ import
org.rhq.plugins.netservices.HTTPNetServiceComponent.HttpMethod;
/**
* @author Thomas Segismont
*/
+@Test(singleThreaded = true)
public class HTTPNetServiceComponentTest extends NetServiceComponentTest {
- private static final Log LOG = LogFactory.getLog(NetServiceComponentTest.class);
-
private static final String SERVICE_NAME = "HTTPService";
private static final String HTTP_HOST = "localhost";
- private static final int HTTP_PORT = 31158;
+ private static final int MIN_DYNAMIC_PORT = 49152;
- private static final String HTTP_PORT_VARIABLE =
"netservices.itest.http.server.port";
+ private static final int MAX_PORT_NUMBER = 65535;
private static final int SERVLET_SLEEP = 1000;
@@ -83,48 +80,26 @@ public class HTTPNetServiceComponentTest extends
NetServiceComponentTest {
@BeforeClass
public void startJetty() throws Exception {
- LOG.info("Setting up Jetty test server");
- httpPort = getJettyPort();
- jettyServer = new Server(new InetSocketAddress(HTTP_HOST, httpPort));
- ServletContextHandler context = new
ServletContextHandler(ServletContextHandler.SESSIONS);
- context.setContextPath("/");
- jettyServer.setHandler(context);
- @SuppressWarnings("serial")
- HttpServlet testServlet = new HttpServlet() {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException {
- resp.getWriter().println("Test servlet request: success
view");
- long start = System.currentTimeMillis();
- do {
- try {
- Thread.sleep(SERVLET_SLEEP);
- } catch (InterruptedException e) {
- }
- } while (System.currentTimeMillis() - start < SERVLET_SLEEP);
- }
- };
- context.addServlet(new ServletHolder(testServlet), "/*");
- jettyServer.start();
- }
-
- private static int getJettyPort() {
- String httpPortVariable = System.getProperty(HTTP_PORT_VARIABLE);
- if (StringUtil.isNotBlank(httpPortVariable)) {
+ // Loop until Jetty binds to an available port
+ for (httpPort = MIN_DYNAMIC_PORT; httpPort <= MAX_PORT_NUMBER; httpPort++) {
+ ServletContextHandler context = new
ServletContextHandler(ServletContextHandler.SESSIONS);
+ context.setContextPath("/");
+ HttpServlet testServlet = new TestServlet();
+ context.addServlet(new ServletHolder(testServlet), "/*");
+ jettyServer = new Server(new InetSocketAddress(HTTP_HOST, httpPort));
+ jettyServer.setHandler(context);
try {
- int port = Integer.parseInt(httpPortVariable);
- LOG.info("Using port " + httpPortVariable + " for http
server");
- return port;
- } catch (NumberFormatException e) {
- LOG.warn("Invalid port variable: " + httpPortVariable);
+ jettyServer.start();
+ return;
+ } catch (BindException e) {
+ // Port already in use
}
}
- LOG.info("Using default port " + String.valueOf(HTTP_PORT) + " for
http server");
- return HTTP_PORT;
+ throw new RuntimeException("Could not find an available port");
}
@AfterClass
public void stopJetty() {
- LOG.info("Shutting down Jetty test server");
try {
if (jettyServer != null) {
jettyServer.stop();
@@ -180,4 +155,17 @@ public class HTTPNetServiceComponentTest extends
NetServiceComponentTest {
assertTrue(value > 0);
}
+ private static class TestServlet extends HttpServlet {
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException {
+ resp.getWriter().println("Test servlet request: success view");
+ long start = System.currentTimeMillis();
+ do {
+ try {
+ Thread.sleep(SERVLET_SLEEP);
+ } catch (InterruptedException e) {
+ }
+ } while (System.currentTimeMillis() - start < SERVLET_SLEEP);
+ }
+ }
}
diff --git
a/modules/plugins/netservices/src/test/java/org/rhq/plugins/netservices/itest/NetServiceComponentTest.java
b/modules/plugins/netservices/src/test/java/org/rhq/plugins/netservices/itest/NetServiceComponentTest.java
index 503e359..f0c1230 100644
---
a/modules/plugins/netservices/src/test/java/org/rhq/plugins/netservices/itest/NetServiceComponentTest.java
+++
b/modules/plugins/netservices/src/test/java/org/rhq/plugins/netservices/itest/NetServiceComponentTest.java
@@ -134,7 +134,7 @@ public abstract class NetServiceComponentTest {
}
@Test
- public static void testPluginLoad() {
+ public void testPluginLoad() {
assertNotNull(pluginEnvironment, "Plugin not loaded");
assertEquals(pluginEnvironment.getPluginName(), PLUGIN_NAME);
}
diff --git
a/modules/plugins/netservices/src/test/java/org/rhq/plugins/netservices/itest/PortNetServiceComponentTest.java
b/modules/plugins/netservices/src/test/java/org/rhq/plugins/netservices/itest/PortNetServiceComponentTest.java
index 75a9370..ebab01f 100644
---
a/modules/plugins/netservices/src/test/java/org/rhq/plugins/netservices/itest/PortNetServiceComponentTest.java
+++
b/modules/plugins/netservices/src/test/java/org/rhq/plugins/netservices/itest/PortNetServiceComponentTest.java
@@ -25,6 +25,7 @@ import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
import java.io.IOException;
+import java.net.BindException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
@@ -33,8 +34,6 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@@ -54,14 +53,17 @@ import
org.rhq.plugins.netservices.PortNetServiceComponent.ConfigKeys;
/**
* @author Thomas Segismont
*/
+@Test(singleThreaded = true)
public class PortNetServiceComponentTest extends NetServiceComponentTest {
- private static final Log LOG = LogFactory.getLog(PortNetServiceComponentTest.class);
-
private static final String SERVICE_NAME = "PortService";
private static final InetAddress LOOPBACK_ADDRESS =
InetAddress.getLoopbackAddress();
+ private static final int MIN_DYNAMIC_PORT = 8080/*49152*/;
+
+ private static final int MAX_PORT_NUMBER = 8081/*65535*/;
+
private PortNetServiceComponent portNetServiceComponent;
private ServerSocket serverSocket;
@@ -74,32 +76,37 @@ public class PortNetServiceComponentTest extends
NetServiceComponentTest {
@BeforeClass
public void startSocketServer() throws Exception {
- LOG.info("Setting up a socket server");
- // Let's bind a server socket to any available port
- serverSocket = new ServerSocket(0, 50, LOOPBACK_ADDRESS);
- // Do not block indefinitely on call to #accept
- serverSocket.setSoTimeout(1000);
- serverSocketLocalPort = serverSocket.getLocalPort();
- LOG.info("Using port " + serverSocketLocalPort + " for socket
server");
- acceptorThread = new Thread(new Runnable() {
- @Override
- public void run() {
- while (!stopListening) {
- try {
- Socket socket = serverSocket.accept();
- socket.close();
- } catch (IOException ignore) {
+ // Loop until the Server Socket binds to an available port
+ for (int port = MIN_DYNAMIC_PORT; port <= MAX_PORT_NUMBER; port++) {
+ try {
+ serverSocket = new ServerSocket(port, 50, LOOPBACK_ADDRESS);
+ // Do not block indefinitely on calls to #accept
+ serverSocket.setSoTimeout(1000);
+ serverSocketLocalPort = serverSocket.getLocalPort();
+ acceptorThread = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ while (!stopListening) {
+ try {
+ Socket socket = serverSocket.accept();
+ socket.close();
+ } catch (IOException ignore) {
+ }
+ }
}
- }
+ });
+ acceptorThread.setDaemon(true);
+ acceptorThread.start();
+ return;
+ } catch (BindException e) {
+ // Port already in use
}
- });
- acceptorThread.setDaemon(true);
- acceptorThread.start();
+ }
+ throw new RuntimeException("Could not find an available port");
}
@AfterClass
public void stopSocketServer() {
- LOG.info("Shutting down socket server");
stopListening = true;
try {
serverSocket.close();