Skip to content

Running tests on GitLab on arm64 Linux.#11364

Open
AlexeyKuznetsov-DD wants to merge 31 commits into
masterfrom
alexeyk/arm64-test
Open

Running tests on GitLab on arm64 Linux.#11364
AlexeyKuznetsov-DD wants to merge 31 commits into
masterfrom
alexeyk/arm64-test

Conversation

@AlexeyKuznetsov-DD
Copy link
Copy Markdown
Contributor

@AlexeyKuznetsov-DD AlexeyKuznetsov-DD commented May 13, 2026

What Does This Do

Adds Linux ARM64 CI coverage for

  • base
  • instrumentation
  • latest-dep
  • profiling
  • debugger
  • smoke
  • SSI smoke
  • GraalVM smoke test suites.

It introduces shared host-platform detection and applies ARM64-specific JVM workarounds such as disabling CDS and allowing ByteBuddy self-attach.

It also updates or skips tests that depend on unavailable ARM64 images/native binaries, including MS SQL Server, WebSphere, old Netty epoll, protobuf 3.0, Restlet parallel requests, and selected crash-tracking cases.

Motivation

Enable dd-trace-java test suites to run on Linux ARM64 runners and make platform-specific failures explicit.

Additional Notes

ARM64 GitLab jobs are manual and allowed to fail for now. Will became part of MQ and/or master pipelines in follow up PRs.

@AlexeyKuznetsov-DD AlexeyKuznetsov-DD self-assigned this May 13, 2026
@AlexeyKuznetsov-DD AlexeyKuznetsov-DD added type: enhancement Enhancements and improvements tag: no release notes Changes to exclude from release notes comp: tooling Build & Tooling labels May 13, 2026
@datadog-prod-us1-3

This comment has been minimized.

@AlexeyKuznetsov-DD AlexeyKuznetsov-DD marked this pull request as ready for review May 21, 2026 20:47
@AlexeyKuznetsov-DD AlexeyKuznetsov-DD requested review from a team as code owners May 21, 2026 20:47
@AlexeyKuznetsov-DD AlexeyKuznetsov-DD requested a review from a team as a code owner May 21, 2026 20:47
@AlexeyKuznetsov-DD AlexeyKuznetsov-DD requested review from amarziali, dudikeleti and vandonr and removed request for a team May 21, 2026 20:47
Copy link
Copy Markdown
Contributor

@amarziali amarziali left a comment

Choose a reason for hiding this comment

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

Another approach can also be to just run the smoke tests only on arm64 that will be perhaps enough

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_☺";
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.

why this has been changed?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I restored it as it was in master, because it was wrong assumption that arm64 failed on non-ASCII source code, it was a missing package in base docker image that we are using on CI.

*
* @return @{@code true} if architecture is arm64, {@code false} otherwise.
*/
public static boolean isArm64() {
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.

this should stay inside architecture more than under operatingSystem

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Refactored.


if (OperatingSystem.isLinux() && OperatingSystem.isArm64()) {
// Disable CDS to avoid SIGSEGVs on Linux arm64.
baseCommand.add(1, "-Xshare:off");
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.

Any reason we don't move this to command below, which is already mutable? AFAICT baseCommand doesn't escape anywhere else, it's just fed into command below.

That way the baseCommand doesn't need to be turned into an ArrayList

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed!

@AlexeyKuznetsov-DD AlexeyKuznetsov-DD added the tag: ai generated Largely based on code generated by an AI or LLM label May 22, 2026
@dd-octo-sts
Copy link
Copy Markdown
Contributor

dd-octo-sts Bot commented May 22, 2026

🟢 Java Benchmark SLOs — All performance SLOs passed

Suite Status
Startup 🟢 pass

SLO thresholds are defined here based on automatically generated metrics. A warning is raised when results are within 5% of the threshold.

PR vs. master results

Startup Time

Scenario This PR master Change
insecure-bank / iast 13,963 ms 14,042 ms -0.6%
insecure-bank / tracing 12,893 ms 13,111 ms -1.7%
petclinic / appsec 17,186 ms 16,859 ms +1.9%
petclinic / iast 17,026 ms 17,207 ms -1.1%
petclinic / profiling 17,243 ms 17,051 ms +1.1%
petclinic / tracing 16,279 ms 16,509 ms -1.4%

Commit: f3162e46 · CI Pipeline · Benchmarking Platform UI


Load and DaCapo benchmarks can be triggered manually in the GitLab pipeline. Results will appear in the Benchmarking Platform UI after completion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp: tooling Build & Tooling tag: ai generated Largely based on code generated by an AI or LLM tag: no release notes Changes to exclude from release notes type: enhancement Enhancements and improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants