From f0655159e692816a2703e2a0ff6c9458f90cab75 Mon Sep 17 00:00:00 2001 From: Mick Semb Wever Date: Mon, 13 Nov 2023 18:34:44 +0100 Subject: [PATCH] Add to jenkins pipeline: test-oa, test-system-keyspace-directory, test-trie, jvm-dtest-novnode, jvm-dtest-upgrade-novnode simulator-dtest, dtest-large-novnode, dtest-upgrade-large, dtest-upgrade-novnode, dtest-upgrade-novnode-large. patch by Mick Semb Wever; reviewed by Berenguer Blasi, Brandon Williams for CASSANDRA-17989, CASSANDRA-18008, CASSANDRA-17145, CASSANDRA-18003 --- .build/docker/run-tests.sh | 18 ++- .build/run-tests.sh | 11 +- .jenkins/Jenkinsfile | 238 ++++++++++++++++++++++++++++++++++++- build.xml | 2 +- 4 files changed, 261 insertions(+), 8 deletions(-) diff --git a/.build/docker/run-tests.sh b/.build/docker/run-tests.sh index ede5569834..76e0c7dfb0 100755 --- a/.build/docker/run-tests.sh +++ b/.build/docker/run-tests.sh @@ -134,7 +134,7 @@ case ${target} in # check that ${cassandra_dtest_dir} is valid [ -f "${cassandra_dtest_dir}/dtest.py" ] || { echo >&2 "${cassandra_dtest_dir}/dtest.py not found. please specify 'cassandra_dtest_dir' to point to the local cassandra-dtest source"; exit 1; } ;; - "test"| "test-cdc" | "test-compression" | "test-oa" | "test-system-keyspace-directory" | "test-tries" | "jvm-dtest" | "jvm-dtest-upgrade") + "test"| "test-cdc" | "test-compression" | "test-oa" | "test-system-keyspace-directory" | "test-tries" | "jvm-dtest" | "jvm-dtest-upgrade" | "jvm-dtest-novnode" | "jvm-dtest-upgrade-novnode" | "simulator-dtest") [[ ${mem} -gt $((5 * 1024 * 1024 * 1024 * ${jenkins_executors})) ]] || { echo >&2 "tests require minimum docker memory 6g (per jenkins executor (${jenkins_executors})), found ${mem}"; exit 1; } max_docker_runs_by_cores=$( echo "sqrt( ${cores} / ${jenkins_executors} )" | bc ) max_docker_runs_by_mem=$(( ${mem} / ( 5 * 1024 * 1024 * 1024 * ${jenkins_executors} ) )) @@ -164,9 +164,23 @@ mkdir -p ${build_dir}/test/logs || true mkdir -p ${build_dir}/test/output || true chmod -R ag+rwx ${build_dir} +# define testtag.extra so tests can be aggregated together. (jdk is already appended in build.xml) +case ${target} in + "cqlsh-test" | "dtest" | "dtest-novnode" | "dtest-offheap" | "dtest-large" | "dtest-large-novnode" | "dtest-upgrade" | "dtest-upgrade-large" | "dtest-upgrade-novnode" | "dtest-upgrade-novnode-large" ) + ANT_OPTS="-Dtesttag.extra=_$(arch)_python${python_version/./-}" + ;; + "jvm-dtest-novnode" | "jvm-dtest-upgrade-novnode" ) + ANT_OPTS="-Dtesttag.extra=_$(arch)_novnode" + ;; + *) + ANT_OPTS="-Dtesttag.extra=_$(arch)" + ;; +esac + # cython can be used for cqlsh-test if [ "$cython" == "yes" ]; then [ "${target}" == "cqlsh-test" ] || { echo "cython is only supported for cqlsh-test"; exit 1; } + ANT_OPTS="${ANT_OPTS}_cython" else cython="no" fi @@ -178,7 +192,7 @@ TEST_SCRIPT=${test_script} JAVA_VERSION=${java_version} PYTHON_VERSION=${python_version} cython=${cython} -ANT_OPTS="-Dtesttag.extra=.arch=$(arch).python${python_version}" +ANT_OPTS="${ANT_OPTS}" EOF split_str="0_0" diff --git a/.build/run-tests.sh b/.build/run-tests.sh index 9eaf8b0833..c0a1e1eb2e 100755 --- a/.build/run-tests.sh +++ b/.build/run-tests.sh @@ -150,7 +150,7 @@ _main() { # check split_chunk is compatible with target (if not a regexp) if [[ "${_split_chunk}" =~ ^\d+/\d+$ ]] && [[ "1/1" != "${split_chunk}" ]] ; then case ${target} in - "stress-test" | "fqltool-test" | "microbench" | "cqlsh-test") + "stress-test" | "fqltool-test" | "microbench" | "cqlsh-test" | "simulator-dtest") echo "Target ${target} does not suport splits." exit 1 ;; @@ -226,7 +226,11 @@ _main() { "long-test") _run_testlist "long" "testclasslist" "${split_chunk}" "$(_timeout_for 'test.long.timeout')" ;; - "jvm-dtest") + "simulator-dtest") + ant test-simulator-dtest ${ANT_TEST_OPTS} || echo "failed ${target}" + ;; + "jvm-dtest" | "jvm-dtest-novnode") + [ "jvm-dtest-novnode" == "${target}" ] || ANT_TEST_OPTS="${ANT_TEST_OPTS} -Dcassandra.dtest.num_tokens=16" testlist=$( _list_tests "distributed" | grep -v "upgrade" | _split_tests "${split_chunk}") if [[ -z "$testlist" ]]; then [[ "${split_chunk}" =~ ^[0-9]+/[0-9]+$ ]] || { echo "No tests match ${split_chunk}"; exit 1; } @@ -236,8 +240,9 @@ _main() { fi ant testclasslist -Dtest.classlistprefix=distributed -Dtest.timeout=$(_timeout_for "test.distributed.timeout") -Dtest.classlistfile=<(echo "${testlist}") ${ANT_TEST_OPTS} || echo "failed ${target} ${split_chunk}" ;; - "jvm-dtest-upgrade") + "jvm-dtest-upgrade" | "jvm-dtest-upgrade-novnode") _build_all_dtest_jars + [ "jvm-dtest-upgrade-novnode" == "${target}" ] || ANT_TEST_OPTS="${ANT_TEST_OPTS} -Dcassandra.dtest.num_tokens=16" testlist=$( _list_tests "distributed" | grep "upgrade" | _split_tests "${split_chunk}") if [[ -z "${testlist}" ]]; then [[ "${split_chunk}" =~ ^[0-9]+/[0-9]+$ ]] || { echo "No tests match ${split_chunk}"; exit 1; } diff --git a/.jenkins/Jenkinsfile b/.jenkins/Jenkinsfile index fe32d0f4cd..831e2ade65 100644 --- a/.jenkins/Jenkinsfile +++ b/.jenkins/Jenkinsfile @@ -231,6 +231,84 @@ pipeline { } } } + stage('oa') { + steps { + script { + def attempt = 1 + while (attempt <=2) { + if (attempt > 1) { + sleep(60 * attempt) + } + attempt = attempt + 1 + oa = build job: "${env.JOB_NAME}-test-oa", propagate: false + if (oa.result != 'FAILURE') break + } + if (oa.result != 'SUCCESS') unstable('oa failures') + if (oa.result == 'FAILURE') currentBuild.result='FAILURE' + } + } + post { + always { + warnError('missing test xml files') { + script { + copyTestResults('test-oa', oa.getNumber()) + } + } + } + } + } + stage('system-keyspace-directory') { + steps { + script { + def attempt = 1 + while (attempt <=2) { + if (attempt > 1) { + sleep(60 * attempt) + } + attempt = attempt + 1 + system_keyspace_directory = build job: "${env.JOB_NAME}-test-system-keyspace-directory", propagate: false + if (system_keyspace_directory.result != 'FAILURE') break + } + if (system_keyspace_directory.result != 'SUCCESS') unstable('system-keyspace-directory failures') + if (system_keyspace_directory.result == 'FAILURE') currentBuild.result='FAILURE' + } + } + post { + always { + warnError('missing test xml files') { + script { + copyTestResults('test-system-keyspace-directory', system_keyspace_directory.getNumber()) + } + } + } + } + } + stage('trie') { + steps { + script { + def attempt = 1 + while (attempt <=2) { + if (attempt > 1) { + sleep(60 * attempt) + } + attempt = attempt + 1 + trie = build job: "${env.JOB_NAME}-test-trie", propagate: false + if (trie.result != 'FAILURE') break + } + if (trie.result != 'SUCCESS') unstable('trie failures') + if (trie.result == 'FAILURE') currentBuild.result='FAILURE' + } + } + post { + always { + warnError('missing test xml files') { + script { + copyTestResults('test-trie', trie.getNumber()) + } + } + } + } + } stage('cqlsh') { steps { script { @@ -257,6 +335,32 @@ pipeline { } } } + stage('simulator-dtest') { + steps { + script { + def attempt = 1 + while (attempt <=2) { + if (attempt > 1) { + sleep(60 * attempt) + } + attempt = attempt + 1 + simulator_dtest = build job: "${env.JOB_NAME}-simulator-dtest", propagate: false + if (simulator_dtest.result != 'FAILURE') break + } + if (simulator_dtest.result != 'SUCCESS') unstable('simulator-dtest failures') + if (simulator_dtest.result == 'FAILURE') currentBuild.result='FAILURE' + } + } + post { + always { + warnError('missing test xml files') { + script { + copyTestResults('simulator-dtest', simulator_dtest.getNumber()) + } + } + } + } + } } } stage('Distributed Test') { @@ -287,6 +391,32 @@ pipeline { } } } + stage('jvm-dtest-novnode') { + steps { + script { + def attempt = 1 + while (attempt <=2) { + if (attempt > 1) { + sleep(60 * attempt) + } + attempt = attempt + 1 + jvm_dtest_novnode = build job: "${env.JOB_NAME}-jvm-dtest-novnode", propagate: false + if (jvm_dtest_novnode.result != 'FAILURE') break + } + if (jvm_dtest_novnode.result != 'SUCCESS') unstable('jvm-dtest-novnode failures') + if (jvm_dtest_novnode.result == 'FAILURE') currentBuild.result='FAILURE' + } + } + post { + always { + warnError('missing test xml files') { + script { + copyTestResults('jvm-dtest-novnode', jvm_dtest_novnode.getNumber()) + } + } + } + } + } stage('jvm-dtest-upgrade') { steps { script { @@ -311,8 +441,34 @@ pipeline { } } } - } - } + } + } + stage('jvm-dtest-upgrade-novnode') { + steps { + script { + def attempt = 1 + while (attempt <=2) { + if (attempt > 1) { + sleep(60 * attempt) + } + attempt = attempt + 1 + jvm_dtest_upgrade_novnode = build job: "${env.JOB_NAME}-jvm-dtest-upgrade-novnode", propagate: false + if (jvm_dtest_upgrade_novnode.result != 'FAILURE') break + } + if (jvm_dtest_upgrade_novnode.result != 'SUCCESS') unstable('jvm-dtest-upgrade-novnode failures') + if (jvm_dtest_upgrade_novnode.result == 'FAILURE') currentBuild.result='FAILURE' + } + } + post { + always { + warnError('missing test xml files') { + script { + copyTestResults('jvm-dtest-upgrade-novnode', jvm_dtest_upgrade_novnode.getNumber()) + } + } + } + } + } stage('dtest') { steps { script { @@ -469,6 +625,84 @@ pipeline { } } } + stage('dtest-upgrade-large') { + steps { + script { + def attempt = 1 + while (attempt <=2) { + if (attempt > 1) { + sleep(60 * attempt) + } + attempt = attempt + 1 + dtest_upgrade = build job: "${env.JOB_NAME}-dtest-upgrade-large", propagate: false + if (dtest_upgrade.result != 'FAILURE') break + } + if (dtest_upgrade.result != 'SUCCESS') unstable('dtest failures') + if (dtest_upgrade.result == 'FAILURE') currentBuild.result='FAILURE' + } + } + post { + always { + warnError('missing test xml files') { + script { + copyTestResults('dtest-upgrade', dtest_upgrade.getNumber()) + } + } + } + } + } + stage('dtest-upgrade-novnode') { + steps { + script { + def attempt = 1 + while (attempt <=2) { + if (attempt > 1) { + sleep(60 * attempt) + } + attempt = attempt + 1 + dtest_upgrade_novnode = build job: "${env.JOB_NAME}-dtest-upgrade-novnode", propagate: false + if (dtest_upgrade_novnode.result != 'FAILURE') break + } + if (dtest_upgrade_novnode.result != 'SUCCESS') unstable('dtest-upgrade-novnode failures') + if (dtest_upgrade_novnode.result == 'FAILURE') currentBuild.result='FAILURE' + } + } + post { + always { + warnError('missing test xml files') { + script { + copyTestResults('dtest-upgrade-novnode', dtest_upgrade_novnode.getNumber()) + } + } + } + } + } + stage('dtest-upgrade-novnode-large') { + steps { + script { + def attempt = 1 + while (attempt <=2) { + if (attempt > 1) { + sleep(60 * attempt) + } + attempt = attempt + 1 + dtest_upgrade_novnode_large = build job: "${env.JOB_NAME}-dtest-upgrade-novnode-large", propagate: false + if (dtest_upgrade_novnode_large.result != 'FAILURE') break + } + if (dtest_upgrade_novnode_large.result != 'SUCCESS') unstable('dtest-upgrade-novnode-large failures') + if (dtest_upgrade_novnode_large.result == 'FAILURE') currentBuild.result='FAILURE' + } + } + post { + always { + warnError('missing test xml files') { + script { + copyTestResults('dtest-upgrade-novnode-large', dtest_upgrade_novnode_large.getNumber()) + } + } + } + } + } } } stage('Summary') { diff --git a/build.xml b/build.xml index 856892020d..341a4b95c4 100644 --- a/build.xml +++ b/build.xml @@ -1152,7 +1152,7 @@ - +