Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.awaitility.Awaitility.await;
import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assumptions.assumeFalse;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
Expand All @@ -36,6 +37,7 @@
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.Appender;
import datadog.environment.JavaVirtualMachine;
import datadog.trace.api.profiling.RecordingData;
import datadog.trace.api.profiling.RecordingDataListener;
import datadog.trace.bootstrap.config.provider.ConfigProvider;
Expand Down Expand Up @@ -87,6 +89,12 @@ public class ProfilingSystemTest {
@SuppressWarnings("unchecked")
@BeforeEach
public void setup() throws Exception {
assumeFalse(
JavaVirtualMachine.isOracleJDK8(),
"Oracle JDK 1.8 did not merge the fix in JDK-8058322, leading to the JVM failing to correctly "
+ "extract method parameters without args, when the code is compiled on a later JDK (targeting 8). "
+ "This can manifest when creating mocks.");

when(controller.createRecording(ProfilingSystem.RECORDING_NAME, context)).thenReturn(recording);
when(threadLocalRandom.nextInt(eq(1), anyInt())).thenReturn(1);
when(recordingData.getEnd()).thenAnswer(mockInvocation -> Instant.now());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import static org.junit.platform.engine.discovery.DiscoverySelectors.selectClass

import datadog.environment.JavaVirtualMachine
import datadog.trace.api.DisableTestTrace
import datadog.trace.api.civisibility.config.TestFQN
import datadog.trace.api.civisibility.config.TestIdentifier
Expand Down Expand Up @@ -48,7 +49,15 @@ import org.junit.platform.launcher.TestExecutionListener
import org.junit.platform.launcher.core.LauncherConfig
import org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder
import org.junit.platform.launcher.core.LauncherFactory

import spock.lang.IgnoreIf

@IgnoreIf(reason = """
Oracle JDK 1.8 did not merge the fix in JDK-8058322, leading to the JVM failing to correctly
extract method parameters without args, when the code is compiled on a later JDK (targeting 8).
This can manifest when creating mocks.
""", value = {
JavaVirtualMachine.isOracleJDK8()
})
@DisableTestTrace(reason = "avoid self-tracing")
class JUnit5Test extends CiVisibilityInstrumentationTest {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package datadog.trace.core

import datadog.communication.ddagent.DDAgentFeaturesDiscovery
import datadog.communication.ddagent.SharedCommunicationObjects
import datadog.environment.JavaVirtualMachine
import datadog.trace.api.Config
import datadog.trace.api.DDTraceId
import datadog.trace.api.sampling.PrioritySampling
Expand All @@ -10,7 +11,15 @@ import datadog.trace.core.monitor.HealthMetrics
import datadog.trace.test.util.DDSpecification

import java.util.concurrent.TimeUnit

import spock.lang.IgnoreIf

@IgnoreIf(reason = """
Oracle JDK 1.8 did not merge the fix in JDK-8058322, leading to the JVM failing to correctly
extract method parameters without args, when the code is compiled on a later JDK (targeting 8).
This can manifest when creating mocks.
""", value = {
JavaVirtualMachine.isOracleJDK8()
})
class LongRunningTracesTrackerTest extends DDSpecification {
Config config = Mock(Config)
int maxTrackedTraces = 10
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package datadog.trace.core

import datadog.environment.JavaVirtualMachine
import datadog.trace.api.Config
import datadog.communication.monitor.Monitoring
import datadog.trace.SamplingPriorityMetadataChecker
Expand All @@ -14,6 +15,7 @@ import datadog.trace.core.propagation.PropagationTags
import datadog.trace.core.scopemanager.ContinuableScopeManager
import datadog.trace.test.util.DDSpecification
import groovy.json.JsonSlurper
import spock.lang.IgnoreIf
import spock.lang.Subject
import spock.lang.Timeout
import spock.util.concurrent.PollingConditions
Expand All @@ -28,6 +30,13 @@ import static datadog.trace.api.sampling.PrioritySampling.USER_KEEP
import static datadog.trace.core.PendingTraceBuffer.BUFFER_SIZE
import static java.nio.charset.StandardCharsets.UTF_8

@IgnoreIf(reason = """
Oracle JDK 1.8 did not merge the fix in JDK-8058322, leading to the JVM failing to correctly
extract method parameters without args, when the code is compiled on a later JDK (targeting 8).
This can manifest when creating mocks.
""", value = {
JavaVirtualMachine.isOracleJDK8()
})
@Timeout(5)
class PendingTraceBufferTest extends DDSpecification {
@Subject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,24 @@
package datadog.trace.core

import datadog.environment.JavaVirtualMachine
import datadog.trace.api.DDTraceId
import datadog.trace.api.sampling.PrioritySampling
import datadog.trace.api.time.TimeSource
import datadog.trace.api.datastreams.NoopPathwayContext
import datadog.trace.core.monitor.HealthMetrics
import datadog.trace.core.propagation.PropagationTags
import spock.lang.IgnoreIf
import spock.lang.Timeout

import java.util.concurrent.TimeUnit

@IgnoreIf(reason = """
Oracle JDK 1.8 did not merge the fix in JDK-8058322, leading to the JVM failing to correctly
extract method parameters without args, when the code is compiled on a later JDK (targeting 8).
This can manifest when creating mocks.
""", value = {
JavaVirtualMachine.isOracleJDK8()
})
class PendingTraceTest extends PendingTraceTestBase {

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,26 @@
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assumptions.assumeFalse;

import datadog.environment.JavaVirtualMachine;
import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

public class DefaultStackWalkerTest {

private final StackWalker stackWalker = new DefaultStackWalker();

@BeforeEach
void setUp() {
assumeFalse(
JavaVirtualMachine.isOracleJDK8(),
"Oracle JDK 1.8 did not merge the fix in JDK-8058322, leading to the JVM failing to correctly "
+ "extract method parameters without args, when the code is compiled on a later JDK (targeting 8). "
+ "This can manifest when creating mocks.");
}

@Test
public void defaultStackWalker_must_be_enabled() {
assertTrue(stackWalker.isEnabled());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assumptions.assumeFalse;
import static org.junit.jupiter.api.Assumptions.assumeTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import datadog.environment.JavaVirtualMachine;
import java.util.List;
import java.util.stream.Collectors;
import org.junit.jupiter.api.BeforeAll;
Expand All @@ -27,6 +29,11 @@ public class HotSpotStackWalkerTest {
@BeforeAll
public static void setUp() {
assumeTrue(isRunningJDK8WithHotSpot());
assumeFalse(
JavaVirtualMachine.isOracleJDK8(),
"Oracle JDK 1.8 did not merge the fix in JDK-8058322, leading to the JVM failing to correctly "
+ "extract method parameters without args, when the code is compiled on a later JDK (targeting 8). "
+ "This can manifest when creating mocks.");
}

@Test
Expand Down