You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ma...@apache.org on 2020/01/29 08:45:46 UTC

[cassandra] branch cassandra-2.2 updated: Use testclasslist for jvm dtests in circleci

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

marcuse pushed a commit to branch cassandra-2.2
in repository https://gitbox.apache.org/repos/asf/cassandra.git


The following commit(s) were added to refs/heads/cassandra-2.2 by this push:
     new 6e3bf54  Use testclasslist for jvm dtests in circleci
6e3bf54 is described below

commit 6e3bf545793dd786138213d334599e533de4ec28
Author: David Capwell <dc...@gmail.com>
AuthorDate: Thu Jan 23 16:22:30 2020 -0800

    Use testclasslist for jvm dtests in circleci
    
    Patch by David Capwell; reviewed by marcuse for CASSANDRA-15508
---
 .circleci/config-2_1.yml                |  34 +-
 .circleci/config-2_1.yml.high_res.patch |   8 +-
 .circleci/config.yml                    | 561 +++----------------------------
 .circleci/config.yml.HIGHRES            | 563 +++-----------------------------
 .circleci/config.yml.LOWRES             | 561 +++----------------------------
 5 files changed, 188 insertions(+), 1539 deletions(-)

diff --git a/.circleci/config-2_1.yml b/.circleci/config-2_1.yml
index f38bf28..3a1eff5 100644
--- a/.circleci/config-2_1.yml
+++ b/.circleci/config-2_1.yml
@@ -23,6 +23,12 @@ j8_par_executor: &j8_par_executor
     #exec_resource_class: xlarge
   parallelism: 4
 
+j8_small_par_executor: &j8_small_par_executor
+  executor:
+    name: java8-executor
+    #exec_resource_class: xlarge
+  parallelism: 1
+
 j8_seq_executor: &j8_seq_executor
   executor:
     name: java8-executor
@@ -129,12 +135,16 @@ jobs:
       - run_parallel_junit_tests
 
   j8_jvm_dtests:
-    <<: *j8_seq_executor
+    <<: *j8_small_par_executor
     steps:
       - attach_workspace:
           at: /home/cassandra
-      - run_junit_tests:
-          target: test-jvm-dtest-forking
+      - create_junit_containers:
+          classlistprefix: distributed
+          extra_filters: "| grep -v upgrade"
+      - log_environment
+      - run_parallel_junit_tests:
+          classlistprefix: distributed
 
   utests_long:
     <<: *j8_seq_executor
@@ -271,9 +281,16 @@ commands:
           ant eclipse-warnings
 
   create_junit_containers:
+    parameters:
+      classlistprefix:
+        type: string
+        default: unit
+      extra_filters:
+        type: string
+        default: ""
     steps:
     - run:
-        name: Determine Unit Tests to Run
+        name: Determine <<parameters.classlistprefix>> Tests to Run
         command: |
           # reminder: this code (along with all the steps) is independently executed on every circle container
           # so the goal here is to get the circleci script to return the tests *this* container will run
@@ -283,11 +300,11 @@ commands:
           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
+          set -eo pipefail && circleci tests glob "$HOME/cassandra/test/<<parameters.classlistprefix>>/**/*.java" > /tmp/all_java_unit_tests.txt
 
           # split up the unit tests into groups based on the number of containers we have
           set -eo pipefail && circleci tests split --split-by=timings --timings-type=filename --index=${CIRCLE_NODE_INDEX} --total=${CIRCLE_NODE_TOTAL} /tmp/all_java_unit_tests.txt > /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt
-          set -eo pipefail && cat /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt | cut -c 37-1000000 | grep "Test\.java$" > /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt
+          set -eo pipefail && cat /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt | sed "s;^/home/cassandra/cassandra/test/<<parameters.classlistprefix>>/;;g" | grep "Test\.java$" <<parameters.extra_filters>> > /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt
           echo "** /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt"
           cat /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt
 
@@ -328,6 +345,9 @@ commands:
       no_output_timeout:
         type: string
         default: 15m
+      classlistprefix:
+        type: string
+        default: unit
     steps:
     - run:
         name: Run Unit Tests (<<parameters.target>>)
@@ -337,7 +357,7 @@ commands:
           export PATH=$JAVA_HOME/bin:$PATH
           time mv ~/cassandra /tmp
           cd /tmp/cassandra
-          ant <<parameters.target>> -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=unit
+          ant <<parameters.target>> -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=<<parameters.classlistprefix>>
         no_output_timeout: <<parameters.no_output_timeout>>
     - store_test_results:
         path: /tmp/cassandra/build/test/output/
diff --git a/.circleci/config-2_1.yml.high_res.patch b/.circleci/config-2_1.yml.high_res.patch
index 22f434d..847a08f 100644
--- a/.circleci/config-2_1.yml.high_res.patch
+++ b/.circleci/config-2_1.yml.high_res.patch
@@ -10,7 +10,13 @@
 ---
 >     exec_resource_class: xlarge
 >   parallelism: 100
-29c29
+29,30c29,30
+<     #exec_resource_class: xlarge
+<   parallelism: 1
+---
+>     exec_resource_class: xlarge
+>   parallelism: 2
+35c35
 <     #exec_resource_class: xlarge
 ---
 >     exec_resource_class: xlarge
diff --git a/.circleci/config.yml b/.circleci/config.yml
index b1ed0ef..ae582af 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -86,7 +86,7 @@ jobs:
     - attach_workspace:
         at: /home/cassandra
     - run:
-        name: Determine Unit Tests to 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
@@ -100,7 +100,7 @@ jobs:
 
           # split up the unit tests into groups based on the number of containers we have
           set -eo pipefail && circleci tests split --split-by=timings --timings-type=filename --index=${CIRCLE_NODE_INDEX} --total=${CIRCLE_NODE_TOTAL} /tmp/all_java_unit_tests.txt > /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt
-          set -eo pipefail && cat /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt | cut -c 37-1000000 | grep "Test\.java$" > /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt
+          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
@@ -170,12 +170,53 @@ jobs:
     - attach_workspace:
         at: /home/cassandra
     - run:
-        name: Run Unit Tests (test-jvm-dtest-forking)
+        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: |
           export PATH=$JAVA_HOME/bin:$PATH
           time mv ~/cassandra /tmp
           cd /tmp/cassandra
-          ant clean test-jvm-dtest-forking
+          ant testclasslist -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/
@@ -256,7 +297,7 @@ jobs:
     - attach_workspace:
         at: /home/cassandra
     - run:
-        name: Determine Unit Tests to 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
@@ -270,7 +311,7 @@ jobs:
 
           # split up the unit tests into groups based on the number of containers we have
           set -eo pipefail && circleci tests split --split-by=timings --timings-type=filename --index=${CIRCLE_NODE_INDEX} --total=${CIRCLE_NODE_TOTAL} /tmp/all_java_unit_tests.txt > /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt
-          set -eo pipefail && cat /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt | cut -c 37-1000000 | grep "Test\.java$" > /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt
+          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
@@ -357,36 +398,11 @@ jobs:
     - run:
         name: Determine Tests to Run (j8_with_vnodes)
         no_output_timeout: 5m
-        command: "# reminder: this code (along with all the steps) is independently\
-          \ executed on every circle container\n# so the goal here is to get the circleci\
-          \ script to return the tests *this* container will run\n# which we do via\
-          \ the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env/bin/activate\n\
-          export PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n  export \nfi\n\n\
-          echo \"***Collected DTests (j8_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py\
-          \ --use-vnodes --skip-resource-intensive-tests --dtest-print-tests-only\
-          \ --dtest-print-tests-output=/tmp/all_dtest_tests_j8_with_vnodes_raw --cassandra-dir=../cassandra\n\
-          if [ -z '' ]; then\n  mv /tmp/all_dtest_tests_j8_with_vnodes_raw /tmp/all_dtest_tests_j8_with_vnodes\n\
-          else\n  grep -e '' /tmp/all_dtest_tests_j8_with_vnodes_raw > /tmp/all_dtest_tests_j8_with_vnodes\
-          \ || { echo \"Filter did not match any tests! Exiting build.\"; exit 0;\
-          \ }\nfi\nset -eo pipefail && circleci tests split --split-by=timings --timings-type=classname\
-          \ /tmp/all_dtest_tests_j8_with_vnodes > /tmp/split_dtest_tests_j8_with_vnodes.txt\n\
-          cat /tmp/split_dtest_tests_j8_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j8_with_vnodes_final.txt\n\
-          cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt\n"
+        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-reso [...]
     - run:
         name: Run dtests (j8_with_vnodes)
         no_output_timeout: 15m
-        command: "echo \"cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt\"\ncat\
-          \ /tmp/split_dtest_tests_j8_with_vnodes_final.txt\n\nsource ~/env/bin/activate\n\
-          export PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n  export \nfi\n\n\
-          java -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env:\
-          \ $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need\
-          \ the \"set -o pipefail\" here so that the exit code that circleci will\
-          \ actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat\
-          \ /tmp/split_dtest_tests_j8_with_vnodes_final.txt`\nset -o pipefail && cd\
-          \ ~/cassandra-dtest && pytest --use-vnodes --num-tokens=32 --skip-resource-intensive-tests\
-          \ --log-level=\"INFO\" --junit-xml=/tmp/results/dtests/pytest_result_j8_with_vnodes.xml\
-          \ -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS\
-          \ 2>&1 | tee /tmp/dtest/stdout.txt\n"
+        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:
@@ -440,37 +456,11 @@ jobs:
     - run:
         name: Determine Tests to Run (j8_without_vnodes)
         no_output_timeout: 5m
