<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2017 Huawei Technologies Co., Ltd
  ~
  ~ Licensed 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>conditional-transaction-demo</artifactId>
    <groupId>io.servicecomb.saga.demo</groupId>
    <version>0.0.2</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <artifactId>conditional-transaction-demo-tests</artifactId>

  <dependencies>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <groupId>io.rest-assured</groupId>
      <artifactId>rest-assured</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.codehaus.groovy</groupId>
      <artifactId>groovy-all</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>io.fabric8</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <configuration>
          <images>
            <image>
              <name>mysql/mysql-server:5.7</name>
              <alias>mysql</alias>
              <run>
                <env>
                  <MYSQL_ROOT_PASSWORD>password</MYSQL_ROOT_PASSWORD>
                  <MYSQL_DATABASE>saga</MYSQL_DATABASE>
                  <MYSQL_USER>saga</MYSQL_USER>
                  <MYSQL_PASSWORD>password</MYSQL_PASSWORD>
                </env>
                <wait>
                  <log>Starting MySQL 5.7</log>
                  <tcp>
                    <ports>
                      <port>3306</port>
                    </ports>
                  </tcp>
                  <time>60000</time>
                </wait>
                <ports>
                  <port>mysql.port:3306</port>
                </ports>
              </run>
            </image>
            <image>
              <name>payment:${project.version}</name>
              <alias>payment</alias>
              <run>
                <env>
                  <JAVA_OPTS />
                </env>
                <wait>
                  <log>Tomcat started on port</log>
                  <tcp>
                    <ports>
                      <port>8080</port>
                    </ports>
                  </tcp>
                  <time>120000</time>
                </wait>
                <ports>
                  <port>payment.port:8080</port>
                </ports>
              </run>
            </image>
            <image>
              <name>membership:${project.version}</name>
              <alias>membership</alias>
              <run>
                <env>
                  <JAVA_OPTS />
                </env>
                <wait>
                  <log>Tomcat started on port</log>
                  <tcp>
                    <ports>
                      <port>8080</port>
                    </ports>
                  </tcp>
                  <time>120000</time>
                </wait>
                <ports>
                  <port>membership.port:8080</port>
                </ports>
              </run>
            </image>
            <image>
              <name>inventory:${project.version}</name>
              <alias>inventory</alias>
              <run>
                <env>
                  <JAVA_OPTS />
                </env>
                <wait>
                  <log>Tomcat started on port</log>
                  <tcp>
                    <ports>
                      <port>8080</port>
                    </ports>
                  </tcp>
                  <time>120000</time>
                </wait>
                <ports>
                  <port>inventory.port:8080</port>
                </ports>
              </run>
            </image>
            <image>
              <name>supplier:${project.version}</name>
              <alias>supplier</alias>
              <run>
                <env>
                  <JAVA_OPTS />
                </env>
                <wait>
                  <log>Tomcat started on port</log>
                  <tcp>
                    <ports>
                      <port>8080</port>
                    </ports>
                  </tcp>
                  <time>120000</time>
                </wait>
                <ports>
                  <port>supplier.port:8080</port>
                </ports>
              </run>
            </image>
            <image>
              <name>saga-spring:${project.version}</name>
              <alias>saga</alias>
              <run>
                <env>
                  <JAVA_OPTS>
                    -Dspring.profiles.active=prd -Dspring.main.webEnvironment=true
                  </JAVA_OPTS>
                </env>
                <links>
                  <link>mysql:mysql.servicecomb.io</link>
                  <link>payment:payment.servicecomb.io</link>
                  <link>membership:membership.servicecomb.io</link>
                  <link>inventory:inventory.servicecomb.io</link>
                  <link>supplier:supplier.servicecomb.io</link>
                </links>
                <wait>
                  <log>Tomcat started on port</log>
                  <tcp>
                    <ports>
                      <port>8080</port>
                    </ports>
                  </tcp>
                  <time>120000</time>
                </wait>
                <ports>
                  <port>saga.port:8080</port>
                </ports>
                <dependsOn>
                  <dependsOn>mysql</dependsOn>
                </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>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>docker</id>
      <build>
        <plugins>
          <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>
            <version>2.19.1</version>
            <configuration>
              <systemPropertyVariables>
                <saga.address>
                  http://${docker.hostname}:${saga.port}
                </saga.address>
              </systemPropertyVariables>
              <argLine>${jacoco.failsafe.argLine}</argLine>
            </configuration>
            <executions>
              <execution>
                <goals>
                  <goal>integration-test</goal>
                  <goal>verify</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>docker-machine</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.gmaven</groupId>
            <artifactId>gmaven-plugin</artifactId>
            <executions>
              <execution>
                <id>add-dynamic-properties</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <source>
                    def process = "docker-machine ip default".execute()
                    process.waitFor()
                    project.properties.setProperty('docker.hostname', process.in.text.trim())

                    log.info("Docker hostname is " + project.properties['docker.hostname'])
                  </source>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
