Skip to content

Commit 87c7127

Browse files
committed
Fix some things
1 parent 4b4cb61 commit 87c7127

File tree

6 files changed

+47
-46
lines changed

6 files changed

+47
-46
lines changed

dd-java-agent/instrumentation/servlet/request-3/src/main/java/datadog/trace/instrumentation/servlet3/RumHttpServletResponseWrapper.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public PrintWriter getWriter() throws IOException {
7171
rumInjector.getSnippetChars(),
7272
this::onInjected));
7373
} catch (Exception e) {
74+
injectionStartTime = -1;
7475
RumInjector.getTelemetryCollector().onInjectionFailed();
7576
throw e;
7677
}

dd-java-agent/instrumentation/servlet/request-3/src/test/groovy/RumHttpServletResponseWrapperTest.groovy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,13 @@ class RumHttpServletResponseWrapperTest extends AgentTestRunner {
9292
1 * mockResponse.setHeader("Content-Security-Policy", "test")
9393
}
9494

95-
void 'addHeader with Content-Security-Policy-Report-Only reports CSP detected'() {
95+
void 'addHeader with Content-Security-Policy reports CSP detected'() {
9696
when:
97-
wrapper.addHeader("Content-Security-Policy-Report-Only", "test")
97+
wrapper.addHeader("Content-Security-Policy", "test")
9898

9999
then:
100100
1 * mockTelemetryCollector.onContentSecurityPolicyDetected()
101-
1 * mockResponse.addHeader("Content-Security-Policy-Report-Only", "test")
101+
1 * mockResponse.addHeader("Content-Security-Policy", "test")
102102
}
103103

104104
void 'setHeader with non-CSP header does not report CSP detected'() {

dd-java-agent/instrumentation/servlet/request-5/src/main/java/datadog/trace/instrumentation/servlet5/RumHttpServletResponseWrapper.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public PrintWriter getWriter() throws IOException {
7171
rumInjector.getSnippetChars(),
7272
this::onInjected));
7373
} catch (Exception e) {
74+
injectionStartTime = -1;
7475
RumInjector.getTelemetryCollector().onInjectionFailed();
7576
throw e;
7677
}

dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/RumHttpServletResponseWrapperTest.groovy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,13 @@ class RumHttpServletResponseWrapperTest extends AgentTestRunner {
9292
1 * mockResponse.setHeader("Content-Security-Policy", "test")
9393
}
9494