-        command: "# reminder: this code (along with all the steps) is independently\
-          \ executed on every circle container\n# so the goal here is to get the circleci\
-          \ script to return the tests *this* container will run\n# which we do via\
-          \ the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env/bin/activate\n\
-          export PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n  export \nfi\n\n\
-          echo \"***Collected DTests (j8_without_vnodes)***\"\nset -eo pipefail &&\
-          \ ./run_dtests.py --skip-resource-intensive-tests --dtest-print-tests-only\
-          \ --dtest-print-tests-output=/tmp/all_dtest_tests_j8_without_vnodes_raw\
-          \ --cassandra-dir=../cassandra\nif [ -z '' ]; then\n  mv /tmp/all_dtest_tests_j8_without_vnodes_raw\
-          \ /tmp/all_dtest_tests_j8_without_vnodes\nelse\n  grep -e '' /tmp/all_dtest_tests_j8_without_vnodes_raw\
-          \ > /tmp/all_dtest_tests_j8_without_vnodes || { echo \"Filter did not match\
-          \ any tests! Exiting build.\"; exit 0; }\nfi\nset -eo pipefail && circleci\
-          \ tests split --split-by=timings --timings-type=classname /tmp/all_dtest_tests_j8_without_vnodes\
-          \ > /tmp/split_dtest_tests_j8_without_vnodes.txt\ncat /tmp/split_dtest_tests_j8_without_vnodes.txt\
-          \ | tr '\\n' ' ' > /tmp/split_dtest_tests_j8_without_vnodes_final.txt\n\
-          cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt\n"
+        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-inten [...]
     - run:
         name: Run dtests (j8_without_vnodes)
         no_output_timeout: 15m
-        command: "echo \"cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt\"\n\
-          cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt\n\nsource ~/env/bin/activate\n\
-          export PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n  export \nfi\n\n\
-          java -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env:\
-          \ $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need\
-          \ the \"set -o pipefail\" here so that the exit code that circleci will\
-          \ actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat\
-          \ /tmp/split_dtest_tests_j8_without_vnodes_final.txt`\nset -o pipefail &&\
-          \ cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level=\"\
-          INFO\" --junit-xml=/tmp/results/dtests/pytest_result_j8_without_vnodes.xml\
-          \ -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS\
-          \ 2>&1 | tee /tmp/dtest/stdout.txt\n"
+        command: "echo \"cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j8_without_vnodes_final.txt\n\nsource ~/env/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n  export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the [...]
     - store_test_results:
         path: /tmp/results
     - store_artifacts:
@@ -637,452 +627,3 @@ workflows:
     - j8_upgradetests-no-vnodes:
         requires:
         - start_upgrade_tests
