version: 2.1

default_env_vars: &default_env_vars
    JAVA8_HOME: /usr/lib/jvm/java-8-openjdk-amd64
    ANT_HOME: /usr/share/ant
    LANG: en_US.UTF-8
    KEEP_TEST_DIR: true
    DEFAULT_DIR: /home/cassandra/cassandra-dtest
    PYTHONIOENCODING: utf-8
    PYTHONUNBUFFERED: true
    CASS_DRIVER_NO_EXTENSIONS: true
    CASS_DRIVER_NO_CYTHON: true
    #Skip all syncing to disk to avoid performance issues in flaky CI environments
    CASSANDRA_SKIP_SYNC: true
    DTEST_REPO: git://github.com/apache/cassandra-dtest.git
    DTEST_BRANCH: master
    CCM_MAX_HEAP_SIZE: 1024M
    CCM_HEAP_NEWSIZE: 256M

j8_par_executor: &j8_par_executor
  executor:
    name: java8-executor
    #exec_resource_class: xlarge
  parallelism: 4

j8_small_par_executor: &j8_small_par_executor
  executor:
    name: java8-executor
    #exec_resource_class: xlarge
  parallelism: 1

j8_medium_par_executor: &j8_medium_par_executor
  executor:
    name: java8-executor
    #exec_resource_class: xlarge
  parallelism: 1

j8_seq_executor: &j8_seq_executor
  executor:
    name: java8-executor
    #exec_resource_class: xlarge
  parallelism: 1 # sequential, single container tests: no parallelism benefits

with_dtests_jobs: &with_dtest_jobs
        jobs:
            - build
            # Java 8 unit tests will be run automatically
            - j8_unit_tests:
                requires:
                  - build
            - j8_jvm_dtests:
                requires:
                  - build
            # specialized unit tests (all run on request using Java 8)
            - start_utests_long:
                type: approval
                requires:
                  - build
            - utests_long:
                requires:
                  - start_utests_long
            - start_utests_compression:
                type: approval
                requires:
                  - build
            - utests_compression:
                requires:
                  - start_utests_compression
            - start_jvm_upgrade_dtest:
                type: approval
            - j8_dtest_jars_build:
                requires:
                  - build
                  - start_jvm_upgrade_dtest
            - j8_jvm_upgrade_dtests:
                requires:
                  - j8_dtest_jars_build
            # Java 8 dtests (on request)
            - start_j8_dtests:
                type: approval
                requires:
                  - build
            - j8_dtests-with-vnodes:
                requires:
                  - start_j8_dtests
            - j8_dtests-no-vnodes:
                requires:
                  - start_j8_dtests
            # Java 8 upgrade tests
            - start_upgrade_tests:
                type: approval
                requires:
                  - build
            - j8_upgradetests-no-vnodes:
                requires:
                  - start_upgrade_tests

with_dtest_jobs_only: &with_dtest_jobs_only
        jobs:
            - build
            - j8_dtests-with-vnodes:
                  requires:
                      - build
            - j8_dtests-no-vnodes:
                  requires:
                      - build

workflows:
    version: 2
    build_and_run_tests: *with_dtest_jobs
    #build_and_run_tests: *with_dtest_jobs_only

executors:
  java8-executor:
    parameters:
      exec_resource_class:
        type: string
        default: medium
    docker:
      - image: spod/cassandra-testing-ubuntu1810-java11-w-dependencies:20190306
    resource_class: << parameters.exec_resource_class >>
    working_directory: ~/
    shell: /bin/bash -eo pipefail -l
    environment:
      <<: *default_env_vars
      JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64
      JDK_HOME: /usr/lib/jvm/java-8-openjdk-amd64

