version: 2
jobs:
  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
    - 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: 2048M
    - CCM_HEAP_NEWSIZE: 512M
    - 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: xlarge
    working_directory: ~/
    shell: /bin/bash -eo pipefail -l
    parallelism: 100
    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 | cut -c 37-1000000 | 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: |
          export PATH=$JAVA_HOME/bin:$PATH
          time mv ~/cassandra /tmp
          cd /tmp/cassandra
          ant testclasslist -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: 2048M
    - CCM_HEAP_NEWSIZE: 512M
    - 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: xlarge
    working_directory: ~/
    shell: /bin/bash -eo pipefail -l
    parallelism: 1
    steps:
    - attach_workspace:
        at: /home/cassandra
    - run:
        name: Run Unit Tests (test-jvm-dtest-forking)
        command: |
          export PATH=$JAVA_HOME/bin:$PATH
          time mv ~/cassandra /tmp
          cd /tmp/cassandra
          ant clean test-jvm-dtest-forking
        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: 2048M
    - CCM_HEAP_NEWSIZE: 512M
    - 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: xlarge
    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
          ant clean long-test
        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: 2048M
    - CCM_HEAP_NEWSIZE: 512M
    - 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: xlarge
    working_directory: ~/
    shell: /bin/bash -eo pipefail -l
    parallelism: 100
    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 | cut -c 37-1000000 | 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: |
          export PATH=$JAVA_HOME/bin:$PATH
          time mv ~/cassandra /tmp
          cd /tmp/cassandra
          ant testclasslist-compression -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: 2048M
    - CCM_HEAP_NEWSIZE: 512M
    - 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: xlarge
    working_directory: ~/
    shell: /bin/bash -eo pipefail -l
    parallelism: 100
    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\n\
          export PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n  export \nfi\n\n\
          echo \"***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\n\
          if [ -z '' ]; then\n  mv /tmp/all_dtest_tests_j8_with_vnodes_raw /tmp/all_dtest_tests_j8_with_vnodes\n\
          else\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\n\
          cat /tmp/split_dtest_tests_j8_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j8_with_vnodes_final.txt\n\
          cat /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\n\
          export PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n  export \nfi\n\n\
          java -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: 2048M
    - CCM_HEAP_NEWSIZE: 512M
    - 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: xlarge
    working_directory: ~/
    shell: /bin/bash -eo pipefail -l
    parallelism: 100
    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\n\
          export PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n  export \nfi\n\n\
          echo \"***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\n\
          cat /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\"\n\
          cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt\n\nsource ~/env/bin/activate\n\
          export PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n  export \nfi\n\n\
          java -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: 2048M
    - CCM_HEAP_NEWSIZE: 512M
    - 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: xlarge
    working_directory: ~/
    shell: /bin/bash -eo pipefail -l
    parallelism: 100
    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: 2048M
    - CCM_HEAP_NEWSIZE: 512M
    - 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_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

# Original config.yml file:
# 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: 2048M
#     CCM_HEAP_NEWSIZE: 512M
# 
# j8_par_executor: &j8_par_executor
#   executor:
#     name: java8-executor
#     exec_resource_class: xlarge
#   parallelism: 100
# 
# 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
#             # 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
#       - persist_to_workspace:
#             root: /home/cassandra
#             paths:
#                 - cassandra
#                 - .m2
# 
#   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
#       - run_junit_tests:
#           target: test-jvm-dtest-forking
# 
#   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
# 
#   run_eclipse_warnings:
#     steps:
#     - run:
#         name: Run eclipse-warnings
#         command: |
#           export PATH=$JAVA_HOME/bin:$PATH
#           cd ~/cassandra
#           ant eclipse-warnings
# 
#   create_junit_containers:
#     steps:
#     - 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 | cut -c 37-1000000 | 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_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
#           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
#     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
#           ant <<parameters.target>> -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=unit
#         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