From 5defccb2978aa5607a857c79aebeebaa47fe29cb Mon Sep 17 00:00:00 2001 From: "robert.tomczyk" Date: Wed, 9 Nov 2022 11:13:49 +0000 Subject: [PATCH] Geode: Add control for executing test using docker Change-Id: Iee635e08a461b9b53c0d1c20016a6c6a733c483e --- jjb/geode/apache-geode-test-coordinator.yaml | 8 ++++++++ .../apache-geode-test/execute_stressnew.sh | 15 ++++++++++++++- jjb/geode/apache-geode-test/execute_tests.sh | 18 ++++++++++++++++-- .../global-template-apache-geode-test.yaml | 4 ++++ 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/jjb/geode/apache-geode-test-coordinator.yaml b/jjb/geode/apache-geode-test-coordinator.yaml index abcb53287..f17219638 100644 --- a/jjb/geode/apache-geode-test-coordinator.yaml +++ b/jjb/geode/apache-geode-test-coordinator.yaml @@ -22,8 +22,12 @@ project: 'Nordix/geode' stream: + - 'release-nordix-1.15.1': + branch: 'release-nordix/1.15.1' + test_using_docker: false - 'release-nordix-1.14.0': branch: 'release-nordix/1.14.0' + test_using_docker: true jobs: - 'apache-geode-verify-{stream}-coordinator' @@ -47,6 +51,10 @@ name: PUBLISH_GEODE default: true description: Publish Geode software to Nordix Artifactory after all tests are passed + - bool: + name: TEST_USING_DOCKER + default: '{test_using_docker}' + description: Geode versions prior to 1.15 were using a docker for executing parallel testing. Please set it to 'no' when building version 1.15 onwards. properties: - logrotate diff --git a/jjb/geode/apache-geode-test/execute_stressnew.sh b/jjb/geode/apache-geode-test/execute_stressnew.sh index cf0ff7841..059fd0489 100755 --- a/jjb/geode/apache-geode-test/execute_stressnew.sh +++ b/jjb/geode/apache-geode-test/execute_stressnew.sh @@ -112,12 +112,16 @@ GRADLE_SKIP_TASK_OPTIONS="-x javadoc -x spotlessCheck -x rat" if [[ -n "${PARALLEL_DUNIT}" && "${PARALLEL_DUNIT}" == "true" ]]; then PARALLEL_DUNIT="-PparallelDunit" - if [ -n "${DUNIT_PARALLEL_FORKS}" ]; then + if [[ -n "${DUNIT_PARALLEL_FORKS}" && "${TEST_USING_DOCKER}" == "false" ]] ; then DUNIT_PARALLEL_FORKS="--max-workers=${DUNIT_PARALLEL_FORKS} -PtestMaxParallelForks=${DUNIT_PARALLEL_FORKS} -PdunitParallelForks=${DUNIT_PARALLEL_FORKS}" + elif [[ -n "${DUNIT_PARALLEL_FORKS}" && "${TEST_USING_DOCKER}" == "true" ]] ; then + DUNIT_PARALLEL_FORKS="-PdunitParallelForks=${DUNIT_PARALLEL_FORKS}" + DOCKER_TESTING_OPTIONS="-PdunitDockerUser=geode -PdunitDockerImage=\$(docker images --format '{{.Repository}}:{{.Tag}}' | grep test-container)" fi else PARALLEL_DUNIT="" DUNIT_PARALLEL_FORKS="" + DOCKER_TESTING_OPTIONS="" fi case $ARTIFACT_SLUG in @@ -156,6 +160,7 @@ GRADLE_ARGS=" \ -PtestJava17Home=${TEST_JAVA_17_HOME} \ ${PARALLEL_DUNIT} \ ${DUNIT_PARALLEL_FORKS} \ + ${DOCKER_TESTING_OPTIONS} \ ${DEFAULT_GRADLE_TASK_OPTIONS} \ ${GRADLE_SKIP_TASK_OPTIONS} \ ${GRADLE_TASK} \ @@ -173,4 +178,12 @@ EXEC_COMMAND="bash -c 'echo Building with: $SEP \ echo "${EXEC_COMMAND}" eval "${EXEC_COMMAND}" +# Cleanup +# Make sure all test containers are stopped and removed when tests are finished +DOCKER_CONTAINERS=$(sudo docker ps -a -q 2> /dev/null) +if [ -n "${DOCKER_CONTAINERS}" ]; then + docker stop ${DOCKER_CONTAINERS} > /dev/null + echo -e "Removing containers with ID:" + docker rm ${DOCKER_CONTAINERS} +fi diff --git a/jjb/geode/apache-geode-test/execute_tests.sh b/jjb/geode/apache-geode-test/execute_tests.sh index c728518cf..27578b20c 100755 --- a/jjb/geode/apache-geode-test/execute_tests.sh +++ b/jjb/geode/apache-geode-test/execute_tests.sh @@ -45,12 +45,16 @@ GRADLE_SKIP_TASK_OPTIONS="-x javadoc -x spotlessCheck -x rat" if [[ -n "${PARALLEL_DUNIT}" && "${PARALLEL_DUNIT}" == "true" ]]; then PARALLEL_DUNIT="-PparallelDunit" - if [ -n "${DUNIT_PARALLEL_FORKS}" ]; then + if [[ -n "${DUNIT_PARALLEL_FORKS}" && "${TEST_USING_DOCKER}" == "false" ]] ; then DUNIT_PARALLEL_FORKS="--max-workers=${DUNIT_PARALLEL_FORKS} -PtestMaxParallelForks=${DUNIT_PARALLEL_FORKS} -PdunitParallelForks=${DUNIT_PARALLEL_FORKS}" + elif [[ -n "${DUNIT_PARALLEL_FORKS}" && "${TEST_USING_DOCKER}" == "true" ]] ; then + DUNIT_PARALLEL_FORKS="-PdunitParallelForks=${DUNIT_PARALLEL_FORKS}" + DOCKER_TESTING_OPTIONS="-PdunitDockerUser=geode -PdunitDockerImage=\$(docker images --format '{{.Repository}}:{{.Tag}}' | grep test-container)" fi else PARALLEL_DUNIT="" DUNIT_PARALLEL_FORKS="" + DOCKER_TESTING_OPTIONS="" fi case $ARTIFACT_SLUG in @@ -89,6 +93,7 @@ GRADLE_ARGS=" \ -PtestJava17Home=${TEST_JAVA_17_HOME} \ ${PARALLEL_DUNIT} \ ${DUNIT_PARALLEL_FORKS} \ + ${DOCKER_TESTING_OPTIONS} \ ${DEFAULT_GRADLE_TASK_OPTIONS} \ ${GRADLE_SKIP_TASK_OPTIONS} \ ${GRADLE_TASK} \ @@ -103,6 +108,15 @@ EXEC_COMMAND="bash -c 'echo Building with: $SEP \ cp gradlew gradlewStrict $SEP \ sed -e 's/JAVA_HOME/GRADLE_JVM/g' -i.bak gradlewStrict $SEP \ GRADLE_JVM=${JAVA_BUILD_PATH} JAVA_TEST_PATH=${JAVA_TEST_PATH} ./gradlewStrict ${GRADLE_ARGS}'" - echo "${EXEC_COMMAND}" eval "${EXEC_COMMAND}" + +# Cleanup +# Make sure all test containers are stopped and removed when tests are finished +DOCKER_CONTAINERS=$(sudo docker ps -a -q 2> /dev/null) +if [ -n "${DOCKER_CONTAINERS}" ]; then + docker stop ${DOCKER_CONTAINERS} > /dev/null + echo -e "Removing containers with ID:" + docker rm ${DOCKER_CONTAINERS} +fi + diff --git a/jjb/geode/global-template-apache-geode-test.yaml b/jjb/geode/global-template-apache-geode-test.yaml index 1acaf0811..7209fb670 100644 --- a/jjb/geode/global-template-apache-geode-test.yaml +++ b/jjb/geode/global-template-apache-geode-test.yaml @@ -70,6 +70,10 @@ name: TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX default: 'registry.nordix.org/docker-hub-proxy/' description: 'Docker Hub proxy location for geode test containers required for AcceptanceTest' + - bool: + name: TEST_USING_DOCKER + default: false + description: Geode versions prior to 1.15 were using a docker for executing parallel testing. Please set it to 'no' when building version 1.15 onwards. scm: - git-scm-github: -- 2.25.1