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

language: java
os: linux
dist: bionic
arch: amd64
jdk:
  - openjdk11
cache:
  bundler: false
  cargo: false
  directories:
    - '$HOME/.m2'
git:
  depth: 2
env:
  global:
  - MAVEN_OPTS="-Xmx4096M -Xss128M -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -noverify"
  - JAVAEE_CONTAINER=Tomcat
  - DBMS=H2
  - jaxrsContentType=application/json
  - TestCommand="mvn -U -T 1C clean test -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Dsass.skip=true"
before_install:
- wget https://github.com/sormuras/bach/raw/master/install-jdk.sh -O ~/install-jdk.sh && chmod +x ~/install-jdk.sh
install: true
notifications:
  email:
    - dev@syncope.apache.org
stages:
  - build
  - validate
  - test
  - fit
jobs:
  include:
    - stage: build
      name: "Build"
      script: mvn -U --quiet -T 1C -P skipTests,all
      #######################################################
    - stage: validate
      name: "Checkstyle, Legal Files, Modernizer and Release Audit Tool (RAT) Analysis"
      script: mvn -T 1C checkstyle:check ianal:verify-legal-files modernizer:modernizer apache-rat:check
      ######################################################
    - stage: test
      name: "Unit Tests via JDK 11"
      script: eval $TestCommand
    - stage: test
      name: "Unit Tests via JDK 14"
      script: 
      - ~/install-jdk.sh --target "/home/travis/openjdk14" --workspace "/home/travis/.cache/install-jdk" --feature "14" --license "GPL" --cacerts
      - export JAVA_HOME=~/openjdk14
      - export PATH="$JAVA_HOME/bin:$PATH"
      - eval $TestCommand
    - stage: test
      name: "Unit Tests via JDK 15"
      script: 
      - ~/install-jdk.sh --target "/home/travis/openjdk15" --workspace "/home/travis/.cache/install-jdk" --feature "15" --license "GPL" --cacerts
      - export JAVA_HOME=~/openjdk15
      - export PATH="$JAVA_HOME/bin:$PATH"
      - eval $TestCommand
    - stage: test
      name: "Persistence Unit Tests via JDK 11: PostgreSQL (JSONB)"
      script: mvn -f core/persistence-jpa-json/pom.xml -P postgres -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Dsass.skip=true
    - stage: test
      name: "Persistence Unit Tests via JDK 11: MySQL (JSON)"
      script: mvn -f core/persistence-jpa-json/pom.xml -P mysql -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Dsass.skip=true
      ######################################################
    - stage: fit
      name: "Integration Tests: Tomcat / H2 / JSON Content-Type"
      script: mvn -f fit/core-reference/pom.xml verify -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    - stage: fit
      name: "Integration Tests: Tomcat / H2 / XML Content-Type"
      script: mvn -f fit/core-reference/pom.xml verify -Djaxrs.content.type=application/xml -Dit.test=org.apache.syncope.fit.core.*ITCase -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    - stage: fit
      name: "Integration Tests: Tomcat / H2 / YAML Content-Type"
      script: mvn -f fit/core-reference/pom.xml verify -Djaxrs.content.type=application/yaml -Dit.test=org.apache.syncope.fit.core.*ITCase -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    - stage: fit
      name: "Integration Tests: Wildfly / H2 / JSON Content-Type"
      script: mvn -f fit/core-reference/pom.xml -P wildfly-it -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    - stage: fit
      name: "Integration Tests: Payara / H2 / JSON Content-Type"
      script: mvn -f fit/core-reference/pom.xml -P payara-it -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    - stage: fit
      name: "Integration Tests: Tomcat / PostgreSQL / JSON Content-Type"
      script: mvn -f fit/core-reference/pom.xml -P postgres-it -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    - stage: fit
      name: "Integration Tests: Tomcat / PostgreSQL (JSONB) / JSON Content-Type"
      script: mvn -f fit/core-reference/pom.xml -P pgjsonb-it -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    - stage: fit
      name: "Integration Tests: Tomcat / MySQL / JSON Content-Type"
      script: mvn -f fit/core-reference/pom.xml -P mysql-it -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    - stage: fit
      name: "Integration Tests: Tomcat / MySQL (JSON) / JSON Content-Type"
      script: mvn -f fit/core-reference/pom.xml -P myjson-it -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    - stage: fit
      name: "Integration Tests: Tomcat / MariaDB / JSON Content-Type"
      script: mvn -f fit/core-reference/pom.xml -P mariadb-it -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    - stage: fit
      name: "Integration Tests: Tomcat / H2 / JSON Content-Type + Elasticsearch"
      script: mvn -f fit/core-reference/pom.xml -P elasticsearch-it -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    - stage: fit
      name: "Integration Tests: Tomcat / H2 / JSON Content-Type + Zookeeper"
      script: mvn -f fit/core-reference/pom.xml -P zookeeper-it -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    - stage: fit
      name: "Integration Tests: SRA and WA"
      script: mvn -f fit/wa-reference/pom.xml verify -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Dianal.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true
    #####################################################
