From c635f865c218cdc236054fa338a62df538af51bb Mon Sep 17 00:00:00 2001 From: "tomasz.lelek" Date: Thu, 3 Mar 2022 11:54:35 +0100 Subject: [PATCH 1/4] reduce number of tags for micrometer --- .../src/main/resources/application.properties | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/servers/quarkus-server/src/main/resources/application.properties b/servers/quarkus-server/src/main/resources/application.properties index c240c67e301..0de008bcae3 100644 --- a/servers/quarkus-server/src/main/resources/application.properties +++ b/servers/quarkus-server/src/main/resources/application.properties @@ -170,3 +170,9 @@ quarkus.container-image.name=nessie mp.openapi.extensions.smallrye.operationIdStrategy=METHOD +quarkus.micrometer.binder.http-server.match-patterns=\ + /api/v1/diffs/.*+=/api/v1/diffs/{diff_params},\ + /api/v1/trees/branch/.*/commit+=/api/v1/trees/branch/{branchName}/commit,\ + /api/v1/trees/branch/.*+=/api/v1/trees/branch/{ref},\ + /api/v1/trees/tree/.*/entries+=/api/v1/trees/tree/{ref}/entries,\ + /api/v1/trees/tree/.*/log+=/api/v1/trees/tree/{ref}/log From c3d22a9323f03f754eb90b27a1627b6fc01d69c5 Mon Sep 17 00:00:00 2001 From: "tomasz.lelek" Date: Thu, 3 Mar 2022 14:04:08 +0100 Subject: [PATCH 2/4] match more endpoints --- .../src/main/resources/application.properties | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/servers/quarkus-server/src/main/resources/application.properties b/servers/quarkus-server/src/main/resources/application.properties index 0de008bcae3..b72b89b72b0 100644 --- a/servers/quarkus-server/src/main/resources/application.properties +++ b/servers/quarkus-server/src/main/resources/application.properties @@ -174,5 +174,10 @@ quarkus.micrometer.binder.http-server.match-patterns=\ /api/v1/diffs/.*+=/api/v1/diffs/{diff_params},\ /api/v1/trees/branch/.*/commit+=/api/v1/trees/branch/{branchName}/commit,\ /api/v1/trees/branch/.*+=/api/v1/trees/branch/{ref},\ + /api/v1/trees/branch/.*/transplant+=/api/v1/trees/branch/{branchName}/transplant, \ + /api/v1/trees/branch/.*/merge+=/api/v1/trees/branch/{branchName}/merge, \ /api/v1/trees/tree/.*/entries+=/api/v1/trees/tree/{ref}/entries,\ - /api/v1/trees/tree/.*/log+=/api/v1/trees/tree/{ref}/log + /api/v1/trees/tree/.*/log+=/api/v1/trees/tree/{ref}/log, \ + /api/v1/trees/tree/.*+=/api/v1/trees/tree/{ref}, \ + /api/v1/trees/.*/.*+=/api/v1/trees/{referenceType}/{ref} + From 506eaa42c6f1bf256695864778e6bc98cdd1df90 Mon Sep 17 00:00:00 2001 From: "tomasz.lelek" Date: Thu, 3 Mar 2022 14:57:34 +0100 Subject: [PATCH 3/4] add mapping for contents --- .../quarkus-server/src/main/resources/application.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/servers/quarkus-server/src/main/resources/application.properties b/servers/quarkus-server/src/main/resources/application.properties index b72b89b72b0..3728fb28748 100644 --- a/servers/quarkus-server/src/main/resources/application.properties +++ b/servers/quarkus-server/src/main/resources/application.properties @@ -179,5 +179,6 @@ quarkus.micrometer.binder.http-server.match-patterns=\ /api/v1/trees/tree/.*/entries+=/api/v1/trees/tree/{ref}/entries,\ /api/v1/trees/tree/.*/log+=/api/v1/trees/tree/{ref}/log, \ /api/v1/trees/tree/.*+=/api/v1/trees/tree/{ref}, \ - /api/v1/trees/.*/.*+=/api/v1/trees/{referenceType}/{ref} + /api/v1/trees/.*/.*+=/api/v1/trees/{referenceType}/{ref}, \ + /contents/.*+=/contents/{key} From be4e348f4b1b4e12453912cb594a4781dc73a5d6 Mon Sep 17 00:00:00 2001 From: "tomasz.lelek" Date: Fri, 4 Mar 2022 10:51:00 +0100 Subject: [PATCH 4/4] Add integration test for metrics --- .../org/projectnessie/server/ITMetrics.java | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 servers/quarkus-server/src/test/java/org/projectnessie/server/ITMetrics.java diff --git a/servers/quarkus-server/src/test/java/org/projectnessie/server/ITMetrics.java b/servers/quarkus-server/src/test/java/org/projectnessie/server/ITMetrics.java new file mode 100644 index 00000000000..bc6b425349e --- /dev/null +++ b/servers/quarkus-server/src/test/java/org/projectnessie/server/ITMetrics.java @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2022 Dremio + * + * Licensed 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.projectnessie.server; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +import io.quarkus.test.junit.QuarkusTest; +import io.quarkus.test.junit.TestProfile; +import io.restassured.RestAssured; +import org.junit.jupiter.api.Test; +import org.projectnessie.jaxrs.AbstractTestRest; +import org.projectnessie.server.profiles.QuarkusTestProfileInmemory; + +@QuarkusTest +@TestProfile(value = QuarkusTestProfileInmemory.class) +public class ITMetrics extends AbstractTestRest { + // We need to extend the AbstractTestRest because all Nessie metrics are created lazily. + // They will appear in the `/q/metrics` endpoint only when some REST actions are executed. + + // this test is executed after all tests from the AbstractTestRest + @Test + void smokeTestMetrics() { + // when + String body = + RestAssured.given() + .when() + .basePath("/q/metrics") + .get() + .then() + .statusCode(200) + .extract() + .asString(); + + // then + assertThat(body).contains("jvm_threads_live_threads"); + assertThat(body).contains("jvm_memory_committed_bytes"); + assertThat(body).contains("nessie_versionstore_request_seconds_max"); + assertThat(body).contains("nessie_versionstore_request_seconds_bucket"); + assertThat(body).contains("nessie_versionstore_request_seconds_count"); + assertThat(body).contains("nessie_versionstore_request_seconds_sum"); + assertThat(body).contains("/api/v1/diffs/{diff_params}"); + assertThat(body).contains("/api/v1/trees/{referenceType}/{ref}"); + assertThat(body).contains("/api/v1/trees/branch/{ref}"); + assertThat(body).contains("/api/v1/trees/tree/{ref}/entries"); + assertThat(body).contains("http_server_connections_seconds_max"); + assertThat(body).contains("http_server_connections_seconds_active_count"); + assertThat(body).contains("jvm_gc_live_data_size_bytes"); + } +}