<?xml version="1.0" encoding="UTF-8"?>
<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>
        <artifactId>jira-functional-tests</artifactId>
        <groupId>com.atlassian.jira</groupId>
        <version>8.20.2-m0001</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>jira-kubernetes-tests</artifactId>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>${commons.lang.version}</version>
        </dependency>
        <dependency>
            <groupId>com.atlassian.plugins</groupId>
            <artifactId>atlassian-clientside-extensions-runtime</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.15</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-compress</artifactId>
            <version>1.20</version>
        </dependency>
        <dependency>
            <groupId>com.atlassian.k8s</groupId>
            <artifactId>integration-test-common</artifactId>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-jaxrs</artifactId>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-xc</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
        </dependency>
        <dependency>
            <groupId>com.atlassian.jira.plugins</groupId>
            <artifactId>jira-ha-test-api</artifactId>
            <version>${project.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.jira</groupId>
            <artifactId>jira-func-tests</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
    <properties>
        <dockerImage.name>atlassian/jira-software</dockerImage.name>

        <!-- The base donor image to be used for the custom image we build - doesn't matter much which one we use -->
        <dockerImage.donor>${dockerImage.name}:8.13.0-jdk11</dockerImage.donor>

        <!-- The Bamboo plan overrides this with the build key, so we get a unique tag for every image we build -->
        <dockerImage.version>${user.name}</dockerImage.version>

        <!-- If you're running a local registry (e.g. for local testing), you can set this property to point to that -->
        <dockerImage.custom.registry>docker.atl-paas.net</dockerImage.custom.registry>

        <cluster.domain>internal.shared-dev.us-west-2.kitt-inf.net</cluster.domain>
        <helm.release.prefix>${dockerImage.version}</helm.release.prefix>
        <helm.chart.name>jira</helm.chart.name>
        <helm.release.name>${helm.release.prefix}-${helm.chart.name}</helm.release.name>

        <jira.host>${helm.release.name}.${cluster.domain}</jira.host>
        <jira.port>443</jira.port>
        <jira.context></jira.context>
        <jira.protocol>https</jira.protocol>
        <jira.test.kubernetes.enabled>true</jira.test.kubernetes.enabled>
        <func-tests.unpack.directory>${project.build.directory}/generated-sources/jira-func-tests</func-tests.unpack.directory>
        <jira.xml.data.location>${func-tests.unpack.directory}/xml</jira.xml.data.location>
    </properties>

    <profiles>
        <!-- Workaround for maven bug that when -Dmaven.test.skip=true flag is provided, maven does not skip requiring <scope>test</scope> dependencies. -->
        <!-- Since jira-ha-tests test jar is required only in test sources, it is safe to include it only when property maven.test.skip is false. -->
        <profile>
            <id>skip-test-sources</id>
            <activation>
                <property>
                    <name>maven.test.skip</name>
                    <value>!true</value>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>com.atlassian.jira.plugins</groupId>
                    <artifactId>jira-ha-tests</artifactId>
                    <version>${project.version}</version>
                    <scope>test</scope>
                    <type>test-jar</type>
                </dependency>
            </dependencies>
        </profile>
        <profile>
            <id>custom-docker-image</id>
            <dependencies>
                <dependency>
                    <groupId>com.atlassian.jira</groupId>
                    <artifactId>jira-webapp-dist</artifactId>
                    <version>${project.version}</version>
                    <type>war</type>
                </dependency>
                <dependency>
                    <groupId>com.atlassian.jira.tests</groupId>
                    <artifactId>jira-testkit-plugin</artifactId>
                    <version>${testkit.version}</version>
                </dependency>
                <dependency>
                    <groupId>com.atlassian.jira</groupId>
                    <artifactId>jira-func-test-plugin</artifactId>
                    <version>${project.version}</version>
                </dependency>
                <dependency>
                    <groupId>com.atlassian.jira.plugins</groupId>
                    <artifactId>jira-ha-plugin</artifactId>
                    <version>${project.version}</version>
                </dependency>
            </dependencies>

            <build>
                <plugins>
                    <plugin>
                        <!--
                        This plugin builds a custom docker image, based on an official image, but with the
                        webapp contents replaced by the webapp artifact we've just built.
                        -->
                        <groupId>io.fabric8</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <version>0.33.0</version>
                        <configuration>
                            <verbose>true</verbose>
                            <images>
                                <image>
                                    <name>${dockerImage.custom.registry}/${dockerImage.name}:${dockerImage.version}
                                    </name>
                                    <build>
                                        <dockerFile>Dockerfile</dockerFile>
                                        <assembly>
                                            <inline>
                                                <dependencySets>
                                                    <dependencySet>
                                                        <outputDirectory>war</outputDirectory>
                                                        <includes>
                                                            <include>com.atlassian.jira:jira-webapp-dist:war</include>
                                                        </includes>
                                                        <unpack>true</unpack>
                                                    </dependencySet>
                                                    <dependencySet>
                                                        <outputDirectory>test-plugins</outputDirectory>
                                                        <includes>
                                                            <include>com.atlassian.jira.tests:jira-testkit-plugin:jar</include>
                                                            <include>com.atlassian.jira:jira-func-test-plugin:jar</include>
                                                            <include>com.atlassian.jira.plugins:jira-ha-plugin</include>
                                                        </includes>
                                                    </dependencySet>
                                                </dependencySets>
                                            </inline>
                                        </assembly>
                                    </build>
                                </image>
                            </images>
                        </configuration>
                        <executions>
                            <execution>
                                <id>build-docker-image</id>
                                <goals>
                                    <goal>build</goal>
                                </goals>
                                <phase>package</phase>
                            </execution>
                            <execution>
                                <id>push-docker-image</id>
                                <goals>
                                    <goal>push</goal>
                                </goals>
                                <phase>install</phase>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>setup-jira</id>

            <properties>
                <helm.src.path>${project.basedir}/src/main/helm</helm.src.path>
                <helm.chart.build.path>${project.build.directory}/helm</helm.chart.build.path>

                <admin.name>admin</admin.name>
                <admin.password>admin</admin.password>

                <namespace.name>ci</namespace.name>

                <log.download.dir>${project.build.directory}/logs</log.download.dir>
                <jira.kubernetes.number.of.nodes>1</jira.kubernetes.number.of.nodes>
            </properties>

            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <configuration>
                            <skip>false</skip>
                            <includes>
                                <include>com/atlassian/jira/kubernetes/test/JiraSetupIT.java</include>
                            </includes>
                            <systemProperties>
                                <helm.release.name>${helm.release.name}</helm.release.name>
                                <service.domain>${cluster.domain}</service.domain>
                                <jira.admin.name>${admin.name}</jira.admin.name>
                                <jira.admin.password>${admin.password}</jira.admin.password>
                                <jira.kubernetes.number.of.nodes>${jira.kubernetes.number.of.nodes}</jira.kubernetes.number.of.nodes>
                            </systemProperties>
                        </configuration>
                        <executions>
                            <execution>
                                <phase>integration-test</phase>
                                <goals>
                                    <goal>integration-test</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>kubernetes-ha-tests</id>
            <properties>
                <jira.test.suite.class>com/atlassian/jira/kubernetes/test/JiraHaTestSuite.java</jira.test.suite.class>
                <webdriver.browser>firefox</webdriver.browser>
            </properties>

            <dependencies>
                <dependency>
                    <groupId>org.apache.commons</groupId>
                    <artifactId>commons-math3</artifactId>
                    <version>3.6.1</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>

            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <configuration>
                            <includes>
                                <include>${jira.test.suite.class}</include>
                            </includes>
                            <systemProperties>
                                <baseurl.node1>${jira.protocol}://${helm.release.name}-0.${cluster.domain}</baseurl.node1>
                                <baseurl.node2>${jira.protocol}://${helm.release.name}-1.${cluster.domain}</baseurl.node2>
                                <nodeId.node1>${helm.release.name}-0</nodeId.node1>
                                <nodeId.node2>${helm.release.name}-1</nodeId.node2>
                                <http.node1.port>${jira.port}</http.node1.port>
                                <http.node2.port>${jira.port}</http.node2.port>
                                <context.node1.path>${jira.context}</context.node1.path>
                                <context.node2.path>${jira.context}</context.node2.path>
                                <webdriver.browser>${webdriver.browser}</webdriver.browser>
                                <atlassian.test.target.dir>${project.build.directory}</atlassian.test.target.dir>
                            </systemProperties>
                        </configuration>
                        <executions>
                            <execution>
                                <phase>integration-test</phase>
                                <goals>
                                    <goal>integration-test</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>kubernetes-func-tests</id>
            <properties>
                <jira.test.suite.class>com/atlassian/jira/kubernetes/test/JiraFuncTestSuite.java</jira.test.suite.class>
            </properties>

            <dependencies>
                <dependency>
                    <groupId>com.atlassian.jira</groupId>
                    <artifactId>jira-func-tests</artifactId>
                    <version>${project.version}</version>
                    <exclusions>
                        <exclusion>
                            <groupId>com.google.collections</groupId>
                            <artifactId>google-collections</artifactId>
                        </exclusion>
                    </exclusions>
                </dependency>
                <dependency>
                    <groupId>com.meteware.httpunit</groupId>
                    <artifactId>httpunit</artifactId>
                    <version>1.5.4-atlassian-14</version>
                    <scope>provided</scope>
                    <exclusions>
                        <exclusion>
                            <groupId>javax.servlet</groupId>
                            <artifactId>servlet-api</artifactId>
                        </exclusion>
                    </exclusions>
                </dependency>
            </dependencies>

            <build>
                <testResources>
                    <testResource>
                        <directory>${func-tests.unpack.directory}</directory>
                        <filtering>false</filtering>
                    </testResource>
                </testResources>
                <plugins>
                    <plugin>
                        <artifactId>maven-dependency-plugin</artifactId>
                        <version>2.1-atlassian-2</version>
                        <executions>
                            <execution>
                                <id>generate-test-sources</id>
                                <goals>
                                    <goal>unpack-dependencies</goal>
                                </goals>
                                <phase>generate-sources</phase>
                                <configuration>
                                    <includeArtifactIds>jira-func-tests</includeArtifactIds>
                                    <outputDirectory>${func-tests.unpack.directory}</outputDirectory>
                                    <excludes>localtest.properties,containers.properties,seleniumtest.properties</excludes>
                                    <includes>*/*.xml</includes>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <configuration>
                            <includes>
                                <include>${jira.test.suite.class}</include>
                            </includes>
                            <systemProperties>
                                <helm.release.name>${helm.release.name}</helm.release.name>
                                <jira.host>${jira.host}</jira.host>
                                <jira.port>${jira.port}</jira.port>
                                <jira.context>${jira.context}</jira.context>
                                <jira.protocol>${jira.protocol}</jira.protocol>
                                <jira.test.kubernetes.enabled>${jira.test.kubernetes.enabled}</jira.test.kubernetes.enabled>
                                <jira.xml.data.location>${jira.xml.data.location}</jira.xml.data.location>
                                <test.server.properties>${project.basedir}/src/test/resources/k8s.properties</test.server.properties>
                            </systemProperties>
                        </configuration>
                        <executions>
                            <execution>
                                <phase>integration-test</phase>
                                <goals>
                                    <goal>integration-test</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