-
-# Original config.yml file:
-# version: 2.1
-# 
-# default_env_vars: &default_env_vars
-#     JAVA8_HOME: /usr/lib/jvm/java-8-openjdk-amd64
-#     ANT_HOME: /usr/share/ant
-#     LANG: en_US.UTF-8
-#     KEEP_TEST_DIR: true
-#     DEFAULT_DIR: /home/cassandra/cassandra-dtest
-#     PYTHONIOENCODING: utf-8
-#     PYTHONUNBUFFERED: true
-#     CASS_DRIVER_NO_EXTENSIONS: true
-#     CASS_DRIVER_NO_CYTHON: true
-#     #Skip all syncing to disk to avoid performance issues in flaky CI environments
-#     CASSANDRA_SKIP_SYNC: true
-#     DTEST_REPO: git://github.com/apache/cassandra-dtest.git
-#     DTEST_BRANCH: master
-#     CCM_MAX_HEAP_SIZE: 1024M
-#     CCM_HEAP_NEWSIZE: 256M
-# 
-# j8_par_executor: &j8_par_executor
-#   executor:
-#     name: java8-executor
-#     #exec_resource_class: xlarge
-#   parallelism: 4
-# 
-# j8_seq_executor: &j8_seq_executor
-#   executor:
-#     name: java8-executor
-#     #exec_resource_class: xlarge
-#   parallelism: 1 # sequential, single container tests: no parallelism benefits
-# 
-# with_dtests_jobs: &with_dtest_jobs
-#         jobs:
-#             - build
-#             # Java 8 unit tests will be run automatically
-#             - j8_unit_tests:
-#                 requires:
-#                   - build
-#             - j8_jvm_dtests:
-#                 requires:
-#                   - build
-#             # specialized unit tests (all run on request using Java 8)
-#             - start_utests_long:
-#                 type: approval
-#                 requires:
-#                   - build
-#             - utests_long:
-#                 requires:
-#                   - start_utests_long
-#             - start_utests_compression:
-#                 type: approval
-#                 requires:
-#                   - build
-#             - utests_compression:
-#                 requires:
-#                   - start_utests_compression
-#             # Java 8 dtests (on request)
-#             - start_j8_dtests:
-#                 type: approval
-#                 requires:
-#                   - build
-#             - j8_dtests-with-vnodes:
-#                 requires:
-#                   - start_j8_dtests
-#             - j8_dtests-no-vnodes:
-#                 requires:
-#                   - start_j8_dtests
-#             # Java 8 upgrade tests
-#             - start_upgrade_tests:
-#                 type: approval
-#                 requires:
-#                   - build
-#             - j8_upgradetests-no-vnodes:
-#                 requires:
-#                   - start_upgrade_tests
-# 
-# with_dtest_jobs_only: &with_dtest_jobs_only
-#         jobs:
-#             - build
-#             - j8_dtests-with-vnodes:
-#                   requires:
-#                       - build
-#             - j8_dtests-no-vnodes:
-#                   requires:
-#                       - build
-# 
-# workflows:
-#     version: 2
-#     build_and_run_tests: *with_dtest_jobs
-#     #build_and_run_tests: *with_dtest_jobs_only
-# 
-# executors:
-#   java8-executor:
-#     parameters:
-#       exec_resource_class:
-#         type: string
-#         default: medium
-#     docker:
-#       - image: spod/cassandra-testing-ubuntu1810-java11-w-dependencies:20190306
-#     resource_class: << parameters.exec_resource_class >>
-#     working_directory: ~/
-#     shell: /bin/bash -eo pipefail -l
-#     environment:
-#       <<: *default_env_vars
-#       JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64
-#       JDK_HOME: /usr/lib/jvm/java-8-openjdk-amd64
-# 
-# jobs:
-#   build:
-#     executor: java8-executor
-#     parallelism: 1 # This job doesn't benefit from parallelism
-#     steps:
-#       - log_environment
-#       - clone_cassandra
-#       - build_cassandra
-#       - persist_to_workspace:
-#             root: /home/cassandra
-#             paths:
-#                 - cassandra
-#                 - .m2
-# 
-#   j8_unit_tests:
-#     <<: *j8_par_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - create_junit_containers
-#       - log_environment
-#       - run_parallel_junit_tests
-# 
-#   j8_jvm_dtests:
-#     <<: *j8_seq_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - run_junit_tests:
-#           target: test-jvm-dtest-forking
-# 
-#   utests_long:
-#     <<: *j8_seq_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - run_junit_tests:
-#           target: long-test
-# 
-#   utests_compression:
-#     <<: *j8_par_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - create_junit_containers
-#       - log_environment
-#       - run_parallel_junit_tests:
-#           target: testclasslist-compression
-# 
-#   j8_dtests-with-vnodes:
-#     <<: *j8_par_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - clone_dtest
-#       - create_venv
-#       - create_dtest_containers:
-#           file_tag: j8_with_vnodes
-#           run_dtests_extra_args: '--use-vnodes --skip-resource-intensive-tests'
-#       - run_dtests:
-#           file_tag: j8_with_vnodes
-#           pytest_extra_args: '--use-vnodes --num-tokens=32 --skip-resource-intensive-tests'
-# 
-#   j8_dtests-no-vnodes:
-#     <<: *j8_par_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - clone_dtest
-#       - create_venv
-#       - create_dtest_containers:
-#           file_tag: j8_without_vnodes
-#           run_dtests_extra_args: '--skip-resource-intensive-tests'
-#       - run_dtests:
-#           file_tag: j8_without_vnodes
-#           pytest_extra_args: '--skip-resource-intensive-tests'
-# 
-#   j8_upgradetests-no-vnodes:
-#     <<: *j8_par_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - clone_dtest
-#       - create_venv
-#       - create_dtest_containers:
-#           file_tag: j8_upgradetests_without_vnodes
-#           run_dtests_extra_args: '--execute-upgrade-tests'
-#           extra_env_args: 'RUN_STATIC_UPGRADE_MATRIX=true'
-#           tests_filter_pattern: '^upgrade_tests'
-#       - run_dtests:
-#           file_tag: j8_upgradetests_without_vnodes
-#           extra_env_args: 'RUN_STATIC_UPGRADE_MATRIX=true'
-#           pytest_extra_args: '--execute-upgrade-tests'
-# 
-# commands:
-#   log_environment:
-#     steps:
-#     - run:
-#         name: Log Environment Information
-#         command: |
-#           echo '*** id ***'
-#           id
-#           echo '*** cat /proc/cpuinfo ***'
-#           cat /proc/cpuinfo
-#           echo '*** free -m ***'
-#           free -m
-#           echo '*** df -m ***'
-#           df -m
-#           echo '*** ifconfig -a ***'
-#           ifconfig -a
-#           echo '*** uname -a ***'
-#           uname -a
-#           echo '*** mount ***'
-#           mount
-#           echo '*** env ***'
-#           env
-#           echo '*** java ***'
-#           which java
-#           java -version
-# 
-#   clone_cassandra:
-#     steps:
-#     - run:
-#         name: Clone Cassandra Repository (via git)
-#         command: |
-#           git clone --single-branch --depth 1 --branch $CIRCLE_BRANCH git://github.com/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME.git ~/cassandra
-# 
-#   clone_dtest:
-#     steps:
-#     - run:
-#         name: Clone Cassandra dtest Repository (via git)
-#         command: |
-#           git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest
-# 
-#   build_cassandra:
-#     steps:
-#     - run:
-#         name: Build Cassandra
-#         command: |
-#           export PATH=$JAVA_HOME/bin:$PATH
-#           cd ~/cassandra
-#           # Loop to prevent failure due to maven-ant-tasks not downloading a jar..
-#           for x in $(seq 1 3); do
-#               ${ANT_HOME}/bin/ant clean jar
-#               RETURN=\"$?\"
-#               if [ \"${RETURN}\" -eq \"0\" ]; then
-#                   break
-#               fi
-#           done
-#           # Exit, if we didn't build successfully
-#           if [ \"${RETURN}\" -ne \"0\" ]; then
-#               echo \"Build failed with exit code: ${RETURN}\"
-#               exit ${RETURN}
-#           fi
-#         no_output_timeout: 15m
-# 
-#   run_eclipse_warnings:
-#     steps:
-#     - run:
-#         name: Run eclipse-warnings
-#         command: |
-#           export PATH=$JAVA_HOME/bin:$PATH
-#           cd ~/cassandra
-#           ant eclipse-warnings
-# 
-#   create_junit_containers:
-#     steps:
-#     - run:
-#         name: Determine Unit Tests to Run
-#         command: |
-#           # reminder: this code (along with all the steps) is independently executed on every circle container
-#           # so the goal here is to get the circleci script to return the tests *this* container will run
-#           # which we do via the `circleci` cli tool.
-# 
-#           rm -fr ~/cassandra-dtest/upgrade_tests
-#           echo \"***java tests***\"
-# 
-#           # get all of our unit test filenames
-#           set -eo pipefail && circleci tests glob \"$HOME/cassandra/test/unit/**/*.java\" > /tmp/all_java_unit_tests.txt
-# 
-#           # split up the unit tests into groups based on the number of containers we have
-#           set -eo pipefail && circleci tests split --split-by=timings --timings-type=filename --index=${CIRCLE_NODE_INDEX} --total=${CIRCLE_NODE_TOTAL} /tmp/all_java_unit_tests.txt > /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt
-#           set -eo pipefail && cat /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt | cut -c 37-1000000 | grep \"Test\\.java$\" > /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt
-#           echo \"** /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt\"
-#           cat /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt
-# 
-#         no_output_timeout: 15m
-# 
-#   run_junit_tests:
-#     parameters:
-#       target:
-#         type: string
-#       no_output_timeout:
-#         type: string
-#         default: 15m
-#     steps:
-#     - run:
-#         name: Run Unit Tests (<<parameters.target>>)
-#         # Please note that we run `clean` and therefore rebuild the project, as we can't run tests on Java 8 in case
-#         # based on Java 11 builds.
-#         command: |
-#           export PATH=$JAVA_HOME/bin:$PATH
-#           time mv ~/cassandra /tmp
-#           cd /tmp/cassandra
-#           ant clean <<parameters.target>>
-#         no_output_timeout: <<parameters.no_output_timeout>>
-#     - store_test_results:
-#         path: /tmp/cassandra/build/test/output/
-#     - store_artifacts:
-#         path: /tmp/cassandra/build/test/output
-#         destination: junitxml
-#     - store_artifacts:
-#         path: /tmp/cassandra/build/test/logs
-#         destination: logs
-# 
-#   run_parallel_junit_tests:
-#     parameters:
-#       target:
-#         type: string
-#         default: testclasslist
-#       no_output_timeout:
-#         type: string
-#         default: 15m
-#     steps:
-#     - run:
-#         name: Run Unit Tests (<<parameters.target>>)
-#         # Please note that we run `clean` and therefore rebuild the project, as we can't run tests on Java 8 in case
-#         # based on Java 11 builds.
-#         command: |
-#           export PATH=$JAVA_HOME/bin:$PATH
-#           time mv ~/cassandra /tmp
-#           cd /tmp/cassandra
-#           ant <<parameters.target>> -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=unit
-#         no_output_timeout: <<parameters.no_output_timeout>>
-#     - store_test_results:
-#         path: /tmp/cassandra/build/test/output/
-#     - store_artifacts:
-#         path: /tmp/cassandra/build/test/output
-#         destination: junitxml
-#     - store_artifacts:
-#         path: /tmp/cassandra/build/test/logs
-#         destination: logs
-# 
-#   create_venv:
-#     steps:
-#     - run:
-#         name: Configure virtualenv and python Dependencies
-#         command: |
-#           # note, this should be super quick as all dependencies should be pre-installed in the docker image
-#           # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated
-#           # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and
-#           # rebuild the docker image! (it automatically pulls the latest requirements.txt on build)
-#           source ~/env/bin/activate
-#           export PATH=$JAVA_HOME/bin:$PATH
-#           pip3 install --upgrade -r ~/cassandra-dtest/requirements.txt
-#           pip3 freeze
-# 
-#   create_dtest_containers:
-#     parameters:
-#       file_tag:
-#         type: string
-#       run_dtests_extra_args:
-#         type: string
-#         default: ''
-#       extra_env_args:
-#         type: string
-#         default: ''
-#       tests_filter_pattern:
-#         type: string
-#         default: ''
-#     steps:
-#     - run:
-#         name: Determine Tests to Run (<<parameters.file_tag>>)
-#         no_output_timeout: 5m
-#         command: |
-#           # reminder: this code (along with all the steps) is independently executed on every circle container
-#           # so the goal here is to get the circleci script to return the tests *this* container will run
-#           # which we do via the `circleci` cli tool.
-# 
-#           cd cassandra-dtest
-#           source ~/env/bin/activate
-#           export PATH=$JAVA_HOME/bin:$PATH
-# 
-#           if [ -n '<<parameters.extra_env_args>>' ]; then
-#             export <<parameters.extra_env_args>>
-#           fi
-# 
-#           echo \"***Collected DTests (<<parameters.file_tag>>)***\"
-#           set -eo pipefail && ./run_dtests.py <<parameters.run_dtests_extra_args>> --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_<<parameters.file_tag>>_raw --cassandra-dir=../cassandra
-#           if [ -z '<<parameters.tests_filter_pattern>>' ]; then
-#             mv /tmp/all_dtest_tests_<<parameters.file_tag>>_raw /tmp/all_dtest_tests_<<parameters.file_tag>>
-#           else
-#             grep -e '<<parameters.tests_filter_pattern>>' /tmp/all_dtest_tests_<<parameters.file_tag>>_raw > /tmp/all_dtest_tests_<<parameters.file_tag>> || { echo \"Filter did not match any tests! Exiting build.\"; exit 0; }
-#           fi
-#           set -eo pipefail && circleci tests split --split-by=timings --timings-type=classname /tmp/all_dtest_tests_<<parameters.file_tag>> > /tmp/split_dtest_tests_<<parameters.file_tag>>.txt
-#           cat /tmp/split_dtest_tests_<<parameters.file_tag>>.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt
-#           cat /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt
-# 
-#   run_dtests:
-#     parameters:
-#       file_tag:
-#         type: string
-#       pytest_extra_args:
-#         type: string
-#         default: ''
-#       extra_env_args:
-#         type: string
-#         default: ''
-#     steps:
-#       - run:
-#           name: Run dtests (<<parameters.file_tag>>)
-#           no_output_timeout: 15m
-#           command: |
-#             echo \"cat /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt\"
-#             cat /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt
-# 
-#             source ~/env/bin/activate
-#             export PATH=$JAVA_HOME/bin:$PATH
-#             if [ -n '<<parameters.extra_env_args>>' ]; then
-#               export <<parameters.extra_env_args>>
-#             fi
-# 
-#             java -version
-#             cd ~/cassandra-dtest
-#             mkdir -p /tmp/dtest
-# 
-#             echo \"env: $(env)\"
-#             echo \"** done env\"
-#             mkdir -p /tmp/results/dtests
-#             # we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee
-#             export SPLIT_TESTS=`cat /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt`
-#             set -o pipefail && cd ~/cassandra-dtest && pytest <<parameters.pytest_extra_args>> --log-level=\"INFO\" --junit-xml=/tmp/results/dtests/pytest_result_<<parameters.file_tag>>.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt
-#       - store_test_results:
-#           path: /tmp/results
-#       - store_artifacts:
-#           path: /tmp/dtest
-#           destination: dtest_<<parameters.file_tag>>
-#       - store_artifacts:
-#           path: ~/cassandra-dtest/logs
-#           destination: dtest_<<parameters.file_tag>>_logs
diff --git a/.circleci/config.yml.HIGHRES b/.circleci/config.yml.HIGHRES
index 4bbef27..e5ed274 100644
--- a/.circleci/config.yml.HIGHRES
+++ b/.circleci/config.yml.HIGHRES
@@ -86,7 +86,7 @@ jobs:
     - attach_workspace:
         at: /home/cassandra
     - run:
