This is an automated email from the ASF dual-hosted git repository. vatamane pushed a commit to branch jenkins-test-build-42 in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit fdecd09cf5970c16944880a0973a95aeeb723de3 Author: Ronny Berndt <[email protected]> AuthorDate: Sat Mar 14 17:47:29 2026 +0100 ci: Enable parallel EUnit tests on CI workers (#5914) Adding default value `-j2 --output-sync=target` for all EUnit tests. --- build-aux/Jenkinsfile | 73 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 28 deletions(-) diff --git a/build-aux/Jenkinsfile b/build-aux/Jenkinsfile index a7b053716..7e21db44b 100644 --- a/build-aux/Jenkinsfile +++ b/build-aux/Jenkinsfile @@ -33,6 +33,9 @@ MAXIMUM_ERLANG_VERSION = '28.3.2' // works. INTERMEDIATE_ERLANG_VERSION = '27.3.4.8' +// Default GNU Make Eunit Options for supported platforms +DEFAULT_GNU_MAKE_EUNIT_OPTS = '-j2 --output-sync=target' + // Use these to detect if just documents changed docs_changed = "git diff --name-only origin/${env.CHANGE_TARGET} | grep -q '^src/docs/'" github_changed = "git diff --name-only origin/${env.CHANGE_TARGET} | grep -q '^.github'" @@ -48,7 +51,8 @@ meta = [ with_clouseau: false, clouseau_java_home: '/usr', quickjs_test262: true, - image: "apache/couchdbci-centos:8-erlang-${ERLANG_VERSION}" + image: "apache/couchdbci-centos:8-erlang-${ERLANG_VERSION}", + gnu_make_eunit_opts: "${DEFAULT_GNU_MAKE_EUNIT_OPTS}" ], 'centos9': [ @@ -58,7 +62,8 @@ meta = [ with_clouseau: false, clouseau_java_home: '/usr', quickjs_test262: true, - image: "apache/couchdbci-centos:9-erlang-${ERLANG_VERSION}" + image: "apache/couchdbci-centos:9-erlang-${ERLANG_VERSION}", + gnu_make_eunit_opts: "${DEFAULT_GNU_MAKE_EUNIT_OPTS}" ], 'centos10': [ @@ -68,7 +73,8 @@ meta = [ with_clouseau: false, clouseau_java_home: '/usr', quickjs_test262: true, - image: "apache/couchdbci-centos:10-erlang-${ERLANG_VERSION}" + image: "apache/couchdbci-centos:10-erlang-${ERLANG_VERSION}", + gnu_make_eunit_opts: "${DEFAULT_GNU_MAKE_EUNIT_OPTS}" ], 'jammy': [ @@ -78,7 +84,8 @@ meta = [ with_clouseau: false, clouseau_java_home: '/opt/java/openjdk', quickjs_test262: true, - image: "apache/couchdbci-ubuntu:jammy-erlang-${ERLANG_VERSION}" + image: "apache/couchdbci-ubuntu:jammy-erlang-${ERLANG_VERSION}", + gnu_make_eunit_opts: "${DEFAULT_GNU_MAKE_EUNIT_OPTS}" ], 'noble': [ @@ -88,7 +95,8 @@ meta = [ with_clouseau: false, clouseau_java_home: '/opt/java/openjdk', quickjs_test262: true, - image: "apache/couchdbci-ubuntu:noble-erlang-${ERLANG_VERSION}" + image: "apache/couchdbci-ubuntu:noble-erlang-${ERLANG_VERSION}", + gnu_make_eunit_opts: "${DEFAULT_GNU_MAKE_EUNIT_OPTS}" ], 'bullseye': [ @@ -98,7 +106,8 @@ meta = [ with_clouseau: false, clouseau_java_home: '/opt/java/openjdk', quickjs_test262: true, - image: "apache/couchdbci-debian:bullseye-erlang-${ERLANG_VERSION}" + image: "apache/couchdbci-debian:bullseye-erlang-${ERLANG_VERSION}", + gnu_make_eunit_opts: "${DEFAULT_GNU_MAKE_EUNIT_OPTS}" ], // Sometimes we "pick up" ppc64le workers from the asf jenkins intance That @@ -115,7 +124,8 @@ meta = [ // with_clouseau: true, // quickjs_test262: true, // image: "${DOCKER_IMAGE_BASE}-${ERLANG_VERSION}", - // node_label: 'ppc64le' + // node_label: 'ppc64le', + // gnu_make_eunit_opts: "${DEFAULT_GNU_MAKE_EUNIT_OPTS}" // ], // Just like in the ppc64le case we sometimes "pick up" built-in s390x workers added to @@ -131,7 +141,8 @@ meta = [ // // Test262Error: 51539607552,42,0,4,5,6,7,8 // quickjs_test262: false, // image: "${DOCKER_IMAGE_BASE}-${ERLANG_VERSION}", - // node_label: 's390x' + // node_label: 's390x', + // gnu_make_eunit_opts: "${DEFAULT_GNU_MAKE_EUNIT_OPTS}" // ], 'base': [ @@ -142,7 +153,8 @@ meta = [ clouseau_java_home: '/opt/java/openjdk', // Test this in in the bookworm-quickjs variant quickjs_test262: false, - image: "${DOCKER_IMAGE_BASE}-${ERLANG_VERSION}" + image: "${DOCKER_IMAGE_BASE}-${ERLANG_VERSION}", + gnu_make_eunit_opts: "${DEFAULT_GNU_MAKE_EUNIT_OPTS}" ], 'base-max-erlang': [ @@ -152,7 +164,8 @@ meta = [ with_clouseau: false, clouseau_java_home: '/opt/java/openjdk', quickjs_test262: false, - image: "${DOCKER_IMAGE_BASE}-${MAXIMUM_ERLANG_VERSION}" + image: "${DOCKER_IMAGE_BASE}-${MAXIMUM_ERLANG_VERSION}", + gnu_make_eunit_opts: "${DEFAULT_GNU_MAKE_EUNIT_OPTS}" ], 'base-intermediate-erlang': [ @@ -162,7 +175,8 @@ meta = [ with_clouseau: false, clouseau_java_home: '/opt/java/openjdk', quickjs_test262: false, - image: "${DOCKER_IMAGE_BASE}-${INTERMEDIATE_ERLANG_VERSION}" + image: "${DOCKER_IMAGE_BASE}-${INTERMEDIATE_ERLANG_VERSION}", + gnu_make_eunit_opts: "${DEFAULT_GNU_MAKE_EUNIT_OPTS}" ], 'base-quickjs': [ @@ -172,7 +186,8 @@ meta = [ with_clouseau: false, clouseau_java_home: '/opt/java/openjdk', quickjs_test262: true, - image: "${DOCKER_IMAGE_BASE}-${ERLANG_VERSION}" + image: "${DOCKER_IMAGE_BASE}-${ERLANG_VERSION}", + gnu_make_eunit_opts: "${DEFAULT_GNU_MAKE_EUNIT_OPTS}" ], // This runs on a docker ARM64 host. Normally we should be able to run all @@ -192,7 +207,8 @@ meta = [ // Test this in in the bookworm-quickjs variant quickjs_test262: false, image: "${DOCKER_IMAGE_BASE}-${ERLANG_VERSION}", - node_label: 'docker-arm64' + node_label: 'docker-arm64', + gnu_make_eunit_opts: "${DEFAULT_GNU_MAKE_EUNIT_OPTS}" ], 'trixie': [ @@ -202,16 +218,19 @@ meta = [ with_clouseau: false, clouseau_java_home: '/opt/java/openjdk', quickjs_test262: true, - image: "apache/couchdbci-debian:trixie-erlang-${ERLANG_VERSION}" + image: "apache/couchdbci-debian:trixie-erlang-${ERLANG_VERSION}", + gnu_make_eunit_opts: "${DEFAULT_GNU_MAKE_EUNIT_OPTS}" ], 'freebsd-x86_64': [ name: 'FreeBSD x86_64', spidermonkey_vsn: '91', + with_nouveau: false, with_clouseau: true, clouseau_java_home: '/usr/local/openjdk21', quickjs_test262: false, - gnu_make: 'gmake' + gnu_make: 'gmake', + gnu_make_eunit_opts: "${DEFAULT_GNU_MAKE_EUNIT_OPTS}" ], // Spidermonkey 91 has issues on ARM64 FreeBSD @@ -223,17 +242,18 @@ meta = [ // with_clouseau: true, // clouseau_java_home: '/usr/local/openjdk21', // quickjs_test262: false, - // gnu_make: 'gmake' + // gnu_make: 'gmake', + // gnu_make_eunit_opts: "${DEFAULT_GNU_MAKE_EUNIT_OPTS}" // ], 'macos': [ name: 'macOS', disable_spidermonkey: true, - with_nouveau: false, + with_nouveau: true, with_clouseau: true, clouseau_java_home: '/opt/homebrew/opt/openjdk@21', gnu_make: 'gmake', - gnu_make_eunit_opts: '-j4 --output-sync=target' + gnu_make_eunit_opts: "${DEFAULT_GNU_MAKE_EUNIT_OPTS}" ], 'win2022': [ @@ -242,7 +262,8 @@ meta = [ with_clouseau: true, clouseau_java_home: /C:\tools\zulu21.46.19-ca-jdk21.0.9-win_x64/, quickjs_test262: false, - node_label: 'win' + node_label: 'win', + gnu_make_eunit_opts: "${DEFAULT_GNU_MAKE_EUNIT_OPTS}" ] ] @@ -298,15 +319,11 @@ def generateNativeStage(platform) { dir( "${platform}/build" ) { sh "${configure(meta[platform])}" sh '$MAKE' - eunit_opts = '' - if ( meta[platform].gnu_make_eunit_opts ) { - eunit_opts = meta[platform].gnu_make_eunit_opts - } - retry (3) {sh '$MAKE eunit ' + eunit_opts} + retry (3) {sh "$MAKE ${meta[platform].gnu_make_eunit_opts} eunit" } if (meta[platform].quickjs_test262) {retry(3) {sh 'make quickjs-test262'}} retry (3) {sh '$MAKE elixir'} - retry (3) {sh '$MAKE elixir-search ERLANG_COOKIE=crumbles'} - retry (3) {sh '$MAKE mango-test ERLANG_COOKIE=crumbles'} + retry (3) {timeout(time: 5, unit: "MINUTES") {sh '$MAKE elixir-search ERLANG_COOKIE=crumbles'}} + retry (3) {timeout(time: 5, unit: "MINUTES") {sh '$MAKE mango-test ERLANG_COOKIE=crumbles'}} retry (3) {sh '$MAKE weatherreport-test'} retry (3) {sh '$MAKE nouveau-test'} } @@ -361,7 +378,7 @@ def generateNativeStage(platform) { ..\\..\\couchdb-glazier\\bin\\shell.ps1 Write-Output 'The following tests are skipped:' ..\\..\\couchdb-glazier\\bin\\exclude_tests_win.ps1 -Path . | Out-Host - make -j 4 -f Makefile.win eunit + make ${meta[platform].gnu_make_eunit_opts} -f Makefile.win eunit """, label: 'EUnit tests') } @@ -469,7 +486,7 @@ def generateContainerStage(platform) { dir( "${platform}/build" ) { sh "${configure(meta[platform])}" sh 'make' - retry(3) {sh 'make eunit'} + retry (3) {sh "make ${meta[platform].gnu_make_eunit_opts} eunit" } if (meta[platform].quickjs_test262) {retry(3) {sh 'make quickjs-test262'}} retry(3) {sh 'make elixir'} retry(3) {sh "${setClouseauJavaHome}timeout 5m make elixir-search ERLANG_COOKIE=crumbles"}
