version: 2
jobs:
  j8_jvm_upgrade_dtests:
    docker:
    - image: spod/cassandra-testing-ubuntu1810-java11-w-dependencies:20190306
    resource_class: medium
    working_directory: ~/
    shell: /bin/bash -eo pipefail -l
    parallelism: 1
    steps:
    - attach_workspace:
        at: /home/cassandra
    - run:
        name: Determine distributed 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/distributed/**/*.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/distributed/;;g" | grep "Test\.java$" | grep upgrade > /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:
        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
    - run:
        name: Run Unit Tests (testclasslist)
        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.distributed.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 testclasslist -Dtest.timeout="$test_timeout" -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=distributed
        no_output_timeout: 15m
    - 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
    environment:
    - 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
    - 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
    - JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64
    - JDK_HOME: /usr/lib/jvm/java-8-openjdk-amd64
  build:
    docker:
    - image: spod/cassandra-testing-ubuntu1810-java11-w-dependencies:20190306
    resource_class: medium
    working_directory: ~/
    shell: /bin/bash -eo pipefail -l
    parallelism: 1
    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
    - 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
    - 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
    - run:
        name: Run eclipse-warnings
        command: |
          export PATH=$JAVA_HOME/bin:$PATH
          cd ~/cassandra
          ant eclipse-warnings
    - persist_to_workspace:
        root: /home/cassandra
        paths:
        - cassandra
        - .m2
    environment:
    - 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
    - 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
    - JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64
    - JDK_HOME: /usr/lib/jvm/java-8-openjdk-amd64
  j8_dtests-no-vnodes:
    docker:
    - image: spod/cassandra-testing-ubuntu1810-java11-w-dependencies:20190306
    resource_class: medium
    working_directory: ~/
    shell: /bin/bash -eo pipefail -l
    parallelism: 4
    steps:
    - attach_workspace:
        at: /home/cassandra
    - run:
        name: Clone Cassandra dtest Repository (via git)
        command: |
          git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest
    - 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
    - run:
        name: Determine Tests to Run (j8_without_vnodes)
        no_output_timeout: 5m
        command: "# reminder: this code (along with all the steps) is independently executed on every circle container\n# so the goal here is to get the circleci script to return the tests *this* container will run\n# which we do via the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n  export \nfi\n\necho \"***Collected DTests (j8_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j8_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n  mv /tmp/all_dtest_tests_j8_without_vnodes_raw /tmp/all_dtest_tests_j8_without_vnodes\nelse\n  grep -e '' /tmp/all_dtest_tests_j8_without_vnodes_raw > /tmp/all_dtest_tests_j8_without_vnodes || { echo \"Filter did not match any tests! Exiting build.\"; exit 0; }\nfi\nset -eo pipefail && circleci tests split --split-by=timings --timings-type=classname /tmp/all_dtest_tests_j8_without_vnodes > /tmp/split_dtest_tests_j8_without_vnodes.txt\ncat /tmp/split_dtest_tests_j8_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j8_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j8_without_vnodes_final.txt\n"
    - run:
        name: Run dtests (j8_without_vnodes)
        no_output_timeout: 15m
        command: "echo \"cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j8_without_vnodes_final.txt\n\nsource ~/env/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n  export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# 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\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt`\nset -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level=\"INFO\" --junit-xml=/tmp/results/dtests/pytest_result_j8_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\n"
    - store_test_results:
        path: /tmp/results
    - store_artifacts:
        path: /tmp/dtest
        destination: dtest_j8_without_vnodes
    - store_artifacts:
        path: ~/cassandra-dtest/logs
        destination: dtest_j8_without_vnodes_logs
    environment:
    - 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
    - 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
    - JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64
    - JDK_HOME: /usr/lib/jvm/java-8-openjdk-amd64
  j8_upgradetests-no-vnodes:
    docker:
    - image: spod/cassandra-testing-ubuntu1810-java11-w-dependencies:20190306
    resource_class: medium
    working_directory: ~/
    shell: /bin/bash -eo pipefail -l
    parallelism: 4
    steps:
    - attach_workspace:
        at: /home/cassandra
    - run:
        name: Clone Cassandra dtest Repository (via git)
        command: |
          git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest
    - 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
    - run:
        name: Determine Tests to Run (j8_upgradetests_without_vnodes)
        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 'RUN_STATIC_UPGRADE_MATRIX=true' ]; then
            export RUN_STATIC_UPGRADE_MATRIX=true
          fi

          echo "***Collected DTests (j8_upgradetests_without_vnodes)***"
          set -eo pipefail && ./run_dtests.py --execute-upgrade-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j8_upgradetests_without_vnodes_raw --cassandra-dir=../cassandra
          if [ -z '^upgrade_tests' ]; then
            mv /tmp/all_dtest_tests_j8_upgradetests_without_vnodes_raw /tmp/all_dtest_tests_j8_upgradetests_without_vnodes
          else
            grep -e '^upgrade_tests' /tmp/all_dtest_tests_j8_upgradetests_without_vnodes_raw > /tmp/all_dtest_tests_j8_upgradetests_without_vnodes || { 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_j8_upgradetests_without_vnodes > /tmp/split_dtest_tests_j8_upgradetests_without_vnodes.txt
          cat /tmp/split_dtest_tests_j8_upgradetests_without_vnodes.txt | tr '\n' ' ' > /tmp/split_dtest_tests_j8_upgradetests_without_vnodes_final.txt
          cat /tmp/split_dtest_tests_j8_upgradetests_without_vnodes_final.txt
    - run:
        name: Run dtests (j8_upgradetests_without_vnodes)
        no_output_timeout: 15m
        command: |
          echo "cat /tmp/split_dtest_tests_j8_upgradetests_without_vnodes_final.txt"
          cat /tmp/split_dtest_tests_j8_upgradetests_without_vnodes_final.txt

          source ~/env/bin/activate
          export PATH=$JAVA_HOME/bin:$PATH
          if [ -n 'RUN_STATIC_UPGRADE_MATRIX=true' ]; then
            export RUN_STATIC_UPGRADE_MATRIX=true
          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_j8_upgradetests_without_vnodes_final.txt`
          set -o pipefail && cd ~/cassandra-dtest && pytest --execute-upgrade-tests --log-level="INFO" --junit-xml=/tmp/results/dtests/pytest_result_j8_upgradetests_without_vnodes.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_j8_upgradetests_without_vnodes
    - store_artifacts:
        path: ~/cassandra-dtest/logs
        destination: dtest_j8_upgradetests_without_vnodes_logs
    environment:
    - 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
    - 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
    - JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64
    - JDK_HOME: /usr/lib/jvm/java-8-openjdk-amd64
  utests_stress:
    docker:
    - image: spod/cassandra-testing-ubuntu1810-java11-w-dependencies:20190306
    resource_class: medium
    working_directory: ~/
    shell: /bin/bash -eo pipefail -l
    parallelism: 1
    steps:
    - attach_workspace:
        at: /home/cassandra
    - run:
        name: Run Unit Tests (stress-test)
        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 stress-test -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=unit
        no_output_timeout: 15m
    - 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
    environment:
    - 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
    - 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
    - JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64
    - JDK_HOME: /usr/lib/jvm/java-8-openjdk-amd64
  j8_unit_tests:
    docker:
    - image: spod/cassandra-testing-ubuntu1810-java11-w-dependencies:20190306
    resource_class: medium
    working_directory: ~/
    shell: /bin/bash -eo pipefail -l
    parallelism: 4
    steps:
    - attach_workspace:
        at: /home/cassandra
    - run:
        name: Determine unit 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/unit/**/*.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/unit/;;g" | grep "Test\.java$"  > /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:
        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
    - run:
        name: Run Unit Tests (testclasslist)
        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.unit.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 testclasslist -Dtest.timeout="$test_timeout" -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=unit
        no_output_timeout: 15m
    - 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
    environment:
    - 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
    - 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
    - JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64
    - JDK_HOME: /usr/lib/jvm/java-8-openjdk-amd64
  j8_dtests-with-vnodes:
    docker:
    - image: spod/cassandra-testing-ubuntu1810-java11-w-dependencies:20190306
    resource_class: medium
    working_directory: ~/
    shell: /bin/bash -eo pipefail -l
    parallelism: 4
    steps:
    - attach_workspace:
        at: /home/cassandra
    - run:
        name: Clone Cassandra dtest Repository (via git)
        command: |
          git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest
    - 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
    - run:
        name: Determine Tests to Run (j8_with_vnodes)
        no_output_timeout: 5m
        command: "# reminder: this code (along with all the steps) is independently executed on every circle container\n# so the goal here is to get the circleci script to return the tests *this* container will run\n# which we do via the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n  export \nfi\n\necho \"***Collected DTests (j8_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j8_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n  mv /tmp/all_dtest_tests_j8_with_vnodes_raw /tmp/all_dtest_tests_j8_with_vnodes\nelse\n  grep -e '' /tmp/all_dtest_tests_j8_with_vnodes_raw > /tmp/all_dtest_tests_j8_with_vnodes || { echo \"Filter did not match any tests! Exiting build.\"; exit 0; }\nfi\nset -eo pipefail && circleci tests split --split-by=timings --timings-type=classname /tmp/all_dtest_tests_j8_with_vnodes > /tmp/split_dtest_tests_j8_with_vnodes.txt\ncat /tmp/split_dtest_tests_j8_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j8_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j8_with_vnodes_final.txt\n"
    - run:
        name: Run dtests (j8_with_vnodes)
        no_output_timeout: 15m
        command: "echo \"cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j8_with_vnodes_final.txt\n\nsource ~/env/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n  export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# 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\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt`\nset -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=32 --skip-resource-intensive-tests --log-level=\"INFO\" --junit-xml=/tmp/results/dtests/pytest_result_j8_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\n"
    - store_test_results:
        path: /tmp/results
    - store_artifacts:
        path: /tmp/dtest
        destination: dtest_j8_with_vnodes
    - store_artifacts:
        path: ~/cassandra-dtest/logs
        destination: dtest_j8_with_vnodes_logs
    environment:
    - 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
    - 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
    - JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64
    - JDK_HOME: /usr/lib/jvm/java-8-openjdk-amd64
  j8_jvm_dtests:
    docker:
    - image: spod/cassandra-testing-ubuntu1810-java11-w-dependencies:20190306
    resource_class: medium
    working_directory: ~/
    shell: /bin/bash -eo pipefail -l
    parallelism: 1
    steps:
    - attach_workspace:
        at: /home/cassandra
    - run:
        name: Determine distributed 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/distributed/**/*.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/distributed/;;g" | grep "Test\.java$" | grep -v upgrade > /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:
        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
    - run:
        name: Run Unit Tests (testclasslist)
        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.distributed.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 testclasslist -Dtest.timeout="$test_timeout" -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=distributed
        no_output_timeout: 15m
    - 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
    environment:
    - 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
    - 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
    - JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64
    - JDK_HOME: /usr/lib/jvm/java-8-openjdk-amd64
  utests_long:
    docker:
    - image: spod/cassandra-testing-ubuntu1810-java11-w-dependencies:20190306
    resource_class: medium
    working_directory: ~/
    shell: /bin/bash -eo pipefail -l
    parallelism: 1
    steps:
    - attach_workspace:
        at: /home/cassandra
    - run:
        name: Run Unit Tests (long-test)
        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 long-test -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=unit
        no_output_timeout: 15m
    - 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
    environment:
    - 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
    - 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
    - JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64
    - JDK_HOME: /usr/lib/jvm/java-8-openjdk-amd64
  utests_compression:
    docker:
    - image: spod/cassandra-testing-ubuntu1810-java11-w-dependencies:20190306
    resource_class: medium
    working_directory: ~/
    shell: /bin/bash -eo pipefail -l
    parallelism: 4
    steps:
    - attach_workspace:
        at: /home/cassandra
    - run:
        name: Determine unit 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/unit/**/*.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/unit/;;g" | grep "Test\.java$"  > /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:
        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
    - run:
        name: Run Unit Tests (testclasslist-compression)
        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.unit.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 testclasslist-compression -Dtest.timeout="$test_timeout" -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=unit
        no_output_timeout: 15m
    - 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
    environment:
    - 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
    - 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
    - JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64
    - JDK_HOME: /usr/lib/jvm/java-8-openjdk-amd64
  j8_dtest_jars_build:
    docker:
    - image: spod/cassandra-testing-ubuntu1810-java11-w-dependencies:20190306
    resource_class: medium
    working_directory: ~/
    shell: /bin/bash -eo pipefail -l
    parallelism: 1
    steps:
    - attach_workspace:
        at: /home/cassandra
    - 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
    - persist_to_workspace:
        root: /home/cassandra
        paths:
        - dtest_jars
    environment:
    - 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
    - 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
    - JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64
    - JDK_HOME: /usr/lib/jvm/java-8-openjdk-amd64
workflows:
  version: 2
  build_and_run_tests:
    jobs:
    - build
    - j8_unit_tests:
        requires:
        - build
    - j8_jvm_dtests:
        requires:
        - build
    - 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_utests_stress:
        type: approval
        requires:
        - build
    - utests_stress:
        requires:
        - start_utests_stress
    - 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
    - start_j8_dtests:
        type: approval
        requires:
        - build
    - j8_dtests-with-vnodes:
        requires:
        - start_j8_dtests
    - j8_dtests-no-vnodes:
        requires:
        - start_j8_dtests
    - start_upgrade_tests:
        type: approval
        requires:
        - build
    - j8_upgradetests-no-vnodes:
        requires:
        - start_upgrade_tests
