This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 6bcdd22d066cbed175c654cd5e7b44625818a7ae Author: Benoit Tellier <[email protected]> AuthorDate: Thu Oct 8 14:29:49 2020 +0700 JAMES-3405 Metrics HTTP endpoint should be opt-in --- .../james/modules/server/MetricsRoutesModule.java | 38 ---------------------- .../james/modules/server/WebAdminServerModule.java | 1 - .../rabbitmq/RabbitMQAuthorizedEndpointsTest.java | 12 ++++++- .../RabbitMQWebAdminServerIntegrationTest.java | 12 ++++++- ...EndpointsTest.java => DisabledMetricsTest.java} | 30 +++++++++++++++-- .../memory/MemoryAuthorizedEndpointsTest.java | 12 ++++++- .../MemoryWebAdminServerIntegrationTest.java | 12 ++++++- 7 files changed, 72 insertions(+), 45 deletions(-) diff --git a/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/MetricsRoutesModule.java b/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/MetricsRoutesModule.java deleted file mode 100644 index 1429b23..0000000 --- a/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/MetricsRoutesModule.java +++ /dev/null @@ -1,38 +0,0 @@ -/**************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one * - * or more contributor license agreements. See the NOTICE file * - * distributed with this work for additional information * - * regarding copyright ownership. The ASF licenses this file * - * to you under the Apache License, Version 2.0 (the * - * "License"); you may not use this file except in compliance * - * with the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, * - * software distributed under the License is distributed on an * - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * - * KIND, either express or implied. See the License for the * - * specific language governing permissions and limitations * - * under the License. * - ****************************************************************/ - -package org.apache.james.modules.server; - -import org.apache.james.webadmin.Routes; -import org.apache.james.webadmin.dropwizard.MetricsRoutes; - -import com.google.inject.AbstractModule; -import com.google.inject.Scopes; -import com.google.inject.multibindings.Multibinder; - -public class MetricsRoutesModule extends AbstractModule { - @Override - protected void configure() { - bind(MetricsRoutes.class).in(Scopes.SINGLETON); - - Multibinder.newSetBinder(binder(), Routes.class) - .addBinding() - .to(MetricsRoutes.class); - } -} diff --git a/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/WebAdminServerModule.java b/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/WebAdminServerModule.java index 42fff3e..ff2f263 100644 --- a/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/WebAdminServerModule.java +++ b/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/WebAdminServerModule.java @@ -78,7 +78,6 @@ public class WebAdminServerModule extends AbstractModule { protected void configure() { install(new TaskRoutesModule()); install(new HealthCheckRoutesModule()); - install(new MetricsRoutesModule()); bind(JsonTransformer.class).in(Scopes.SINGLETON); bind(WebAdminServer.class).in(Scopes.SINGLETON); diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQAuthorizedEndpointsTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQAuthorizedEndpointsTest.java index 31f367f..727de20 100644 --- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQAuthorizedEndpointsTest.java +++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQAuthorizedEndpointsTest.java @@ -30,6 +30,8 @@ import org.apache.james.junit.categories.BasicFeature; import org.apache.james.modules.AwsS3BlobStoreExtension; import org.apache.james.modules.RabbitMQExtension; import org.apache.james.modules.blobstore.BlobStoreConfiguration; +import org.apache.james.webadmin.RandomPortSupplier; +import org.apache.james.webadmin.WebAdminConfiguration; import org.apache.james.webadmin.integration.AuthorizedEndpointsTest; import org.apache.james.webadmin.integration.UnauthorizedModule; import org.apache.james.webadmin.integration.WebadminIntegrationTestModule; @@ -56,7 +58,15 @@ class RabbitMQAuthorizedEndpointsTest extends AuthorizedEndpointsTest { .extension(new RabbitMQExtension()) .server(configuration -> CassandraRabbitMQJamesServerMain.createServer(configuration) .overrideWith(new UnauthorizedModule()) - .overrideWith(new WebadminIntegrationTestModule())) + .overrideWith(new WebadminIntegrationTestModule()) + .overrideWith(binder -> binder.bind(WebAdminConfiguration.class) + .toInstance(WebAdminConfiguration.builder() + .enabled() + .corsDisabled() + .host("127.0.0.1") + .port(new RandomPortSupplier()) + .additionalRoute("org.apache.james.webadmin.dropwizard.MetricsRoutes") + .build()))) .lifeCycle(JamesServerExtension.Lifecycle.PER_CLASS) .build(); } diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java index f410212..7b61442 100644 --- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java +++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java @@ -41,6 +41,8 @@ import org.apache.james.junit.categories.BasicFeature; import org.apache.james.modules.AwsS3BlobStoreExtension; import org.apache.james.modules.RabbitMQExtension; import org.apache.james.modules.blobstore.BlobStoreConfiguration; +import org.apache.james.webadmin.RandomPortSupplier; +import org.apache.james.webadmin.WebAdminConfiguration; import org.apache.james.webadmin.integration.WebAdminServerIntegrationTest; import org.apache.james.webadmin.integration.WebadminIntegrationTestModule; import org.apache.james.webadmin.routes.AliasRoutes; @@ -75,7 +77,15 @@ class RabbitMQWebAdminServerIntegrationTest extends WebAdminServerIntegrationTes .extension(new AwsS3BlobStoreExtension()) .extension(new RabbitMQExtension()) .server(configuration -> CassandraRabbitMQJamesServerMain.createServer(configuration) - .overrideWith(new WebadminIntegrationTestModule())) + .overrideWith(new WebadminIntegrationTestModule()) + .overrideWith(binder -> binder.bind(WebAdminConfiguration.class) + .toInstance(WebAdminConfiguration.builder() + .enabled() + .corsDisabled() + .host("127.0.0.1") + .port(new RandomPortSupplier()) + .additionalRoute("org.apache.james.webadmin.dropwizard.MetricsRoutes") + .build()))) .build(); private static final String VERSION = "/cassandra/version"; diff --git a/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryAuthorizedEndpointsTest.java b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/DisabledMetricsTest.java similarity index 69% copy from server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryAuthorizedEndpointsTest.java copy to server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/DisabledMetricsTest.java index 8ab6edd..e85e100 100644 --- a/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryAuthorizedEndpointsTest.java +++ b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/DisabledMetricsTest.java @@ -19,15 +19,24 @@ package org.apache.james.webadmin.integration.memory; +import static io.restassured.RestAssured.when; + +import org.apache.james.GuiceJamesServer; import org.apache.james.JamesServerBuilder; import org.apache.james.JamesServerExtension; import org.apache.james.MemoryJamesServerMain; -import org.apache.james.webadmin.integration.AuthorizedEndpointsTest; +import org.apache.james.utils.WebAdminGuiceProbe; +import org.apache.james.webadmin.WebAdminUtils; import org.apache.james.webadmin.integration.UnauthorizedModule; import org.apache.james.webadmin.integration.WebadminIntegrationTestModule; +import org.eclipse.jetty.http.HttpStatus; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -class MemoryAuthorizedEndpointsTest extends AuthorizedEndpointsTest { +import io.restassured.RestAssured; + +class DisabledMetricsTest { @RegisterExtension static JamesServerExtension jamesServerExtension = new JamesServerBuilder<>(JamesServerBuilder.defaultConfigurationProvider()) .server(configuration -> MemoryJamesServerMain.createServer(configuration) @@ -35,4 +44,21 @@ class MemoryAuthorizedEndpointsTest extends AuthorizedEndpointsTest { .overrideWith(new UnauthorizedModule())) .lifeCycle(JamesServerExtension.Lifecycle.PER_CLASS) .build(); + + + @BeforeEach + void setUp(GuiceJamesServer guiceJamesServer) { + WebAdminGuiceProbe webAdminGuiceProbe = guiceJamesServer.getProbe(WebAdminGuiceProbe.class); + + RestAssured.requestSpecification = WebAdminUtils.buildRequestSpecification(webAdminGuiceProbe.getWebAdminPort()) + .build(); + } + + @Test + void getMetricsShouldReturnNotFoundWhenAdditionalRouteNotConfigured() { + when() + .get("/metrics") + .then() + .statusCode(HttpStatus.NOT_FOUND_404); + } } \ No newline at end of file diff --git a/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryAuthorizedEndpointsTest.java b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryAuthorizedEndpointsTest.java index 8ab6edd..866f104 100644 --- a/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryAuthorizedEndpointsTest.java +++ b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryAuthorizedEndpointsTest.java @@ -22,6 +22,8 @@ package org.apache.james.webadmin.integration.memory; import org.apache.james.JamesServerBuilder; import org.apache.james.JamesServerExtension; import org.apache.james.MemoryJamesServerMain; +import org.apache.james.webadmin.RandomPortSupplier; +import org.apache.james.webadmin.WebAdminConfiguration; import org.apache.james.webadmin.integration.AuthorizedEndpointsTest; import org.apache.james.webadmin.integration.UnauthorizedModule; import org.apache.james.webadmin.integration.WebadminIntegrationTestModule; @@ -32,7 +34,15 @@ class MemoryAuthorizedEndpointsTest extends AuthorizedEndpointsTest { static JamesServerExtension jamesServerExtension = new JamesServerBuilder<>(JamesServerBuilder.defaultConfigurationProvider()) .server(configuration -> MemoryJamesServerMain.createServer(configuration) .overrideWith(new WebadminIntegrationTestModule()) - .overrideWith(new UnauthorizedModule())) + .overrideWith(new UnauthorizedModule()) + .overrideWith(binder -> binder.bind(WebAdminConfiguration.class) + .toInstance(WebAdminConfiguration.builder() + .enabled() + .corsDisabled() + .host("127.0.0.1") + .port(new RandomPortSupplier()) + .additionalRoute("org.apache.james.webadmin.dropwizard.MetricsRoutes") + .build()))) .lifeCycle(JamesServerExtension.Lifecycle.PER_CLASS) .build(); } \ No newline at end of file diff --git a/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryWebAdminServerIntegrationTest.java b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryWebAdminServerIntegrationTest.java index 2c8a48a..68b4dfb 100644 --- a/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryWebAdminServerIntegrationTest.java +++ b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryWebAdminServerIntegrationTest.java @@ -22,6 +22,8 @@ package org.apache.james.webadmin.integration.memory; import org.apache.james.JamesServerBuilder; import org.apache.james.JamesServerExtension; import org.apache.james.MemoryJamesServerMain; +import org.apache.james.webadmin.RandomPortSupplier; +import org.apache.james.webadmin.WebAdminConfiguration; import org.apache.james.webadmin.integration.WebAdminServerIntegrationTest; import org.apache.james.webadmin.integration.WebadminIntegrationTestModule; import org.junit.jupiter.api.extension.RegisterExtension; @@ -31,6 +33,14 @@ class MemoryWebAdminServerIntegrationTest extends WebAdminServerIntegrationTest @RegisterExtension static JamesServerExtension jamesServerExtension = new JamesServerBuilder<>(JamesServerBuilder.defaultConfigurationProvider()) .server(configuration -> MemoryJamesServerMain.createServer(configuration) - .overrideWith(new WebadminIntegrationTestModule())) + .overrideWith(new WebadminIntegrationTestModule()) + .overrideWith(binder -> binder.bind(WebAdminConfiguration.class) + .toInstance(WebAdminConfiguration.builder() + .enabled() + .corsDisabled() + .host("127.0.0.1") + .port(new RandomPortSupplier()) + .additionalRoute("org.apache.james.webadmin.dropwizard.MetricsRoutes") + .build()))) .build(); } \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
