<?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.directory.server</groupId>
    <artifactId>apacheds-parent</artifactId>
    <version>1.5.8-SNAPSHOT</version>
  </parent>
  
  <artifactId>apacheds-core-integ</artifactId>
  <name>ApacheDS Core Integration</name>

  <description>Integration testing framework for Apache Directory Server.</description>

  <dependencies>
    <dependency>
      <groupId>org.apache.directory.shared</groupId>
      <artifactId>shared-ldap-codec-standalone</artifactId>
      <scope>test</scope>
    </dependency>
    
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>apacheds-core</artifactId>
    </dependency>
    
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>apacheds-core-annotations</artifactId>
    </dependency>
    
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>apacheds-core-api</artifactId>
    </dependency>
    
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>apacheds-core-jndi</artifactId>
    </dependency>
    
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>apacheds-i18n</artifactId>
    </dependency>
    
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>apacheds-protocol-ldap</artifactId>
    </dependency>
    
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>apacheds-server-annotations</artifactId>
    </dependency>

    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>apacheds-test-framework</artifactId>
    </dependency>

    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
    </dependency>

    <dependency>
      <groupId>commons-lang</groupId>
      <artifactId>commons-lang</artifactId>
    </dependency>
    
    <dependency>
      <groupId>org.apache.directory.shared</groupId>
      <artifactId>shared-ldap-client-api</artifactId>
    </dependency>
    
    <dependency>
      <groupId>org.apache.directory.shared</groupId>
      <artifactId>shared-asn1-api</artifactId>
    </dependency>
    
    <dependency>
      <groupId>org.apache.directory.shared</groupId>
      <artifactId>shared-ldap-extras-sp</artifactId>
    </dependency>
    
    <dependency>
      <groupId>org.apache.directory.shared</groupId>
      <artifactId>shared-ldap-codec-core</artifactId>
    </dependency>
    
    <dependency>
      <groupId>org.apache.directory.shared</groupId>
      <artifactId>shared-ldap-model</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.shared</groupId>
      <artifactId>shared-ldap-schema-data</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.shared</groupId>
      <artifactId>shared-util</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>integration</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <systemPropertyVariables>
                <felix.cache.rootdir>
                  ${project.build.directory}
                </felix.cache.rootdir>
                <felix.cache.locking>
                  false
                </felix.cache.locking>
                <org.osgi.framework.storage.clean>
                  onFirstInit
                </org.osgi.framework.storage.clean>
                <org.osgi.framework.storage>
                  ${project.build.directory}/osgi-cache
                </org.osgi.framework.storage>
                <apacheds.partition.factory>org.apache.directory.server.core.factory.JdbmPartitionFactory</apacheds.partition.factory>
              </systemPropertyVariables>
              <includes>
                <include>**/*ISuite.java</include>
              </includes>
              <excludes>
                <exclude>**/*PerfIT.java</exclude>
              </excludes>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- Runs tests three times: with JDBM partition, AVL partition, LDIF partition -->
    <profile>
      <id>integration-all-partitions</id>
      <activation>
        <property><name>test-all-partitions</name></property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <!-- default/JDBM execution -->
            <configuration>
              <includes>
                <include>**/*ISuite.java</include>
                <include>**/*ITest.java</include>
              </includes>
              <excludes>
                <exclude>**/ReferralIT.java</exclude>
              </excludes>
              <systemPropertyVariables>
	            <felix.cache.rootdir>
	              ${project.build.directory}
	            </felix.cache.rootdir>
	            <felix.cache.locking>
	              false
	            </felix.cache.locking>
	            <org.osgi.framework.storage.clean>
	              onFirstInit
	            </org.osgi.framework.storage.clean>
	            <org.osgi.framework.storage>
	              ${project.build.directory}/osgi-cache
	            </org.osgi.framework.storage>
                <apacheds.partition.factory>org.apache.directory.server.core.factory.JdbmPartitionFactory</apacheds.partition.factory>
              </systemPropertyVariables>
            </configuration>
            <executions>
              <!-- AVL execution -->
       		  <execution>
       		    <id>avl</id>
       		    <goals>
       		      <goal>test</goal>
       		    </goals>
                <configuration>
                  <systemPropertyVariables>
                    <apacheds.partition.factory>org.apache.directory.server.core.factory.AvlPartitionFactory</apacheds.partition.factory>
	                <felix.cache.rootdir>
	                  ${project.build.directory}
	                </felix.cache.rootdir>
	                <felix.cache.locking>
	                  false
	                </felix.cache.locking>
	                <org.osgi.framework.storage.clean>
	                  onFirstInit
	                </org.osgi.framework.storage.clean>
	                <org.osgi.framework.storage>
	                  ${project.build.directory}/osgi-cache
	                </org.osgi.framework.storage>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <!-- LDIF execution -->
       		  <execution>
       		    <id>ldif</id>
       		    <goals>
       		      <goal>test</goal>
       		    </goals>
                <configuration>
                  <systemPropertyVariables>
                    <apacheds.partition.factory>org.apache.directory.server.core.factory.LdifPartitionFactory</apacheds.partition.factory>
	                <felix.cache.rootdir>
	                  ${project.build.directory}
	                </felix.cache.rootdir>
	                <felix.cache.locking>
	                  false
	                </felix.cache.locking>
	                <org.osgi.framework.storage.clean>
	                  onFirstInit
	                </org.osgi.framework.storage.clean>
	                <org.osgi.framework.storage>
	                  ${project.build.directory}/osgi-cache
	                </org.osgi.framework.storage>
                  </systemPropertyVariables>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>quicktest</id>
      <activation>
        <property><name>quicktest</name></property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <excludes>
                <exclude>**/*PerfTest.java</exclude>
                <exclude>**/*ITest.java</exclude>
              </excludes>
              <systemPropertyVariables>
                <apacheds.partition.factory>org.apache.directory.server.core.factory.LdifPartitionFactory</apacheds.partition.factory>
                <felix.cache.rootdir>
                  ${project.build.directory}
                </felix.cache.rootdir>
                <felix.cache.locking>
                  false
                </felix.cache.locking>
                <org.osgi.framework.storage.clean>
                  onFirstInit
                </org.osgi.framework.storage.clean>
                <org.osgi.framework.storage>
                  ${project.build.directory}/osgi-cache
                </org.osgi.framework.storage>
              </systemPropertyVariables>
            </configuration>
          </plugin>

          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <phase>validate</phase>
                <configuration>
                  <tasks>
                    <echo>
=================================================================
                   Q U I C K   T E S T S
                   ---------------------
                  
WARNING: Long running integration tests have been disabled!
=================================================================
                    </echo>
                  </tasks>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>

