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
This commit is contained in:
Mick Semb Wever 2023-11-13 18:34:44 +01:00
parent fb806d51e3
commit f0655159e6
No known key found for this signature in database
GPG Key ID: E91335D77E3E87CB
4 changed files with 261 additions and 8 deletions

View File

@ -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"

View File

@ -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; }

238
.jenkins/Jenkinsfile vendored
View File

@ -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') {

View File

@ -1152,7 +1152,7 @@
<jvmarg value="-Dcassandra.test.sstableformatdevelopment=true"/>
<!-- The first time SecureRandom initializes can be slow if it blocks on /dev/random -->
<jvmarg value="-Djava.security.egd=file:/dev/urandom" />
<jvmarg value="-Dcassandra.testtag=@{testtag}.jdk${ant.java.version}${testtag.extra}"/>
<jvmarg value="-Dcassandra.testtag=@{testtag}_jdk${ant.java.version}${testtag.extra}"/>
<jvmarg value="-Dcassandra.keepBriefBrief=${cassandra.keepBriefBrief}" />
<jvmarg value="-Dcassandra.strict.runtime.checks=true" />
<jvmarg value="-Dcassandra.reads.thresholds.coordinator.defensive_checks_enabled=true" /> <!-- enable defensive checks -->