Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
6759bdc
ci: restore EL7 stresstest coverage, add nightly EL7 functional tests
rkennke Sep 18, 2026
11c391b
ci: run functional:x64-el7-jdk8 on every PR, not just nightly
rkennke Sep 18, 2026
8e2a2fb
ci: pin BUILD_IMAGE_X64_EL7 to the rebuilt image digest
rkennke Sep 18, 2026
696f18e
fix(ci): install gcc-c++ in the EL7 image to satisfy Gradle's compile…
rkennke Sep 18, 2026
a2e55b1
ci: repin BUILD_IMAGE_X64_EL7 to the gcc-c++ fixed image
rkennke Sep 18, 2026
997092a
fix(ci): make functional-tests.sh executable
rkennke Sep 18, 2026
d5de387
fix(ci): raise test heap for the EL7 functional job
rkennke Sep 18, 2026
c93ae51
fix(ci): let -Pskip-native target specific projects
rkennke Sep 18, 2026
fd1abe0
fix(ci): compile ddprof-test-native as C99 on Linux
rkennke Sep 18, 2026
c89382e
fix(ci): run testRelease, not testDebug, in the EL7 functional job
rkennke Sep 18, 2026
09aed94
ci: add temporary diagnostic jobs for the NativeSocket* investigation
rkennke Sep 18, 2026
dd37c3f
ci(diag): statically link libstdc++ into the debug diagnostic build
rkennke Sep 21, 2026
8f241b4
ci: remove the temporary NativeSocket* diagnostic jobs
rkennke Sep 21, 2026
49f6f07
docs: comments describe current state, not what changed
rkennke Sep 21, 2026
924d668
fix: pre-review cleanup - comment history archeology, skip-native con…
rkennke Sep 22, 2026
b7970ee
ci: cache the JDK-under-test tarball across functional job runs
rkennke Sep 22, 2026
cb4d5a1
fix: use isNativeSkipped() everywhere skip-native is checked
rkennke Sep 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .gitlab/base/el7/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Runtime-only image for exercising the shipped x64 binary on its actual
# glibc floor (2.17). Oracle Linux 7 is the best-maintained EL7 derivative —
# live CDN, current package levels, no ELS subscription needed — see PR #790.
#
# This image never compiles anything real: the shipped libjavaProfiler.so is
# built in the AlmaLinux 8 image (.gitlab/base/el8/Dockerfile) and consumed
# here via -Pskip-native -Pwith-libs, which gates every actual compile/link
# task onlyIf. It still needs *a* C++ compiler on PATH, though: Gradle's
# ConfigurationPresets.setupStandardConfigurations() calls
# PlatformUtils.findCompiler() unconditionally at project-configuration time
# (build-logic/conventions/.../ConfigurationPresets.kt:35), before -Pskip-native
# is even consulted — with none present, configuration itself fails with
# "No C++ compiler found." The stock EL7 gcc-c++ (4.8.5) is only here to
# satisfy that `--version` probe; it is never invoked to build anything.
#
# Gradle 9 requires JDK 17+ to run, so JAVA_HOME is a single build JDK (21).
# Suites that test against other JDKs (8, 11, 17, ...) fetch that JDK at job
# runtime into JAVA_TEST_HOME (see .gitlab/scripts/functional-tests.sh) —
# the profiler-test Gradle plugin already runs the test JVM from
# JAVA_TEST_HOME when it is set, independently of the JDK running Gradle
# itself.
ARG BASE_IMAGE=oraclelinux:7
FROM ${BASE_IMAGE} as base
WORKDIR /root

RUN yum -y install git make zip unzip which wget curl jq gcc-c++ \
&& yum -y clean all