-        name: Determine Unit Tests to 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
@@ -100,7 +100,7 @@ jobs:
 
           # split up the unit tests into groups based on the number of containers we have
           set -eo pipefail && circleci tests split --split-by=timings --timings-type=filename --index=${CIRCLE_NODE_INDEX} --total=${CIRCLE_NODE_TOTAL} /tmp/all_java_unit_tests.txt > /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt
-          set -eo pipefail && cat /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt | cut -c 37-1000000 | grep "Test\.java$" > /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt
+          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
@@ -165,17 +165,58 @@ jobs:
     resource_class: xlarge
     working_directory: ~/
     shell: /bin/bash -eo pipefail -l
-    parallelism: 1
+    parallelism: 2
     steps:
     - attach_workspace:
         at: /home/cassandra
     - run:
-        name: Run Unit Tests (test-jvm-dtest-forking)
+        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: |
           export PATH=$JAVA_HOME/bin:$PATH
           time mv ~/cassandra /tmp
           cd /tmp/cassandra
-          ant clean test-jvm-dtest-forking
+          ant testclasslist -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/
@@ -256,7 +297,7 @@ jobs:
     - attach_workspace:
         at: /home/cassandra
     - run:
-        name: Determine Unit Tests to 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
@@ -270,7 +311,7 @@ jobs:
 
           # split up the unit tests into groups based on the number of containers we have
           set -eo pipefail && circleci tests split --split-by=timings --timings-type=filename --index=${CIRCLE_NODE_INDEX} --total=${CIRCLE_NODE_TOTAL} /tmp/all_java_unit_tests.txt > /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt
-          set -eo pipefail && cat /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt | cut -c 37-1000000 | grep "Test\.java$" > /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt
+          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
@@ -357,36 +398,11 @@ jobs:
     - run:
         name: Determine Tests to Run (j8_with_vnodes)
         no_output_timeout: 5m
-        command: "# reminder: this code (along with all the steps) is independently\
-          \ executed on every circle container\n# so the goal here is to get the circleci\
-          \ script to return the tests *this* container will run\n# which we do via\
-          \ the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env/bin/activate\n\
-          export PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n  export \nfi\n\n\
-          echo \"***Collected DTests (j8_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py\
-          \ --use-vnodes --skip-resource-intensive-tests --dtest-print-tests-only\
-          \ --dtest-print-tests-output=/tmp/all_dtest_tests_j8_with_vnodes_raw --cassandra-dir=../cassandra\n\
-          if [ -z '' ]; then\n  mv /tmp/all_dtest_tests_j8_with_vnodes_raw /tmp/all_dtest_tests_j8_with_vnodes\n\
-          else\n  grep -e '' /tmp/all_dtest_tests_j8_with_vnodes_raw > /tmp/all_dtest_tests_j8_with_vnodes\
-          \ || { echo \"Filter did not match any tests! Exiting build.\"; exit 0;\
-          \ }\nfi\nset -eo pipefail && circleci tests split --split-by=timings --timings-type=classname\
-          \ /tmp/all_dtest_tests_j8_with_vnodes > /tmp/split_dtest_tests_j8_with_vnodes.txt\n\
-          cat /tmp/split_dtest_tests_j8_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j8_with_vnodes_final.txt\n\
-          cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt\n"
+        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-reso [...]
     - run:
         name: Run dtests (j8_with_vnodes)
         no_output_timeout: 15m
-        command: "echo \"cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt\"\ncat\
-          \ /tmp/split_dtest_tests_j8_with_vnodes_final.txt\n\nsource ~/env/bin/activate\n\
-          export PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n  export \nfi\n\n\
-          java -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env:\
-          \ $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need\
-          \ the \"set -o pipefail\" here so that the exit code that circleci will\
-          \ actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat\
-          \ /tmp/split_dtest_tests_j8_with_vnodes_final.txt`\nset -o pipefail && cd\
-          \ ~/cassandra-dtest && pytest --use-vnodes --num-tokens=32 --skip-resource-intensive-tests\
-          \ --log-level=\"INFO\" --junit-xml=/tmp/results/dtests/pytest_result_j8_with_vnodes.xml\
-          \ -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS\
-          \ 2>&1 | tee /tmp/dtest/stdout.txt\n"
+        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:
@@ -440,37 +456,11 @@ jobs:
     - run:
         name: Determine Tests to Run (j8_without_vnodes)
         no_output_timeout: 5m
-        command: "# reminder: this code (along with all the steps) is independently\
-          \ executed on every circle container\n# so the goal here is to get the circleci\
-          \ script to return the tests *this* container will run\n# which we do via\
-          \ the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env/bin/activate\n\
-          export PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n  export \nfi\n\n\
-          echo \"***Collected DTests (j8_without_vnodes)***\"\nset -eo pipefail &&\
-          \ ./run_dtests.py --skip-resource-intensive-tests --dtest-print-tests-only\
-          \ --dtest-print-tests-output=/tmp/all_dtest_tests_j8_without_vnodes_raw\
-          \ --cassandra-dir=../cassandra\nif [ -z '' ]; then\n  mv /tmp/all_dtest_tests_j8_without_vnodes_raw\
-          \ /tmp/all_dtest_tests_j8_without_vnodes\nelse\n  grep -e '' /tmp/all_dtest_tests_j8_without_vnodes_raw\
-          \ > /tmp/all_dtest_tests_j8_without_vnodes || { echo \"Filter did not match\
-          \ any tests! Exiting build.\"; exit 0; }\nfi\nset -eo pipefail && circleci\
-          \ tests split --split-by=timings --timings-type=classname /tmp/all_dtest_tests_j8_without_vnodes\
-          \ > /tmp/split_dtest_tests_j8_without_vnodes.txt\ncat /tmp/split_dtest_tests_j8_without_vnodes.txt\
-          \ | tr '\\n' ' ' > /tmp/split_dtest_tests_j8_without_vnodes_final.txt\n\
-          cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt\n"
+        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-inten [...]
     - run:
         name: Run dtests (j8_without_vnodes)
         no_output_timeout: 15m
-        command: "echo \"cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt\"\n\
-          cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt\n\nsource ~/env/bin/activate\n\
-          export PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n  export \nfi\n\n\
-          java -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env:\
-          \ $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need\
-          \ the \"set -o pipefail\" here so that the exit code that circleci will\
-          \ actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat\
-          \ /tmp/split_dtest_tests_j8_without_vnodes_final.txt`\nset -o pipefail &&\
-          \ cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level=\"\
-          INFO\" --junit-xml=/tmp/results/dtests/pytest_result_j8_without_vnodes.xml\
-          \ -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS\
-          \ 2>&1 | tee /tmp/dtest/stdout.txt\n"
+        command: "echo \"cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j8_without_vnodes_final.txt\n\nsource ~/env/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n  export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the [...]
     - store_test_results:
         path: /tmp/results
     - store_artifacts:
@@ -637,452 +627,3 @@ workflows:
     - j8_upgradetests-no-vnodes:
         requires:
         - start_upgrade_tests
