Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
68768ad
Initial support for running tests on CI under Windows OS.
AlexeyKuznetsov-DD Mar 27, 2026
855700a
Code review.
AlexeyKuznetsov-DD Mar 27, 2026
3c3d311
Fixed build.
AlexeyKuznetsov-DD Mar 27, 2026
eaf7d2c
Other JDKs added
AlexeyKuznetsov-DD Mar 27, 2026
0e25abd
Added JDK 25 and updated other JDKs to latest.
AlexeyKuznetsov-DD Mar 27, 2026
073fff8
Merge branch 'master' into alexeyk/test-base-windows
AlexeyKuznetsov-DD Mar 30, 2026
c17176c
ARM64 POC test.
AlexeyKuznetsov-DD Mar 30, 2026
75b51ee
Missing git
AlexeyKuznetsov-DD Mar 30, 2026
4f693f1
WIP
AlexeyKuznetsov-DD Mar 31, 2026
c44f94a
Attempt to fix container setup
AlexeyKuznetsov-DD Mar 31, 2026
ca702f5
Refactor fix by using charsets explicitly.
AlexeyKuznetsov-DD Mar 31, 2026
df8d6c4
Fixed tests for arm64
AlexeyKuznetsov-DD Mar 31, 2026
e89fa15
wip
AlexeyKuznetsov-DD Apr 1, 2026
927fd0a
Merge branch 'master' into alexeyk/test-base-windows
AlexeyKuznetsov-DD Apr 1, 2026
df99d3c
wip
AlexeyKuznetsov-DD Apr 1, 2026
471763d
wip
AlexeyKuznetsov-DD Apr 1, 2026
81d7635
Fixed issues with git and test.
AlexeyKuznetsov-DD Apr 1, 2026
336672d
Merge branch 'master' into alexeyk/test-base-windows
AlexeyKuznetsov-DD Apr 1, 2026
82f4c2d
Fixed `arm64` test failures and clean up related code.
AlexeyKuznetsov-DD Apr 1, 2026
0d501a8
Minor comment.
AlexeyKuznetsov-DD Apr 1, 2026
80de346
wip
AlexeyKuznetsov-DD Apr 1, 2026
a6931d1
Merge branch 'master' into alexeyk/test-base-arm64-fixes
AlexeyKuznetsov-DD Apr 1, 2026
70ca196
Merge branch 'master' into alexeyk/test-base-windows
AlexeyKuznetsov-DD Apr 1, 2026
23da3ec
Fixed review notes.
AlexeyKuznetsov-DD Apr 1, 2026
2f7d96c
Fixed review notes.
AlexeyKuznetsov-DD Apr 1, 2026
39d5106
Merge branch 'alexeyk/test-base-arm64-fixes' into alexeyk/test-base-w…
AlexeyKuznetsov-DD Apr 1, 2026
90edeb4
Attempt to run test_inst on arm64
AlexeyKuznetsov-DD Apr 1, 2026
fc166ca
Fixed UTF const.
AlexeyKuznetsov-DD Apr 1, 2026
eedf1a5
Fixed arm64 support.
AlexeyKuznetsov-DD Apr 1, 2026
b97b0fb
Fixed failed tests.
AlexeyKuznetsov-DD Apr 2, 2026
7d5709d
Fixed failed tests.
AlexeyKuznetsov-DD Apr 5, 2026
840fcdd
Merge remote-tracking branch 'origin/master' into alexeyk/test-base-w…
AlexeyKuznetsov-DD Apr 16, 2026
c4a5684
Merge branch 'master' into alexeyk/test-base-windows
AlexeyKuznetsov-DD Apr 16, 2026
4698499
Ignore SqlServer on arm46 Linux
AlexeyKuznetsov-DD Apr 17, 2026
482ade9
Ignore protobuf on arm64 Linux.
AlexeyKuznetsov-DD Apr 17, 2026
1d51baf
Ignore aerospike on arm64 Linux.
AlexeyKuznetsov-DD Apr 17, 2026
9da667d
Codex generated patch for failed test under arm64.
AlexeyKuznetsov-DD Apr 17, 2026
620358a
Merge branch 'master' into alexeyk/test-base-windows
AlexeyKuznetsov-DD Apr 17, 2026
205b403
Fixed aerospike tests to run under arm64.
AlexeyKuznetsov-DD Apr 17, 2026
c373e7b
skip openai-java on arm64
AlexeyKuznetsov-DD Apr 17, 2026
e5de02b
Merge branch 'master' into alexeyk/test-base-windows
AlexeyKuznetsov-DD Apr 17, 2026
a10452c
fixes for arm64
AlexeyKuznetsov-DD Apr 17, 2026
58dceac
Merge branch 'master' into alexeyk/test-base-windows
AlexeyKuznetsov-DD Apr 20, 2026
acf62e8
Merge remote-tracking branch 'origin/master' into alexeyk/test-base-w…
AlexeyKuznetsov-DD Apr 23, 2026
fbfc321
Added all other tests on arm64
AlexeyKuznetsov-DD Apr 23, 2026
0501037
Workaround
AlexeyKuznetsov-DD Apr 24, 2026
3d785c8
Attempt to patch mvnStage
AlexeyKuznetsov-DD Apr 24, 2026
be3a791
Fixed build
AlexeyKuznetsov-DD Apr 24, 2026
292c979
Fixed build.
AlexeyKuznetsov-DD Apr 24, 2026
5a6b4e5
Merge branch 'master' into alexeyk/test-base-windows
AlexeyKuznetsov-DD Apr 24, 2026
c7f5769
Merge branch 'master' into alexeyk/test-base-windows
AlexeyKuznetsov-DD May 1, 2026
9c5f2d4
Merge branch 'master' into alexeyk/test-base-windows
AlexeyKuznetsov-DD May 4, 2026
45026f5
UTF-8 fixes
AlexeyKuznetsov-DD May 4, 2026
dd60554
Fixed missing import
AlexeyKuznetsov-DD May 4, 2026
be67940
Fixed UTF-8
AlexeyKuznetsov-DD May 4, 2026
d7c08af
Fixed UTF-8.
AlexeyKuznetsov-DD May 4, 2026
da7f603
Merge branch 'master' into alexeyk/test-base-windows
AlexeyKuznetsov-DD May 4, 2026
d50dfa0
Pre-prod state
AlexeyKuznetsov-DD May 4, 2026
df62645
Gradle dance for arm64
AlexeyKuznetsov-DD May 4, 2026
1773b7e
separate stage for arm64
AlexeyKuznetsov-DD May 4, 2026
ae5a9ff
Ignore WebSphereJmx on arm64
AlexeyKuznetsov-DD May 4, 2026
af21f0f
Collect crashes
AlexeyKuznetsov-DD May 4, 2026
d14a1ff
Reworked aerospike fix
AlexeyKuznetsov-DD May 5, 2026
89bfaf8
Tweak K8s
AlexeyKuznetsov-DD May 5, 2026
728ec0c
Collect reports for arm64
AlexeyKuznetsov-DD May 5, 2026
209e535
Updated aerospice image to support arm64
AlexeyKuznetsov-DD May 5, 2026
456204d
Attempt to avoid crashes
AlexeyKuznetsov-DD May 5, 2026
612c23d
Fix crashed for smoke tests
AlexeyKuznetsov-DD May 5, 2026
c76e1c1
Merge branch 'master' into alexeyk/test-base-windows
AlexeyKuznetsov-DD May 5, 2026
27d27b6
Use signed image.
AlexeyKuznetsov-DD May 5, 2026
f13d760
Merge branch 'master' into alexeyk/test-base-windows
AlexeyKuznetsov-DD May 5, 2026
cbf53f6
revert not needed changes
AlexeyKuznetsov-DD May 6, 2026
32e4d3e
Attemp to fix crashes on arm64-temurin
AlexeyKuznetsov-DD May 6, 2026
0f7375a
Fixed test
AlexeyKuznetsov-DD May 6, 2026
ff2bb0d
Fixed UTF-8
AlexeyKuznetsov-DD May 6, 2026
de1e2bc
Reworked -Xshare:off and UTF-8 fixes
AlexeyKuznetsov-DD May 6, 2026
7832081
Merge branch 'master' into alexeyk/test-base-windows
AlexeyKuznetsov-DD May 6, 2026
930a7c4
Applied byte-buddy fix back
AlexeyKuznetsov-DD May 6, 2026
d786262
Merge branch 'master' into alexeyk/test-base-windows
AlexeyKuznetsov-DD May 6, 2026
9c75906
Fix for forked JVM on arm64
AlexeyKuznetsov-DD May 6, 2026
b17a4fa
Fix for deamon Gradle workers used to compile Java and Groovy code
AlexeyKuznetsov-DD May 6, 2026
17f5dac
Debug MVNW
AlexeyKuznetsov-DD May 6, 2026
1318d4d
Debug mvnw
AlexeyKuznetsov-DD May 6, 2026
89b37fc
Cleanup
AlexeyKuznetsov-DD May 6, 2026
80eea51
Merge branch 'master' into alexeyk/test-base-windows
AlexeyKuznetsov-DD May 7, 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
193 changes: 193 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ stages:
- benchmarks
- macrobenchmarks
- tests
- tests-arm64
- test-summary
- exploration-tests
- ci-visibility-tests
Expand All @@ -54,6 +55,8 @@ variables:
GRADLE_VERSION: "8.14.4" # must match gradle-wrapper.properties
MAVEN_REPOSITORY_PROXY: "https://depot-read-api-java.us1.ddbuild.io/magicmirror/magicmirror/@current/"
GRADLE_PLUGIN_PROXY: "https://depot-read-api-java.us1.ddbuild.io/magicmirror/magicmirror/@current/"
ARM64_BUILDER_IMAGE_REPO: "registry.ddbuild.io/images/mirror/dd-trace-java-docker-build"
ARM64_BUILDER_IMAGE_TAG: "alexeyk_arm64-test-arm64-base"
BUILDER_IMAGE_REPO: "registry.ddbuild.io/images/mirror/dd-trace-java-docker-build" # images are pinned in images/mirror.lock.yaml in the DataDog/images repo
BUILDER_IMAGE_VERSION_PREFIX: "ci-" # use either an empty string (e.g. "") for latest images or a version followed by a hyphen (e.g. "ci-" or "123_merge-")
REPO_NOTIFICATION_CHANNEL: "#apm-java-escalations"
Expand Down Expand Up @@ -674,6 +677,123 @@ muzzle-dep-report:
- scheduler_failure
- data_integrity_failure

