Skip to content

Commit eedf1a5

Browse files
Fixed arm64 support.
1 parent fc166ca commit eedf1a5

7 files changed

Lines changed: 33 additions & 29 deletions

File tree

.gitlab-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -999,7 +999,7 @@ test_inst_arm64:
999999
GRADLE_TARGET: ":instrumentationTest"
10001000
parallel:
10011001
matrix:
1002-
- CI_SPLIT: [ "1/8", "2/8", "3/8", "4/8", "5/8", "6/8", "7/8", "8/8" ]
1002+
- CI_SPLIT: [ "1/4", "2/4", "3/4", "4/4" ]
10031003

10041004
test_inst_latest:
10051005
extends: .test_job_with_test_agent

components/environment/src/main/java/datadog/environment/OperatingSystem.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package datadog.environment;
22

3+
import static datadog.environment.OperatingSystem.Architecture.ARM64;
34
import static datadog.environment.OperatingSystem.Type.LINUX;
45
import static datadog.environment.OperatingSystem.Type.MACOS;
56
import static datadog.environment.OperatingSystem.Type.WINDOWS;
@@ -25,6 +26,15 @@ public final class OperatingSystem {
2526

2627
private OperatingSystem() {}
2728

29+
/**
30+
* Checks whether the architecture is arm64.
31+
*
32+
* @return @{@code true} if architecture is arm64, {@code false} otherwise.
33+
*/
34+
public static boolean isArm64() {
35+
return ARCHITECTURE == ARM64;
36+
}
37+
2838
/**
2939
* Checks whether the operating system is Linux based.
3040
*

dd-java-agent/agent-crashtracking/src/test/java/datadog/crashtracking/buildid/BuildIdExtractorIntegrationTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package datadog.crashtracking.buildid;
22

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

144143
ElfBuildIdExtractor extractor = new ElfBuildIdExtractor();

dd-java-agent/agent-profiling/profiling-controller/src/main/java/com/datadog/profiling/controller/EnvironmentChecker.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package com.datadog.profiling.controller;
22

3-
import static datadog.environment.OperatingSystem.Architecture.ARM64;
4-
53
import datadog.environment.JavaVirtualMachine;
64
import datadog.environment.OperatingSystem;
75
import datadog.environment.SystemProperties;
@@ -243,11 +241,7 @@ private static boolean extractSoFromJar(Path target, StringBuilder sb) throws Ex
243241
.filter(e -> e.getName().contains("libjavaProfiler.so"))
244242
.filter(
245243
e ->
246-
e.getName()
247-
.contains(
248-
OperatingSystem.architecture() == ARM64
249-
? "/linux-arm64/"
250-
: "/linux-x64/")
244+
e.getName().contains(OperatingSystem.isArm64() ? "/linux-arm64/" : "/linux-x64/")
251245
&& (!OperatingSystem.isMusl() || e.getName().contains("-musl")))
252246
.findFirst()
253247
.map(

dd-java-agent/instrumentation/aerospike-4.0/src/test/groovy/datadog/trace/instrumentation/aerospike4/AerospikeBaseTest.groovy

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package datadog.trace.instrumentation.aerospike4
22

3+
import static datadog.environment.OperatingSystem.arm64
4+
import static datadog.trace.agent.test.utils.PortUtils.waitForPortToOpen
5+
import static java.util.concurrent.TimeUnit.SECONDS
6+
import static org.testcontainers.containers.wait.strategy.Wait.forLogMessage
37

48
import datadog.trace.agent.test.asserts.TraceAssert
59
import datadog.trace.agent.test.naming.VersionedNamingTestBase
@@ -9,11 +13,9 @@ import datadog.trace.core.DDSpan
913
import org.testcontainers.containers.GenericContainer
1014
import spock.lang.Shared
1115

12-
import static datadog.trace.agent.test.utils.PortUtils.waitForPortToOpen
13-
import static java.util.concurrent.TimeUnit.SECONDS
14-
import static org.testcontainers.containers.wait.strategy.Wait.forLogMessage
15-
1616
abstract class AerospikeBaseTest extends VersionedNamingTestBase {
17+
// arm64 supported only since `ce-6.2.0.2`:
18+
private static final String AEROSPIKE_IMAGE = isArm64() ? 'aerospike:ce-6.2.0.2' : 'aerospike:5.5.0.9'
1719

1820
@Shared
1921
def aerospike
@@ -25,7 +27,7 @@ abstract class AerospikeBaseTest extends VersionedNamingTestBase {
2527
int aerospikePort = 3000
2628

2729
def setup() throws Exception {
28-
aerospike = new GenericContainer('aerospike:5.5.0.9')
30+
aerospike = new GenericContainer(AEROSPIKE_IMAGE)
2931
.withExposedPorts(3000)
3032
.waitingFor(forLogMessage(".*heartbeat-received.*\\n", 1))
3133

dd-java-agent/instrumentation/google-pubsub-1.116/src/test/groovy/PubSubTest.groovy

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
import static datadog.trace.agent.test.utils.TraceUtils.basicSpan
32

43
import com.google.api.gax.core.NoCredentialsProvider
@@ -34,13 +33,12 @@ import datadog.trace.core.datastreams.StatsGroup
3433
import datadog.trace.instrumentation.grpc.client.GrpcClientDecorator
3534
import io.grpc.ManagedChannel
3635
import io.grpc.ManagedChannelBuilder
36+
import java.nio.charset.StandardCharsets
37+
import java.util.concurrent.CountDownLatch
3738
import org.testcontainers.containers.PubSubEmulatorContainer
3839
import org.testcontainers.utility.DockerImageName
3940
import spock.lang.Shared
4041

41-
import java.nio.charset.StandardCharsets
42-
import java.util.concurrent.CountDownLatch
43-
4442
abstract class PubSubTest extends VersionedNamingTestBase {
4543
private static final String PROJECT_ID = "dd-trace-java"
4644

@@ -97,7 +95,7 @@ abstract class PubSubTest extends VersionedNamingTestBase {
9795
}
9896

9997
def setupSpec() {
100-
emulator = new PubSubEmulatorContainer(DockerImageName.parse("gcr.io/google.com/cloudsdktool/cloud-sdk:495.0.0-emulators"))
98+
emulator = new PubSubEmulatorContainer(DockerImageName.parse("gcr.io/google.com/cloudsdktool/google-cloud-cli:495.0.0-emulators"))
10199
emulator.start()
102100
channel = ManagedChannelBuilder.forTarget(emulator.getEmulatorEndpoint()).usePlaintext().build()
103101
transportChannelProvider = FixedTransportChannelProvider.create(GrpcTransportChannel.create(channel))

dd-java-agent/instrumentation/java/java-concurrent/java-concurrent-1.8/src/test/groovy/executor/NettyExecutorInstrumentationTest.groovy

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package executor
22

3+
4+
import static org.junit.jupiter.api.Assumptions.assumeTrue
5+
6+
import datadog.environment.OperatingSystem
37
import datadog.trace.agent.test.InstrumentationSpecification
48
import datadog.trace.api.Trace
59
import datadog.trace.core.DDSpan
@@ -8,24 +12,21 @@ import io.netty.channel.epoll.EpollEventLoopGroup
812
import io.netty.channel.local.LocalEventLoopGroup
913
import io.netty.channel.nio.NioEventLoopGroup
1014
import io.netty.util.concurrent.DefaultEventExecutorGroup
11-
import runnable.JavaAsyncChild
12-
import spock.lang.Shared
13-
1415
import java.lang.reflect.InvocationTargetException
1516
import java.util.concurrent.Callable
1617
import java.util.concurrent.Future
1718
import java.util.concurrent.RejectedExecutionException
1819
import java.util.concurrent.TimeUnit
19-
20-
import static org.junit.jupiter.api.Assumptions.assumeTrue
20+
import runnable.JavaAsyncChild
21+
import spock.lang.Shared
2122

2223
class NettyExecutorInstrumentationTest extends InstrumentationSpecification {
23-
2424
@Shared
25-
boolean isLinux = System.getProperty("os.name").toLowerCase().contains("linux")
26-
25+
boolean isLinux = OperatingSystem.isLinux()
26+
@Shared
27+
boolean isArm64 = OperatingSystem.isArm64() // TODO: check if arm64 can be supported too.
2728
@Shared
28-
EpollEventLoopGroup epollEventLoopGroup = isLinux ? new EpollEventLoopGroup(4) : null
29+
EpollEventLoopGroup epollEventLoopGroup = isLinux && !isArm64 ? new EpollEventLoopGroup(4) : null
2930
@Shared
3031
DefaultEventExecutorGroup defaultEventExecutorGroup = new DefaultEventExecutorGroup(4)
3132
@Shared

0 commit comments

Comments
 (0)