RUN curl -s "https://get.sdkman.io" | bash && \
bash -c "source /root/.sdkman/bin/sdkman-init.sh && sdk install java 21.0.3-tem"
ENV JAVA_HOME=/root/.sdkman/candidates/java/current
ENV PATH="/root/.sdkman/candidates/java/current/bin:${PATH}"
93 changes: 88 additions & 5 deletions .gitlab/build-deploy/.gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ variables:
BUILD_IMAGE_X64_GLIBC: registry.ddbuild.io/ci/async-profiler-build:v137281788-x64-glibc-base@sha256:270a9101716a0865071182e0ef0e40e98f874535b90722949b33a4a8998fe08d
# Generated by https://gitlab.ddbuild.io/DataDog/java-profiler/-/jobs/2040944172
BUILD_IMAGE_ARM64_GLIBC: registry.ddbuild.io/ci/async-profiler-build:v137281788-arm64-glibc-base@sha256:511d051d37ed99b2ca9cd3af797aa9de63e4b4b952af1e738b2cea913bbcc057
# Generated by pipeline 138438605
BUILD_IMAGE_X64_EL7: registry.ddbuild.io/ci/async-profiler-build:v138438605-x64-el7-base@sha256:2f4d2852979d7b190dcb997bbc833eb795f2f0db9905300ec239516480e8599d
# Generated by https://gitlab.ddbuild.io/DataDog/java-profiler/-/jobs/2040944172
BUILD_IMAGE_X64_MUSL: registry.ddbuild.io/ci/async-profiler-build:v137281788-x64-musl-base@sha256:fd3803695771de3eabf44e4953c0474273f9dbb97d88c22e99ac507b88572481
# Generated by https://gitlab.ddbuild.io/DataDog/java-profiler/-/jobs/2040944172
Expand Down Expand Up @@ -58,7 +60,12 @@ variables:
artifacts: true
when: on_success
tags: [ "arch:amd64" ]
image: ${BUILD_IMAGE}
# RUNTIME_IMAGE decouples the runtime environment from the image the
# artifact was built in (BUILD_IMAGE): stresstest:x64 runs on Oracle Linux 7
# to exercise the shipped binary's actual glibc floor, while consuming the
# same artifact build:x64 produced in the AlmaLinux 8 image. Other stresstest
# jobs set RUNTIME_IMAGE to their own BUILD_IMAGE.
image: ${RUNTIME_IMAGE}
script:
- .gitlab/scripts/stresstests.sh
artifacts:
Expand Down Expand Up @@ -127,7 +134,8 @@ stresstest:x64:
- job: build:x64
artifacts: true
variables:
BUILD_IMAGE: ${BUILD_IMAGE_X64_GLIBC}
# Oracle Linux 7 (glibc 2.17): the shipped artifact's actual glibc floor.
RUNTIME_IMAGE: ${BUILD_IMAGE_X64_EL7}
TARGET: linux-x64

stresstest:x64-musl:
Expand All @@ -138,7 +146,7 @@ stresstest:x64-musl:
- job: build:x64-musl
artifacts: true
variables:
BUILD_IMAGE: ${BUILD_IMAGE_X64_MUSL}
RUNTIME_IMAGE: ${BUILD_IMAGE_X64_MUSL}
TARGET: linux-x64-musl

stresstest:arm64:
Expand All @@ -151,7 +159,7 @@ stresstest:arm64:
tags: [ "arch:arm64" ]
variables:
# same image as build:arm64, so the stress run exercises the shipped build
BUILD_IMAGE: ${BUILD_IMAGE_ARM64_GLIBC}
RUNTIME_IMAGE: ${BUILD_IMAGE_ARM64_GLIBC}
TARGET: linux-arm64

stresstest:arm64-musl:
Expand All @@ -164,9 +172,84 @@ stresstest:arm64-musl:
timeout: 3h
tags: [ "arch:arm64" ]
variables:
BUILD_IMAGE: ${BUILD_IMAGE_ARM64_MUSL}
RUNTIME_IMAGE: ${BUILD_IMAGE_ARM64_MUSL}
TARGET: linux-arm64-musl

