<?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>7.1.10</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>
