<!--
  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.31.2</version>
   </parent>

   <artifactId>smoke-tests</artifactId>
   <packaging>jar</packaging>
   <name>Smoke Tests</name>

   <properties>
      <activemq.basedir>${project.basedir}/../../</activemq.basedir>
      <sts-surefire-extra-args />
      <artemis-distribution-lib-dir>-Ddistribution.lib="${activemq.basedir}/artemis-distribution/target/apache-artemis-${project.version}-bin/apache-artemis-${project.version}/lib"</artemis-distribution-lib-dir>
      <sts-http-host>localhost</sts-http-host>
   </properties>

   <dependencies>
      <dependency>
         <!-- this dependency is here to make sure this module is only executed
              after the distribution is created.
              Otherwise it will get here before the build eventually.
              e.g if you use mvn install -T 20 -->
         <groupId>org.apache.activemq</groupId>
         <artifactId>apache-artemis</artifactId>
         <version>${project.version}</version>
         <scope>compile</scope>
         <type>pom</type>
      </dependency>
      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-server</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</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-commons</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.activemq</groupId>
         <artifactId>artemis-journal</artifactId>
         <version>${project.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>io.netty</groupId>
         <artifactId>netty-common</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.jctools</groupId>
         <artifactId>jctools-core</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.qpid</groupId>
         <artifactId>qpid-jms-client</artifactId>
         <scope>test</scope>
      </dependency>
      <!-- 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.fusesource.mqtt-client</groupId>
         <artifactId>mqtt-client</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.eclipse.paho</groupId>
         <artifactId>org.eclipse.paho.client.mqttv3</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>
      <dependency>
         <groupId>org.seleniumhq.selenium</groupId>
         <artifactId>selenium-api</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.seleniumhq.selenium</groupId>
         <artifactId>selenium-firefox-driver</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.seleniumhq.selenium</groupId>
         <artifactId>selenium-chrome-driver</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.seleniumhq.selenium</groupId>
         <artifactId>selenium-chromium-driver</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.seleniumhq.selenium</groupId>
         <artifactId>selenium-remote-driver</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.seleniumhq.selenium</groupId>
         <artifactId>selenium-support</artifactId>
         <scope>test</scope>
      </dependency>

      <dependency>
         <groupId>org.testcontainers</groupId>
         <artifactId>selenium</artifactId>
         <scope>test</scope>
      </dependency>

      <dependency>
         <groupId>org.testcontainers</groupId>
         <artifactId>testcontainers</artifactId>
         <scope>test</scope>
      </dependency>

      <!-- quorum tests -->
      <dependency>
         <groupId>org.apache.curator</groupId>
         <artifactId>curator-recipes</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.curator</groupId>
         <artifactId>curator-client</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.curator</groupId>
         <artifactId>curator-framework</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.curator</groupId>
         <artifactId>curator-test</artifactId>
         <version>${curator.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.zookeeper</groupId>
         <artifactId>zookeeper</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.zookeeper</groupId>
         <artifactId>zookeeper-jute</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>

      <dependency>
         <groupId>org.apache.httpcomponents</groupId>
         <artifactId>httpclient</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.httpcomponents</groupId>
         <artifactId>httpcore</artifactId>
         <scope>test</scope>
      </dependency>

      <dependency>
         <groupId>org.apache.activemq</groupId>
         <artifactId>artemis-unit-test-support</artifactId>
         <version>${project.version}</version>
         <scope>test</scope>
      </dependency>

   </dependencies>

   <build>
      <resources>
         <resource>
            <directory>src/main/resources</directory>
            <filtering>false</filtering>
         </resource>
         <resource>
            <directory>src/main/filtered-resources</directory>
            <filtering>true</filtering>
         </resource>
      </resources>
      <plugins>
         <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
               <execution>
                  <id>copy-security-resources</id>
                  <phase>validate</phase>
                  <goals>
                     <goal>copy-resources</goal>
                  </goals>
                  <configuration>
                     <outputDirectory>${basedir}/target/test-classes</outputDirectory>
                     <resources>
                        <resource>
                           <directory>../security-resources</directory>
                        </resource>
                     </resources>
                  </configuration>
               </execution>
               <execution>
                  <id>copy-reference-for-upgrade-backup-checks</id>
                  <phase>process-test-resources</phase>
                  <goals>
                     <goal>copy-resources</goal>
                  </goals>
                  <configuration>
                     <outputDirectory>${project.build.directory}/reference-for-backup-check</outputDirectory>
                     <resources>
                        <resource>
                           <directory>src/main/filtered-resources</directory>
                           <filtering>true</filtering>
                        </resource>
                     </resources>
                  </configuration>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
               <compilerArgs>
                  <arg>--add-exports=java.rmi/sun.rmi.server=ALL-UNNAMED</arg>
                  <arg>--add-exports=java.rmi/sun.rmi.transport=ALL-UNNAMED</arg>
               </compilerArgs>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.apache.activemq</groupId>
            <artifactId>artemis-maven-plugin</artifactId>
            <executions>
               <execution>
                  <phase>test-compile</phase>
                  <id>create-create-console</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <role>amq,connections,sessions,consumers,producers,addresses,queues</role>
                     <user>admin</user>
                     <password>admin</password>
                     <allowAnonymous>false</allowAnonymous>
                     <noWeb>false</noWeb>
                     <instance>${basedir}/target/console</instance>
                     <configuration>${basedir}/target/classes/servers/console</configuration>
                     <args>
                        <arg>--http-host</arg>
                        <arg>${sts-http-host}</arg>
                        <arg>--http-port</arg>
                        <arg>8161</arg>
                     </args>
                  </configuration>
               </execution>

               <execution>
                  <phase>test-compile</phase>
                  <id>upgrade-linux</id>
                  <goals>
                     <goal>upgrade</goal>
                  </goals>
                  <configuration>
                     <instance>${basedir}/target/classes/servers/linuxUpgrade</instance>
                     <args>
                        <arg>--linux</arg>
                        <!-- we don't pass the java memory argumnent on purpose,
                             as the upgrade should keep the relevant JVM arguments during the upgrade -->
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>upgrade-windows</id>
                  <goals>
                     <goal>upgrade</goal>
                  </goals>
                  <configuration>
                     <instance>${basedir}/target/classes/servers/windowsUpgrade</instance>
                     <args>
                        <arg>--windows</arg>
                        <!-- we don't pass the java memory argumnent on purpose,
                             as the upgrade should keep the relevant JVM arguments during the upgrade -->
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>createExpectedWindows</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <instance>${basedir}/target/classes/servers/windowsUpgradeExpected</instance>
                     <noWeb>false</noWeb>
                     <role>amq</role>
                     <user>y</user>
                     <password>y</password>
                     <args>
                        <arg>--windows</arg>
                        <arg>--etc</arg>
                        <arg>${basedir}/target/classes/servers/windowsUpgradeETCExpected</arg>
                        <arg>--java-memory</arg>
                        <arg>1G</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>createExpectedLinux</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <allowAnonymous>true</allowAnonymous>
                     <instance>${basedir}/target/classes/servers/linuxUpgradeExpected</instance>
                     <noWeb>false</noWeb>
                     <role>amq</role>
                     <user>y</user>
                     <password>y</password>
                     <args>
                        <arg>--etc</arg>
                        <arg>${basedir}/target/classes/servers/linuxUpgradeETCExpected</arg>
                        <arg>--java-memory</arg>
                        <arg>1G</arg>
                     </args>
                  </configuration>
               </execution>
               <execution>
                  <phase>test-compile</phase>
                  <id>upgrade-current-version-phase1</id>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <noWeb>false</noWeb>
                     <instance>${basedir}/target/upgrade/currentVersion</instance>
                     <args>
                        <arg>--disable-persistence</arg>
                        <arg>--linux</arg>
                     </args>
                  </configuration>
               </execution>
            </executions>
            <dependencies>
               <dependency>
                  <groupId>org.apache.activemq.tests</groupId>
                  <artifactId>smoke-tests</artifactId>
                  <version>${project.version}</version>
               </dependency>
            </dependencies>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
               <forkCount>1</forkCount>
               <reuseForks>false</reuseForks>
               <skipTests>${skipSmokeTests}</skipTests>
               <argLine>${sts-surefire-extra-args} ${activemq-surefire-argline} ${artemis-distribution-lib-dir}</argLine>
            </configuration>
         </plugin>
      </plugins>
   </build>

   <profiles>
      <profile>
         <id>jdk16on</id>
         <activation>
            <jdk>[16,)</jdk>
         </activation>
         <properties>
            <sts-surefire-extra-args>--add-opens=java.management.rmi/javax.management.remote.rmi=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.server=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED</sts-surefire-extra-args>
         </properties>
      </profile>

      <profile>
         <!-- Quick subset of tests, used on PR checks -->
         <id>fast-tests</id>
         <build>
            <pluginManagement>
               <plugins>
                  <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-surefire-plugin</artifactId>
                     <configuration>
                        <forkCount>1</forkCount>
                        <reuseForks>false</reuseForks>
                        <includes combine.children="override">
                           <include>**/smoke/upgradeTest/*Test.java</include>
                        </includes>
                     </configuration>
                  </plugin>
               </plugins>
            </pluginManagement>
         </build>
      </profile>

   </profiles>

</project>