jobs:
  build:
    executor: java8-executor
    parallelism: 1 # This job doesn't benefit from parallelism
    steps:
      - log_environment
      - clone_cassandra
      - build_cassandra
      - run_eclipse_warnings
      - persist_to_workspace:
            root: /home/cassandra
            paths:
                - cassandra
                - .m2

  j8_dtest_jars_build:
    executor: java8-executor
    parallelism: 1
    steps:
      - attach_workspace:
          at: /home/cassandra
      - build_cassandra_dtest_jars
      - persist_to_workspace:
          root: /home/cassandra
          paths:
            - dtest_jars

  j8_unit_tests:
    <<: *j8_par_executor
    steps:
      - attach_workspace:
          at: /home/cassandra
      - create_junit_containers
      - log_environment
      - run_parallel_junit_tests

  j8_jvm_dtests:
    <<: *j8_seq_executor
    steps:
      - attach_workspace:
          at: /home/cassandra
      - create_junit_containers:
          classlistprefix: distributed
          extra_filters: "| grep -v upgrade"
      - log_environment
      - run_parallel_junit_tests:
          classlistprefix: distributed

  j8_jvm_upgrade_dtests:
    <<: *j8_seq_executor
    steps:
      - attach_workspace:
          at: /home/cassandra
      - create_junit_containers:
          classlistprefix: distributed
          extra_filters: "| grep upgrade"
      - log_environment
      - run_parallel_junit_tests:
          classlistprefix: distributed

  utests_long:
    <<: *j8_seq_executor
    steps:
      - attach_workspace:
          at: /home/cassandra
      - run_junit_tests:
          target: long-test

  utests_compression:
    <<: *j8_par_executor
    steps:
      - attach_workspace:
          at: /home/cassandra
      - create_junit_containers
      - log_environment
      - run_parallel_junit_tests:
          target: testclasslist-compression

  j8_dtests-with-vnodes:
    <<: *j8_par_executor
    steps:
      - attach_workspace:
          at: /home/cassandra
      - clone_dtest
      - create_venv
      - create_dtest_containers:
          file_tag: j8_with_vnodes
          run_dtests_extra_args: '--use-vnodes --skip-resource-intensive-tests'
      - run_dtests:
          file_tag: j8_with_vnodes
          pytest_extra_args: '--use-vnodes --num-tokens=32 --skip-resource-intensive-tests'

  j8_dtests-no-vnodes:
    <<: *j8_par_executor
    steps:
      - attach_workspace:
          at: /home/cassandra
      - clone_dtest
      - create_venv
      - create_dtest_containers:
          file_tag: j8_without_vnodes
          run_dtests_extra_args: '--skip-resource-intensive-tests'
      - run_dtests:
          file_tag: j8_without_vnodes
          pytest_extra_args: '--skip-resource-intensive-tests'

  j8_upgradetests-no-vnodes:
    <<: *j8_par_executor
    steps:
      - attach_workspace:
          at: /home/cassandra
      - clone_dtest
      - create_venv
      - create_dtest_containers:
          file_tag: j8_upgradetests_without_vnodes
          run_dtests_extra_args: '--execute-upgrade-tests'
          extra_env_args: 'RUN_STATIC_UPGRADE_MATRIX=true'
          tests_filter_pattern: '^upgrade_tests'
      - run_dtests:
          file_tag: j8_upgradetests_without_vnodes
          extra_env_args: 'RUN_STATIC_UPGRADE_MATRIX=true'
          pytest_extra_args: '--execute-upgrade-tests'

