You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by mc...@apache.org on 2020/03/27 11:30:28 UTC

[cassandra] branch trunk updated (b617690 -> 244d4c2)

This is an automated email from the ASF dual-hosted git repository.

mck pushed a change to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git.


    from b617690  Use immutable map for Read/WriteFailure exception and fix flaky test
     new b490847  Fix test.distributed.timeout in CircleCI
     new f2c9b4c  Merge branch 'cassandra-2.2' into cassandra-3.0
     new 8699366  Merge branch 'cassandra-3.0' into cassandra-3.11
     new 244d4c2  Merge branch 'cassandra-3.11' into trunk

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .circleci/config-2_1.yml                |  7 ++++-
 .circleci/config-2_1.yml.high_res.patch |  2 +-
 .circleci/config.yml                    | 55 +++++++++++++++++++++++++++++----
 .circleci/config.yml.HIGHRES            | 44 +++++++++++++++++++++-----
 .circleci/config.yml.LOWRES             | 42 +++++++++++++++++++++----
 5 files changed, 129 insertions(+), 21 deletions(-)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


[cassandra] 01/01: Merge branch 'cassandra-3.11' into trunk

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mck pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit 244d4c260ebed34cbf1cf054ad47481e72adb739
Merge: b617690 8699366
Author: Mick Semb Wever <mc...@apache.org>
AuthorDate: Fri Mar 27 12:25:42 2020 +0100

    Merge branch 'cassandra-3.11' into trunk

 .circleci/config-2_1.yml                |  7 ++++-
 .circleci/config-2_1.yml.high_res.patch |  2 +-
 .circleci/config.yml                    | 55 +++++++++++++++++++++++++++++----
 .circleci/config.yml.HIGHRES            | 44 +++++++++++++++++++++-----
 .circleci/config.yml.LOWRES             | 42 +++++++++++++++++++++----
 5 files changed, 129 insertions(+), 21 deletions(-)

diff --cc .circleci/config-2_1.yml
index 8bb7c00,2485c16..5d8218c
--- a/.circleci/config-2_1.yml
+++ b/.circleci/config-2_1.yml
@@@ -785,7 -453,10 +785,8 @@@ commands
      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
diff --cc .circleci/config-2_1.yml.high_res.patch
index 8f9132c,3c85668..d0799e4
--- a/.circleci/config-2_1.yml.high_res.patch
+++ b/.circleci/config-2_1.yml.high_res.patch
@@@ -9,8 -15,8 +9,8 @@@
  <   parallelism: 1
  ---
  >     exec_resource_class: xlarge
-->   parallelism: 2
 -35,36c35,36
++>   parallelism: 5
 +34,35c34,35
  <     #exec_resource_class: xlarge
  <   parallelism: 1
  ---
