From 515d8fe621e883bef8400fb48b226fdcab491236 Mon Sep 17 00:00:00 2001 From: Shahzaib Date: Thu, 25 Jan 2024 10:13:09 -0800 Subject: [PATCH 1/2] WIP on app based targeting of telemetry sampling rate --- .../identity/common/java/flighting/IFlightsProvider.java | 4 ++++ .../common/java/flighting/MockFlightsProvider.java | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/common4j/src/main/com/microsoft/identity/common/java/flighting/IFlightsProvider.java b/common4j/src/main/com/microsoft/identity/common/java/flighting/IFlightsProvider.java index 2ad6b9caf2..89b5dcec39 100644 --- a/common4j/src/main/com/microsoft/identity/common/java/flighting/IFlightsProvider.java +++ b/common4j/src/main/com/microsoft/identity/common/java/flighting/IFlightsProvider.java @@ -22,6 +22,8 @@ // THE SOFTWARE. package com.microsoft.identity.common.java.flighting; +import org.json.JSONObject; + import lombok.NonNull; /** @@ -62,4 +64,6 @@ public interface IFlightsProvider { * @return */ String getStringValue(@NonNull IFlightConfig flightConfig); + + JSONObject getJsonValue(@NonNull IFlightConfig flightConfig); } diff --git a/common4j/src/test/com/microsoft/identity/common/java/flighting/MockFlightsProvider.java b/common4j/src/test/com/microsoft/identity/common/java/flighting/MockFlightsProvider.java index 8d5a66a800..455e7b5cfa 100644 --- a/common4j/src/test/com/microsoft/identity/common/java/flighting/MockFlightsProvider.java +++ b/common4j/src/test/com/microsoft/identity/common/java/flighting/MockFlightsProvider.java @@ -22,9 +22,13 @@ // THE SOFTWARE. package com.microsoft.identity.common.java.flighting; +import org.json.JSONObject; + import java.util.HashMap; import java.util.Map; +import lombok.NonNull; + public class MockFlightsProvider implements IFlightsProvider { private final Map mFlights; public MockFlightsProvider() { @@ -64,4 +68,9 @@ public double getDoubleValue(IFlightConfig flightConfig) { public String getStringValue(IFlightConfig flightConfig) { return null; } + + @Override + public JSONObject getJsonValue(@NonNull IFlightConfig flightConfig) { + return null; + } } From 5a3a5af60bae7b122e079f348ef27b838e50680a Mon Sep 17 00:00:00 2001 From: Shahzaib Date: Mon, 29 Jan 2024 12:36:54 -0800 Subject: [PATCH 2/2] Ability to create a span with caller pkg name prepopulated --- .../java/opentelemetry/AttributeName.java | 7 +++- .../java/opentelemetry/OTelUtility.java | 38 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/common4j/src/main/com/microsoft/identity/common/java/opentelemetry/AttributeName.java b/common4j/src/main/com/microsoft/identity/common/java/opentelemetry/AttributeName.java index 895f52903f..48145ac94b 100644 --- a/common4j/src/main/com/microsoft/identity/common/java/opentelemetry/AttributeName.java +++ b/common4j/src/main/com/microsoft/identity/common/java/opentelemetry/AttributeName.java @@ -262,5 +262,10 @@ public enum AttributeName { /** * Indicates the request sequence used by cached credential service (if used) on server side */ - ccs_request_sequence + ccs_request_sequence, + + /** + * Indicates the package name of the app making the request to the broker. + */ + calling_package_name; } diff --git a/common4j/src/main/com/microsoft/identity/common/java/opentelemetry/OTelUtility.java b/common4j/src/main/com/microsoft/identity/common/java/opentelemetry/OTelUtility.java index 5058368b47..32df8ed5b5 100644 --- a/common4j/src/main/com/microsoft/identity/common/java/opentelemetry/OTelUtility.java +++ b/common4j/src/main/com/microsoft/identity/common/java/opentelemetry/OTelUtility.java @@ -46,6 +46,17 @@ public static Span createSpan(@NonNull final String name) { return tracer.spanBuilder(name).startSpan(); } + /** + * Creates a span (with shared basic attributes). + **/ + @NonNull + public static Span createSpan(@NonNull final String name, @NonNull final String callingPackageName) { + final Tracer tracer = OpenTelemetryHolder.getTracer(TAG); + return tracer.spanBuilder(name) + .setAttribute(AttributeName.calling_package_name.name(), callingPackageName) + .startSpan(); + } + /** * Creates a span from a parent Span Context (with shared basic attributes). **/ @@ -71,6 +82,33 @@ public static Span createSpanFromParent(@NonNull final String name, .startSpan(); } + /** + * Creates a span from a parent Span Context (with shared basic attributes). + **/ + @NonNull + public static Span createSpanFromParent(@NonNull final String name, + @Nullable final SpanContext parentSpanContext, + @NonNull final String callingPackageName) { + final String methodTag = TAG + ":createSpanFromParent"; + + if (parentSpanContext == null) { + Logger.verbose(methodTag, "parentSpanContext is NULL. Creating span without parent."); + return createSpan(name, callingPackageName); + } + + if (!parentSpanContext.isValid()) { + Logger.warn(methodTag, "parentSpanContext is INVALID. Creating span without parent."); + return createSpan(name, callingPackageName); + } + + final Tracer tracer = OpenTelemetryHolder.getTracer(TAG); + + return tracer.spanBuilder(name) + .setParent(Context.current().with(Span.wrap(parentSpanContext))) + .setAttribute(AttributeName.calling_package_name.name(), callingPackageName) + .startSpan(); + } + /** * Creates a span (with shared basic attributes). **/