Skip to content

Commit

Permalink
Record metrics using labels to separate versions
Browse files Browse the repository at this point in the history
  • Loading branch information
cYKatherine committed Jun 11, 2024
1 parent 1e6cbd5 commit 98680d8
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 27 deletions.
22 changes: 12 additions & 10 deletions src/main/java/com/uid2/operator/service/EncryptedTokenEncoder.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

import java.time.Instant;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;

public class EncryptedTokenEncoder implements ITokenEncoder {
private final KeyManager keyManager;
Expand Down Expand Up @@ -260,23 +262,23 @@ public AdvertisingToken decodeAdvertisingTokenV3orV4(Buffer b, byte[] bytes, Tok
);
}

private void recordRefreshTokenVersionCount(String siteId, TokenVersion tokenVersion) {
Counter.builder("uid2_refresh_token_served_count")
.description(String.format("Counter for the amount of refresh token %s served", tokenVersion.toString().toLowerCase()))
.tags("site_id", String.valueOf(siteId))
.tags("refresh_token_version", tokenVersion.toString().toLowerCase())
.register(Metrics.globalRegistry).increment();
}

public byte[] encode(RefreshToken t, Instant asOf) {
final KeysetKey serviceKey = this.keyManager.getRefreshKey(asOf);

switch (t.version) {
case V2:
var v2Builder = Counter
.builder("uid2_refresh_token_v2_served_count")
.description("Counter for the amount of refresh token v2 served").tags(
"timestamp", String.valueOf(asOf));
v2Builder.register(Metrics.globalRegistry).increment();
recordRefreshTokenVersionCount(String.valueOf(t.publisherIdentity.siteId), TokenVersion.V2);
return encodeV2(t, serviceKey);
case V3:
var v3Builder = Counter
.builder("uid2_refresh_token_v3_served_count")
.description("Counter for the amount of refresh token v3 served").tags(
"timestamp", String.valueOf(asOf));
v3Builder.register(Metrics.globalRegistry).increment();
recordRefreshTokenVersionCount(String.valueOf(t.publisherIdentity.siteId), TokenVersion.V3);
return encodeV3(t, serviceKey);
default:
throw new ClientInputValidationException("RefreshToken version " + t.version + " not supported");
Expand Down
25 changes: 10 additions & 15 deletions src/main/java/com/uid2/operator/vertx/UIDOperatorVerticle.java
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,6 @@ public class UIDOperatorVerticle extends AbstractVerticle {
public final static int MASTER_KEYSET_ID_FOR_SDKS = 9999999; //this is because SDKs have an issue where they assume keyset ids are always positive; that will be fixed.
public final static long OPT_OUT_CHECK_CUTOFF_DATE = Instant.parse("2023-09-01T00:00:00.00Z").getEpochSecond();
private final Handler<Boolean> saltRetrievalResponseHandler;

private final int maxBidstreamLifetimeSeconds;
private final int allowClockSkewSeconds;
protected int maxSharingLifetimeSeconds;
Expand Down Expand Up @@ -1791,6 +1790,15 @@ public TokenVersion getRefreshTokenVersion(String s) {
return null;
}

private void recordRefreshTokenVersionCount(String siteId, TokenVersion tokenVersion) {
Counter.builder("uid2_refresh_token_received_count")
.description(String.format("Counter for the amount of refresh token %s received", tokenVersion.toString().toLowerCase()))
.tags("site_id", siteId)
.tags("refresh_token_version", tokenVersion.toString().toLowerCase())
.register(Metrics.globalRegistry).increment();

}

private RefreshResponse refreshIdentity(RoutingContext rc, String tokenStr) {
final RefreshToken refreshToken;
try {
Expand All @@ -1807,20 +1815,7 @@ private RefreshResponse refreshIdentity(RoutingContext rc, String tokenStr) {
if (!AuthMiddleware.isAuthenticated(rc)) {
rc.put(Const.RoutingContextData.SiteId, refreshToken.publisherIdentity.siteId);
}
TokenVersion tokenVersion = this.getRefreshTokenVersion(tokenStr);
if (tokenVersion == TokenVersion.V2) {
var v2Builder = Counter
.builder("uid2_refresh_token_v2_received_count")
.description("Counter for the amount of refresh token v2 received").tags(
"site_id", String.valueOf(rc.data().get(Const.RoutingContextData.SiteId)));
v2Builder.register(Metrics.globalRegistry).increment();
} else if (tokenVersion == TokenVersion.V3) {
var v3Builder = Counter
.builder("uid2_refresh_token_v3_received_count")
.description("Counter for the amount of refresh token v3 received").tags(
"site_id", String.valueOf(rc.data().get(Const.RoutingContextData.SiteId)));
v3Builder.register(Metrics.globalRegistry).increment();
}
recordRefreshTokenVersionCount(String.valueOf(rc.data().get(Const.RoutingContextData.SiteId)), this.getRefreshTokenVersion(tokenStr));

return this.idService.refreshIdentity(refreshToken);
}
Expand Down
4 changes: 3 additions & 1 deletion src/test/java/com/uid2/operator/TokenEncodingTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,9 @@ public void testRefreshTokenEncoding(TokenVersion tokenVersion) {
assertEquals(Data.RefreshKeySiteId, keyManager.getSiteIdFromKeyId(keyId));

assertEquals(1, Metrics.globalRegistry
.get("uid2_refresh_token_v3_served_count")
.get("uid2_refresh_token_served_count")
.tag("site_id", "111")
.tag("refresh_token_version", "v3")
.counter().count());
}

Expand Down
3 changes: 2 additions & 1 deletion src/test/java/com/uid2/operator/UIDOperatorVerticleTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -1768,8 +1768,9 @@ void tokenRefreshExpiredTokenUnauthenticated(String apiVersion, Vertx vertx, Ver
sendTokenRefresh(apiVersion, vertx, testContext, refreshToken, "", 400, refreshRespJson -> {
assertEquals("error", refreshRespJson.getString("status"));
assertEquals(1, Metrics.globalRegistry
.get("uid2_refresh_token_v3_received_count")
.get("uid2_refresh_token_received_count")
.tag("site_id", String.valueOf(clientSiteId))
.tag("refresh_token_version", "v3")
.counter().count());
testContext.completeNow();
});
Expand Down

0 comments on commit 98680d8

Please sign in to comment.