-
-# Original config.yml file:
-# version: 2.1
-# 
-# default_env_vars: &default_env_vars
-#     JAVA8_HOME: /usr/lib/jvm/java-8-openjdk-amd64
-#     ANT_HOME: /usr/share/ant
-#     LANG: en_US.UTF-8
-#     KEEP_TEST_DIR: true
-#     DEFAULT_DIR: /home/cassandra/cassandra-dtest
-#     PYTHONIOENCODING: utf-8
-#     PYTHONUNBUFFERED: true
-#     CASS_DRIVER_NO_EXTENSIONS: true
-#     CASS_DRIVER_NO_CYTHON: true
-#     #Skip all syncing to disk to avoid performance issues in flaky CI environments
-#     CASSANDRA_SKIP_SYNC: true
-#     DTEST_REPO: git://github.com/apache/cassandra-dtest.git
-#     DTEST_BRANCH: master
-#     CCM_MAX_HEAP_SIZE: 2048M
-#     CCM_HEAP_NEWSIZE: 512M
-# 
-# j8_par_executor: &j8_par_executor
-#   executor:
-#     name: java8-executor
-#     exec_resource_class: xlarge
-#   parallelism: 100
-# 
-# j8_seq_executor: &j8_seq_executor
-#   executor:
-#     name: java8-executor
-#     exec_resource_class: xlarge
-#   parallelism: 1 # sequential, single container tests: no parallelism benefits
-# 
-# with_dtests_jobs: &with_dtest_jobs
-#         jobs:
-#             - build
-#             # Java 8 unit tests will be run automatically
-#             - j8_unit_tests:
-#                 requires:
-#                   - build
-#             - j8_jvm_dtests:
-#                 requires:
-#                   - build
-#             # specialized unit tests (all run on request using Java 8)
-#             - start_utests_long:
-#                 type: approval
-#                 requires:
-#                   - build
-#             - utests_long:
-#                 requires:
-#                   - start_utests_long
-#             - start_utests_compression:
-#                 type: approval
-#                 requires:
-#                   - build
-#             - utests_compression:
-#                 requires:
-#                   - start_utests_compression
-#             # Java 8 dtests (on request)
-#             - start_j8_dtests:
-#                 type: approval
-#                 requires:
-#                   - build
-#             - j8_dtests-with-vnodes:
-#                 requires:
-#                   - start_j8_dtests
-#             - j8_dtests-no-vnodes:
-#                 requires:
-#                   - start_j8_dtests
-#             # Java 8 upgrade tests
-#             - start_upgrade_tests:
-#                 type: approval
-#                 requires:
-#                   - build
-#             - j8_upgradetests-no-vnodes:
-#                 requires:
-#                   - start_upgrade_tests
-# 
-# with_dtest_jobs_only: &with_dtest_jobs_only
-#         jobs:
-#             - build
-#             - j8_dtests-with-vnodes:
-#                   requires:
-#                       - build
-#             - j8_dtests-no-vnodes:
-#                   requires:
-#                       - build
-# 
-# workflows:
-#     version: 2
-#     build_and_run_tests: *with_dtest_jobs
-#     #build_and_run_tests: *with_dtest_jobs_only
-# 
-# executors:
-#   java8-executor:
-#     parameters:
-#       exec_resource_class:
-#         type: string
-#         default: medium
-#     docker:
-#       - image: spod/cassandra-testing-ubuntu1810-java11-w-dependencies:20190306
-#     resource_class: << parameters.exec_resource_class >>
-#     working_directory: ~/
-#     shell: /bin/bash -eo pipefail -l
-#     environment:
-#       <<: *default_env_vars
-#       JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64
-#       JDK_HOME: /usr/lib/jvm/java-8-openjdk-amd64
-# 
-# jobs:
-#   build:
-#     executor: java8-executor
-#     parallelism: 1 # This job doesn't benefit from parallelism
-#     steps:
-#       - log_environment
-#       - clone_cassandra
-#       - build_cassandra
-#       - persist_to_workspace:
-#             root: /home/cassandra
-#             paths:
-#                 - cassandra
-#                 - .m2
-# 
-#   j8_unit_tests:
-#     <<: *j8_par_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - create_junit_containers
-#       - log_environment
-#       - run_parallel_junit_tests
-# 
-#   j8_jvm_dtests:
-#     <<: *j8_seq_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - run_junit_tests:
-#           target: test-jvm-dtest-forking
-# 
-#   utests_long:
-#     <<: *j8_seq_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - run_junit_tests:
-#           target: long-test
-# 
-#   utests_compression:
-#     <<: *j8_par_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - create_junit_containers
-#       - log_environment
-#       - run_parallel_junit_tests:
-#           target: testclasslist-compression
-# 
-#   j8_dtests-with-vnodes:
-#     <<: *j8_par_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - clone_dtest
-#       - create_venv
-#       - create_dtest_containers:
-#           file_tag: j8_with_vnodes
-#           run_dtests_extra_args: '--use-vnodes --skip-resource-intensive-tests'
-#       - run_dtests:
-#           file_tag: j8_with_vnodes
-#           pytest_extra_args: '--use-vnodes --num-tokens=32 --skip-resource-intensive-tests'
-# 
-#   j8_dtests-no-vnodes:
-#     <<: *j8_par_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - clone_dtest
-#       - create_venv
-#       - create_dtest_containers:
-#           file_tag: j8_without_vnodes
-#           run_dtests_extra_args: '--skip-resource-intensive-tests'
-#       - run_dtests:
-#           file_tag: j8_without_vnodes
-#           pytest_extra_args: '--skip-resource-intensive-tests'
-# 
-#   j8_upgradetests-no-vnodes:
-#     <<: *j8_par_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - clone_dtest
-#       - create_venv
-#       - create_dtest_containers:
-#           file_tag: j8_upgradetests_without_vnodes
-#           run_dtests_extra_args: '--execute-upgrade-tests'
-#           extra_env_args: 'RUN_STATIC_UPGRADE_MATRIX=true'
-#           tests_filter_pattern: '^upgrade_tests'
-#       - run_dtests:
-#           file_tag: j8_upgradetests_without_vnodes
-#           extra_env_args: 'RUN_STATIC_UPGRADE_MATRIX=true'
-#           pytest_extra_args: '--execute-upgrade-tests'
-# 
-# commands:
-#   log_environment:
-#     steps:
-#     - run:
-#         name: Log Environment Information
-#         command: |
-#           echo '*** id ***'
-#           id
-#           echo '*** cat /proc/cpuinfo ***'
-#           cat /proc/cpuinfo
-#           echo '*** free -m ***'
-#           free -m
-#           echo '*** df -m ***'
-#           df -m
-#           echo '*** ifconfig -a ***'
-#           ifconfig -a
-#           echo '*** uname -a ***'
-#           uname -a
-#           echo '*** mount ***'
-#           mount
-#           echo '*** env ***'
-#           env
-#           echo '*** java ***'
-#           which java
-#           java -version
-# 
-#   clone_cassandra:
-#     steps:
-#     - run:
-#         name: Clone Cassandra Repository (via git)
-#         command: |
-#           git clone --single-branch --depth 1 --branch $CIRCLE_BRANCH git://github.com/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME.git ~/cassandra
-# 
-#   clone_dtest:
-#     steps:
-#     - run:
-#         name: Clone Cassandra dtest Repository (via git)
-#         command: |
-#           git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest
-# 
-#   build_cassandra:
-#     steps:
-#     - run:
-#         name: Build Cassandra
-#         command: |
-#           export PATH=$JAVA_HOME/bin:$PATH
-#           cd ~/cassandra
-#           # Loop to prevent failure due to maven-ant-tasks not downloading a jar..
-#           for x in $(seq 1 3); do
-#               ${ANT_HOME}/bin/ant clean jar
-#               RETURN=\"$?\"
-#               if [ \"${RETURN}\" -eq \"0\" ]; then
-#                   break
-#               fi
-#           done
-#           # Exit, if we didn't build successfully
-#           if [ \"${RETURN}\" -ne \"0\" ]; then
-#               echo \"Build failed with exit code: ${RETURN}\"
-#               exit ${RETURN}
-#           fi
-#         no_output_timeout: 15m
-# 
-#   run_eclipse_warnings:
-#     steps:
-#     - run:
-#         name: Run eclipse-warnings
-#         command: |
-#           export PATH=$JAVA_HOME/bin:$PATH
-#           cd ~/cassandra
-#           ant eclipse-warnings
-# 
-#   create_junit_containers:
-#     steps:
-#     - run:
-#         name: Determine Unit Tests to Run
-#         command: |
-#           # reminder: this code (along with all the steps) is independently executed on every circle container
-#           # so the goal here is to get the circleci script to return the tests *this* container will run
-#           # which we do via the `circleci` cli tool.
-# 
-#           rm -fr ~/cassandra-dtest/upgrade_tests
-#           echo \"***java tests***\"
-# 
-#           # get all of our unit test filenames
-#           set -eo pipefail && circleci tests glob \"$HOME/cassandra/test/unit/**/*.java\" > /tmp/all_java_unit_tests.txt
-# 
-#           # split up the unit tests into groups based on the number of containers we have
-#           set -eo pipefail && circleci tests split --split-by=timings --timings-type=filename --index=${CIRCLE_NODE_INDEX} --total=${CIRCLE_NODE_TOTAL} /tmp/all_java_unit_tests.txt > /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt
-#           set -eo pipefail && cat /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt | cut -c 37-1000000 | grep \"Test\\.java$\" > /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt
-#           echo \"** /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt\"
-#           cat /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt
-# 
-#         no_output_timeout: 15m
-# 
-#   run_junit_tests:
-#     parameters:
-#       target:
-#         type: string
-#       no_output_timeout:
-#         type: string
-#         default: 15m
-#     steps:
-#     - run:
-#         name: Run Unit Tests (<<parameters.target>>)
-#         # Please note that we run `clean` and therefore rebuild the project, as we can't run tests on Java 8 in case
-#         # based on Java 11 builds.
-#         command: |
-#           export PATH=$JAVA_HOME/bin:$PATH
-#           time mv ~/cassandra /tmp
-#           cd /tmp/cassandra
-#           ant clean <<parameters.target>>
-#         no_output_timeout: <<parameters.no_output_timeout>>
-#     - store_test_results:
-#         path: /tmp/cassandra/build/test/output/
-#     - store_artifacts:
-#         path: /tmp/cassandra/build/test/output
-#         destination: junitxml
-#     - store_artifacts:
-#         path: /tmp/cassandra/build/test/logs
-#         destination: logs
-# 
-#   run_parallel_junit_tests:
-#     parameters:
-#       target:
-#         type: string
-#         default: testclasslist
-#       no_output_timeout:
-#         type: string
-#         default: 15m
-#     steps:
-#     - run:
-#         name: Run Unit Tests (<<parameters.target>>)
-#         # Please note that we run `clean` and therefore rebuild the project, as we can't run tests on Java 8 in case
-#         # based on Java 11 builds.
-#         command: |
-#           export PATH=$JAVA_HOME/bin:$PATH
-#           time mv ~/cassandra /tmp
-#           cd /tmp/cassandra
-#           ant <<parameters.target>> -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=unit
-#         no_output_timeout: <<parameters.no_output_timeout>>
-#     - store_test_results:
-#         path: /tmp/cassandra/build/test/output/
-#     - store_artifacts:
-#         path: /tmp/cassandra/build/test/output
-#         destination: junitxml
-#     - store_artifacts:
-#         path: /tmp/cassandra/build/test/logs
-#         destination: logs
-# 
-#   create_venv:
-#     steps:
-#     - run:
-#         name: Configure virtualenv and python Dependencies
-#         command: |
-#           # note, this should be super quick as all dependencies should be pre-installed in the docker image
-#           # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated
-#           # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and
-#           # rebuild the docker image! (it automatically pulls the latest requirements.txt on build)
-#           source ~/env/bin/activate
-#           export PATH=$JAVA_HOME/bin:$PATH
-#           pip3 install --upgrade -r ~/cassandra-dtest/requirements.txt
-#           pip3 freeze
-# 
-#   create_dtest_containers:
-#     parameters:
-#       file_tag:
-#         type: string
-#       run_dtests_extra_args:
-#         type: string
-#         default: ''
-#       extra_env_args:
-#         type: string
-#         default: ''
-#       tests_filter_pattern:
-#         type: string
-#         default: ''
-#     steps:
-#     - run:
-#         name: Determine Tests to Run (<<parameters.file_tag>>)
-#         no_output_timeout: 5m
-#         command: |
-#           # reminder: this code (along with all the steps) is independently executed on every circle container
-#           # so the goal here is to get the circleci script to return the tests *this* container will run
-#           # which we do via the `circleci` cli tool.
-# 
-#           cd cassandra-dtest
-#           source ~/env/bin/activate
-#           export PATH=$JAVA_HOME/bin:$PATH
-# 
-#           if [ -n '<<parameters.extra_env_args>>' ]; then
-#             export <<parameters.extra_env_args>>
-#           fi
-# 
-#           echo \"***Collected DTests (<<parameters.file_tag>>)***\"
-#           set -eo pipefail && ./run_dtests.py <<parameters.run_dtests_extra_args>> --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_<<parameters.file_tag>>_raw --cassandra-dir=../cassandra
-#           if [ -z '<<parameters.tests_filter_pattern>>' ]; then
-#             mv /tmp/all_dtest_tests_<<parameters.file_tag>>_raw /tmp/all_dtest_tests_<<parameters.file_tag>>
-#           else
-#             grep -e '<<parameters.tests_filter_pattern>>' /tmp/all_dtest_tests_<<parameters.file_tag>>_raw > /tmp/all_dtest_tests_<<parameters.file_tag>> || { echo \"Filter did not match any tests! Exiting build.\"; exit 0; }
-#           fi
-#           set -eo pipefail && circleci tests split --split-by=timings --timings-type=classname /tmp/all_dtest_tests_<<parameters.file_tag>> > /tmp/split_dtest_tests_<<parameters.file_tag>>.txt
-#           cat /tmp/split_dtest_tests_<<parameters.file_tag>>.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt
-#           cat /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt
-# 
-#   run_dtests:
-#     parameters:
-#       file_tag:
-#         type: string
-#       pytest_extra_args:
-#         type: string
-#         default: ''
-#       extra_env_args:
-#         type: string
-#         default: ''
-#     steps:
-#       - run:
-#           name: Run dtests (<<parameters.file_tag>>)
-#           no_output_timeout: 15m
-#           command: |
-#             echo \"cat /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt\"
-#             cat /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt
-# 
-#             source ~/env/bin/activate
-#             export PATH=$JAVA_HOME/bin:$PATH
-#             if [ -n '<<parameters.extra_env_args>>' ]; then
-#               export <<parameters.extra_env_args>>
-#             fi
-# 
-#             java -version
-#             cd ~/cassandra-dtest
-#             mkdir -p /tmp/dtest
-# 
-#             echo \"env: $(env)\"
-#             echo \"** done env\"
-#             mkdir -p /tmp/results/dtests
-#             # we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee
-#             export SPLIT_TESTS=`cat /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt`
-#             set -o pipefail && cd ~/cassandra-dtest && pytest <<parameters.pytest_extra_args>> --log-level=\"INFO\" --junit-xml=/tmp/results/dtests/pytest_result_<<parameters.file_tag>>.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt
-#       - store_test_results:
-#           path: /tmp/results
-#       - store_artifacts:
-#           path: /tmp/dtest
-#           destination: dtest_<<parameters.file_tag>>
-#       - store_artifacts:
-#           path: ~/cassandra-dtest/logs
-#           destination: dtest_<<parameters.file_tag>>_logs
diff --git a/.circleci/config.yml.LOWRES b/.circleci/config.yml.LOWRES
index b1ed0ef..ae582af 100644
--- a/.circleci/config.yml.LOWRES
+++ b/.circleci/config.yml.LOWRES
@@ -86,7 +86,7 @@ jobs:
     - attach_workspace:
         at: /home/cassandra
     - run:
