# 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.

trigger:
  branches:
    include:
      - '*'  # must quote since "*" is a YAML reserved character; we want a string

pool:
  vmImage: 'ubuntu-18.04'

variables:
  MAVEN_OPTS: '-Dcheckstyle.skip=true -Drat.skip=true -Djacoco.skip=true'
  SPARK_VERSION: '2.4.4'
  HADOOP_VERSION: '2.7'
  SPARK_ARCHIVE: spark-$(SPARK_VERSION)-bin-hadoop$(HADOOP_VERSION)
  EXCLUDE_TESTED_MODULES: '!hudi-examples/hudi-examples-common,!hudi-examples/hudi-examples-flink,!hudi-examples/hudi-examples-java,!hudi-examples/hudi-examples-spark,!hudi-common,!hudi-flink-datasource/hudi-flink,!hudi-client/hudi-spark-client,!hudi-client/hudi-client-common,!hudi-client/hudi-flink-client,!hudi-client/hudi-java-client,!hudi-cli,!hudi-utilities,!hudi-sync/hudi-hive-sync'

stages:
  - stage: test
    jobs:
      - job: UT_FT_1
        displayName: UT FT common & flink & UT client/spark-client
        timeoutInMinutes: '90'
        steps:
          - task: Maven@3
            displayName: maven install
            inputs:
              mavenPomFile: 'pom.xml'
              goals: 'clean install'
              options: -T 2.5C -DskipTests
              publishJUnitResults: false
              jdkVersionOption: '1.8'
              mavenOptions: '-Xmx4g $(MAVEN_OPTS)'
          - task: Maven@3
            displayName: UT common flink client/spark-client
            inputs:
              mavenPomFile: 'pom.xml'
              goals: 'test'
              options: -Punit-tests -pl hudi-common,hudi-flink-datasource/hudi-flink,hudi-client/hudi-spark-client
              publishJUnitResults: false
              jdkVersionOption: '1.8'
              mavenOptions: '-Xmx4g $(MAVEN_OPTS)'
          - task: Maven@3
            displayName: FT common flink
            inputs:
              mavenPomFile: 'pom.xml'
              goals: 'test'
              options: -Pfunctional-tests -pl hudi-common,hudi-flink-datasource/hudi-flink
              publishJUnitResults: false
              jdkVersionOption: '1.8'
              mavenOptions: '-Xmx4g $(MAVEN_OPTS)'
      - job: UT_FT_2
        displayName: FT client/spark-client
        timeoutInMinutes: '90'
        steps:
          - task: Maven@3
            displayName: maven install
            inputs:
              mavenPomFile: 'pom.xml'
              goals: 'clean install'
              options: -T 2.5C -DskipTests
              publishJUnitResults: false
              jdkVersionOption: '1.8'
              mavenOptions: '-Xmx4g $(MAVEN_OPTS)'
          - task: Maven@3
            displayName: FT client/spark-client
            inputs:
              mavenPomFile: 'pom.xml'
              goals: 'test'
              options: -Pfunctional-tests -pl hudi-client/hudi-spark-client
              publishJUnitResults: false
              jdkVersionOption: '1.8'
              mavenOptions: '-Xmx4g $(MAVEN_OPTS)'
      - job: UT_FT_3
        displayName: UT FT clients & cli & utilities & sync/hive-sync
        timeoutInMinutes: '90'
        steps:
          - task: Maven@3
            displayName: maven install
            inputs:
              mavenPomFile: 'pom.xml'
              goals: 'clean install'
              options: -T 2.5C -DskipTests
              publishJUnitResults: false
              jdkVersionOption: '1.8'
              mavenOptions: '-Xmx4g $(MAVEN_OPTS)'
          - task: Maven@3
            displayName: UT clients & cli & utilities & sync/hive-sync
            inputs:
              mavenPomFile: 'pom.xml'
              goals: 'test'
              options: -Punit-tests -pl hudi-client/hudi-client-common,hudi-client/hudi-flink-client,hudi-client/hudi-java-client,hudi-cli,hudi-utilities,hudi-sync/hudi-hive-sync
              publishJUnitResults: false
              jdkVersionOption: '1.8'
              mavenOptions: '-Xmx4g $(MAVEN_OPTS)'
          - task: Maven@3
            displayName: FT clients & cli & utilities & sync/hive-sync
            inputs:
              mavenPomFile: 'pom.xml'
              goals: 'test'
              options: -Pfunctional-tests -pl hudi-client/hudi-client-common,hudi-client/hudi-flink-client,hudi-client/hudi-java-client,hudi-cli,hudi-utilities,hudi-sync/hudi-hive-sync
              publishJUnitResults: false
              jdkVersionOption: '1.8'
              mavenOptions: '-Xmx4g $(MAVEN_OPTS)'
      - job: UT_FT_4
        displayName: UT FT other modules
        timeoutInMinutes: '90'
        steps:
          - task: Maven@3
            displayName: maven install
            inputs:
              mavenPomFile: 'pom.xml'
              goals: 'clean install'
              options: -T 2.5C -DskipTests
              publishJUnitResults: false
              jdkVersionOption: '1.8'
              mavenOptions: '-Xmx4g $(MAVEN_OPTS)'
          - task: Maven@3
            displayName: UT other modules
            inputs:
              mavenPomFile: 'pom.xml'
              goals: 'test'
              options: -Punit-tests -pl $(EXCLUDE_TESTED_MODULES)
              publishJUnitResults: false
              jdkVersionOption: '1.8'
              mavenOptions: '-Xmx4g $(MAVEN_OPTS)'
          - task: Maven@3
            displayName: FT other modules
            inputs:
              mavenPomFile: 'pom.xml'
              goals: 'test'
              options: -Pfunctional-tests -pl $(EXCLUDE_TESTED_MODULES)
              publishJUnitResults: false
              jdkVersionOption: '1.8'
              mavenOptions: '-Xmx4g $(MAVEN_OPTS)'
      - job: IT
        displayName: IT modules
        timeoutInMinutes: '90'
        steps:
          - task: AzureCLI@2
            displayName: Prepare for IT
            inputs:
              azureSubscription: apachehudici-service-connection
              scriptType: bash
              scriptLocation: inlineScript
              inlineScript: |
                echo 'Downloading $(SPARK_ARCHIVE)'
                az storage blob download -c ci-caches -n $(SPARK_ARCHIVE).tgz -f $(Pipeline.Workspace)/$(SPARK_ARCHIVE).tgz --account-name apachehudici
                tar -xvf $(Pipeline.Workspace)/$(SPARK_ARCHIVE).tgz -C $(Pipeline.Workspace)/
                mkdir /tmp/spark-events/
          - script: |
              mvn $(MAVEN_OPTS) -Pintegration-tests verify
            displayName: IT
