Skip to content

Commit 35acaf7

Browse files
Merge pull request #363 from IABTechLab/sch-UID2-4073-high-level-tests-path-normalisation-metrics
sch-UID2-4073 high level tests for path normalisation in metrics
2 parents 3c5d621 + e8a1f9d commit 35acaf7

File tree

3 files changed

+153
-9
lines changed

3 files changed

+153
-9
lines changed

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>com.uid2</groupId>
88
<artifactId>uid2-admin</artifactId>
9-
<version>5.17.0</version>
9+
<version>5.17.2-alpha-106-SNAPSHOT</version>
1010

1111
<properties>
1212
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -16,7 +16,7 @@
1616
<!-- check micrometer.version vertx-micrometer-metrics consumes before bumping up -->
1717
<micrometer.version>1.12.2</micrometer.version>
1818
<junit-jupiter.version>5.11.2</junit-jupiter.version>
19-
<uid2-shared.version>8.0.25</uid2-shared.version>
19+
<uid2-shared.version>8.0.32</uid2-shared.version>
2020
<okta-jwt.version>0.5.10</okta-jwt.version>
2121
<image.version>${project.version}</image.version>
2222
</properties>

src/main/java/com/uid2/admin/Main.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.uid2.admin.store.version.VersionGenerator;
2323
import com.uid2.admin.store.writer.*;
2424
import com.uid2.admin.vertx.AdminVerticle;
25+
import com.uid2.admin.vertx.Endpoints;
2526
import com.uid2.admin.vertx.JsonUtil;
2627
import com.uid2.admin.vertx.WriteLock;
2728
import com.uid2.admin.vertx.api.V2RouterModule;
@@ -42,6 +43,7 @@
4243
import com.uid2.shared.store.RotatingSaltProvider;
4344
import com.uid2.shared.store.reader.*;
4445
import com.uid2.shared.store.scope.GlobalScope;
46+
import com.uid2.shared.util.HTTPPathMetricFilter;
4547
import com.uid2.shared.vertx.VertxUtils;
4648
import io.micrometer.core.instrument.Gauge;
4749
import io.micrometer.core.instrument.MeterRegistry;
@@ -422,13 +424,8 @@ private static void setupMetrics(MicrometerMetricsOptions metricOptions) {
422424
prometheusRegistry.config()
423425
// providing common renaming for prometheus metric, e.g. "hello.world" to "hello_world"
424426
.meterFilter(new PrometheusRenameFilter())
425-
.meterFilter(MeterFilter.replaceTagValues(Label.HTTP_PATH.toString(), actualPath -> {
426-
try {
427-
return HttpUtils.normalizePath(actualPath).split("\\?")[0];
428-
} catch (IllegalArgumentException e) {
429-
return actualPath;
430-
}
431-
}))
427+
.meterFilter(MeterFilter.replaceTagValues(Label.HTTP_PATH.toString(),
428+
actualPath -> HTTPPathMetricFilter.filterPath(actualPath, Endpoints.pathSet())))
432429
// adding common labels
433430
.commonTags("application", "uid2-admin");
434431

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
package com.uid2.admin.vertx;
2+
3+
import java.util.Set;
4+
import java.util.stream.Collectors;
5+
import java.util.stream.Stream;
6+
7+
public enum Endpoints {
8+
API_CLIENT_METADATA("/api/client/metadata"),
9+
API_CLIENT_REWRITE_METADATA("/api/client/rewrite_metadata"),
10+
API_CLIENT_LIST("/api/client/list"),
11+
API_CLIENT_LIST_SITEID("/api/client/list/:siteId"),
12+
API_CLIENT_KEYID("/api/client/keyId"),
13+
API_CLIENT_CONTACT("/api/client/contact"),
14+
API_CLIENT_REVEAL("/api/client/reveal"),
15+
API_CLIENT_ADD("/api/client/add"),
16+
API_CLIENT_DEL("/api/client/del"),
17+
API_CLIENT_UPDATE("/api/client/update"),
18+
API_CLIENT_DISABLE("/api/client/disable"),
19+
API_CLIENT_ENABLE("/api/client/enable"),
20+
API_CLIENT_ROLES("/api/client/roles"),
21+
API_CLIENT_RENAME("/api/client/rename"),
22+
23+
API_CLIENT_SIDE_KEYPAIRS_ADD("/api/client_side_keypairs/add"),
24+
API_CLIENT_SIDE_KEYPAIRS_UPDATE("/api/client_side_keypairs/update"),
25+
API_CLIENT_SIDE_KEYPAIRS_LIST("/api/client_side_keypairs/list"),
26+
API_CLIENT_SIDE_KEYPAIRS_SUBSCRIPTIONID("/api/client_side_keypairs/:subscriptionId"),
27+
API_CLIENT_SIDE_KEYPAIRS_BY_SITE("/api/v2/sites/:siteId/client-side-keypairs"),
28+
29+
API_ENCLAVE_METADATA("/api/enclave/metadata"),
30+
API_ENCLAVE_LIST("/api/enclave/list"),
31+
API_ENCLAVE_ADD("/api/enclave/add"),
32+
API_ENCLAVE_DEL("/api/enclave/del"),
33+
34+
API_ENCRYPTED_FILES_REFRESH("/api/encrypted-files/refresh"),
35+
API_ENCRYPTED_FILES_SYNC_NOW("/api/encrypted-files/syncNow"),
36+
37+
API_KEY_LIST("/api/key/list"),
38+
API_KEY_LIST_KEYSET_KEYS("/api/key/list_keyset_keys"),
39+
API_KEY_REWRITE_METADATA("/api/key/rewrite_metadata"),
40+
API_KEY_ROTATE_MASTER("/api/key/rotate_master"),
41+
API_KEY_ADD("/api/key/add"),
42+
API_KEY_ROTATE_SITE("/api/key/rotate_site"),
43+
API_KEY_ROTATE_KEYSET_KEY("/api/key/rotate_keyset_key"),
44+
API_KEY_ROTATE_ALL_SITES("/api/key/rotate_all_sites"),
45+
46+
API_JOB_DISPATCHER_CURRENT_JOB("/api/job-dispatcher/current-job"),
47+
API_JOB_DISPATCHER_JOB_QUEUE("/api/job-dispatcher/job-queue"),
48+
49+
API_KEYS_ACL_LIST("/api/keys_acl/list"),
50+
API_KEYS_ACL_REWRITE_METADATA("/api/keys_acl/rewrite_metadata"),
51+
52+
API_OPERATOR_METADATA("/api/operator/metadata"),
53+
API_OPERATOR_LIST("/api/operator/list"),
54+
API_OPERATOR_REVEAL("/api/operator/reveal"),
55+
API_OPERATOR_ADD("/api/operator/add"),
56+
API_OPERATOR_DEL("/api/operator/del"),
57+
API_OPERATOR_DISABLE("/api/operator/disable"),
58+
API_OPERATOR_ENABLE("/api/operator/enable"),
59+
API_OPERATOR_UPDATE("/api/operator/update"),
60+
API_OPERATOR_ROLES("/api/operator/roles"),
61+
62+
API_PARTNER_CONFIG_GET("/api/partner_config/get"),
63+
API_PARTNER_CONFIG_UPDATE("/api/partner_config/update"),
64+
65+
API_PRIVATE_SITES_REFRESH("/api/private-sites/refresh"),
66+
API_PRIVATE_SITES_REFRESH_NOW("/api/private-sites/refreshNow"),
67+
68+
API_SALT_SNAPSHOTS("/api/salt/snapshots"),
69+
API_SALT_ROTATE("/api/salt/rotate"),
70+
71+
API_SEARCH("/api/search"),
72+
73+
API_SERVICE_LINK_LIST("/api/service_link/list"),
74+
API_SERVICE_LINK_ADD("/api/service_link/add"),
75+
API_SERVICE_LINK_UPDATE("/api/service_link/update"),
76+
API_SERVICE_LINK_DELETE("/api/service_link/delete"),
77+
78+
API_SERVICE_LIST("/api/service/list"),
79+
API_SERVICE_LIST_SERVICE_ID("/api/service/list/:service_id"),
80+
API_SERVICE_ADD("/api/service/add"),
81+
API_SERVICE_UPDATE("/api/service/update"),
82+
API_SERVICE_DELETE("/api/service/delete"),
83+
84+
API_SHARING_LISTS("/api/sharing/lists"),
85+
API_SHARING_LIST_SITEID("/api/sharing/list/:siteId"),
86+
API_SHARING_KEYSETS("/api/sharing/keysets"),
87+
API_SHARING_KEYSET("/api/sharing/keyset"),
88+
API_SHARING_KEYSET_KEYSETID("/api/sharing/keyset/:keyset_id"),
89+
API_SHARING_KEYSETS_RELATED("/api/sharing/keysets/related"),
90+
91+
API_SITE_REWRITE_METADATA("/api/site/rewrite_metadata"),
92+
API_SITE_LIST("/api/site/list"),
93+
API_SITE_SITEID("/api/site/:siteId"),
94+
API_SITE_ADD("/api/site/add"),
95+
API_SITE_ENABLE("/api/site/enable"),
96+
API_SITE_SET_TYPES("/api/site/set-types"),
97+
API_SITE_DOMAIN_NAMES("/api/site/domain_names"),
98+
API_SITE_APP_NAMES("/api/site/app_names"),
99+
API_SITE_UPDATE("/api/site/update"),
100+
101+
LOGIN("/login"),
102+
LOGOUT("/logout"),
103+
OPS_HEALTHCHECK("/ops/healthcheck"),
104+
API_USERINFO("/api/userinfo"),
105+
106+
WEB_ROOT("/"),
107+
WEB_JS_MAIN("/js/main.js"),
108+
WEB_JS_PARTICIPANT_SUMMARY("/js/participantSummary.js"),
109+
WEB_JS_BOOTSTRAP("/js/bootstrap.bundle.min.js"),
110+
WEB_CSS_COPY_SVG("/css/copy.svg"),
111+
WEB_CSS_PARTICIPANT_SUMMARY("/css/participantSummary.css"),
112+
WEB_CSS_STYLE("/css/style.css"),
113+
114+
ADM_ONCALL_PARTICIPANT_SUMMARY("/adm/oncall/participant-summary.html"),
115+
ADM_ONCALL_GENERATE_API_KEY_SECRET("/adm/oncall/generate-api-key-secret.html"),
116+
ADM_ONCALL_GENERATE_CSTG_KEYPAIR("/adm/oncall/generate-cstg-keypair.html"),
117+
ADM_ONCALL_SEARCH("/adm/oncall/search.html"),
118+
ADM_SITE("/adm/site.html"),
119+
ADM_CLIENT_SIDE_KEYPAIRS("/adm/client-side-keypairs.html"),
120+
ADM_SERVICES("/adm/services.html"),
121+
ADM_SERVICE_LINKS("/adm/service-links.html"),
122+
ADM_CLIENT_KEY("/adm/client-key.html"),
123+
ADM_KEYSETS("/adm/keysets.html"),
124+
ADM_ENCRYPTION_KEY("/adm/encryption-key.html"),
125+
ADM_SALT("/adm/salt.html"),
126+
ADM_OPERATOR_KEY("/adm/operator-key.html"),
127+
ADM_ENCLAVE_ID("/adm/enclave-id.html"),
128+
ADM_ENCLAVE_GCP("/adm/enclave-gcp.html"),
129+
ADM_ENCLAVE_GCP_V2("/adm/enclave-gcp-v2.html"),
130+
ADM_PARTNER_CONFIG("/adm/partner-config.html"),
131+
ADM_KEY_ACL("/adm/key-acl.html");
132+
133+
private final String path;
134+
135+
Endpoints(final String path) {
136+
this.path = path;
137+
}
138+
139+
public static Set<String> pathSet() {
140+
return Stream.of(Endpoints.values()).map(Endpoints::toString).collect(Collectors.toSet());
141+
}
142+
143+
@Override
144+
public String toString() {
145+
return path;
146+
}
147+
}

0 commit comments

Comments
 (0)