95-
void 'addHeader with Content-Security-Policy-Report-Only reports CSP detected'() {
95+
void 'addHeader with Content-Security-Policy reports CSP detected'() {
9696
when:
97-
wrapper.addHeader("Content-Security-Policy-Report-Only", "test")
97+
wrapper.addHeader("Content-Security-Policy", "test")
9898

9999
then:
100100
1 * mockTelemetryCollector.onContentSecurityPolicyDetected()
101-
1 * mockResponse.addHeader("Content-Security-Policy-Report-Only", "test")
101+
1 * mockResponse.addHeader("Content-Security-Policy", "test")
102102
}
103103

104104
void 'setHeader with non-CSP header does not report CSP detected'() {

internal-api/src/test/groovy/datadog/trace/api/rum/RumInjectorMetricsTest.groovy

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -85,33 +85,7 @@ class RumInjectorMetricsTest extends Specification {
8585
metrics.close()
8686
}
8787

88-
def "test onInjectionResponseSize with multiple sizes"() {
89-
when:
90-
metrics.onInjectionResponseSize(256)
91-
metrics.onInjectionResponseSize(512)
92-
metrics.onInjectionResponseSize(2048)
93-
94-
then:
95-
1 * statsD.distribution('rum.injection.response.bytes', 256, _)
96-
1 * statsD.distribution('rum.injection.response.bytes', 512, _)
97-
1 * statsD.distribution('rum.injection.response.bytes', 2048, _)
98-
0 * _
99-
}
100-
101-
def "test onInjectionTime with multiple durations"() {
102-
when:
103-
metrics.onInjectionTime(5L)
104-
metrics.onInjectionTime(10L)
105-
metrics.onInjectionTime(25L)
106-
107-
then:
108-
1 * statsD.distribution('rum.injection.ms', 5L, _)
109-
1 * statsD.distribution('rum.injection.ms', 10L, _)
110-
1 * statsD.distribution('rum.injection.ms', 25L, _)
111-
0 * _
112-
}
113-
114-
def "test flushing multiple events"() {
88+
def "test multiple events"() {
11589
setup:
11690
def latch = new CountDownLatch(4) // expecting 4 metric types
11791
def metrics = new RumInjectorMetrics(new Latched(statsD, latch), 10, TimeUnit.MILLISECONDS)
@@ -158,16 +132,16 @@ class RumInjectorMetricsTest extends Specification {
158132
metrics.close()
159133
}
160134

161-
def "test summary with multiple events"() {
135+
def "test summary with multiple events in different order"() {
162136
when:
137+
metrics.onContentSecurityPolicyDetected()
163138
metrics.onInjectionSucceed()
164139
metrics.onInjectionFailed()
165140
metrics.onInjectionSucceed()
166141
metrics.onInjectionFailed()
167142
metrics.onInjectionSucceed()
168143
metrics.onInjectionSkipped()
169144
metrics.onContentSecurityPolicyDetected()
170-
metrics.onContentSecurityPolicyDetected()
171145
def summary = metrics.summary()
172146

173147
then:
@@ -190,6 +164,33 @@ class RumInjectorMetricsTest extends Specification {
190164
0 * _
191165
}
192166

167+
// events below are reported immediately as distribution metrics and do not get summarized
168+
def "test onInjectionResponseSize with multiple sizes"() {
169+
when:
170+
metrics.onInjectionResponseSize(256)
171+
metrics.onInjectionResponseSize(512)
172+
metrics.onInjectionResponseSize(2048)
173+
174+
then:
175+
1 * statsD.distribution('rum.injection.response.bytes', 256, _)
176+
1 * statsD.distribution('rum.injection.response.bytes', 512, _)
177+
1 * statsD.distribution('rum.injection.response.bytes', 2048, _)
178+
0 * _
179+
}
180+
181+
def "test onInjectionTime with multiple durations"() {
182+
when:
183+
metrics.onInjectionTime(5L)
184+
metrics.onInjectionTime(10L)
185+
metrics.onInjectionTime(25L)
186+
187+
then:
188+
1 * statsD.distribution('rum.injection.ms', 5L, _)
189+
1 * statsD.distribution('rum.injection.ms', 10L, _)
190+
1 * statsD.distribution('rum.injection.ms', 25L, _)
191+
0 * _
192+
}
193+
193194
// taken from HealthMetricsTest
194195
private static class Latched implements StatsDClient {
195196
final StatsDClient delegate

internal-api/src/test/groovy/datadog/trace/api/rum/RumInjectorTest.groovy

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,6 @@ class RumInjectorTest extends DDSpecification {
8282

8383
then:
8484
RumInjector.getTelemetryCollector() == RumTelemetryCollector.NO_OP
85-
86-
cleanup:
87-
RumInjector.setTelemetryCollector(RumTelemetryCollector.NO_OP)
8885
}
8986

9087
void 'enable telemetry with StatsDClient'() {
@@ -104,9 +101,6 @@ class RumInjectorTest extends DDSpecification {
104101

105102
then:
106103
RumInjector.getTelemetryCollector() == RumTelemetryCollector.NO_OP
107-
108-
cleanup:
109-
RumInjector.shutdownTelemetry()
110104
}
111105

112106
void 'shutdown telemetry'() {
@@ -128,17 +122,19 @@ class RumInjectorTest extends DDSpecification {
128122
// simulate reporting successful injection
129123
def telemetryCollector = RumInjector.getTelemetryCollector()
130124
telemetryCollector.onInjectionSucceed()
131-
telemetryCollector.onInjectionSucceed()
132125
telemetryCollector.onInjectionFailed()
126+
telemetryCollector.onInjectionSkipped()
133127
telemetryCollector.onContentSecurityPolicyDetected()
128+
telemetryCollector.onInjectionResponseSize(256)
129+
telemetryCollector.onInjectionTime(5L)
134130

135131
// verify metrics are collected
136132
def summary = telemetryCollector.summary()
137133

138134
then:
139-
summary.contains("injectionSucceed=2")
135+
summary.contains("injectionSucceed=1")
140136
summary.contains("injectionFailed=1")
141-
summary.contains("injectionSkipped=0")
137+
summary.contains("injectionSkipped=1")
142138
summary.contains("contentSecurityPolicyDetected=1")
143139

144140
cleanup:
@@ -153,9 +149,9 @@ class RumInjectorTest extends DDSpecification {
153149
RumInjector.enableTelemetry(mockStatsDClient)
154150

155151
def telemetryCollector = RumInjector.getTelemetryCollector()
152+
telemetryCollector.onInjectionResponseSize(256)
156153
telemetryCollector.onInjectionResponseSize(512)
157154
telemetryCollector.onInjectionResponseSize(2048)
158-
telemetryCollector.onInjectionResponseSize(256)
159155

160156
then:
161157
// response sizes are reported immediately as distribution metrics
@@ -185,7 +181,7 @@ class RumInjectorTest extends DDSpecification {
185181
RumInjector.shutdownTelemetry()
186182
}
187183

188-
void 'concurrent telemetry calls are thread-safe'() {
184+
void 'concurrent telemetry calls return an accurate summary'() {
189185
setup:
190186
RumInjector.enableTelemetry(mock(datadog.trace.api.StatsDClient))
191187
def telemetryCollector = RumInjector.getTelemetryCollector()
@@ -199,6 +195,8 @@ class RumInjectorTest extends DDSpecification {
199195
telemetryCollector.onInjectionFailed()
200196
telemetryCollector.onInjectionSkipped()
201197
telemetryCollector.onContentSecurityPolicyDetected()
198+
telemetryCollector.onInjectionResponseSize(256)
199+
telemetryCollector.onInjectionTime(5L)
202200
}
203201
}
204202
threads*.join()

0 commit comments

Comments
 (0)