# Runs the functional (ddprof-test) suite on Oracle Linux 7 against the
# shipped x64 artifact, so the libc-sensitive suites get real coverage at the
# glibc 2.17 floor (see PR #790's follow-up). Schedule-only by default: a
# 2-3 JDK subset is enough to catch a libc regression, and Temurin 8/17/21
# all start on glibc 2.17. jdk8 additionally runs on every PR (below), so
# EL7 functional coverage isn't gated on the nightly schedule entirely.
.functional_job:
extends:
- .retry-config
stage: stresstest
needs:
- job: prepare:start
artifacts: true
- job: build:x64
artifacts: true
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"'
when: always
- when: never
tags: [ "arch:amd64" ]
image: ${BUILD_IMAGE_X64_EL7}
variables:
TARGET: linux-x64
# Two independent cache entries rather than extending .cache-config-pull:
# the JDK-under-test tarball (functional-tests.sh's JDK_CACHE_DIR) has
# nothing to do with the Gradle/Maven cache's key or lifetime. It doesn't
# vary by branch or commit -- Adoptium's "latest" build for a given major
# version is the same tarball everywhere -- and without its own entry here
# it was never cached at all, so every run re-downloaded it from Adoptium.
cache:
- key:
files:
- gradle/wrapper/gradle-wrapper.properties
prefix: build-v2-${CI_COMMIT_REF_SLUG}
fallback_keys:
- build-v2-${CI_DEFAULT_BRANCH}
- build-v2-main
paths:
- .gradle/caches/
- .gradle/wrapper/
- .m2/repository/
policy: pull
- key: jdk-cache-v1-${TEST_JDK}
paths:
- .jdk-cache/
policy: pull-push
script:
- .gitlab/scripts/functional-tests.sh
Comment thread
rkennke marked this conversation as resolved.
Comment thread
rkennke marked this conversation as resolved.
artifacts:
when: always
paths:
- functional/$TARGET/jdk$TEST_JDK/reports
- functional/$TARGET/jdk$TEST_JDK/logs
expire_in: 2 weeks

# Runs on every pipeline (not just nightly): JDK 8 is the oldest/most
# different from the JDK 21 that runs Gradle, giving the most distinct
# per-PR signal for a libc regression at low added cost.
functional:x64-el7-jdk8:
extends: .functional_job
rules:
- when: on_success
variables:
TEST_JDK: "8"

functional:x64-el7-jdk17:
extends: .functional_job
variables:
TEST_JDK: "17"

functional:x64-el7-jdk21:
extends: .functional_job
variables:
TEST_JDK: "21"

# Builds the chaos reliability harness once per pipeline so the per-cell
# reliability jobs can pull it as an artifact instead of compiling inline.
# Schedule-only because reliability cells are schedule-only.
Expand Down
6 changes: 6 additions & 0 deletions .gitlab/build-deploy/images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,11 @@ variables:
# and must be one that still gets security rebuilds. The resulting .so
# requires GLIBC_2.27. Multi-arch manifest, pinned by digest.
BASE_IMAGE_GLIBC: almalinux:8@sha256:9f355ae942d6a6c0561f0771dc053a2cfae9580fc45fa4252756db7c7e80c09f
# Oracle Linux 7 (glibc 2.17) — best-maintained EL7 derivative (live CDN,
# both arches, working collections). Runtime-only: runs the x64 stresstest
# and functional suites against the AlmaLinux-8-built shipped binary, so
# that coverage at the actual glibc floor doesn't go to zero (PR #790).
# Multi-arch manifest, pinned by digest.
BASE_IMAGE_EL7: oraclelinux:7@sha256:767c93c07b1fa621ae56d1f5f090e8c0dce7eb452e7dda1e74bbe7546504d63f

