<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2021 Contributors to the Eclipse Foundation. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<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">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.glassfish.main.tests.tck</groupId>
        <artifactId>tck</artifactId>
        <version>7.0.0-SNAPSHOT</version>
    </parent>

    <artifactId>glassfish-external-tck-authorization</artifactId>
    <packaging>pom</packaging>

    <name>TCK: Authorization</name>

    <properties>
        <ant.home>${project.build.directory}/apache-ant-${ant.version}</ant.home>
        <ant.zip.url>https://archive.apache.org/dist/ant/binaries/apache-ant-${ant.version}-bin.zip</ant.zip.url>
        <tck.home>${project.build.directory}/authorization-tck</tck.home>
        <glassfish.home>${project.build.directory}/glassfish7</glassfish.home>
        <glassfish.version>${project.version}</glassfish.version>
        <glassfish.asadmin>${glassfish.home}/glassfish/bin/asadmin</glassfish.asadmin>
        <tck.tests.home>${tck.home}/src/com/sun/ts/tests</tck.tests.home>
        <jacoco.includes>org/glassfish/**\:com/sun/enterprise/**</jacoco.includes>
        <port.admin>14848</port.admin>
        <port.derby>11527</port.derby>
        <port.http>18080</port.http>
        <port.https>18181</port.https>
        <port.jms>17676</port.jms>
        <port.jmx>18686</port.jmx>
        <port.orb>13700</port.orb>
        <port.orb.mutual>13920</port.orb.mutual>
        <port.orb.ssl>13820</port.orb.ssl>
        <port.harness.log>12000</port.harness.log>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.glassfish.main.distributions</groupId>
            <artifactId>glassfish</artifactId>
            <version>${glassfish.version}</version>
            <type>zip</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.main.tests.tck</groupId>
            <artifactId>jakarta-authorization-tck</artifactId>
            <version>${project.version}</version>
            <type>zip</type>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>com.googlecode.maven-download-plugin</groupId>
                <artifactId>download-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>download-authorization-tck</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>wget</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <skip>${skipITs}</skip>
                    <url>${ant.zip.url}</url>
                    <unpack>true</unpack>
                    <outputDirectory>${project.build.directory}</outputDirectory>
                </configuration>
            </plugin>

            <plugin>
                <artifactId>maven-dependency-plugin</artifactId>
                <configuration>
                    <skip>${skipITs}</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>unpack-glassfish</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>unpack-dependencies</goal>
                        </goals>
                        <configuration>
                            <includeArtifactIds>glassfish</includeArtifactIds>
                            <outputDirectory>${project.build.directory}</outputDirectory>
                        </configuration>
                    </execution>
                    <execution>
                        <id>unpack-tck</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>unpack-dependencies</goal>
                        </goals>
                        <configuration>
                            <includeArtifactIds>jakarta-authorization-tck</includeArtifactIds>
                            <outputDirectory>${project.build.directory}</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.ant</groupId>
                        <artifactId>ant</artifactId>
                        <version>${ant.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>ant-contrib</groupId>
                        <artifactId>ant-contrib</artifactId>
                        <version>1.0b3</version>
                        <exclusions>
                            <exclusion>
                                <groupId>ant</groupId>
                                <artifactId>ant</artifactId>
                            </exclusion>
                        </exclusions>
                    </dependency>
                </dependencies>
                <configuration>
                    <skip>${skipITs}</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>prepare-tck-and-glassfish</id>
                        <phase>pre-integration-test</phase>
                        <configuration>
                            <target xmlns:if="ant:if" xmlns:unless="ant:unless">
                                <taskdef resource="net/sf/antcontrib/antcontrib.properties"
                                         classpathref="maven.plugin.classpath" />

                                <!-- Change configuration -->
                                <replaceregexp file="${tck.home}/bin/ts.jte" byline="true"
                                    match="s1as\.admin\.port=.*"
                                    replace="s1as\.admin\.port=${port.admin}" />
                                <replaceregexp file="${tck.home}/bin/ts.jte" byline="true"
                                    match="orb\.port=.*"
                                    replace="orb\.port=${port.orb}" />
                                <replaceregexp file="${tck.home}/bin/ts.jte" byline="true"
                                    match="database\.port=.*"
                                    replace="database\.port=${port.derby}" />
                                <replaceregexp file="${tck.home}/bin/ts.jte" byline="true"
                                    match="webServerPort=.*"
                                    replace="webServerPort=${port.http}" />
                                <replaceregexp file="${tck.home}/bin/ts.jte" byline="true"
                                    match="securedWebServicePort=.*"
                                    replace="securedWebServicePort=${port.https}" />
                                <replaceregexp file="${tck.home}/bin/ts.jte" byline="true"
                                    match="harness\.log\.port=.*"
                                    replace="harness\.log\.port=${port.harness.log}" />

                                <replaceregexp file="${tck.home}/bin/ts.jte" byline="true"
                                    match="javaee\.level=.*"
                                    replace="javaee\.level=full" />
                                <replaceregexp file="${tck.home}/bin/ts.jte" byline="true"
                                    match="jacc\.home=.*"
                                    replace="jacc\.home=${glassfish.home}/glassfish" />
                                <replaceregexp file="${tck.home}/bin/ts.jte" byline="true"
                                    match="report\.dir=.*"
                                    replace="report\.dir=${tck.home}/jacctckreport/jacctck" />
                                <replaceregexp file="${tck.home}/bin/ts.jte" byline="true"
                                    match="work\.dir=.*"
                                    replace="work\.dir=${tck.home}/jacctckwork/jacctck" />

                                <!-- Run just selected subset tests -->
                                <replaceregexp file="${tck.home}/bin/build.xml" byline="true"
                                    match="&lt;/project&gt;"
                                    replace="&lt;property name=&quot;all.test.dir&quot; value=&quot;com/sun/ts/tests/jacc/,com/sun/ts/tests/signaturetest/jacc,com/sun/ts/tests/common/vehicle/&quot; /&gt; &lt;/project&gt;" />

                                <limit maxwait="60">
                                    <exec executable="${glassfish.asadmin}" dir="${glassfish.home}/glassfish/bin">
                                        <arg value="delete-domain"/>
                                        <arg value="domain1" />
                                    </exec>
                                    <exec executable="${glassfish.asadmin}" dir="${glassfish.home}/glassfish/bin">
                                        <arg value="create-domain"/>
                                        <arg value="--domainproperties=domain.adminPort=${port.admin}:domain.instancePort=${port.http}:http.ssl.port=${port.https}:jms.port=${port.jms}:domain.jmxPort=${port.jmx}:orb.listener.port=${port.orb}:orb.ssl.port=${port.orb.ssl}:orb.mutualauth.port=${port.orb.mutual}" />
                                        <arg value="--user=admin" />
                                        <arg value="--nopassword" />
                                        <arg value="domain1" />
                                    </exec>
                                    <exec executable="${glassfish.asadmin}" dir="${glassfish.home}/glassfish/bin">
                                        <arg value="start-domain"/>
                                    </exec>

                                    <if>
                                        <isset property="jacoco.version" />
                                        <then>
                                            <exec executable="${glassfish.asadmin}" dir="${glassfish.home}/glassfish/bin">
                                                <arg value="create-jvm-options" />
                                                <arg value="--port=${port.admin}" />
                                                <arg value="&quot;-javaagent\:${settings.localRepository}/org/jacoco/org.jacoco.agent/${jacoco.version}/org.jacoco.agent-${jacoco.version}-runtime.jar=destfile=${project.build.directory}/jacoco-it.exec,includes=${jacoco.includes}&quot;" />
                                            </exec>
                                        </then>
                                    </if>
                                    <exec executable="${glassfish.asadmin}" dir="${glassfish.home}/glassfish/bin">
                                        <arg value="stop-domain"/>
                                        <arg value="domain1"/>
                                    </exec>
                                </limit>
                                <mkdir dir="${tck.home}/jacctckreport"/>
                                <mkdir dir="${tck.home}/jacctckreport/jacctck"/>
                                
                                <replace file="${tck.home}/bin/xml/ts.top.import.xml">
                                  <replacetoken><![CDATA[<jvmarg value="-Xmx512m"/>]]></replacetoken>
                                  <replacevalue><![CDATA[<jvmarg value="-Xmx512m"/>
                                <jvmarg value="-Djavatest.security.noSecurityManager=true"/>]]></replacevalue>
                                </replace>
                                
                                <replace file="${tck.home}/bin/xml/ts.top.import.xml" if:set="suspend-tck" >
                                  <replacetoken><![CDATA[<jvmarg value="-Xmx512m"/>]]></replacetoken>
                                  <replacevalue><![CDATA[<jvmarg value="-Xmx512m"/>
                                <jvmarg value="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=9008"/>]]></replacevalue>
                                </replace>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>

                    <execution>
                        <id>configure-tck-tests</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <target>
                                <taskdef resource="net/sf/antcontrib/antcontrib.properties"
                                         classpathref="maven.plugin.classpath" />
                                <limit maxwait="20">
                                    <exec executable="${glassfish.asadmin}" dir="${glassfish.home}/glassfish/bin">
                                        <arg value="start-domain"/>
                                    </exec>
                                </limit>
                                <exec executable="${ant.home}/bin/ant" dir="${tck.home}/bin">
                                    <arg value="config.vi" />
                                    <env key="tck.home" value="${tck.home}"/>
                                </exec>
                                <exec executable="${ant.home}/bin/ant" dir="${tck.home}/bin">
                                    <arg value="enable.jacc"  />
                                    <env key="tck.home" value="${tck.home}"/>
                                </exec>
                            </target>
                        </configuration>
                    </execution>

                     <execution>
                        <id>run-tck-tests</id>
                        <phase>integration-test</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <target xmlns:if="ant:if" xmlns:unless="ant:unless">
                                <taskdef resource="net/sf/antcontrib/antcontrib.properties"
                                         classpathref="maven.plugin.classpath" />

                                <echo level="info" message="Start running all tests" />
                                <exec executable="${ant.home}/bin/ant" dir="${tck.tests.home}" resultproperty="testResult">
                                    <arg value="-Dmultiple.tests=${run.test}" if:set="run.test" />
                                    <arg value="deploy"/>
                                    <arg value="run.all"/>
                                    <env key="LC_ALL" value="C" />
                                </exec>

                                <if>
                                    <not>
                                        <equals arg1="${testResult}" arg2="0" />
                                    </not>
                                    <then>
                                        <echo message="Running tests failed." />
                                        <loadfile property="contents" srcFile="${glassfish.home}/glassfish/domains/domain1/logs/server.log" />
                                        <echo message="${contents}" />
                                    </then>
                                </if>

                                <exec executable="${glassfish.asadmin}" dir="${glassfish.home}/glassfish/bin">
                                    <arg value="stop-domain" />
                                </exec>
                            </target>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
