@@ -130,7 +130,7 @@ class TelemetryRouterSpecification extends Specification {
130130 500 | _
131131 }
132132
133- def ' use Intake client from the start if configured to do so ' () {
133+ def ' when configured to prefer Intake: use Intake client from the start' () {
134134 Request request
135135
136136 setup :
@@ -147,6 +147,56 @@ class TelemetryRouterSpecification extends Specification {
147147 request. header(apiKeyHeader) == apiKey
148148 }
149149
150+ def ' when configured to prefer Intake: do not switch to Agent if Intake request succeeds, even if Agent supports telemetry proxy' () {
151+ Request request
152+
153+ setup :
154+ def telemetryRouter = new TelemetryRouter (ddAgentFeaturesDiscovery, agentTelemetryClient, intakeTelemetryClient, true )
155+
156+ when :
157+ telemetryRouter. sendRequest(dummyRequest())
158+
159+ then :
160+ 1 * ddAgentFeaturesDiscovery. discoverIfOutdated()
161+ 1 * ddAgentFeaturesDiscovery. supportsTelemetryProxy() >> true
162+ 1 * okHttpClient. newCall(_) >> { args -> request = args[0 ]; mockResponse(200 ) }
163+ request. url() == intakeUrl
164+ request. header(apiKeyHeader) == apiKey
165+
166+ when :
167+ telemetryRouter. sendRequest(dummyRequest())
168+
169+ then :
170+ 1 * okHttpClient. newCall(_) >> { args -> request = args[0 ]; mockResponse(200 ) }
171+ request. url() == intakeUrl
172+ request. header(apiKeyHeader) == apiKey
173+ }
174+
175+ def ' when configured to prefer Intake: switch to Agent if Intake request fails' () {
176+ Request request
177+
178+ setup :
179+ def telemetryRouter = new TelemetryRouter (ddAgentFeaturesDiscovery, agentTelemetryClient, intakeTelemetryClient, true )
180+
181+ when :
182+ telemetryRouter. sendRequest(dummyRequest())
183+
184+ then :
185+ 1 * ddAgentFeaturesDiscovery. discoverIfOutdated()
186+ 1 * ddAgentFeaturesDiscovery. supportsTelemetryProxy() >> true
187+ 1 * okHttpClient. newCall(_) >> { args -> request = args[0 ]; mockResponse(403 ) }
188+ request. url() == intakeUrl
189+ request. header(apiKeyHeader) == apiKey
190+
191+ when :
192+ telemetryRouter. sendRequest(dummyRequest())
193+
194+ then :
195+ 1 * okHttpClient. newCall(_) >> { args -> request = args[0 ]; mockResponse(200 ) }
196+ request. url() == agentTelemetryUrl
197+ request. header(apiKeyHeader) == null
198+ }
199+
150200 def ' do not switch to Intake when Agent stops supporting telemetry proxy but accepts telemetry requests' () {
151201 Request request
152202
0 commit comments