DOCKER_IMAGE: 486234852809.dkr.ecr.us-east-1.amazonaws.com/images/docker:24.0.4-gbi-focal
1 change: 1 addition & 0 deletions .gitlab/scripts/check-image-updates.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ IMAGE_DEFS=(
"BUILD_IMAGE_X64|.gitlab/build-deploy/.gitlab-ci.yml|x64-base|image-base-build-x64|async-profiler-build"
"BUILD_IMAGE_X64_GLIBC|.gitlab/build-deploy/.gitlab-ci.yml|x64-glibc-base|image-base-build-x64-glibc|async-profiler-build"
"BUILD_IMAGE_ARM64_GLIBC|.gitlab/build-deploy/.gitlab-ci.yml|arm64-glibc-base|image-base-build-arm64-glibc|async-profiler-build"
"BUILD_IMAGE_X64_EL7|.gitlab/build-deploy/.gitlab-ci.yml|x64-el7-base|image-base-build-x64-el7|async-profiler-build"
"BUILD_IMAGE_X64_MUSL|.gitlab/build-deploy/.gitlab-ci.yml|x64-musl-base|image-base-build-x64-musl|async-profiler-build"
"BUILD_IMAGE_ARM64|.gitlab/build-deploy/.gitlab-ci.yml|arm64-base|image-base-build-arm64|async-profiler-build"
"BUILD_IMAGE_ARM64_MUSL|.gitlab/build-deploy/.gitlab-ci.yml|arm64-musl-base|image-base-build-arm64-musl|async-profiler-build"
Expand Down
73 changes: 73 additions & 0 deletions .gitlab/scripts/functional-tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
#! /bin/bash

set -eo pipefail # exit on any failure, including mid-pipeline
set -x

if [ ! -z "${CANCELLED:-}" ]; then
exit 0
fi

if [ -z "$TARGET" ]; then
echo "Expecting the TARGET variable to be set"
exit 1
fi

if [ -z "$TEST_JDK" ]; then
echo "Expecting the TEST_JDK variable to be set (Adoptium major version, e.g. 8, 11, 17, 21)"
exit 1
fi

# Release, not Debug: build:x64 (.gitlab/scripts/build.sh) only ever produces
# and ships the release-config libjavaProfiler.so -- that's the actual
# shipped artifact this job exists to exercise. testDebug would set
# ddprof_test.config=debug while the loaded library was in fact built
# release, so debug-only assertions (e.g. JVMAccessTest's [TEST::INFO] log
# lines, only compiled into debug builds) would fail outright instead of
# correctly assumeTrue-skipping.
TEST_CONFIG="${TEST_CONFIG:-Release}"

HERE=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
REPO_ROOT=$( cd "${HERE}/../.." && pwd )

if [ -z "${JAVA_HOME}" ]; then
# workaround for CI when JAVA_HOME is not properly defined
export JAVA_HOME=~/.sdkman/candidates/java/current
fi

echo "Using Java (build) @ ${JAVA_HOME}"

# Fetch the JDK under test independently of the JDK running Gradle: the
# profiler-test Gradle plugin runs the test JVM from JAVA_TEST_HOME when it
# is set, so this is the only way to exercise multiple JDKs without needing
# a Gradle version that runs on each of them.
JDK_CACHE_DIR="${REPO_ROOT}/.jdk-cache/${TEST_JDK}"
if [ ! -x "${JDK_CACHE_DIR}/bin/java" ]; then
rm -rf "${JDK_CACHE_DIR}"
mkdir -p "${JDK_CACHE_DIR}"
curl -sL "https://api.adoptium.net/v3/binary/latest/${TEST_JDK}/ga/linux/x64/jdk/hotspot/normal/eclipse" \
-o /tmp/test-jdk.tar.gz
tar -xzf /tmp/test-jdk.tar.gz -C "${JDK_CACHE_DIR}" --strip-components=1
rm -f /tmp/test-jdk.tar.gz
fi
export JAVA_TEST_HOME="${JDK_CACHE_DIR}"
echo "Using Java (test) @ ${JAVA_TEST_HOME}"
"${JAVA_TEST_HOME}/bin/java" -version

source .gitlab/scripts/includes.sh

function onexit {
local out_dir="${REPO_ROOT}/functional/${TARGET}/jdk${TEST_JDK}"
mkdir -p "${out_dir}/reports"
mkdir -p "${out_dir}/logs"
mv "${REPO_ROOT}/ddprof-test/build/reports" "${out_dir}/" 2>/dev/null || true
mv /tmp/*.jfr "${out_dir}/logs" 2>/dev/null || true
mv /tmp/*.json "${out_dir}/logs" 2>/dev/null || true
mv /tmp/*.txt "${out_dir}/logs" 2>/dev/null || true
find . -name 'hs_err*' | xargs -I {} cp {} "${out_dir}/logs" 2>/dev/null || true
}

trap onexit EXIT

./gradlew -Pddprof_version="$(get_version)" -Pskip-native=ddprof-lib,malloc-shim -Pwith-libs="$(pwd)/libs" -PCI \
-PtestMaxHeap=1536m \
":ddprof-test:test${TEST_CONFIG}" --max-workers=1 --build-cache --stacktrace --info --no-watch-fs --no-daemon
Comment thread
rkennke marked this conversation as resolved.
Comment thread
rkennke marked this conversation as resolved.
6 changes: 4 additions & 2 deletions .gitlab/scripts/rebuild-images.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
# Base image variables come from .gitlab/build-deploy/images.yml which is
# included in the root pipeline and available as CI variables:
# OPENJDK_BASE_IMAGE, OPENJDK_BASE_IMAGE_ARM64, OPENJDK_BASE_IMAGE_MUSL,
# OPENJDK_BASE_IMAGE_ARM64_MUSL, BASE_IMAGE_GLIBC, BASE_BENCHMARK_IMAGE_NAME,
# DOCKER_IMAGE
# OPENJDK_BASE_IMAGE_ARM64_MUSL, BASE_IMAGE_GLIBC, BASE_IMAGE_EL7,
# BASE_BENCHMARK_IMAGE_NAME, DOCKER_IMAGE

set -euo pipefail

Expand All @@ -43,6 +43,7 @@ usage() {
echo " x64 glibc x86_64 build image" >&2
echo " x64-glibc shipped-binary x86_64 build image (AlmaLinux 8)" >&2
echo " arm64-glibc shipped-binary aarch64 build image (AlmaLinux 8)" >&2
echo " x64-el7 runtime-only x86_64 stresstest/functional image (Oracle Linux 7)" >&2
echo " x64-musl musl x86_64 build image" >&2
echo " arm64 glibc arm64 build image" >&2
echo " arm64-musl musl arm64 build image" >&2
Expand All @@ -61,6 +62,7 @@ IMAGE_DEFS=(
"x64|BUILD_IMAGE_X64|.gitlab/build-deploy/.gitlab-ci.yml|x64-base|.gitlab/base/Dockerfile|linux/amd64|async-profiler-build|OPENJDK_BASE_IMAGE"
"x64-glibc|BUILD_IMAGE_X64_GLIBC|.gitlab/build-deploy/.gitlab-ci.yml|x64-glibc-base|.gitlab/base/el8/Dockerfile|linux/amd64|async-profiler-build|BASE_IMAGE_GLIBC"
"arm64-glibc|BUILD_IMAGE_ARM64_GLIBC|.gitlab/build-deploy/.gitlab-ci.yml|arm64-glibc-base|.gitlab/base/el8/Dockerfile|linux/arm64|async-profiler-build|BASE_IMAGE_GLIBC"
"x64-el7|BUILD_IMAGE_X64_EL7|.gitlab/build-deploy/.gitlab-ci.yml|x64-el7-base|.gitlab/base/el7/Dockerfile|linux/amd64|async-profiler-build|BASE_IMAGE_EL7"
"x64-musl|BUILD_IMAGE_X64_MUSL|.gitlab/build-deploy/.gitlab-ci.yml|x64-musl-base|.gitlab/base/Dockerfile.musl|linux/amd64|async-profiler-build|OPENJDK_BASE_IMAGE_MUSL"
"arm64|BUILD_IMAGE_ARM64|.gitlab/build-deploy/.gitlab-ci.yml|arm64-base|.gitlab/base/Dockerfile|linux/arm64|async-profiler-build|OPENJDK_BASE_IMAGE_ARM64"
"arm64-musl|BUILD_IMAGE_ARM64_MUSL|.gitlab/build-deploy/.gitlab-ci.yml|arm64-musl-base|.gitlab/base/Dockerfile.musl|linux/arm64|async-profiler-build|OPENJDK_BASE_IMAGE_ARM64_MUSL"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ class SimpleNativeLibPlugin : Plugin<Project> {

// Compile task
val compileTask = project.tasks.register("compileLib", NativeCompileTask::class.java) {
onlyIf { extension.enabled.get() && !project.hasProperty("skip-native") }
onlyIf { extension.enabled.get() && !PlatformUtils.isNativeSkipped(project) }
Comment thread
rkennke marked this conversation as resolved.
group = "build"
description = "Compile the $libraryName library"

Expand All @@ -76,7 +76,7 @@ class SimpleNativeLibPlugin : Plugin<Project> {

// Link task
val linkTask = project.tasks.register("linkLib", NativeLinkTask::class.java) {
onlyIf { extension.enabled.get() && !project.hasProperty("skip-native") }
onlyIf { extension.enabled.get() && !PlatformUtils.isNativeSkipped(project) }
dependsOn(compileTask)
group = "build"
description = "Link the $libraryName shared library"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,19 @@ class FuzzTargetsPlugin : Plugin<Project> {

private fun configureFuzzTargets(project: Project, extension: FuzzTargetsExtension) {
val hasFuzzer = PlatformUtils.hasFuzzer()
// This plugin is applied to the :ddprof-lib:fuzz subproject, whose own
// name ("fuzz") is not what a caller means by -Pskip-native=ddprof-lib
// -- fuzzing is part of ddprof-lib's native surface, not a project a
// caller names on its own, so the check goes through the parent
// project's identity instead of this one's.
val nativeSkipped = PlatformUtils.isNativeSkipped(project.parent ?: project)

// Master fuzz task
val fuzzAll = project.tasks.register("fuzz") {
onlyIf {
hasFuzzer &&
!project.hasProperty("skip-tests") &&
!project.hasProperty("skip-native") &&
!nativeSkipped &&
!project.hasProperty("skip-fuzz")
}
group = "verification"
Expand All @@ -75,7 +81,7 @@ class FuzzTargetsPlugin : Plugin<Project> {

// Build-only aggregate: compiles and links all targets without running them
val buildFuzz = project.tasks.register("buildFuzz") {
onlyIf { hasFuzzer && !project.hasProperty("skip-tests") && !project.hasProperty("skip-native") && !project.hasProperty("skip-fuzz") }
onlyIf { hasFuzzer && !project.hasProperty("skip-tests") && !nativeSkipped && !project.hasProperty("skip-fuzz") }
group = "build"
description = "Build all fuzz targets without running them"
}
Expand Down Expand Up @@ -113,7 +119,7 @@ class FuzzTargetsPlugin : Plugin<Project> {
// instead of recompiling the whole profiler per target.
val sharedObjDir = project.file("${project.layout.buildDirectory.get()}/obj/fuzz/_profiler")
val compileProfilerTask = project.tasks.register("compileFuzzProfilerSources", NativeCompileTask::class.java) {
onlyIf { hasFuzzer && !project.hasProperty("skip-tests") && !project.hasProperty("skip-native") && !project.hasProperty("skip-fuzz") }
onlyIf { hasFuzzer && !project.hasProperty("skip-tests") && !nativeSkipped && !project.hasProperty("skip-fuzz") }
group = "build"
description = "Compile the profiler sources shared by all fuzz targets"

Expand Down Expand Up @@ -142,7 +148,7 @@ class FuzzTargetsPlugin : Plugin<Project> {
// Compile task - only compiles this target's own fuzz driver; profiler
// sources come from the shared compileFuzzProfilerSources task.
val compileTask = project.tasks.register("compileFuzz_$fuzzName", NativeCompileTask::class.java) {
onlyIf { hasFuzzer && !project.hasProperty("skip-tests") && !project.hasProperty("skip-native") && !project.hasProperty("skip-fuzz") }
onlyIf { hasFuzzer && !project.hasProperty("skip-tests") && !nativeSkipped && !project.hasProperty("skip-fuzz") }
group = "build"
description = "Compile the fuzz target $fuzzName"

Expand All @@ -155,7 +161,7 @@ class FuzzTargetsPlugin : Plugin<Project> {

// Link task
val linkTask = project.tasks.register("linkFuzz_$fuzzName", NativeLinkExecutableTask::class.java) {
onlyIf { hasFuzzer && !project.hasProperty("skip-tests") && !project.hasProperty("skip-native") && !project.hasProperty("skip-fuzz") }
onlyIf { hasFuzzer && !project.hasProperty("skip-tests") && !nativeSkipped && !project.hasProperty("skip-fuzz") }
dependsOn(compileProfilerTask, compileTask)
group = "build"
description = "Link the fuzz target $fuzzName"
Expand All @@ -171,7 +177,7 @@ class FuzzTargetsPlugin : Plugin<Project> {

// Execute task
val executeTask = project.tasks.register("fuzz_$fuzzName", Exec::class.java) {
onlyIf { hasFuzzer && !project.hasProperty("skip-tests") && !project.hasProperty("skip-native") && !project.hasProperty("skip-fuzz") }
onlyIf { hasFuzzer && !project.hasProperty("skip-tests") && !nativeSkipped && !project.hasProperty("skip-fuzz") }
dependsOn(linkTask)
group = "verification"
description = "Run the fuzz target $fuzzName for $duration seconds"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ class GtestPlugin : Plugin<Project> {

onlyIf {
hasGtest &&
!project.hasProperty("skip-native") &&
!PlatformUtils.isNativeSkipped(project) &&
!project.hasProperty("skip-gtest") &&
PlatformUtils.currentPlatform == Platform.LINUX &&
extension.nativeLibsSourceDir.isPresent &&
Expand Down Expand Up @@ -171,7 +171,7 @@ class GtestPlugin : Plugin<Project> {
onlyIf {
hasGtest &&
!project.hasProperty("skip-tests") &&
!project.hasProperty("skip-native") &&
!PlatformUtils.isNativeSkipped(project) &&
!project.hasProperty("skip-gtest")
}
}
Expand Down
Loading
Loading