<?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>
    <artifactId>acceptance-tests</artifactId>
    <groupId>org.apache.servicecomb.pack</groupId>
    <version>${revision}</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <name>Pack:Acceptance Tests::Dubbo</name>
  <artifactId>acceptance-pack-dubbo-demo</artifactId>

  <dependencies>
    <dependency>
      <groupId>org.apache.servicecomb.pack</groupId>
      <artifactId>acceptance-test-common</artifactId>
      <type>test-jar</type>
    </dependency>
  </dependencies>

  <profiles>
    <profile>
      <id>docker</id>
      <activation>
        <file>
          <exists>/var/run/docker.sock</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>io.fabric8</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <configuration>
              <images>
                <image>
                  <name>zookeeper</name>
                  <alias>zookeeper</alias>
                  <run>
                    <ports>
                      <port>zk.port:2181</port>
                    </ports>
                  </run>
                </image>
                <image>
                  <name>postgres</name>
                  <alias>postgres</alias>
                  <run>
                    <env>
                      <POSTGRES_DB>saga</POSTGRES_DB>
                      <POSTGRES_USER>saga</POSTGRES_USER>
                      <POSTGRES_PASSWORD>password</POSTGRES_PASSWORD>
                    </env>
                    <wait>
                      <log>database system is ready to accept connections</log>
                      <tcp>
                        <ports>
                          <port>5432</port>
                        </ports>
                      </tcp>
                      <time>60000</time>
                    </wait>
                    <ports>
                      <port>postgres.port:5432</port>
                    </ports>
                  </run>
                </image>
                <image>
                  <name>alpha-server:${project.version}</name>
                  <alias>alpha</alias>
                  <run>
                    <env>
                      <spring.profiles.active>prd,test</spring.profiles.active>
                      <alpha.spec.names>saga-db</alpha.spec.names>
                    </env>
                    <links>
                      <link>postgres:postgresql.servicecomb.io</link>
                    </links>
                    <wait>
                      <log>Started [a-zA-Z]+ in [0-9.]+ seconds</log>
                      <tcp>
                        <ports>
                          <port>8080</port>
                          <port>8090</port>
                        </ports>
                      </tcp>
                      <time>120000</time>
                    </wait>
                    <ports>
                      <port>alpha.port:8080</port>
                      <port>alpha.rest.port:8090</port>
                    </ports>
                    <dependsOn>
                      <container>postgres</container>
                    </dependsOn>
                  </run>
                </image>
                <image>
                  <name>servicea:${project.version}</name>
                  <alias>servicea</alias>
                  <run>
                    <env>
                      <JAVA_OPTS>
                        -Dspring.profiles.active=prd
                        -Dspring.datasource.url=jdbc:postgresql://postgresql.servicecomb.io:5432/saga
                        -Dspring.datasource.username=saga
                        -Dspring.datasource.password=password
                        -Dzookeeper.url=zookeeper.servicecomb.io:2181
                        -Dserver.port=8071
                        -Dalpha.cluster.address=alpha-server.servicecomb.io:8080
                        -Dspring.datasource.initialization-mode=always
                      </JAVA_OPTS>
                      <omega.spec.names>saga</omega.spec.names>
                    </env>
                    <wait>
                      <log>Started [a-zA-Z]+ in [0-9.]+ seconds</log>
                      <tcp>
                        <ports>
                          <port>8071</port>
                        </ports>
                      </tcp>
                      <time>120000</time>
                    </wait>
                    <links>
                      <link>postgres:postgresql.servicecomb.io</link>
                      <link>alpha:alpha-server.servicecomb.io</link>
                      <link>zookeeper:zookeeper.servicecomb.io</link>
                    </links>
                    <ports>
                      <port>servicea.port:8071</port>
                    </ports>
                    <dependsOn>
                      <container>postgres</container>
                      <container>alpha</container>
                      <container>zookeeper</container>
                    </dependsOn>
                  </run>
                </image>
                <image>
                  <name>serviceb:${project.version}</name>
                  <alias>serviceb</alias>
                  <run>
                    <env>
                      <JAVA_OPTS>
                        -Dspring.profiles.active=prd
                        -Dspring.datasource.url=jdbc:postgresql://postgresql.servicecomb.io:5432/saga
                        -Dspring.datasource.username=saga
                        -Dspring.datasource.password=password
                        -Dzookeeper.url=zookeeper.servicecomb.io:2181
                        -Dserver.port=8072
                        -Dalpha.cluster.address=alpha-server.servicecomb.io:8080
                        -Dspring.datasource.initialization-mode=always
                      </JAVA_OPTS>
                      <omega.spec.names>saga</omega.spec.names>
                    </env>
                    <wait>
                      <log>Started [a-zA-Z]+ in [0-9.]+ seconds</log>
                      <tcp>
                        <ports>
                          <port>8072</port>
                        </ports>
                      </tcp>
                      <time>120000</time>
                    </wait>
                    <links>
                      <link>postgres:postgresql.servicecomb.io</link>
                      <link>alpha:alpha-server.servicecomb.io</link>
                      <link>zookeeper:zookeeper.servicecomb.io</link>
                    </links>
                    <ports>
                      <port>serviceb.port:8072</port>
                    </ports>
                    <dependsOn>
                      <container>postgres</container>
                      <container>alpha</container>
                      <container>zookeeper</container>
                    </dependsOn>
                  </run>
                </image>
                <image>
                  <name>servicec:${project.version}</name>
                  <alias>servicec</alias>
                  <run>
                    <env>
                      <JAVA_OPTS>
                        -Dspring.profiles.active=prd
                        -Dspring.datasource.url=jdbc:postgresql://postgresql.servicecomb.io:5432/saga
                        -Dspring.datasource.username=saga
                        -Dspring.datasource.password=password
                        -Dzookeeper.url=zookeeper.servicecomb.io:2181
                        -Dserver.port=8073
                        -Dalpha.cluster.address=alpha-server.servicecomb.io:8080
                        -Dspring.datasource.initialization-mode=always
                      </JAVA_OPTS>
                      <omega.spec.names>saga</omega.spec.names>
                    </env>
                    <wait>
                      <log>Started [a-zA-Z]+ in [0-9.]+ seconds</log>
                      <tcp>
                        <ports>
                          <port>8073</port>
                        </ports>
                      </tcp>
                      <time>120000</time>
                    </wait>
                    <links>
                      <link>postgres:postgresql.servicecomb.io</link>
                      <link>alpha:alpha-server.servicecomb.io</link>
                      <link>zookeeper:zookeeper.servicecomb.io</link>
                    </links>
                    <ports>
                      <port>servicec.port:8073</port>
                    </ports>
                    <dependsOn>
                      <container>postgres</container>
                      <container>alpha</container>
                      <container>zookeeper</container>
                    </dependsOn>
                  </run>
                </image>
              </images>
            </configuration>
            <executions>
              <execution>
                <id>start</id>
                <phase>pre-integration-test</phase>
                <goals>
                  <goal>start</goal>
                </goals>
              </execution>
              <execution>
                <id>stop</id>
                <phase>post-integration-test</phase>
                <goals>
                  <goal>stop</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.codehaus.gmaven</groupId>
            <artifactId>gmaven-plugin</artifactId>
            <executions>
              <execution>
                <id>add-default-properties</id>
                <phase>initialize</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <source>
                    project.properties.setProperty('docker.hostname', 'localhost')
                    log.info("Docker hostname is " + project.properties['docker.hostname'])
                  </source>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <configuration>
              <systemPropertyVariables>
                <alpha.cluster.address>
                  http://${docker.hostname}:${alpha.port}
                </alpha.cluster.address>
                <alpha.rest.address>
                  http://${docker.hostname}:${alpha.rest.port}
                </alpha.rest.address>
                <servicea.address>
                  http://${docker.hostname}:${servicea.port}
                </servicea.address>
                <serviceb.address>
                  http://${docker.hostname}:${serviceb.port}
                </serviceb.address>
                <servicec.address>
                  http://${docker.hostname}:${servicec.port}
                </servicec.address>
                <spring.datasource.url>
                  jdbc:postgresql://${docker.hostname}:${postgres.port}/saga?useSSL=false
                </spring.datasource.url>
                <info.service.uri>
                  ${info.service.uri}
                </info.service.uri>
              </systemPropertyVariables>
              <argLine>${jacoco.failsafe.argLine}</argLine>
            </configuration>
            <executions>
              <execution>
                <goals>
                  <goal>integration-test</goal>
                  <goal>verify</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>com.ethlo.persistence.tools</groupId>
            <artifactId>eclipselink-maven-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>


</project>
