You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jl...@apache.org on 2022/06/15 21:59:49 UTC

[tomee] branch master updated: TOMEE-3976 Make sure ActiveMQ does not always rely on 61616

This is an automated email from the ASF dual-hosted git repository.

jlmonteiro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomee.git


The following commit(s) were added to refs/heads/master by this push:
     new 8c0819090d TOMEE-3976 Make sure ActiveMQ does not always rely on 61616
8c0819090d is described below

commit 8c0819090de18bf6c645812e88eae3202b557f83
Author: Jean-Louis Monteiro <jl...@tomitribe.com>
AuthorDate: Wed Jun 15 23:59:37 2022 +0200

    TOMEE-3976 Make sure ActiveMQ does not always rely on 61616
---
 .../JMS2AMQDefaultConnectionFactoryTest.java       | 16 ++++++++++
 .../classic/ConnectionFactoryJMXTest.java          | 12 +++++++-
 .../core/mdb/MaxInstanceEndpointHandlerTest.java   |  2 ++
 .../java/org/apache/openejb/test/TestServer.java   |  8 ++---
 server/openejb-ejbd/pom.xml                        | 34 +++++++++++++++++-----
 server/openejb-http/pom.xml                        | 25 +++++++++++++++-
 6 files changed, 83 insertions(+), 14 deletions(-)

diff --git a/container/openejb-core/src/test/java/org/apache/openejb/activemq/JMS2AMQDefaultConnectionFactoryTest.java b/container/openejb-core/src/test/java/org/apache/openejb/activemq/JMS2AMQDefaultConnectionFactoryTest.java
index d0eeda3f3a..751457da8d 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/activemq/JMS2AMQDefaultConnectionFactoryTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/activemq/JMS2AMQDefaultConnectionFactoryTest.java
@@ -18,8 +18,10 @@ package org.apache.openejb.activemq;
 
 import org.apache.openejb.junit.ApplicationComposer;
 import org.apache.openejb.testing.Classes;
+import org.apache.openejb.testing.Configuration;
 import org.apache.openejb.testing.ContainerProperties;
 import org.apache.openejb.testing.SimpleLog;
+import org.apache.openejb.util.NetworkUtil;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -30,6 +32,8 @@ import jakarta.jms.JMSContext;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
 
