diff --git a/servers/quarkus-server/src/main/resources/application.properties b/servers/quarkus-server/src/main/resources/application.properties index c240c67e301..3728fb28748 100644 --- a/servers/quarkus-server/src/main/resources/application.properties +++ b/servers/quarkus-server/src/main/resources/application.properties @@ -170,3 +170,15 @@ 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/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/.*+=/api/v1/trees/tree/{ref}, \ + /api/v1/trees/.*/.*+=/api/v1/trees/{referenceType}/{ref}, \ + /contents/.*+=/contents/{key} + 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"); + } +}