| 1 | #!/bin/bash |
| 2 | # |
| 3 | # SPDX-FileCopyrightText: 2024 Kienan Stewart <kstewart@efficios.com> |
| 4 | # SPDX-License-Identifier: GPL-2.0-or-later |
| 5 | # |
| 6 | set -exu |
| 7 | |
| 8 | # shellcheck disable=SC2317 |
| 9 | function cleanup |
| 10 | { |
| 11 | killall lttng-sessiond |
| 12 | } |
| 13 | |
| 14 | trap cleanup EXIT SIGINT SIGTERM |
| 15 | |
| 16 | LD_LIBRARY_PATH="${LD_LIBRARY_PATH:-}" |
| 17 | LIBDIR="lib" |
| 18 | LIBDIR_ARCH="$LIBDIR" |
| 19 | |
| 20 | # RHEL and SLES both use lib64 but don't bother shipping a default autoconf |
| 21 | # site config that matches this. |
| 22 | if [[ ( -f /etc/redhat-release || -f /etc/products.d/SLES.prod || -f /etc/yocto-release ) ]]; then |
| 23 | # Detect the userspace bitness in a distro agnostic way |
| 24 | if file -L /bin/bash | grep '64-bit' >/dev/null 2>&1; then |
| 25 | LIBDIR_ARCH="${LIBDIR}64" |
| 26 | fi |
| 27 | fi |
| 28 | |
| 29 | # Work-around for the sles12sp5, sles15sp4 where the last successful builds were |
| 30 | # completed before 'followSymlinks' was set to try, and is thus missing the |
| 31 | # links for all the libraries. |
| 32 | if [[ -f /etc/products.d/SLES.prod ]] ; then |
| 33 | pushd "${WORKSPACE}/deps/build/${LIBDIR_ARCH}" |
| 34 | while read -r LIB ; do |
| 35 | LIB_ANY=$(echo "${LIB}" | rev | cut -d'.' -f4- | rev) |
| 36 | LIB_MAJOR=$(echo "${LIB}" | rev | cut -d'.' -f3- | rev) |
| 37 | if [[ ! -f "${LIB_ANY}" ]]; then |
| 38 | ln -s "$(realpath "${LIB}")" "${LIB_ANY}" |
| 39 | fi |
| 40 | if [[ ! -f "${LIB_MAJOR}" ]] ; then |
| 41 | ln -s "$(realpath "${LIB}")" "${LIB_MAJOR}" |
| 42 | fi |
| 43 | done < <(find . -type f -iregex '.*\.so\.[0-9]+\.[0-9]+\.[0-9]+') |
| 44 | popd |
| 45 | fi |
| 46 | |
| 47 | if [[ -z "${JAVA_HOME:-}" ]] ; then |
| 48 | export JAVA_HOME="/usr/lib/jvm/default-java" |
| 49 | fi |
| 50 | |
| 51 | DEPS_JAVA="${WORKSPACE/deps/build/share/java}" |
| 52 | export CLASSPATH="$DEPS_JAVA/lttng-ust-agent-all.jar:/usr/share/java/log4j-api.jar:/usr/share/java/log4j-core.jar:/usr/share/java/log4j-1.2.jar" |
| 53 | |
| 54 | LTTNG_UST_JAVA_TESTS_ENV=( |
| 55 | # Some ci nodes (eg. SLES12) don't have maven distributed by their |
| 56 | # package manager. As a result, the maven binary is deployed in |
| 57 | # '/opt/apache/maven/bin'. |
| 58 | PATH="${WORKSPACE}/deps/build/bin/:$PATH:/opt/apache/maven/bin/" |
| 59 | LD_LIBRARY_PATH="${WORKSPACE}/deps/build/${LIBDIR}/:${WORKSPACE}/deps/build/${LIBDIR_ARCH}:$LD_LIBRARY_PATH" |
| 60 | LTTNG_UST_DEBUG=1 |
| 61 | LTTNG_CONSUMERD32_BIN="${WORKSPACE}/deps/build/${LIBDIR_ARCH}/lttng/libexec/lttng-consumerd" |
| 62 | LTTNG_CONSUMERD64_BIN="${WORKSPACE}/deps/build/${LIBDIR_ARCH}/lttng/libexec/lttng-consumerd" |
| 63 | LTTNG_SESSION_CONFIG_XSD_PATH="${WORKSPACE}/deps/build/share/xml/lttng" |
| 64 | BABELTRACE_PLUGIN_PATH="${WORKSPACE}/deps/build/${LIBDIR_ARCH}/babeltrace2/plugins" |
| 65 | LIBBABELTRACE2_PLUGIN_PROVIDER_DIR="${WORKSPACE}/deps/build/${LIBDIR_ARCH}/babeltrace2/plugin-providers" |
| 66 | ) |
| 67 | LTTNG_UST_JAVA_TESTS_MAVEN_OPTS=( |
| 68 | "-Dmaven.test.failure.ignore=true" |
| 69 | "-Dcommon-jar-location=${WORKSPACE}/deps/build/share/java/lttng-ust-agent-common.jar" |
| 70 | "-Djul-jar-location=${WORKSPACE}/deps/build/share/java/lttng-ust-agent-jul.jar" |
| 71 | "-Dlog4j-jar-location=${WORKSPACE}/deps/build/share/java/lttng-ust-agent-log4j.jar" |
| 72 | "-Dlog4j2-jar-location=${WORKSPACE}/deps/build/share/java/lttng-ust-agent-log4j2.jar" |
| 73 | "-DargLine=-Djava.library.path=${WORKSPACE}/deps/build/${LIBDIR_ARCH}" |
| 74 | '-Dgroups=!domain:log4j2' |
| 75 | ) |
| 76 | |
| 77 | # Start the lttng-sessiond |
| 78 | mkdir -p "${WORKSPACE}/log" |
| 79 | env "${LTTNG_UST_JAVA_TESTS_ENV[@]}" lttng-sessiond -b -vvv > "${WORKSPACE}/log/lttng-sessiond.log" 2>&1 |
| 80 | |
| 81 | cd src/lttng-ust-java-tests |
| 82 | env "${LTTNG_UST_JAVA_TESTS_ENV[@]}" mvn -version |
| 83 | env "${LTTNG_UST_JAVA_TESTS_ENV[@]}" mvn "${LTTNG_UST_JAVA_TESTS_MAVEN_OPTS[@]}" clean verify |
| 84 | exit "${?}" |