.test_job_arm64:
image: ${ARM64_BUILDER_IMAGE_REPO}:${ARM64_BUILDER_IMAGE_TAG}
tags: [ "docker-in-docker:arm64" ]
stage: tests-arm64
needs: []
variables:
# arm64 docker image installs only these JVMs; override the global default regex.
DEFAULT_TEST_JVMS: /^(8|11|17|21|25)$/
GRADLE_PARAMS: "-PskipFlakyTests"
GRADLE_WORKERS: 6
GRADLE_MEMORY_MIN: 1G
GRADLE_MEMORY_MAX: 4G
# Sized for the arm64 microvm runner pool (smaller than amd64).
# Observed peak on equivalent amd64 workload: ~14.5 GB / ~1.5 vCPU avg.
# Bump back up if jobs OOM or we see CPU throttling in cgroup-info.
KUBERNETES_CPU_REQUEST: 6
KUBERNETES_MEMORY_REQUEST: 12Gi
KUBERNETES_MEMORY_LIMIT: 16Gi
TESTCONTAINERS_CHECKS_DISABLE: "true"
TESTCONTAINERS_RYUK_DISABLED: "true"
TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX: "registry.ddbuild.io/images/mirror/"
JETTY_AVAILABLE_PROCESSORS: 4
GIT_SUBMODULE_STRATEGY: normal
GIT_SUBMODULE_DEPTH: 1
rules:
- if: $testJvm =~ $DEFAULT_TEST_JVMS
when: manual
allow_failure: true
cache:
- key: dependency-$CACHE_TYPE
paths:
- .gradle/wrapper
- .gradle/caches
- .gradle/notifications
- .mvn/caches
policy: pull
fallback_keys:
- dependency-base
- dependency-lib
unprotect: true
before_script:
- git config --global --add safe.directory "$CI_PROJECT_DIR"
- export ORG_GRADLE_PROJECT_mavenRepositoryProxy=$MAVEN_REPOSITORY_PROXY
- export ORG_GRADLE_PROJECT_gradlePluginProxy=$GRADLE_PLUGIN_PROXY
- |
JAVA_HOMES=$(env | grep -E '^JAVA_[A-Z0-9_]+_HOME=' | sed 's/=.*//' | paste -sd,)
cat >> gradle.properties <<EOF
org.gradle.java.installations.auto-detect=false
org.gradle.java.installations.auto-download=false
org.gradle.java.installations.fromEnv=$JAVA_HOMES
EOF
- mkdir -p .gradle .mvn/caches
# The `dependency-$CACHE_TYPE` cache is populated by amd64's `populate_dep_cache`
# (running as root). arm64 runs as `non-root-user`, so when Gradle does `chmod 700`
# on the restored .gradle directory it fails with EPERM. Rewrite the tree under
# the runner user's ownership before invoking Gradle. Mirrors the dance in
# `.gradle_build` (.gitlab-ci.yml:239-247).
- cp -r .gradle .gradle-copy
- rm -rf .gradle
- mv .gradle-copy .gradle
- export GRADLE_USER_HOME=$(pwd)/.gradle
- sed -i "s|https://repo.maven.apache.org/maven2/|$MAVEN_REPOSITORY_PROXY|g" .mvn/wrapper/maven-wrapper.properties
- *normalize_node_index
- *prepare_test_env
- export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xshare:off -Xms$GRADLE_MEMORY_MIN -Xmx$GRADLE_MEMORY_MAX -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -Djava.util.prefs.userRoot=/tmp/.java/.userPrefs-${CI_JOB_ID}' -Ddatadog.forkedMinHeapSize=128M -Ddatadog.forkedMaxHeapSize=1024M"
- export GRADLE_ARGS="--build-cache --stacktrace --no-daemon --parallel --max-workers=$GRADLE_WORKERS"
# Disable CDS (Class Data Sharing) for the Gradle daemon.
# Temurin 11 on the arm64 microvm runner SIGSEGVs in ClassLoaderData::add_handle
# while restoring archived class mirrors from classes.jsa during JVM startup;
# -Xshare:off bypasses the crashing path.
- ./gradlew --version
script:
- ./gradlew $GRADLE_TARGET $GRADLE_PARAMS -PtestJvm=$testJvm -Pslot=$CI_NODE_INDEX/$CI_NODE_TOTAL $GRADLE_ARGS --continue
after_script:
- *cgroup_info
- gitlab_section_start "collect-reports" "Collecting reports"
- .gitlab/collect_reports.sh
- gitlab_section_end "collect-reports"
artifacts:
when: always
paths:
- ./reports.tar
- ./profiles.tar
- ./results
- './test_counts_*.json'
- '.gradle/daemon/*/*.out.log'
reports:
junit: results/*.xml
retry:
max: 2
when:
- unknown_failure
- stuck_or_timeout_failure
- runner_system_failure
- unmet_prerequisites
- scheduler_failure
- data_integrity_failure

.test_job_arm64_with_test_agent:
extends: .test_job_arm64
variables:
CI_USE_TEST_AGENT: "true"
CI_AGENT_HOST: local-agent
services:
- name: registry.ddbuild.io/images/mirror/dd-apm-test-agent/ddapm-test-agent:v1.44.0
alias: local-agent
variables:
LOG_LEVEL: "DEBUG"
TRACE_LANGUAGE: "java"
DD_SUPPRESS_TRACE_PARSE_ERRORS: "true"
DD_POOL_TRACE_CHECK_FAILURES: "true"
DD_DISABLE_ERROR_RESPONSES: "true"
ENABLED_CHECKS: "trace_content_length,trace_stall,meta_tracer_version_header,trace_count_header,trace_peer_service,trace_dd_service"
script:
- !reference [.test_job_arm64, script]
- .gitlab/check_test_agent_results.sh

.test_job_with_test_agent:
extends: .test_job
variables:
Expand Down Expand Up @@ -721,6 +841,14 @@ test_base:
- if [ "$testJvm" == "8" ]; then export GRADLE_PARAMS="-PskipFlakyTests -PcheckCoverage"; fi
- !reference [.test_job, script]

test_base_arm64:
extends: .test_job_arm64
variables:
GRADLE_TARGET: ":baseTest"
CACHE_TYPE: "base"
parallel:
matrix: *test_matrix_4

test_inst:
extends: .test_job_with_test_agent
variables:
Expand All @@ -729,6 +857,14 @@ test_inst:
parallel:
matrix: *test_matrix_8

test_inst_arm64:
extends: .test_job_arm64_with_test_agent
variables:
GRADLE_TARGET: ":instrumentationTest"
CACHE_TYPE: "inst"
parallel:
matrix: *test_matrix_8

test_inst_latest:
extends: .test_job_with_test_agent
variables:
Expand All @@ -741,6 +877,18 @@ test_inst_latest:
# This emulates "parallel" by including it in the matrix
CI_SPLIT: [ "1/6", "2/6", "3/6", "4/6", "5/6", "6/6"]

test_inst_latest_arm64:
extends: .test_job_arm64_with_test_agent
variables:
GRADLE_TARGET: ":instrumentationLatestDepTest"
CACHE_TYPE: "latestdep"
parallel:
matrix:
- testJvm: ["8", "17", "21", "25"] # the latest "tip" version is LTS v25
# Gitlab doesn't support "parallel" and "parallel:matrix" at the same time
# This emulates "parallel" by including it in the matrix
CI_SPLIT: [ "1/6", "2/6", "3/6", "4/6", "5/6", "6/6"]

test_flaky:
extends: .test_job_with_test_agent
variables:
Expand Down Expand Up @@ -781,6 +929,14 @@ test_profiling:
parallel:
matrix: *test_matrix

test_profiling_arm64:
extends: .test_job_arm64
variables:
GRADLE_TARGET: ":profilingTest"
CACHE_TYPE: "profiling"
parallel:
matrix: *test_matrix

# specific jvms list for debugger project because J9-based JVMs have issues with local vars
# so need to test at least against one J9-based JVM
test_debugger:
Expand All @@ -792,6 +948,14 @@ test_debugger:
parallel:
matrix: *test_matrix

test_debugger_arm64:
extends: .test_job_arm64
variables:
GRADLE_TARGET: ":debuggerTest"
CACHE_TYPE: "base"
parallel:
matrix: *test_matrix

test_smoke:
extends: .test_job
variables:
Expand All @@ -801,6 +965,15 @@ test_smoke:
parallel:
matrix: *test_matrix_8

test_smoke_arm64:
extends: .test_job_arm64
variables:
GRADLE_TARGET: "stageMainDist :smokeTest"
GRADLE_PARAMS: "-PskipFlakyTests"
CACHE_TYPE: "smoke"
parallel:
matrix: *test_matrix_8

test_ssi_smoke:
extends: .test_job
rules:
Expand All @@ -818,6 +991,16 @@ test_ssi_smoke:
parallel:
matrix: *test_matrix_8

test_ssi_smoke_arm64:
extends: .test_job_arm64
variables:
GRADLE_TARGET: "stageMainDist :smokeTest"
CACHE_TYPE: "smoke"
DD_INJECT_FORCE: "true"
DD_INJECTION_ENABLED: "tracer"
parallel:
matrix: *test_matrix_8

test_smoke_graalvm:
extends: .test_job
tags: [ "arch:amd64" ]
Expand All @@ -830,6 +1013,16 @@ test_smoke_graalvm:
matrix:
- testJvm: ["graalvm17", "graalvm21", "graalvm25"]

test_smoke_graalvm_arm64:
extends: .test_job_arm64
variables:
GRADLE_TARGET: "stageMainDist :dd-smoke-test:spring-boot-3.0-native:test"
CACHE_TYPE: "smoke"
CI_NO_SPLIT: "true"
parallel:
matrix:
- testJvm: ["graalvm21"]

test_smoke_semeru8_debugger:
extends: .test_job
tags: [ "arch:amd64" ]
Expand Down
20 changes: 20 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,14 @@ allprojects {
dependsOn(tasks.withType<AbstractCompile>())
}

// Temurin 11/21 on Linux arm64 SIGSEGVs in SystemDictionary::define_instance_class
// during CDS shared-class restore. GRADLE_OPTS / org.gradle.jvmargs only reaches the
// Gradle daemon, so every forked JVM (Test executor, JavaCompile worker daemon when
// the toolchain differs from the daemon's JDK) must disable CDS on its own.
val os = System.getProperty("os.name").lowercase()
val arch = System.getProperty("os.arch").lowercase()
val isLinuxArm64 = os.contains("linux") && (arch.contains("aarch64") || arch.contains("arm64"))

tasks.configureEach {
if (this is JavaForkOptions) {
maxHeapSize = System.getProperty("datadog.forkedMaxHeapSize")
Expand All @@ -91,6 +99,18 @@ allprojects {
"-XX:+HeapDumpOnOutOfMemoryError",
"-XX:HeapDumpPath=/tmp"
)
if (isLinuxArm64) {
jvmArgs("-Xshare:off")
}
}
}

if (isLinuxArm64) {
tasks.withType<JavaCompile>().configureEach {
options.forkOptions.jvmArgs?.add("-Xshare:off")
}
tasks.withType<GroovyCompile>().configureEach {
groovyOptions.forkOptions.jvmArgs?.add("-Xshare:off")
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import datadog.gradle.plugin.testJvmConstraints.TestJvmConstraintsExtension.Comp
import datadog.gradle.plugin.testJvmConstraints.TestJvmSpec
import datadog.gradle.plugin.testJvmConstraints.isJavaVersionAllowed
import datadog.gradle.plugin.testJvmConstraints.isTestJvmAllowed
import java.util.Locale.getDefault

plugins {
java
Expand Down Expand Up @@ -79,6 +80,19 @@ private fun Test.configureTestJvm(extension: TestJvmConstraintsExtension) {
),
extension.allowReflectiveAccessToJdk
)

// Fix for arm64 Linux for ByteBuddy error:
// "Could not self-attach to current VM using external process"
val os = System.getProperty("os.name").lowercase(getDefault())
val arch = System.getProperty("os.arch").lowercase(getDefault())
val arm64 = arch.contains("aarch64") || arch.contains("arm64")

if (os.contains("linux") && arm64) {
conditionalJvmArgs(
JavaVersion.VERSION_1_9,
listOf("-Djdk.attach.allowAttachSelf=true")
)
}
Comment on lines +90 to +95
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question: That looks odd to have to do that only for ARM architecture ?

}

// Jacoco plugin is not applied on every project
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,7 @@
import org.msgpack.core.MessageUnpacker;

public class MsgPackWriterTest {
// Explicit escapes for non-ASCII chars to make test independent of container settings.
private static final String NON_ASCII_STRING = "foob\u00E1r_\u263a"; // foobár_☺
private static final String NON_ASCII_STRING = "foobár_☺";
private static final byte[] NON_ASCII_BYTES = NON_ASCII_STRING.getBytes(UTF_8);
private static final int NON_ASCII_BUFFER_CAPACITY = NON_ASCII_BYTES.length + 1;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package datadog.environment;

import static datadog.environment.OperatingSystem.Architecture.ARM64;
import static datadog.environment.OperatingSystem.Type.LINUX;
import static datadog.environment.OperatingSystem.Type.MACOS;
import static datadog.environment.OperatingSystem.Type.WINDOWS;
Expand All @@ -25,6 +26,15 @@ public final class OperatingSystem {

private OperatingSystem() {}

/**
* Checks whether the architecture is arm64.
*
* @return @{@code true} if architecture is arm64, {@code false} otherwise.
*/
public static boolean isArm64() {
return ARCHITECTURE == ARM64;
}

/**
* Checks whether the operating system is Linux based.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -215,8 +215,7 @@ void testStringEscaping() {
assertEquals("\n", reader.nextString());
assertEquals("\r", reader.nextString());
assertEquals("\t", reader.nextString());
// Explicit escape for non-ASCII `É` to make test independent of container settings.
assertEquals("\u00C9", reader.nextString());
assertEquals("É", reader.nextString());
reader.endArray();
} catch (IOException e) {
fail("Failed to read escaped JSON strings", e);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package datadog.crashtracking.buildid;

import static datadog.environment.OperatingSystem.Architecture.ARM64;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
Expand Down Expand Up @@ -138,7 +137,7 @@ private static Stream<Arguments> elfBinaries() {
@MethodSource("elfBinaries")
void testElfBuildIdExtraction(String containerPath, String description) throws Exception {
// TODO: check if arm64 can be supported too.
assumeFalse(OperatingSystem.architecture() == ARM64, "Skipping for arm64");
assumeFalse(OperatingSystem.isArm64(), "Skipping for arm64");
Path localBinary = copyFromContainer(linuxContainer, containerPath);

ElfBuildIdExtractor extractor = new ElfBuildIdExtractor();
Expand Down
Loading