From 8fd44ca8fc9e0b0e94932bcd855e2833bf6ca3cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20de=20la=20Pe=C3=B1a?= Date: Tue, 2 Jan 2024 12:18:47 +0000 Subject: [PATCH] Upgrade Python driver to 3.29.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit patch by Andrés de la Peña; reviewed by Berenguer Blasi for CASSANDRA-19245 --- .build/build-resolver.xml | 2 - .build/docker/run-tests.sh | 4 +- .build/docker/ubuntu2004_test.docker | 24 +- .build/run-python-dtests.sh | 2 +- .circleci/config.yml | 827 ++---------------- .circleci/config.yml.FREE | 827 ++---------------- .circleci/config.yml.PAID | 827 ++---------------- .circleci/config_template.yml | 170 +--- .circleci/config_template.yml.PAID.patch | 104 +-- CHANGES.txt | 1 + NEWS.txt | 4 +- bin/cqlsh | 6 +- bin/cqlsh.py | 6 +- .../pages/installing/installing.adoc | 2 +- lib/cassandra-driver-internal-only-3.28.0.zip | Bin 356837 -> 0 bytes lib/cassandra-driver-internal-only-3.29.0.zip | Bin 0 -> 396496 bytes pylib/Dockerfile.ubuntu.py3 | 2 +- ...le.ubuntu.py37 => Dockerfile.ubuntu.py311} | 2 +- pylib/README.asc | 2 +- pylib/cassandra-cqlsh-tests.sh | 2 +- pylib/cqlshlib/test/run_cqlsh.py | 2 +- pylib/requirements.txt | 2 +- 22 files changed, 222 insertions(+), 2596 deletions(-) delete mode 100644 lib/cassandra-driver-internal-only-3.28.0.zip create mode 100644 lib/cassandra-driver-internal-only-3.29.0.zip rename pylib/{Dockerfile.ubuntu.py37 => Dockerfile.ubuntu.py311} (80%) diff --git a/.build/build-resolver.xml b/.build/build-resolver.xml index c95dc1eb78..fa4e1841c8 100644 --- a/.build/build-resolver.xml +++ b/.build/build-resolver.xml @@ -233,7 +233,6 @@ - @@ -272,7 +271,6 @@ - diff --git a/.build/docker/run-tests.sh b/.build/docker/run-tests.sh index 44fc82da06..9569101416 100755 --- a/.build/docker/run-tests.sh +++ b/.build/docker/run-tests.sh @@ -69,10 +69,10 @@ if [[ ! "${java_version}" =~ $regx_java_version ]]; then exit 1 fi -# allow python version override, otherwise default to current python version or 3.7 +# allow python version override, otherwise default to current python version or 3.8 if [ "x" == "x${python_version}" ] ; then command -v python >/dev/null 2>&1 && python_version="$(python -V 2>&1 | awk '{print $2}' | awk -F'.' '{print $1"."$2}')" - python_version="${python_version:-3.7}" + python_version="${python_version:-3.8}" fi # print debug information on versions diff --git a/.build/docker/ubuntu2004_test.docker b/.build/docker/ubuntu2004_test.docker index 7bda7074ef..614173312f 100644 --- a/.build/docker/ubuntu2004_test.docker +++ b/.build/docker/ubuntu2004_test.docker @@ -48,7 +48,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ add-apt-repository -y ppa:deadsnakes/ppa && \ apt-get update && \ apt-get install -y curl git-core python3-pip \ - python3.7 python3.7-venv python3.7-dev \ python3.8 python3.8-venv python3.8-dev \ python3.11 python3.11-venv python3.11-dev \ virtualenv net-tools libev4 libev-dev wget gcc libxml2 libxslt1-dev \ @@ -56,10 +55,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ openjdk-8-jdk openjdk-11-jdk openjdk-17-jdk ant ant-optional -RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.7 2 -RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.8 3 -RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.11 4 -RUN python3.7 -m pip install --upgrade pip +RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2 +RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.11 3 RUN python3.8 -m pip install --upgrade pip # generate locales for the standard en_US.UTF8 value we use for testing @@ -95,7 +92,7 @@ WORKDIR ${BUILD_HOME} ENV ANT_HOME=/usr/share/ant # run pip commands and setup virtualenv (note we do this after we switch to cassandra user so we -# setup the virtualenv for the cassandra user and not the root user by accident) for Python 3.7/3.8 +# setup the virtualenv for the cassandra user and not the root user by accident) for Python 3.8/3.11 # Don't build cython extensions when installing cassandra-driver. During test execution the driver # dependency is refreshed via pip install --upgrade, so that driver changes can be pulled in without # requiring the image to be rebuilt. Rebuilding compiled extensions is costly and is disabled by @@ -103,15 +100,6 @@ ENV ANT_HOME=/usr/share/ant # included in the base image, the compiled objects are not updated by pip at run time, which can # cause errors if the tests rely on new driver functionality or bug fixes. -RUN virtualenv --python=python3.7 ${BUILD_HOME}/env3.7 -RUN chmod +x ${BUILD_HOME}/env3.7/bin/activate - -RUN /bin/bash -c "export CASS_DRIVER_NO_CYTHON=1 CASS_DRIVER_NO_EXTENSIONS=1 \ - && source ${BUILD_HOME}/env3.7/bin/activate \ - && pip3 install --upgrade pip \ - && pip3 install -r /opt/requirements.txt \ - && pip3 freeze --user" - RUN virtualenv --python=python3.8 ${BUILD_HOME}/env3.8 RUN chmod +x ${BUILD_HOME}/env3.8/bin/activate @@ -131,14 +119,14 @@ RUN /bin/bash -c "export CASS_DRIVER_NO_CYTHON=1 CASS_DRIVER_NO_EXTENSIONS=1 \ && pip3 freeze --user" # Initialize the CCM git repo as well as this also can fail to clone -RUN /bin/bash -c "source ${BUILD_HOME}/env3.7/bin/activate && \ +RUN /bin/bash -c "source ${BUILD_HOME}/env3.8/bin/activate && \ ccm create -n 1 -v git:cassandra-4.1 test && ccm remove test && \ ccm create -n 1 -v git:cassandra-4.0 test && ccm remove test" # Initialize ccm versions. right side of each sequence needs to be updated with new releases. # this can be checked with: # `curl -s https://downloads.apache.org/cassandra/ | grep -oP '(?<=href=\")[0-9]+\.[0-9]+\.[0-9]+(?=)' | sort -V | uniq -w 3` -RUN bash -c 'source ~/env3.7/bin/activate && \ +RUN bash -c 'source ~/env3.8/bin/activate && \ for i in {1..11} ; do echo $i ; ccm create --quiet -n 1 -v binary:4.0.$i test && ccm remove test ; done && \ for i in {1..3} ; do echo $i ; ccm create --quiet -n 1 -v binary:4.1.$i test && ccm remove test ; done' @@ -147,7 +135,7 @@ RUN sudo update-java-alternatives --set java-1.11.0-openjdk-$(dpkg --print-archi # Initialize the CCM git repo as well as this also can fail to clone # TODO Move binary:5.0* to above once GA -RUN /bin/bash -c 'source ~/env3.7/bin/activate && \ +RUN /bin/bash -c 'source ~/env3.8/bin/activate && \ ccm create -n 1 -v git:trunk test && ccm remove test && \ ccm create -n 1 -v git:cassandra-5.0 test && ccm remove test && \ ccm create --quiet -n 1 -v binary:5.0-beta1 test && ccm remove test ' diff --git a/.build/run-python-dtests.sh b/.build/run-python-dtests.sh index 3eb7a1aedb..360c8b68d2 100755 --- a/.build/run-python-dtests.sh +++ b/.build/run-python-dtests.sh @@ -74,7 +74,7 @@ if [ "${java_version}" -eq 17 ] && [[ "${target}" == "dtest-upgrade" ]] ; then fi python_version=$(python -V 2>&1 | awk '{print $2}' | awk -F'.' '{print $1"."$2}') -python_regx_supported_versions="^(3.7|3.8|3.11)$" +python_regx_supported_versions="^(3.8|3.9|3.10|3.11)$" [[ $python_version =~ $python_regx_supported_versions ]] || { echo "Python ${python_version} not supported."; exit 1; } # check project is already built. no cleaning is done, so jenkins unstash works, beware. diff --git a/.circleci/config.yml b/.circleci/config.yml index b1113ca1f2..0d33529a5a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -151,7 +151,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -159,11 +159,11 @@ jobs: - run: name: Determine Tests to Run (j17_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_without_vnodes_raw /tmp/all_dtest_tests_j17_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_without_vnodes_raw > /tmp/all_dtest_tests_j17_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_j17_without_vnodes > /tmp/split_dtest_tests_j17_without_vnodes.txt\ncat /tmp/split_dtest_tests_j17_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_without_vnodes_raw /tmp/all_dtest_tests_j17_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_without_vnodes_raw > /tmp/all_dtest_tests_j17_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_j17_without_vnodes > /tmp/split_dtest_tests_j17_without_vnodes.txt\ncat /tmp/split_dtest_tests_j17_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_without_vnodes_final.txt\n" - run: name: Run dtests (j17_without_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_without_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_without_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -630,114 +630,6 @@ jobs: - JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - CASSANDRA_USE_JDK11: true - j17_cqlsh_dtests_py3_offheap: - docker: - - image: apache/cassandra-testing-ubuntu2004-java11:latest - resource_class: medium - working_directory: ~/ - shell: /bin/bash -eo pipefail -l - parallelism: 4 - steps: - - attach_workspace: - at: /home/cassandra - - run: - name: Clone Cassandra dtest Repository (via git) - command: | - git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest - - run: - name: Configure virtualenv and python Dependencies - command: | - # note, this should be super quick as all dependencies should be pre-installed in the docker image - # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated - # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and - # rebuild the docker image! (it automatically pulls the latest requirements.txt on build) - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt - pip3 uninstall -y cqlsh - pip3 freeze - - run: - name: Determine Tests to Run (j17_dtests_offheap) - 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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_dtests_offheap)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_dtests_offheap_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_dtests_offheap_raw /tmp/all_dtest_tests_j17_dtests_offheap\nelse\n grep -e '' /tmp/all_dtest_tests_j17_dtests_offheap_raw > /tmp/all_dtest_tests_j17_dtests_offheap || { 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_j17_dtests_offheap > /tmp/split_dtest_tests_j17_dtests_offheap.txt\ncat /tmp/split_dtest_tests_j17_dtests_offheap.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\ncat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\n" - - run: - name: Run dtests (j17_dtests_offheap) - no_output_timeout: 15m - command: | - echo "cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt" - cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt - - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - if [ -n 'CQLSH_PYTHON=/usr/bin/python3.7' ]; then - export CQLSH_PYTHON=/usr/bin/python3.7 - fi - - java -version - cd ~/cassandra-dtest - mkdir -p /tmp/dtest - - echo "env: $(env)" - echo "** done env" - mkdir -p /tmp/results/dtests - # we need the "set -o pipefail" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee - export SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt` - if [ ! -z "$SPLIT_TESTS" ]; then - set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests --log-level="DEBUG" --junit-xml=/tmp/results/dtests/pytest_result_j17_dtests_offheap.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt - else - echo "Tune your parallelism, there are more containers than test classes. Nothing to do in this container" - (exit 1) - fi - - store_test_results: - path: /tmp/results - - store_artifacts: - path: /tmp/dtest - destination: dtest_j17_dtests_offheap - - store_artifacts: - path: ~/cassandra-dtest/logs - destination: dtest_j17_dtests_offheap_logs - environment: - - ANT_HOME: /usr/share/ant - - LANG: en_US.UTF-8 - - KEEP_TEST_DIR: true - - DEFAULT_DIR: /home/cassandra/cassandra-dtest - - PYTHONIOENCODING: utf-8 - - PYTHONUNBUFFERED: true - - CASS_DRIVER_NO_EXTENSIONS: true - - CASS_DRIVER_NO_CYTHON: true - - CASSANDRA_SKIP_SYNC: true - - DTEST_REPO: https://github.com/apache/cassandra-dtest.git - - DTEST_BRANCH: trunk - - CCM_MAX_HEAP_SIZE: 1024M - - CCM_HEAP_NEWSIZE: 256M - - REPEATED_TESTS_STOP_ON_FAILURE: false - - REPEATED_UTESTS: null - - REPEATED_UTESTS_COUNT: 500 - - REPEATED_UTESTS_FQLTOOL: null - - REPEATED_UTESTS_FQLTOOL_COUNT: 500 - - REPEATED_UTESTS_LONG: null - - REPEATED_UTESTS_LONG_COUNT: 100 - - REPEATED_UTESTS_STRESS: null - - REPEATED_UTESTS_STRESS_COUNT: 500 - - REPEATED_SIMULATOR_DTESTS: null - - REPEATED_SIMULATOR_DTESTS_COUNT: 500 - - REPEATED_JVM_DTESTS: null - - REPEATED_JVM_DTESTS_COUNT: 500 - - REPEATED_JVM_UPGRADE_DTESTS: null - - REPEATED_JVM_UPGRADE_DTESTS_COUNT: 500 - - REPEATED_DTESTS: null - - REPEATED_DTESTS_COUNT: 500 - - REPEATED_LARGE_DTESTS: null - - REPEATED_LARGE_DTESTS_COUNT: 100 - - REPEATED_UPGRADE_DTESTS: null - - REPEATED_UPGRADE_DTESTS_COUNT: 25 - - REPEATED_ANT_TEST_TARGET: testsome - - REPEATED_ANT_TEST_CLASS: null - - REPEATED_ANT_TEST_METHODS: null - - REPEATED_ANT_TEST_VNODES: false - - REPEATED_ANT_TEST_COUNT: 500 - - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 j17_utests_compression: docker: - image: apache/cassandra-testing-ubuntu2004-java11:latest @@ -1006,7 +898,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -1035,7 +927,7 @@ jobs: else echo "Running ${REPEATED_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -1138,7 +1030,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -1167,7 +1059,7 @@ jobs: else echo "Running ${REPEATED_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -1270,7 +1162,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -1299,7 +1191,7 @@ jobs: else echo "Running ${REPEATED_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -1500,114 +1392,6 @@ jobs: - JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - CASSANDRA_USE_JDK11: true - j17_cqlsh_dtests_py3: - docker: - - image: apache/cassandra-testing-ubuntu2004-java11:latest - resource_class: medium - working_directory: ~/ - shell: /bin/bash -eo pipefail -l - parallelism: 4 - steps: - - attach_workspace: - at: /home/cassandra - - run: - name: Clone Cassandra dtest Repository (via git) - command: | - git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest - - run: - name: Configure virtualenv and python Dependencies - command: | - # note, this should be super quick as all dependencies should be pre-installed in the docker image - # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated - # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and - # rebuild the docker image! (it automatically pulls the latest requirements.txt on build) - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt - pip3 uninstall -y cqlsh - pip3 freeze - - run: - name: Determine Tests to Run (j17_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-intensive-tests --pytest-options '-k cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_without_vnodes_raw /tmp/all_dtest_tests_j17_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_without_vnodes_raw > /tmp/all_dtest_tests_j17_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_j17_without_vnodes > /tmp/split_dtest_tests_j17_without_vnodes.txt\ncat /tmp/split_dtest_tests_j17_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_without_vnodes_final.txt\n" - - run: - name: Run dtests (j17_without_vnodes) - no_output_timeout: 15m - command: | - echo "cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt" - cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt - - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - if [ -n 'CQLSH_PYTHON=/usr/bin/python3.7' ]; then - export CQLSH_PYTHON=/usr/bin/python3.7 - fi - - java -version - cd ~/cassandra-dtest - mkdir -p /tmp/dtest - - echo "env: $(env)" - echo "** done env" - mkdir -p /tmp/results/dtests - # we need the "set -o pipefail" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee - export SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt` - if [ ! -z "$SPLIT_TESTS" ]; then - set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level="DEBUG" --junit-xml=/tmp/results/dtests/pytest_result_j17_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt - else - echo "Tune your parallelism, there are more containers than test classes. Nothing to do in this container" - (exit 1) - fi - - store_test_results: - path: /tmp/results - - store_artifacts: - path: /tmp/dtest - destination: dtest_j17_without_vnodes - - store_artifacts: - path: ~/cassandra-dtest/logs - destination: dtest_j17_without_vnodes_logs - environment: - - ANT_HOME: /usr/share/ant - - LANG: en_US.UTF-8 - - KEEP_TEST_DIR: true - - DEFAULT_DIR: /home/cassandra/cassandra-dtest - - PYTHONIOENCODING: utf-8 - - PYTHONUNBUFFERED: true - - CASS_DRIVER_NO_EXTENSIONS: true - - CASS_DRIVER_NO_CYTHON: true - - CASSANDRA_SKIP_SYNC: true - - DTEST_REPO: https://github.com/apache/cassandra-dtest.git - - DTEST_BRANCH: trunk - - CCM_MAX_HEAP_SIZE: 1024M - - CCM_HEAP_NEWSIZE: 256M - - REPEATED_TESTS_STOP_ON_FAILURE: false - - REPEATED_UTESTS: null - - REPEATED_UTESTS_COUNT: 500 - - REPEATED_UTESTS_FQLTOOL: null - - REPEATED_UTESTS_FQLTOOL_COUNT: 500 - - REPEATED_UTESTS_LONG: null - - REPEATED_UTESTS_LONG_COUNT: 100 - - REPEATED_UTESTS_STRESS: null - - REPEATED_UTESTS_STRESS_COUNT: 500 - - REPEATED_SIMULATOR_DTESTS: null - - REPEATED_SIMULATOR_DTESTS_COUNT: 500 - - REPEATED_JVM_DTESTS: null - - REPEATED_JVM_DTESTS_COUNT: 500 - - REPEATED_JVM_UPGRADE_DTESTS: null - - REPEATED_JVM_UPGRADE_DTESTS_COUNT: 500 - - REPEATED_DTESTS: null - - REPEATED_DTESTS_COUNT: 500 - - REPEATED_LARGE_DTESTS: null - - REPEATED_LARGE_DTESTS_COUNT: 100 - - REPEATED_UPGRADE_DTESTS: null - - REPEATED_UPGRADE_DTESTS_COUNT: 25 - - REPEATED_ANT_TEST_TARGET: testsome - - REPEATED_ANT_TEST_CLASS: null - - REPEATED_ANT_TEST_METHODS: null - - REPEATED_ANT_TEST_VNODES: false - - REPEATED_ANT_TEST_COUNT: 500 - - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 j11_utests_stress_repeat: docker: - image: apache/cassandra-testing-ubuntu2004-java11-w-dependencies:latest @@ -2034,7 +1818,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -2063,7 +1847,7 @@ jobs: else echo "Running ${REPEATED_LARGE_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -2188,7 +1972,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -2217,7 +2001,7 @@ jobs: else echo "Running ${REPEATED_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -3147,7 +2931,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -3155,11 +2939,11 @@ jobs: - run: name: Determine Tests to Run (j11_large_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_large_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_large_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_large_with_vnodes_raw /tmp/all_dtest_tests_j11_large_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_large_with_vnodes_raw > /tmp/all_dtest_tests_j11_large_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_j11_large_with_vnodes > /tmp/split_dtest_tests_j11_large_with_vnodes.txt\ncat /tmp/split_dtest_tests_j11_large_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_large_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_large_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_large_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_large_with_vnodes_raw /tmp/all_dtest_tests_j11_large_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_large_with_vnodes_raw > /tmp/all_dtest_tests_j11_large_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_j11_large_with_vnodes > /tmp/split_dtest_tests_j11_large_with_vnodes.txt\ncat /tmp/split_dtest_tests_j11_large_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\n" - run: name: Run dtests (j11_large_with_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_large_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_large_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -3232,7 +3016,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -3261,7 +3045,7 @@ jobs: else echo "Running ${REPEATED_LARGE_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -3591,7 +3375,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -3599,11 +3383,11 @@ jobs: - run: name: Determine Tests to Run (j11_large_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_large_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_large_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_large_without_vnodes_raw /tmp/all_dtest_tests_j11_large_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_large_without_vnodes_raw > /tmp/all_dtest_tests_j11_large_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_j11_large_without_vnodes > /tmp/split_dtest_tests_j11_large_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_large_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_large_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_large_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_large_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_large_without_vnodes_raw /tmp/all_dtest_tests_j11_large_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_large_without_vnodes_raw > /tmp/all_dtest_tests_j11_large_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_j11_large_without_vnodes > /tmp/split_dtest_tests_j11_large_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_large_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\n" - run: name: Run dtests (j11_large_without_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_large_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_large_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -3884,7 +3668,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -3913,7 +3697,7 @@ jobs: else echo "Running ${REPEATED_UPGRADE_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -4308,115 +4092,6 @@ jobs: - REPEATED_ANT_TEST_COUNT: 500 - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - j11_cqlsh_dtests_py3: - docker: - - image: apache/cassandra-testing-ubuntu2004-java11-w-dependencies:latest - resource_class: medium - working_directory: ~/ - shell: /bin/bash -eo pipefail -l - parallelism: 4 - steps: - - attach_workspace: - at: /home/cassandra - - run: - name: Clone Cassandra dtest Repository (via git) - command: | - git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest - - run: - name: Configure virtualenv and python Dependencies - command: | - # note, this should be super quick as all dependencies should be pre-installed in the docker image - # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated - # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and - # rebuild the docker image! (it automatically pulls the latest requirements.txt on build) - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt - pip3 uninstall -y cqlsh - pip3 freeze - - run: - name: Determine Tests to Run (j11_without_vnodes) - no_output_timeout: 5m - command: "# reminder: this code (along with all the steps) is independently executed on every circle container\n# so the goal here is to get the circleci script to return the tests *this* container will run\n# which we do via the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-intensive-tests --pytest-options '-k cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_without_vnodes_raw /tmp/all_dtest_tests_j11_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_without_vnodes_raw > /tmp/all_dtest_tests_j11_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_j11_without_vnodes > /tmp/split_dtest_tests_j11_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_without_vnodes_final.txt\n" - - run: - name: Run dtests (j11_without_vnodes) - no_output_timeout: 15m - command: | - echo "cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt" - cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt - - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - if [ -n 'CQLSH_PYTHON=/usr/bin/python3.7' ]; then - export CQLSH_PYTHON=/usr/bin/python3.7 - fi - - java -version - cd ~/cassandra-dtest - mkdir -p /tmp/dtest - - echo "env: $(env)" - echo "** done env" - mkdir -p /tmp/results/dtests - # we need the "set -o pipefail" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee - export SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt` - if [ ! -z "$SPLIT_TESTS" ]; then - set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level="DEBUG" --junit-xml=/tmp/results/dtests/pytest_result_j11_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt - else - echo "Tune your parallelism, there are more containers than test classes. Nothing to do in this container" - (exit 1) - fi - - store_test_results: - path: /tmp/results - - store_artifacts: - path: /tmp/dtest - destination: dtest_j11_without_vnodes - - store_artifacts: - path: ~/cassandra-dtest/logs - destination: dtest_j11_without_vnodes_logs - environment: - - ANT_HOME: /usr/share/ant - - LANG: en_US.UTF-8 - - KEEP_TEST_DIR: true - - DEFAULT_DIR: /home/cassandra/cassandra-dtest - - PYTHONIOENCODING: utf-8 - - PYTHONUNBUFFERED: true - - CASS_DRIVER_NO_EXTENSIONS: true - - CASS_DRIVER_NO_CYTHON: true - - CASSANDRA_SKIP_SYNC: true - - DTEST_REPO: https://github.com/apache/cassandra-dtest.git - - DTEST_BRANCH: trunk - - CCM_MAX_HEAP_SIZE: 1024M - - CCM_HEAP_NEWSIZE: 256M - - REPEATED_TESTS_STOP_ON_FAILURE: false - - REPEATED_UTESTS: null - - REPEATED_UTESTS_COUNT: 500 - - REPEATED_UTESTS_FQLTOOL: null - - REPEATED_UTESTS_FQLTOOL_COUNT: 500 - - REPEATED_UTESTS_LONG: null - - REPEATED_UTESTS_LONG_COUNT: 100 - - REPEATED_UTESTS_STRESS: null - - REPEATED_UTESTS_STRESS_COUNT: 500 - - REPEATED_SIMULATOR_DTESTS: null - - REPEATED_SIMULATOR_DTESTS_COUNT: 500 - - REPEATED_JVM_DTESTS: null - - REPEATED_JVM_DTESTS_COUNT: 500 - - REPEATED_JVM_UPGRADE_DTESTS: null - - REPEATED_JVM_UPGRADE_DTESTS_COUNT: 500 - - REPEATED_DTESTS: null - - REPEATED_DTESTS_COUNT: 500 - - REPEATED_LARGE_DTESTS: null - - REPEATED_LARGE_DTESTS_COUNT: 100 - - REPEATED_UPGRADE_DTESTS: null - - REPEATED_UPGRADE_DTESTS_COUNT: 25 - - REPEATED_ANT_TEST_TARGET: testsome - - REPEATED_ANT_TEST_CLASS: null - - REPEATED_ANT_TEST_METHODS: null - - REPEATED_ANT_TEST_VNODES: false - - REPEATED_ANT_TEST_COUNT: 500 - - JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - - CASSANDRA_USE_JDK11: true j17_build: docker: - image: apache/cassandra-testing-ubuntu2004-java11:latest @@ -4823,7 +4498,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -4852,7 +4527,7 @@ jobs: else echo "Running ${REPEATED_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -5755,7 +5430,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -5763,11 +5438,11 @@ jobs: - run: name: Determine Tests to Run (j17_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_with_vnodes_raw /tmp/all_dtest_tests_j17_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_with_vnodes_raw > /tmp/all_dtest_tests_j17_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_j17_with_vnodes > /tmp/split_dtest_tests_j17_with_vnodes.txt\ncat /tmp/split_dtest_tests_j17_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_with_vnodes_raw /tmp/all_dtest_tests_j17_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_with_vnodes_raw > /tmp/all_dtest_tests_j17_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_j17_with_vnodes > /tmp/split_dtest_tests_j17_with_vnodes.txt\ncat /tmp/split_dtest_tests_j17_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_with_vnodes_final.txt\n" - run: name: Run dtests (j17_with_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_with_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_with_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -5839,7 +5514,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -5868,7 +5543,7 @@ jobs: else echo "Running ${REPEATED_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -6158,115 +5833,6 @@ jobs: - REPEATED_ANT_TEST_COUNT: 500 - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - j11_cqlsh_dtests_py3_offheap: - docker: - - image: apache/cassandra-testing-ubuntu2004-java11-w-dependencies:latest - resource_class: medium - working_directory: ~/ - shell: /bin/bash -eo pipefail -l - parallelism: 4 - steps: - - attach_workspace: - at: /home/cassandra - - run: - name: Clone Cassandra dtest Repository (via git) - command: | - git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest - - run: - name: Configure virtualenv and python Dependencies - command: | - # note, this should be super quick as all dependencies should be pre-installed in the docker image - # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated - # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and - # rebuild the docker image! (it automatically pulls the latest requirements.txt on build) - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt - pip3 uninstall -y cqlsh - pip3 freeze - - run: - name: Determine Tests to Run (j11_dtests_offheap) - 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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_dtests_offheap)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_dtests_offheap_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_dtests_offheap_raw /tmp/all_dtest_tests_j11_dtests_offheap\nelse\n grep -e '' /tmp/all_dtest_tests_j11_dtests_offheap_raw > /tmp/all_dtest_tests_j11_dtests_offheap || { 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_j11_dtests_offheap > /tmp/split_dtest_tests_j11_dtests_offheap.txt\ncat /tmp/split_dtest_tests_j11_dtests_offheap.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\ncat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\n" - - run: - name: Run dtests (j11_dtests_offheap) - no_output_timeout: 15m - command: | - echo "cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt" - cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt - - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - if [ -n 'CQLSH_PYTHON=/usr/bin/python3.7' ]; then - export CQLSH_PYTHON=/usr/bin/python3.7 - fi - - java -version - cd ~/cassandra-dtest - mkdir -p /tmp/dtest - - echo "env: $(env)" - echo "** done env" - mkdir -p /tmp/results/dtests - # we need the "set -o pipefail" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee - export SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt` - if [ ! -z "$SPLIT_TESTS" ]; then - set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests --log-level="DEBUG" --junit-xml=/tmp/results/dtests/pytest_result_j11_dtests_offheap.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt - else - echo "Tune your parallelism, there are more containers than test classes. Nothing to do in this container" - (exit 1) - fi - - store_test_results: - path: /tmp/results - - store_artifacts: - path: /tmp/dtest - destination: dtest_j11_dtests_offheap - - store_artifacts: - path: ~/cassandra-dtest/logs - destination: dtest_j11_dtests_offheap_logs - environment: - - ANT_HOME: /usr/share/ant - - LANG: en_US.UTF-8 - - KEEP_TEST_DIR: true - - DEFAULT_DIR: /home/cassandra/cassandra-dtest - - PYTHONIOENCODING: utf-8 - - PYTHONUNBUFFERED: true - - CASS_DRIVER_NO_EXTENSIONS: true - - CASS_DRIVER_NO_CYTHON: true - - CASSANDRA_SKIP_SYNC: true - - DTEST_REPO: https://github.com/apache/cassandra-dtest.git - - DTEST_BRANCH: trunk - - CCM_MAX_HEAP_SIZE: 1024M - - CCM_HEAP_NEWSIZE: 256M - - REPEATED_TESTS_STOP_ON_FAILURE: false - - REPEATED_UTESTS: null - - REPEATED_UTESTS_COUNT: 500 - - REPEATED_UTESTS_FQLTOOL: null - - REPEATED_UTESTS_FQLTOOL_COUNT: 500 - - REPEATED_UTESTS_LONG: null - - REPEATED_UTESTS_LONG_COUNT: 100 - - REPEATED_UTESTS_STRESS: null - - REPEATED_UTESTS_STRESS_COUNT: 500 - - REPEATED_SIMULATOR_DTESTS: null - - REPEATED_SIMULATOR_DTESTS_COUNT: 500 - - REPEATED_JVM_DTESTS: null - - REPEATED_JVM_DTESTS_COUNT: 500 - - REPEATED_JVM_UPGRADE_DTESTS: null - - REPEATED_JVM_UPGRADE_DTESTS_COUNT: 500 - - REPEATED_DTESTS: null - - REPEATED_DTESTS_COUNT: 500 - - REPEATED_LARGE_DTESTS: null - - REPEATED_LARGE_DTESTS_COUNT: 100 - - REPEATED_UPGRADE_DTESTS: null - - REPEATED_UPGRADE_DTESTS_COUNT: 25 - - REPEATED_ANT_TEST_TARGET: testsome - - REPEATED_ANT_TEST_CLASS: null - - REPEATED_ANT_TEST_METHODS: null - - REPEATED_ANT_TEST_VNODES: false - - REPEATED_ANT_TEST_COUNT: 500 - - JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - - CASSANDRA_USE_JDK11: true j11_cqlsh_dtests_py311_offheap: docker: - image: apache/cassandra-testing-ubuntu2004-java11-w-dependencies:latest @@ -6515,7 +6081,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -6523,11 +6089,11 @@ jobs: - run: name: Determine Tests to Run (j11_upgradetests_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_upgradetests_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --execute-upgrade-tests-only --upgrade-target-version-only --upgrade-version-selection all --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_upgradetests_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_upgradetests_without_vnodes_raw /tmp/all_dtest_tests_j11_upgradetests_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_upgradetests_without_vnodes_raw > /tmp/all_dtest_tests_j11_upgradetests_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_j11_upgradetests_without_vnodes > /tmp/split_dtest_tests_j11_upgradetests_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_upgradetests_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_upgradetests_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --execute-upgrade-tests-only --upgrade-target-version-only --upgrade-version-selection all --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_upgradetests_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_upgradetests_without_vnodes_raw /tmp/all_dtest_tests_j11_upgradetests_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_upgradetests_without_vnodes_raw > /tmp/all_dtest_tests_j11_upgradetests_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_j11_upgradetests_without_vnodes > /tmp/split_dtest_tests_j11_upgradetests_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\n" - run: name: Run dtests (j11_upgradetests_without_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --execute-upgrade-tests-only --upgrade-target-version-only --upgrade-version-selection all --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_upgradetests_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --execute-upgrade-tests-only --upgrade-target-version-only --upgrade-version-selection all --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_upgradetests_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -6600,7 +6166,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -6629,7 +6195,7 @@ jobs: else echo "Running ${REPEATED_LARGE_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -6801,115 +6367,6 @@ jobs: - REPEATED_ANT_TEST_COUNT: 500 - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - j11_cqlsh_dtests_py3_vnode: - docker: - - image: apache/cassandra-testing-ubuntu2004-java11-w-dependencies:latest - resource_class: medium - working_directory: ~/ - shell: /bin/bash -eo pipefail -l - parallelism: 4 - steps: - - attach_workspace: - at: /home/cassandra - - run: - name: Clone Cassandra dtest Repository (via git) - command: | - git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest - - run: - name: Configure virtualenv and python Dependencies - command: | - # note, this should be super quick as all dependencies should be pre-installed in the docker image - # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated - # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and - # rebuild the docker image! (it automatically pulls the latest requirements.txt on build) - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt - pip3 uninstall -y cqlsh - pip3 freeze - - run: - name: Determine Tests to Run (j11_with_vnodes) - no_output_timeout: 5m - command: "# reminder: this code (along with all the steps) is independently executed on every circle container\n# so the goal here is to get the circleci script to return the tests *this* container will run\n# which we do via the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-resource-intensive-tests --pytest-options '-k cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_with_vnodes_raw /tmp/all_dtest_tests_j11_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_with_vnodes_raw > /tmp/all_dtest_tests_j11_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_j11_with_vnodes > /tmp/split_dtest_tests_j11_with_vnodes.txt\ncat /tmp/split_dtest_tests_j11_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\n" - - run: - name: Run dtests (j11_with_vnodes) - no_output_timeout: 15m - command: | - echo "cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt" - cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt - - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - if [ -n 'CQLSH_PYTHON=/usr/bin/python3.7' ]; then - export CQLSH_PYTHON=/usr/bin/python3.7 - fi - - java -version - cd ~/cassandra-dtest - mkdir -p /tmp/dtest - - echo "env: $(env)" - echo "** done env" - mkdir -p /tmp/results/dtests - # we need the "set -o pipefail" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee - export SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt` - if [ ! -z "$SPLIT_TESTS" ]; then - set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --skip-resource-intensive-tests --log-level="DEBUG" --junit-xml=/tmp/results/dtests/pytest_result_j11_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt - else - echo "Tune your parallelism, there are more containers than test classes. Nothing to do in this container" - (exit 1) - fi - - store_test_results: - path: /tmp/results - - store_artifacts: - path: /tmp/dtest - destination: dtest_j11_with_vnodes - - store_artifacts: - path: ~/cassandra-dtest/logs - destination: dtest_j11_with_vnodes_logs - environment: - - ANT_HOME: /usr/share/ant - - LANG: en_US.UTF-8 - - KEEP_TEST_DIR: true - - DEFAULT_DIR: /home/cassandra/cassandra-dtest - - PYTHONIOENCODING: utf-8 - - PYTHONUNBUFFERED: true - - CASS_DRIVER_NO_EXTENSIONS: true - - CASS_DRIVER_NO_CYTHON: true - - CASSANDRA_SKIP_SYNC: true - - DTEST_REPO: https://github.com/apache/cassandra-dtest.git - - DTEST_BRANCH: trunk - - CCM_MAX_HEAP_SIZE: 1024M - - CCM_HEAP_NEWSIZE: 256M - - REPEATED_TESTS_STOP_ON_FAILURE: false - - REPEATED_UTESTS: null - - REPEATED_UTESTS_COUNT: 500 - - REPEATED_UTESTS_FQLTOOL: null - - REPEATED_UTESTS_FQLTOOL_COUNT: 500 - - REPEATED_UTESTS_LONG: null - - REPEATED_UTESTS_LONG_COUNT: 100 - - REPEATED_UTESTS_STRESS: null - - REPEATED_UTESTS_STRESS_COUNT: 500 - - REPEATED_SIMULATOR_DTESTS: null - - REPEATED_SIMULATOR_DTESTS_COUNT: 500 - - REPEATED_JVM_DTESTS: null - - REPEATED_JVM_DTESTS_COUNT: 500 - - REPEATED_JVM_UPGRADE_DTESTS: null - - REPEATED_JVM_UPGRADE_DTESTS_COUNT: 500 - - REPEATED_DTESTS: null - - REPEATED_DTESTS_COUNT: 500 - - REPEATED_LARGE_DTESTS: null - - REPEATED_LARGE_DTESTS_COUNT: 100 - - REPEATED_UPGRADE_DTESTS: null - - REPEATED_UPGRADE_DTESTS_COUNT: 25 - - REPEATED_ANT_TEST_TARGET: testsome - - REPEATED_ANT_TEST_CLASS: null - - REPEATED_ANT_TEST_METHODS: null - - REPEATED_ANT_TEST_VNODES: false - - REPEATED_ANT_TEST_COUNT: 500 - - JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - - CASSANDRA_USE_JDK11: true j17_utests_fqltool: docker: - image: apache/cassandra-testing-ubuntu2004-java11:latest @@ -7002,7 +6459,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -7010,11 +6467,11 @@ jobs: - run: name: Determine Tests to Run (j17_large_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_large_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_large_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_large_with_vnodes_raw /tmp/all_dtest_tests_j17_large_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_large_with_vnodes_raw > /tmp/all_dtest_tests_j17_large_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_j17_large_with_vnodes > /tmp/split_dtest_tests_j17_large_with_vnodes.txt\ncat /tmp/split_dtest_tests_j17_large_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_large_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_large_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_large_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_large_with_vnodes_raw /tmp/all_dtest_tests_j17_large_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_large_with_vnodes_raw > /tmp/all_dtest_tests_j17_large_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_j17_large_with_vnodes > /tmp/split_dtest_tests_j17_large_with_vnodes.txt\ncat /tmp/split_dtest_tests_j17_large_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\n" - run: name: Run dtests (j17_large_with_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_large_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_large_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -7086,7 +6543,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -7094,11 +6551,11 @@ jobs: - run: name: Determine Tests to Run (j11_dtests_offheap) 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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_dtests_offheap)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_dtests_offheap_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_dtests_offheap_raw /tmp/all_dtest_tests_j11_dtests_offheap\nelse\n grep -e '' /tmp/all_dtest_tests_j11_dtests_offheap_raw > /tmp/all_dtest_tests_j11_dtests_offheap || { 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_j11_dtests_offheap > /tmp/split_dtest_tests_j11_dtests_offheap.txt\ncat /tmp/split_dtest_tests_j11_dtests_offheap.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\ncat /tmp/split_dtest_tests_j11_dtests_offheap_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_dtests_offheap)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_dtests_offheap_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_dtests_offheap_raw /tmp/all_dtest_tests_j11_dtests_offheap\nelse\n grep -e '' /tmp/all_dtest_tests_j11_dtests_offheap_raw > /tmp/all_dtest_tests_j11_dtests_offheap || { 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_j11_dtests_offheap > /tmp/split_dtest_tests_j11_dtests_offheap.txt\ncat /tmp/split_dtest_tests_j11_dtests_offheap.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\ncat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\n" - run: name: Run dtests (j11_dtests_offheap) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\"\ncat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_dtests_offheap.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\"\ncat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_dtests_offheap.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -7926,114 +7383,6 @@ jobs: - REPEATED_ANT_TEST_COUNT: 500 - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - j17_cqlsh_dtests_py3_vnode: - docker: - - image: apache/cassandra-testing-ubuntu2004-java11:latest - resource_class: medium - working_directory: ~/ - shell: /bin/bash -eo pipefail -l - parallelism: 4 - steps: - - attach_workspace: - at: /home/cassandra - - run: - name: Clone Cassandra dtest Repository (via git) - command: | - git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest - - run: - name: Configure virtualenv and python Dependencies - command: | - # note, this should be super quick as all dependencies should be pre-installed in the docker image - # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated - # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and - # rebuild the docker image! (it automatically pulls the latest requirements.txt on build) - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt - pip3 uninstall -y cqlsh - pip3 freeze - - run: - name: Determine Tests to Run (j17_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-resource-intensive-tests --pytest-options '-k cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_with_vnodes_raw /tmp/all_dtest_tests_j17_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_with_vnodes_raw > /tmp/all_dtest_tests_j17_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_j17_with_vnodes > /tmp/split_dtest_tests_j17_with_vnodes.txt\ncat /tmp/split_dtest_tests_j17_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_with_vnodes_final.txt\n" - - run: - name: Run dtests (j17_with_vnodes) - no_output_timeout: 15m - command: | - echo "cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt" - cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt - - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - if [ -n 'CQLSH_PYTHON=/usr/bin/python3.7' ]; then - export CQLSH_PYTHON=/usr/bin/python3.7 - fi - - java -version - cd ~/cassandra-dtest - mkdir -p /tmp/dtest - - echo "env: $(env)" - echo "** done env" - mkdir -p /tmp/results/dtests - # we need the "set -o pipefail" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee - export SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt` - if [ ! -z "$SPLIT_TESTS" ]; then - set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --skip-resource-intensive-tests --log-level="DEBUG" --junit-xml=/tmp/results/dtests/pytest_result_j17_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt - else - echo "Tune your parallelism, there are more containers than test classes. Nothing to do in this container" - (exit 1) - fi - - store_test_results: - path: /tmp/results - - store_artifacts: - path: /tmp/dtest - destination: dtest_j17_with_vnodes - - store_artifacts: - path: ~/cassandra-dtest/logs - destination: dtest_j17_with_vnodes_logs - environment: - - ANT_HOME: /usr/share/ant - - LANG: en_US.UTF-8 - - KEEP_TEST_DIR: true - - DEFAULT_DIR: /home/cassandra/cassandra-dtest - - PYTHONIOENCODING: utf-8 - - PYTHONUNBUFFERED: true - - CASS_DRIVER_NO_EXTENSIONS: true - - CASS_DRIVER_NO_CYTHON: true - - CASSANDRA_SKIP_SYNC: true - - DTEST_REPO: https://github.com/apache/cassandra-dtest.git - - DTEST_BRANCH: trunk - - CCM_MAX_HEAP_SIZE: 1024M - - CCM_HEAP_NEWSIZE: 256M - - REPEATED_TESTS_STOP_ON_FAILURE: false - - REPEATED_UTESTS: null - - REPEATED_UTESTS_COUNT: 500 - - REPEATED_UTESTS_FQLTOOL: null - - REPEATED_UTESTS_FQLTOOL_COUNT: 500 - - REPEATED_UTESTS_LONG: null - - REPEATED_UTESTS_LONG_COUNT: 100 - - REPEATED_UTESTS_STRESS: null - - REPEATED_UTESTS_STRESS_COUNT: 500 - - REPEATED_SIMULATOR_DTESTS: null - - REPEATED_SIMULATOR_DTESTS_COUNT: 500 - - REPEATED_JVM_DTESTS: null - - REPEATED_JVM_DTESTS_COUNT: 500 - - REPEATED_JVM_UPGRADE_DTESTS: null - - REPEATED_JVM_UPGRADE_DTESTS_COUNT: 500 - - REPEATED_DTESTS: null - - REPEATED_DTESTS_COUNT: 500 - - REPEATED_LARGE_DTESTS: null - - REPEATED_LARGE_DTESTS_COUNT: 100 - - REPEATED_UPGRADE_DTESTS: null - - REPEATED_UPGRADE_DTESTS_COUNT: 25 - - REPEATED_ANT_TEST_TARGET: testsome - - REPEATED_ANT_TEST_CLASS: null - - REPEATED_ANT_TEST_METHODS: null - - REPEATED_ANT_TEST_VNODES: false - - REPEATED_ANT_TEST_COUNT: 500 - - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 j17_cqlsh_dtests_py311_vnode: docker: - image: apache/cassandra-testing-ubuntu2004-java11:latest @@ -8703,7 +8052,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -8711,11 +8060,11 @@ jobs: - run: name: Determine Tests to Run (j11_without_vnodes) no_output_timeout: 5m - command: "# reminder: this code (along with all the steps) is independently executed on every circle container\n# so the goal here is to get the circleci script to return the tests *this* container will run\n# which we do via the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_without_vnodes_raw /tmp/all_dtest_tests_j11_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_without_vnodes_raw > /tmp/all_dtest_tests_j11_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_j11_without_vnodes > /tmp/split_dtest_tests_j11_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_without_vnodes_raw /tmp/all_dtest_tests_j11_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_without_vnodes_raw > /tmp/all_dtest_tests_j11_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_j11_without_vnodes > /tmp/split_dtest_tests_j11_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_without_vnodes_final.txt\n" - run: name: Run dtests (j11_without_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_without_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_without_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -9219,7 +8568,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -9227,11 +8576,11 @@ jobs: - run: name: Determine Tests to Run (j17_large_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_large_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_large_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_large_without_vnodes_raw /tmp/all_dtest_tests_j17_large_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_large_without_vnodes_raw > /tmp/all_dtest_tests_j17_large_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_j17_large_without_vnodes > /tmp/split_dtest_tests_j17_large_without_vnodes.txt\ncat /tmp/split_dtest_tests_j17_large_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_large_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_large_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_large_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_large_without_vnodes_raw /tmp/all_dtest_tests_j17_large_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_large_without_vnodes_raw > /tmp/all_dtest_tests_j17_large_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_j17_large_without_vnodes > /tmp/split_dtest_tests_j17_large_without_vnodes.txt\ncat /tmp/split_dtest_tests_j17_large_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\n" - run: name: Run dtests (j17_large_without_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_large_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_large_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -9553,7 +8902,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -9561,11 +8910,11 @@ jobs: - run: name: Determine Tests to Run (j11_with_vnodes) no_output_timeout: 5m - command: "# reminder: this code (along with all the steps) is independently executed on every circle container\n# so the goal here is to get the circleci script to return the tests *this* container will run\n# which we do via the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_with_vnodes_raw /tmp/all_dtest_tests_j11_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_with_vnodes_raw > /tmp/all_dtest_tests_j11_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_j11_with_vnodes > /tmp/split_dtest_tests_j11_with_vnodes.txt\ncat /tmp/split_dtest_tests_j11_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_with_vnodes_raw /tmp/all_dtest_tests_j11_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_with_vnodes_raw > /tmp/all_dtest_tests_j11_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_j11_with_vnodes > /tmp/split_dtest_tests_j11_with_vnodes.txt\ncat /tmp/split_dtest_tests_j11_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\n" - run: name: Run dtests (j11_with_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -9749,7 +9098,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -9757,11 +9106,11 @@ jobs: - run: name: Determine Tests to Run (j17_dtests_offheap) 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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_dtests_offheap)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_dtests_offheap_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_dtests_offheap_raw /tmp/all_dtest_tests_j17_dtests_offheap\nelse\n grep -e '' /tmp/all_dtest_tests_j17_dtests_offheap_raw > /tmp/all_dtest_tests_j17_dtests_offheap || { 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_j17_dtests_offheap > /tmp/split_dtest_tests_j17_dtests_offheap.txt\ncat /tmp/split_dtest_tests_j17_dtests_offheap.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\ncat /tmp/split_dtest_tests_j17_dtests_offheap_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_dtests_offheap)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_dtests_offheap_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_dtests_offheap_raw /tmp/all_dtest_tests_j17_dtests_offheap\nelse\n grep -e '' /tmp/all_dtest_tests_j17_dtests_offheap_raw > /tmp/all_dtest_tests_j17_dtests_offheap || { 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_j17_dtests_offheap > /tmp/split_dtest_tests_j17_dtests_offheap.txt\ncat /tmp/split_dtest_tests_j17_dtests_offheap.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\ncat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\n" - run: name: Run dtests (j17_dtests_offheap) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\"\ncat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_dtests_offheap.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\"\ncat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_dtests_offheap.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -9833,7 +9182,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -9862,7 +9211,7 @@ jobs: else echo "Running ${REPEATED_LARGE_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -10368,14 +9717,6 @@ workflows: - j11_build - start_j11_cqlsh_tests: type: approval - - j11_cqlsh_dtests_py3: - requires: - - start_j11_cqlsh_tests - - j11_build - - j11_cqlsh_dtests_py3_vnode: - requires: - - start_j11_cqlsh_tests - - j11_build - j11_cqlsh_dtests_py38: requires: - start_j11_cqlsh_tests @@ -10394,10 +9735,6 @@ workflows: - j11_build - start_j11_cqlsh_tests_offheap: type: approval - - j11_cqlsh_dtests_py3_offheap: - requires: - - start_j11_cqlsh_tests_offheap - - j11_build - j11_cqlsh_dtests_py38_offheap: requires: - start_j11_cqlsh_tests_offheap @@ -10408,14 +9745,6 @@ workflows: - j11_build - start_j17_cqlsh_tests: type: approval - - j17_cqlsh_dtests_py3: - requires: - - start_j17_cqlsh_tests - - j11_build - - j17_cqlsh_dtests_py3_vnode: - requires: - - start_j17_cqlsh_tests - - j11_build - j17_cqlsh_dtests_py38: requires: - start_j17_cqlsh_tests @@ -10434,10 +9763,6 @@ workflows: - j11_build - start_j17_cqlsh_tests_offheap: type: approval - - j17_cqlsh_dtests_py3_offheap: - requires: - - start_j17_cqlsh_tests_offheap - - j11_build - j17_cqlsh_dtests_py38_offheap: requires: - start_j17_cqlsh_tests_offheap @@ -10620,12 +9945,6 @@ workflows: requires: - start_j17_dtests_large - j11_build - - j11_cqlsh_dtests_py3: - requires: - - j11_build - - j11_cqlsh_dtests_py3_vnode: - requires: - - j11_build - j11_cqlsh_dtests_py38: requires: - j11_build @@ -10640,10 +9959,6 @@ workflows: - j11_build - start_j11_cqlsh_dtests_offheap: type: approval - - j11_cqlsh_dtests_py3_offheap: - requires: - - start_j11_cqlsh_dtests_offheap - - j11_build - j11_cqlsh_dtests_py38_offheap: requires: - start_j11_cqlsh_dtests_offheap @@ -10652,12 +9967,6 @@ workflows: requires: - start_j11_cqlsh_dtests_offheap - j11_build - - j17_cqlsh_dtests_py3: - requires: - - j11_build - - j17_cqlsh_dtests_py3_vnode: - requires: - - j11_build - j17_cqlsh_dtests_py38: requires: - j11_build @@ -10672,10 +9981,6 @@ workflows: - j11_build - start_j17_cqlsh-dtests-offheap: type: approval - - j17_cqlsh_dtests_py3_offheap: - requires: - - start_j17_cqlsh-dtests-offheap - - j11_build - j17_cqlsh_dtests_py38_offheap: requires: - start_j17_cqlsh-dtests-offheap @@ -10759,14 +10064,6 @@ workflows: - j17_build - start_j17_cqlsh_tests: type: approval - - j17_cqlsh_dtests_py3: - requires: - - start_j17_cqlsh_tests - - j17_build - - j17_cqlsh_dtests_py3_vnode: - requires: - - start_j17_cqlsh_tests - - j17_build - j17_cqlsh_dtests_py38: requires: - start_j17_cqlsh_tests @@ -10785,10 +10082,6 @@ workflows: - j17_build - start_j17_cqlsh-dtests-offheap: type: approval - - j17_cqlsh_dtests_py3_offheap: - requires: - - start_j17_cqlsh-dtests-offheap - - j17_build - j17_cqlsh_dtests_py38_offheap: requires: - start_j17_cqlsh-dtests-offheap @@ -10892,12 +10185,6 @@ workflows: requires: - start_j17_dtests_large - j17_build - - j17_cqlsh_dtests_py3: - requires: - - j17_build - - j17_cqlsh_dtests_py3_vnode: - requires: - - j17_build - j17_cqlsh_dtests_py38: requires: - j17_build @@ -10912,10 +10199,6 @@ workflows: - j17_build - start_j17_cqlsh-dtests-offheap: type: approval - - j17_cqlsh_dtests_py3_offheap: - requires: - - start_j17_cqlsh-dtests-offheap - - j17_build - j17_cqlsh_dtests_py38_offheap: requires: - start_j17_cqlsh-dtests-offheap diff --git a/.circleci/config.yml.FREE b/.circleci/config.yml.FREE index b1113ca1f2..0d33529a5a 100644 --- a/.circleci/config.yml.FREE +++ b/.circleci/config.yml.FREE @@ -151,7 +151,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -159,11 +159,11 @@ jobs: - run: name: Determine Tests to Run (j17_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_without_vnodes_raw /tmp/all_dtest_tests_j17_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_without_vnodes_raw > /tmp/all_dtest_tests_j17_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_j17_without_vnodes > /tmp/split_dtest_tests_j17_without_vnodes.txt\ncat /tmp/split_dtest_tests_j17_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_without_vnodes_raw /tmp/all_dtest_tests_j17_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_without_vnodes_raw > /tmp/all_dtest_tests_j17_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_j17_without_vnodes > /tmp/split_dtest_tests_j17_without_vnodes.txt\ncat /tmp/split_dtest_tests_j17_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_without_vnodes_final.txt\n" - run: name: Run dtests (j17_without_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_without_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_without_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -630,114 +630,6 @@ jobs: - JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - CASSANDRA_USE_JDK11: true - j17_cqlsh_dtests_py3_offheap: - docker: - - image: apache/cassandra-testing-ubuntu2004-java11:latest - resource_class: medium - working_directory: ~/ - shell: /bin/bash -eo pipefail -l - parallelism: 4 - steps: - - attach_workspace: - at: /home/cassandra - - run: - name: Clone Cassandra dtest Repository (via git) - command: | - git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest - - run: - name: Configure virtualenv and python Dependencies - command: | - # note, this should be super quick as all dependencies should be pre-installed in the docker image - # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated - # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and - # rebuild the docker image! (it automatically pulls the latest requirements.txt on build) - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt - pip3 uninstall -y cqlsh - pip3 freeze - - run: - name: Determine Tests to Run (j17_dtests_offheap) - 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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_dtests_offheap)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_dtests_offheap_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_dtests_offheap_raw /tmp/all_dtest_tests_j17_dtests_offheap\nelse\n grep -e '' /tmp/all_dtest_tests_j17_dtests_offheap_raw > /tmp/all_dtest_tests_j17_dtests_offheap || { 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_j17_dtests_offheap > /tmp/split_dtest_tests_j17_dtests_offheap.txt\ncat /tmp/split_dtest_tests_j17_dtests_offheap.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\ncat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\n" - - run: - name: Run dtests (j17_dtests_offheap) - no_output_timeout: 15m - command: | - echo "cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt" - cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt - - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - if [ -n 'CQLSH_PYTHON=/usr/bin/python3.7' ]; then - export CQLSH_PYTHON=/usr/bin/python3.7 - fi - - java -version - cd ~/cassandra-dtest - mkdir -p /tmp/dtest - - echo "env: $(env)" - echo "** done env" - mkdir -p /tmp/results/dtests - # we need the "set -o pipefail" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee - export SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt` - if [ ! -z "$SPLIT_TESTS" ]; then - set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests --log-level="DEBUG" --junit-xml=/tmp/results/dtests/pytest_result_j17_dtests_offheap.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt - else - echo "Tune your parallelism, there are more containers than test classes. Nothing to do in this container" - (exit 1) - fi - - store_test_results: - path: /tmp/results - - store_artifacts: - path: /tmp/dtest - destination: dtest_j17_dtests_offheap - - store_artifacts: - path: ~/cassandra-dtest/logs - destination: dtest_j17_dtests_offheap_logs - environment: - - ANT_HOME: /usr/share/ant - - LANG: en_US.UTF-8 - - KEEP_TEST_DIR: true - - DEFAULT_DIR: /home/cassandra/cassandra-dtest - - PYTHONIOENCODING: utf-8 - - PYTHONUNBUFFERED: true - - CASS_DRIVER_NO_EXTENSIONS: true - - CASS_DRIVER_NO_CYTHON: true - - CASSANDRA_SKIP_SYNC: true - - DTEST_REPO: https://github.com/apache/cassandra-dtest.git - - DTEST_BRANCH: trunk - - CCM_MAX_HEAP_SIZE: 1024M - - CCM_HEAP_NEWSIZE: 256M - - REPEATED_TESTS_STOP_ON_FAILURE: false - - REPEATED_UTESTS: null - - REPEATED_UTESTS_COUNT: 500 - - REPEATED_UTESTS_FQLTOOL: null - - REPEATED_UTESTS_FQLTOOL_COUNT: 500 - - REPEATED_UTESTS_LONG: null - - REPEATED_UTESTS_LONG_COUNT: 100 - - REPEATED_UTESTS_STRESS: null - - REPEATED_UTESTS_STRESS_COUNT: 500 - - REPEATED_SIMULATOR_DTESTS: null - - REPEATED_SIMULATOR_DTESTS_COUNT: 500 - - REPEATED_JVM_DTESTS: null - - REPEATED_JVM_DTESTS_COUNT: 500 - - REPEATED_JVM_UPGRADE_DTESTS: null - - REPEATED_JVM_UPGRADE_DTESTS_COUNT: 500 - - REPEATED_DTESTS: null - - REPEATED_DTESTS_COUNT: 500 - - REPEATED_LARGE_DTESTS: null - - REPEATED_LARGE_DTESTS_COUNT: 100 - - REPEATED_UPGRADE_DTESTS: null - - REPEATED_UPGRADE_DTESTS_COUNT: 25 - - REPEATED_ANT_TEST_TARGET: testsome - - REPEATED_ANT_TEST_CLASS: null - - REPEATED_ANT_TEST_METHODS: null - - REPEATED_ANT_TEST_VNODES: false - - REPEATED_ANT_TEST_COUNT: 500 - - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 j17_utests_compression: docker: - image: apache/cassandra-testing-ubuntu2004-java11:latest @@ -1006,7 +898,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -1035,7 +927,7 @@ jobs: else echo "Running ${REPEATED_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -1138,7 +1030,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -1167,7 +1059,7 @@ jobs: else echo "Running ${REPEATED_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -1270,7 +1162,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -1299,7 +1191,7 @@ jobs: else echo "Running ${REPEATED_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -1500,114 +1392,6 @@ jobs: - JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - CASSANDRA_USE_JDK11: true - j17_cqlsh_dtests_py3: - docker: - - image: apache/cassandra-testing-ubuntu2004-java11:latest - resource_class: medium - working_directory: ~/ - shell: /bin/bash -eo pipefail -l - parallelism: 4 - steps: - - attach_workspace: - at: /home/cassandra - - run: - name: Clone Cassandra dtest Repository (via git) - command: | - git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest - - run: - name: Configure virtualenv and python Dependencies - command: | - # note, this should be super quick as all dependencies should be pre-installed in the docker image - # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated - # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and - # rebuild the docker image! (it automatically pulls the latest requirements.txt on build) - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt - pip3 uninstall -y cqlsh - pip3 freeze - - run: - name: Determine Tests to Run (j17_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-intensive-tests --pytest-options '-k cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_without_vnodes_raw /tmp/all_dtest_tests_j17_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_without_vnodes_raw > /tmp/all_dtest_tests_j17_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_j17_without_vnodes > /tmp/split_dtest_tests_j17_without_vnodes.txt\ncat /tmp/split_dtest_tests_j17_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_without_vnodes_final.txt\n" - - run: - name: Run dtests (j17_without_vnodes) - no_output_timeout: 15m - command: | - echo "cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt" - cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt - - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - if [ -n 'CQLSH_PYTHON=/usr/bin/python3.7' ]; then - export CQLSH_PYTHON=/usr/bin/python3.7 - fi - - java -version - cd ~/cassandra-dtest - mkdir -p /tmp/dtest - - echo "env: $(env)" - echo "** done env" - mkdir -p /tmp/results/dtests - # we need the "set -o pipefail" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee - export SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt` - if [ ! -z "$SPLIT_TESTS" ]; then - set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level="DEBUG" --junit-xml=/tmp/results/dtests/pytest_result_j17_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt - else - echo "Tune your parallelism, there are more containers than test classes. Nothing to do in this container" - (exit 1) - fi - - store_test_results: - path: /tmp/results - - store_artifacts: - path: /tmp/dtest - destination: dtest_j17_without_vnodes - - store_artifacts: - path: ~/cassandra-dtest/logs - destination: dtest_j17_without_vnodes_logs - environment: - - ANT_HOME: /usr/share/ant - - LANG: en_US.UTF-8 - - KEEP_TEST_DIR: true - - DEFAULT_DIR: /home/cassandra/cassandra-dtest - - PYTHONIOENCODING: utf-8 - - PYTHONUNBUFFERED: true - - CASS_DRIVER_NO_EXTENSIONS: true - - CASS_DRIVER_NO_CYTHON: true - - CASSANDRA_SKIP_SYNC: true - - DTEST_REPO: https://github.com/apache/cassandra-dtest.git - - DTEST_BRANCH: trunk - - CCM_MAX_HEAP_SIZE: 1024M - - CCM_HEAP_NEWSIZE: 256M - - REPEATED_TESTS_STOP_ON_FAILURE: false - - REPEATED_UTESTS: null - - REPEATED_UTESTS_COUNT: 500 - - REPEATED_UTESTS_FQLTOOL: null - - REPEATED_UTESTS_FQLTOOL_COUNT: 500 - - REPEATED_UTESTS_LONG: null - - REPEATED_UTESTS_LONG_COUNT: 100 - - REPEATED_UTESTS_STRESS: null - - REPEATED_UTESTS_STRESS_COUNT: 500 - - REPEATED_SIMULATOR_DTESTS: null - - REPEATED_SIMULATOR_DTESTS_COUNT: 500 - - REPEATED_JVM_DTESTS: null - - REPEATED_JVM_DTESTS_COUNT: 500 - - REPEATED_JVM_UPGRADE_DTESTS: null - - REPEATED_JVM_UPGRADE_DTESTS_COUNT: 500 - - REPEATED_DTESTS: null - - REPEATED_DTESTS_COUNT: 500 - - REPEATED_LARGE_DTESTS: null - - REPEATED_LARGE_DTESTS_COUNT: 100 - - REPEATED_UPGRADE_DTESTS: null - - REPEATED_UPGRADE_DTESTS_COUNT: 25 - - REPEATED_ANT_TEST_TARGET: testsome - - REPEATED_ANT_TEST_CLASS: null - - REPEATED_ANT_TEST_METHODS: null - - REPEATED_ANT_TEST_VNODES: false - - REPEATED_ANT_TEST_COUNT: 500 - - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 j11_utests_stress_repeat: docker: - image: apache/cassandra-testing-ubuntu2004-java11-w-dependencies:latest @@ -2034,7 +1818,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -2063,7 +1847,7 @@ jobs: else echo "Running ${REPEATED_LARGE_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -2188,7 +1972,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -2217,7 +2001,7 @@ jobs: else echo "Running ${REPEATED_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -3147,7 +2931,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -3155,11 +2939,11 @@ jobs: - run: name: Determine Tests to Run (j11_large_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_large_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_large_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_large_with_vnodes_raw /tmp/all_dtest_tests_j11_large_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_large_with_vnodes_raw > /tmp/all_dtest_tests_j11_large_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_j11_large_with_vnodes > /tmp/split_dtest_tests_j11_large_with_vnodes.txt\ncat /tmp/split_dtest_tests_j11_large_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_large_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_large_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_large_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_large_with_vnodes_raw /tmp/all_dtest_tests_j11_large_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_large_with_vnodes_raw > /tmp/all_dtest_tests_j11_large_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_j11_large_with_vnodes > /tmp/split_dtest_tests_j11_large_with_vnodes.txt\ncat /tmp/split_dtest_tests_j11_large_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\n" - run: name: Run dtests (j11_large_with_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_large_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_large_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -3232,7 +3016,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -3261,7 +3045,7 @@ jobs: else echo "Running ${REPEATED_LARGE_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -3591,7 +3375,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -3599,11 +3383,11 @@ jobs: - run: name: Determine Tests to Run (j11_large_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_large_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_large_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_large_without_vnodes_raw /tmp/all_dtest_tests_j11_large_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_large_without_vnodes_raw > /tmp/all_dtest_tests_j11_large_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_j11_large_without_vnodes > /tmp/split_dtest_tests_j11_large_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_large_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_large_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_large_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_large_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_large_without_vnodes_raw /tmp/all_dtest_tests_j11_large_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_large_without_vnodes_raw > /tmp/all_dtest_tests_j11_large_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_j11_large_without_vnodes > /tmp/split_dtest_tests_j11_large_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_large_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\n" - run: name: Run dtests (j11_large_without_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_large_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_large_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -3884,7 +3668,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -3913,7 +3697,7 @@ jobs: else echo "Running ${REPEATED_UPGRADE_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -4308,115 +4092,6 @@ jobs: - REPEATED_ANT_TEST_COUNT: 500 - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - j11_cqlsh_dtests_py3: - docker: - - image: apache/cassandra-testing-ubuntu2004-java11-w-dependencies:latest - resource_class: medium - working_directory: ~/ - shell: /bin/bash -eo pipefail -l - parallelism: 4 - steps: - - attach_workspace: - at: /home/cassandra - - run: - name: Clone Cassandra dtest Repository (via git) - command: | - git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest - - run: - name: Configure virtualenv and python Dependencies - command: | - # note, this should be super quick as all dependencies should be pre-installed in the docker image - # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated - # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and - # rebuild the docker image! (it automatically pulls the latest requirements.txt on build) - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt - pip3 uninstall -y cqlsh - pip3 freeze - - run: - name: Determine Tests to Run (j11_without_vnodes) - no_output_timeout: 5m - command: "# reminder: this code (along with all the steps) is independently executed on every circle container\n# so the goal here is to get the circleci script to return the tests *this* container will run\n# which we do via the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-intensive-tests --pytest-options '-k cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_without_vnodes_raw /tmp/all_dtest_tests_j11_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_without_vnodes_raw > /tmp/all_dtest_tests_j11_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_j11_without_vnodes > /tmp/split_dtest_tests_j11_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_without_vnodes_final.txt\n" - - run: - name: Run dtests (j11_without_vnodes) - no_output_timeout: 15m - command: | - echo "cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt" - cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt - - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - if [ -n 'CQLSH_PYTHON=/usr/bin/python3.7' ]; then - export CQLSH_PYTHON=/usr/bin/python3.7 - fi - - java -version - cd ~/cassandra-dtest - mkdir -p /tmp/dtest - - echo "env: $(env)" - echo "** done env" - mkdir -p /tmp/results/dtests - # we need the "set -o pipefail" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee - export SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt` - if [ ! -z "$SPLIT_TESTS" ]; then - set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level="DEBUG" --junit-xml=/tmp/results/dtests/pytest_result_j11_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt - else - echo "Tune your parallelism, there are more containers than test classes. Nothing to do in this container" - (exit 1) - fi - - store_test_results: - path: /tmp/results - - store_artifacts: - path: /tmp/dtest - destination: dtest_j11_without_vnodes - - store_artifacts: - path: ~/cassandra-dtest/logs - destination: dtest_j11_without_vnodes_logs - environment: - - ANT_HOME: /usr/share/ant - - LANG: en_US.UTF-8 - - KEEP_TEST_DIR: true - - DEFAULT_DIR: /home/cassandra/cassandra-dtest - - PYTHONIOENCODING: utf-8 - - PYTHONUNBUFFERED: true - - CASS_DRIVER_NO_EXTENSIONS: true - - CASS_DRIVER_NO_CYTHON: true - - CASSANDRA_SKIP_SYNC: true - - DTEST_REPO: https://github.com/apache/cassandra-dtest.git - - DTEST_BRANCH: trunk - - CCM_MAX_HEAP_SIZE: 1024M - - CCM_HEAP_NEWSIZE: 256M - - REPEATED_TESTS_STOP_ON_FAILURE: false - - REPEATED_UTESTS: null - - REPEATED_UTESTS_COUNT: 500 - - REPEATED_UTESTS_FQLTOOL: null - - REPEATED_UTESTS_FQLTOOL_COUNT: 500 - - REPEATED_UTESTS_LONG: null - - REPEATED_UTESTS_LONG_COUNT: 100 - - REPEATED_UTESTS_STRESS: null - - REPEATED_UTESTS_STRESS_COUNT: 500 - - REPEATED_SIMULATOR_DTESTS: null - - REPEATED_SIMULATOR_DTESTS_COUNT: 500 - - REPEATED_JVM_DTESTS: null - - REPEATED_JVM_DTESTS_COUNT: 500 - - REPEATED_JVM_UPGRADE_DTESTS: null - - REPEATED_JVM_UPGRADE_DTESTS_COUNT: 500 - - REPEATED_DTESTS: null - - REPEATED_DTESTS_COUNT: 500 - - REPEATED_LARGE_DTESTS: null - - REPEATED_LARGE_DTESTS_COUNT: 100 - - REPEATED_UPGRADE_DTESTS: null - - REPEATED_UPGRADE_DTESTS_COUNT: 25 - - REPEATED_ANT_TEST_TARGET: testsome - - REPEATED_ANT_TEST_CLASS: null - - REPEATED_ANT_TEST_METHODS: null - - REPEATED_ANT_TEST_VNODES: false - - REPEATED_ANT_TEST_COUNT: 500 - - JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - - CASSANDRA_USE_JDK11: true j17_build: docker: - image: apache/cassandra-testing-ubuntu2004-java11:latest @@ -4823,7 +4498,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -4852,7 +4527,7 @@ jobs: else echo "Running ${REPEATED_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -5755,7 +5430,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -5763,11 +5438,11 @@ jobs: - run: name: Determine Tests to Run (j17_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_with_vnodes_raw /tmp/all_dtest_tests_j17_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_with_vnodes_raw > /tmp/all_dtest_tests_j17_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_j17_with_vnodes > /tmp/split_dtest_tests_j17_with_vnodes.txt\ncat /tmp/split_dtest_tests_j17_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_with_vnodes_raw /tmp/all_dtest_tests_j17_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_with_vnodes_raw > /tmp/all_dtest_tests_j17_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_j17_with_vnodes > /tmp/split_dtest_tests_j17_with_vnodes.txt\ncat /tmp/split_dtest_tests_j17_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_with_vnodes_final.txt\n" - run: name: Run dtests (j17_with_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_with_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_with_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -5839,7 +5514,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -5868,7 +5543,7 @@ jobs: else echo "Running ${REPEATED_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -6158,115 +5833,6 @@ jobs: - REPEATED_ANT_TEST_COUNT: 500 - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - j11_cqlsh_dtests_py3_offheap: - docker: - - image: apache/cassandra-testing-ubuntu2004-java11-w-dependencies:latest - resource_class: medium - working_directory: ~/ - shell: /bin/bash -eo pipefail -l - parallelism: 4 - steps: - - attach_workspace: - at: /home/cassandra - - run: - name: Clone Cassandra dtest Repository (via git) - command: | - git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest - - run: - name: Configure virtualenv and python Dependencies - command: | - # note, this should be super quick as all dependencies should be pre-installed in the docker image - # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated - # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and - # rebuild the docker image! (it automatically pulls the latest requirements.txt on build) - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt - pip3 uninstall -y cqlsh - pip3 freeze - - run: - name: Determine Tests to Run (j11_dtests_offheap) - 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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_dtests_offheap)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_dtests_offheap_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_dtests_offheap_raw /tmp/all_dtest_tests_j11_dtests_offheap\nelse\n grep -e '' /tmp/all_dtest_tests_j11_dtests_offheap_raw > /tmp/all_dtest_tests_j11_dtests_offheap || { 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_j11_dtests_offheap > /tmp/split_dtest_tests_j11_dtests_offheap.txt\ncat /tmp/split_dtest_tests_j11_dtests_offheap.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\ncat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\n" - - run: - name: Run dtests (j11_dtests_offheap) - no_output_timeout: 15m - command: | - echo "cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt" - cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt - - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - if [ -n 'CQLSH_PYTHON=/usr/bin/python3.7' ]; then - export CQLSH_PYTHON=/usr/bin/python3.7 - fi - - java -version - cd ~/cassandra-dtest - mkdir -p /tmp/dtest - - echo "env: $(env)" - echo "** done env" - mkdir -p /tmp/results/dtests - # we need the "set -o pipefail" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee - export SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt` - if [ ! -z "$SPLIT_TESTS" ]; then - set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests --log-level="DEBUG" --junit-xml=/tmp/results/dtests/pytest_result_j11_dtests_offheap.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt - else - echo "Tune your parallelism, there are more containers than test classes. Nothing to do in this container" - (exit 1) - fi - - store_test_results: - path: /tmp/results - - store_artifacts: - path: /tmp/dtest - destination: dtest_j11_dtests_offheap - - store_artifacts: - path: ~/cassandra-dtest/logs - destination: dtest_j11_dtests_offheap_logs - environment: - - ANT_HOME: /usr/share/ant - - LANG: en_US.UTF-8 - - KEEP_TEST_DIR: true - - DEFAULT_DIR: /home/cassandra/cassandra-dtest - - PYTHONIOENCODING: utf-8 - - PYTHONUNBUFFERED: true - - CASS_DRIVER_NO_EXTENSIONS: true - - CASS_DRIVER_NO_CYTHON: true - - CASSANDRA_SKIP_SYNC: true - - DTEST_REPO: https://github.com/apache/cassandra-dtest.git - - DTEST_BRANCH: trunk - - CCM_MAX_HEAP_SIZE: 1024M - - CCM_HEAP_NEWSIZE: 256M - - REPEATED_TESTS_STOP_ON_FAILURE: false - - REPEATED_UTESTS: null - - REPEATED_UTESTS_COUNT: 500 - - REPEATED_UTESTS_FQLTOOL: null - - REPEATED_UTESTS_FQLTOOL_COUNT: 500 - - REPEATED_UTESTS_LONG: null - - REPEATED_UTESTS_LONG_COUNT: 100 - - REPEATED_UTESTS_STRESS: null - - REPEATED_UTESTS_STRESS_COUNT: 500 - - REPEATED_SIMULATOR_DTESTS: null - - REPEATED_SIMULATOR_DTESTS_COUNT: 500 - - REPEATED_JVM_DTESTS: null - - REPEATED_JVM_DTESTS_COUNT: 500 - - REPEATED_JVM_UPGRADE_DTESTS: null - - REPEATED_JVM_UPGRADE_DTESTS_COUNT: 500 - - REPEATED_DTESTS: null - - REPEATED_DTESTS_COUNT: 500 - - REPEATED_LARGE_DTESTS: null - - REPEATED_LARGE_DTESTS_COUNT: 100 - - REPEATED_UPGRADE_DTESTS: null - - REPEATED_UPGRADE_DTESTS_COUNT: 25 - - REPEATED_ANT_TEST_TARGET: testsome - - REPEATED_ANT_TEST_CLASS: null - - REPEATED_ANT_TEST_METHODS: null - - REPEATED_ANT_TEST_VNODES: false - - REPEATED_ANT_TEST_COUNT: 500 - - JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - - CASSANDRA_USE_JDK11: true j11_cqlsh_dtests_py311_offheap: docker: - image: apache/cassandra-testing-ubuntu2004-java11-w-dependencies:latest @@ -6515,7 +6081,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -6523,11 +6089,11 @@ jobs: - run: name: Determine Tests to Run (j11_upgradetests_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_upgradetests_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --execute-upgrade-tests-only --upgrade-target-version-only --upgrade-version-selection all --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_upgradetests_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_upgradetests_without_vnodes_raw /tmp/all_dtest_tests_j11_upgradetests_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_upgradetests_without_vnodes_raw > /tmp/all_dtest_tests_j11_upgradetests_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_j11_upgradetests_without_vnodes > /tmp/split_dtest_tests_j11_upgradetests_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_upgradetests_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_upgradetests_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --execute-upgrade-tests-only --upgrade-target-version-only --upgrade-version-selection all --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_upgradetests_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_upgradetests_without_vnodes_raw /tmp/all_dtest_tests_j11_upgradetests_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_upgradetests_without_vnodes_raw > /tmp/all_dtest_tests_j11_upgradetests_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_j11_upgradetests_without_vnodes > /tmp/split_dtest_tests_j11_upgradetests_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\n" - run: name: Run dtests (j11_upgradetests_without_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --execute-upgrade-tests-only --upgrade-target-version-only --upgrade-version-selection all --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_upgradetests_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --execute-upgrade-tests-only --upgrade-target-version-only --upgrade-version-selection all --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_upgradetests_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -6600,7 +6166,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -6629,7 +6195,7 @@ jobs: else echo "Running ${REPEATED_LARGE_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -6801,115 +6367,6 @@ jobs: - REPEATED_ANT_TEST_COUNT: 500 - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - j11_cqlsh_dtests_py3_vnode: - docker: - - image: apache/cassandra-testing-ubuntu2004-java11-w-dependencies:latest - resource_class: medium - working_directory: ~/ - shell: /bin/bash -eo pipefail -l - parallelism: 4 - steps: - - attach_workspace: - at: /home/cassandra - - run: - name: Clone Cassandra dtest Repository (via git) - command: | - git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest - - run: - name: Configure virtualenv and python Dependencies - command: | - # note, this should be super quick as all dependencies should be pre-installed in the docker image - # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated - # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and - # rebuild the docker image! (it automatically pulls the latest requirements.txt on build) - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt - pip3 uninstall -y cqlsh - pip3 freeze - - run: - name: Determine Tests to Run (j11_with_vnodes) - no_output_timeout: 5m - command: "# reminder: this code (along with all the steps) is independently executed on every circle container\n# so the goal here is to get the circleci script to return the tests *this* container will run\n# which we do via the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-resource-intensive-tests --pytest-options '-k cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_with_vnodes_raw /tmp/all_dtest_tests_j11_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_with_vnodes_raw > /tmp/all_dtest_tests_j11_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_j11_with_vnodes > /tmp/split_dtest_tests_j11_with_vnodes.txt\ncat /tmp/split_dtest_tests_j11_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\n" - - run: - name: Run dtests (j11_with_vnodes) - no_output_timeout: 15m - command: | - echo "cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt" - cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt - - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - if [ -n 'CQLSH_PYTHON=/usr/bin/python3.7' ]; then - export CQLSH_PYTHON=/usr/bin/python3.7 - fi - - java -version - cd ~/cassandra-dtest - mkdir -p /tmp/dtest - - echo "env: $(env)" - echo "** done env" - mkdir -p /tmp/results/dtests - # we need the "set -o pipefail" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee - export SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt` - if [ ! -z "$SPLIT_TESTS" ]; then - set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --skip-resource-intensive-tests --log-level="DEBUG" --junit-xml=/tmp/results/dtests/pytest_result_j11_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt - else - echo "Tune your parallelism, there are more containers than test classes. Nothing to do in this container" - (exit 1) - fi - - store_test_results: - path: /tmp/results - - store_artifacts: - path: /tmp/dtest - destination: dtest_j11_with_vnodes - - store_artifacts: - path: ~/cassandra-dtest/logs - destination: dtest_j11_with_vnodes_logs - environment: - - ANT_HOME: /usr/share/ant - - LANG: en_US.UTF-8 - - KEEP_TEST_DIR: true - - DEFAULT_DIR: /home/cassandra/cassandra-dtest - - PYTHONIOENCODING: utf-8 - - PYTHONUNBUFFERED: true - - CASS_DRIVER_NO_EXTENSIONS: true - - CASS_DRIVER_NO_CYTHON: true - - CASSANDRA_SKIP_SYNC: true - - DTEST_REPO: https://github.com/apache/cassandra-dtest.git - - DTEST_BRANCH: trunk - - CCM_MAX_HEAP_SIZE: 1024M - - CCM_HEAP_NEWSIZE: 256M - - REPEATED_TESTS_STOP_ON_FAILURE: false - - REPEATED_UTESTS: null - - REPEATED_UTESTS_COUNT: 500 - - REPEATED_UTESTS_FQLTOOL: null - - REPEATED_UTESTS_FQLTOOL_COUNT: 500 - - REPEATED_UTESTS_LONG: null - - REPEATED_UTESTS_LONG_COUNT: 100 - - REPEATED_UTESTS_STRESS: null - - REPEATED_UTESTS_STRESS_COUNT: 500 - - REPEATED_SIMULATOR_DTESTS: null - - REPEATED_SIMULATOR_DTESTS_COUNT: 500 - - REPEATED_JVM_DTESTS: null - - REPEATED_JVM_DTESTS_COUNT: 500 - - REPEATED_JVM_UPGRADE_DTESTS: null - - REPEATED_JVM_UPGRADE_DTESTS_COUNT: 500 - - REPEATED_DTESTS: null - - REPEATED_DTESTS_COUNT: 500 - - REPEATED_LARGE_DTESTS: null - - REPEATED_LARGE_DTESTS_COUNT: 100 - - REPEATED_UPGRADE_DTESTS: null - - REPEATED_UPGRADE_DTESTS_COUNT: 25 - - REPEATED_ANT_TEST_TARGET: testsome - - REPEATED_ANT_TEST_CLASS: null - - REPEATED_ANT_TEST_METHODS: null - - REPEATED_ANT_TEST_VNODES: false - - REPEATED_ANT_TEST_COUNT: 500 - - JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - - CASSANDRA_USE_JDK11: true j17_utests_fqltool: docker: - image: apache/cassandra-testing-ubuntu2004-java11:latest @@ -7002,7 +6459,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -7010,11 +6467,11 @@ jobs: - run: name: Determine Tests to Run (j17_large_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_large_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_large_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_large_with_vnodes_raw /tmp/all_dtest_tests_j17_large_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_large_with_vnodes_raw > /tmp/all_dtest_tests_j17_large_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_j17_large_with_vnodes > /tmp/split_dtest_tests_j17_large_with_vnodes.txt\ncat /tmp/split_dtest_tests_j17_large_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_large_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_large_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_large_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_large_with_vnodes_raw /tmp/all_dtest_tests_j17_large_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_large_with_vnodes_raw > /tmp/all_dtest_tests_j17_large_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_j17_large_with_vnodes > /tmp/split_dtest_tests_j17_large_with_vnodes.txt\ncat /tmp/split_dtest_tests_j17_large_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\n" - run: name: Run dtests (j17_large_with_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_large_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_large_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -7086,7 +6543,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -7094,11 +6551,11 @@ jobs: - run: name: Determine Tests to Run (j11_dtests_offheap) 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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_dtests_offheap)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_dtests_offheap_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_dtests_offheap_raw /tmp/all_dtest_tests_j11_dtests_offheap\nelse\n grep -e '' /tmp/all_dtest_tests_j11_dtests_offheap_raw > /tmp/all_dtest_tests_j11_dtests_offheap || { 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_j11_dtests_offheap > /tmp/split_dtest_tests_j11_dtests_offheap.txt\ncat /tmp/split_dtest_tests_j11_dtests_offheap.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\ncat /tmp/split_dtest_tests_j11_dtests_offheap_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_dtests_offheap)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_dtests_offheap_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_dtests_offheap_raw /tmp/all_dtest_tests_j11_dtests_offheap\nelse\n grep -e '' /tmp/all_dtest_tests_j11_dtests_offheap_raw > /tmp/all_dtest_tests_j11_dtests_offheap || { 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_j11_dtests_offheap > /tmp/split_dtest_tests_j11_dtests_offheap.txt\ncat /tmp/split_dtest_tests_j11_dtests_offheap.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\ncat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\n" - run: name: Run dtests (j11_dtests_offheap) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\"\ncat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_dtests_offheap.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\"\ncat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_dtests_offheap.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -7926,114 +7383,6 @@ jobs: - REPEATED_ANT_TEST_COUNT: 500 - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - j17_cqlsh_dtests_py3_vnode: - docker: - - image: apache/cassandra-testing-ubuntu2004-java11:latest - resource_class: medium - working_directory: ~/ - shell: /bin/bash -eo pipefail -l - parallelism: 4 - steps: - - attach_workspace: - at: /home/cassandra - - run: - name: Clone Cassandra dtest Repository (via git) - command: | - git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest - - run: - name: Configure virtualenv and python Dependencies - command: | - # note, this should be super quick as all dependencies should be pre-installed in the docker image - # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated - # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and - # rebuild the docker image! (it automatically pulls the latest requirements.txt on build) - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt - pip3 uninstall -y cqlsh - pip3 freeze - - run: - name: Determine Tests to Run (j17_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-resource-intensive-tests --pytest-options '-k cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_with_vnodes_raw /tmp/all_dtest_tests_j17_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_with_vnodes_raw > /tmp/all_dtest_tests_j17_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_j17_with_vnodes > /tmp/split_dtest_tests_j17_with_vnodes.txt\ncat /tmp/split_dtest_tests_j17_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_with_vnodes_final.txt\n" - - run: - name: Run dtests (j17_with_vnodes) - no_output_timeout: 15m - command: | - echo "cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt" - cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt - - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - if [ -n 'CQLSH_PYTHON=/usr/bin/python3.7' ]; then - export CQLSH_PYTHON=/usr/bin/python3.7 - fi - - java -version - cd ~/cassandra-dtest - mkdir -p /tmp/dtest - - echo "env: $(env)" - echo "** done env" - mkdir -p /tmp/results/dtests - # we need the "set -o pipefail" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee - export SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt` - if [ ! -z "$SPLIT_TESTS" ]; then - set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --skip-resource-intensive-tests --log-level="DEBUG" --junit-xml=/tmp/results/dtests/pytest_result_j17_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt - else - echo "Tune your parallelism, there are more containers than test classes. Nothing to do in this container" - (exit 1) - fi - - store_test_results: - path: /tmp/results - - store_artifacts: - path: /tmp/dtest - destination: dtest_j17_with_vnodes - - store_artifacts: - path: ~/cassandra-dtest/logs - destination: dtest_j17_with_vnodes_logs - environment: - - ANT_HOME: /usr/share/ant - - LANG: en_US.UTF-8 - - KEEP_TEST_DIR: true - - DEFAULT_DIR: /home/cassandra/cassandra-dtest - - PYTHONIOENCODING: utf-8 - - PYTHONUNBUFFERED: true - - CASS_DRIVER_NO_EXTENSIONS: true - - CASS_DRIVER_NO_CYTHON: true - - CASSANDRA_SKIP_SYNC: true - - DTEST_REPO: https://github.com/apache/cassandra-dtest.git - - DTEST_BRANCH: trunk - - CCM_MAX_HEAP_SIZE: 1024M - - CCM_HEAP_NEWSIZE: 256M - - REPEATED_TESTS_STOP_ON_FAILURE: false - - REPEATED_UTESTS: null - - REPEATED_UTESTS_COUNT: 500 - - REPEATED_UTESTS_FQLTOOL: null - - REPEATED_UTESTS_FQLTOOL_COUNT: 500 - - REPEATED_UTESTS_LONG: null - - REPEATED_UTESTS_LONG_COUNT: 100 - - REPEATED_UTESTS_STRESS: null - - REPEATED_UTESTS_STRESS_COUNT: 500 - - REPEATED_SIMULATOR_DTESTS: null - - REPEATED_SIMULATOR_DTESTS_COUNT: 500 - - REPEATED_JVM_DTESTS: null - - REPEATED_JVM_DTESTS_COUNT: 500 - - REPEATED_JVM_UPGRADE_DTESTS: null - - REPEATED_JVM_UPGRADE_DTESTS_COUNT: 500 - - REPEATED_DTESTS: null - - REPEATED_DTESTS_COUNT: 500 - - REPEATED_LARGE_DTESTS: null - - REPEATED_LARGE_DTESTS_COUNT: 100 - - REPEATED_UPGRADE_DTESTS: null - - REPEATED_UPGRADE_DTESTS_COUNT: 25 - - REPEATED_ANT_TEST_TARGET: testsome - - REPEATED_ANT_TEST_CLASS: null - - REPEATED_ANT_TEST_METHODS: null - - REPEATED_ANT_TEST_VNODES: false - - REPEATED_ANT_TEST_COUNT: 500 - - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 j17_cqlsh_dtests_py311_vnode: docker: - image: apache/cassandra-testing-ubuntu2004-java11:latest @@ -8703,7 +8052,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -8711,11 +8060,11 @@ jobs: - run: name: Determine Tests to Run (j11_without_vnodes) no_output_timeout: 5m - command: "# reminder: this code (along with all the steps) is independently executed on every circle container\n# so the goal here is to get the circleci script to return the tests *this* container will run\n# which we do via the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_without_vnodes_raw /tmp/all_dtest_tests_j11_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_without_vnodes_raw > /tmp/all_dtest_tests_j11_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_j11_without_vnodes > /tmp/split_dtest_tests_j11_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_without_vnodes_raw /tmp/all_dtest_tests_j11_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_without_vnodes_raw > /tmp/all_dtest_tests_j11_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_j11_without_vnodes > /tmp/split_dtest_tests_j11_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_without_vnodes_final.txt\n" - run: name: Run dtests (j11_without_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_without_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_without_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -9219,7 +8568,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -9227,11 +8576,11 @@ jobs: - run: name: Determine Tests to Run (j17_large_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_large_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_large_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_large_without_vnodes_raw /tmp/all_dtest_tests_j17_large_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_large_without_vnodes_raw > /tmp/all_dtest_tests_j17_large_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_j17_large_without_vnodes > /tmp/split_dtest_tests_j17_large_without_vnodes.txt\ncat /tmp/split_dtest_tests_j17_large_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_large_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_large_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_large_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_large_without_vnodes_raw /tmp/all_dtest_tests_j17_large_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_large_without_vnodes_raw > /tmp/all_dtest_tests_j17_large_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_j17_large_without_vnodes > /tmp/split_dtest_tests_j17_large_without_vnodes.txt\ncat /tmp/split_dtest_tests_j17_large_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\n" - run: name: Run dtests (j17_large_without_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_large_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_large_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -9553,7 +8902,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -9561,11 +8910,11 @@ jobs: - run: name: Determine Tests to Run (j11_with_vnodes) no_output_timeout: 5m - command: "# reminder: this code (along with all the steps) is independently executed on every circle container\n# so the goal here is to get the circleci script to return the tests *this* container will run\n# which we do via the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_with_vnodes_raw /tmp/all_dtest_tests_j11_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_with_vnodes_raw > /tmp/all_dtest_tests_j11_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_j11_with_vnodes > /tmp/split_dtest_tests_j11_with_vnodes.txt\ncat /tmp/split_dtest_tests_j11_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_with_vnodes_raw /tmp/all_dtest_tests_j11_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_with_vnodes_raw > /tmp/all_dtest_tests_j11_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_j11_with_vnodes > /tmp/split_dtest_tests_j11_with_vnodes.txt\ncat /tmp/split_dtest_tests_j11_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\n" - run: name: Run dtests (j11_with_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -9749,7 +9098,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -9757,11 +9106,11 @@ jobs: - run: name: Determine Tests to Run (j17_dtests_offheap) 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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_dtests_offheap)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_dtests_offheap_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_dtests_offheap_raw /tmp/all_dtest_tests_j17_dtests_offheap\nelse\n grep -e '' /tmp/all_dtest_tests_j17_dtests_offheap_raw > /tmp/all_dtest_tests_j17_dtests_offheap || { 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_j17_dtests_offheap > /tmp/split_dtest_tests_j17_dtests_offheap.txt\ncat /tmp/split_dtest_tests_j17_dtests_offheap.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\ncat /tmp/split_dtest_tests_j17_dtests_offheap_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_dtests_offheap)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_dtests_offheap_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_dtests_offheap_raw /tmp/all_dtest_tests_j17_dtests_offheap\nelse\n grep -e '' /tmp/all_dtest_tests_j17_dtests_offheap_raw > /tmp/all_dtest_tests_j17_dtests_offheap || { 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_j17_dtests_offheap > /tmp/split_dtest_tests_j17_dtests_offheap.txt\ncat /tmp/split_dtest_tests_j17_dtests_offheap.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\ncat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\n" - run: name: Run dtests (j17_dtests_offheap) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\"\ncat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_dtests_offheap.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\"\ncat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_dtests_offheap.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -9833,7 +9182,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -9862,7 +9211,7 @@ jobs: else echo "Running ${REPEATED_LARGE_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -10368,14 +9717,6 @@ workflows: - j11_build - start_j11_cqlsh_tests: type: approval - - j11_cqlsh_dtests_py3: - requires: - - start_j11_cqlsh_tests - - j11_build - - j11_cqlsh_dtests_py3_vnode: - requires: - - start_j11_cqlsh_tests - - j11_build - j11_cqlsh_dtests_py38: requires: - start_j11_cqlsh_tests @@ -10394,10 +9735,6 @@ workflows: - j11_build - start_j11_cqlsh_tests_offheap: type: approval - - j11_cqlsh_dtests_py3_offheap: - requires: - - start_j11_cqlsh_tests_offheap - - j11_build - j11_cqlsh_dtests_py38_offheap: requires: - start_j11_cqlsh_tests_offheap @@ -10408,14 +9745,6 @@ workflows: - j11_build - start_j17_cqlsh_tests: type: approval - - j17_cqlsh_dtests_py3: - requires: - - start_j17_cqlsh_tests - - j11_build - - j17_cqlsh_dtests_py3_vnode: - requires: - - start_j17_cqlsh_tests - - j11_build - j17_cqlsh_dtests_py38: requires: - start_j17_cqlsh_tests @@ -10434,10 +9763,6 @@ workflows: - j11_build - start_j17_cqlsh_tests_offheap: type: approval - - j17_cqlsh_dtests_py3_offheap: - requires: - - start_j17_cqlsh_tests_offheap - - j11_build - j17_cqlsh_dtests_py38_offheap: requires: - start_j17_cqlsh_tests_offheap @@ -10620,12 +9945,6 @@ workflows: requires: - start_j17_dtests_large - j11_build - - j11_cqlsh_dtests_py3: - requires: - - j11_build - - j11_cqlsh_dtests_py3_vnode: - requires: - - j11_build - j11_cqlsh_dtests_py38: requires: - j11_build @@ -10640,10 +9959,6 @@ workflows: - j11_build - start_j11_cqlsh_dtests_offheap: type: approval - - j11_cqlsh_dtests_py3_offheap: - requires: - - start_j11_cqlsh_dtests_offheap - - j11_build - j11_cqlsh_dtests_py38_offheap: requires: - start_j11_cqlsh_dtests_offheap @@ -10652,12 +9967,6 @@ workflows: requires: - start_j11_cqlsh_dtests_offheap - j11_build - - j17_cqlsh_dtests_py3: - requires: - - j11_build - - j17_cqlsh_dtests_py3_vnode: - requires: - - j11_build - j17_cqlsh_dtests_py38: requires: - j11_build @@ -10672,10 +9981,6 @@ workflows: - j11_build - start_j17_cqlsh-dtests-offheap: type: approval - - j17_cqlsh_dtests_py3_offheap: - requires: - - start_j17_cqlsh-dtests-offheap - - j11_build - j17_cqlsh_dtests_py38_offheap: requires: - start_j17_cqlsh-dtests-offheap @@ -10759,14 +10064,6 @@ workflows: - j17_build - start_j17_cqlsh_tests: type: approval - - j17_cqlsh_dtests_py3: - requires: - - start_j17_cqlsh_tests - - j17_build - - j17_cqlsh_dtests_py3_vnode: - requires: - - start_j17_cqlsh_tests - - j17_build - j17_cqlsh_dtests_py38: requires: - start_j17_cqlsh_tests @@ -10785,10 +10082,6 @@ workflows: - j17_build - start_j17_cqlsh-dtests-offheap: type: approval - - j17_cqlsh_dtests_py3_offheap: - requires: - - start_j17_cqlsh-dtests-offheap - - j17_build - j17_cqlsh_dtests_py38_offheap: requires: - start_j17_cqlsh-dtests-offheap @@ -10892,12 +10185,6 @@ workflows: requires: - start_j17_dtests_large - j17_build - - j17_cqlsh_dtests_py3: - requires: - - j17_build - - j17_cqlsh_dtests_py3_vnode: - requires: - - j17_build - j17_cqlsh_dtests_py38: requires: - j17_build @@ -10912,10 +10199,6 @@ workflows: - j17_build - start_j17_cqlsh-dtests-offheap: type: approval - - j17_cqlsh_dtests_py3_offheap: - requires: - - start_j17_cqlsh-dtests-offheap - - j17_build - j17_cqlsh_dtests_py38_offheap: requires: - start_j17_cqlsh-dtests-offheap diff --git a/.circleci/config.yml.PAID b/.circleci/config.yml.PAID index d686b8ad69..95524194be 100644 --- a/.circleci/config.yml.PAID +++ b/.circleci/config.yml.PAID @@ -151,7 +151,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -159,11 +159,11 @@ jobs: - run: name: Determine Tests to Run (j17_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_without_vnodes_raw /tmp/all_dtest_tests_j17_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_without_vnodes_raw > /tmp/all_dtest_tests_j17_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_j17_without_vnodes > /tmp/split_dtest_tests_j17_without_vnodes.txt\ncat /tmp/split_dtest_tests_j17_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_without_vnodes_raw /tmp/all_dtest_tests_j17_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_without_vnodes_raw > /tmp/all_dtest_tests_j17_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_j17_without_vnodes > /tmp/split_dtest_tests_j17_without_vnodes.txt\ncat /tmp/split_dtest_tests_j17_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_without_vnodes_final.txt\n" - run: name: Run dtests (j17_without_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_without_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_without_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -630,114 +630,6 @@ jobs: - JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - CASSANDRA_USE_JDK11: true - j17_cqlsh_dtests_py3_offheap: - docker: - - image: apache/cassandra-testing-ubuntu2004-java11:latest - resource_class: large - working_directory: ~/ - shell: /bin/bash -eo pipefail -l - parallelism: 50 - steps: - - attach_workspace: - at: /home/cassandra - - run: - name: Clone Cassandra dtest Repository (via git) - command: | - git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest - - run: - name: Configure virtualenv and python Dependencies - command: | - # note, this should be super quick as all dependencies should be pre-installed in the docker image - # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated - # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and - # rebuild the docker image! (it automatically pulls the latest requirements.txt on build) - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt - pip3 uninstall -y cqlsh - pip3 freeze - - run: - name: Determine Tests to Run (j17_dtests_offheap) - 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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_dtests_offheap)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_dtests_offheap_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_dtests_offheap_raw /tmp/all_dtest_tests_j17_dtests_offheap\nelse\n grep -e '' /tmp/all_dtest_tests_j17_dtests_offheap_raw > /tmp/all_dtest_tests_j17_dtests_offheap || { 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_j17_dtests_offheap > /tmp/split_dtest_tests_j17_dtests_offheap.txt\ncat /tmp/split_dtest_tests_j17_dtests_offheap.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\ncat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\n" - - run: - name: Run dtests (j17_dtests_offheap) - no_output_timeout: 15m - command: | - echo "cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt" - cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt - - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - if [ -n 'CQLSH_PYTHON=/usr/bin/python3.7' ]; then - export CQLSH_PYTHON=/usr/bin/python3.7 - fi - - java -version - cd ~/cassandra-dtest - mkdir -p /tmp/dtest - - echo "env: $(env)" - echo "** done env" - mkdir -p /tmp/results/dtests - # we need the "set -o pipefail" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee - export SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt` - if [ ! -z "$SPLIT_TESTS" ]; then - set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests --log-level="DEBUG" --junit-xml=/tmp/results/dtests/pytest_result_j17_dtests_offheap.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt - else - echo "Tune your parallelism, there are more containers than test classes. Nothing to do in this container" - (exit 1) - fi - - store_test_results: - path: /tmp/results - - store_artifacts: - path: /tmp/dtest - destination: dtest_j17_dtests_offheap - - store_artifacts: - path: ~/cassandra-dtest/logs - destination: dtest_j17_dtests_offheap_logs - environment: - - ANT_HOME: /usr/share/ant - - LANG: en_US.UTF-8 - - KEEP_TEST_DIR: true - - DEFAULT_DIR: /home/cassandra/cassandra-dtest - - PYTHONIOENCODING: utf-8 - - PYTHONUNBUFFERED: true - - CASS_DRIVER_NO_EXTENSIONS: true - - CASS_DRIVER_NO_CYTHON: true - - CASSANDRA_SKIP_SYNC: true - - DTEST_REPO: https://github.com/apache/cassandra-dtest.git - - DTEST_BRANCH: trunk - - CCM_MAX_HEAP_SIZE: 1024M - - CCM_HEAP_NEWSIZE: 256M - - REPEATED_TESTS_STOP_ON_FAILURE: false - - REPEATED_UTESTS: null - - REPEATED_UTESTS_COUNT: 500 - - REPEATED_UTESTS_FQLTOOL: null - - REPEATED_UTESTS_FQLTOOL_COUNT: 500 - - REPEATED_UTESTS_LONG: null - - REPEATED_UTESTS_LONG_COUNT: 100 - - REPEATED_UTESTS_STRESS: null - - REPEATED_UTESTS_STRESS_COUNT: 500 - - REPEATED_SIMULATOR_DTESTS: null - - REPEATED_SIMULATOR_DTESTS_COUNT: 500 - - REPEATED_JVM_DTESTS: null - - REPEATED_JVM_DTESTS_COUNT: 500 - - REPEATED_JVM_UPGRADE_DTESTS: null - - REPEATED_JVM_UPGRADE_DTESTS_COUNT: 500 - - REPEATED_DTESTS: null - - REPEATED_DTESTS_COUNT: 500 - - REPEATED_LARGE_DTESTS: null - - REPEATED_LARGE_DTESTS_COUNT: 100 - - REPEATED_UPGRADE_DTESTS: null - - REPEATED_UPGRADE_DTESTS_COUNT: 25 - - REPEATED_ANT_TEST_TARGET: testsome - - REPEATED_ANT_TEST_CLASS: null - - REPEATED_ANT_TEST_METHODS: null - - REPEATED_ANT_TEST_VNODES: false - - REPEATED_ANT_TEST_COUNT: 500 - - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 j17_utests_compression: docker: - image: apache/cassandra-testing-ubuntu2004-java11:latest @@ -1006,7 +898,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -1035,7 +927,7 @@ jobs: else echo "Running ${REPEATED_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -1138,7 +1030,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -1167,7 +1059,7 @@ jobs: else echo "Running ${REPEATED_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -1270,7 +1162,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -1299,7 +1191,7 @@ jobs: else echo "Running ${REPEATED_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -1500,114 +1392,6 @@ jobs: - JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - CASSANDRA_USE_JDK11: true - j17_cqlsh_dtests_py3: - docker: - - image: apache/cassandra-testing-ubuntu2004-java11:latest - resource_class: large - working_directory: ~/ - shell: /bin/bash -eo pipefail -l - parallelism: 50 - steps: - - attach_workspace: - at: /home/cassandra - - run: - name: Clone Cassandra dtest Repository (via git) - command: | - git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest - - run: - name: Configure virtualenv and python Dependencies - command: | - # note, this should be super quick as all dependencies should be pre-installed in the docker image - # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated - # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and - # rebuild the docker image! (it automatically pulls the latest requirements.txt on build) - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt - pip3 uninstall -y cqlsh - pip3 freeze - - run: - name: Determine Tests to Run (j17_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-intensive-tests --pytest-options '-k cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_without_vnodes_raw /tmp/all_dtest_tests_j17_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_without_vnodes_raw > /tmp/all_dtest_tests_j17_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_j17_without_vnodes > /tmp/split_dtest_tests_j17_without_vnodes.txt\ncat /tmp/split_dtest_tests_j17_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_without_vnodes_final.txt\n" - - run: - name: Run dtests (j17_without_vnodes) - no_output_timeout: 15m - command: | - echo "cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt" - cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt - - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - if [ -n 'CQLSH_PYTHON=/usr/bin/python3.7' ]; then - export CQLSH_PYTHON=/usr/bin/python3.7 - fi - - java -version - cd ~/cassandra-dtest - mkdir -p /tmp/dtest - - echo "env: $(env)" - echo "** done env" - mkdir -p /tmp/results/dtests - # we need the "set -o pipefail" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee - export SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_without_vnodes_final.txt` - if [ ! -z "$SPLIT_TESTS" ]; then - set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level="DEBUG" --junit-xml=/tmp/results/dtests/pytest_result_j17_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt - else - echo "Tune your parallelism, there are more containers than test classes. Nothing to do in this container" - (exit 1) - fi - - store_test_results: - path: /tmp/results - - store_artifacts: - path: /tmp/dtest - destination: dtest_j17_without_vnodes - - store_artifacts: - path: ~/cassandra-dtest/logs - destination: dtest_j17_without_vnodes_logs - environment: - - ANT_HOME: /usr/share/ant - - LANG: en_US.UTF-8 - - KEEP_TEST_DIR: true - - DEFAULT_DIR: /home/cassandra/cassandra-dtest - - PYTHONIOENCODING: utf-8 - - PYTHONUNBUFFERED: true - - CASS_DRIVER_NO_EXTENSIONS: true - - CASS_DRIVER_NO_CYTHON: true - - CASSANDRA_SKIP_SYNC: true - - DTEST_REPO: https://github.com/apache/cassandra-dtest.git - - DTEST_BRANCH: trunk - - CCM_MAX_HEAP_SIZE: 1024M - - CCM_HEAP_NEWSIZE: 256M - - REPEATED_TESTS_STOP_ON_FAILURE: false - - REPEATED_UTESTS: null - - REPEATED_UTESTS_COUNT: 500 - - REPEATED_UTESTS_FQLTOOL: null - - REPEATED_UTESTS_FQLTOOL_COUNT: 500 - - REPEATED_UTESTS_LONG: null - - REPEATED_UTESTS_LONG_COUNT: 100 - - REPEATED_UTESTS_STRESS: null - - REPEATED_UTESTS_STRESS_COUNT: 500 - - REPEATED_SIMULATOR_DTESTS: null - - REPEATED_SIMULATOR_DTESTS_COUNT: 500 - - REPEATED_JVM_DTESTS: null - - REPEATED_JVM_DTESTS_COUNT: 500 - - REPEATED_JVM_UPGRADE_DTESTS: null - - REPEATED_JVM_UPGRADE_DTESTS_COUNT: 500 - - REPEATED_DTESTS: null - - REPEATED_DTESTS_COUNT: 500 - - REPEATED_LARGE_DTESTS: null - - REPEATED_LARGE_DTESTS_COUNT: 100 - - REPEATED_UPGRADE_DTESTS: null - - REPEATED_UPGRADE_DTESTS_COUNT: 25 - - REPEATED_ANT_TEST_TARGET: testsome - - REPEATED_ANT_TEST_CLASS: null - - REPEATED_ANT_TEST_METHODS: null - - REPEATED_ANT_TEST_VNODES: false - - REPEATED_ANT_TEST_COUNT: 500 - - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 j11_utests_stress_repeat: docker: - image: apache/cassandra-testing-ubuntu2004-java11-w-dependencies:latest @@ -2034,7 +1818,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -2063,7 +1847,7 @@ jobs: else echo "Running ${REPEATED_LARGE_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -2188,7 +1972,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -2217,7 +2001,7 @@ jobs: else echo "Running ${REPEATED_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -3147,7 +2931,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -3155,11 +2939,11 @@ jobs: - run: name: Determine Tests to Run (j11_large_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_large_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_large_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_large_with_vnodes_raw /tmp/all_dtest_tests_j11_large_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_large_with_vnodes_raw > /tmp/all_dtest_tests_j11_large_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_j11_large_with_vnodes > /tmp/split_dtest_tests_j11_large_with_vnodes.txt\ncat /tmp/split_dtest_tests_j11_large_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_large_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_large_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_large_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_large_with_vnodes_raw /tmp/all_dtest_tests_j11_large_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_large_with_vnodes_raw > /tmp/all_dtest_tests_j11_large_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_j11_large_with_vnodes > /tmp/split_dtest_tests_j11_large_with_vnodes.txt\ncat /tmp/split_dtest_tests_j11_large_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\n" - run: name: Run dtests (j11_large_with_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_large_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_large_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_large_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -3232,7 +3016,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -3261,7 +3045,7 @@ jobs: else echo "Running ${REPEATED_LARGE_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -3591,7 +3375,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -3599,11 +3383,11 @@ jobs: - run: name: Determine Tests to Run (j11_large_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_large_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_large_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_large_without_vnodes_raw /tmp/all_dtest_tests_j11_large_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_large_without_vnodes_raw > /tmp/all_dtest_tests_j11_large_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_j11_large_without_vnodes > /tmp/split_dtest_tests_j11_large_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_large_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_large_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_large_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_large_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_large_without_vnodes_raw /tmp/all_dtest_tests_j11_large_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_large_without_vnodes_raw > /tmp/all_dtest_tests_j11_large_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_j11_large_without_vnodes > /tmp/split_dtest_tests_j11_large_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_large_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\n" - run: name: Run dtests (j11_large_without_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_large_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_large_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_large_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -3884,7 +3668,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -3913,7 +3697,7 @@ jobs: else echo "Running ${REPEATED_UPGRADE_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -4308,115 +4092,6 @@ jobs: - REPEATED_ANT_TEST_COUNT: 500 - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - j11_cqlsh_dtests_py3: - docker: - - image: apache/cassandra-testing-ubuntu2004-java11-w-dependencies:latest - resource_class: large - working_directory: ~/ - shell: /bin/bash -eo pipefail -l - parallelism: 50 - steps: - - attach_workspace: - at: /home/cassandra - - run: - name: Clone Cassandra dtest Repository (via git) - command: | - git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest - - run: - name: Configure virtualenv and python Dependencies - command: | - # note, this should be super quick as all dependencies should be pre-installed in the docker image - # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated - # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and - # rebuild the docker image! (it automatically pulls the latest requirements.txt on build) - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt - pip3 uninstall -y cqlsh - pip3 freeze - - run: - name: Determine Tests to Run (j11_without_vnodes) - no_output_timeout: 5m - command: "# reminder: this code (along with all the steps) is independently executed on every circle container\n# so the goal here is to get the circleci script to return the tests *this* container will run\n# which we do via the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-intensive-tests --pytest-options '-k cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_without_vnodes_raw /tmp/all_dtest_tests_j11_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_without_vnodes_raw > /tmp/all_dtest_tests_j11_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_j11_without_vnodes > /tmp/split_dtest_tests_j11_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_without_vnodes_final.txt\n" - - run: - name: Run dtests (j11_without_vnodes) - no_output_timeout: 15m - command: | - echo "cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt" - cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt - - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - if [ -n 'CQLSH_PYTHON=/usr/bin/python3.7' ]; then - export CQLSH_PYTHON=/usr/bin/python3.7 - fi - - java -version - cd ~/cassandra-dtest - mkdir -p /tmp/dtest - - echo "env: $(env)" - echo "** done env" - mkdir -p /tmp/results/dtests - # we need the "set -o pipefail" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee - export SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt` - if [ ! -z "$SPLIT_TESTS" ]; then - set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level="DEBUG" --junit-xml=/tmp/results/dtests/pytest_result_j11_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt - else - echo "Tune your parallelism, there are more containers than test classes. Nothing to do in this container" - (exit 1) - fi - - store_test_results: - path: /tmp/results - - store_artifacts: - path: /tmp/dtest - destination: dtest_j11_without_vnodes - - store_artifacts: - path: ~/cassandra-dtest/logs - destination: dtest_j11_without_vnodes_logs - environment: - - ANT_HOME: /usr/share/ant - - LANG: en_US.UTF-8 - - KEEP_TEST_DIR: true - - DEFAULT_DIR: /home/cassandra/cassandra-dtest - - PYTHONIOENCODING: utf-8 - - PYTHONUNBUFFERED: true - - CASS_DRIVER_NO_EXTENSIONS: true - - CASS_DRIVER_NO_CYTHON: true - - CASSANDRA_SKIP_SYNC: true - - DTEST_REPO: https://github.com/apache/cassandra-dtest.git - - DTEST_BRANCH: trunk - - CCM_MAX_HEAP_SIZE: 1024M - - CCM_HEAP_NEWSIZE: 256M - - REPEATED_TESTS_STOP_ON_FAILURE: false - - REPEATED_UTESTS: null - - REPEATED_UTESTS_COUNT: 500 - - REPEATED_UTESTS_FQLTOOL: null - - REPEATED_UTESTS_FQLTOOL_COUNT: 500 - - REPEATED_UTESTS_LONG: null - - REPEATED_UTESTS_LONG_COUNT: 100 - - REPEATED_UTESTS_STRESS: null - - REPEATED_UTESTS_STRESS_COUNT: 500 - - REPEATED_SIMULATOR_DTESTS: null - - REPEATED_SIMULATOR_DTESTS_COUNT: 500 - - REPEATED_JVM_DTESTS: null - - REPEATED_JVM_DTESTS_COUNT: 500 - - REPEATED_JVM_UPGRADE_DTESTS: null - - REPEATED_JVM_UPGRADE_DTESTS_COUNT: 500 - - REPEATED_DTESTS: null - - REPEATED_DTESTS_COUNT: 500 - - REPEATED_LARGE_DTESTS: null - - REPEATED_LARGE_DTESTS_COUNT: 100 - - REPEATED_UPGRADE_DTESTS: null - - REPEATED_UPGRADE_DTESTS_COUNT: 25 - - REPEATED_ANT_TEST_TARGET: testsome - - REPEATED_ANT_TEST_CLASS: null - - REPEATED_ANT_TEST_METHODS: null - - REPEATED_ANT_TEST_VNODES: false - - REPEATED_ANT_TEST_COUNT: 500 - - JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - - CASSANDRA_USE_JDK11: true j17_build: docker: - image: apache/cassandra-testing-ubuntu2004-java11:latest @@ -4823,7 +4498,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -4852,7 +4527,7 @@ jobs: else echo "Running ${REPEATED_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -5755,7 +5430,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -5763,11 +5438,11 @@ jobs: - run: name: Determine Tests to Run (j17_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_with_vnodes_raw /tmp/all_dtest_tests_j17_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_with_vnodes_raw > /tmp/all_dtest_tests_j17_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_j17_with_vnodes > /tmp/split_dtest_tests_j17_with_vnodes.txt\ncat /tmp/split_dtest_tests_j17_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_with_vnodes_raw /tmp/all_dtest_tests_j17_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_with_vnodes_raw > /tmp/all_dtest_tests_j17_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_j17_with_vnodes > /tmp/split_dtest_tests_j17_with_vnodes.txt\ncat /tmp/split_dtest_tests_j17_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_with_vnodes_final.txt\n" - run: name: Run dtests (j17_with_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_with_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_with_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -5839,7 +5514,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -5868,7 +5543,7 @@ jobs: else echo "Running ${REPEATED_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -6158,115 +5833,6 @@ jobs: - REPEATED_ANT_TEST_COUNT: 500 - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - j11_cqlsh_dtests_py3_offheap: - docker: - - image: apache/cassandra-testing-ubuntu2004-java11-w-dependencies:latest - resource_class: large - working_directory: ~/ - shell: /bin/bash -eo pipefail -l - parallelism: 50 - steps: - - attach_workspace: - at: /home/cassandra - - run: - name: Clone Cassandra dtest Repository (via git) - command: | - git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest - - run: - name: Configure virtualenv and python Dependencies - command: | - # note, this should be super quick as all dependencies should be pre-installed in the docker image - # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated - # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and - # rebuild the docker image! (it automatically pulls the latest requirements.txt on build) - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt - pip3 uninstall -y cqlsh - pip3 freeze - - run: - name: Determine Tests to Run (j11_dtests_offheap) - 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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_dtests_offheap)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_dtests_offheap_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_dtests_offheap_raw /tmp/all_dtest_tests_j11_dtests_offheap\nelse\n grep -e '' /tmp/all_dtest_tests_j11_dtests_offheap_raw > /tmp/all_dtest_tests_j11_dtests_offheap || { 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_j11_dtests_offheap > /tmp/split_dtest_tests_j11_dtests_offheap.txt\ncat /tmp/split_dtest_tests_j11_dtests_offheap.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\ncat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\n" - - run: - name: Run dtests (j11_dtests_offheap) - no_output_timeout: 15m - command: | - echo "cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt" - cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt - - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - if [ -n 'CQLSH_PYTHON=/usr/bin/python3.7' ]; then - export CQLSH_PYTHON=/usr/bin/python3.7 - fi - - java -version - cd ~/cassandra-dtest - mkdir -p /tmp/dtest - - echo "env: $(env)" - echo "** done env" - mkdir -p /tmp/results/dtests - # we need the "set -o pipefail" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee - export SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt` - if [ ! -z "$SPLIT_TESTS" ]; then - set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests --log-level="DEBUG" --junit-xml=/tmp/results/dtests/pytest_result_j11_dtests_offheap.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt - else - echo "Tune your parallelism, there are more containers than test classes. Nothing to do in this container" - (exit 1) - fi - - store_test_results: - path: /tmp/results - - store_artifacts: - path: /tmp/dtest - destination: dtest_j11_dtests_offheap - - store_artifacts: - path: ~/cassandra-dtest/logs - destination: dtest_j11_dtests_offheap_logs - environment: - - ANT_HOME: /usr/share/ant - - LANG: en_US.UTF-8 - - KEEP_TEST_DIR: true - - DEFAULT_DIR: /home/cassandra/cassandra-dtest - - PYTHONIOENCODING: utf-8 - - PYTHONUNBUFFERED: true - - CASS_DRIVER_NO_EXTENSIONS: true - - CASS_DRIVER_NO_CYTHON: true - - CASSANDRA_SKIP_SYNC: true - - DTEST_REPO: https://github.com/apache/cassandra-dtest.git - - DTEST_BRANCH: trunk - - CCM_MAX_HEAP_SIZE: 1024M - - CCM_HEAP_NEWSIZE: 256M - - REPEATED_TESTS_STOP_ON_FAILURE: false - - REPEATED_UTESTS: null - - REPEATED_UTESTS_COUNT: 500 - - REPEATED_UTESTS_FQLTOOL: null - - REPEATED_UTESTS_FQLTOOL_COUNT: 500 - - REPEATED_UTESTS_LONG: null - - REPEATED_UTESTS_LONG_COUNT: 100 - - REPEATED_UTESTS_STRESS: null - - REPEATED_UTESTS_STRESS_COUNT: 500 - - REPEATED_SIMULATOR_DTESTS: null - - REPEATED_SIMULATOR_DTESTS_COUNT: 500 - - REPEATED_JVM_DTESTS: null - - REPEATED_JVM_DTESTS_COUNT: 500 - - REPEATED_JVM_UPGRADE_DTESTS: null - - REPEATED_JVM_UPGRADE_DTESTS_COUNT: 500 - - REPEATED_DTESTS: null - - REPEATED_DTESTS_COUNT: 500 - - REPEATED_LARGE_DTESTS: null - - REPEATED_LARGE_DTESTS_COUNT: 100 - - REPEATED_UPGRADE_DTESTS: null - - REPEATED_UPGRADE_DTESTS_COUNT: 25 - - REPEATED_ANT_TEST_TARGET: testsome - - REPEATED_ANT_TEST_CLASS: null - - REPEATED_ANT_TEST_METHODS: null - - REPEATED_ANT_TEST_VNODES: false - - REPEATED_ANT_TEST_COUNT: 500 - - JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - - CASSANDRA_USE_JDK11: true j11_cqlsh_dtests_py311_offheap: docker: - image: apache/cassandra-testing-ubuntu2004-java11-w-dependencies:latest @@ -6515,7 +6081,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -6523,11 +6089,11 @@ jobs: - run: name: Determine Tests to Run (j11_upgradetests_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_upgradetests_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --execute-upgrade-tests-only --upgrade-target-version-only --upgrade-version-selection all --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_upgradetests_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_upgradetests_without_vnodes_raw /tmp/all_dtest_tests_j11_upgradetests_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_upgradetests_without_vnodes_raw > /tmp/all_dtest_tests_j11_upgradetests_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_j11_upgradetests_without_vnodes > /tmp/split_dtest_tests_j11_upgradetests_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_upgradetests_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_upgradetests_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --execute-upgrade-tests-only --upgrade-target-version-only --upgrade-version-selection all --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_upgradetests_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_upgradetests_without_vnodes_raw /tmp/all_dtest_tests_j11_upgradetests_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_upgradetests_without_vnodes_raw > /tmp/all_dtest_tests_j11_upgradetests_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_j11_upgradetests_without_vnodes > /tmp/split_dtest_tests_j11_upgradetests_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\n" - run: name: Run dtests (j11_upgradetests_without_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --execute-upgrade-tests-only --upgrade-target-version-only --upgrade-version-selection all --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_upgradetests_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_upgradetests_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --execute-upgrade-tests-only --upgrade-target-version-only --upgrade-version-selection all --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_upgradetests_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -6600,7 +6166,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -6629,7 +6195,7 @@ jobs: else echo "Running ${REPEATED_LARGE_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -6801,115 +6367,6 @@ jobs: - REPEATED_ANT_TEST_COUNT: 500 - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - j11_cqlsh_dtests_py3_vnode: - docker: - - image: apache/cassandra-testing-ubuntu2004-java11-w-dependencies:latest - resource_class: large - working_directory: ~/ - shell: /bin/bash -eo pipefail -l - parallelism: 50 - steps: - - attach_workspace: - at: /home/cassandra - - run: - name: Clone Cassandra dtest Repository (via git) - command: | - git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest - - run: - name: Configure virtualenv and python Dependencies - command: | - # note, this should be super quick as all dependencies should be pre-installed in the docker image - # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated - # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and - # rebuild the docker image! (it automatically pulls the latest requirements.txt on build) - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt - pip3 uninstall -y cqlsh - pip3 freeze - - run: - name: Determine Tests to Run (j11_with_vnodes) - no_output_timeout: 5m - command: "# reminder: this code (along with all the steps) is independently executed on every circle container\n# so the goal here is to get the circleci script to return the tests *this* container will run\n# which we do via the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-resource-intensive-tests --pytest-options '-k cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_with_vnodes_raw /tmp/all_dtest_tests_j11_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_with_vnodes_raw > /tmp/all_dtest_tests_j11_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_j11_with_vnodes > /tmp/split_dtest_tests_j11_with_vnodes.txt\ncat /tmp/split_dtest_tests_j11_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\n" - - run: - name: Run dtests (j11_with_vnodes) - no_output_timeout: 15m - command: | - echo "cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt" - cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt - - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - if [ -n 'CQLSH_PYTHON=/usr/bin/python3.7' ]; then - export CQLSH_PYTHON=/usr/bin/python3.7 - fi - - java -version - cd ~/cassandra-dtest - mkdir -p /tmp/dtest - - echo "env: $(env)" - echo "** done env" - mkdir -p /tmp/results/dtests - # we need the "set -o pipefail" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee - export SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt` - if [ ! -z "$SPLIT_TESTS" ]; then - set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --skip-resource-intensive-tests --log-level="DEBUG" --junit-xml=/tmp/results/dtests/pytest_result_j11_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt - else - echo "Tune your parallelism, there are more containers than test classes. Nothing to do in this container" - (exit 1) - fi - - store_test_results: - path: /tmp/results - - store_artifacts: - path: /tmp/dtest - destination: dtest_j11_with_vnodes - - store_artifacts: - path: ~/cassandra-dtest/logs - destination: dtest_j11_with_vnodes_logs - environment: - - ANT_HOME: /usr/share/ant - - LANG: en_US.UTF-8 - - KEEP_TEST_DIR: true - - DEFAULT_DIR: /home/cassandra/cassandra-dtest - - PYTHONIOENCODING: utf-8 - - PYTHONUNBUFFERED: true - - CASS_DRIVER_NO_EXTENSIONS: true - - CASS_DRIVER_NO_CYTHON: true - - CASSANDRA_SKIP_SYNC: true - - DTEST_REPO: https://github.com/apache/cassandra-dtest.git - - DTEST_BRANCH: trunk - - CCM_MAX_HEAP_SIZE: 1024M - - CCM_HEAP_NEWSIZE: 256M - - REPEATED_TESTS_STOP_ON_FAILURE: false - - REPEATED_UTESTS: null - - REPEATED_UTESTS_COUNT: 500 - - REPEATED_UTESTS_FQLTOOL: null - - REPEATED_UTESTS_FQLTOOL_COUNT: 500 - - REPEATED_UTESTS_LONG: null - - REPEATED_UTESTS_LONG_COUNT: 100 - - REPEATED_UTESTS_STRESS: null - - REPEATED_UTESTS_STRESS_COUNT: 500 - - REPEATED_SIMULATOR_DTESTS: null - - REPEATED_SIMULATOR_DTESTS_COUNT: 500 - - REPEATED_JVM_DTESTS: null - - REPEATED_JVM_DTESTS_COUNT: 500 - - REPEATED_JVM_UPGRADE_DTESTS: null - - REPEATED_JVM_UPGRADE_DTESTS_COUNT: 500 - - REPEATED_DTESTS: null - - REPEATED_DTESTS_COUNT: 500 - - REPEATED_LARGE_DTESTS: null - - REPEATED_LARGE_DTESTS_COUNT: 100 - - REPEATED_UPGRADE_DTESTS: null - - REPEATED_UPGRADE_DTESTS_COUNT: 25 - - REPEATED_ANT_TEST_TARGET: testsome - - REPEATED_ANT_TEST_CLASS: null - - REPEATED_ANT_TEST_METHODS: null - - REPEATED_ANT_TEST_VNODES: false - - REPEATED_ANT_TEST_COUNT: 500 - - JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - - JDK_HOME: /usr/lib/jvm/java-11-openjdk-amd64 - - CASSANDRA_USE_JDK11: true j17_utests_fqltool: docker: - image: apache/cassandra-testing-ubuntu2004-java11:latest @@ -7002,7 +6459,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -7010,11 +6467,11 @@ jobs: - run: name: Determine Tests to Run (j17_large_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_large_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_large_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_large_with_vnodes_raw /tmp/all_dtest_tests_j17_large_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_large_with_vnodes_raw > /tmp/all_dtest_tests_j17_large_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_j17_large_with_vnodes > /tmp/split_dtest_tests_j17_large_with_vnodes.txt\ncat /tmp/split_dtest_tests_j17_large_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_large_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_large_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_large_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_large_with_vnodes_raw /tmp/all_dtest_tests_j17_large_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_large_with_vnodes_raw > /tmp/all_dtest_tests_j17_large_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_j17_large_with_vnodes > /tmp/split_dtest_tests_j17_large_with_vnodes.txt\ncat /tmp/split_dtest_tests_j17_large_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\n" - run: name: Run dtests (j17_large_with_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_large_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_large_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_large_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -7086,7 +6543,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -7094,11 +6551,11 @@ jobs: - run: name: Determine Tests to Run (j11_dtests_offheap) 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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_dtests_offheap)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_dtests_offheap_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_dtests_offheap_raw /tmp/all_dtest_tests_j11_dtests_offheap\nelse\n grep -e '' /tmp/all_dtest_tests_j11_dtests_offheap_raw > /tmp/all_dtest_tests_j11_dtests_offheap || { 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_j11_dtests_offheap > /tmp/split_dtest_tests_j11_dtests_offheap.txt\ncat /tmp/split_dtest_tests_j11_dtests_offheap.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\ncat /tmp/split_dtest_tests_j11_dtests_offheap_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_dtests_offheap)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_dtests_offheap_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_dtests_offheap_raw /tmp/all_dtest_tests_j11_dtests_offheap\nelse\n grep -e '' /tmp/all_dtest_tests_j11_dtests_offheap_raw > /tmp/all_dtest_tests_j11_dtests_offheap || { 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_j11_dtests_offheap > /tmp/split_dtest_tests_j11_dtests_offheap.txt\ncat /tmp/split_dtest_tests_j11_dtests_offheap.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\ncat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\n" - run: name: Run dtests (j11_dtests_offheap) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\"\ncat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_dtests_offheap.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\"\ncat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_dtests_offheap_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_dtests_offheap.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -7926,114 +7383,6 @@ jobs: - REPEATED_ANT_TEST_COUNT: 500 - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - j17_cqlsh_dtests_py3_vnode: - docker: - - image: apache/cassandra-testing-ubuntu2004-java11:latest - resource_class: large - working_directory: ~/ - shell: /bin/bash -eo pipefail -l - parallelism: 50 - steps: - - attach_workspace: - at: /home/cassandra - - run: - name: Clone Cassandra dtest Repository (via git) - command: | - git clone --single-branch --branch $DTEST_BRANCH --depth 1 $DTEST_REPO ~/cassandra-dtest - - run: - name: Configure virtualenv and python Dependencies - command: | - # note, this should be super quick as all dependencies should be pre-installed in the docker image - # if additional dependencies were added to requirmeents.txt and the docker image hasn't been updated - # we'd have to install it here at runtime -- which will make things slow, so do yourself a favor and - # rebuild the docker image! (it automatically pulls the latest requirements.txt on build) - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt - pip3 uninstall -y cqlsh - pip3 freeze - - run: - name: Determine Tests to Run (j17_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-resource-intensive-tests --pytest-options '-k cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_with_vnodes_raw /tmp/all_dtest_tests_j17_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_with_vnodes_raw > /tmp/all_dtest_tests_j17_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_j17_with_vnodes > /tmp/split_dtest_tests_j17_with_vnodes.txt\ncat /tmp/split_dtest_tests_j17_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_with_vnodes_final.txt\n" - - run: - name: Run dtests (j17_with_vnodes) - no_output_timeout: 15m - command: | - echo "cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt" - cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt - - source ~/env3.7/bin/activate - export PATH=$JAVA_HOME/bin:$PATH - if [ -n 'CQLSH_PYTHON=/usr/bin/python3.7' ]; then - export CQLSH_PYTHON=/usr/bin/python3.7 - fi - - java -version - cd ~/cassandra-dtest - mkdir -p /tmp/dtest - - echo "env: $(env)" - echo "** done env" - mkdir -p /tmp/results/dtests - # we need the "set -o pipefail" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee - export SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_with_vnodes_final.txt` - if [ ! -z "$SPLIT_TESTS" ]; then - set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --skip-resource-intensive-tests --log-level="DEBUG" --junit-xml=/tmp/results/dtests/pytest_result_j17_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt - else - echo "Tune your parallelism, there are more containers than test classes. Nothing to do in this container" - (exit 1) - fi - - store_test_results: - path: /tmp/results - - store_artifacts: - path: /tmp/dtest - destination: dtest_j17_with_vnodes - - store_artifacts: - path: ~/cassandra-dtest/logs - destination: dtest_j17_with_vnodes_logs - environment: - - ANT_HOME: /usr/share/ant - - LANG: en_US.UTF-8 - - KEEP_TEST_DIR: true - - DEFAULT_DIR: /home/cassandra/cassandra-dtest - - PYTHONIOENCODING: utf-8 - - PYTHONUNBUFFERED: true - - CASS_DRIVER_NO_EXTENSIONS: true - - CASS_DRIVER_NO_CYTHON: true - - CASSANDRA_SKIP_SYNC: true - - DTEST_REPO: https://github.com/apache/cassandra-dtest.git - - DTEST_BRANCH: trunk - - CCM_MAX_HEAP_SIZE: 1024M - - CCM_HEAP_NEWSIZE: 256M - - REPEATED_TESTS_STOP_ON_FAILURE: false - - REPEATED_UTESTS: null - - REPEATED_UTESTS_COUNT: 500 - - REPEATED_UTESTS_FQLTOOL: null - - REPEATED_UTESTS_FQLTOOL_COUNT: 500 - - REPEATED_UTESTS_LONG: null - - REPEATED_UTESTS_LONG_COUNT: 100 - - REPEATED_UTESTS_STRESS: null - - REPEATED_UTESTS_STRESS_COUNT: 500 - - REPEATED_SIMULATOR_DTESTS: null - - REPEATED_SIMULATOR_DTESTS_COUNT: 500 - - REPEATED_JVM_DTESTS: null - - REPEATED_JVM_DTESTS_COUNT: 500 - - REPEATED_JVM_UPGRADE_DTESTS: null - - REPEATED_JVM_UPGRADE_DTESTS_COUNT: 500 - - REPEATED_DTESTS: null - - REPEATED_DTESTS_COUNT: 500 - - REPEATED_LARGE_DTESTS: null - - REPEATED_LARGE_DTESTS_COUNT: 100 - - REPEATED_UPGRADE_DTESTS: null - - REPEATED_UPGRADE_DTESTS_COUNT: 25 - - REPEATED_ANT_TEST_TARGET: testsome - - REPEATED_ANT_TEST_CLASS: null - - REPEATED_ANT_TEST_METHODS: null - - REPEATED_ANT_TEST_VNODES: false - - REPEATED_ANT_TEST_COUNT: 500 - - JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 - - JDK_HOME: /usr/lib/jvm/java-17-openjdk-amd64 j17_cqlsh_dtests_py311_vnode: docker: - image: apache/cassandra-testing-ubuntu2004-java11:latest @@ -8703,7 +8052,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -8711,11 +8060,11 @@ jobs: - run: name: Determine Tests to Run (j11_without_vnodes) no_output_timeout: 5m - command: "# reminder: this code (along with all the steps) is independently executed on every circle container\n# so the goal here is to get the circleci script to return the tests *this* container will run\n# which we do via the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_without_vnodes_raw /tmp/all_dtest_tests_j11_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_without_vnodes_raw > /tmp/all_dtest_tests_j11_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_j11_without_vnodes > /tmp/split_dtest_tests_j11_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_without_vnodes_raw /tmp/all_dtest_tests_j11_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_without_vnodes_raw > /tmp/all_dtest_tests_j11_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_j11_without_vnodes > /tmp/split_dtest_tests_j11_without_vnodes.txt\ncat /tmp/split_dtest_tests_j11_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_without_vnodes_final.txt\n" - run: name: Run dtests (j11_without_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_without_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_without_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -9219,7 +8568,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -9227,11 +8576,11 @@ jobs: - run: name: Determine Tests to Run (j17_large_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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_large_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_large_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_large_without_vnodes_raw /tmp/all_dtest_tests_j17_large_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_large_without_vnodes_raw > /tmp/all_dtest_tests_j17_large_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_j17_large_without_vnodes > /tmp/split_dtest_tests_j17_large_without_vnodes.txt\ncat /tmp/split_dtest_tests_j17_large_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_large_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_large_without_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --only-resource-intensive-tests --force-resource-intensive-tests --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_large_without_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_large_without_vnodes_raw /tmp/all_dtest_tests_j17_large_without_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j17_large_without_vnodes_raw > /tmp/all_dtest_tests_j17_large_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_j17_large_without_vnodes > /tmp/split_dtest_tests_j17_large_without_vnodes.txt\ncat /tmp/split_dtest_tests_j17_large_without_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\ncat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\n" - run: name: Run dtests (j17_large_without_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_large_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_large_without_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --only-resource-intensive-tests --force-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_large_without_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -9553,7 +8902,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -9561,11 +8910,11 @@ jobs: - run: name: Determine Tests to Run (j11_with_vnodes) no_output_timeout: 5m - command: "# reminder: this code (along with all the steps) is independently executed on every circle container\n# so the goal here is to get the circleci script to return the tests *this* container will run\n# which we do via the `circleci` cli tool.\n\ncd cassandra-dtest\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_with_vnodes_raw /tmp/all_dtest_tests_j11_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_with_vnodes_raw > /tmp/all_dtest_tests_j11_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_j11_with_vnodes > /tmp/split_dtest_tests_j11_with_vnodes.txt\ncat /tmp/split_dtest_tests_j11_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j11_with_vnodes)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j11_with_vnodes_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j11_with_vnodes_raw /tmp/all_dtest_tests_j11_with_vnodes\nelse\n grep -e '' /tmp/all_dtest_tests_j11_with_vnodes_raw > /tmp/all_dtest_tests_j11_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_j11_with_vnodes > /tmp/split_dtest_tests_j11_with_vnodes.txt\ncat /tmp/split_dtest_tests_j11_with_vnodes.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j11_with_vnodes_final.txt\ncat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\n" - run: name: Run dtests (j11_with_vnodes) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\"\ncat /tmp/split_dtest_tests_j11_with_vnodes_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j11_with_vnodes_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j11_with_vnodes.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -9749,7 +9098,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -9757,11 +9106,11 @@ jobs: - run: name: Determine Tests to Run (j17_dtests_offheap) 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 ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_dtests_offheap)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_dtests_offheap_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_dtests_offheap_raw /tmp/all_dtest_tests_j17_dtests_offheap\nelse\n grep -e '' /tmp/all_dtest_tests_j17_dtests_offheap_raw > /tmp/all_dtest_tests_j17_dtests_offheap || { 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_j17_dtests_offheap > /tmp/split_dtest_tests_j17_dtests_offheap.txt\ncat /tmp/split_dtest_tests_j17_dtests_offheap.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\ncat /tmp/split_dtest_tests_j17_dtests_offheap_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 ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\n\nif [ -n '' ]; then\n export \nfi\n\necho \"***Collected DTests (j17_dtests_offheap)***\"\nset -eo pipefail && ./run_dtests.py --use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k not cql' --dtest-print-tests-only --dtest-print-tests-output=/tmp/all_dtest_tests_j17_dtests_offheap_raw --cassandra-dir=../cassandra\nif [ -z '' ]; then\n mv /tmp/all_dtest_tests_j17_dtests_offheap_raw /tmp/all_dtest_tests_j17_dtests_offheap\nelse\n grep -e '' /tmp/all_dtest_tests_j17_dtests_offheap_raw > /tmp/all_dtest_tests_j17_dtests_offheap || { 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_j17_dtests_offheap > /tmp/split_dtest_tests_j17_dtests_offheap.txt\ncat /tmp/split_dtest_tests_j17_dtests_offheap.txt | tr '\\n' ' ' > /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\ncat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\n" - run: name: Run dtests (j17_dtests_offheap) no_output_timeout: 15m - command: "echo \"cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\"\ncat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\n\nsource ~/env3.7/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_dtests_offheap.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" + command: "echo \"cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\"\ncat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt\n\nsource ~/env3.8/bin/activate\nexport PATH=$JAVA_HOME/bin:$PATH\nif [ -n '' ]; then\n export \nfi\n\njava -version\ncd ~/cassandra-dtest\nmkdir -p /tmp/dtest\n\necho \"env: $(env)\"\necho \"** done env\"\nmkdir -p /tmp/results/dtests\n# we need the \"set -o pipefail\" here so that the exit code that circleci will actually use is from pytest and not the exit code from tee\nexport SPLIT_TESTS=`cat /tmp/split_dtest_tests_j17_dtests_offheap_final.txt`\nif [ ! -z \"$SPLIT_TESTS\" ]; then\n set -o pipefail && cd ~/cassandra-dtest && pytest --use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests --log-level=\"DEBUG\" --junit-xml=/tmp/results/dtests/pytest_result_j17_dtests_offheap.xml -s --cassandra-dir=/home/cassandra/cassandra --keep-test-dir $SPLIT_TESTS 2>&1 | tee /tmp/dtest/stdout.txt\nelse\n echo \"Tune your parallelism, there are more containers than test classes. Nothing to do in this container\"\n (exit 1)\nfi\n" - store_test_results: path: /tmp/results - store_artifacts: @@ -9833,7 +9182,7 @@ jobs: # 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 ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH pip3 install --exists-action w --upgrade -r ~/cassandra-dtest/requirements.txt pip3 uninstall -y cqlsh @@ -9862,7 +9211,7 @@ jobs: else echo "Running ${REPEATED_LARGE_DTESTS} $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version @@ -10368,14 +9717,6 @@ workflows: - j11_build - start_j11_cqlsh_tests: type: approval - - j11_cqlsh_dtests_py3: - requires: - - start_j11_cqlsh_tests - - j11_build - - j11_cqlsh_dtests_py3_vnode: - requires: - - start_j11_cqlsh_tests - - j11_build - j11_cqlsh_dtests_py38: requires: - start_j11_cqlsh_tests @@ -10394,10 +9735,6 @@ workflows: - j11_build - start_j11_cqlsh_tests_offheap: type: approval - - j11_cqlsh_dtests_py3_offheap: - requires: - - start_j11_cqlsh_tests_offheap - - j11_build - j11_cqlsh_dtests_py38_offheap: requires: - start_j11_cqlsh_tests_offheap @@ -10408,14 +9745,6 @@ workflows: - j11_build - start_j17_cqlsh_tests: type: approval - - j17_cqlsh_dtests_py3: - requires: - - start_j17_cqlsh_tests - - j11_build - - j17_cqlsh_dtests_py3_vnode: - requires: - - start_j17_cqlsh_tests - - j11_build - j17_cqlsh_dtests_py38: requires: - start_j17_cqlsh_tests @@ -10434,10 +9763,6 @@ workflows: - j11_build - start_j17_cqlsh_tests_offheap: type: approval - - j17_cqlsh_dtests_py3_offheap: - requires: - - start_j17_cqlsh_tests_offheap - - j11_build - j17_cqlsh_dtests_py38_offheap: requires: - start_j17_cqlsh_tests_offheap @@ -10620,12 +9945,6 @@ workflows: requires: - start_j17_dtests_large - j11_build - - j11_cqlsh_dtests_py3: - requires: - - j11_build - - j11_cqlsh_dtests_py3_vnode: - requires: - - j11_build - j11_cqlsh_dtests_py38: requires: - j11_build @@ -10640,10 +9959,6 @@ workflows: - j11_build - start_j11_cqlsh_dtests_offheap: type: approval - - j11_cqlsh_dtests_py3_offheap: - requires: - - start_j11_cqlsh_dtests_offheap - - j11_build - j11_cqlsh_dtests_py38_offheap: requires: - start_j11_cqlsh_dtests_offheap @@ -10652,12 +9967,6 @@ workflows: requires: - start_j11_cqlsh_dtests_offheap - j11_build - - j17_cqlsh_dtests_py3: - requires: - - j11_build - - j17_cqlsh_dtests_py3_vnode: - requires: - - j11_build - j17_cqlsh_dtests_py38: requires: - j11_build @@ -10672,10 +9981,6 @@ workflows: - j11_build - start_j17_cqlsh-dtests-offheap: type: approval - - j17_cqlsh_dtests_py3_offheap: - requires: - - start_j17_cqlsh-dtests-offheap - - j11_build - j17_cqlsh_dtests_py38_offheap: requires: - start_j17_cqlsh-dtests-offheap @@ -10759,14 +10064,6 @@ workflows: - j17_build - start_j17_cqlsh_tests: type: approval - - j17_cqlsh_dtests_py3: - requires: - - start_j17_cqlsh_tests - - j17_build - - j17_cqlsh_dtests_py3_vnode: - requires: - - start_j17_cqlsh_tests - - j17_build - j17_cqlsh_dtests_py38: requires: - start_j17_cqlsh_tests @@ -10785,10 +10082,6 @@ workflows: - j17_build - start_j17_cqlsh-dtests-offheap: type: approval - - j17_cqlsh_dtests_py3_offheap: - requires: - - start_j17_cqlsh-dtests-offheap - - j17_build - j17_cqlsh_dtests_py38_offheap: requires: - start_j17_cqlsh-dtests-offheap @@ -10892,12 +10185,6 @@ workflows: requires: - start_j17_dtests_large - j17_build - - j17_cqlsh_dtests_py3: - requires: - - j17_build - - j17_cqlsh_dtests_py3_vnode: - requires: - - j17_build - j17_cqlsh_dtests_py38: requires: - j17_build @@ -10912,10 +10199,6 @@ workflows: - j17_build - start_j17_cqlsh-dtests-offheap: type: approval - - j17_cqlsh_dtests_py3_offheap: - requires: - - start_j17_cqlsh-dtests-offheap - - j17_build - j17_cqlsh_dtests_py38_offheap: requires: - start_j17_cqlsh-dtests-offheap diff --git a/.circleci/config_template.yml b/.circleci/config_template.yml index 448154367e..ed6d2476c9 100644 --- a/.circleci/config_template.yml +++ b/.circleci/config_template.yml @@ -684,14 +684,6 @@ j11_separate_jobs: &j11_separate_jobs # Java 11 cqlsh dtests - start_j11_cqlsh_tests: type: approval - - j11_cqlsh_dtests_py3: - requires: - - start_j11_cqlsh_tests - - j11_build - - j11_cqlsh_dtests_py3_vnode: - requires: - - start_j11_cqlsh_tests - - j11_build - j11_cqlsh_dtests_py38: requires: - start_j11_cqlsh_tests @@ -711,10 +703,6 @@ j11_separate_jobs: &j11_separate_jobs # Java 11 cqlsh offheap dtests offheap - start_j11_cqlsh_tests_offheap: type: approval - - j11_cqlsh_dtests_py3_offheap: - requires: - - start_j11_cqlsh_tests_offheap - - j11_build - j11_cqlsh_dtests_py38_offheap: requires: - start_j11_cqlsh_tests_offheap @@ -726,14 +714,6 @@ j11_separate_jobs: &j11_separate_jobs # Java 17 cqlsh dtests - start_j17_cqlsh_tests: type: approval - - j17_cqlsh_dtests_py3: - requires: - - start_j17_cqlsh_tests - - j11_build - - j17_cqlsh_dtests_py3_vnode: - requires: - - start_j17_cqlsh_tests - - j11_build - j17_cqlsh_dtests_py38: requires: - start_j17_cqlsh_tests @@ -753,10 +733,6 @@ j11_separate_jobs: &j11_separate_jobs # Java 17 cqlsh dtests off-heap - start_j17_cqlsh_tests_offheap: type: approval - - j17_cqlsh_dtests_py3_offheap: - requires: - - start_j17_cqlsh_tests_offheap - - j11_build - j17_cqlsh_dtests_py38_offheap: requires: - start_j17_cqlsh_tests_offheap @@ -1117,12 +1093,6 @@ j11_pre-commit_jobs: &j11_pre-commit_jobs - start_j17_dtests_large - j11_build # Java 11 cqlsh dtests - - j11_cqlsh_dtests_py3: - requires: - - j11_build - - j11_cqlsh_dtests_py3_vnode: - requires: - - j11_build - j11_cqlsh_dtests_py38: requires: - j11_build @@ -1138,10 +1108,6 @@ j11_pre-commit_jobs: &j11_pre-commit_jobs # Java 11 cqlsh dtests offheap - start_j11_cqlsh_dtests_offheap: type: approval - - j11_cqlsh_dtests_py3_offheap: - requires: - - start_j11_cqlsh_dtests_offheap - - j11_build - j11_cqlsh_dtests_py38_offheap: requires: - start_j11_cqlsh_dtests_offheap @@ -1151,12 +1117,6 @@ j11_pre-commit_jobs: &j11_pre-commit_jobs - start_j11_cqlsh_dtests_offheap - j11_build # Java 17 cqlsh dtests - - j17_cqlsh_dtests_py3: - requires: - - j11_build - - j17_cqlsh_dtests_py3_vnode: - requires: - - j11_build - j17_cqlsh_dtests_py38: requires: - j11_build @@ -1172,10 +1132,6 @@ j11_pre-commit_jobs: &j11_pre-commit_jobs # Java 17 cqlsh dtests off-heap - start_j17_cqlsh-dtests-offheap: type: approval - - j17_cqlsh_dtests_py3_offheap: - requires: - - start_j17_cqlsh-dtests-offheap - - j11_build - j17_cqlsh_dtests_py38_offheap: requires: - start_j17_cqlsh-dtests-offheap @@ -1303,14 +1259,6 @@ j17_separate_jobs: &j17_separate_jobs - j17_build - start_j17_cqlsh_tests: type: approval - - j17_cqlsh_dtests_py3: - requires: - - start_j17_cqlsh_tests - - j17_build - - j17_cqlsh_dtests_py3_vnode: - requires: - - start_j17_cqlsh_tests - - j17_build - j17_cqlsh_dtests_py38: requires: - start_j17_cqlsh_tests @@ -1329,10 +1277,6 @@ j17_separate_jobs: &j17_separate_jobs - j17_build - start_j17_cqlsh-dtests-offheap: type: approval - - j17_cqlsh_dtests_py3_offheap: - requires: - - start_j17_cqlsh-dtests-offheap - - j17_build - j17_cqlsh_dtests_py38_offheap: requires: - start_j17_cqlsh-dtests-offheap @@ -1538,12 +1482,6 @@ j17_pre-commit_jobs: &j17_pre-commit_jobs requires: - start_j17_dtests_large - j17_build - - j17_cqlsh_dtests_py3: - requires: - - j17_build - - j17_cqlsh_dtests_py3_vnode: - requires: - - j17_build - j17_cqlsh_dtests_py38: requires: - j17_build @@ -1558,10 +1496,6 @@ j17_pre-commit_jobs: &j17_pre-commit_jobs - j17_build - start_j17_cqlsh-dtests-offheap: type: approval - - j17_cqlsh_dtests_py3_offheap: - requires: - - start_j17_cqlsh-dtests-offheap - - j17_build - j17_cqlsh_dtests_py38_offheap: requires: - start_j17_cqlsh-dtests-offheap @@ -2086,36 +2020,6 @@ jobs: file_tag: j11_upgradetests_without_vnodes pytest_extra_args: '--execute-upgrade-tests-only --upgrade-target-version-only --upgrade-version-selection all' - j11_cqlsh_dtests_py3_vnode: - <<: *j11_par_executor - steps: - - attach_workspace: - at: /home/cassandra - - clone_dtest - - create_venv - - create_dtest_containers: - file_tag: j11_with_vnodes - run_dtests_extra_args: "--use-vnodes --skip-resource-intensive-tests --pytest-options '-k cql'" - - run_dtests: - file_tag: j11_with_vnodes - pytest_extra_args: '--use-vnodes --num-tokens=16 --skip-resource-intensive-tests' - extra_env_args: 'CQLSH_PYTHON=/usr/bin/python3.7' - - j11_cqlsh_dtests_py3_offheap: - <<: *j11_par_executor - steps: - - attach_workspace: - at: /home/cassandra - - clone_dtest - - create_venv - - create_dtest_containers: - file_tag: j11_dtests_offheap - run_dtests_extra_args: "--use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k cql'" - - run_dtests: - file_tag: j11_dtests_offheap - pytest_extra_args: '--use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests' - extra_env_args: 'CQLSH_PYTHON=/usr/bin/python3.7' - j11_cqlsh_dtests_py38_vnode: <<: *j11_par_executor steps: @@ -2188,21 +2092,6 @@ jobs: extra_env_args: 'CQLSH_PYTHON=/usr/bin/python3.11' python_version: '3.11' - j11_cqlsh_dtests_py3: - <<: *j11_par_executor - steps: - - attach_workspace: - at: /home/cassandra - - clone_dtest - - create_venv - - create_dtest_containers: - file_tag: j11_without_vnodes - run_dtests_extra_args: "--skip-resource-intensive-tests --pytest-options '-k cql'" - - run_dtests: - file_tag: j11_without_vnodes - pytest_extra_args: '--skip-resource-intensive-tests' - extra_env_args: 'CQLSH_PYTHON=/usr/bin/python3.7' - j11_cqlsh_dtests_py38: <<: *j11_par_executor steps: @@ -2239,36 +2128,6 @@ jobs: extra_env_args: 'CQLSH_PYTHON=/usr/bin/python3.11' python_version: '3.11' - j17_cqlsh_dtests_py3_vnode: - <<: *j17_par_executor - steps: - - attach_workspace: - at: /home/cassandra - - clone_dtest - - create_venv - - create_dtest_containers: - file_tag: j17_with_vnodes - run_dtests_extra_args: "--use-vnodes --skip-resource-intensive-tests --pytest-options '-k cql'" - - run_dtests: - file_tag: j17_with_vnodes - pytest_extra_args: '--use-vnodes --num-tokens=16 --skip-resource-intensive-tests' - extra_env_args: 'CQLSH_PYTHON=/usr/bin/python3.7' - - j17_cqlsh_dtests_py3_offheap: - <<: *j17_par_executor - steps: - - attach_workspace: - at: /home/cassandra - - clone_dtest - - create_venv - - create_dtest_containers: - file_tag: j17_dtests_offheap - run_dtests_extra_args: "--use-vnodes --use-off-heap-memtables --skip-resource-intensive-tests --pytest-options '-k cql'" - - run_dtests: - file_tag: j17_dtests_offheap - pytest_extra_args: '--use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests' - extra_env_args: 'CQLSH_PYTHON=/usr/bin/python3.7' - j17_cqlsh_dtests_py38_vnode: <<: *j17_par_executor steps: @@ -2341,21 +2200,6 @@ jobs: extra_env_args: 'CQLSH_PYTHON=/usr/bin/python3.11' python_version: '3.11' - j17_cqlsh_dtests_py3: - <<: *j17_par_executor - steps: - - attach_workspace: - at: /home/cassandra - - clone_dtest - - create_venv - - create_dtest_containers: - file_tag: j17_without_vnodes - run_dtests_extra_args: "--skip-resource-intensive-tests --pytest-options '-k cql'" - - run_dtests: - file_tag: j17_without_vnodes - pytest_extra_args: '--skip-resource-intensive-tests' - extra_env_args: 'CQLSH_PYTHON=/usr/bin/python3.7' - j17_cqlsh_dtests_py38: <<: *j17_par_executor steps: @@ -3117,8 +2961,8 @@ commands: parameters: python_version: type: enum - default: "3.7" - enum: ["3.7", "3.8", "3.11"] + default: "3.8" + enum: ["3.8", "3.11"] steps: - run: name: Configure virtualenv and python Dependencies @@ -3148,8 +2992,8 @@ commands: default: '' python_version: type: enum - default: "3.7" - enum: ["3.7", "3.8", "3.11"] + default: "3.8" + enum: ["3.8", "3.11"] steps: - run: name: Determine Tests to Run (<>) @@ -3190,8 +3034,8 @@ commands: default: '' python_version: type: enum - default: "3.7" - enum: ["3.7", "3.8", "3.11"] + default: "3.8" + enum: ["3.8", "3.11"] steps: - run: name: Run dtests (<>) @@ -3662,7 +3506,7 @@ commands: else echo "Running <> $count times" - source ~/env3.7/bin/activate + source ~/env3.8/bin/activate export PATH=$JAVA_HOME/bin:$PATH java -version diff --git a/.circleci/config_template.yml.PAID.patch b/.circleci/config_template.yml.PAID.patch index 53d3644476..a07902b350 100644 --- a/.circleci/config_template.yml.PAID.patch +++ b/.circleci/config_template.yml.PAID.patch @@ -1,5 +1,5 @@ ---- config_template.yml 2023-11-10 15:39:02.663105186 +0000 -+++ config_template.yml.PAID 2023-11-10 15:39:24.839456426 +0000 +--- config_template.yml 2024-01-05 00:32:24.148600479 +0000 ++++ config_template.yml.PAID 2024-01-05 00:32:40.861079981 +0000 @@ -157,20 +157,20 @@ j11_par_executor: &j11_par_executor executor: @@ -142,7 +142,7 @@ j11_separate_jobs: &j11_separate_jobs jobs: -@@ -1986,7 +2009,7 @@ +@@ -1920,7 +1943,7 @@ target: testclasslist-system-keyspace-directory j11_dtests_vnode: @@ -151,7 +151,7 @@ steps: - attach_workspace: at: /home/cassandra -@@ -2000,7 +2023,7 @@ +@@ -1934,7 +1957,7 @@ pytest_extra_args: '--use-vnodes --num-tokens=16 --skip-resource-intensive-tests' j11_dtests_offheap: @@ -160,7 +160,7 @@ steps: - attach_workspace: at: /home/cassandra -@@ -2014,7 +2037,7 @@ +@@ -1948,7 +1971,7 @@ pytest_extra_args: '--use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests' j17_dtests_vnode: @@ -169,7 +169,7 @@ steps: - attach_workspace: at: /home/cassandra -@@ -2029,7 +2052,7 @@ +@@ -1963,7 +1986,7 @@ pytest_extra_args: '--use-vnodes --num-tokens=16 --skip-resource-intensive-tests' j17_dtests_offheap: @@ -178,7 +178,7 @@ steps: - attach_workspace: at: /home/cassandra -@@ -2044,7 +2067,7 @@ +@@ -1978,7 +2001,7 @@ pytest_extra_args: '--use-vnodes --num-tokens=16 --use-off-heap-memtables --skip-resource-intensive-tests' j11_dtests: @@ -187,7 +187,7 @@ steps: - attach_workspace: at: /home/cassandra -@@ -2058,7 +2081,7 @@ +@@ -1992,7 +2015,7 @@ pytest_extra_args: '--skip-resource-intensive-tests' j17_dtests: @@ -196,7 +196,7 @@ steps: - attach_workspace: at: /home/cassandra -@@ -2073,7 +2096,7 @@ +@@ -2007,7 +2030,7 @@ pytest_extra_args: '--skip-resource-intensive-tests' j11_upgrade_dtests: @@ -205,34 +205,16 @@ steps: - attach_workspace: at: /home/cassandra -@@ -2087,7 +2110,7 @@ +@@ -2021,7 +2044,7 @@ pytest_extra_args: '--execute-upgrade-tests-only --upgrade-target-version-only --upgrade-version-selection all' - j11_cqlsh_dtests_py3_vnode: -- <<: *j11_par_executor -+ <<: *j11_large_par_executor - steps: - - attach_workspace: - at: /home/cassandra -@@ -2102,7 +2125,7 @@ - extra_env_args: 'CQLSH_PYTHON=/usr/bin/python3.7' - - j11_cqlsh_dtests_py3_offheap: -- <<: *j11_par_executor -+ <<: *j11_large_par_executor - steps: - - attach_workspace: - at: /home/cassandra -@@ -2117,7 +2140,7 @@ - extra_env_args: 'CQLSH_PYTHON=/usr/bin/python3.7' - j11_cqlsh_dtests_py38_vnode: - <<: *j11_par_executor + <<: *j11_large_par_executor steps: - attach_workspace: at: /home/cassandra -@@ -2135,7 +2158,7 @@ +@@ -2039,7 +2062,7 @@ python_version: '3.8' j11_cqlsh_dtests_py311_vnode: @@ -241,7 +223,7 @@ steps: - attach_workspace: at: /home/cassandra -@@ -2153,7 +2176,7 @@ +@@ -2057,7 +2080,7 @@ python_version: '3.11' j11_cqlsh_dtests_py38_offheap: @@ -250,7 +232,7 @@ steps: - attach_workspace: at: /home/cassandra -@@ -2171,7 +2194,7 @@ +@@ -2075,7 +2098,7 @@ python_version: '3.8' j11_cqlsh_dtests_py311_offheap: @@ -259,25 +241,16 @@ steps: - attach_workspace: at: /home/cassandra -@@ -2189,7 +2212,7 @@ +@@ -2093,7 +2116,7 @@ python_version: '3.11' - j11_cqlsh_dtests_py3: -- <<: *j11_par_executor -+ <<: *j11_large_par_executor - steps: - - attach_workspace: - at: /home/cassandra -@@ -2204,7 +2227,7 @@ - extra_env_args: 'CQLSH_PYTHON=/usr/bin/python3.7' - j11_cqlsh_dtests_py38: - <<: *j11_par_executor + <<: *j11_large_par_executor steps: - attach_workspace: at: /home/cassandra -@@ -2222,7 +2245,7 @@ +@@ -2111,7 +2134,7 @@ python_version: '3.8' j11_cqlsh_dtests_py311: @@ -286,34 +259,16 @@ steps: - attach_workspace: at: /home/cassandra -@@ -2240,7 +2263,7 @@ +@@ -2129,7 +2152,7 @@ python_version: '3.11' - j17_cqlsh_dtests_py3_vnode: -- <<: *j17_par_executor -+ <<: *j17_large_par_executor - steps: - - attach_workspace: - at: /home/cassandra -@@ -2255,7 +2278,7 @@ - extra_env_args: 'CQLSH_PYTHON=/usr/bin/python3.7' - - j17_cqlsh_dtests_py3_offheap: -- <<: *j17_par_executor -+ <<: *j17_large_par_executor - steps: - - attach_workspace: - at: /home/cassandra -@@ -2270,7 +2293,7 @@ - extra_env_args: 'CQLSH_PYTHON=/usr/bin/python3.7' - j17_cqlsh_dtests_py38_vnode: - <<: *j17_par_executor + <<: *j17_large_par_executor steps: - attach_workspace: at: /home/cassandra -@@ -2288,7 +2311,7 @@ +@@ -2147,7 +2170,7 @@ python_version: '3.8' j17_cqlsh_dtests_py311_vnode: @@ -322,7 +277,7 @@ steps: - attach_workspace: at: /home/cassandra -@@ -2306,7 +2329,7 @@ +@@ -2165,7 +2188,7 @@ python_version: '3.11' j17_cqlsh_dtests_py38_offheap: @@ -331,7 +286,7 @@ steps: - attach_workspace: at: /home/cassandra -@@ -2324,7 +2347,7 @@ +@@ -2183,7 +2206,7 @@ python_version: '3.8' j17_cqlsh_dtests_py311_offheap: @@ -340,25 +295,16 @@ steps: - attach_workspace: at: /home/cassandra -@@ -2342,7 +2365,7 @@ +@@ -2201,7 +2224,7 @@ python_version: '3.11' - j17_cqlsh_dtests_py3: -- <<: *j17_par_executor -+ <<: *j17_large_par_executor - steps: - - attach_workspace: - at: /home/cassandra -@@ -2357,7 +2380,7 @@ - extra_env_args: 'CQLSH_PYTHON=/usr/bin/python3.7' - j17_cqlsh_dtests_py38: - <<: *j17_par_executor + <<: *j17_large_par_executor steps: - attach_workspace: at: /home/cassandra -@@ -2375,7 +2398,7 @@ +@@ -2219,7 +2242,7 @@ python_version: '3.8' j17_cqlsh_dtests_py311: @@ -367,7 +313,7 @@ steps: - attach_workspace: at: /home/cassandra -@@ -2393,7 +2416,7 @@ +@@ -2237,7 +2260,7 @@ python_version: '3.11' j11_dtests_large_vnode: @@ -376,7 +322,7 @@ steps: - attach_workspace: at: /home/cassandra -@@ -2407,7 +2430,7 @@ +@@ -2251,7 +2274,7 @@ pytest_extra_args: '--use-vnodes --num-tokens=16 --only-resource-intensive-tests --force-resource-intensive-tests' j11_dtests_large: @@ -385,7 +331,7 @@ steps: - attach_workspace: at: /home/cassandra -@@ -2421,7 +2444,7 @@ +@@ -2265,7 +2288,7 @@ pytest_extra_args: '--only-resource-intensive-tests --force-resource-intensive-tests' j17_dtests_large_vnode: @@ -394,7 +340,7 @@ steps: - attach_workspace: at: /home/cassandra -@@ -2435,7 +2458,7 @@ +@@ -2279,7 +2302,7 @@ pytest_extra_args: '--use-vnodes --num-tokens=16 --only-resource-intensive-tests --force-resource-intensive-tests' j17_dtests_large: diff --git a/CHANGES.txt b/CHANGES.txt index 78bbc0d884..336edfb09f 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 5.0-beta2 + * Upgrade Python driver to 3.29.0 (CASSANDRA-19245) * Creating a SASI index after creating an SAI index does not break secondary index queries (CASSANDRA-18939) * Optionally fail when a non-partition-restricted query is issued against an index (CASSANDRA-18796) * Add a startup check to fail startup when using invalid configuration with certain Kernel and FS type (CASSANDRA-19196) diff --git a/NEWS.txt b/NEWS.txt index 6477d788df..19583d7553 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -197,8 +197,8 @@ Upgrading --------- - Default disk_access_mode value changed from "auto" to "mmap_index_only". Override this setting with "disk_access_mode: auto" on cassandra.yaml to keep the previous default. See CASSANDRA-19021 for details. - - The minimumn Python version to run cqlsh has been bumped from 3.6 to 3.7. Python 3.6 is past its end-of-life, and - 3.7 is the minimum version supported by the Python driver. + - The Python version required to run cqlsh has been bumped from 3.6+ to 3.8-3.11. Python 3.6 and 3.7 are past their + end-of-life, and 3.8 is now the minimum version supported by the Python driver. - Java 8 has been removed. Lowest supported version is Java 11. - Ephemeral marker files for snapshots done by repairs are not created anymore, there is a dedicated flag in snapshot manifest instead. On upgrade of a node to this version, on node's start, in case there diff --git a/bin/cqlsh b/bin/cqlsh index 4b52772c39..8d4e482058 100755 --- a/bin/cqlsh +++ b/bin/cqlsh @@ -62,8 +62,8 @@ is_supported_version() { version=$1 major_version="${version%.*}" minor_version="${version#*.}" - # python 3.7+ is supported - if [ "$major_version" = 3 ] && [ "$minor_version" -ge 7 ]; then + # python 3.8-3.11 is supported + if [ "$major_version" = 3 ] && [ "$minor_version" -ge 8 ] && [ "$minor_version" -le 11 ]; then echo "supported" else echo "unsupported" @@ -80,7 +80,7 @@ run_if_supported_version() { exec "$interpreter" "$($interpreter -c "import os; print(os.path.dirname(os.path.realpath('$0')))")/cqlsh.py" "$@" exit else - echo "Warning: unsupported version of Python:" $version >&2 + echo "Warning: unsupported version of Python, required 3.8-3.11 but found" $version >&2 fi fi } diff --git a/bin/cqlsh.py b/bin/cqlsh.py index f41500bcb6..4b026f3352 100755 --- a/bin/cqlsh.py +++ b/bin/cqlsh.py @@ -21,8 +21,8 @@ import platform import sys from glob import glob -if sys.version_info < (3, 7): - sys.exit("\ncqlsh requires Python 3.7+\n") +if sys.version_info < (3, 8) or sys.version_info >= (3, 12): + sys.exit("\ncqlsh requires Python 3.8-3.11\n") # see CASSANDRA-10428 if platform.python_implementation().startswith('Jython'): @@ -56,7 +56,7 @@ if cql_zip: sys.path.insert(0, os.path.join(cql_zip, 'cassandra-driver-' + ver)) # the driver needs dependencies -third_parties = ('six-', 'pure_sasl-', 'wcwidth-') +third_parties = ('pure_sasl-', 'wcwidth-') for lib in third_parties: lib_zip = find_zip(lib) diff --git a/doc/modules/cassandra/pages/installing/installing.adoc b/doc/modules/cassandra/pages/installing/installing.adoc index 62d8a2c0d5..e5043914e0 100644 --- a/doc/modules/cassandra/pages/installing/installing.adoc +++ b/doc/modules/cassandra/pages/installing/installing.adoc @@ -23,7 +23,7 @@ Deploying on older Linux versions is not recommended unless you have previous ex include::cassandra:partial$java_version.adoc[] -* To use the CQL shell `cqlsh`, install the latest version of Python 3.7+. +* To use the CQL shell `cqlsh`, install the latest version of Python 3.8-3.11. To verify that you have the correct version of Python installed, type `python --version`. diff --git a/lib/cassandra-driver-internal-only-3.28.0.zip b/lib/cassandra-driver-internal-only-3.28.0.zip deleted file mode 100644 index 07e037944723c19c5528888fedd3ba648570609f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356837 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 z 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%0A>~o>t1b4n=g7y1gmR#HZ4NF4Y~aPnQBT zcu9_Y`SHynG_{W|Njh=M@wn-4bWPnw_Xd=@vqtF|-c)V{oOM9mRC2xE(Pf3+?OYyk zjAym4LtH2Z-pT)LM66F};b>xMBAKFCn_%G}d6r9&&i6ox@)!-Yk6~$+OF=pH-X;9{ zt&dUXo{_G*NuZ|9gz}4ojgS`^CgT>-Sd~D!-=kUvE3TqcfXX;fnh zBX@~vdEB(&v;wABv095@#d?f=_aelX#t|+9S?eoPX9#W|BclJrU{hoxO-2OZbqEgi$2rv8D$?u-v$n`;QIRrdWB0I9Q}G?6VB?^clN&FsjsK0ge(U-_!jM6lvLY!>nhrdG1k-Y`YC7R4{Jj zPgIpVS0cpimtusW;AG4Qte64>$2lU2OrOfdr2UOCIFeQ1OatLXy8I@Jp0Cs>8O!O6 z>%?sG@_A00XFISHUFUeO>02N;;Amjw1QX<&d%3r|GHqRbm^;hP&JK8W!`Nm4Hy(q%9em`QP^Q-<$+3168MQGV8^zymm`+ViQm2s)EDZr^a(ixBTB-bYizzu-9PY%$q~J;)%mB z1b6h?LJxAUx{5u1bm{b=U(?&83BF2#FR8ANF9*-wzVu!{k5@40yE_%5PrJX!esVjw z{hkovIeGog;k|o##(St#FIHZU>_x}5dhewZHLR`^+%9aNeB?$?@SO6(33{{caqdcdn+&Pj-E%RX z_sOdy{}vp7Xx)YQ{DyEl@TUDFqTT1lIn zmz}1*9wcd*ir@O-;^g+YvAf>y;l;=HVfZ`T-QSmki{Z%frLX#Mac{9i)5+ms;GYxky2CJA z{po1G6!vwecW0Jf8M4%^yoBfy&&-zbqEYu;2b*}pje7ty9X$nCW_>J9`wEod0%lW~ zb&zL|Aj{gT>#fTst?G0`g(`P+iAbaqD{w~sT7emPm}V0j>A>^Wkl==nCd4}QWdBOF zkIzcl_A14EgdtT=^er)fVu#J*B)Ue_XFgq}b$kQ#EZ4A6)H|>l_q1go+IriO%_iNW z4CX6A)p#0s{}+-iK<{?%E@1FZ?QZU_I@%BI`2Sw4d6}V&Jm?D(WT;bD{;Bo5o7p>6 zQW$h!l^Utbxu1cXBhgErX$TH#H*`?O7ewy3*>u{`{oacA9uqP|y*$L<4rMRDj653m zx1**^8z`(&^cg|5l%t=?J`cj1?z{-?y!c(bd3X;cT{!-GNqMdzE9{ZN!2#~sR?J-ecj-5vq?KC(({M~oxl(t7u0u=h-w#~ z?(z^+0EZQkK04h82n}52{qHT$Ylnb44X2kV@ExXh5)pqdjQaLPL3d56L3=Kd3f`o;_FT+I*B#5~hD|=aR$h zJek3j4C*QJ=5GK(tL-0BJr9kI(H_9Wwv z3iq=pBz+aVaVsCWRS=jwZb{vYuFPcH0#+{4d) zY=RRM005r-|J#LV2Pb|mKmYLc|2PdelJ;My735AuZY){al4nYt&MQ?-NEJuZ zc#?8DbLdBlBqh$Wh**6#)~;`VUa!W2K_nE4P|fXM%~ZIp`LJUBiWdPA%}o$$*&F+N zBquAAxtdozFOn25UbW`6<|i`mmKX~0CWYe1NO}uP`rUNiiT7M4$+5`&P?C=K2pbU& z1bVnGzPSxHL@+fuv5~|mCy}5izC&of1CTxsmRzO26FL^HaNp%Fl$`F$*=w)^K_&?D zL8C6XTmiNK-&uEPRXC1HVh*xdbo)Pkzy7PdVTc>ihsUn~VAB2kSg_#-n|EA<=>huT z05ZtPfApF7z}f5AM>Tz!awz~^})jE-rHq3)I;EqmjBm*LZNl0~9kcOxhb9)3w< zzpiOkK}jiq{Zs%EQ;?H_{$gUyz>jVG*t1;$$LEXR!zWI1ez)@FKMy`EIf;`gFl5Ke zi#{xv!@Jx|`2J-0;>XK$g#=_5VSF{lCHN7~iXkh)p0gCI5E>#m1tzk({)gQI>K!vV zq@>dqabtuH!fPygACOc`fR8)_Nbl7Au1c>ZLn`&FS|f{58?Qvt%^6#4NC=~pj&;ct z0AjX|@_B^^784*;c^`;|waF{c-_~)Hu|WY{J=}n3T-2APn_LC74?Ex z&^~6nX-tYz;4c-PgE6vf!{80_A-jHZk>B@FdIHG=KoK%Z*%hz0=NjfD~XBzV2fyEEO`Kg^&ZGDuq!)&$h9~HnPtiq!M09e z_dyerAEy;F`Z(;u3{jR^?mREfJhi(@82dSaM_GrR(L$y7&UQ4PqA^iV3Q7y-S%zIW z{ok_MzfMMOV~Hgu5gAO`gjvPU&tiipx@OndsMt!G;RZcGC{382q0{vMxrCQ6ZX-60jjK3vU)(MU(E+2WwtbT3=A?f`5hIi}2+ zfMAU|qG)@b-1Ha{=>TiM#r-0O%Qe8Jc>i+B;=(%-6%=Dc)d2sT3a0C{+W#X1%v2K7 z?v~!71bg|W^M^XJ@&}yahxsZWuJq-~f&=I1+J1`U<-mp=cfPo~KYTGnJ?i2AqR?*x zOMZ&}=fH-Yw{TeaGxj*v@`-=Im-R?qI%GFFHn@b~HN;R{K*zVo}n-;Fa= zeDO)ou%KNb5Kl+&rX_>`jBR$=xI=(gRWa-ZO2F&)0lF}lI{+ePByF>D{BB_c>B1N) zLRvGrHC(bpRWp?bC3B90C%Zeu288QovF&$J-WDt3o*C;h*_vzsbZ4KQwqD=;J38l$hgZ*c$Y&^ zc%7L|YS|K$(GUnY6|8sG=lN2e@CB)uXS@iIr)T9=*tFt@Azs|9AA^Wp-I}4ALkZDz8u)L3NJ(XGHt8+G{~5gqwFg=K z(|QE-?jHW`cRofJ0+&58eHmH#ZLTk_2R2?;AgM+6D{kJo>qI`ml^jYlh$x2%fW5Mn z!lg|r?Gbj)Ww`W{X|k>m*`uBkc-$p=Ixv(IQWl>;VlxPOuVuXAwDuv?l%QSN4P!6m z#i1zj3nb!{h@bLP2}ki_5v-w!-id8{#%Tm4ZA@SQn=Cu|Je(eXV)f}ndT({`>7+pR zw;M&O1lYN0qx7Psx>Dl_5(k)$51-lk4VfQ=9zxfO(d=FqYGz{!pmZ7LZ@-w(&7!s0 z-uNY)R8P zVzgYWJijn>1+MH1_Q|4lXl7CSJ4BQWhj-tA(qwEVbcX|DzJuSPJqqolq5Pk$a~d_S zec~I25-@T!F7p>wje$s^9^6+^V+Aw}enoa+&l82_?NW+c^jLnwzyVJeYkIcCX6%8~ zGpdkTOiMM7Axt<0o#OQ49GzDRoJsPH?sMpDFm1hMj-8YDBjF8*?Ph0UbDL`&nX_#Z zL=GvI3K|)U?ePUf-l+EJOpj|1;7K2gjPJyqn={b;2rX8ICZ|$K=}Jw@L-QJ2l`j>A z#BKLjUVKJg9+d+`;IHaaQyX?DW)eIi3-#xx6&SQ>u2P47}hZK90#vVJVPX#e%5D2sT_FLLm_meA!)v;4m8i7%R$v}l*3#p za5Xcb!6CO7H1unj3fP%zw3r1|X**si!Bpy%t?ek+gJr)_7Xd|$)?{?6eKL~o%G zV4c_biM%M!>FxT+s{LE`;pM<<3>9s>Ms}WZH&+eWq#g(l$Y}D0uCU3a5hUk%Sbqd7 zFJ{;bFL_iTm{2ZZQrXtjRu~C8;QY9V7r6E?x_S9lpd~-{h?YUh75}J^oYOzP+dMT% z$1N1B#W%$YZd149eSpT<5^?#H{Bmn*abSuZ4(UhRGJY`LAtAv>o!ROtuMW`WEdmis z24ufUCTB#Gj?uM9)9P>|AYiUIr1nKMFL-sLaS!5ST-;t0yuEMLBK_f z&c4`Fo*Qvlv;*+aYgqxc&K7Xq4aj)7_}i!^wxb+qz^I)sd~3%BFzHOpt(UP{3=cmd zcoU)Ln?3!x`g;(hXYj|9^T%ILf^1PgIlg&@Ta~l4My-6XjhcTfIdTC-x~qB6v?HbB z$C0u3pTV8y#LAWX(|)8A=rP4*1TKph^)F@w9S*7b7XwAKcL+!7Q%E(jynI@-+&g#g z3pnL#Ra%_<z!KqhZE4>O8SNn7PG2+gP1^xMI_NNX|c10XDAGV|iDtGy%x@Z8x0*b5(kQ@rjfV^nYRT$OKQ>PsX2A zw6w9z@>Nbsyh2foPV{GF#R5m38E_Zok}9P#pqM-yia3ey={!y zv(e3cHa9!rgV|7D?r{|6*Fe|>0QA1Wahal@HhI0k2@EH% z>z~F()mLW9AcRiuFuEejjMmf_g6yf10u--}n(%BB0dO|cJkjSjZw%7Ex$@T8rOwyw zh0ndvIO`rXV=jw_tCpFk2Lr~ez3`MT(!x%|G=~QS|M)72u3LBvf$xS*`IbIRHe;lY zj#rB8a}WWm2rKz5B-czwM^C!&@$4R%^q;VhY(M7XM3@VF*cRhh$eW^Wq!2o#f>!ER zS)^VhQ!aC9X=??U;OMN5k&8LzNHhj$hc z#}`9?`EcCjzpm3HY|lUUGXGvr`i9b1>PA5L;B!}nHodE0_F{`h?GEiO zQF>wZ=}20@NQ$%yd7*Ag;D!Da5l{M&KG-fE#3UCop~V2Zh%IS9vBeAJEZBekx!{L`-R{LfXvf<-5N z;=`brdjjlIOSw|Jc)mYV^o(C#YGw6JoARuPkYOYN+qP}nwr$(CZQIr=yJ{8h+B^4T=Op_i|9qGk$xKG(L(fS1Xsx%8 zg0)vDmcj7$JjoOm;}q&ophRTGfSY6*xiIFo$-*hqUYl=V@KdZ2=X+kJf^M&z?JlKl zH$Y<}x@WH(XdP9q`(T?$!zvZXmC8gdc7UffVHT1Js`Ph;vNnlQwhAJf^r4$+v#Unc zH*3TdC^_d(k1Fcn?SVpFn$>I-1a=(a*Of+`cDS;$4>Q?vdgv*pIHWn_`9^3Z4>)33 zY5P@e4)}Et+3C_NoC7vcR<440~yDOm4R!5(Im z!*3btp@E z;uF7@+8hogvgpwG(wc_!peG{jcoDw&M}^oD@m0}^rIgd~5*rIZnubF#-WW{kf#(q* ze{2d!8i`$N5uYn2AuVuobi$&mUc-sAh#Xc!t#w#M8&?B@YzrATZUo8pkccu(@((QG^sMSE*7cJOWpk8P*X?bH)d=WfnJ_Lu{>Il7=w8elELP?2lt2TA4 zSaF)7W`X*Pa^t`*=38=iq=Cyk*-WoI1!<@51V^meV@O#zJ7>Ie0hzb-3rQKiwB*O% zCM=A3+r~QXVO>$!KubpC!uZ4>`dNQaOXzAf!>*voRF-v9u-%;yJVr-25!e<;faP2s zC(-@!53T&ksj&(YeqKjVnZ4X~5fcK90TSGdww-L>=07 zp*M#twd+!qe-3q$OV5>E8hA6+%k?wV{`6>k!rF4y=5!z2MxWIp>MCe<+{AVyp<{ij zi|h9X>D_tc7biN!;uJISbYnq)XNpfD#4;B2ml1cHx<30&Wokv!@9wb}V0LWab#Ary zIuZm(x(~webl0NyK>0!P51LFT2s8}`l_V155rmsSN9ls|yjpCMEpC9xy<{BDqcnNN zD*!w!vF@A@e6m3!@aEKKZEkhyN{|`Uuj-uXslG!aa)3KkLT1nds@8b@50>{u+H6UH z)Cw`il7}${%5%z1l?V_2I%$_V9w8&|bM;4yuC4Z-c_v~HX& zi`kP?meMOM_1oGUe*^+gLY&)*{pif3@-m{MG~?#iU`dEy6W3%L(hD09%xbBY%oZfT zXng&ICI)-U9IDkP!#X?+jmm7S?2^vX#0aS&G++&^- zlAXay8P#D^ykZ%=MEO3pbnK9yjJE8)mDD^lYHeY~bb1y7>RXgzron5DRpJ9*%I|ia zEpOrHe%SM?Cp7v;i~@1I4UPo{sCWD>rP?8!QTDF)M1oOeLWEGHV8Ax zyo_Gto&a}r8hYz=#rj!xXT zwFsy>fHMwH{Z7*Sz0*%+{<+pd6WZwKS(u4cfjnEkkQ*$^NFe>y-fLuIPdw>+qBaw@ z9o=Mh9%w>2AJR5Oda3{=M@OQFI?9RUl`}h5_Z))^Jnh$)z6}3hZ4>UOuATi3ES-w_w(!&_ShpDmV^C1aTWTC(7X zbWw8@+Nd)62BnbRxZ!AhIGVJnxj{sWB;OR>3;$WZ0YwLL7L6@iP5odK0sJNW0yXxj zWmZ>DV1eCmc>_|Cy`CbHBnGw-Iu2US_oOE8^$55nwCW! z*YvQACu0_tv7L7%*tvC`@V6S*cg=H)H&Y)}zR zzxScSiPa>qN0Y5|-{()vHHnIcYo}>ZOU@AKM>6`kY|=|}k~yVj*35)!*Yjw;$kzqR zC>p?rjeHP-s|qnssIPCnvMdy7yf)WfhK%OHUI@UZ$m8KB>)53l%qkoNN;R+Q-E#J4 z^fxfiu{ov0uQ~d{iu*>DkaVtB;y615>my){F>E0kK3)|M??%4XAKC?!@AB$E8tH* z8Q+s1+Ccm3}KyELX%+7m_IE?;ZDlekRn zcMUCWbG(Vw&$Z@heXbk6fYa-SI;TZ^F`y9YH;nos(r4qgBH04mS#>bL$P|+?8`WMt z)-N5Ob=%xptGY`Je>Nxe#}$&W^8X@Ifvma`zB^8%A81u2mSyl!20R&H5L|EjxTvUN>6HN)ZKE2zJ{?!Wz@ zcUj~**RGH54%?kqbhodf^z!WRa}0=IJUtBJ`EAr}U;U{`&4Bh)wJ*@c)dBFoT)4Yp zYptxqD%3Z^Vy-z%LY33YL(}KodfN_O%vAWU%S%}dOdN8;>i%8SSp%6|Ib;yoO$3QsjyBSZbPYaS*|{$x!#8glA8)+v@gO9rKgic= zX>M*7^#gPFr0U_moQ)UeDeFX*1CgP94nPCeH+IvB*M9H|{UDN1SDX@O8oR`MSadgW zUbD~o#J~6VrV4>BzviFBJrAvf)jk^Xtyt zvwLg3SOb2WZl1fv_i!G5ARKAr>p7+}p1;Z24BvIH-*fv6-}T3f_O;WY&Yu0pS_RH< zk&S9K-~zJy`%1W z27Wx;<#`kA;AAHh%54p3&LynbG=4#iNZ)kfK)dQ~#j~+h2i6IgxL@DnaHR&V6PGM>+!=sIw&QrDv zfO0Y#$viWuqv#_DhA<*lA>85LQ~)x7F;1h0bb?m2%4HaM<-~GQk+ZPHCffkG%=7}I zVVMYfpb`Bc4n-+wIT*hdDSd!qnf6ASD3{>U*u(@RnkxHJa1iVxo6QxGvu^Fc{}{P1 zT0G`Pk8g_cEvud(tPyD=jvzrQxo%7d>FolyQWix{4wpqP=Ll0Iq~Y=T4+VC+FmaF; zPbJTU>kgNqz<5>!N8s#K)ILp4PT80wq{6i9#5Z#?Xv7G*cY2L#f{xw2RA|Mr5zDy| zHB{dK4J<=?+>H1SWsgD-K2~RU4Y17xXbbzekfVnzYav9-f;9LYJImS9o|$6q0g`Br z%mw~n1If^B;FwLDh47cZ`!YX@*RS8qQZ)zAf0y#qf}vOh82B%6!dx*>Gk-u0`<|36 zCT0ZzcD7#h91_SDt&MR}Q!a!YEm(#&mYpMWNQy<7POc@H`Ck+@Pe3e6iVQ^H3LSJNMTwVrXL?`a?J<0%_(2 zZ|;!oiy##~yeGOznBTyBblgxz?bqEC-shMvrnKb9gBUV6Qhdio1ej5zWE0fc`Y)JK ze8&tU3O=vc3boOL5o9FqV2gRJFG%p#BS5YOC2KG|Nj33dQ*@Cb8)j*Djn`BVYD_q*T5>gkaIy!xSZ1s0`5=CEz_aHP=IOCgr5uYQ*xkt)VA>req*t`bH!a zkQ13O|ii7Q?34}691DJrtLyUr=2#>au8__BCusO$H(hmu`2pn z6ej_mERP3`*R{nDO(&&aR@qS)0LZXYgZDn?4C!O`RNFF)pctpKqR+cnNsez;3&ybG zi_jE4aKt^NJC_$nb)aKlZDRTU5MK>8DyF?N?HY*Mtp5737xs#fe8z{_F ztE;4}n{v%sVgk@dE*J6S7XWUQM#ipsxTQ%kWhqdY6QVF^PtL#L`^hDv)a)QHOty!N?V5M8ywBKGlNL2)Emw2^F zHAEKR)!yv^Y}3~?#W=4Pm)}&u`(dHT1R>EM#a?au5K@#82vQ+1TB!HoMRpe52JA6+ zpjj=fR7@|u1014d?3x~G{OUn$vZEG>lHnIJ5yZzx%-?*ankoy6hDN#_a{$vd!^nz27d-)q=uT~5@}Xv$D|qq5)OQ(<;RDP>O6+pv@> zo}JVw}9>SH@K@ePN)(rDy5^Dj8(UP_CZ)=HQ&@ILkRf4yS`lGFZph@Yjs^z2kEGcvLmXAuSowHiHK?#>$?2Xz1NVV->&6vZ z!M(=Hkpf=zwLAile9ym zeoFpvih7MnT-jOdM7G-0>n(38YYL=kq+8=zRnL!YaM#}$ab)>_c>ms!MgNE{{> zU&D_QB4{~0(af`piLSy5{&v(Dh=e{{3T{+H^2?$rH+5tKwRP1xHJ_p?SqJ2Z9Qzck zeI_=6v?G@u^2z~62zP30sXuY4pG-bU zFKH<2P-7g6P^^PUn8%X-7X+~TTdJr`P1~@@v5laJa59RZHh{^0O{t8BUhJUjvHao} z+564Z(KPYvr<;bR(kxL-YX>Ua9a22DKzc?Y)l?Sulpe3@={-?<{4uD>3^K+4e&et$ z9F74OLm8|fa_e9GY9VOPh3$mf2@g2B%K(0isVg|?!`@}dV`0(IBb6S%l)mQYfOIaG zZ5{G*CQW4okB6NNef46pEp%3P=GAM!)-$`^8&XIHf~e+%@;aDCQ1rYdC>?BSt~7A) z#VKR=tzbY5h7u`xTwE5^%jy*9`CGcF^j1&%kM1kqc*p`oyaEH?P1+yxnJemw@!l`f zCn3G)_CpdRHL-vS=VBW`W}uFpB4DWJ`ui`&Mi&jSS3o=E!FR!LQk*scmKSa*_U$Xb zxn`mzMMWH$`J0m~cG%5Z!nIS#isRd)m5uRe`9q?l3Kc2=CXp`6{&l74lCuMC?2iIA zCdVLM55@eC<i~n8Hlwj4QMg&RY&Drr|WgY-xOyzt@=dG7hIUg2fRRZGF+)z`gnEZA~M zd$WqFPdD<&aL*dRC#zGzl&60647iwgK~oiGDAiRP*k7*7p*yzocvCVdz zmAV-ZB!}g-L5*EpKQJkt?f;Kma>%<<&1ml$ksb&DKnLVMwo4j1Ia}J9(>ZvUsH#8$ z0AFcn{criPsmhA>TMP((^Yt8q($uC6H;KHZ11%P)Dj{`MWssQXNIj%&=K5Gm`uolX z)G(Dxk4GDCyXSX(-0+50Hs>mx#2JuCn329Pm1)Hm7_f(Gk}G)57A|pc7U2mRgr1yY zM(<&B)WwI#7rZ*40|yvbI{rpsb1Vwca4m!uJWQdF3KdX*Z%DL(O9ZmE)TAvU7N|EL z)^Q{>z4K<=swA3{s&|`rVxK1%L3tL>GQt6By$_mstOwx5coUOJOGZp+( z9ec_E+N3NnNia(`0PK=!W{l1}C0F#*pR7D2)v8Sz%`Ulg=slk>lShbs zWzm{26KoHx9qn`%=804q5uW$d!aT?d8Nmehid90Ab<*jv6o^t!A#%=~28*jx;bLBC z>CDolR-!>4$>xa*m4BLDy>asU9Z|EJp< zI(ym~+dG*$nHn0q*gO3n_7K(lm+}7skeJ2(wm)urasNfl2^Kz?TO}P;GuY&zk#(|N zuy⋙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

P|dK|_joYO{f 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 diff --git a/lib/cassandra-driver-internal-only-3.29.0.zip b/lib/cassandra-driver-internal-only-3.29.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..48009c7daa5e45aac332f0f9bfa5145457acd880 GIT binary patch literal 396496 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

b522A8R??p{t#`0%l%fh9a3k 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