Skip to content
Open
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 @@ -108,8 +108,12 @@ public static boolean isJ9() {
return SystemProperties.getOrDefault("java.vm.name", "").contains("J9");
}

public static boolean isIbm() {
return runtime.vendor.contains("IBM");
}

Comment on lines +111 to +114
Copy link
Contributor

Choose a reason for hiding this comment

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

🎯 suggestion: ‏Can you update the JavaVirtualMachineTest test suite too?

public static boolean isIbm8() {
return isJavaVersion(8) && runtime.vendor.contains("IBM");
return isIbm() && isJavaVersion(8);
}

public static boolean isGraalVM() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package datadog.smoketest

import datadog.environment.JavaVirtualMachine
import datadog.trace.test.util.Flaky
import datadog.trace.test.util.Predicates.IBM

import static java.util.concurrent.TimeUnit.SECONDS

Expand Down Expand Up @@ -30,7 +30,7 @@ class CustomSystemLoaderSmokeTest extends AbstractSmokeTest {
return processBuilder
}

@Flaky(value = 'Race condition with IMB. Check APMAPI-1194', condition = IBM)
@Flaky(value = 'Race condition with IMB. Check APMAPI-1194', condition = () -> JavaVirtualMachine.isIbm())
def "resource types loaded by custom system class-loader are transformed"() {
when:
testedProcess.waitFor(TIMEOUT_SECS, SECONDS)
Expand All @@ -39,7 +39,8 @@ class CustomSystemLoaderSmokeTest extends AbstractSmokeTest {
testedProcess.exitValue() == 0
int loadedResources = 0
int transformedResources = 0
forEachLogLine { String it ->
forEachLogLine {
String it ->
if (it =~ /Loading sample.app.Resource[$]Test[1-3] from TestLoader/) {
loadedResources++
}
Expand Down
1 change: 1 addition & 0 deletions dd-smoke-tests/dynamic-config/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ dependencies {
implementation libs.slf4j

testImplementation project(':dd-smoke-tests')
testImplementation project(':utils:test-utils')
}

tasks.withType(Test).configureEach {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package datadog.smoketest

import datadog.environment.JavaVirtualMachine
import datadog.remoteconfig.Capabilities
import datadog.remoteconfig.Product
import datadog.smoketest.dynamicconfig.AppSecApplication
import datadog.trace.test.util.Flaky

class AppSecActivationSmokeTest extends AbstractSmokeTest {

Expand All @@ -24,13 +26,17 @@ class AppSecActivationSmokeTest extends AbstractSmokeTest {
processBuilder.directory(new File(buildDirectory))
}

@Flaky(value = "Telemetry product change event flakes in oracle8", condition = () ->JavaVirtualMachine.isOracleJDK8())
void 'test activation via RC workflow'() {
given:
final asmRuleProducts = [Product.ASM, Product.ASM_DD, Product.ASM_DATA]

when: 'appsec is enabled but inactive'
final request = waitForRcClientRequest {req ->
decodeProducts(req).find { asmRuleProducts.contains(it) } == null
final request = waitForRcClientRequest {
req ->
decodeProducts(req).find {
asmRuleProducts.contains(it)
} == null
}
final capabilities = decodeCapabilities(request)

Expand All @@ -44,23 +50,28 @@ class AppSecActivationSmokeTest extends AbstractSmokeTest {
then: 'we should receive a product change for appsec'
waitForTelemetryFlat {
final configurations = (List<Map<String, Object>>) it?.payload?.configuration ?: []
final enabledConfig = configurations.find { it.name == 'appsec_enabled' }
final enabledConfig = configurations.find {
it.name == 'appsec_enabled'
}
if (!enabledConfig) {
return false
}
return enabledConfig.value == 'true' && enabledConfig .origin == 'remote_config'
}

and: 'we should have set the capabilities for ASM rules and data'
final newRequest = waitForRcClientRequest {req ->
final newRequest = waitForRcClientRequest {
req ->
decodeProducts(req).containsAll(asmRuleProducts)
}
final newCapabilities = decodeCapabilities(newRequest)
assert hasCapability(newCapabilities, Capabilities.CAPABILITY_ASM_CUSTOM_RULES)
}

private static Set<Product> decodeProducts(final Map<String, Object> request) {
return request.client.products.collect { Product.valueOf(it)}
return request.client.products.collect {
Product.valueOf(it)
}
}

private static long decodeCapabilities(final Map<String, Object> request) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package datadog.smoketest
import datadog.environment.JavaVirtualMachine
import datadog.trace.api.config.IastConfig
import datadog.trace.test.util.Flaky
import datadog.trace.test.util.Predicates.IBM8

import static datadog.trace.api.iast.IastContext.Mode.GLOBAL

Expand Down Expand Up @@ -35,7 +34,7 @@ class Jersey2SmokeTest extends AbstractJerseySmokeTest {
]
}

@Flaky(value = 'global context is flaky under IBM8', condition = IBM8)
@Flaky(value = 'global context is flaky under IBM8', condition = () -> JavaVirtualMachine.isIbm8())
static class WithGlobalContext extends Jersey2SmokeTest {
@Override
protected List<String> iastJvmOpts() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package datadog.smoketest

import datadog.trace.test.util.Predicates.IBM8
import datadog.environment.JavaVirtualMachine
import datadog.trace.test.util.Flaky

import static datadog.trace.api.config.IastConfig.*
Expand Down Expand Up @@ -31,7 +31,7 @@ class Jersey3SmokeTest extends AbstractJerseySmokeTest {
]
}

@Flaky(value = 'global context is flaky under IBM8', condition = IBM8)
@Flaky(value = 'global context is flaky under IBM8', condition = () -> JavaVirtualMachine.isIbm8())
static class WithGlobalContext extends Jersey3SmokeTest {
@Override
protected List<String> iastJvmOpts() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ package datadog.smoketest

import com.squareup.moshi.Moshi
import com.squareup.moshi.Types
import datadog.environment.JavaVirtualMachine
import datadog.trace.api.config.GeneralConfig
import datadog.trace.test.util.Flaky
import spock.lang.AutoCleanup
import spock.lang.Shared

import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_128_BIT_TRACEID_LOGGING_ENABLED
import static datadog.trace.api.config.TracerConfig.TRACE_128_BIT_TRACEID_GENERATION_ENABLED
import static datadog.trace.test.util.Predicates.IBM8
import static java.util.concurrent.TimeUnit.SECONDS

/**
Expand Down Expand Up @@ -256,7 +256,7 @@ abstract class LogInjectionSmokeTest extends AbstractSmokeTest {
return unmangled.split(" ")[1..2]
}

@Flaky(condition = IBM8)
@Flaky(condition = () -> JavaVirtualMachine.isIbm8())
def "check raw file injection"() {
when:
def count = waitForTraceCount(2)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
package datadog.smoketest

import datadog.environment.JavaVirtualMachine
import datadog.trace.test.util.Flaky

import static datadog.trace.test.util.Predicates.IBM

class SampleTraceSmokeTest extends AbstractSmokeTest {

@Override
Expand All @@ -25,7 +24,7 @@ class SampleTraceSmokeTest extends AbstractSmokeTest {
processBuilder.directory(new File(buildDirectory))
}

@Flaky(condition = IBM)
@Flaky(condition = () -> JavaVirtualMachine.isIbm())
def 'sample traces are sent'() {
when:
waitForTraceCount(10)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import datadog.environment.JavaVirtualMachine
import datadog.smoketest.AbstractIastSpringBootTest
import datadog.trace.api.config.IastConfig
import datadog.trace.test.util.Predicates.IBM8
import datadog.trace.test.util.Flaky

import static datadog.trace.api.iast.IastContext.Mode.GLOBAL

class IastSpringBootSmokeTest extends AbstractIastSpringBootTest {

@Flaky(value = 'global context is flaky under IBM8', condition = IBM8)
@Flaky(value = 'global context is flaky under IBM8', condition = () -> JavaVirtualMachine.isIbm8())
static class WithGlobalContext extends IastSpringBootSmokeTest {
@Override
protected List<String> iastJvmOpts() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package datadog.smoketest

import datadog.environment.JavaVirtualMachine
import datadog.trace.api.config.IastConfig
import datadog.trace.test.util.Predicates.IBM8
import datadog.trace.test.util.Flaky
import groovy.transform.CompileDynamic
import okhttp3.Request
Expand Down Expand Up @@ -54,7 +54,7 @@ class IastSpringBootSmokeTest extends AbstractIastSpringBootTest {
}
}

@Flaky(value = 'global context is flaky under IBM8', condition = IBM8)
@Flaky(value = 'global context is flaky under IBM8', condition = () -> JavaVirtualMachine.isIbm8())
static class WithGlobalContext extends IastSpringBootSmokeTest {
@Override
protected List<String> iastJvmOpts() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,11 +92,20 @@ class FlakySpockExtension extends AbstractGlobalExtension {
return "true" == System.getProperty(RUN_FLAKY_TESTS_KEY)
}

private static boolean isFlakySpec(final NodeInfo node, final Class<? extends Predicate<String>> condition) {
private static boolean isFlakySpec(final NodeInfo node, final Class<?> condition) {
if (condition == null || condition === Flaky.True) {
return true
}
final closure = condition.newInstance()
return closure.test(node.name)
boolean isFlaky
if (Closure.isAssignableFrom(condition)) {
// Invoke the closure without owner or this, also the spec parameter is captured by the groovy compiler
// so we don't need to pass it along
final closure = condition.newInstance(null, null) as Closure<Boolean>
isFlaky = closure.doCall()
} else {
final closure = condition.newInstance() as Predicate<String>
isFlaky = closure.test(node.name)
}
return isFlaky
}
}

This file was deleted.