You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2020/10/09 10:42:20 UTC
[james-project] 02/05: JAMES-3405 Metrics HTTP endpoint should be
opt-in
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 <bt...@linagora.com>
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: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org