diff --cc .circleci/config.yml
index dcf444f,8123ab9..3757f46
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@@ -92,1005 -98,6 +97,1029 @@@ jobs
      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 uninstall -y cqlsh
 +          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-res [...]
 +    - run:
 +        name: Run dtests (j8_with_vnodes)
 +        no_output_timeout: 15m
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python2.7' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python2.7
 +          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_with_vnodes_final.txt`
 +          set -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
 +    - 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:
 +    - 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
 +  j11_unit_tests:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    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
-           ant testclasslist -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=unit
++          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:
 +    - 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-11-openjdk-amd64
 +    - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 +    - CASSANDRA_USE_JDK11: true
 +  j11_cqlsh-dtests-py3-with-vnodes:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    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 uninstall -y cqlsh
 +          pip3 freeze
 +    - run:
 +        name: Determine Tests to Run (j11_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 (j11_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-re [...]
 +    - run:
 +        name: Run dtests (j11_with_vnodes)
 +        no_output_timeout: 15m
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python3.6' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python3.6
 +          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_j11_with_vnodes_final.txt`
 +          set -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_j11_with_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_j11_with_vnodes
 +    - store_artifacts:
 +        path: ~/cassandra-dtest/logs
 +        destination: dtest_j11_with_vnodes_logs
 +    environment:
 +    - 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-11-openjdk-amd64
 +    - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 +    - CASSANDRA_USE_JDK11: true
 +  j11_cqlsh-dtests-py3-no-vnodes:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    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 uninstall -y cqlsh
 +          pip3 freeze
 +    - run:
 +        name: Determine Tests to Run (j11_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 (j11_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-int [...]
 +    - run:
 +        name: Run dtests (j11_without_vnodes)
 +        no_output_timeout: 15m
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python3.6' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python3.6
 +          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_j11_without_vnodes_final.txt`
 +          set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level="INFO" --junit-xml=/tmp/results/dtests/pytest_result_j11_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_j11_without_vnodes
 +    - store_artifacts:
 +        path: ~/cassandra-dtest/logs
 +        destination: dtest_j11_without_vnodes_logs
 +    environment:
 +    - 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-11-openjdk-amd64
 +    - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 +    - CASSANDRA_USE_JDK11: true
 +  j8_cqlsh-dtests-py3-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 uninstall -y cqlsh
 +          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-res [...]
 +    - run:
 +        name: Run dtests (j8_with_vnodes)
 +        no_output_timeout: 15m
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python3.6' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python3.6
 +          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_with_vnodes_final.txt`
 +          set -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
 +    - 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:
 +    - 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_cqlsh-dtests-py2-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 uninstall -y cqlsh
 +          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-inte [...]
 +    - run:
 +        name: Run dtests (j8_without_vnodes)
 +        no_output_timeout: 15m
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python2.7' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python2.7
 +          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_without_vnodes_final.txt`
 +          set -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
 +    - 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:
 +    - 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
 +  j11_cqlsh-dtests-py2-with-vnodes:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    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 uninstall -y cqlsh
 +          pip3 freeze
 +    - run:
 +        name: Determine Tests to Run (j11_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 (j11_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-re [...]
 +    - run:
 +        name: Run dtests (j11_with_vnodes)
 +        no_output_timeout: 15m
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python2.7' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python2.7
 +          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_j11_with_vnodes_final.txt`
 +          set -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_j11_with_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_j11_with_vnodes
 +    - store_artifacts:
 +        path: ~/cassandra-dtest/logs
 +        destination: dtest_j11_with_vnodes_logs
 +    environment:
 +    - 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-11-openjdk-amd64
 +    - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 +    - CASSANDRA_USE_JDK11: true
 +  j11_dtests-with-vnodes:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    resource_class: medium
 +    working_directory: ~/
 +    shell: /bin/bash -eo pipefail -l
 +    parallelism: 4
 +    steps:
 +    - attach_workspace:
 +        at: /home/cassandra
 +    - 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 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 uninstall -y cqlsh
 +          pip3 freeze
 +    - run:
 +        name: Determine Tests to Run (j11_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 (j11_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-re [...]
 +    - run:
 +        name: Run dtests (j11_with_vnodes)
 +        no_output_timeout: 15m
 +        command: "echo \"cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_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 ex [...]
 +    - store_test_results:
 +        path: /tmp/results
 +    - store_artifacts:
 +        path: /tmp/dtest
 +        destination: dtest_j11_with_vnodes
 +    - store_artifacts:
 +        path: ~/cassandra-dtest/logs
 +        destination: dtest_j11_with_vnodes_logs
 +    environment:
 +    - 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-11-openjdk-amd64
 +    - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 +    - CASSANDRA_USE_JDK11: true
 +  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 uninstall -y cqlsh
 +          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-inte [...]
 +    - 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 th [...]
 +    - 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:
 +    - 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 uninstall -y cqlsh
 +          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:
 +    - 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
 +        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:
 +    - 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
-           ant testclasslist -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=unit
++          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:
 +    - 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
 +  j11_jvm_dtests:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    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
-           ant testclasslist -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=distributed
++          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:
 +    - 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-11-openjdk-amd64
 +    - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 +    - CASSANDRA_USE_JDK11: true
 +  j11_build:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    resource_class: medium
 +    working_directory: ~/
 +    shell: /bin/bash -eo pipefail -l
      parallelism: 1
      steps:
      - run:
@@@ -1190,34 -197,15 +1219,35 @@@
            source ~/env/bin/activate
            export PATH=$JAVA_HOME/bin:$PATH
            pip3 install --upgrade -r ~/cassandra-dtest/requirements.txt
++          pip3 uninstall -y cqlsh
            pip3 freeze
      - run:
 -        name: Determine Tests to Run (j8_without_vnodes)
 +        name: Determine Tests to Run (j11_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-inte [...]
 +        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 (j11_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-int [...]
      - run:
 -        name: Run dtests (j8_without_vnodes)
 +        name: Run dtests (j11_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 th [...]
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python2.7' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python2.7
 +          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_j11_without_vnodes_final.txt`
 +          set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level="INFO" --junit-xml=/tmp/results/dtests/pytest_result_j11_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:
@@@ -1267,15 -255,56 +1297,16 @@@
            source ~/env/bin/activate
            export PATH=$JAVA_HOME/bin:$PATH
            pip3 install --upgrade -r ~/cassandra-dtest/requirements.txt
++          pip3 uninstall -y cqlsh
            pip3 freeze
      - run:
 -        name: Determine Tests to Run (j8_upgradetests_without_vnodes)
 +        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
 -          # 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
 +        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-res [...]
      - run:
 -        name: Run dtests (j8_upgradetests_without_vnodes)
 +        name: Run dtests (j8_with_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
 +        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 [...]
      - store_test_results:
          path: /tmp/results
      - store_artifacts:
@@@ -1311,56 -341,15 +1342,61 @@@
      - attach_workspace:
          at: /home/cassandra
      - run:
 -        name: Run Unit Tests (stress-test)
 +        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
-           ant testclasslist -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=distributed
 -          ant stress-test -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=unit
++          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/
@@@ -1490,34 -492,15 +1526,35 @@@
            source ~/env/bin/activate
            export PATH=$JAVA_HOME/bin:$PATH
            pip3 install --upgrade -r ~/cassandra-dtest/requirements.txt
++          pip3 uninstall -y cqlsh
            pip3 freeze
      - run:
 -        name: Determine Tests to Run (j8_with_vnodes)
 +        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_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-res [...]
 +        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-inte [...]
      - run:
 -        name: Run dtests (j8_with_vnodes)
 +        name: Run dtests (j8_without_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 [...]
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python3.6' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python3.6
 +          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_without_vnodes_final.txt`
 +          set -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
      - store_test_results:
          path: /tmp/results
      - store_artifacts:
@@@ -1632,86 -664,6 +1669,87 @@@
      - CCM_HEAP_NEWSIZE: 256M
      - JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64
      - JDK_HOME: /usr/lib/jvm/java-8-openjdk-amd64
 +  j11_dtests-no-vnodes:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    resource_class: medium
 +    working_directory: ~/
 +    shell: /bin/bash -eo pipefail -l
 +    parallelism: 4
 +    steps:
 +    - attach_workspace:
 +        at: /home/cassandra
 +    - 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 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 uninstall -y cqlsh
 +          pip3 freeze
 +    - run:
 +        name: Determine Tests to Run (j11_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 (j11_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-int [...]
 +    - run:
 +        name: Run dtests (j11_without_vnodes)
 +        no_output_timeout: 15m
 +        command: "echo \"cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_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  [...]
 +    - store_test_results:
 +        path: /tmp/results
 +    - store_artifacts:
 +        path: /tmp/dtest
 +        destination: dtest_j11_without_vnodes
 +    - store_artifacts:
 +        path: ~/cassandra-dtest/logs
 +        destination: dtest_j11_without_vnodes_logs
 +    environment:
 +    - 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-11-openjdk-amd64
 +    - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 +    - CASSANDRA_USE_JDK11: true
    utests_compression:
      docker:
      - image: spod/cassandra-testing-ubuntu1810-java11-w-dependencies:20190306
diff --cc .circleci/config.yml.HIGHRES
index 5626d78,f7ef17e..7fecdfe
--- a/.circleci/config.yml.HIGHRES
+++ b/.circleci/config.yml.HIGHRES
@@@ -82,1021 -88,13 +87,1036 @@@ jobs
      - 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
 +    - 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:
 +  j8_cqlsh-dtests-py2-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 uninstall -y cqlsh
 +          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-res [...]
 +    - run:
 +        name: Run dtests (j8_with_vnodes)
 +        no_output_timeout: 15m
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python2.7' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python2.7
 +          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_with_vnodes_final.txt`
 +          set -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
 +    - 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:
 +    - 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
 +  j11_unit_tests:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    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 | 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
-           ant testclasslist -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=unit
++          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:
 +    - 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-11-openjdk-amd64
 +    - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 +    - CASSANDRA_USE_JDK11: true
 +  j11_cqlsh-dtests-py3-with-vnodes:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    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 uninstall -y cqlsh
 +          pip3 freeze
 +    - run:
 +        name: Determine Tests to Run (j11_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 (j11_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-re [...]
 +    - run:
 +        name: Run dtests (j11_with_vnodes)
 +        no_output_timeout: 15m
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python3.6' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python3.6
 +          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_j11_with_vnodes_final.txt`
 +          set -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_j11_with_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_j11_with_vnodes
 +    - store_artifacts:
 +        path: ~/cassandra-dtest/logs
 +        destination: dtest_j11_with_vnodes_logs
 +    environment:
 +    - 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-11-openjdk-amd64
 +    - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 +    - CASSANDRA_USE_JDK11: true
 +  j11_cqlsh-dtests-py3-no-vnodes:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    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 uninstall -y cqlsh
 +          pip3 freeze
 +    - run:
 +        name: Determine Tests to Run (j11_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 (j11_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-int [...]
 +    - run:
 +        name: Run dtests (j11_without_vnodes)
 +        no_output_timeout: 15m
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python3.6' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python3.6
 +          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_j11_without_vnodes_final.txt`
 +          set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level="INFO" --junit-xml=/tmp/results/dtests/pytest_result_j11_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_j11_without_vnodes
 +    - store_artifacts:
 +        path: ~/cassandra-dtest/logs
 +        destination: dtest_j11_without_vnodes_logs
 +    environment:
 +    - 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-11-openjdk-amd64
 +    - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 +    - CASSANDRA_USE_JDK11: true
 +  j8_cqlsh-dtests-py3-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 uninstall -y cqlsh
 +          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-res [...]
 +    - run:
 +        name: Run dtests (j8_with_vnodes)
 +        no_output_timeout: 15m
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python3.6' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python3.6
 +          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_with_vnodes_final.txt`
 +          set -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
 +    - 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:
 +    - 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_cqlsh-dtests-py2-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 uninstall -y cqlsh
 +          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-inte [...]
 +    - run:
 +        name: Run dtests (j8_without_vnodes)
 +        no_output_timeout: 15m
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python2.7' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python2.7
 +          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_without_vnodes_final.txt`
 +          set -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
 +    - 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:
 +    - 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
 +  j11_cqlsh-dtests-py2-with-vnodes:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    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 uninstall -y cqlsh
 +          pip3 freeze
 +    - run:
 +        name: Determine Tests to Run (j11_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 (j11_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-re [...]
 +    - run:
 +        name: Run dtests (j11_with_vnodes)
 +        no_output_timeout: 15m
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python2.7' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python2.7
 +          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_j11_with_vnodes_final.txt`
 +          set -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_j11_with_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_j11_with_vnodes
 +    - store_artifacts:
 +        path: ~/cassandra-dtest/logs
 +        destination: dtest_j11_with_vnodes_logs
 +    environment:
 +    - 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-11-openjdk-amd64
 +    - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 +    - CASSANDRA_USE_JDK11: true
 +  j11_dtests-with-vnodes:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    resource_class: xlarge
 +    working_directory: ~/
 +    shell: /bin/bash -eo pipefail -l
 +    parallelism: 100
 +    steps:
 +    - attach_workspace:
 +        at: /home/cassandra
 +    - 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 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 uninstall -y cqlsh
 +          pip3 freeze
 +    - run:
 +        name: Determine Tests to Run (j11_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 (j11_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-re [...]
 +    - run:
 +        name: Run dtests (j11_with_vnodes)
 +        no_output_timeout: 15m
 +        command: "echo \"cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_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 ex [...]
 +    - store_test_results:
 +        path: /tmp/results
 +    - store_artifacts:
 +        path: /tmp/dtest
 +        destination: dtest_j11_with_vnodes
 +    - store_artifacts:
 +        path: ~/cassandra-dtest/logs
 +        destination: dtest_j11_with_vnodes_logs
 +    environment:
 +    - 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-11-openjdk-amd64
 +    - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 +    - CASSANDRA_USE_JDK11: true
 +  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 uninstall -y cqlsh
 +          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-inte [...]
 +    - 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 th [...]
 +    - 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:
 +    - 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: 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 uninstall -y cqlsh
 +          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:
 +    - 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: xlarge
 +    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
 +        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:
 +    - 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: 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 | 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
-           ant testclasslist -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=unit
++          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:
 +    - 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
 +  j11_jvm_dtests:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    resource_class: xlarge
 +    working_directory: ~/
 +    shell: /bin/bash -eo pipefail -l
 +    parallelism: 2
 +    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
-           ant testclasslist -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=distributed
++          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:
 +    - 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-11-openjdk-amd64
 +    - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 +    - CASSANDRA_USE_JDK11: true
 +  j11_build:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
      resource_class: medium
      working_directory: ~/
      shell: /bin/bash -eo pipefail -l
@@@ -1317,61 -336,20 +1337,66 @@@
      resource_class: xlarge
      working_directory: ~/
      shell: /bin/bash -eo pipefail -l
-     parallelism: 2
 -    parallelism: 1
++    parallelism: 5
      steps:
      - attach_workspace:
          at: /home/cassandra
      - run:
 -        name: Run Unit Tests (stress-test)
 +        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
-           ant testclasslist -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=distributed
 -          ant stress-test -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=unit
++          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/
diff --cc .circleci/config.yml.LOWRES
index 88dce2a,8123ab9..3757f46
--- a/.circleci/config.yml.LOWRES
+++ b/.circleci/config.yml.LOWRES
@@@ -92,1014 -98,6 +97,1029 @@@ jobs
      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 uninstall -y cqlsh
 +          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-res [...]
 +    - run:
 +        name: Run dtests (j8_with_vnodes)
 +        no_output_timeout: 15m
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python2.7' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python2.7
 +          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_with_vnodes_final.txt`
 +          set -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
 +    - 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:
 +    - 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
 +  j11_unit_tests:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    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
-           ant testclasslist -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=unit
++          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:
 +    - 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-11-openjdk-amd64
 +    - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 +    - CASSANDRA_USE_JDK11: true
 +  j11_cqlsh-dtests-py3-with-vnodes:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    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 uninstall -y cqlsh
 +          pip3 freeze
 +    - run:
 +        name: Determine Tests to Run (j11_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 (j11_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-re [...]
 +    - run:
 +        name: Run dtests (j11_with_vnodes)
 +        no_output_timeout: 15m
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python3.6' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python3.6
 +          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_j11_with_vnodes_final.txt`
 +          set -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_j11_with_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_j11_with_vnodes
 +    - store_artifacts:
 +        path: ~/cassandra-dtest/logs
 +        destination: dtest_j11_with_vnodes_logs
 +    environment:
 +    - 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-11-openjdk-amd64
 +    - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 +    - CASSANDRA_USE_JDK11: true
 +  j11_cqlsh-dtests-py3-no-vnodes:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    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 uninstall -y cqlsh
 +          pip3 freeze
 +    - run:
 +        name: Determine Tests to Run (j11_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 (j11_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-int [...]
 +    - run:
 +        name: Run dtests (j11_without_vnodes)
 +        no_output_timeout: 15m
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python3.6' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python3.6
 +          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_j11_without_vnodes_final.txt`
 +          set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level="INFO" --junit-xml=/tmp/results/dtests/pytest_result_j11_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_j11_without_vnodes
 +    - store_artifacts:
 +        path: ~/cassandra-dtest/logs
 +        destination: dtest_j11_without_vnodes_logs
 +    environment:
 +    - 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-11-openjdk-amd64
 +    - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 +    - CASSANDRA_USE_JDK11: true
 +  j8_cqlsh-dtests-py3-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 uninstall -y cqlsh
 +          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-res [...]
 +    - run:
 +        name: Run dtests (j8_with_vnodes)
 +        no_output_timeout: 15m
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python3.6' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python3.6
 +          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_with_vnodes_final.txt`
 +          set -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
 +    - 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:
 +    - 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_cqlsh-dtests-py2-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 uninstall -y cqlsh
 +          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-inte [...]
 +    - run:
 +        name: Run dtests (j8_without_vnodes)
 +        no_output_timeout: 15m
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python2.7' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python2.7
 +          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_without_vnodes_final.txt`
 +          set -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
 +    - 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:
 +    - 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
 +  j11_cqlsh-dtests-py2-with-vnodes:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    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 uninstall -y cqlsh
 +          pip3 freeze
 +    - run:
 +        name: Determine Tests to Run (j11_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 (j11_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-re [...]
 +    - run:
 +        name: Run dtests (j11_with_vnodes)
 +        no_output_timeout: 15m
 +        command: |
 +          echo "cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt"
 +          cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt
 +
 +          source ~/env/bin/activate
 +          export PATH=$JAVA_HOME/bin:$PATH
 +          if [ -n 'CQLSH_PYTHON=/usr/bin/python2.7' ]; then
 +            export CQLSH_PYTHON=/usr/bin/python2.7
 +          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_j11_with_vnodes_final.txt`
 +          set -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_j11_with_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_j11_with_vnodes
 +    - store_artifacts:
 +        path: ~/cassandra-dtest/logs
 +        destination: dtest_j11_with_vnodes_logs
 +    environment:
 +    - 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-11-openjdk-amd64
 +    - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 +    - CASSANDRA_USE_JDK11: true
 +  j11_dtests-with-vnodes:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    resource_class: medium
 +    working_directory: ~/
 +    shell: /bin/bash -eo pipefail -l
 +    parallelism: 4
 +    steps:
 +    - attach_workspace:
 +        at: /home/cassandra
 +    - 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 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 uninstall -y cqlsh
 +          pip3 freeze
 +    - run:
 +        name: Determine Tests to Run (j11_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 (j11_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-re [...]
 +    - run:
 +        name: Run dtests (j11_with_vnodes)
 +        no_output_timeout: 15m
 +        command: "echo \"cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_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 ex [...]
 +    - store_test_results:
 +        path: /tmp/results
 +    - store_artifacts:
 +        path: /tmp/dtest
 +        destination: dtest_j11_with_vnodes
 +    - store_artifacts:
 +        path: ~/cassandra-dtest/logs
 +        destination: dtest_j11_with_vnodes_logs
 +    environment:
 +    - 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-11-openjdk-amd64
 +    - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 +    - CASSANDRA_USE_JDK11: true
 +  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 uninstall -y cqlsh
 +          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-inte [...]
 +    - 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 th [...]
 +    - 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:
 +    - 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 uninstall -y cqlsh
 +          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:
 +    - 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
 +        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:
 +    - 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
-           ant testclasslist -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=unit
++          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:
 +    - 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
 +  j11_jvm_dtests:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    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
-           ant testclasslist -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=distributed
++          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:
 +    - 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-11-openjdk-amd64
 +    - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 +    - CASSANDRA_USE_JDK11: true
 +  j11_build:
 +    docker:
 +    - image: spod/cassandra-testing-ubuntu1810-java11:20181210
 +    resource_class: medium
 +    working_directory: ~/
 +    shell: /bin/bash -eo pipefail -l
      parallelism: 1
      steps:
      - run:
@@@ -1322,56 -341,15 +1342,61 @@@
      - attach_workspace:
          at: /home/cassandra
      - run:
 -        name: Run Unit Tests (stress-test)
 +        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
-           ant testclasslist -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=distributed
 -          ant stress-test -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=unit
++          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/


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org