Skip to content

Commit f650159

Browse files
Fix failing tests
1 parent 2c2c81c commit f650159

File tree

7 files changed

+84
-14
lines changed

7 files changed

+84
-14
lines changed

dd-java-agent/instrumentation/spring-webmvc-5.3/src/test/groovy/test/boot/EndpointCollectorSpringBootTest.groovy

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestMethod
1515
import org.springframework.web.servlet.config.annotation.EnableWebMvc
1616

1717
import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.ENDPOINT_DISCOVERY
18+
import static datadog.trace.api.config.AppSecConfig.API_SECURITY_ENDPOINT_COLLECTION_ENABLED
1819

1920
@SpringBootTest(classes = DiscoveryController)
2021
@EnableWebMvc
@@ -35,6 +36,11 @@ class EndpointCollectorSpringBootTest extends AgentTestRunner {
3536
}
3637
}
3738

39+
@Override
40+
protected void configurePreAgent() {
41+
injectSysConfig(API_SECURITY_ENDPOINT_COLLECTION_ENABLED, "true")
42+
}
43+
3844
void 'test endpoint discovery'() {
3945
when:
4046
final endpoints = EndpointCollector.get().drain().toList().findAll { it.path == ENDPOINT_DISCOVERY.path }

dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/HttpServerTest.groovy

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.USER_B
8484
import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.WEBSOCKET
8585
import static datadog.trace.agent.test.utils.TraceUtils.basicSpan
8686
import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace
87+
import static datadog.trace.api.config.AppSecConfig.API_SECURITY_ENDPOINT_COLLECTION_ENABLED
8788
import static datadog.trace.api.config.TraceInstrumentationConfig.HTTP_SERVER_RAW_QUERY_STRING
8889
import static datadog.trace.api.config.TraceInstrumentationConfig.HTTP_SERVER_RAW_RESOURCE
8990
import static datadog.trace.api.config.TraceInstrumentationConfig.HTTP_SERVER_TAG_QUERY_STRING
@@ -163,6 +164,8 @@ abstract class HttpServerTest<SERVER> extends WithHttpServer<SERVER> {
163164
injectSysConfig(REQUEST_HEADER_TAGS, 'x-datadog-test-request-header:request_header_tag')
164165
// We don't inject a matching response header tag here since it would be always on and show up in all the tests
165166
injectSysConfig(TRACE_WEBSOCKET_MESSAGES_ENABLED, "true")
167+
// allow endpoint discover for the tests
168+
injectSysConfig(API_SECURITY_ENDPOINT_COLLECTION_ENABLED, "true")
166169
}
167170

168171
// used in blocking tests to check if the handler was skipped

internal-api/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,8 @@ excludedClassesCoverage += [
197197
// POJO
198198
'datadog.trace.api.iast.util.Cookie',
199199
'datadog.trace.api.iast.util.Cookie.Builder',
200+
'datadog.trace.api.telemetry.Endpoint',
201+
'datadog.trace.api.telemetry.Endpoint.Method',
200202
'datadog.trace.api.telemetry.LogCollector.RawLogMessage',
201203
"datadog.trace.api.telemetry.MetricCollector.DistributionSeriesPoint",
202204
"datadog.trace.api.telemetry.MetricCollector",

internal-api/src/main/java/datadog/trace/api/telemetry/Endpoint.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -149,17 +149,4 @@ static <E extends Enum<E>, C extends Collection<E>> List<String> parseMethods(fi
149149
return result;
150150
}
151151
}
152-
153-
public interface Authentication {
154-
String JWT = "JWT";
155-
String BASIC = "basic";
156-
String OAUTH = "oauth";
157-
String OIDC = "OIDC";
158-
String API_KEY = "api_key";
159-
String SESSION = "session";
160-
String M_TLS = "mTLS";
161-
String SAML = "SAML";
162-
String FORM = "Form";
163-
String OTHER = "other";
164-
}
165152
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package datadog.trace.api.telemetry
2+
3+
import datadog.trace.test.util.DDSpecification
4+
5+
class EndpointCollectorTest extends DDSpecification {
6+
7+
void 'no metrics - drain empty list'() {
8+
when:
9+
final list = EndpointCollector.get().drain()
10+
11+
then:
12+
!list.hasNext()
13+
}
14+
15+
void 'set iterator'() {
16+
setup:
17+
final expected = (0..10).collect { index ->
18+
new Endpoint()
19+
.first(index == 0)
20+
.type(Endpoint.Type.REST)
21+
.operation(Endpoint.Operation.HTTP_REQUEST)
22+
.path("/$index")
23+
.requestBodyType(['application/json'])
24+
.responseBodyType(['plain/text'])
25+
.responseCode([200])
26+
.authentication(['JWT'])
27+
.method(Endpoint.Method.METHODS[index % Endpoint.Method.METHODS.size()])
28+
}
29+
EndpointCollector.get().supplier(expected.iterator())
30+
31+
when:
32+
final received = EndpointCollector.get().drain().toList()
33+
34+
then:
35+
received == expected
36+
}
37+
}

telemetry/src/main/java/datadog/telemetry/endpoint/EndpointPeriodicAction.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,19 @@
88

99
public class EndpointPeriodicAction implements TelemetryRunnable.TelemetryPeriodicAction {
1010

11+
private final EndpointCollector collector;
12+
13+
public EndpointPeriodicAction() {
14+
this(EndpointCollector.get());
15+
}
16+
17+
public EndpointPeriodicAction(EndpointCollector collector) {
18+
this.collector = collector;
19+
}
20+
1121
@Override
1222
public void doIteration(final TelemetryService service) {
13-
for (final Iterator<Endpoint> it = EndpointCollector.get().drain(); it.hasNext(); ) {
23+
for (final Iterator<Endpoint> it = collector.drain(); it.hasNext(); ) {
1424
if (!service.addEndpoint(it.next())) {
1525
break;
1626
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package datadog.telemetry.endpoint
2+
3+
import datadog.telemetry.TelemetryService
4+
import datadog.trace.api.telemetry.Endpoint
5+
import datadog.trace.api.telemetry.EndpointCollector
6+
import spock.lang.Specification
7+
8+
class EndpointPeriodicActionTest extends Specification {
9+
10+
void 'test that common metrics are joined before being sent to telemetry #iterationIndex'() {
11+
given:
12+
final endpoint = new Endpoint().first(true).type('REST').method("GET").operation('http.request').path("/test")
13+
final service = Mock(TelemetryService)
14+
final endpointCollector = Mock(EndpointCollector)
15+
final action = new EndpointPeriodicAction(endpointCollector)
16+
17+
when:
18+
action.doIteration(service)
19+
20+
then:
21+
1 * endpointCollector.drain() >> [endpoint].iterator()
22+
1 * service.addEndpoint(endpoint)
23+
0 * _
24+
}
25+
}

0 commit comments

Comments
 (0)