<?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/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>org.apache.airavata</groupId>
        <artifactId>airavata-test-suite</artifactId>
        <version>0.17-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <artifactId>multi-tenanted-airavata</artifactId>
    <name>Multi-tenanted Airavata</name>
    <description>Multi-tenanted Airavata</description>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.apache.airavata</groupId>
            <artifactId>airavata-api-stubs</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.airavata</groupId>
            <artifactId>airavata-model-utils</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.airavata</groupId>
            <artifactId>airavata-messaging-core</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.airavata</groupId>
            <artifactId>airavata-data-models</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.airavata</groupId>
            <artifactId>airavata-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.airavata</groupId>
            <artifactId>airavata-credential-store</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derby</artifactId>
            <version>${derby.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derbyclient</artifactId>
            <version>${derby.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derbynet</artifactId>
            <version>${derby.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derbytools</artifactId>
            <version>${derby.version}</version>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.1.1</version>
        </dependency>
    </dependencies>
    <build>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <!--<execution>-->
                        <!--<id>start-airavata-server</id>-->
                        <!--<phase>pre-integration-test</phase>-->
                        <!--<configuration>-->
                            <!--<target>-->
                                <!--<exec executable="./startup-airavata.sh" dir="${project.basedir}/src/main/resources/" spawn="true">-->

                                <!--</exec>-->

                            <!--</target>-->
                        <!--</configuration>-->
                        <!--<goals>-->
                            <!--<goal>run</goal>-->
                        <!--</goals>-->
                    <!--</execution>-->
                    <execution>
                        <phase>generate-test-resources</phase>
                        <configuration>

                            <tasks>
                                <mkdir dir="${project.build.directory}/test-classes/base-airavata/"/>
                                <mkdir dir="${project.build.directory}/test-classes/local-exp-resources/scratch"/>
                                <mkdir dir="${project.build.directory}/test-classes/local-exp-resources/storage"/>
                                <mkdir dir="${project.build.directory}/test-classes/local-exp-resources/wrapper"/>
                                <mkdir dir="${project.build.directory}/test-classes/local-exp-resources/bin"/>

                            </tasks>

                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>process-test-classes</id>
                        <phase>process-test-classes</phase>
                        <configuration>
                            <target>

                                <chmod file="${project.build.directory}/test-classes/airavata-server-stop.sh" perm="755"/>
                                <chmod file="${project.build.directory}/test-classes/startup-airavata.sh" perm="755"/>
                                <chmod file="${project.build.directory}/test-classes/local-exp-resources/wrapper/echo_wrapper.sh" perm="755"/>

                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!--<plugin>-->
                <!--<groupId>org.apache.maven.plugins</groupId>-->
                <!--<artifactId>maven-failsafe-plugin</artifactId>-->
                <!--<version>2.5</version>-->
                <!--<configuration>-->
                    <!--<failIfNoTests>false</failIfNoTests>-->

                    <!--&lt;!&ndash;excludes>-->
                        <!--<exclude>**/*IT.java</exclude>-->
                    <!--</excludes &ndash;&gt;-->
                    <!--<includes>-->
                        <!--<include>**/*IT.java</include>-->
                    <!--</includes>-->
                <!--</configuration>-->
                <!--<executions>-->
                    <!--<execution>-->
                        <!--<id>integration-test</id>-->
                        <!--<phase>integration-test</phase>-->
                        <!--<goals>-->
                            <!--<goal>integration-test</goal>-->
                        <!--</goals>-->
                    <!--</execution>-->
                    <!--<execution>-->
                        <!--<id>verify</id>-->
                        <!--<phase>verify</phase>-->
                        <!--<goals>-->
                            <!--<goal>verify</goal>-->
                        <!--</goals>-->
                    <!--</execution>-->
                <!--</executions>-->
            <!--</plugin>-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${surefire.version}</version>
                <inherited>true</inherited>
                <configuration>
                    <test>org.apache.airavata.testsuite.multitenantedairavata.AiravataIT</test>
                </configuration>
            </plugin>

            <!--<plugin>-->
                <!--<groupId>org.apache.maven.plugins</groupId>-->
                <!--<artifactId>maven-failsafe-plugin</artifactId>-->
                <!--<configuration>-->
                    <!--&lt;!&ndash;<test>&ndash;&gt;-->
                        <!--&lt;!&ndash;org.apache.airavata.testsuite.multitenantedairavata.AiravataIntegrationTestSuit&ndash;&gt;-->
                    <!--&lt;!&ndash;</test>&ndash;&gt;-->
                    <!--<includes>-->
                        <!--<include>**/*AiravataIntegrationTestSuit.java</include>-->
                    <!--</includes>-->
                <!--</configuration>-->

                <!--&lt;!&ndash;<executions>&ndash;&gt;-->
                    <!--&lt;!&ndash;<execution>&ndash;&gt;-->
                        <!--&lt;!&ndash;<goals>&ndash;&gt;-->
                            <!--&lt;!&ndash;<goal>integration-test</goal>&ndash;&gt;-->
                            <!--&lt;!&ndash;<goal>verify</goal>&ndash;&gt;-->
                        <!--&lt;!&ndash;</goals>&ndash;&gt;-->
                    <!--&lt;!&ndash;</execution>&ndash;&gt;-->
                <!--&lt;!&ndash;</executions>&ndash;&gt;-->
            <!--</plugin>-->

        </plugins>
        <testSourceDirectory>${project.basedir}/src/main/java</testSourceDirectory>
        <testResources>
            <testResource>
                <directory>${project.basedir}/src/main/resources</directory>
            </testResource>
        </testResources>
    </build>
</project>
