From c3825d9d5299fd21ef678f19b136ee57d237fa8f Mon Sep 17 00:00:00 2001 From: Nikolay Martynov Date: Fri, 20 Jul 2018 11:07:13 -0400 Subject: [PATCH 1/2] Improve tmp dir handling in ES tests Also make sure ES ports are allocated right before ES is started --- .../Elasticsearch6RestClientTest.groovy | 31 +++++++------- .../Elasticsearch5RestClientTest.groovy | 27 ++++++------ .../Elasticsearch2NodeClientTest.groovy | 23 ++++++----- .../Elasticsearch2SpringTemplateTest.groovy | 27 ++++++------ .../Elasticsearch2TransportClientTest.groovy | 41 ++++++++++--------- .../Elasticsearch5NodeClientTest.groovy | 23 ++++++----- .../Elasticsearch5TransportClientTest.groovy | 39 ++++++++++-------- .../Elasticsearch6NodeClientTest.groovy | 23 ++++++----- .../Elasticsearch6TransportClientTest.groovy | 39 ++++++++++-------- 9 files changed, 150 insertions(+), 123 deletions(-) diff --git a/dd-java-agent/instrumentation/elasticsearch-rest-5/src/latestDepTest/groovy/Elasticsearch6RestClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch-rest-5/src/latestDepTest/groovy/Elasticsearch6RestClientTest.groovy index d90d499267..a61bdd6b68 100644 --- a/dd-java-agent/instrumentation/elasticsearch-rest-5/src/latestDepTest/groovy/Elasticsearch6RestClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch-rest-5/src/latestDepTest/groovy/Elasticsearch6RestClientTest.groovy @@ -22,33 +22,36 @@ class Elasticsearch6RestClientTest extends AgentTestRunner { System.setProperty("dd.integration.elasticsearch.enabled", "true") } - static final int HTTP_PORT = TestUtils.randomOpenPort() - static final int TCP_PORT = TestUtils.randomOpenPort() + @Shared + int httpPort + @Shared + int tcpPort + @Shared + Node testNode + @Shared + File esWorkingDir @Shared - static Node testNode - static File esWorkingDir - - @Shared - static RestClient client + RestClient client def setupSpec() { - esWorkingDir = File.createTempFile("test-es-working-dir-", "") - esWorkingDir.delete() - esWorkingDir.mkdir() + httpPort = TestUtils.randomOpenPort() + tcpPort = TestUtils.randomOpenPort() + + esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" def settings = Settings.builder() .put("path.home", esWorkingDir.path) - .put("http.port", HTTP_PORT) - .put("transport.tcp.port", TCP_PORT) + .put("http.port", httpPort) + .put("transport.tcp.port", tcpPort) .put("cluster.name", "test-cluster") .build() testNode = new Node(InternalSettingsPreparer.prepareEnvironment(settings, null), [Netty4Plugin]) testNode.start() - client = RestClient.builder(new HttpHost("localhost", HTTP_PORT)) + client = RestClient.builder(new HttpHost("localhost", httpPort)) .setMaxRetryTimeoutMillis(Integer.MAX_VALUE) .setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() { @Override @@ -107,7 +110,7 @@ class Elasticsearch6RestClientTest extends AgentTestRunner { "$Tags.HTTP_METHOD.key" "GET" "$Tags.HTTP_URL.key" "_cluster/health" "$Tags.PEER_HOSTNAME.key" "localhost" - "$Tags.PEER_PORT.key" HTTP_PORT + "$Tags.PEER_PORT.key" httpPort defaultTags() } } diff --git a/dd-java-agent/instrumentation/elasticsearch-rest-5/src/test/groovy/Elasticsearch5RestClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch-rest-5/src/test/groovy/Elasticsearch5RestClientTest.groovy index 85bfee5ab2..c36dfd7e12 100644 --- a/dd-java-agent/instrumentation/elasticsearch-rest-5/src/test/groovy/Elasticsearch5RestClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch-rest-5/src/test/groovy/Elasticsearch5RestClientTest.groovy @@ -24,27 +24,30 @@ class Elasticsearch5RestClientTest extends AgentTestRunner { System.setProperty("dd.integration.elasticsearch.enabled", "true") } - static final int HTTP_PORT = TestUtils.randomOpenPort() - static final int TCP_PORT = TestUtils.randomOpenPort() - @Shared - static Node testNode - static File esWorkingDir + int httpPort + @Shared + int tcpPort + @Shared + Node testNode + @Shared + File esWorkingDir @Shared static RestClient client def setupSpec() { - esWorkingDir = File.createTempFile("test-es-working-dir-", "") - esWorkingDir.delete() - esWorkingDir.mkdir() + httpPort = TestUtils.randomOpenPort() + tcpPort = TestUtils.randomOpenPort() + + esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" def settings = Settings.builder() .put("path.home", esWorkingDir.path) - .put("http.port", HTTP_PORT) - .put("transport.tcp.port", TCP_PORT) + .put("http.port", httpPort) + .put("transport.tcp.port", tcpPort) .put("transport.type", "netty3") .put("http.type", "netty3") .put(CLUSTER_NAME_SETTING.getKey(), "test-cluster") @@ -52,7 +55,7 @@ class Elasticsearch5RestClientTest extends AgentTestRunner { testNode = new Node(new Environment(InternalSettingsPreparer.prepareSettings(settings)), [Netty3Plugin]) testNode.start() - client = RestClient.builder(new HttpHost("localhost", HTTP_PORT)) + client = RestClient.builder(new HttpHost("localhost", httpPort)) .setMaxRetryTimeoutMillis(Integer.MAX_VALUE) .setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() { @Override @@ -95,7 +98,7 @@ class Elasticsearch5RestClientTest extends AgentTestRunner { "$Tags.HTTP_METHOD.key" "GET" "$Tags.HTTP_URL.key" "_cluster/health" "$Tags.PEER_HOSTNAME.key" "localhost" - "$Tags.PEER_PORT.key" HTTP_PORT + "$Tags.PEER_PORT.key" httpPort defaultTags() } } diff --git a/dd-java-agent/instrumentation/elasticsearch-transport-2/src/test/groovy/Elasticsearch2NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch-transport-2/src/test/groovy/Elasticsearch2NodeClientTest.groovy index 0caf378397..fb2b1406fb 100644 --- a/dd-java-agent/instrumentation/elasticsearch-transport-2/src/test/groovy/Elasticsearch2NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch-transport-2/src/test/groovy/Elasticsearch2NodeClientTest.groovy @@ -16,19 +16,22 @@ class Elasticsearch2NodeClientTest extends AgentTestRunner { System.setProperty("dd.integration.elasticsearch.enabled", "true") } - static final int HTTP_PORT = TestUtils.randomOpenPort() - static final int TCP_PORT = TestUtils.randomOpenPort() - @Shared - static Node testNode - static File esWorkingDir + int httpPort + @Shared + int tcpPort + @Shared + Node testNode + @Shared + File esWorkingDir def client = testNode.client() def setupSpec() { - esWorkingDir = File.createTempFile("test-es-working-dir-", "") - esWorkingDir.delete() - esWorkingDir.mkdir() + httpPort = TestUtils.randomOpenPort() + tcpPort = TestUtils.randomOpenPort() + + esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" @@ -36,8 +39,8 @@ class Elasticsearch2NodeClientTest extends AgentTestRunner { .put("path.home", esWorkingDir.path) // Since we use listeners to close spans this should make our span closing deterministic which is good for tests .put("thread_pool.listener.size", 1) - .put("http.port", HTTP_PORT) - .put("transport.tcp.port", TCP_PORT) + .put("http.port", httpPort) + .put("transport.tcp.port", tcpPort) .build() testNode = NodeBuilder.newInstance().local(true).clusterName("test-cluster").settings(settings).build() testNode.start() diff --git a/dd-java-agent/instrumentation/elasticsearch-transport-2/src/test/groovy/Elasticsearch2SpringTemplateTest.groovy b/dd-java-agent/instrumentation/elasticsearch-transport-2/src/test/groovy/Elasticsearch2SpringTemplateTest.groovy index 013b15d4b9..bcec92ef99 100644 --- a/dd-java-agent/instrumentation/elasticsearch-transport-2/src/test/groovy/Elasticsearch2SpringTemplateTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch-transport-2/src/test/groovy/Elasticsearch2SpringTemplateTest.groovy @@ -26,20 +26,23 @@ class Elasticsearch2SpringTemplateTest extends AgentTestRunner { System.setProperty("dd.integration.elasticsearch.enabled", "true") } - static final int HTTP_PORT = TestUtils.randomOpenPort() - static final int TCP_PORT = TestUtils.randomOpenPort() + @Shared + int httpPort + @Shared + int tcpPort + @Shared + Node testNode + @Shared + File esWorkingDir @Shared - static Node testNode - static File esWorkingDir - - @Shared - static ElasticsearchTemplate template + ElasticsearchTemplate template def setupSpec() { - esWorkingDir = File.createTempFile("test-es-working-dir-", "") - esWorkingDir.delete() - esWorkingDir.mkdir() + httpPort = TestUtils.randomOpenPort() + tcpPort = TestUtils.randomOpenPort() + + esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" @@ -47,8 +50,8 @@ class Elasticsearch2SpringTemplateTest extends AgentTestRunner { .put("path.home", esWorkingDir.path) // Since we use listeners to close spans this should make our span closing deterministic which is good for tests .put("thread_pool.listener.size", 1) - .put("http.port", HTTP_PORT) - .put("transport.tcp.port", TCP_PORT) + .put("http.port", httpPort) + .put("transport.tcp.port", tcpPort) .build() testNode = NodeBuilder.newInstance().local(true).clusterName("test-cluster").settings(settings).build() testNode.start() diff --git a/dd-java-agent/instrumentation/elasticsearch-transport-2/src/test/groovy/Elasticsearch2TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch-transport-2/src/test/groovy/Elasticsearch2TransportClientTest.groovy index 6efc693997..7b3d17fa99 100644 --- a/dd-java-agent/instrumentation/elasticsearch-transport-2/src/test/groovy/Elasticsearch2TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch-transport-2/src/test/groovy/Elasticsearch2TransportClientTest.groovy @@ -19,27 +19,30 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner { System.setProperty("dd.integration.elasticsearch.enabled", "true") } - static final int HTTP_PORT = TestUtils.randomOpenPort() - static final int TCP_PORT = TestUtils.randomOpenPort() + @Shared + int httpPort + @Shared + int tcpPort + @Shared + Node testNode + @Shared + File esWorkingDir @Shared - static Node testNode - static File esWorkingDir - - @Shared - static TransportClient client + TransportClient client def setupSpec() { - esWorkingDir = File.createTempFile("test-es-working-dir-", "") - esWorkingDir.delete() - esWorkingDir.mkdir() + httpPort = TestUtils.randomOpenPort() + tcpPort = TestUtils.randomOpenPort() + + esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" def settings = Settings.builder() .put("path.home", esWorkingDir.path) - .put("http.port", HTTP_PORT) - .put("transport.tcp.port", TCP_PORT) + .put("http.port", httpPort) + .put("transport.tcp.port", tcpPort) .build() testNode = NodeBuilder.newInstance().clusterName("test-cluster").settings(settings).build() testNode.start() @@ -51,7 +54,7 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner { .put("cluster.name", "test-cluster") .build() ).build() - client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), TCP_PORT)) + client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), tcpPort)) TEST_WRITER.clear() client.admin().cluster().prepareHealth().setWaitForYellowStatus().execute().actionGet(5000) TEST_WRITER.waitForTraces(1) @@ -87,7 +90,7 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner { "$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT "$Tags.PEER_HOSTNAME.key" "127.0.0.1" "$Tags.PEER_HOST_IPV4.key" "127.0.0.1" - "$Tags.PEER_PORT.key" TCP_PORT + "$Tags.PEER_PORT.key" tcpPort "elasticsearch.action" "ClusterHealthAction" "elasticsearch.request" "ClusterHealthRequest" defaultTags() @@ -185,7 +188,7 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner { "elasticsearch.request.indices" indexName "$Tags.PEER_HOSTNAME.key" "127.0.0.1" "$Tags.PEER_HOST_IPV4.key" "127.0.0.1" - "$Tags.PEER_PORT.key" TCP_PORT + "$Tags.PEER_PORT.key" tcpPort defaultTags() } } @@ -203,7 +206,7 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner { "elasticsearch.request" "ClusterHealthRequest" "$Tags.PEER_HOSTNAME.key" "127.0.0.1" "$Tags.PEER_HOST_IPV4.key" "127.0.0.1" - "$Tags.PEER_PORT.key" TCP_PORT + "$Tags.PEER_PORT.key" tcpPort defaultTags() } } @@ -219,7 +222,7 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner { "$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT "$Tags.PEER_HOSTNAME.key" "127.0.0.1" "$Tags.PEER_HOST_IPV4.key" "127.0.0.1" - "$Tags.PEER_PORT.key" TCP_PORT + "$Tags.PEER_PORT.key" tcpPort "elasticsearch.action" "GetAction" "elasticsearch.request" "GetRequest" "elasticsearch.request.indices" indexName @@ -257,7 +260,7 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner { "$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT "$Tags.PEER_HOSTNAME.key" "127.0.0.1" "$Tags.PEER_HOST_IPV4.key" "127.0.0.1" - "$Tags.PEER_PORT.key" TCP_PORT + "$Tags.PEER_PORT.key" tcpPort "elasticsearch.action" "IndexAction" "elasticsearch.request" "IndexRequest" "elasticsearch.request.indices" indexName @@ -277,7 +280,7 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner { "$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT "$Tags.PEER_HOSTNAME.key" "127.0.0.1" "$Tags.PEER_HOST_IPV4.key" "127.0.0.1" - "$Tags.PEER_PORT.key" TCP_PORT + "$Tags.PEER_PORT.key" tcpPort "elasticsearch.action" "GetAction" "elasticsearch.request" "GetRequest" "elasticsearch.request.indices" indexName diff --git a/dd-java-agent/instrumentation/elasticsearch-transport-5/src/test/groovy/Elasticsearch5NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch-transport-5/src/test/groovy/Elasticsearch5NodeClientTest.groovy index 7f61c662b8..ca7d7437d5 100644 --- a/dd-java-agent/instrumentation/elasticsearch-transport-5/src/test/groovy/Elasticsearch5NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch-transport-5/src/test/groovy/Elasticsearch5NodeClientTest.groovy @@ -19,19 +19,22 @@ class Elasticsearch5NodeClientTest extends AgentTestRunner { System.setProperty("dd.integration.elasticsearch.enabled", "true") } - static final int HTTP_PORT = TestUtils.randomOpenPort() - static final int TCP_PORT = TestUtils.randomOpenPort() - @Shared - static Node testNode - static File esWorkingDir + int httpPort + @Shared + int tcpPort + @Shared + Node testNode + @Shared + File esWorkingDir def client = testNode.client() def setupSpec() { - esWorkingDir = File.createTempFile("test-es-working-dir-", "") - esWorkingDir.delete() - esWorkingDir.mkdir() + httpPort = TestUtils.randomOpenPort() + tcpPort = TestUtils.randomOpenPort() + + esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" @@ -39,8 +42,8 @@ class Elasticsearch5NodeClientTest extends AgentTestRunner { .put("path.home", esWorkingDir.path) // Since we use listeners to close spans this should make our span closing deterministic which is good for tests .put("thread_pool.listener.size", 1) - .put("http.port", HTTP_PORT) - .put("transport.tcp.port", TCP_PORT) + .put("http.port", httpPort) + .put("transport.tcp.port", tcpPort) .put("transport.type", "netty3") .put("http.type", "netty3") .put(CLUSTER_NAME_SETTING.getKey(), "test-cluster") diff --git a/dd-java-agent/instrumentation/elasticsearch-transport-5/src/test/groovy/Elasticsearch5TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch-transport-5/src/test/groovy/Elasticsearch5TransportClientTest.groovy index 68f64e51c5..28fe33d7de 100644 --- a/dd-java-agent/instrumentation/elasticsearch-transport-5/src/test/groovy/Elasticsearch5TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch-transport-5/src/test/groovy/Elasticsearch5TransportClientTest.groovy @@ -23,27 +23,30 @@ class Elasticsearch5TransportClientTest extends AgentTestRunner { System.setProperty("dd.integration.elasticsearch.enabled", "true") } - static final int HTTP_PORT = TestUtils.randomOpenPort() - static final int TCP_PORT = TestUtils.randomOpenPort() + @Shared + int httpPort + @Shared + int tcpPort + @Shared + Node testNode + @Shared + File esWorkingDir @Shared - static Node testNode - static File esWorkingDir - - @Shared - static TransportClient client + TransportClient client def setupSpec() { - esWorkingDir = File.createTempFile("test-es-working-dir-", "") - esWorkingDir.delete() - esWorkingDir.mkdir() + httpPort = TestUtils.randomOpenPort() + tcpPort = TestUtils.randomOpenPort() + + esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" def settings = Settings.builder() .put("path.home", esWorkingDir.path) - .put("http.port", HTTP_PORT) - .put("transport.tcp.port", TCP_PORT) + .put("http.port", httpPort) + .put("transport.tcp.port", tcpPort) .put("transport.type", "netty3") .put("http.type", "netty3") .put(CLUSTER_NAME_SETTING.getKey(), "test-cluster") @@ -58,7 +61,7 @@ class Elasticsearch5TransportClientTest extends AgentTestRunner { .put(CLUSTER_NAME_SETTING.getKey(), "test-cluster") .build() ) - client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), TCP_PORT)) + client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), tcpPort)) TEST_WRITER.clear() client.admin().cluster().prepareHealth().setWaitForYellowStatus().execute().actionGet(5000) TEST_WRITER.waitForTraces(1) @@ -94,7 +97,7 @@ class Elasticsearch5TransportClientTest extends AgentTestRunner { "$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT "$Tags.PEER_HOSTNAME.key" "127.0.0.1" "$Tags.PEER_HOST_IPV4.key" "127.0.0.1" - "$Tags.PEER_PORT.key" TCP_PORT + "$Tags.PEER_PORT.key" tcpPort "elasticsearch.action" "ClusterHealthAction" "elasticsearch.request" "ClusterHealthRequest" defaultTags() @@ -192,7 +195,7 @@ class Elasticsearch5TransportClientTest extends AgentTestRunner { "elasticsearch.request.indices" indexName "$Tags.PEER_HOSTNAME.key" "127.0.0.1" "$Tags.PEER_HOST_IPV4.key" "127.0.0.1" - "$Tags.PEER_PORT.key" TCP_PORT + "$Tags.PEER_PORT.key" tcpPort defaultTags() } } @@ -208,7 +211,7 @@ class Elasticsearch5TransportClientTest extends AgentTestRunner { "$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT "$Tags.PEER_HOSTNAME.key" "127.0.0.1" "$Tags.PEER_HOST_IPV4.key" "127.0.0.1" - "$Tags.PEER_PORT.key" TCP_PORT + "$Tags.PEER_PORT.key" tcpPort "elasticsearch.action" "GetAction" "elasticsearch.request" "GetRequest" "elasticsearch.request.indices" indexName @@ -245,7 +248,7 @@ class Elasticsearch5TransportClientTest extends AgentTestRunner { "$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT "$Tags.PEER_HOSTNAME.key" "127.0.0.1" "$Tags.PEER_HOST_IPV4.key" "127.0.0.1" - "$Tags.PEER_PORT.key" TCP_PORT + "$Tags.PEER_PORT.key" tcpPort "elasticsearch.action" "IndexAction" "elasticsearch.request" "IndexRequest" "elasticsearch.request.indices" indexName @@ -270,7 +273,7 @@ class Elasticsearch5TransportClientTest extends AgentTestRunner { "$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT "$Tags.PEER_HOSTNAME.key" "127.0.0.1" "$Tags.PEER_HOST_IPV4.key" "127.0.0.1" - "$Tags.PEER_PORT.key" TCP_PORT + "$Tags.PEER_PORT.key" tcpPort "elasticsearch.action" "GetAction" "elasticsearch.request" "GetRequest" "elasticsearch.request.indices" indexName diff --git a/dd-java-agent/instrumentation/elasticsearch-transport-6/src/test/groovy/Elasticsearch6NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch-transport-6/src/test/groovy/Elasticsearch6NodeClientTest.groovy index b2d96f4680..1c86fff1c4 100644 --- a/dd-java-agent/instrumentation/elasticsearch-transport-6/src/test/groovy/Elasticsearch6NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch-transport-6/src/test/groovy/Elasticsearch6NodeClientTest.groovy @@ -18,19 +18,22 @@ class Elasticsearch6NodeClientTest extends AgentTestRunner { System.setProperty("dd.integration.elasticsearch.enabled", "true") } - static final int HTTP_PORT = TestUtils.randomOpenPort() - static final int TCP_PORT = TestUtils.randomOpenPort() - @Shared - static Node testNode - static File esWorkingDir + int httpPort + @Shared + int tcpPort + @Shared + Node testNode + @Shared + File esWorkingDir def client = testNode.client() def setupSpec() { - esWorkingDir = File.createTempFile("test-es-working-dir-", "") - esWorkingDir.delete() - esWorkingDir.mkdir() + httpPort = TestUtils.randomOpenPort() + tcpPort = TestUtils.randomOpenPort() + + esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" @@ -38,8 +41,8 @@ class Elasticsearch6NodeClientTest extends AgentTestRunner { .put("path.home", esWorkingDir.path) // Since we use listeners to close spans this should make our span closing deterministic which is good for tests .put("thread_pool.listener.size", 1) - .put("http.port", HTTP_PORT) - .put("transport.tcp.port", TCP_PORT) + .put("http.port", httpPort) + .put("transport.tcp.port", tcpPort) .put(CLUSTER_NAME_SETTING.getKey(), "test-cluster") .build() testNode = new Node(InternalSettingsPreparer.prepareEnvironment(settings, null), [Netty4Plugin]) diff --git a/dd-java-agent/instrumentation/elasticsearch-transport-6/src/test/groovy/Elasticsearch6TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch-transport-6/src/test/groovy/Elasticsearch6TransportClientTest.groovy index c0e595b6bb..b2f18b95dc 100644 --- a/dd-java-agent/instrumentation/elasticsearch-transport-6/src/test/groovy/Elasticsearch6TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch-transport-6/src/test/groovy/Elasticsearch6TransportClientTest.groovy @@ -22,27 +22,30 @@ class Elasticsearch6TransportClientTest extends AgentTestRunner { System.setProperty("dd.integration.elasticsearch.enabled", "true") } - static final int HTTP_PORT = TestUtils.randomOpenPort() - static final int TCP_PORT = TestUtils.randomOpenPort() + @Shared + int httpPort + @Shared + int tcpPort + @Shared + Node testNode + @Shared + File esWorkingDir @Shared - static Node testNode - static File esWorkingDir - - @Shared - static TransportClient client + TransportClient client def setupSpec() { - esWorkingDir = File.createTempFile("test-es-working-dir-", "") - esWorkingDir.delete() - esWorkingDir.mkdir() + httpPort = TestUtils.randomOpenPort() + tcpPort = TestUtils.randomOpenPort() + + esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" def settings = Settings.builder() .put("path.home", esWorkingDir.path) - .put("http.port", HTTP_PORT) - .put("transport.tcp.port", TCP_PORT) + .put("http.port", httpPort) + .put("transport.tcp.port", tcpPort) .put(CLUSTER_NAME_SETTING.getKey(), "test-cluster") .build() testNode = new Node(InternalSettingsPreparer.prepareEnvironment(settings, null), [Netty4Plugin]) @@ -55,7 +58,7 @@ class Elasticsearch6TransportClientTest extends AgentTestRunner { .put(CLUSTER_NAME_SETTING.getKey(), "test-cluster") .build() ) - client.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), TCP_PORT)) + client.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), tcpPort)) TEST_WRITER.clear() client.admin().cluster().prepareHealth().setWaitForYellowStatus().execute().actionGet(5000) TEST_WRITER.waitForTraces(1) @@ -90,7 +93,7 @@ class Elasticsearch6TransportClientTest extends AgentTestRunner { "$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT "$Tags.PEER_HOSTNAME.key" "localhost" "$Tags.PEER_HOST_IPV4.key" "127.0.0.1" - "$Tags.PEER_PORT.key" TCP_PORT + "$Tags.PEER_PORT.key" tcpPort "elasticsearch.action" "ClusterHealthAction" "elasticsearch.request" "ClusterHealthRequest" defaultTags() @@ -185,7 +188,7 @@ class Elasticsearch6TransportClientTest extends AgentTestRunner { "$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT "$Tags.PEER_HOSTNAME.key" "localhost" "$Tags.PEER_HOST_IPV4.key" "127.0.0.1" - "$Tags.PEER_PORT.key" TCP_PORT + "$Tags.PEER_PORT.key" tcpPort "elasticsearch.action" "CreateIndexAction" "elasticsearch.request" "CreateIndexRequest" "elasticsearch.request.indices" indexName @@ -204,7 +207,7 @@ class Elasticsearch6TransportClientTest extends AgentTestRunner { "$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT "$Tags.PEER_HOSTNAME.key" "localhost" "$Tags.PEER_HOST_IPV4.key" "127.0.0.1" - "$Tags.PEER_PORT.key" TCP_PORT + "$Tags.PEER_PORT.key" tcpPort "elasticsearch.action" "GetAction" "elasticsearch.request" "GetRequest" "elasticsearch.request.indices" indexName @@ -241,7 +244,7 @@ class Elasticsearch6TransportClientTest extends AgentTestRunner { "$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT "$Tags.PEER_HOSTNAME.key" "localhost" "$Tags.PEER_HOST_IPV4.key" "127.0.0.1" - "$Tags.PEER_PORT.key" TCP_PORT + "$Tags.PEER_PORT.key" tcpPort "elasticsearch.action" "IndexAction" "elasticsearch.request" "IndexRequest" "elasticsearch.request.indices" indexName @@ -267,7 +270,7 @@ class Elasticsearch6TransportClientTest extends AgentTestRunner { "$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT "$Tags.PEER_HOSTNAME.key" "localhost" "$Tags.PEER_HOST_IPV4.key" "127.0.0.1" - "$Tags.PEER_PORT.key" TCP_PORT + "$Tags.PEER_PORT.key" tcpPort "elasticsearch.action" "GetAction" "elasticsearch.request" "GetRequest" "elasticsearch.request.indices" indexName From f1466304e81542163a6211cc58eb71ab538f1a12 Mon Sep 17 00:00:00 2001 From: Nikolay Martynov Date: Fri, 20 Jul 2018 11:51:22 -0400 Subject: [PATCH 2/2] Move random port generation to actual usage in tests using listening ports --- .../JSPInstrumentationBasicTests.groovy | 159 +++++++-------- .../JSPInstrumentationForwardTests.groovy | 181 +++++++++--------- .../test/groovy/LettuceAsyncClientTest.groovy | 66 ++++--- .../groovy/LettuceReactiveClientTest.groovy | 30 ++- .../test/groovy/LettuceSyncClientTest.groovy | 62 ++++-- .../src/test/groovy/Netty40ClientTest.groovy | 13 +- .../src/test/groovy/Netty41ClientTest.groovy | 13 +- .../latestDepTest/groovy/Play26Test.groovy | 3 +- .../src/test/groovy/Play24Test.groovy | 3 +- .../src/test/groovy/JettyServlet2Test.groovy | 22 ++- .../src/test/groovy/JettyServlet3Test.groovy | 23 +-- .../src/test/groovy/TomcatServlet3Test.groovy | 19 +- .../src/test/groovy/SparkJavaBasedTest.groovy | 20 +- 13 files changed, 349 insertions(+), 265 deletions(-) diff --git a/dd-java-agent/instrumentation/jsp-2.3/src/test/groovy/JSPInstrumentationBasicTests.groovy b/dd-java-agent/instrumentation/jsp-2.3/src/test/groovy/JSPInstrumentationBasicTests.groovy index 6c8d07d5b9..78a3f7038b 100644 --- a/dd-java-agent/instrumentation/jsp-2.3/src/test/groovy/JSPInstrumentationBasicTests.groovy +++ b/dd-java-agent/instrumentation/jsp-2.3/src/test/groovy/JSPInstrumentationBasicTests.groovy @@ -11,6 +11,7 @@ import okhttp3.Response import org.apache.catalina.Context import org.apache.catalina.startup.Tomcat import org.apache.jasper.JasperException +import spock.lang.Shared import spock.lang.Unroll import static datadog.trace.agent.test.ListWriterAssert.assertTraces @@ -27,7 +28,22 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { System.setProperty("org.apache.catalina.startup.TldConfig.jarsToSkip", "*") } - static final int PORT = TestUtils.randomOpenPort() + @Shared + int port + @Shared + Tomcat tomcatServer + @Shared + Context appContext + @Shared + String jspWebappContext = "jsptest-context" + + @Shared + File baseDir + @Shared + String baseUrl + @Shared + String expectedJspClassFilesDir = "/work/Tomcat/localhost/$jspWebappContext/org/apache/jsp/" + OkHttpClient client = new OkHttpClient.Builder() // Uncomment when debugging: // .connectTimeout(1, TimeUnit.HOURS) @@ -35,32 +51,25 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { // .readTimeout(1, TimeUnit.HOURS) .build() - static Tomcat tomcatServer - static Context appContext - static final String JSP_WEBAPP_CONTEXT = "jsptest-context" - - static File baseDir - static String baseUrl - static String expectedJspClassFilesDir = "/work/Tomcat/localhost/$JSP_WEBAPP_CONTEXT/org/apache/jsp/" - def setupSpec() { + port = TestUtils.randomOpenPort() tomcatServer = new Tomcat() - tomcatServer.setPort(PORT) + tomcatServer.setPort(port) // comment to debug tomcatServer.setSilent(true) baseDir = Files.createTempDir() baseDir.deleteOnExit() expectedJspClassFilesDir = baseDir.getCanonicalFile().getAbsolutePath() + expectedJspClassFilesDir - baseUrl = "http://localhost:$PORT/$JSP_WEBAPP_CONTEXT" + baseUrl = "http://localhost:$port/$jspWebappContext" tomcatServer.setBaseDir(baseDir.getAbsolutePath()) - appContext = tomcatServer.addWebapp("/$JSP_WEBAPP_CONTEXT", + appContext = tomcatServer.addWebapp("/$jspWebappContext", JSPInstrumentationBasicTests.getResource("/webapps/jsptest").getPath()) tomcatServer.start() System.out.println( - "Tomcat server: http://" + tomcatServer.getHost().getName() + ":" + PORT + "/") + "Tomcat server: http://" + tomcatServer.getHost().getName() + ":" + port + "/") } def cleanupSpec() { @@ -82,25 +91,25 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { trace(0, 3) { span(0) { parent() - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "servlet.request" - resourceName "GET /$JSP_WEBAPP_CONTEXT/$jspFileName" + resourceName "GET /$jspWebappContext/$jspFileName" spanType DDSpanTypes.WEB_SERVLET errored false tags { - "http.url" "http://localhost:$PORT/$JSP_WEBAPP_CONTEXT/$jspFileName" + "http.url" "http://localhost:$port/$jspWebappContext/$jspFileName" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "http.status_code" 200 defaultTags() } } span(1) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/$jspFileName" spanType DDSpanTypes.WEB_SERVLET @@ -109,14 +118,14 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.requestURL" reqUrl defaultTags() } } span(2) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/$jspFileName" spanType DDSpanTypes.WEB_SERVLET @@ -125,7 +134,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.$jspClassNamePrefix$jspClassName" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() @@ -159,25 +168,25 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { trace(0, 3) { span(0) { parent() - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "servlet.request" - resourceName "GET /$JSP_WEBAPP_CONTEXT/getQuery.jsp" + resourceName "GET /$jspWebappContext/getQuery.jsp" spanType DDSpanTypes.WEB_SERVLET errored false tags { - "http.url" "http://localhost:$PORT/$JSP_WEBAPP_CONTEXT/getQuery.jsp" + "http.url" "http://localhost:$port/$jspWebappContext/getQuery.jsp" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "http.status_code" 200 defaultTags() } } span(1) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/getQuery.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -186,14 +195,14 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.requestURL" reqUrl defaultTags() } } span(2) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/getQuery.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -202,7 +211,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.getQuery_jsp" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() @@ -233,25 +242,25 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { trace(0, 3) { span(0) { parent() - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "servlet.request" - resourceName "POST /$JSP_WEBAPP_CONTEXT/post.jsp" + resourceName "POST /$jspWebappContext/post.jsp" spanType DDSpanTypes.WEB_SERVLET errored false tags { - "http.url" "http://localhost:$PORT/$JSP_WEBAPP_CONTEXT/post.jsp" + "http.url" "http://localhost:$port/$jspWebappContext/post.jsp" "http.method" "POST" "span.kind" "server" "component" "java-web-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "http.status_code" 200 defaultTags() } } span(1) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/post.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -260,14 +269,14 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.requestURL" reqUrl defaultTags() } } span(2) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/post.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -276,7 +285,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.post_jsp" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() @@ -304,18 +313,18 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { trace(0, 3) { span(0) { parent() - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "servlet.request" - resourceName "GET /$JSP_WEBAPP_CONTEXT/$jspFileName" + resourceName "GET /$jspWebappContext/$jspFileName" spanType DDSpanTypes.WEB_SERVLET errored true tags { - "http.url" "http://localhost:$PORT/$JSP_WEBAPP_CONTEXT/$jspFileName" + "http.url" "http://localhost:$port/$jspWebappContext/$jspFileName" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "http.status_code" 500 errorTags(JasperException, String) defaultTags() @@ -323,7 +332,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { } span(1) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/$jspFileName" spanType DDSpanTypes.WEB_SERVLET @@ -332,7 +341,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.requestURL" reqUrl errorTags(exceptionClass, errorMessage) defaultTags() @@ -340,7 +349,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { } span(2) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/$jspFileName" spanType DDSpanTypes.WEB_SERVLET @@ -349,7 +358,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.$jspClassName" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() @@ -382,25 +391,25 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { trace(0, 3) { span(0) { parent() - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "servlet.request" - resourceName "GET /$JSP_WEBAPP_CONTEXT/includes/includeHtml.jsp" + resourceName "GET /$jspWebappContext/includes/includeHtml.jsp" spanType DDSpanTypes.WEB_SERVLET errored false tags { - "http.url" "http://localhost:$PORT/$JSP_WEBAPP_CONTEXT/includes/includeHtml.jsp" + "http.url" "http://localhost:$port/$jspWebappContext/includes/includeHtml.jsp" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "http.status_code" 200 defaultTags() } } span(1) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/includes/includeHtml.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -409,14 +418,14 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.requestURL" reqUrl defaultTags() } } span(2) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/includes/includeHtml.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -425,7 +434,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.includes.includeHtml_jsp" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() @@ -452,25 +461,25 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { trace(0, 7) { span(0) { parent() - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "servlet.request" - resourceName "GET /$JSP_WEBAPP_CONTEXT/includes/includeMulti.jsp" + resourceName "GET /$jspWebappContext/includes/includeMulti.jsp" spanType DDSpanTypes.WEB_SERVLET errored false tags { - "http.url" "http://localhost:$PORT/$JSP_WEBAPP_CONTEXT/includes/includeMulti.jsp" + "http.url" "http://localhost:$port/$jspWebappContext/includes/includeMulti.jsp" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "http.status_code" 200 defaultTags() } } span(1) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/includes/includeMulti.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -479,14 +488,14 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.requestURL" reqUrl defaultTags() } } span(2) { childOf span(1) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/common/javaLoopH2.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -495,14 +504,14 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.requestURL" reqUrl defaultTags() } } span(3) { childOf span(1) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/common/javaLoopH2.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -511,7 +520,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.common.javaLoopH2_jsp" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() @@ -519,7 +528,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { } span(4) { childOf span(1) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/common/javaLoopH2.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -528,14 +537,14 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.requestURL" reqUrl defaultTags() } } span(5) { childOf span(1) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/common/javaLoopH2.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -544,7 +553,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.common.javaLoopH2_jsp" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() @@ -552,7 +561,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { } span(6) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/includes/includeMulti.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -561,7 +570,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.includes.includeMulti_jsp" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() @@ -588,18 +597,18 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { trace(0, 2) { span(0) { parent() - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "servlet.request" - resourceName "GET /$JSP_WEBAPP_CONTEXT/$jspFileName" + resourceName "GET /$jspWebappContext/$jspFileName" spanType DDSpanTypes.WEB_SERVLET errored true tags { - "http.url" "http://localhost:$PORT/$JSP_WEBAPP_CONTEXT/$jspFileName" + "http.url" "http://localhost:$port/$jspWebappContext/$jspFileName" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "http.status_code" 500 errorTags(JasperException, String) defaultTags() @@ -607,7 +616,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { } span(1) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/$jspFileName" spanType DDSpanTypes.WEB_SERVLET @@ -616,7 +625,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.$jspClassNamePrefix$jspClassName" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" "jsp.javaFile" expectedJspClassFilesDir + jspClassNamePrefix.replace('.', '/') + jspClassName + ".java" diff --git a/dd-java-agent/instrumentation/jsp-2.3/src/test/groovy/JSPInstrumentationForwardTests.groovy b/dd-java-agent/instrumentation/jsp-2.3/src/test/groovy/JSPInstrumentationForwardTests.groovy index 5c01d96eb8..6f0007d34c 100644 --- a/dd-java-agent/instrumentation/jsp-2.3/src/test/groovy/JSPInstrumentationForwardTests.groovy +++ b/dd-java-agent/instrumentation/jsp-2.3/src/test/groovy/JSPInstrumentationForwardTests.groovy @@ -7,6 +7,7 @@ import okhttp3.* import org.apache.catalina.Context import org.apache.catalina.startup.Tomcat import org.apache.jasper.JasperException +import spock.lang.Shared import spock.lang.Unroll import static datadog.trace.agent.test.ListWriterAssert.assertTraces @@ -23,7 +24,22 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { System.setProperty("org.apache.catalina.startup.TldConfig.jarsToSkip", "*") } - static final int PORT = TestUtils.randomOpenPort() + @Shared + int port + @Shared + Tomcat tomcatServer + @Shared + Context appContext + @Shared + String jspWebappContext = "jsptest-context" + + @Shared + File baseDir + @Shared + String baseUrl + @Shared + String expectedJspClassFilesDir = "/work/Tomcat/localhost/$jspWebappContext/org/apache/jsp/" + OkHttpClient client = new OkHttpClient.Builder() // Uncomment when debugging: // .connectTimeout(1, TimeUnit.HOURS) @@ -31,32 +47,25 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { // .readTimeout(1, TimeUnit.HOURS) .build() - static Tomcat tomcatServer - static Context appContext - static final String JSP_WEBAPP_CONTEXT = "jsptest-context" - - static File baseDir - static String baseUrl - static String expectedJspClassFilesDir = "/work/Tomcat/localhost/$JSP_WEBAPP_CONTEXT/org/apache/jsp/" - def setupSpec() { + port = TestUtils.randomOpenPort() tomcatServer = new Tomcat() - tomcatServer.setPort(PORT) + tomcatServer.setPort(port) // comment to debug tomcatServer.setSilent(true) baseDir = Files.createTempDir() baseDir.deleteOnExit() expectedJspClassFilesDir = baseDir.getCanonicalFile().getAbsolutePath() + expectedJspClassFilesDir - baseUrl = "http://localhost:$PORT/$JSP_WEBAPP_CONTEXT" + baseUrl = "http://localhost:$port/$jspWebappContext" tomcatServer.setBaseDir(baseDir.getAbsolutePath()) - appContext = tomcatServer.addWebapp("/$JSP_WEBAPP_CONTEXT", + appContext = tomcatServer.addWebapp("/$jspWebappContext", JSPInstrumentationForwardTests.getResource("/webapps/jsptest").getPath()) tomcatServer.start() System.out.println( - "Tomcat server: http://" + tomcatServer.getHost().getName() + ":" + PORT + "/") + "Tomcat server: http://" + tomcatServer.getHost().getName() + ":" + port + "/") } def cleanupSpec() { @@ -78,25 +87,25 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { trace(0, 5) { span(0) { parent() - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "servlet.request" - resourceName "GET /$JSP_WEBAPP_CONTEXT/$forwardFromFileName" + resourceName "GET /$jspWebappContext/$forwardFromFileName" spanType DDSpanTypes.WEB_SERVLET errored false tags { - "http.url" "http://localhost:$PORT/$JSP_WEBAPP_CONTEXT/$forwardFromFileName" + "http.url" "http://localhost:$port/$jspWebappContext/$forwardFromFileName" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "http.status_code" 200 defaultTags() } } span(1) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/$forwardFromFileName" spanType DDSpanTypes.WEB_SERVLET @@ -105,14 +114,14 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.requestURL" reqUrl defaultTags() } } span(2) { childOf span(1) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/$forwardDestFileName" spanType DDSpanTypes.WEB_SERVLET @@ -121,7 +130,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.forwardOrigin" "/$forwardFromFileName" "jsp.requestURL" baseUrl + "/$forwardDestFileName" defaultTags() @@ -129,7 +138,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { } span(3) { childOf span(1) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/$forwardDestFileName" spanType DDSpanTypes.WEB_SERVLET @@ -138,7 +147,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.$jspForwardDestClassPrefix$jspForwardDestClassName" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() @@ -146,7 +155,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { } span(4) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/$forwardFromFileName" spanType DDSpanTypes.WEB_SERVLET @@ -155,7 +164,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.$jspForwardFromClassPrefix$jspForwardFromClassName" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() @@ -187,25 +196,25 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { trace(0, 3) { span(0) { parent() - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "servlet.request" - resourceName "GET /$JSP_WEBAPP_CONTEXT/forwards/forwardToHtml.jsp" + resourceName "GET /$jspWebappContext/forwards/forwardToHtml.jsp" spanType DDSpanTypes.WEB_SERVLET errored false tags { - "http.url" "http://localhost:$PORT/$JSP_WEBAPP_CONTEXT/forwards/forwardToHtml.jsp" + "http.url" "http://localhost:$port/$jspWebappContext/forwards/forwardToHtml.jsp" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "http.status_code" 200 defaultTags() } } span(1) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/forwards/forwardToHtml.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -214,14 +223,14 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.requestURL" reqUrl defaultTags() } } span(2) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/forwards/forwardToHtml.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -230,7 +239,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.forwards.forwardToHtml_jsp" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() @@ -257,25 +266,25 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { trace(0, 9) { span(0) { parent() - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "servlet.request" - resourceName "GET /$JSP_WEBAPP_CONTEXT/forwards/forwardToIncludeMulti.jsp" + resourceName "GET /$jspWebappContext/forwards/forwardToIncludeMulti.jsp" spanType DDSpanTypes.WEB_SERVLET errored false tags { - "http.url" "http://localhost:$PORT/$JSP_WEBAPP_CONTEXT/forwards/forwardToIncludeMulti.jsp" + "http.url" "http://localhost:$port/$jspWebappContext/forwards/forwardToIncludeMulti.jsp" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "http.status_code" 200 defaultTags() } } span(1) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/forwards/forwardToIncludeMulti.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -284,14 +293,14 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.requestURL" reqUrl defaultTags() } } span(2) { childOf span(1) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/includes/includeMulti.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -300,7 +309,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.forwardOrigin" "/forwards/forwardToIncludeMulti.jsp" "jsp.requestURL" baseUrl + "/includes/includeMulti.jsp" defaultTags() @@ -308,7 +317,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { } span(3) { childOf span(2) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/common/javaLoopH2.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -317,7 +326,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.forwardOrigin" "/forwards/forwardToIncludeMulti.jsp" "jsp.requestURL" baseUrl + "/includes/includeMulti.jsp" defaultTags() @@ -325,7 +334,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { } span(4) { childOf span(2) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/common/javaLoopH2.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -334,7 +343,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.common.javaLoopH2_jsp" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() @@ -342,7 +351,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { } span(5) { childOf span(2) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/common/javaLoopH2.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -351,7 +360,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.forwardOrigin" "/forwards/forwardToIncludeMulti.jsp" "jsp.requestURL" baseUrl + "/includes/includeMulti.jsp" defaultTags() @@ -359,7 +368,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { } span(6) { childOf span(2) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/common/javaLoopH2.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -368,7 +377,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.common.javaLoopH2_jsp" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() @@ -376,7 +385,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { } span(7) { childOf span(1) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/includes/includeMulti.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -385,7 +394,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.includes.includeMulti_jsp" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() @@ -393,7 +402,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { } span(8) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/forwards/forwardToIncludeMulti.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -402,7 +411,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.forwards.forwardToIncludeMulti_jsp" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() @@ -429,25 +438,25 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { trace(0, 7) { span(0) { parent() - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "servlet.request" - resourceName "GET /$JSP_WEBAPP_CONTEXT/forwards/forwardToJspForward.jsp" + resourceName "GET /$jspWebappContext/forwards/forwardToJspForward.jsp" spanType DDSpanTypes.WEB_SERVLET errored false tags { - "http.url" "http://localhost:$PORT/$JSP_WEBAPP_CONTEXT/forwards/forwardToJspForward.jsp" + "http.url" "http://localhost:$port/$jspWebappContext/forwards/forwardToJspForward.jsp" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "http.status_code" 200 defaultTags() } } span(1) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/forwards/forwardToJspForward.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -456,14 +465,14 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.requestURL" reqUrl defaultTags() } } span(2) { childOf span(1) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/forwards/forwardToSimpleJava.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -472,7 +481,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.forwardOrigin" "/forwards/forwardToJspForward.jsp" "jsp.requestURL" baseUrl + "/forwards/forwardToSimpleJava.jsp" defaultTags() @@ -480,7 +489,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { } span(3) { childOf span(2) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/common/loop.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -489,7 +498,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.forwardOrigin" "/forwards/forwardToJspForward.jsp" "jsp.requestURL" baseUrl + "/common/loop.jsp" defaultTags() @@ -497,7 +506,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { } span(4) { childOf span(2) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/common/loop.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -506,7 +515,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.common.loop_jsp" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() @@ -514,7 +523,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { } span(5) { childOf span(1) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/forwards/forwardToSimpleJava.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -523,7 +532,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.forwards.forwardToSimpleJava_jsp" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() @@ -531,7 +540,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { } span(6) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/forwards/forwardToJspForward.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -540,7 +549,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.forwards.forwardToJspForward_jsp" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() @@ -567,18 +576,18 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { trace(0, 4) { span(0) { parent() - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "servlet.request" - resourceName "GET /$JSP_WEBAPP_CONTEXT/forwards/forwardToCompileError.jsp" + resourceName "GET /$jspWebappContext/forwards/forwardToCompileError.jsp" spanType DDSpanTypes.WEB_SERVLET errored true tags { - "http.url" "http://localhost:$PORT/$JSP_WEBAPP_CONTEXT/forwards/forwardToCompileError.jsp" + "http.url" "http://localhost:$port/$jspWebappContext/forwards/forwardToCompileError.jsp" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "http.status_code" 500 errorTags(JasperException, String) defaultTags() @@ -586,7 +595,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { } span(1) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/forwards/forwardToCompileError.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -595,7 +604,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.requestURL" reqUrl errorTags(JasperException, String) defaultTags() @@ -603,7 +612,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { } span(2) { childOf span(1) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/compileError.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -612,7 +621,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.compileError_jsp" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" "jsp.javaFile" expectedJspClassFilesDir + "compileError_jsp.java" @@ -623,7 +632,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { } span(3) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/forwards/forwardToCompileError.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -632,7 +641,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.forwards.forwardToCompileError_jsp" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() @@ -659,25 +668,25 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { trace(0, 3) { span(0) { parent() - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "servlet.request" resourceName "404" spanType DDSpanTypes.WEB_SERVLET errored false tags { - "http.url" "http://localhost:$PORT/$JSP_WEBAPP_CONTEXT/forwards/forwardToNonExistent.jsp" + "http.url" "http://localhost:$port/$jspWebappContext/forwards/forwardToNonExistent.jsp" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "http.status_code" 404 defaultTags() } } span(1) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.render" resourceName "/forwards/forwardToNonExistent.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -686,14 +695,14 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.requestURL" reqUrl defaultTags() } } span(2) { childOf span(0) - serviceName JSP_WEBAPP_CONTEXT + serviceName jspWebappContext operationName "jsp.compile" resourceName "/forwards/forwardToNonExistent.jsp" spanType DDSpanTypes.WEB_SERVLET @@ -702,7 +711,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner { "span.kind" "server" "component" "jsp-http-servlet" "span.type" DDSpanTypes.WEB_SERVLET - "servlet.context" "/$JSP_WEBAPP_CONTEXT" + "servlet.context" "/$jspWebappContext" "jsp.classFQCN" "org.apache.jsp.forwards.forwardToNonExistent_jsp" "jsp.compiler" "org.apache.jasper.compiler.JDTCompiler" defaultTags() diff --git a/dd-java-agent/instrumentation/lettuce-5/src/test/groovy/LettuceAsyncClientTest.groovy b/dd-java-agent/instrumentation/lettuce-5/src/test/groovy/LettuceAsyncClientTest.groovy index c2d46777bf..0f964bda02 100644 --- a/dd-java-agent/instrumentation/lettuce-5/src/test/groovy/LettuceAsyncClientTest.groovy +++ b/dd-java-agent/instrumentation/lettuce-5/src/test/groovy/LettuceAsyncClientTest.groovy @@ -28,23 +28,25 @@ import static datadog.trace.instrumentation.lettuce.LettuceInstrumentationUtil.A class LettuceAsyncClientTest extends AgentTestRunner { public static final String HOST = "127.0.0.1" - public static final int PORT = TestUtils.randomOpenPort() - public static final int INCORRECT_PORT = TestUtils.randomOpenPort() public static final int DB_INDEX = 0 - public static final String DB_ADDR = HOST + ":" + PORT + "/" + DB_INDEX - public static final String DB_ADDR_NON_EXISTENT = HOST + ":" + INCORRECT_PORT + "/" + DB_INDEX - public static final String DB_URI_NON_EXISTENT = "redis://" + DB_ADDR_NON_EXISTENT - public static final String EMBEDDED_DB_URI = "redis://" + DB_ADDR // Disable autoreconnect so we do not get stray traces popping up on server shutdown public static final ClientOptions CLIENT_OPTIONS = ClientOptions.builder().autoReconnect(false).build() @Shared - RedisServer redisServer = RedisServer.builder() - // bind to localhost to avoid firewall popup - .setting("bind " + HOST) - // set max memory to avoid problems in CI - .setting("maxmemory 128M") - .port(PORT).build() + int port + @Shared + int incorrectPort + @Shared + String dbAddr + @Shared + String dbAddrNonExistent + @Shared + String dbUriNonExistent + @Shared + String embeddedDbUri + + @Shared + RedisServer redisServer @Shared Map testHashMap = [ @@ -53,12 +55,30 @@ class LettuceAsyncClientTest extends AgentTestRunner { age: "53" ] - RedisClient redisClient = RedisClient.create(EMBEDDED_DB_URI) + RedisClient redisClient StatefulConnection connection RedisAsyncCommands asyncCommands RedisCommands syncCommands + def setupSpec() { + port = TestUtils.randomOpenPort() + incorrectPort = TestUtils.randomOpenPort() + dbAddr = HOST + ":" + port + "/" + DB_INDEX + dbAddrNonExistent = HOST + ":" + incorrectPort + "/" + DB_INDEX + dbUriNonExistent = "redis://" + dbAddrNonExistent + embeddedDbUri = "redis://" + dbAddr + + redisServer = RedisServer.builder() + // bind to localhost to avoid firewall popup + .setting("bind " + HOST) + // set max memory to avoid problems in CI + .setting("maxmemory 128M") + .port(port).build() + } + def setup() { + redisClient = RedisClient.create(embeddedDbUri) + println "Using redis: $redisServer.args" redisServer.start() redisClient.setOptions(CLIENT_OPTIONS) @@ -81,12 +101,12 @@ class LettuceAsyncClientTest extends AgentTestRunner { def "connect using get on ConnectionFuture"() { setup: - RedisClient testConnectionClient = RedisClient.create(EMBEDDED_DB_URI) + RedisClient testConnectionClient = RedisClient.create(embeddedDbUri) testConnectionClient.setOptions(CLIENT_OPTIONS) when: ConnectionFuture connectionFuture = testConnectionClient.connectAsync(StringCodec.UTF8, - new RedisURI(HOST, PORT, 3, TimeUnit.SECONDS)) + new RedisURI(HOST, port, 3, TimeUnit.SECONDS)) StatefulConnection connection = connectionFuture.get() then: @@ -97,17 +117,17 @@ class LettuceAsyncClientTest extends AgentTestRunner { serviceName "redis" operationName "redis.query" spanType "redis" - resourceName "CONNECT:" + DB_ADDR + resourceName "CONNECT:" + dbAddr errored false tags { defaultTags() "component" "redis-client" - "db.redis.url" DB_ADDR + "db.redis.url" dbAddr "db.redis.dbIndex" 0 "db.type" "redis" "peer.hostname" HOST - "peer.port" PORT + "peer.port" port "span.kind" "client" "span.type" "redis" } @@ -121,12 +141,12 @@ class LettuceAsyncClientTest extends AgentTestRunner { def "connect exception inside the connection future"() { setup: - RedisClient testConnectionClient = RedisClient.create(DB_URI_NON_EXISTENT) + RedisClient testConnectionClient = RedisClient.create(dbUriNonExistent) testConnectionClient.setOptions(CLIENT_OPTIONS) when: ConnectionFuture connectionFuture = testConnectionClient.connectAsync(StringCodec.UTF8, - new RedisURI(HOST, INCORRECT_PORT, 3, TimeUnit.SECONDS)) + new RedisURI(HOST, incorrectPort, 3, TimeUnit.SECONDS)) StatefulConnection connection = connectionFuture.get() then: @@ -138,18 +158,18 @@ class LettuceAsyncClientTest extends AgentTestRunner { serviceName "redis" operationName "redis.query" spanType "redis" - resourceName "CONNECT:" + DB_ADDR_NON_EXISTENT + resourceName "CONNECT:" + dbAddrNonExistent errored true tags { defaultTags() "component" "redis-client" - "db.redis.url" DB_ADDR_NON_EXISTENT + "db.redis.url" dbAddrNonExistent "db.redis.dbIndex" 0 "db.type" "redis" errorTags CompletionException, String "peer.hostname" HOST - "peer.port" INCORRECT_PORT + "peer.port" incorrectPort "span.kind" "client" "span.type" "redis" } diff --git a/dd-java-agent/instrumentation/lettuce-5/src/test/groovy/LettuceReactiveClientTest.groovy b/dd-java-agent/instrumentation/lettuce-5/src/test/groovy/LettuceReactiveClientTest.groovy index 83f1e02a26..45f019f83e 100644 --- a/dd-java-agent/instrumentation/lettuce-5/src/test/groovy/LettuceReactiveClientTest.groovy +++ b/dd-java-agent/instrumentation/lettuce-5/src/test/groovy/LettuceReactiveClientTest.groovy @@ -15,27 +15,37 @@ import static datadog.trace.instrumentation.lettuce.LettuceInstrumentationUtil.A class LettuceReactiveClientTest extends AgentTestRunner { public static final String HOST = "127.0.0.1" - public static final int PORT = TestUtils.randomOpenPort() public static final int DB_INDEX = 0 - public static final String DB_ADDR = HOST + ":" + PORT + "/" + DB_INDEX - public static final String EMBEDDED_DB_URI = "redis://" + DB_ADDR // Disable autoreconnect so we do not get stray traces popping up on server shutdown public static final ClientOptions CLIENT_OPTIONS = ClientOptions.builder().autoReconnect(false).build() @Shared - RedisServer redisServer = RedisServer.builder() - // bind to localhost to avoid firewall popup - .setting("bind " + HOST) - // set max memory to avoid problems in CI - .setting("maxmemory 128M") - .port(PORT).build() + String embeddedDbUri - RedisClient redisClient = RedisClient.create(EMBEDDED_DB_URI) + @Shared + RedisServer redisServer + + RedisClient redisClient StatefulConnection connection RedisReactiveCommands reactiveCommands RedisCommands syncCommands + def setupSpec() { + int port = TestUtils.randomOpenPort() + String dbAddr = HOST + ":" + port + "/" + DB_INDEX + embeddedDbUri = "redis://" + dbAddr + + redisServer = RedisServer.builder() + // bind to localhost to avoid firewall popup + .setting("bind " + HOST) + // set max memory to avoid problems in CI + .setting("maxmemory 128M") + .port(port).build() + } + def setup() { + redisClient = RedisClient.create(embeddedDbUri) + println "Using redis: $redisServer.args" redisServer.start() redisClient.setOptions(CLIENT_OPTIONS) diff --git a/dd-java-agent/instrumentation/lettuce-5/src/test/groovy/LettuceSyncClientTest.groovy b/dd-java-agent/instrumentation/lettuce-5/src/test/groovy/LettuceSyncClientTest.groovy index 47dc1033ed..f2dadabf18 100644 --- a/dd-java-agent/instrumentation/lettuce-5/src/test/groovy/LettuceSyncClientTest.groovy +++ b/dd-java-agent/instrumentation/lettuce-5/src/test/groovy/LettuceSyncClientTest.groovy @@ -15,23 +15,25 @@ import static datadog.trace.instrumentation.lettuce.LettuceInstrumentationUtil.A class LettuceSyncClientTest extends AgentTestRunner { public static final String HOST = "127.0.0.1" - public static final int PORT = TestUtils.randomOpenPort() - public static final int INCORRECT_PORT = TestUtils.randomOpenPort() public static final int DB_INDEX = 0 - public static final String DB_ADDR = HOST + ":" + PORT + "/" + DB_INDEX - public static final String DB_ADDR_NON_EXISTENT = HOST + ":" + INCORRECT_PORT + "/" + DB_INDEX - public static final String DB_URI_NON_EXISTENT = "redis://" + DB_ADDR_NON_EXISTENT - public static final String EMBEDDED_DB_URI = "redis://" + DB_ADDR // Disable autoreconnect so we do not get stray traces popping up on server shutdown public static final ClientOptions CLIENT_OPTIONS = ClientOptions.builder().autoReconnect(false).build() @Shared - RedisServer redisServer = RedisServer.builder() - // bind to localhost to avoid firewall popup - .setting("bind " + HOST) - // set max memory to avoid problems in CI - .setting("maxmemory 128M") - .port(PORT).build() + int port + @Shared + int incorrectPort + @Shared + String dbAddr + @Shared + String dbAddrNonExistent + @Shared + String dbUriNonExistent + @Shared + String embeddedDbUri + + @Shared + RedisServer redisServer @Shared Map testHashMap = [ @@ -40,11 +42,29 @@ class LettuceSyncClientTest extends AgentTestRunner { age: "53" ] - RedisClient redisClient = RedisClient.create(EMBEDDED_DB_URI) + RedisClient redisClient StatefulConnection connection RedisCommands syncCommands + def setupSpec() { + port = TestUtils.randomOpenPort() + incorrectPort = TestUtils.randomOpenPort() + dbAddr = HOST + ":" + port + "/" + DB_INDEX + dbAddrNonExistent = HOST + ":" + incorrectPort + "/" + DB_INDEX + dbUriNonExistent = "redis://" + dbAddrNonExistent + embeddedDbUri = "redis://" + dbAddr + + redisServer = RedisServer.builder() + // bind to localhost to avoid firewall popup + .setting("bind " + HOST) + // set max memory to avoid problems in CI + .setting("maxmemory 128M") + .port(port).build() + } + def setup() { + redisClient = RedisClient.create(embeddedDbUri) + redisServer.start() connection = redisClient.connect() syncCommands = connection.sync() @@ -64,7 +84,7 @@ class LettuceSyncClientTest extends AgentTestRunner { def "connect"() { setup: - RedisClient testConnectionClient = RedisClient.create(EMBEDDED_DB_URI) + RedisClient testConnectionClient = RedisClient.create(embeddedDbUri) testConnectionClient.setOptions(CLIENT_OPTIONS) when: @@ -77,17 +97,17 @@ class LettuceSyncClientTest extends AgentTestRunner { serviceName "redis" operationName "redis.query" spanType "redis" - resourceName "CONNECT:" + DB_ADDR + resourceName "CONNECT:" + dbAddr errored false tags { defaultTags() "component" "redis-client" - "db.redis.url" DB_ADDR + "db.redis.url" dbAddr "db.redis.dbIndex" 0 "db.type" "redis" "peer.hostname" HOST - "peer.port" PORT + "peer.port" port "span.kind" "client" "span.type" "redis" } @@ -101,7 +121,7 @@ class LettuceSyncClientTest extends AgentTestRunner { def "connect exception"() { setup: - RedisClient testConnectionClient = RedisClient.create(DB_URI_NON_EXISTENT) + RedisClient testConnectionClient = RedisClient.create(dbUriNonExistent) testConnectionClient.setOptions(CLIENT_OPTIONS) when: @@ -115,18 +135,18 @@ class LettuceSyncClientTest extends AgentTestRunner { serviceName "redis" operationName "redis.query" spanType "redis" - resourceName "CONNECT:" + DB_ADDR_NON_EXISTENT + resourceName "CONNECT:" + dbAddrNonExistent errored true tags { defaultTags() "component" "redis-client" - "db.redis.url" DB_ADDR_NON_EXISTENT + "db.redis.url" dbAddrNonExistent "db.redis.dbIndex" 0 "db.type" "redis" errorTags CompletionException, String "peer.hostname" HOST - "peer.port" INCORRECT_PORT + "peer.port" incorrectPort "span.kind" "client" "span.type" "redis" } diff --git a/dd-java-agent/instrumentation/netty-4.0/src/test/groovy/Netty40ClientTest.groovy b/dd-java-agent/instrumentation/netty-4.0/src/test/groovy/Netty40ClientTest.groovy index c178a016c5..4b5c845ab0 100644 --- a/dd-java-agent/instrumentation/netty-4.0/src/test/groovy/Netty40ClientTest.groovy +++ b/dd-java-agent/instrumentation/netty-4.0/src/test/groovy/Netty40ClientTest.groovy @@ -22,10 +22,10 @@ class Netty40ClientTest extends AgentTestRunner { System.setProperty("dd.integration.netty.enabled", "true") } - static final PORT = TestUtils.randomOpenPort() - @Shared - Server server = new Server(PORT) + int port + @Shared + Server server @Shared AsyncHttpClient asyncHttpClient = asyncHttpClient() // DefaultAsyncHttpClientConfig.Builder.newInstance().setRequestTimeout(Integer.MAX_VALUE).build()) @@ -34,6 +34,9 @@ class Netty40ClientTest extends AgentTestRunner { def setupSpec() { + port = TestUtils.randomOpenPort() + server = new Server(port) + Handler handler = [ handle: { String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response -> request.getHeaderNames().each { @@ -59,7 +62,7 @@ class Netty40ClientTest extends AgentTestRunner { def "test server request/response"() { setup: - def responseFuture = asyncHttpClient.prepareGet("http://localhost:$PORT/").execute() + def responseFuture = asyncHttpClient.prepareGet("http://localhost:$port/").execute() def response = responseFuture.get() expect: @@ -79,7 +82,7 @@ class Netty40ClientTest extends AgentTestRunner { "$Tags.COMPONENT.key" "netty-client" "$Tags.HTTP_METHOD.key" "GET" "$Tags.HTTP_STATUS.key" 200 - "$Tags.HTTP_URL.key" "http://localhost:$PORT/" + "$Tags.HTTP_URL.key" "http://localhost:$port/" "$Tags.PEER_HOSTNAME.key" "localhost" "$Tags.PEER_PORT.key" Integer "$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT diff --git a/dd-java-agent/instrumentation/netty-4.1/src/test/groovy/Netty41ClientTest.groovy b/dd-java-agent/instrumentation/netty-4.1/src/test/groovy/Netty41ClientTest.groovy index 562e539271..faaca384ee 100644 --- a/dd-java-agent/instrumentation/netty-4.1/src/test/groovy/Netty41ClientTest.groovy +++ b/dd-java-agent/instrumentation/netty-4.1/src/test/groovy/Netty41ClientTest.groovy @@ -22,10 +22,10 @@ class Netty41ClientTest extends AgentTestRunner { System.setProperty("dd.integration.netty.enabled", "true") } - static final PORT = TestUtils.randomOpenPort() - @Shared - Server server = new Server(PORT) + int port + @Shared + Server server @Shared AsyncHttpClient asyncHttpClient = asyncHttpClient() // DefaultAsyncHttpClientConfig.Builder.newInstance().setRequestTimeout(Integer.MAX_VALUE).build()) @@ -34,6 +34,9 @@ class Netty41ClientTest extends AgentTestRunner { def setupSpec() { + port = TestUtils.randomOpenPort() + server = new Server(port) + Handler handler = [ handle: { String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response -> request.getHeaderNames().each { @@ -59,7 +62,7 @@ class Netty41ClientTest extends AgentTestRunner { def "test server request/response"() { setup: - def responseFuture = asyncHttpClient.prepareGet("http://localhost:$PORT/").execute() + def responseFuture = asyncHttpClient.prepareGet("http://localhost:$port/").execute() def response = responseFuture.get() expect: @@ -79,7 +82,7 @@ class Netty41ClientTest extends AgentTestRunner { "$Tags.COMPONENT.key" "netty-client" "$Tags.HTTP_METHOD.key" "GET" "$Tags.HTTP_STATUS.key" 200 - "$Tags.HTTP_URL.key" "http://localhost:$PORT/" + "$Tags.HTTP_URL.key" "http://localhost:$port/" "$Tags.PEER_HOSTNAME.key" "localhost" "$Tags.PEER_PORT.key" Integer "$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT diff --git a/dd-java-agent/instrumentation/play-2.4/src/latestDepTest/groovy/Play26Test.groovy b/dd-java-agent/instrumentation/play-2.4/src/latestDepTest/groovy/Play26Test.groovy index 15d047c449..929f7c1432 100644 --- a/dd-java-agent/instrumentation/play-2.4/src/latestDepTest/groovy/Play26Test.groovy +++ b/dd-java-agent/instrumentation/play-2.4/src/latestDepTest/groovy/Play26Test.groovy @@ -14,11 +14,12 @@ class Play26Test extends AgentTestRunner { } @Shared - int port = TestUtils.randomOpenPort() + int port @Shared TestServer testServer def setupSpec() { + port = TestUtils.randomOpenPort() testServer = Helpers.testServer(port, Play26TestUtils.buildTestApp()) testServer.start() } diff --git a/dd-java-agent/instrumentation/play-2.4/src/test/groovy/Play24Test.groovy b/dd-java-agent/instrumentation/play-2.4/src/test/groovy/Play24Test.groovy index ea6e0ca9e1..e3fa32ab40 100644 --- a/dd-java-agent/instrumentation/play-2.4/src/test/groovy/Play24Test.groovy +++ b/dd-java-agent/instrumentation/play-2.4/src/test/groovy/Play24Test.groovy @@ -9,11 +9,12 @@ import spock.lang.Shared class Play24Test extends AgentTestRunner { @Shared - int port = TestUtils.randomOpenPort() + int port @Shared TestServer testServer def setupSpec() { + port = TestUtils.randomOpenPort() testServer = Helpers.testServer(port, Play24TestUtils.buildTestApp()) testServer.start() } diff --git a/dd-java-agent/instrumentation/servlet-2/src/test/groovy/JettyServlet2Test.groovy b/dd-java-agent/instrumentation/servlet-2/src/test/groovy/JettyServlet2Test.groovy index a5804f62a4..c9aae8832a 100644 --- a/dd-java-agent/instrumentation/servlet-2/src/test/groovy/JettyServlet2Test.groovy +++ b/dd-java-agent/instrumentation/servlet-2/src/test/groovy/JettyServlet2Test.groovy @@ -28,10 +28,11 @@ import static datadog.trace.agent.test.ListWriterAssert.assertTraces class JettyServlet2Test extends AgentTestRunner { - static final int PORT = TestUtils.randomOpenPort() - // Jetty needs this to ensure consistent ordering for async. CountDownLatch latch = new CountDownLatch(1) + + int port + OkHttpClient client = new OkHttpClient.Builder() .addNetworkInterceptor(new Interceptor() { @Override @@ -60,7 +61,8 @@ class JettyServlet2Test extends AgentTestRunner { DDTracer tracer = new DDTracer(writer) def setup() { - jettyServer = new Server(PORT) + port = TestUtils.randomOpenPort() + jettyServer = new Server(port) servletContext = new ServletContextHandler() ConstraintSecurityHandler security = setupAuthentication(jettyServer) @@ -73,7 +75,7 @@ class JettyServlet2Test extends AgentTestRunner { jettyServer.start() System.out.println( - "Jetty server: http://localhost:" + PORT + "/") + "Jetty server: http://localhost:" + port + "/") try { GlobalTracer.register(tracer) @@ -95,7 +97,7 @@ class JettyServlet2Test extends AgentTestRunner { def "test #path servlet call"() { setup: def requestBuilder = new Request.Builder() - .url("http://localhost:$PORT/$path") + .url("http://localhost:$port/$path") .get() if (auth) { requestBuilder.header(HttpHeaders.AUTHORIZATION, Credentials.basic("user", "password")) @@ -115,7 +117,7 @@ class JettyServlet2Test extends AgentTestRunner { errored false parent() tags { - "http.url" "http://localhost:$PORT/$path" + "http.url" "http://localhost:$port/$path" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" @@ -139,7 +141,7 @@ class JettyServlet2Test extends AgentTestRunner { def "test #path error servlet call"() { setup: def request = new Request.Builder() - .url("http://localhost:$PORT/$path?error=true") + .url("http://localhost:$port/$path?error=true") .get() .build() def response = client.newCall(request).execute() @@ -157,7 +159,7 @@ class JettyServlet2Test extends AgentTestRunner { errored true parent() tags { - "http.url" "http://localhost:$PORT/$path" + "http.url" "http://localhost:$port/$path" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" @@ -179,7 +181,7 @@ class JettyServlet2Test extends AgentTestRunner { // This doesn't actually detect the error because we can't get the status code via the old servlet API. setup: def request = new Request.Builder() - .url("http://localhost:$PORT/$path?non-throwing-error=true") + .url("http://localhost:$port/$path?non-throwing-error=true") .get() .build() def response = client.newCall(request).execute() @@ -197,7 +199,7 @@ class JettyServlet2Test extends AgentTestRunner { errored false parent() tags { - "http.url" "http://localhost:$PORT/$path" + "http.url" "http://localhost:$port/$path" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" diff --git a/dd-java-agent/instrumentation/servlet-3/src/test/groovy/JettyServlet3Test.groovy b/dd-java-agent/instrumentation/servlet-3/src/test/groovy/JettyServlet3Test.groovy index 473b8f7467..4f5cddc99e 100644 --- a/dd-java-agent/instrumentation/servlet-3/src/test/groovy/JettyServlet3Test.groovy +++ b/dd-java-agent/instrumentation/servlet-3/src/test/groovy/JettyServlet3Test.groovy @@ -28,11 +28,11 @@ import static datadog.trace.agent.test.ListWriterAssert.assertTraces class JettyServlet3Test extends AgentTestRunner { - static final int PORT = TestUtils.randomOpenPort() - // Jetty needs this to ensure consistent ordering for async. CountDownLatch latch = new CountDownLatch(1) + int port + OkHttpClient client = new OkHttpClient.Builder() .addNetworkInterceptor(new Interceptor() { @Override @@ -61,7 +61,8 @@ class JettyServlet3Test extends AgentTestRunner { DDTracer tracer = new DDTracer(writer) def setup() { - jettyServer = new Server(PORT) + port = TestUtils.randomOpenPort() + jettyServer = new Server(port) servletContext = new ServletContextHandler() ConstraintSecurityHandler security = setupAuthentication(jettyServer) @@ -76,7 +77,7 @@ class JettyServlet3Test extends AgentTestRunner { jettyServer.start() System.out.println( - "Jetty server: http://localhost:" + PORT + "/") + "Jetty server: http://localhost:" + port + "/") try { GlobalTracer.register(tracer) @@ -98,7 +99,7 @@ class JettyServlet3Test extends AgentTestRunner { def "test #path servlet call"() { setup: def requestBuilder = new Request.Builder() - .url("http://localhost:$PORT/$path") + .url("http://localhost:$port/$path") .get() if (auth) { requestBuilder.header(HttpHeaders.AUTHORIZATION, Credentials.basic("user", "password")) @@ -118,7 +119,7 @@ class JettyServlet3Test extends AgentTestRunner { errored false parent() tags { - "http.url" "http://localhost:$PORT/$path" + "http.url" "http://localhost:$port/$path" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" @@ -145,7 +146,7 @@ class JettyServlet3Test extends AgentTestRunner { def "servlet instrumentation clears state after async request"() { setup: def request = new Request.Builder() - .url("http://localhost:$PORT/async") + .url("http://localhost:$port/async") .get() .build() def numTraces = 5 @@ -170,7 +171,7 @@ class JettyServlet3Test extends AgentTestRunner { def "test #path error servlet call"() { setup: def request = new Request.Builder() - .url("http://localhost:$PORT/$path?error=true") + .url("http://localhost:$port/$path?error=true") .get() .build() def response = client.newCall(request).execute() @@ -188,7 +189,7 @@ class JettyServlet3Test extends AgentTestRunner { errored true parent() tags { - "http.url" "http://localhost:$PORT/$path" + "http.url" "http://localhost:$port/$path" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" @@ -211,7 +212,7 @@ class JettyServlet3Test extends AgentTestRunner { def "test #path non-throwing-error servlet call"() { setup: def request = new Request.Builder() - .url("http://localhost:$PORT/$path?non-throwing-error=true") + .url("http://localhost:$port/$path?non-throwing-error=true") .get() .build() def response = client.newCall(request).execute() @@ -229,7 +230,7 @@ class JettyServlet3Test extends AgentTestRunner { errored true parent() tags { - "http.url" "http://localhost:$PORT/$path" + "http.url" "http://localhost:$port/$path" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" diff --git a/dd-java-agent/instrumentation/servlet-3/src/test/groovy/TomcatServlet3Test.groovy b/dd-java-agent/instrumentation/servlet-3/src/test/groovy/TomcatServlet3Test.groovy index 670c0f1045..1b15ee1927 100644 --- a/dd-java-agent/instrumentation/servlet-3/src/test/groovy/TomcatServlet3Test.groovy +++ b/dd-java-agent/instrumentation/servlet-3/src/test/groovy/TomcatServlet3Test.groovy @@ -18,7 +18,7 @@ import static datadog.trace.agent.test.ListWriterAssert.assertTraces class TomcatServlet3Test extends AgentTestRunner { - static final int PORT = TestUtils.randomOpenPort() + int port OkHttpClient client = new OkHttpClient.Builder() // Uncomment when debugging: // .connectTimeout(1, TimeUnit.HOURS) @@ -33,8 +33,9 @@ class TomcatServlet3Test extends AgentTestRunner { DDTracer tracer = new DDTracer(writer) def setup() { + port = TestUtils.randomOpenPort() tomcatServer = new Tomcat() - tomcatServer.setPort(PORT) + tomcatServer.setPort(port) def baseDir = Files.createTempDir() baseDir.deleteOnExit() @@ -61,7 +62,7 @@ class TomcatServlet3Test extends AgentTestRunner { tomcatServer.start() System.out.println( - "Tomcat server: http://" + tomcatServer.getHost().getName() + ":" + PORT + "/") + "Tomcat server: http://" + tomcatServer.getHost().getName() + ":" + port + "/") try { @@ -84,7 +85,7 @@ class TomcatServlet3Test extends AgentTestRunner { def "test #path servlet call"() { setup: def request = new Request.Builder() - .url("http://localhost:$PORT/my-context/$path") + .url("http://localhost:$port/my-context/$path") .get() .build() def response = client.newCall(request).execute() @@ -102,7 +103,7 @@ class TomcatServlet3Test extends AgentTestRunner { errored false parent() tags { - "http.url" "http://localhost:$PORT/my-context/$path" + "http.url" "http://localhost:$port/my-context/$path" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" @@ -124,7 +125,7 @@ class TomcatServlet3Test extends AgentTestRunner { def "test #path error servlet call"() { setup: def request = new Request.Builder() - .url("http://localhost:$PORT/my-context/$path?error=true") + .url("http://localhost:$port/my-context/$path?error=true") .get() .build() def response = client.newCall(request).execute() @@ -142,7 +143,7 @@ class TomcatServlet3Test extends AgentTestRunner { errored true parent() tags { - "http.url" "http://localhost:$PORT/my-context/$path" + "http.url" "http://localhost:$port/my-context/$path" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" @@ -165,7 +166,7 @@ class TomcatServlet3Test extends AgentTestRunner { def "test #path error servlet call for non-throwing error"() { setup: def request = new Request.Builder() - .url("http://localhost:$PORT/my-context/$path?non-throwing-error=true") + .url("http://localhost:$port/my-context/$path?non-throwing-error=true") .get() .build() def response = client.newCall(request).execute() @@ -183,7 +184,7 @@ class TomcatServlet3Test extends AgentTestRunner { errored true parent() tags { - "http.url" "http://localhost:$PORT/my-context/$path" + "http.url" "http://localhost:$port/my-context/$path" "http.method" "GET" "span.kind" "server" "component" "java-web-servlet" diff --git a/dd-java-agent/instrumentation/sparkjava-2.4/src/test/groovy/SparkJavaBasedTest.groovy b/dd-java-agent/instrumentation/sparkjava-2.4/src/test/groovy/SparkJavaBasedTest.groovy index a482c929cb..0d623a1443 100644 --- a/dd-java-agent/instrumentation/sparkjava-2.4/src/test/groovy/SparkJavaBasedTest.groovy +++ b/dd-java-agent/instrumentation/sparkjava-2.4/src/test/groovy/SparkJavaBasedTest.groovy @@ -5,6 +5,7 @@ import okhttp3.OkHttpClient import okhttp3.Request import spark.Spark import spark.embeddedserver.jetty.JettyHandler +import spock.lang.Shared class SparkJavaBasedTest extends AgentTestRunner { @@ -12,7 +13,9 @@ class SparkJavaBasedTest extends AgentTestRunner { System.setProperty("dd.integration.jetty.enabled", "true") System.setProperty("dd.integration.sparkjava.enabled", "true") } - static final int PORT = TestUtils.randomOpenPort() + + @Shared + int port OkHttpClient client = new OkHttpClient.Builder() // Uncomment when debugging: @@ -22,7 +25,8 @@ class SparkJavaBasedTest extends AgentTestRunner { .build() def setupSpec() { - TestSparkJavaApplication.initSpark(PORT) + port = TestUtils.randomOpenPort() + TestSparkJavaApplication.initSpark(port) } def cleanupSpec() { @@ -32,26 +36,26 @@ class SparkJavaBasedTest extends AgentTestRunner { def "valid response"() { setup: def request = new Request.Builder() - .url("http://localhost:$PORT/") + .url("http://localhost:$port/") .get() .build() def response = client.newCall(request).execute() expect: - PORT != 0 + port != 0 response.body().string() == "Hello World" } def "valid response with registered trace"() { setup: def request = new Request.Builder() - .url("http://localhost:$PORT/") + .url("http://localhost:$port/") .get() .build() def response = client.newCall(request).execute() expect: - PORT != 0 + port != 0 response.body().string() == "Hello World" and: @@ -63,7 +67,7 @@ class SparkJavaBasedTest extends AgentTestRunner { def "generates spans"() { setup: def request = new Request.Builder() - .url("http://localhost:$PORT/param/asdf1234") + .url("http://localhost:$port/param/asdf1234") .get() .build() def response = client.newCall(request).execute() @@ -83,7 +87,7 @@ class SparkJavaBasedTest extends AgentTestRunner { !context.getErrorFlag() context.parentId == 0 def tags = context.tags - tags["http.url"] == "http://localhost:$PORT/param/asdf1234" + tags["http.url"] == "http://localhost:$port/param/asdf1234" tags["http.method"] == "GET" tags["span.kind"] == "server" tags["span.type"] == "web"