commands:
  log_environment:
    steps:
    - run:
        name: Log Environment Information
        command: |
          echo '*** id ***'
          id
          echo '*** cat /proc/cpuinfo ***'
          cat /proc/cpuinfo
          echo '*** free -m ***'
          free -m
          echo '*** df -m ***'
          df -m
          echo '*** ifconfig -a ***'
          ifconfig -a
          echo '*** uname -a ***'
          uname -a
          echo '*** mount ***'
          mount
          echo '*** env ***'
          env
          echo '*** java ***'
          which java
          java -version

  clone_cassandra:
    steps:
    - run:
        name: Clone Cassandra Repository (via git)
        command: |
          git clone --single-branch --depth 1 --branch $CIRCLE_BRANCH git://github.com/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME.git ~/cassandra

  clone_dtest:
    steps:
    - run:
        name: Clone Cassandra dtest Repository (via git)
        command: |
          git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest

  build_cassandra:
    steps:
    - run:
        name: Build Cassandra
        command: |
          export PATH=$JAVA_HOME/bin:$PATH
          cd ~/cassandra
          # Loop to prevent failure due to maven-ant-tasks not downloading a jar..
          for x in $(seq 1 3); do
              ${ANT_HOME}/bin/ant clean jar
              RETURN="$?"
              if [ "${RETURN}" -eq "0" ]; then
                  break
              fi
          done
          # Exit, if we didn't build successfully
          if [ "${RETURN}" -ne "0" ]; then
              echo "Build failed with exit code: ${RETURN}"
              exit ${RETURN}
          fi
        no_output_timeout: 15m

  build_cassandra_dtest_jars:
    steps:
    - run:
        name: Build Cassandra DTest jars
        command: |
          export PATH=$JAVA_HOME/bin:$PATH
          cd ~/cassandra
          git remote add apache git://github.com/apache/cassandra.git
          for branch in cassandra-2.2 cassandra-3.0 cassandra-3.11 trunk; do
            # check out the correct cassandra version:
            git remote set-branches --add apache '$branch'
            git fetch --depth 1 apache $branch
            git checkout $branch
            # Loop to prevent failure due to maven-ant-tasks not downloading a jar..
            for x in $(seq 1 3); do
                ${ANT_HOME}/bin/ant clean jar dtest-jar
                RETURN="$?"
                if [ "${RETURN}" -eq "0" ]; then
                    break
                fi
            done
            # Exit, if we didn't build successfully
            if [ "${RETURN}" -ne "0" ]; then
                echo "Build failed with exit code: ${RETURN}"
                exit ${RETURN}
            fi
          done
          # and build the dtest-jar for the branch under test
          git checkout origin/$CIRCLE_BRANCH
          for x in $(seq 1 3); do
              ${ANT_HOME}/bin/ant clean jar dtest-jar
              RETURN="$?"
              if [ "${RETURN}" -eq "0" ]; then
                  break
              fi
          done
          mkdir ~/dtest_jars
          cp build/dtest*.jar ~/dtest_jars
          ls -l ~/dtest_jars
        no_output_timeout: 15m

  run_eclipse_warnings:
    steps:
    - run:
        name: Run eclipse-warnings
        command: |
          export PATH=$JAVA_HOME/bin:$PATH
          cd ~/cassandra
          ant eclipse-warnings

  create_junit_containers:
    parameters:
      classlistprefix:
        type: string
        default: unit
      extra_filters:
        type: string
        default: ""
    steps:
    - run:
        name: Determine <<parameters.classlistprefix>> Tests to Run
        command: |
          # reminder: this code (along with all the steps) is independently executed on every circle container
          # so the goal here is to get the circleci script to return the tests *this* container will run
          # which we do via the `circleci` cli tool.

          rm -fr ~/cassandra-dtest/upgrade_tests
          echo "***java tests***"

          # get all of our unit test filenames
          set -eo pipefail && circleci tests glob "$HOME/cassandra/test/<<parameters.classlistprefix>>/**/*.java" > /tmp/all_java_unit_tests.txt

          # split up the unit tests into groups based on the number of containers we have
          set -eo pipefail && circleci tests split --split-by=timings --timings-type=filename --index=${CIRCLE_NODE_INDEX} --total=${CIRCLE_NODE_TOTAL} /tmp/all_java_unit_tests.txt > /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt
          set -eo pipefail && cat /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt | sed "s;^/home/cassandra/cassandra/test/<<parameters.classlistprefix>>/;;g" | grep "Test\.java$" <<parameters.extra_filters>> > /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt
          echo "** /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt"
          cat /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt

        no_output_timeout: 15m

  run_junit_tests:
    parameters:
      target:
        type: string
      no_output_timeout:
        type: string
        default: 15m
    steps:
    - run:
        name: Run Unit Tests (<<parameters.target>>)
        # Please note that we run `clean` and therefore rebuild the project, as we can't run tests on Java 8 in case
        # based on Java 11 builds.
        command: |
          export PATH=$JAVA_HOME/bin:$PATH
          time mv ~/cassandra /tmp
          cd /tmp/cassandra
          if [ -d ~/dtest_jars ]; then
            cp ~/dtest_jars/dtest* /tmp/cassandra/build/
          fi
          ant clean <<parameters.target>>
        no_output_timeout: <<parameters.no_output_timeout>>
    - store_test_results:
        path: /tmp/cassandra/build/test/output/
    - store_artifacts:
        path: /tmp/cassandra/build/test/output
        destination: junitxml
    - store_artifacts:
        path: /tmp/cassandra/build/test/logs
        destination: logs

  run_parallel_junit_tests:
    parameters:
      target:
        type: string
        default: testclasslist
      no_output_timeout:
        type: string
        default: 15m
      classlistprefix:
        type: string
        default: unit
    steps:
    - run:
        name: Run Unit Tests (<<parameters.target>>)
        # Please note that we run `clean` and therefore rebuild the project, as we can't run tests on Java 8 in case
        # based on Java 11 builds.
        command: |
          set -x
          export PATH=$JAVA_HOME/bin:$PATH
          time mv ~/cassandra /tmp
          cd /tmp/cassandra
          if [ -d ~/dtest_jars ]; then
            cp ~/dtest_jars/dtest* /tmp/cassandra/build/
          fi
          test_timeout=$(grep 'name="test.<<parameters.classlistprefix>>.timeout"' build.xml | awk -F'"' '{print $4}' || true)
          if [ -z "$test_timeout" ]; then
            test_timeout=$(grep 'name="test.timeout"' build.xml | awk -F'"' '{print $4}')
          fi
          ant <<parameters.target>> -Dtest.timeout="$test_timeout" -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=<<parameters.classlistprefix>>
        no_output_timeout: <<parameters.no_output_timeout>>
    - store_test_results:
        path: /tmp/cassandra/build/test/output/
    - store_artifacts:
        path: /tmp/cassandra/build/test/output
        destination: junitxml
    - store_artifacts:
        path: /tmp/cassandra/build/test/logs
        destination: logs

  create_venv:
    steps:
    - run:
        name: Configure virtualenv and python Dependencies
        command: |
          # note, this should be super quick as all dependencies should be pre-installed in the docker image
          # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated
          # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and
          # rebuild the docker image! (it automatically pulls the latest requirements.txt on build)
          source ~/env/bin/activate
          export PATH=$JAVA_HOME/bin:$PATH
          pip3 install --upgrade -r ~/cassandra-dtest/requirements.txt
          pip3 freeze

  create_dtest_containers:
    parameters:
      file_tag:
        type: string
      run_dtests_extra_args:
        type: string
        default: ''
      extra_env_args:
        type: string
        default: ''
      tests_filter_pattern:
        type: string
        default: ''
    steps:
    - run:
        name: Determine Tests to Run (<<parameters.file_tag>>)
        no_output_timeout: 5m
        command: |
          # reminder: this code (along with all the steps) is independently executed on every circle container
          # so the goal here is to get the circleci script to return the tests *this* container will run
          # which we do via the `circleci` cli tool.

          cd cassandra-dtest
          source ~/env/bin/activate
          export PATH=$JAVA_HOME/bin:$PATH

          if [ -n '<<parameters.extra_env_args>>' ]; then
            export <<parameters.extra_env_args>>
          fi

          echo "***Collected DTests (<<parameters.file_tag>>)***"
          set -eo pipefail && ./run_dtests.py <<parameters.run_dtests_extra_args>> --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_<<parameters.file_tag>>_raw --cassandra-dir=../cassandra
          if [ -z '<<parameters.tests_filter_pattern>>' ]; then
            mv /tmp/all_dtest_tests_<<parameters.file_tag>>_raw /tmp/all_dtest_tests_<<parameters.file_tag>>
          else
            grep -e '<<parameters.tests_filter_pattern>>' /tmp/all_dtest_tests_<<parameters.file_tag>>_raw > /tmp/all_dtest_tests_<<parameters.file_tag>> || { echo "Filter did not match any tests! Exiting build."; exit 0; }
          fi
          set -eo pipefail && circleci tests split --split-by=timings --timings-type=classname /tmp/all_dtest_tests_<<parameters.file_tag>> > /tmp/split_dtest_tests_<<parameters.file_tag>>.txt
          cat /tmp/split_dtest_tests_<<parameters.file_tag>>.txt | tr '\n' ' ' > /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt
          cat /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt

  run_dtests:
    parameters:
      file_tag:
        type: string
      pytest_extra_args:
        type: string
        default: ''
      extra_env_args:
        type: string
        default: ''
    steps:
      - run:
          name: Run dtests (<<parameters.file_tag>>)
          no_output_timeout: 15m
          command: |
            echo "cat /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt"
            cat /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt

            source ~/env/bin/activate
            export PATH=$JAVA_HOME/bin:$PATH
            if [ -n '<<parameters.extra_env_args>>' ]; then
              export <<parameters.extra_env_args>>
            fi

            java -version
            cd ~/cassandra-dtest
            mkdir -p /tmp/dtest

            echo "env: $(env)"
            echo "** done env"
            mkdir -p /tmp/results/dtests
            # we need the "set -o pipefail" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee
            export SPLIT_TESTS=`cat /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt`
            set -o pipefail && cd ~/cassandra-dtest && pytest <<parameters.pytest_extra_args>> --log-level="INFO" --junit-xml=/tmp/results/dtests/pytest_result_<<parameters.file_tag>>.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt
      - store_test_results:
          path: /tmp/results
      - store_artifacts:
          path: /tmp/dtest
          destination: dtest_<<parameters.file_tag>>
      - store_artifacts:
          path: ~/cassandra-dtest/logs
          destination: dtest_<<parameters.file_tag>>_logs
