<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one or more
  ~ contributor license agreements. See the NOTICE file distributed with
  ~ this work for additional information regarding copyright ownership.
  ~ The ASF licenses this file to You 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.
  -->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <parent>
      <groupId>org.apache.activemq.tests</groupId>
      <artifactId>artemis-tests-pom</artifactId>
      <version>2.30.0-SNAPSHOT</version>
   </parent>

   <artifactId>soak-tests</artifactId>
   <packaging>jar</packaging>
   <name>ActiveMQ Artemis soak Tests</name>

   <properties>
      <activemq.basedir>${project.basedir}/../..</activemq.basedir>
   </properties>

   <dependencies>
      <!-- logging -->
      <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-slf4j-impl</artifactId>
         <scope>test</scope>
      </dependency>

      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-mqtt-protocol</artifactId>
         <version>${project.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-cli</artifactId>
         <version>${project.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.qpid</groupId>
         <artifactId>qpid-jms-client</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.fusesource.mqtt-client</groupId>
         <artifactId>mqtt-client</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.eclipse.paho</groupId>
         <artifactId>org.eclipse.paho.mqttv5.client</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-core-client</artifactId>
         <version>${project.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-jms-client</artifactId>
         <version>${project.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-server</artifactId>
         <version>${project.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-openwire-protocol</artifactId>
         <version>${project.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-amqp-protocol</artifactId>
         <version>${project.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq.tests</groupId>
         <artifactId>artemis-test-support</artifactId>
         <version>${project.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq.tests</groupId>
         <artifactId>integration-tests</artifactId>
         <version>${project.version}</version>
         <scope>test</scope>
         <type>test-jar</type>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>activemq-client</artifactId>
         <scope>test</scope>
         <exclusions>
            <exclusion>
               <groupId>org.apache.geronimo.specs</groupId>
               <artifactId>geronimo-jms_1.1_spec</artifactId>
            </exclusion>
            <exclusion>
               <groupId>org.apache.geronimo.specs</groupId>
               <artifactId>geronimo-j2ee-management_1.1_spec</artifactId>
            </exclusion>
         </exclusions>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-commons</artifactId>
         <version>${project.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-unit-test-support</artifactId>
         <version>${project.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
      </dependency>
      <dependency>
         <groupId>jakarta.transaction</groupId>
         <artifactId>jakarta.transaction-api</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>jakarta.jms</groupId>
         <artifactId>jakarta.jms-api</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>jakarta.management.j2ee</groupId>
         <artifactId>jakarta.management.j2ee-api</artifactId>
         <scope>test</scope>
      </dependency>

      <!-- The johnzon-core and json-api contents are repackaged in -commons,
           However maven can still need them during tests, which run against
           the original -commons classes when built+run in the same reactor,
           and not the jar containing the shaded bits. -->
      <dependency>
         <groupId>org.apache.johnzon</groupId>
         <artifactId>johnzon-core</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>jakarta.json</groupId>
         <artifactId>jakarta.json-api</artifactId>
         <scope>test</scope>
      </dependency>

   </dependencies>

   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.activemq</groupId>
            <artifactId>artemis-maven-plugin</artifactId>
            <version>${project.version}</version>
            <executions>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-horizontal-paging</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <role>amq</role>
                     <user>admin</user>
                     <password>admin</password>
                     <allowAnonymous>true</allowAnonymous>
                     <noWeb>false</noWeb>
                     <instance>${basedir}/target/horizontalPaging</instance>
                     <configuration>${basedir}/target/classes/servers/horizontalPaging</configuration>
                     <args>
                        <arg>--java-memory</arg>
                        <arg>2G</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-flow-paging</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <role>amq</role>
                     <user>admin</user>
                     <password>admin</password>
                     <allowAnonymous>true</allowAnonymous>
                     <noWeb>false</noWeb>
                     <instance>${basedir}/target/flowControlPaging</instance>
                     <configuration>${basedir}/target/classes/servers/flowControlPaging</configuration>
                     <args>
                        <arg>--java-memory</arg>
                        <!-- some limited memory to make it more likely to fail -->
                        <arg>512M</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-subscription-paging</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <role>amq</role>
                     <user>admin</user>
                     <password>admin</password>
                     <allowAnonymous>true</allowAnonymous>
                     <noWeb>false</noWeb>
                     <instance>${basedir}/target/subscriptionPaging</instance>
                     <configuration>${basedir}/target/classes/servers/subscriptionPaging</configuration>
                     <args>
                        <arg>--java-memory</arg>
                        <!-- some limited memory to make it more likely to fail -->
                        <arg>512M</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-mmfactory</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <configuration>${basedir}/target/classes/servers/mmfactory</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>admin</user>
                     <password>admin</password>
                     <instance>${basedir}/target/mmfactory</instance>
                     <noWeb>false</noWeb>
                     <args>
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost -Dcom.sun.management.jmxremote=true
                           -Dcom.sun.management.jmxremote.port=11099 -Dcom.sun.management.jmxremote.rmi.port=11098
                           -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
                        </arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-openwire-leaktest</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <role>amq</role>
                     <user>admin</user>
                     <password>admin</password>
                     <allowAnonymous>true</allowAnonymous>
                     <noWeb>false</noWeb>
                     <instance>${basedir}/target/openwire-leaktest</instance>
                     <configuration>${basedir}/target/classes/servers/openwire-leaktest</configuration>
                  </configuration>
               </execution>
               <!-- Used on TestRetention -->
               <execution>
                  <phase>test-compile</phase>
                  <id>create-lmreplay</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <role>amq</role>
                     <user>artemis</user>
                     <password>artemis</password>
                     <allowAnonymous>true</allowAnonymous>
                     <noWeb>false</noWeb>
                     <instance>${basedir}/target/replay/large-message</instance>
                     <configuration>${basedir}/target/classes/servers/replay/large-message</configuration>
                     <args>
                        <!-- this is needed to run the server remotely -->
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                        <arg>--journal-retention</arg>
                        <arg>1</arg>
                        <arg>--queues</arg>
                        <arg>RetentionTest</arg>
                        <arg>--name</arg>
                        <arg>large-message</arg>
                     </args>
                  </configuration>
               </execution>
               <!-- Used on JournalFlushInterruptTest -->
               <execution>
                  <phase>test-compile</phase>
                  <id>create-interruptjf</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <role>amq</role>
                     <user>artemis</user>
                     <password>artemis</password>
                     <allowAnonymous>true</allowAnonymous>
                     <noWeb>false</noWeb>
                     <instance>${basedir}/target/interruptjf</instance>
                     <configuration>${basedir}/target/classes/servers/interruptjf</configuration>
                     <args>
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                        <arg>--queues</arg>
                        <arg>JournalFlushInterruptTest</arg>
                        <arg>--name</arg>
                        <arg>interruptjf</arg>
                     </args>
                  </configuration>
               </execution>
               <!-- Used on LargeMessageInterruptTest -->
               <execution>
                  <phase>test-compile</phase>
                  <id>create-interruptlm</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <role>amq</role>
                     <user>artemis</user>
                     <password>artemis</password>
                     <allowAnonymous>true</allowAnonymous>
                     <noWeb>false</noWeb>
                     <instance>${basedir}/target/interruptlm</instance>
                     <configuration>${basedir}/target/classes/servers/interruptlm</configuration>
                     <args>
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                        <arg>--queues</arg>
                        <arg>LargeMessageInterruptTest</arg>
                        <arg>--name</arg>
                        <arg>interruptlm</arg>
                     </args>
                  </configuration>
               </execution>

               <!-- Used on ClusteredLargeMessageInterruptTest -->
               <execution>
                  <phase>test-compile</phase>
                  <id>create-lmbroker1</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <role>amq</role>
                     <user>artemis</user>
                     <password>artemis</password>
                     <allowAnonymous>true</allowAnonymous>
                     <noWeb>false</noWeb>
                     <instance>${basedir}/target/lmbroker1</instance>
                     <configuration>${basedir}/target/classes/servers/lmbroker1</configuration>
                     <args>
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                        <arg>--clustered</arg>
                        <arg>--staticCluster</arg>
                        <arg>tcp://localhost:61716</arg>
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                        <arg>--queues</arg>
                        <arg>ClusteredLargeMessageInterruptTest</arg>
                        <arg>--name</arg>
                        <arg>lmbroker1</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-lmbroker2</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <role>amq</role>
                     <user>artemis</user>
                     <password>artemis</password>
                     <allowAnonymous>true</allowAnonymous>
                     <noWeb>false</noWeb>
                     <instance>${basedir}/target/lmbroker2</instance>
                     <configuration>${basedir}/target/classes/servers/lmbroker2</configuration>
                     <portOffset>100</portOffset>
                     <args>
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                        <arg>--clustered</arg>
                        <arg>--staticCluster</arg>
                        <arg>tcp://localhost:61616</arg>
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                        <arg>--queues</arg>
                        <arg>ClusteredLargeMessageInterruptTest</arg>
                        <arg>--name</arg>
                        <arg>lmbroker2</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-mqtt</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <configuration>${basedir}/target/classes/servers/mqtt</configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <user>artemis</user>
                     <password>artemis</password>
                     <instance>${basedir}/target/mqtt</instance>
                     <noWeb>false</noWeb>
                     <args>
                        <arg>--java-options</arg>
                        <arg>-Djava.rmi.server.hostname=localhost</arg>
                        <arg>--name</arg>
                        <arg>mqtt</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>created-static0</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <javaOptions>-Djava.net.preferIPv4Stack=true</javaOptions>
                     <instance>${basedir}/target/replicated-static0</instance>
                     <configuration>${basedir}/target/classes/servers/replicated-static0</configuration>
                     <args>
                        <arg>--java-options</arg>
                        <arg>-ea</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-replicated-static1</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <javaOptions>-Djava.net.preferIPv4Stack=true</javaOptions>
                     <instance>${basedir}/target/replicated-static1</instance>
                     <configuration>${basedir}/target/classes/servers/replicated-static1</configuration>
                     <args>
                        <arg>--java-options</arg>
                        <arg>-ea</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-tx-check-backup-zero</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <javaOptions>-Djava.net.preferIPv4Stack=true</javaOptions>
                     <instance>${basedir}/target/replica-tx-check/backup-zero</instance>
                     <configuration>${basedir}/target/classes/servers/replica-tx-check/backup-zero</configuration>
                     <args>
                        <arg>--java-options</arg>
                        <arg>-ea</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-tx-check-live-zero</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <javaOptions>-Djava.net.preferIPv4Stack=true</javaOptions>
                     <instance>${basedir}/target/replica-tx-check/live-zero</instance>
                     <configuration>${basedir}/target/classes/servers/replica-tx-check/live-zero</configuration>
                     <args>
                        <arg>--java-options</arg>
                        <arg>-ea</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-tx-check-backup-one</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <javaOptions>-Djava.net.preferIPv4Stack=true</javaOptions>
                     <instance>${basedir}/target/replica-tx-check/backup-one</instance>
                     <configuration>${basedir}/target/classes/servers/replica-tx-check/backup-one</configuration>
                     <args>
                        <arg>--java-options</arg>
                        <arg>-ea</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-tx-check-live-one</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <javaOptions>-Djava.net.preferIPv4Stack=true</javaOptions>
                     <instance>${basedir}/target/replica-tx-check/live-one</instance>
                     <configuration>${basedir}/target/classes/servers/replica-tx-check/live-one</configuration>
                     <args>
                        <arg>--java-options</arg>
                        <arg>-ea</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-tx-check-backup-two</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <javaOptions>-Djava.net.preferIPv4Stack=true</javaOptions>
                     <instance>${basedir}/target/replica-tx-check/backup-two</instance>
                     <configuration>${basedir}/target/classes/servers/replica-tx-check/backup-two</configuration>
                     <args>
                        <arg>--java-options</arg>
                        <arg>-ea</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-tx-check-live-two</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <javaOptions>-Djava.net.preferIPv4Stack=true</javaOptions>
                     <instance>${basedir}/target/replica-tx-check/live-two</instance>
                     <configuration>${basedir}/target/classes/servers/replica-tx-check/live-two</configuration>
                     <args>
                        <arg>--java-options</arg>
                        <arg>-ea</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-database-paging</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <javaOptions>-Djava.net.preferIPv4Stack=true</javaOptions>
                     <instance>${basedir}/target/database-paging/derby</instance>
                     <configuration>${basedir}/target/classes/servers/database-paging/derby</configuration>
                     <libList>
                        <arg>org.apache.derby:derby:${apache.derby.version}</arg>
                     </libList>
                     <args>
                        <arg>--jdbc</arg>
                        <arg>--global-max-messages</arg>
                        <arg>100</arg>
                        <arg>--java-options</arg>
                        <arg>-ea</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-database-paging-mysql</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <!-- this makes it easier in certain envs -->
                     <javaOptions>-Djava.net.preferIPv4Stack=true</javaOptions>
                     <instance>${basedir}/target/database-paging/mysql</instance>
                     <configuration>${basedir}/target/classes/servers/database-paging/mysql</configuration>
                     <libListWithDeps>
                        <arg>com.mysql:mysql-connector-j:8.0.33</arg>
                     </libListWithDeps>
                     <args>
                        <arg>--jdbc</arg>
                        <arg>--jdbc-connection-url</arg>
                        <arg>jdbc:mysql://localhost/ARTEMIS-TEST?user=root&amp;#38;password=artemis</arg>
                        <arg>--jdbc-driver-class-name</arg>
                        <arg>com.mysql.cj.jdbc.Driver</arg>
                        <arg>--global-max-messages</arg>
                        <arg>100</arg>
                        <arg>--java-options</arg>
                        <arg>-ea</arg>
                     </args>
                  </configuration>
               </execution>
            <execution>
               <phase>test-compile</phase>
               <id>create-database-paging-postgres</id>
               <goals>
                  <goal>create</goal>
               </goals>
               <configuration>
                  <!-- this makes it easier in certain envs -->
                  <javaOptions>-Djava.net.preferIPv4Stack=true</javaOptions>
                  <instance>${basedir}/target/database-paging/postgres</instance>
                  <configuration>${basedir}/target/classes/servers/database-paging/postgres</configuration>
                  <libListWithDeps>
                     <arg>org.postgresql:postgresql:42.6.0</arg>
                  </libListWithDeps>
                  <args>
                     <arg>--jdbc</arg>
                     <arg>--jdbc-connection-url</arg>
                     <arg>jdbc:postgresql:artemis?user=artemis&amp;#38;password=artemis</arg>
                     <arg>--jdbc-driver-class-name</arg>
                     <arg>org.postgresql.Driver</arg>
                     <arg>--global-max-messages</arg>
                     <arg>100</arg>
                     <arg>--java-options</arg>
                     <arg>-ea</arg>
                  </args>
               </configuration>
            </execution>
         </executions>
         </plugin>

         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
               <forkCount>1</forkCount>
               <reuseForks>false</reuseForks>
               <skipTests>${skipSoakTests}</skipTests>
               <includes>
                  <include>**/*Test.java</include>
               </includes>
               <argLine>${activemq-surefire-argline}</argLine>
            </configuration>
         </plugin>
      </plugins>
   </build>
</project>
