/* * Copyright The OpenTelemetry Authors * SPDX-License-Identifier: Apache-2.0 */ package client import io.opentelemetry.instrumentation.test.AgentTestTrait import io.opentelemetry.instrumentation.test.base.HttpClientTest import play.libs.ws.WS import spock.lang.AutoCleanup import spock.lang.Shared import spock.lang.Subject import spock.lang.Timeout // Play 2.6+ uses a separately versioned client that shades the underlying dependency // This means our built in instrumentation won't work. @Timeout(5) class PlayWsClientTest extends HttpClientTest implements AgentTestTrait { @Subject @Shared @AutoCleanup def client = WS.newClient(-1) @Override int doRequest(String method, URI uri, Map headers, Closure callback) { def request = client.url(uri.toString()) headers.entrySet().each { request.setHeader(it.key, it.value) } def status = request.execute(method).thenApply { callback?.call() it }.thenApply { it.status } return status.toCompletableFuture().get() } @Override String userAgent() { return "AHC" } @Override boolean testRedirects() { false } @Override boolean testConnectionFailure() { false } @Override boolean testRemoteConnection() { return false } @Override boolean testCausality() { return false } }