-        name: Determine Unit Tests to 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
@@ -100,7 +100,7 @@ jobs:
 
           # split up the unit tests into groups based on the number of containers we have
           set -eo pipefail && circleci tests split --split-by=timings --timings-type=filename --index=${CIRCLE_NODE_INDEX} --total=${CIRCLE_NODE_TOTAL} /tmp/all_java_unit_tests.txt > /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt
-          set -eo pipefail && cat /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt | cut -c 37-1000000 | grep "Test\.java$" > /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt
+          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
@@ -170,12 +170,53 @@ jobs:
     - attach_workspace:
         at: /home/cassandra
     - run:
-        name: Run Unit Tests (test-jvm-dtest-forking)
+        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: |
           export PATH=$JAVA_HOME/bin:$PATH
           time mv ~/cassandra /tmp
           cd /tmp/cassandra
-          ant clean test-jvm-dtest-forking
+          ant testclasslist -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/
@@ -256,7 +297,7 @@ jobs:
     - attach_workspace:
         at: /home/cassandra
     - run:
-        name: Determine Unit Tests to 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
@@ -270,7 +311,7 @@ jobs:
 
           # split up the unit tests into groups based on the number of containers we have
           set -eo pipefail && circleci tests split --split-by=timings --timings-type=filename --index=${CIRCLE_NODE_INDEX} --total=${CIRCLE_NODE_TOTAL} /tmp/all_java_unit_tests.txt > /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt
-          set -eo pipefail && cat /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt | cut -c 37-1000000 | grep "Test\.java$" > /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt
+          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
@@ -357,36 +398,11 @@ jobs:
     - run:
         name: Determine Tests to Run (j8_with_vnodes)
         no_output_timeout: 5m
-        command: "# reminder: this code (along with all the steps) is independently\
-          \ executed on every circle container\n# so the goal here is to get the circleci\
-          \ script to return the tests *this* container will run\n# which we do via\
-          \ the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env/bin/activate\n\
-          export PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n  export \nfi\n\n\
-          echo \"***Collected DTests (j8_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py\
-          \ --use-vnodes --skip-resource-intensive-tests --dtest-print-tests-only\
-          \ --dtest-print-tests-output=/tmp/all_dtest_tests_j8_with_vnodes_raw --cassandra-dir=../cassandra\n\
-          if [ -z '' ]; then\n  mv /tmp/all_dtest_tests_j8_with_vnodes_raw /tmp/all_dtest_tests_j8_with_vnodes\n\
-          else\n  grep -e '' /tmp/all_dtest_tests_j8_with_vnodes_raw > /tmp/all_dtest_tests_j8_with_vnodes\
-          \ || { echo \"Filter did not match any tests! Exiting build.\"; exit 0;\
-          \ }\nfi\nset -eo pipefail && circleci tests split --split-by=timings --timings-type=classname\
-          \ /tmp/all_dtest_tests_j8_with_vnodes > /tmp/split_dtest_tests_j8_with_vnodes.txt\n\
-          cat /tmp/split_dtest_tests_j8_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j8_with_vnodes_final.txt\n\
-          cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt\n"
+        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-reso [...]
     - run:
         name: Run dtests (j8_with_vnodes)
         no_output_timeout: 15m
-        command: "echo \"cat /tmp/split_dtest_tests_j8_with_vnodes_final.txt\"\ncat\
-          \ /tmp/split_dtest_tests_j8_with_vnodes_final.txt\n\nsource ~/env/bin/activate\n\
-          export PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n  export \nfi\n\n\
-          java -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env:\
-          \ $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need\
-          \ the \"set -o pipefail\" here so that the exit code that circleci will\
-          \ actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat\
-          \ /tmp/split_dtest_tests_j8_with_vnodes_final.txt`\nset -o pipefail && cd\
-          \ ~/cassandra-dtest && pytest --use-vnodes --num-tokens=32 --skip-resource-intensive-tests\
-          \ --log-level=\"INFO\" --junit-xml=/tmp/results/dtests/pytest_result_j8_with_vnodes.xml\
-          \ -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS\
-          \ 2>&1 | tee /tmp/dtest/stdout.txt\n"
+        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:
@@ -440,37 +456,11 @@ jobs:
     - run:
         name: Determine Tests to Run (j8_without_vnodes)
         no_output_timeout: 5m
