pom.xml

778 lines | 36.596 kB Blame History Raw Download
<?xml version="1.0"?>
<!--
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
~ and other contributors as indicated by the @author tags.
~
~ Licensed 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">
    <parent>
        <groupId>org.keycloak.testsuite</groupId>
        <artifactId>performance</artifactId>
        <version>4.0.0.Beta2-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>performance-tests</artifactId>
    <name>Keycloak Performance TestSuite - Tests</name>

    <properties>
        <provisioner>docker-compose</provisioner>
        <deployment>singlenode</deployment>

        <provisioning.properties>${provisioner}/4cpus/${deployment}</provisioning.properties>
        <dataset>2u2c</dataset>
        <test.properties>oidc-login-logout</test.properties>
        
        <provisioning.properties.file>${project.basedir}/parameters/provisioning/${provisioning.properties}.properties</provisioning.properties.file>
        <dataset.properties.file>${project.basedir}/parameters/datasets/${dataset}.properties</dataset.properties.file>
        <test.properties.file>${project.basedir}/parameters/test/${test.properties}.properties</test.properties.file>

        <provisioned.system.properties.file>${project.build.directory}/provisioned-system.properties</provisioned.system.properties.file>

        <!--other-->
                        
        <db.dump.download.site>https://downloads.jboss.org/keycloak-qe/${server.version}</db.dump.download.site>
        <numOfWorkers>1</numOfWorkers>

        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>

        <scala.version>2.11.7</scala.version>
        <gatling.version>2.1.7</gatling.version>
        <gatling-plugin.version>2.2.1</gatling-plugin.version>
        <scala-maven-plugin.version>3.2.2</scala-maven-plugin.version>
        <jboss-logging.version>3.3.0.Final</jboss-logging.version>

        <gatling.simulationClass>keycloak.OIDCLoginAndLogoutSimulation</gatling.simulationClass>
        <gatling.skip.run>true</gatling.skip.run>

        <trustStoreArg/>
        <trustStorePasswordArg/>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-adapter-core</artifactId>
            <version>${server.version}</version>
        </dependency>
        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-adapter-spi</artifactId>
            <version>${server.version}</version>
        </dependency>
        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-core</artifactId>
            <version>${server.version}</version>
        </dependency>
        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-common</artifactId>
            <version>${server.version}</version>
        </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>org.keycloak</groupId>
            <artifactId>keycloak-admin-client</artifactId>
            <version>${server.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.spec.javax.ws.rs</groupId>
            <artifactId>jboss-jaxrs-api_2.0_spec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxrs</artifactId>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jackson2-provider</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>${scala.version}</version>
        </dependency>
        <dependency>
            <groupId>io.gatling.highcharts</groupId>
            <artifactId>gatling-charts-highcharts</artifactId>
            <version>${gatling.version}</version>
        </dependency>
    </dependencies>

    <build>
        <testResources>
            <testResource>
                <directory>src/test/resources</directory>
                <filtering>true</filtering>
            </testResource>
        </testResources>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <executions>
                    <execution>
                        <id>enforce-teardown-before-clean</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <phase>pre-clean</phase>
                        <configuration>
                            <rules>
                                <requireFilesDontExist>
                                    <message><![CDATA[
                                        WARNING: A previously provisioned system still appears to be running.
         Please tear it down with `mvn verify -P teardown [-Pcluster|crossdc]` before runing `mvn clean`, 
         or delete the `provisioned-system.properties` file manually.
                                    ]]></message>
                                    <files>
                                        <file>${provisioned.system.properties.file}</file>
                                    </files>
                                </requireFilesDontExist>
                            </rules>
                            <fail>true</fail>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            
            
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>properties-maven-plugin</artifactId>
                <version>1.0.0</version>
                <executions>            
                    <execution>
                        <id>read-parameters</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>read-project-properties</goal>
                        </goals>
                        <configuration>
                            <files>
                                <file>${provisioning.properties.file}</file>
                                <file>${dataset.properties.file}</file>
                                <file>${test.properties.file}</file>
                            </files>
                        </configuration>
                    </execution>
                    <execution>
                        <id>read-existing-provisioned-system-properties</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>read-project-properties</goal>
                        </goals>
                        <configuration>
                            <files>
                                <file>${project.build.directory}/provisioned-system.properties</file>
                            </files>
                            <quiet>true</quiet>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>${scala-maven-plugin.version}</version>

                <executions>
                    <execution>
                        <id>add-source</id>
                        <!--phase>process-resources</phase-->
                        <goals>
                            <goal>add-source</goal>
                            <!--goal>compile</goal-->
                        </goals>
                    </execution>
                    <execution>
                        <id>compile</id>
                        <!--phase>process-test-resources</phase-->
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                        <configuration>
                            <args>
                                <arg>-target:jvm-1.8</arg>
                                <arg>-deprecation</arg>
                                <arg>-feature</arg>
                                <arg>-unchecked</arg>
                                <arg>-language:implicitConversions</arg>
                                <arg>-language:postfixOps</arg>
                            </args>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <!--
                Execute test directly by using:

                mvn gatling:execute -Ptest -f testsuite/performance/gatling -Dgatling.simulationClass=keycloak.DemoSimulation2

                For more usage info see: http://gatling.io/docs/current/extensions/maven_plugin/
                -->
                <groupId>io.gatling</groupId>
                <artifactId>gatling-maven-plugin</artifactId>
                <version>${gatling-plugin.version}</version>

                <configuration>
                    <configFolder>${project.build.testOutputDirectory}</configFolder>
                    <skip>${gatling.skip.run}</skip>
                    <disableCompiler>true</disableCompiler>
                    <runMultipleSimulations>true</runMultipleSimulations>
                    <jvmArgs>
                        <!--common params-->
                        <param>-Dproject.build.directory=${project.build.directory}</param>
                        <param>-Dkeycloak.server.uris=${keycloak.frontend.servers}</param>
                        <param>-DauthUser=${keycloak.admin.user}</param>
                        <param>-DauthPassword=${keycloak.admin.password}</param>
                        <!--dataset params-->
                        <param>-DnumOfRealms=${numOfRealms}</param>
                        <param>-DusersPerRealm=${usersPerRealm}</param>
                        <param>-DclientsPerRealm=${clientsPerRealm}</param>
                        <param>-DrealmRoles=${realmRoles}</param>
                        <param>-DrealmRolesPerUser=${realmRolesPerUser}</param>
                        <param>-DclientRolesPerUser=${clientRolesPerUser}</param>
                        <param>-DclientRolesPerClient=${clientRolesPerClient}</param>
                        <param>-DhashIterations=${hashIterations}</param>
                        <!--test params-->
                        <param>-DusersPerSec=${usersPerSec}</param>
                        <param>-DrampUpPeriod=${rampUpPeriod}</param>
                        <param>-DwarmUpPeriod=${warmUpPeriod}</param>
                        <param>-DmeasurementPeriod=${measurementPeriod}</param>
                        <param>-DfilterResults=${filterResults}</param>
                        <param>-DuserThinkTime=${userThinkTime}</param>
                        <param>-DrefreshTokenPeriod=${refreshTokenPeriod}</param>
                        <param>-DrefreshTokenCount=${refreshTokenCount}</param>
                        <param>-DbadLoginAttempts=${badLoginAttempts}</param>
                        
                        <param>${trustStoreArg}</param>
                        <param>${trustStorePasswordArg}</param>
                    </jvmArgs>
                </configuration>

                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                        </goals>
                        <phase>integration-test</phase>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <configuration>
                    <workingDirectory>${project.basedir}</workingDirectory>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        
        <profile>
            <id>cluster</id>
            <properties>
                <deployment>cluster</deployment>
            </properties>
        </profile>
        <profile>
            <id>crossdc</id>
            <properties>
                <deployment>crossdc</deployment>
            </properties>
        </profile>
        
        <profile>
            <id>ssl</id>
            <activation>
                <property>
                    <name>trustStore</name>
                </property>
            </activation>
            <properties>
                <trustStoreArg>-Djavax.net.ssl.trustStore=${trustStore}</trustStoreArg>
                <trustStorePasswordArg>-Djavax.net.ssl.trustStorePassword=${trustStorePassword}</trustStorePasswordArg>
            </properties>
        </profile>
        
        <profile>
            <id>provision</id>
            <properties>
                <project.basedir>${project.basedir}</project.basedir>
                <project.build.directory>${project.build.directory}</project.build.directory>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>prepare-provisioning</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <configuration>
                                    <target>
                                        <ant antfile="prepare-provisioning.xml" target="prepare-${provisioner}" />
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>provision</id>
                                <phase>process-test-resources</phase>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                                <configuration>
                                    <executable>./${provisioner}.sh</executable>
                                    <environmentVariables>
                                        <PROVISIONER>${provisioner}</PROVISIONER>
                                        <DEPLOYMENT>${deployment}</DEPLOYMENT>
                                        <OPERATION>provision</OPERATION>

                                        <KEYCLOAK_VERSION>${project.version}</KEYCLOAK_VERSION>
                                        
                                        <MANAGEMENT_USER>${management.user}</MANAGEMENT_USER>
                                        <MANAGEMENT_USER_PASS>${management.user.password}</MANAGEMENT_USER_PASS>
                                        
                                        <KEYCLOAK_SCALE>${keycloak.scale}</KEYCLOAK_SCALE>
                                        <KEYCLOAK_DC1_SCALE>${keycloak.dc1.scale}</KEYCLOAK_DC1_SCALE>
                                        <KEYCLOAK_DC2_SCALE>${keycloak.dc2.scale}</KEYCLOAK_DC2_SCALE>
                                        <KEYCLOAK_CPUSETS>${keycloak.docker.cpusets}</KEYCLOAK_CPUSETS>
                                        <KEYCLOAK_DC1_CPUSETS>${keycloak.dc1.docker.cpusets}</KEYCLOAK_DC1_CPUSETS>
                                        <KEYCLOAK_DC2_CPUSETS>${keycloak.dc2.docker.cpusets}</KEYCLOAK_DC2_CPUSETS>
                                        <KEYCLOAK_MEMLIMIT>${keycloak.docker.memlimit}</KEYCLOAK_MEMLIMIT>
                                        <KEYCLOAK_JVM_MEMORY>${keycloak.jvm.memory}</KEYCLOAK_JVM_MEMORY>
                                        <KEYCLOAK_HTTP_MAX_CONNECTIONS>${keycloak.http.max-connections}</KEYCLOAK_HTTP_MAX_CONNECTIONS>
                                        <KEYCLOAK_AJP_MAX_CONNECTIONS>${keycloak.ajp.max-connections}</KEYCLOAK_AJP_MAX_CONNECTIONS>
                                        <KEYCLOAK_WORKER_IO_THREADS>${keycloak.worker.io-threads}</KEYCLOAK_WORKER_IO_THREADS>
                                        <KEYCLOAK_WORKER_TASK_MAX_THREADS>${keycloak.worker.task-max-threads}</KEYCLOAK_WORKER_TASK_MAX_THREADS>
                                        <KEYCLOAK_DS_MIN_POOL_SIZE>${keycloak.ds.min-pool-size}</KEYCLOAK_DS_MIN_POOL_SIZE>
                                        <KEYCLOAK_DS_MAX_POOL_SIZE>${keycloak.ds.max-pool-size}</KEYCLOAK_DS_MAX_POOL_SIZE>
                                        <KEYCLOAK_DS_POOL_PREFILL>${keycloak.ds.pool-prefill}</KEYCLOAK_DS_POOL_PREFILL>
                                        <KEYCLOAK_DS_PS_CACHE_SIZE>${keycloak.ds.ps-cache-size}</KEYCLOAK_DS_PS_CACHE_SIZE>

                                        <KEYCLOAK_ADMIN_USER>${keycloak.admin.user}</KEYCLOAK_ADMIN_USER>
                                        <KEYCLOAK_ADMIN_PASSWORD>${keycloak.admin.password}</KEYCLOAK_ADMIN_PASSWORD>

                                        <DB_CPUSETS>${db.docker.cpusets}</DB_CPUSETS>
                                        <DB_DC1_CPUSETS>${db.dc1.docker.cpusets}</DB_DC1_CPUSETS>
                                        <DB_DC2_CPUSETS>${db.dc2.docker.cpusets}</DB_DC2_CPUSETS>
                                        <DB_MEMLIMIT>${db.docker.memlimit}</DB_MEMLIMIT>
                                        <DB_MAX_CONNECTIONS>${db.max.connections}</DB_MAX_CONNECTIONS>

                                        <LB_CPUSETS>${lb.docker.cpusets}</LB_CPUSETS>
                                        <LB_DC1_CPUSETS>${lb.dc1.docker.cpusets}</LB_DC1_CPUSETS>
                                        <LB_DC2_CPUSETS>${lb.dc2.docker.cpusets}</LB_DC2_CPUSETS>
                                        <LB_MEMLIMIT>${lb.docker.memlimit}</LB_MEMLIMIT>
                                        <LB_JVM_MEMORY>${lb.jvm.memory}</LB_JVM_MEMORY>
                                        <LB_HTTP_MAX_CONNECTIONS>${lb.http.max-connections}</LB_HTTP_MAX_CONNECTIONS>
                                        <LB_WORKER_IO_THREADS>${lb.worker.io-threads}</LB_WORKER_IO_THREADS>
                                        <LB_WORKER_TASK_MAX_THREADS>${lb.worker.task-max-threads}</LB_WORKER_TASK_MAX_THREADS>
                                        
                                        <INFINISPAN_DC1_CPUSETS>${infinispan.dc1.docker.cpusets}</INFINISPAN_DC1_CPUSETS>
                                        <INFINISPAN_DC2_CPUSETS>${infinispan.dc2.docker.cpusets}</INFINISPAN_DC2_CPUSETS>
                                        <INFINISPAN_MEMLIMIT>${infinispan.docker.memlimit}</INFINISPAN_MEMLIMIT>
                                        <INFINISPAN_JVM_MEMORY>${infinispan.jvm.memory}</INFINISPAN_JVM_MEMORY>
                                    </environmentVariables>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>properties-maven-plugin</artifactId>
                        <version>1.0.0</version>
                        <executions>
                            <execution>
                                <id>read-new-provisioned-system-properties</id>
                                <goals>
                                    <goal>read-project-properties</goal>
                                </goals>
                                <phase>pre-integration-test</phase>
                                <configuration>
                                    <files>
                                        <file>${project.build.directory}/provisioned-system.properties</file>
                                    </files>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        
        <profile>
            <id>generate-data</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>generate-data</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                                <configuration>
                                    <executable>java</executable>
                                    <workingDirectory>${project.build.directory}</workingDirectory>
                                    <arguments>
                                        <argument>-classpath</argument>
                                        <classpath/>
                                        <argument>-DnumOfRealms=${numOfRealms}</argument>
                                        <argument>-DusersPerRealm=${usersPerRealm}</argument>
                                        <argument>-DclientsPerRealm=${clientsPerRealm}</argument>
                                        <argument>-DrealmRoles=${realmRoles}</argument>
                                        <argument>-DrealmRolesPerUser=${realmRolesPerUser}</argument>
                                        <argument>-DclientRolesPerUser=${clientRolesPerUser}</argument>
                                        <argument>-DclientRolesPerClient=${clientRolesPerClient}</argument>
                                        <argument>-DhashIterations=${hashIterations}</argument>
                                        <argument>org.keycloak.performance.RealmsConfigurationBuilder</argument>
                                    </arguments>
                                </configuration>
                            </execution>
                            <execution>
                                <id>load-data</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                                <configuration>
                                    <executable>java</executable>
                                    <workingDirectory>${project.build.directory}</workingDirectory>
                                    <arguments>
                                        <argument>-classpath</argument>
                                        <classpath/>
                                        <argument>${trustStoreArg}</argument>
                                        <argument>${trustStorePasswordArg}</argument>
                                        <argument>-Dkeycloak.server.uris=${keycloak.frontend.servers}</argument>
                                        <argument>-DauthUser=${keycloak.admin.user}</argument>
                                        <argument>-DauthPassword=${keycloak.admin.password}</argument>
                                        <argument>-DnumOfWorkers=${numOfWorkers}</argument>
                                        <argument>org.keycloak.performance.RealmsConfigurationLoader</argument>
                                        <argument>benchmark-realms.json</argument>
                                    </arguments>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>export-dump</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>export-dump</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                                <configuration>
                                    <executable>./${provisioner}.sh</executable>
                                    <environmentVariables>
                                        <PROVISIONER>${provisioner}</PROVISIONER>
                                        <DEPLOYMENT>${deployment}</DEPLOYMENT>
                                        <OPERATION>export-dump</OPERATION>
                                        <DATASET_PROPERTIES_FILE>${dataset.properties.file}</DATASET_PROPERTIES_FILE>
                                    </environmentVariables>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>import-dump</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>import-dump</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                                <configuration>
                                    <executable>./${provisioner}.sh</executable>
                                    <environmentVariables>
                                        <PROVISIONER>${provisioner}</PROVISIONER>
                                        <DEPLOYMENT>${deployment}</DEPLOYMENT>
                                        <OPERATION>import-dump</OPERATION>
                                        <DATASET_PROPERTIES_FILE>${dataset.properties.file}</DATASET_PROPERTIES_FILE>
                                        <DUMP_DOWNLOAD_SITE>${db.dump.download.site}</DUMP_DOWNLOAD_SITE>
                                    </environmentVariables>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>test</id>
            <properties>
                <gatling.skip.run>false</gatling.skip.run>
            </properties>
        </profile>
        
        <profile>
            <id>collect</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>collect-artifacts</id>
                                <phase>post-integration-test</phase>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                                <configuration>
                                    <executable>./${provisioner}.sh</executable>
                                    <environmentVariables>
                                        <PROVISIONER>${provisioner}</PROVISIONER>
                                        <DEPLOYMENT>${deployment}</DEPLOYMENT>
                                        <OPERATION>collect</OPERATION>
                                    </environmentVariables>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        
        <profile>
            <id>teardown</id>
            <properties>
                <delete.data>true</delete.data>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>teardown</id>
                                <phase>post-integration-test</phase>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                                <configuration>
                                    <executable>./${provisioner}.sh</executable>
                                    <environmentVariables>
                                        <PROVISIONER>${provisioner}</PROVISIONER>
                                        <DEPLOYMENT>${deployment}</DEPLOYMENT>
                                        <OPERATION>teardown</OPERATION>
                                        <DELETE_DATA>${delete.data}</DELETE_DATA>
                                    </environmentVariables>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>                    
                </plugins>
            </build>
        </profile>
        <profile>
            <id>keep-data</id>
            <properties>
                <delete.data>false</delete.data>
            </properties>
        </profile>
        

        <profile>
            <id>monitoring</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>monitoring-on</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                                <configuration>
                                    <executable>./${provisioner}.sh</executable>
                                    <environmentVariables>
                                        <PROVISIONER>${provisioner}</PROVISIONER>
                                        <DEPLOYMENT>monitoring</DEPLOYMENT>
                                        <OPERATION>provision</OPERATION>
                                        <MONITORING_CPUSETS>${monitoring.docker.cpusets}</MONITORING_CPUSETS>
                                    </environmentVariables>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin> 
                </plugins>
            </build>
        </profile>
        <profile>
            <id>monitoring-off</id>
            <properties>
                <delete.monitoring.data>false</delete.monitoring.data>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>monitoring-off</id>
                                <phase>post-integration-test</phase>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                                <configuration>
                                    <executable>./${provisioner}.sh</executable>
                                    <environmentVariables>
                                        <PROVISIONER>${provisioner}</PROVISIONER>
                                        <DEPLOYMENT>monitoring</DEPLOYMENT>
                                        <OPERATION>teardown</OPERATION>
                                        <DELETE_DATA>${delete.monitoring.data}</DELETE_DATA>
                                    </environmentVariables>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>delete-monitoring-data</id>
            <properties>
                <delete.monitoring.data>true</delete.monitoring.data>
            </properties>
        </profile>
        
        <profile>
            <id>sar</id>
            <properties>
                <gnuplot>false</gnuplot>
                <bzip>false</bzip>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>start-sar</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                                <configuration>
                                    <executable>./sar.sh</executable>
                                    <environmentVariables>
                                        <SAR_OPERATION>start</SAR_OPERATION>
                                    </environmentVariables>
                                </configuration>
                            </execution>
                            <execution>
                                <id>stop-sar</id>
                                <phase>post-integration-test</phase>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                                <configuration>
                                    <executable>./sar.sh</executable>
                                    <environmentVariables>
                                        <SAR_OPERATION>stop</SAR_OPERATION>
                                        <GNUPLOT>${gnuplot}</GNUPLOT>
                                        <BZIP>${bzip}</BZIP>
                                    </environmentVariables>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>gnuplot</id>
            <properties>
                <gnuplot>true</gnuplot>
            </properties>
        </profile>

    </profiles>

</project>