<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.qpid</groupId>
    <artifactId>qpid-broker-parent</artifactId>
    <version>8.0.0-SNAPSHOT</version>
  </parent>

  <artifactId>qpid-perftests</artifactId>
  <name>Apache Qpid Broker-J Performance Tests</name>
  <description>Performance testing configuration, code and tests</description>

  <properties>
    <dependency-change-verification>true</dependency-change-verification>

    <!-- Properties filtered into the JNDI properties -->
    <perftests.messaging-hostport-plain>localhost:5672</perftests.messaging-hostport-plain>
    <perftests.messaging-hostport-tls>localhost:5672</perftests.messaging-hostport-tls>
    <perftests.messaging-user>guest</perftests.messaging-user>
    <perftests.messaging-password>guest</perftests.messaging-password>
    <perftests.results-directory>results</perftests.results-directory>

    <!-- Properties used by the REST API Queue Creator -->
    <perftests.manangement-user>guest</perftests.manangement-user>
    <perftests.manangement-password>guest</perftests.manangement-password>
    <perftests.broker-virtualhostnode>default</perftests.broker-virtualhostnode>
    <perftests.broker-virtualhost>default</perftests.broker-virtualhost>
    <perftests.manangement-url>http://localhost:8080</perftests.manangement-url>


    <perftests.hillclimb>false</perftests.hillclimb>
    <perftests.hillclimb.max_runs>3</perftests.hillclimb.max_runs>
    <perftests.hillclimb.start_target_rate>1025.0</perftests.hillclimb.start_target_rate>
    <perftests.hillclimb.production_to_target_ratio_success_threshold>0.95</perftests.hillclimb.production_to_target_ratio_success_threshold>
    <perftests.hillclimb.consumption_to_production_ratio_success_threshold>0.95</perftests.hillclimb.consumption_to_production_ratio_success_threshold>
    <perftests.hillclimb.minimum_delta>1.0</perftests.hillclimb.minimum_delta>
    <perftests.hillclimb.bias>0.25</perftests.hillclimb.bias>

    <!-- The following provide values for the disttest command line -->
    <perftests.test-config>${basedir}/etc/testdefs</perftests.test-config>
    <perftests.test-config.write_to_db>false</perftests.test-config.write_to_db>
    <perftests.distributed>false</perftests.distributed>

    <!-- Overrides for system properties understood by disttest itself -->
    <qpid.disttest.loglevel>info</qpid.disttest.loglevel>
    <qpid.disttest.duration>5000</qpid.disttest.duration>
    <qpid.disttest.registrationTimeout>60000</qpid.disttest.registrationTimeout>
    <qpid.disttest.commandResponseTimeout>120000</qpid.disttest.commandResponseTimeout>
  </properties>

  <dependencies>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
    </dependency>

    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.derby</groupId>
      <artifactId>derby</artifactId>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
    </dependency>

    <!-- test deps -->
    <dependency>
      <groupId>org.apache.qpid</groupId>
      <artifactId>qpid-test-utils</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>

    <resources>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
      <resource>
        <directory>src/main/java</directory>
        <excludes>
          <exclude>**/*.java/</exclude>
        </excludes>
      </resource>
    </resources>

    <testResources>
      <testResource>
        <directory>src/test/java</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </testResource>
      <testResource>
        <directory>src/test/resources</directory>
        <filtering>true</filtering>
        <includes>
          <include>**/*</include>
        </includes>
      </testResource>
    </testResources>

    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptors>
            <descriptor>src/main/assembly/qpid-perftests-bin.xml</descriptor>
          </descriptors>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-deploy-plugin</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>src/main/java/json2.js</exclude>
            <exclude>src/test/java/org/apache/qpid/disttest/controller/config/sampleConfig.json</exclude>
            <exclude>src/test/java/org/apache/qpid/disttest/results/formatting/expectedOutput.csv</exclude>
            <exclude>visualisation-jfc/**</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <configuration>
          <delimiters>
            <delimiter>${*}</delimiter>
          </delimiters>
          <useDefaultDelimiters>false</useDefaultDelimiters>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>addJms11IfNecessary</id>
      <activation>
        <property>
          <name>perftests</name>
          <value>!qpid-jms-client</value>
        </property>
      </activation>
      <dependencies>
        <dependency>
          <groupId>org.apache.geronimo.specs</groupId>
          <artifactId>geronimo-jms_1.1_spec</artifactId>
        </dependency>
      </dependencies>
    </profile>
    <profile>
      <id>perftests</id>
      <activation>
        <property>
          <name>perftests</name>
        </property>
      </activation>
      <dependencies>
        <dependency>
          <groupId>org.apache.derby</groupId>
          <artifactId>derby</artifactId>
          <scope>runtime</scope>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <executions>
              <execution>
                <id>enforce-property</id>
                <goals>
                  <goal>enforce</goal>
                </goals>
                <configuration>
                  <rules>
                    <requireProperty>
                      <property>perftests</property>
                      <regex>^(qpid-jms-client)|(jms-client-0-9)|(jms-client-0-10)$</regex>
                    </requireProperty>
                  </rules>
                  <fail>true</fail>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>run-perftests</id>
                <goals>
                  <goal>java</goal>
                </goals>
                <phase>integration-test</phase>
                <configuration>
                  <mainClass>org.apache.qpid.disttest.ControllerRunner</mainClass>
                  <classpathScope>runtime</classpathScope>
                  <arguments>
                    <argument>jndi-config=${java.naming.provider.url}</argument>
                    <argument>test-config=${perftests.test-config}</argument>
                    <argument>distributed=${perftests.distributed}</argument>
                    <argument>writeToDb=${perftests.test-config.write_to_db}</argument>
                    <argument>registrationTimeout=${qpid.disttest.registrationTimeout}</argument>
                    <argument>commandResponseTimeout=${qpid.disttest.commandResponseTimeout}</argument>
                    <argument>hill-climb=${perftests.hillclimb}</argument>
                    <argument>hill-climber.max-runs=${perftests.hillclimb.max_runs}</argument>
                    <argument>hill-climber.start-target-rate=${perftests.hillclimb.start_target_rate}</argument>
                    <argument>hill-climber.production-to-target-ratio-success-threshold=${perftests.hillclimb.production_to_target_ratio_success_threshold}</argument>
                    <argument>hill-climber.consumption-to-production-ratio-success-threshold=${perftests.hillclimb.consumption_to_production_ratio_success_threshold}</argument>
                    <argument>hill-climber.minimum-delta=${perftests.hillclimb.minimum_delta}</argument>
                    <argument>hill-climber.bias=${perftests.hillclimb.bias}</argument>
                  </arguments>
                  <systemProperties>
                    <systemProperty>
                      <key>qpid.disttest.loglevel</key>
                      <value>${qpid.disttest.loglevel}</value>
                    </systemProperty>
                    <systemProperty>
                      <key>qpid.disttest.duration</key>
                      <value>${qpid.disttest.duration}</value>
                    </systemProperty>
                    <systemProperty>
                      <key>java.naming.factory.initial</key>
                      <value>${java.naming.factory.initial}</value>
                    </systemProperty>
                    <systemProperty>
                      <key>qpid.disttest.queue.creator.class</key>
                      <value>org.apache.qpid.disttest.jms.QpidRestAPIQueueCreator</value>
                    </systemProperty>
                    <systemProperty>
                      <key>perftests.manangement-user</key>
                      <value>${perftests.manangement-user}</value>
                    </systemProperty>
                    <systemProperty>
                      <key>perftests.manangement-password</key>
                      <value>${perftests.manangement-password}</value>
                    </systemProperty>
                    <systemProperty>
                      <key>perftests.broker-virtualhostnode</key>
                      <value>${perftests.broker-virtualhostnode}</value>
                    </systemProperty>
                    <systemProperty>
                      <key>perftests.broker-virtualhost</key>
                      <value>${perftests.broker-virtualhost}</value>
                    </systemProperty>
                    <systemProperty>
                      <key>perftests.manangement-url</key>
                      <value>${perftests.manangement-url}</value>
                    </systemProperty>
                    <!-- The following two are used by the legacy client only -->
                    <systemProperty>
                      <key>qpid.dest_syntax</key>
                      <value>${qpid.dest_syntax}</value>
                    </systemProperty>
                    <systemProperty>
                      <key>qpid.amqp.version</key>
                      <value>${qpid.amqp.version}</value>
                    </systemProperty>
                  </systemProperties>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <skip>true</skip>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>qpid-jms-client</id>
      <activation>
        <property>
          <name>perftests</name>
          <value>qpid-jms-client</value>
        </property>
      </activation>
      <properties>
        <java.naming.factory.initial>org.apache.qpid.jms.jndi.JmsInitialContextFactory</java.naming.factory.initial>
        <java.naming.provider.url>${project.build.directory}/test-classes/qpid-jms-client/jndi.properties</java.naming.provider.url>
        <qpid.amqp.version />
        <qpid.dest_syntax />
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.apache.qpid</groupId>
          <artifactId>qpid-jms-client</artifactId>
          <scope>runtime</scope>
        </dependency>
      </dependencies>
    </profile>
    <profile>
      <id>jms-client-0-9</id>
      <activation>
        <property>
          <name>perftests</name>
          <value>jms-client-0-9</value>
        </property>
      </activation>
      <properties>
        <java.naming.factory.initial>org.apache.qpid.jndi.PropertiesFileInitialContextFactory</java.naming.factory.initial>
        <java.naming.provider.url>${project.build.directory}/test-classes/jms-client/jndi.properties</java.naming.provider.url>
        <qpid.amqp.version>0-9</qpid.amqp.version>
        <qpid.dest_syntax>BURL</qpid.dest_syntax>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.apache.qpid</groupId>
          <artifactId>qpid-client</artifactId>
          <scope>runtime</scope>
        </dependency>
        <dependency>
          <groupId>javax.xml.bind</groupId>
          <artifactId>jaxb-api</artifactId>
          <scope>runtime</scope>
        </dependency>
        <dependency>
          <groupId>org.glassfish.jaxb</groupId>
          <artifactId>jaxb-runtime</artifactId>
          <scope>runtime</scope>
        </dependency>
      </dependencies>
    </profile>
    <profile>
      <id>jms-client-0-10</id>
      <activation>
        <property>
          <name>perftests</name>
          <value>jms-client-0-10</value>
        </property>
      </activation>
      <properties>
        <java.naming.factory.initial>org.apache.qpid.jndi.PropertiesFileInitialContextFactory</java.naming.factory.initial>
        <java.naming.provider.url>${project.build.directory}/test-classes/jms-client/jndi.properties</java.naming.provider.url>
        <qpid.amqp.version>0-10</qpid.amqp.version>
        <qpid.dest_syntax>BURL</qpid.dest_syntax>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.apache.qpid</groupId>
          <artifactId>qpid-client</artifactId>
          <scope>runtime</scope>
        </dependency>
        <dependency>
          <groupId>javax.xml.bind</groupId>
          <artifactId>jaxb-api</artifactId>
          <scope>runtime</scope>
        </dependency>
        <dependency>
          <groupId>org.glassfish.jaxb</groupId>
          <artifactId>jaxb-runtime</artifactId>
          <scope>runtime</scope>
        </dependency>
      </dependencies>
    </profile>
  </profiles>
</project>