-        command: "# reminder: this code (along with all the steps) is independently\
-          \ executed on every circle container\n# so the goal here is to get the circleci\
-          \ script to return the tests *this* container will run\n# which we do via\
-          \ the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env/bin/activate\n\
-          export PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n  export \nfi\n\n\
-          echo \"***Collected DTests (j8_without_vnodes)***\"\nset -eo pipefail &&\
-          \ ./run_dtests.py --skip-resource-intensive-tests --dtest-print-tests-only\
-          \ --dtest-print-tests-output=/tmp/all_dtest_tests_j8_without_vnodes_raw\
-          \ --cassandra-dir=../cassandra\nif [ -z '' ]; then\n  mv /tmp/all_dtest_tests_j8_without_vnodes_raw\
-          \ /tmp/all_dtest_tests_j8_without_vnodes\nelse\n  grep -e '' /tmp/all_dtest_tests_j8_without_vnodes_raw\
-          \ > /tmp/all_dtest_tests_j8_without_vnodes || { echo \"Filter did not match\
-          \ any tests! Exiting build.\"; exit 0; }\nfi\nset -eo pipefail && circleci\
-          \ tests split --split-by=timings --timings-type=classname /tmp/all_dtest_tests_j8_without_vnodes\
-          \ > /tmp/split_dtest_tests_j8_without_vnodes.txt\ncat /tmp/split_dtest_tests_j8_without_vnodes.txt\
-          \ | tr '\\n' ' ' > /tmp/split_dtest_tests_j8_without_vnodes_final.txt\n\
-          cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt\n"
+        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-inten [...]
     - run:
         name: Run dtests (j8_without_vnodes)
         no_output_timeout: 15m
-        command: "echo \"cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt\"\n\
-          cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt\n\nsource ~/env/bin/activate\n\
-          export PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n  export \nfi\n\n\
-          java -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env:\
-          \ $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need\
-          \ the \"set -o pipefail\" here so that the exit code that circleci will\
-          \ actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat\
-          \ /tmp/split_dtest_tests_j8_without_vnodes_final.txt`\nset -o pipefail &&\
-          \ cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level=\"\
-          INFO\" --junit-xml=/tmp/results/dtests/pytest_result_j8_without_vnodes.xml\
-          \ -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS\
-          \ 2>&1 | tee /tmp/dtest/stdout.txt\n"
+        command: "echo \"cat /tmp/split_dtest_tests_j8_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j8_without_vnodes_final.txt\n\nsource ~/env/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n  export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the [...]
     - store_test_results:
         path: /tmp/results
     - store_artifacts:
@@ -637,452 +627,3 @@ workflows:
     - j8_upgradetests-no-vnodes:
         requires:
         - start_upgrade_tests