+import java.util.Properties;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
@@ -45,6 +49,18 @@ public class JMS2AMQDefaultConnectionFactoryTest {
     @Inject
     private JustToGetAJndiContext justToGetAJndiContext;
 
+    @Configuration
+    public Properties config() throws Exception {
+        Properties p = new Properties();
+        p.put("myActiveMQResourceAdapter", "new://Resource?type=ActiveMQResourceAdapter");
+        p.put("myActiveMQResourceAdapter.brokerXmlConfig",
+              "broker:(tcp://localhost:" + NetworkUtil.getNextAvailablePort() + ")?useJmx=false");
+        p.put("myActiveMQResourceAdapter.dataSource", "Default Unmanaged JDBC Database");
+        p.put("myActiveMQResourceAdapter.serverUrl", "vm://localhost?waitForStart=20000&async=true");
+        p.put("myActiveMQResourceAdapter.startupTimeout", "10 seconds");
+        return p;
+    }
+
     @Test
     public void checkCF() throws Exception {
         assertEquals("test", defaultContext.createTextMessage("test").getText());
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/ConnectionFactoryJMXTest.java b/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/ConnectionFactoryJMXTest.java
index 0bf1e3af7f..61ac8bee4d 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/ConnectionFactoryJMXTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/ConnectionFactoryJMXTest.java
@@ -29,6 +29,8 @@ import org.apache.openejb.monitoring.LocalMBeanServer;
 import jakarta.annotation.Resource;
 import jakarta.jms.Connection;
 import jakarta.jms.ConnectionFactory;
+import org.apache.openejb.util.NetworkUtil;
+
 import javax.management.AttributeNotFoundException;
 import javax.management.InstanceNotFoundException;
 import javax.management.IntrospectionException;
@@ -53,8 +55,16 @@ public class ConnectionFactoryJMXTest extends TestCase {
         assembler.createTransactionManager(config.configureService(TransactionServiceInfo.class));
         assembler.createSecurityService(config.configureService(SecurityServiceInfo.class));
 
+        // define props for RA in order to change the default activeMQ port
+        final Properties props = new Properties();
+        final String brokerAddress = NetworkUtil.getLocalAddress("tcp://", "");
+        final String brokerXmlConfig = "broker:(" + brokerAddress + ")?useJmx=false";
+        props.put("BrokerXmlConfig", brokerXmlConfig);
+        props.put("StartupTimeout", 10000);
+
         // Fake connection factory
-        assembler.createResource(config.configureService("Default JMS Resource Adapter", ResourceInfo.class));
+        assembler.createResource(config.configureService(ResourceInfo.class, "Default JMS Resource Adapter",
+                 props, "Default JMS Resource Adapter", "ActiveMQResourceAdapter"));
         final ResourceInfo resourceInfo = config.configureService("Default JMS Connection Factory", ResourceInfo.class);
         resourceInfo.id = "CF";
         resourceInfo.properties.setProperty("TransactionSupport", "xa");
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/MaxInstanceEndpointHandlerTest.java b/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/MaxInstanceEndpointHandlerTest.java
index d28fc091e9..1a14318a84 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/MaxInstanceEndpointHandlerTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/MaxInstanceEndpointHandlerTest.java
@@ -22,6 +22,7 @@ import org.apache.openejb.monitoring.LocalMBeanServer;
 import org.apache.openejb.testing.Configuration;
 import org.apache.openejb.testing.Module;
 import org.apache.openejb.testng.PropertiesBuilder;
+import org.apache.openejb.util.NetworkUtil;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -52,6 +53,7 @@ public class MaxInstanceEndpointHandlerTest {
 
             .p("sra", "new://Resource?type=ActiveMQResourceAdapter")
             .p("sra.threadPoolSize", "100")
+            .p("sra.brokerXmlConfig", "broker:(tcp://localhost:" + NetworkUtil.getNextAvailablePort() + ")?useJmx=false")
 
             .p("mdbs", "new://Container?type=MESSAGE")
             .p("mdbs.ResourceAdapter", "sra")
diff --git a/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/TestServer.java b/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/TestServer.java
index 04e1e853b4..1c591e43f4 100644
--- a/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/TestServer.java
+++ b/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/TestServer.java
@@ -23,12 +23,12 @@ import java.util.Properties;
  */
 public interface TestServer {
 
-    public void init(Properties props);
+    void init(Properties props);
 
-    public void start();
+    void start();
 
-    public void stop();
+    void stop();
 
-    public Properties getContextEnvironment();
+    Properties getContextEnvironment();
 
 }
diff --git a/server/openejb-ejbd/pom.xml b/server/openejb-ejbd/pom.xml
index 9e102d907d..aee3b72b6a 100644
--- a/server/openejb-ejbd/pom.xml
+++ b/server/openejb-ejbd/pom.xml
@@ -61,6 +61,24 @@
           </execution>
         </executions>
       </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>reserve-activemq-port</id>
+            <goals>
+              <goal>reserve-network-port</goal>
+            </goals>
+            <phase>process-resources</phase>
+            <configuration>
+              <portNames>
+                <portName>activemq.port</portName>
+              </portNames>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
@@ -72,15 +90,15 @@
             -Dopenejb.classloader.forced-skip=org.apache.openejb.jee.,org.apache.openejb.api.
             -Dopenejb.classloader.forced-load=org.apache.openejb
           </argLine>
-          <!-- 
-          <systemProperties>
-            <property>
-              <name>openejb.home</name>
-              <value>${project.build.directory}/test-classes</value>
-            </property>
-          </systemProperties>
+          <systemPropertyVariables>
+            <openejb.home>${project.build.directory}/test-classes</openejb.home>
+            <myActiveMQResourceAdapter>new://Resource?type=ActiveMQResourceAdapter</myActiveMQResourceAdapter>
+            <myActiveMQResourceAdapter.brokerXmlConfig>broker:(tcp://localhost:${activemq.port})?useJmx=false</myActiveMQResourceAdapter.brokerXmlConfig>
+            <myActiveMQResourceAdapter.dataSource>Default Unmanaged JDBC Database</myActiveMQResourceAdapter.dataSource>
+            <myActiveMQResourceAdapter.serverUrl>vm://localhost?waitForStart=20000&amp;async=true</myActiveMQResourceAdapter.serverUrl>
+            <myActiveMQResourceAdapter.startupTimeout>10 seconds</myActiveMQResourceAdapter.startupTimeout>
+          </systemPropertyVariables>
           <basedir>${project.build.directory}</basedir>
-           -->
         </configuration>
       </plugin>
     </plugins>
diff --git a/server/openejb-http/pom.xml b/server/openejb-http/pom.xml
index cd44f6c90e..400c4899ed 100644
--- a/server/openejb-http/pom.xml
+++ b/server/openejb-http/pom.xml
@@ -66,19 +66,42 @@
           </execution>
         </executions>
       </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>reserve-activemq-port</id>
+            <goals>
+              <goal>reserve-network-port</goal>
+            </goals>
+            <phase>process-resources</phase>
+            <configuration>
+              <portNames>
+                <portName>activemq.port</portName>
+              </portNames>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
         <configuration>
           <reuseForks>false</reuseForks>
           <!-- DEBUG: Uncomment this line and comment out the next -->
-          <!--<argLine>-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 -javaagent:${project.build.directory}/target/openejb-javaagent-${version}.jar=foo=bar</argLine>-->
+          <!--<argLine>-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 -javaagent:${project.build.directory}/openejb-javaagent-${version}.jar=foo=bar</argLine>-->
           <argLine>"-javaagent:${project.build.directory}/openejb-javaagent-${project.version}.jar=foo=bar"
             -Dopenejb.classloader.forced-skip=org.apache.openejb.jee.,org.apache.openejb.api.
             -Dopenejb.classloader.forced-load=org.apache.openejb
           </argLine>
           <systemPropertyVariables>
             <openejb.home>${project.build.directory}/test-classes</openejb.home>
+            <myActiveMQResourceAdapter>new://Resource?type=ActiveMQResourceAdapter</myActiveMQResourceAdapter>
+            <myActiveMQResourceAdapter.brokerXmlConfig>broker:(tcp://localhost:${activemq.port})?useJmx=false</myActiveMQResourceAdapter.brokerXmlConfig>
+            <myActiveMQResourceAdapter.dataSource>Default Unmanaged JDBC Database</myActiveMQResourceAdapter.dataSource>
+            <myActiveMQResourceAdapter.serverUrl>vm://localhost?waitForStart=20000&amp;async=true</myActiveMQResourceAdapter.serverUrl>
+            <myActiveMQResourceAdapter.startupTimeout>10 seconds</myActiveMQResourceAdapter.startupTimeout>
           </systemPropertyVariables>
           <basedir>${project.build.directory}</basedir>
         </configuration>