-
-# Original config.yml file:
-# version: 2.1
-# 
-# default_env_vars: &default_env_vars
-#     JAVA8_HOME: /usr/lib/jvm/java-8-openjdk-amd64
-#     ANT_HOME: /usr/share/ant
-#     LANG: en_US.UTF-8
-#     KEEP_TEST_DIR: true
-#     DEFAULT_DIR: /home/cassandra/cassandra-dtest
-#     PYTHONIOENCODING: utf-8
-#     PYTHONUNBUFFERED: true
-#     CASS_DRIVER_NO_EXTENSIONS: true
-#     CASS_DRIVER_NO_CYTHON: true
-#     #Skip all syncing to disk to avoid performance issues in flaky CI environments
-#     CASSANDRA_SKIP_SYNC: true
-#     DTEST_REPO: git://github.com/apache/cassandra-dtest.git
-#     DTEST_BRANCH: master
-#     CCM_MAX_HEAP_SIZE: 1024M
-#     CCM_HEAP_NEWSIZE: 256M
-# 
-# j8_par_executor: &j8_par_executor
-#   executor:
-#     name: java8-executor
-#     #exec_resource_class: xlarge
-#   parallelism: 4
-# 
-# j8_seq_executor: &j8_seq_executor
-#   executor:
-#     name: java8-executor
-#     #exec_resource_class: xlarge
-#   parallelism: 1 # sequential, single container tests: no parallelism benefits
-# 
-# with_dtests_jobs: &with_dtest_jobs
-#         jobs:
-#             - build
-#             # Java 8 unit tests will be run automatically
-#             - j8_unit_tests:
-#                 requires:
-#                   - build
-#             - j8_jvm_dtests:
-#                 requires:
-#                   - build
-#             # specialized unit tests (all run on request using Java 8)
-#             - start_utests_long:
-#                 type: approval
-#                 requires:
-#                   - build
-#             - utests_long:
-#                 requires:
-#                   - start_utests_long
-#             - start_utests_compression:
-#                 type: approval
-#                 requires:
-#                   - build
-#             - utests_compression:
-#                 requires:
-#                   - start_utests_compression
-#             # Java 8 dtests (on request)
-#             - start_j8_dtests:
-#                 type: approval
-#                 requires:
-#                   - build
-#             - j8_dtests-with-vnodes:
-#                 requires:
-#                   - start_j8_dtests
-#             - j8_dtests-no-vnodes:
-#                 requires:
-#                   - start_j8_dtests
-#             # Java 8 upgrade tests
-#             - start_upgrade_tests:
-#                 type: approval
-#                 requires:
-#                   - build
-#             - j8_upgradetests-no-vnodes:
-#                 requires:
-#                   - start_upgrade_tests
-# 
-# with_dtest_jobs_only: &with_dtest_jobs_only
-#         jobs:
-#             - build
-#             - j8_dtests-with-vnodes:
-#                   requires:
-#                       - build
-#             - j8_dtests-no-vnodes:
-#                   requires:
-#                       - build
-# 
-# workflows:
-#     version: 2
-#     build_and_run_tests: *with_dtest_jobs
-#     #build_and_run_tests: *with_dtest_jobs_only
-# 
-# executors:
-#   java8-executor:
-#     parameters:
-#       exec_resource_class:
-#         type: string
-#         default: medium
-#     docker:
-#       - image: spod/cassandra-testing-ubuntu1810-java11-w-dependencies:20190306
-#     resource_class: << parameters.exec_resource_class >>
-#     working_directory: ~/
-#     shell: /bin/bash -eo pipefail -l
-#     environment:
-#       <<: *default_env_vars
-#       JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64
-#       JDK_HOME: /usr/lib/jvm/java-8-openjdk-amd64
-# 
-# jobs:
-#   build:
-#     executor: java8-executor
-#     parallelism: 1 # This job doesn't benefit from parallelism
-#     steps:
-#       - log_environment
-#       - clone_cassandra
-#       - build_cassandra
-#       - persist_to_workspace:
-#             root: /home/cassandra
-#             paths:
-#                 - cassandra
-#                 - .m2
-# 
-#   j8_unit_tests:
-#     <<: *j8_par_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - create_junit_containers
-#       - log_environment
-#       - run_parallel_junit_tests
-# 
-#   j8_jvm_dtests:
-#     <<: *j8_seq_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - run_junit_tests:
-#           target: test-jvm-dtest-forking
-# 
-#   utests_long:
-#     <<: *j8_seq_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - run_junit_tests:
-#           target: long-test
-# 
-#   utests_compression:
-#     <<: *j8_par_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - create_junit_containers
-#       - log_environment
-#       - run_parallel_junit_tests:
-#           target: testclasslist-compression
-# 
-#   j8_dtests-with-vnodes:
-#     <<: *j8_par_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - clone_dtest
-#       - create_venv
-#       - create_dtest_containers:
-#           file_tag: j8_with_vnodes
-#           run_dtests_extra_args: '--use-vnodes --skip-resource-intensive-tests'
-#       - run_dtests:
-#           file_tag: j8_with_vnodes
-#           pytest_extra_args: '--use-vnodes --num-tokens=32 --skip-resource-intensive-tests'
-# 
-#   j8_dtests-no-vnodes:
-#     <<: *j8_par_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - clone_dtest
-#       - create_venv
-#       - create_dtest_containers:
-#           file_tag: j8_without_vnodes
-#           run_dtests_extra_args: '--skip-resource-intensive-tests'
-#       - run_dtests:
-#           file_tag: j8_without_vnodes
-#           pytest_extra_args: '--skip-resource-intensive-tests'
-# 
-#   j8_upgradetests-no-vnodes:
-#     <<: *j8_par_executor
-#     steps:
-#       - attach_workspace:
-#           at: /home/cassandra
-#       - clone_dtest
-#       - create_venv
-#       - create_dtest_containers:
-#           file_tag: j8_upgradetests_without_vnodes
-#           run_dtests_extra_args: '--execute-upgrade-tests'
-#           extra_env_args: 'RUN_STATIC_UPGRADE_MATRIX=true'
-#           tests_filter_pattern: '^upgrade_tests'
-#       - run_dtests:
-#           file_tag: j8_upgradetests_without_vnodes
-#           extra_env_args: 'RUN_STATIC_UPGRADE_MATRIX=true'
-#           pytest_extra_args: '--execute-upgrade-tests'
-# 
-# commands:
-#   log_environment:
-#     steps:
-#     - run:
-#         name: Log Environment Information
-#         command: |
-#           echo '*** id ***'
-#           id
-#           echo '*** cat /proc/cpuinfo ***'
-#           cat /proc/cpuinfo
-#           echo '*** free -m ***'
-#           free -m
-#           echo '*** df -m ***'
-#           df -m
-#           echo '*** ifconfig -a ***'
-#           ifconfig -a
-#           echo '*** uname -a ***'
-#           uname -a
-#           echo '*** mount ***'
-#           mount
-#           echo '*** env ***'
-#           env
-#           echo '*** java ***'
-#           which java
-#           java -version
-# 
-#   clone_cassandra:
-#     steps:
-#     - run:
-#         name: Clone Cassandra Repository (via git)
-#         command: |
-#           git clone --single-branch --depth 1 --branch $CIRCLE_BRANCH git://github.com/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME.git ~/cassandra
-# 
-#   clone_dtest:
-#     steps:
-#     - run:
-#         name: Clone Cassandra dtest Repository (via git)
-#         command: |
-#           git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest
-# 
-#   build_cassandra:
-#     steps:
-#     - run:
-#         name: Build Cassandra
-#         command: |
-#           export PATH=$JAVA_HOME/bin:$PATH
-#           cd ~/cassandra
-#           # Loop to prevent failure due to maven-ant-tasks not downloading a jar..
-#           for x in $(seq 1 3); do
-#               ${ANT_HOME}/bin/ant clean jar
-#               RETURN=\"$?\"
-#               if [ \"${RETURN}\" -eq \"0\" ]; then
-#                   break
-#               fi
-#           done
-#           # Exit, if we didn't build successfully
-#           if [ \"${RETURN}\" -ne \"0\" ]; then
-#               echo \"Build failed with exit code: ${RETURN}\"
-#               exit ${RETURN}
-#           fi
-#         no_output_timeout: 15m
-# 
-#   run_eclipse_warnings:
-#     steps:
-#     - run:
-#         name: Run eclipse-warnings
-#         command: |
-#           export PATH=$JAVA_HOME/bin:$PATH
-#           cd ~/cassandra
-#           ant eclipse-warnings
-# 
-#   create_junit_containers:
-#     steps:
-#     - run:
-#         name: Determine Unit Tests to Run
-#         command: |
-#           # reminder: this code (along with all the steps) is independently executed on every circle container
-#           # so the goal here is to get the circleci script to return the tests *this* container will run
-#           # which we do via the `circleci` cli tool.
-# 
-#           rm -fr ~/cassandra-dtest/upgrade_tests
-#           echo \"***java tests***\"
-# 
-#           # get all of our unit test filenames
-#           set -eo pipefail && circleci tests glob \"$HOME/cassandra/test/unit/**/*.java\" > /tmp/all_java_unit_tests.txt
-# 
-#           # split up the unit tests into groups based on the number of containers we have
-#           set -eo pipefail && circleci tests split --split-by=timings --timings-type=filename --index=${CIRCLE_NODE_INDEX} --total=${CIRCLE_NODE_TOTAL} /tmp/all_java_unit_tests.txt > /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt
-#           set -eo pipefail && cat /tmp/java_tests_${CIRCLE_NODE_INDEX}.txt | cut -c 37-1000000 | grep \"Test\\.java$\" > /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt
-#           echo \"** /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt\"
-#           cat /tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt
-# 
-#         no_output_timeout: 15m
-# 
-#   run_junit_tests:
-#     parameters:
-#       target:
-#         type: string
-#       no_output_timeout:
-#         type: string
-#         default: 15m
-#     steps:
-#     - run:
-#         name: Run Unit Tests (<<parameters.target>>)
-#         # Please note that we run `clean` and therefore rebuild the project, as we can't run tests on Java 8 in case
-#         # based on Java 11 builds.
-#         command: |
-#           export PATH=$JAVA_HOME/bin:$PATH
-#           time mv ~/cassandra /tmp
-#           cd /tmp/cassandra
-#           ant clean <<parameters.target>>
-#         no_output_timeout: <<parameters.no_output_timeout>>
-#     - store_test_results:
-#         path: /tmp/cassandra/build/test/output/
-#     - store_artifacts:
-#         path: /tmp/cassandra/build/test/output
-#         destination: junitxml
-#     - store_artifacts:
-#         path: /tmp/cassandra/build/test/logs
-#         destination: logs
-# 
-#   run_parallel_junit_tests:
-#     parameters:
-#       target:
-#         type: string
-#         default: testclasslist
-#       no_output_timeout:
-#         type: string
-#         default: 15m
-#     steps:
-#     - run:
-#         name: Run Unit Tests (<<parameters.target>>)
-#         # Please note that we run `clean` and therefore rebuild the project, as we can't run tests on Java 8 in case
-#         # based on Java 11 builds.
-#         command: |
-#           export PATH=$JAVA_HOME/bin:$PATH
-#           time mv ~/cassandra /tmp
-#           cd /tmp/cassandra
-#           ant <<parameters.target>> -Dtest.classlistfile=/tmp/java_tests_${CIRCLE_NODE_INDEX}_final.txt  -Dtest.classlistprefix=unit
-#         no_output_timeout: <<parameters.no_output_timeout>>
-#     - store_test_results:
-#         path: /tmp/cassandra/build/test/output/
-#     - store_artifacts:
-#         path: /tmp/cassandra/build/test/output
-#         destination: junitxml
-#     - store_artifacts:
-#         path: /tmp/cassandra/build/test/logs
-#         destination: logs
-# 
-#   create_venv:
-#     steps:
-#     - run:
-#         name: Configure virtualenv and python Dependencies
-#         command: |
-#           # note, this should be super quick as all dependencies should be pre-installed in the docker image
-#           # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated
-#           # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and
-#           # rebuild the docker image! (it automatically pulls the latest requirements.txt on build)
-#           source ~/env/bin/activate
-#           export PATH=$JAVA_HOME/bin:$PATH
-#           pip3 install --upgrade -r ~/cassandra-dtest/requirements.txt
-#           pip3 freeze
-# 
-#   create_dtest_containers:
-#     parameters:
-#       file_tag:
-#         type: string
-#       run_dtests_extra_args:
-#         type: string
-#         default: ''
-#       extra_env_args:
-#         type: string
-#         default: ''
-#       tests_filter_pattern:
-#         type: string
-#         default: ''
-#     steps:
-#     - run:
-#         name: Determine Tests to Run (<<parameters.file_tag>>)
-#         no_output_timeout: 5m
-#         command: |
-#           # reminder: this code (along with all the steps) is independently executed on every circle container
-#           # so the goal here is to get the circleci script to return the tests *this* container will run
-#           # which we do via the `circleci` cli tool.
-# 
-#           cd cassandra-dtest
-#           source ~/env/bin/activate
-#           export PATH=$JAVA_HOME/bin:$PATH
-# 
-#           if [ -n '<<parameters.extra_env_args>>' ]; then
-#             export <<parameters.extra_env_args>>
-#           fi
-# 
-#           echo \"***Collected DTests (<<parameters.file_tag>>)***\"
-#           set -eo pipefail && ./run_dtests.py <<parameters.run_dtests_extra_args>> --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_<<parameters.file_tag>>_raw --cassandra-dir=../cassandra
-#           if [ -z '<<parameters.tests_filter_pattern>>' ]; then
-#             mv /tmp/all_dtest_tests_<<parameters.file_tag>>_raw /tmp/all_dtest_tests_<<parameters.file_tag>>
-#           else
-#             grep -e '<<parameters.tests_filter_pattern>>' /tmp/all_dtest_tests_<<parameters.file_tag>>_raw > /tmp/all_dtest_tests_<<parameters.file_tag>> || { echo \"Filter did not match any tests! Exiting build.\"; exit 0; }
-#           fi
-#           set -eo pipefail && circleci tests split --split-by=timings --timings-type=classname /tmp/all_dtest_tests_<<parameters.file_tag>> > /tmp/split_dtest_tests_<<parameters.file_tag>>.txt
-#           cat /tmp/split_dtest_tests_<<parameters.file_tag>>.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt
-#           cat /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt
-# 
-#   run_dtests:
-#     parameters:
-#       file_tag:
-#         type: string
-#       pytest_extra_args:
-#         type: string
-#         default: ''
-#       extra_env_args:
-#         type: string
-#         default: ''
-#     steps:
-#       - run:
-#           name: Run dtests (<<parameters.file_tag>>)
-#           no_output_timeout: 15m
-#           command: |
-#             echo \"cat /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt\"
-#             cat /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt
-# 
-#             source ~/env/bin/activate
-#             export PATH=$JAVA_HOME/bin:$PATH
-#             if [ -n '<<parameters.extra_env_args>>' ]; then
-#               export <<parameters.extra_env_args>>
-#             fi
-# 
-#             java -version
-#             cd ~/cassandra-dtest
-#             mkdir -p /tmp/dtest
-# 
-#             echo \"env: $(env)\"
-#             echo \"** done env\"
-#             mkdir -p /tmp/results/dtests
-#             # we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee
-#             export SPLIT_TESTS=`cat /tmp/split_dtest_tests_<<parameters.file_tag>>_final.txt`
-#             set -o pipefail && cd ~/cassandra-dtest && pytest <<parameters.pytest_extra_args>> --log-level=\"INFO\" --junit-xml=/tmp/results/dtests/pytest_result_<<parameters.file_tag>>.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt
-#       - store_test_results:
-#           path: /tmp/results
-#       - store_artifacts:
-#           path: /tmp/dtest
-#           destination: dtest_<<parameters.file_tag>>
-#       - store_artifacts:
-#           path: ~/cassandra-dtest/logs
-#           destination: dtest_<<parameters.file_tag>>_logs


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